Пример,
CH := 'A';
READ (CH1,CH2);
IF CH1 < CH2 THEN K := 1 ELSE K := 0;
WRITE (CH1);
Необходимо дать две стандартные функции, которые позволяют отображать множество символов на множество натуральных чисел и наоборот.
ORD ( C ) | дает порядковый номер символа, хранящегося в переменной С. Например, I := ORD ( ' : ' ) ; Переменная I примет значение 58, порядковый номер символа двоеточие. |
CHR ( R ) | дает символ с порядковым номером R (R – целая). Например, C := CHR (128); переменная С примет значение, равное символу 'Б'. |
Замечание.
CHR (ORD (C) ) = C - всегда.
ORD ( CHR ( R ) ) = R - если R не выходит за пределы целых значений, в которые отображается множество символов.
Тема 8. Строки
Строка – это последовательность символов. В строке может быть максимум 255 символов, минимум 0 символов. Для строки из N символов отводится N+1 байт: N байт для хранения символов в строке и 1 байт для значения текущей длины строки. В описательной части программы может быть указана явно длина строки в квадратных скобках. Если она не указана, то предполагается, что она равна 255 символов.
Пример.
VAR S : STRING;
A : STRING [10];
Под строку S резервируется 255 символов, а под строку А 10 символов.
Заметим, что в действительности длина строки в программе может быть и меньше указанных значений, но не больше!
К отдельному символу в строке можно обратиться по номеру (индексу). Индекс определяется выражением целого типа, которое записывается в квадратных скобках. Например, S [i].
Над строками определены следующие операции:
1. Операция отношения ( = , < > , > , <,> = , < = )
Сравнение строк производится слева направо до первого несовпадающего символа. Та строка считается большей, в которой первый несовпадающий символ имеет больший код в таблице кодировки.
'4' >'234', т. к. код символа '2 '< кода символа '4'
2. Операция сцепления ( + )
Применяется для сцепления строк в одну строку. Длина результирующей строки не должна превышать 255 символов.
A := A +'ко' ;
S:= 'кол'+'о'+'кол';
Над строками определены следующие функции:
1. CONCAT (s1,s2,...,sn)
Выполняет сцепление строк в том порядке, в каком они указаны в параметрах.
A := CONCAT (s, t);
2. COPY (S, I,K)
Выделяет из строки S подстроку из K символов, начиная с I-го.
A := COPY ('крокодил' , 4,3);
В результате строка А будет содержать 'код'.
3. LENGTH (S)
Вычисляет текущую длину строки. Результат целого типа.
K := LENGTH ('каникулы');
В результате переменная К примет значение 8.
4. POS (S, T)
Вычисляет номер позиции, с которого строка S входит первый раз в строку T. Если вхождение не обнаружено, результат =0.
I := POS ('ом', 'компьютер' );
В результате переменная I примет значение 2.
В языке Паскаль реализованы 4 стандартные процедуры обработки строк.
1. DELETE (S, J,K)
Из строки S удаляется К символов, начиная с J-го.
S:='таракан';
DELETE (s,5,2);
Это аналогично оператору присваивания S:='таран';
2. INSERT (S, T,J)
Строка S вставляется в строку Т с J-ой позиции.
Т:='таран';
INSERT ('ка',T,5);
Это аналогично оператору присваивания T:='таракан';
3. STR (K, S)
Преобразует числовое значение K в строку S
STR (564,S);
Это аналогично оператору присваивания S:='564';
4. VAL (S, K,I)
Преобразует значение строки S в величину целого или вещественного типа K. I - переменная целого типа. I=0, если ошибки при преобразовании не обнаружено, в противном случае I будет содержать номер позиции первого ошибочного символа, в этом случае значение K не определено.
Тема 9. Массивы
Массив - это набор фиксированного числа элементов одного типа. У каждого элемента есть свой индекс (номер). Элементами массива могут быть данные любого типа. Элементы массива располагаются в памяти последовательно.
Одномерные массивы
Описание одномерных массивов выглядит следующим образом:
VAR
T, P : ARRAY [1..20] OF REAL;
R : ARRAY [1..100] OF INTEGER;
S : ARRAY [1..30] OF STRING;
В данном примере массивы Т, P вещественного типа по 20 элементов каждый, массив R целого типа, состоящий из 100 элементов, массив S состоит из 30 строк.
К элементам массива обращаются по имени и индексу, указанному в квадратных скобках. Индекс может быть константой или переменной целого или символьного типа. Если изучение этой темы идет после темы "Строки", то учащиеся уже были ознакомлены с понятием индекса, т. е. номера элемента. Обращаться и работать с элементами массива можно, изменяя значения индекса., при этом изменение происходит как правило в цикле.
Пример
T[K] | при K=1,2...20 | - все элементы массива |
T[2*K] | при K=1,2...10 | - элементы на четных местах |
T[2*K-1] | при K=1,2...10 | - элементы на нечетных местах |
Рассмотрим типичные ситуации, возникающие при работе с одномерными массивами. Для этого сделаем следующее описание:
VAR
A, D : ARAY [1..6] OF REAL;
I, S : INTEGER;
1. Ввод/вывод
Паскаль не имеет средств ввода/вывода элементов массива сразу, поэтому ввод и вывод производится поэлементно, с помощью организации цикла FOR:
FOR I := 1 TO 6 DO READLN (A[I]);
FOR I := 1 TO 6 DO WRITELN (A[I]);
2. Инициализация (присвоение начальных значений)
Каждому элементу массива присваивается одно и то же значение:
FOR I := 1 TO 6 DO A[I] := 0;
3. Копирование
Присвоение значений всех элементов одного массива всем соответствующим элементам другого массива.
FOR I := 1 TO 6 DO A[I] := D[I];
4. Перестановка
В массиве А поменять местами 1-ый и последний элемент, 2-ой и предпоследний и т. д. Осуществляется с помощью дополнительной переменной того же типа, что и элементы массива.
FOR I := 1 TO 3 DO
BEGIN S :=A[I]; A[I] := A[7-I]; A[7-I] := S; END;
Целесообразно рассмотреть следующие задачи:
1. Ввести массив целых чисел в количестве 10 элементов. Подсчитать сумму элементов, стоящих на четных местах.
PROGRAM SUM;
VAR
S, I: INTEGER;
A: ARRAY [1..10] OF INTEGER;
BEGIN
WRITELN ( 'ВВЕДИТЕ 10 ЧИСЕЛ ' ) ;
FOR I := 1 TO 10 DO READLN (A[I] );
S := 0;
FOR I := 1 TO 5 DO S := S+A[2*I];
WRITELN ( 'СУММА = ', S);
END.
2. Подсчитать количество отрицательных чисел, стоящих на нечетных местах в массиве из 10 элементов.
...
FOR I := 1 TO 5 DO
IF ( A[2*I-1] < 0 ) THEN S := S+A[2*I-1];
...
3. В массиве А, состоящем из 10 элементов, напечатать индексы нулевых элементов.
...
FOR I := 1 TO 10 DO
IF (A[I] = 0) THEN WRITELN ( ' ИНДЕКС =', I);
...
Сортировка массива
Сортировка – один из наиболее распространенных процессов современной обработки данных. Сортировка элементов массива, в результате которой получается массив, каждый элемент которого больше соседа слева, называется сортировкой по возрастанию.
В рамках школьной программы достаточно рассмотреть подробно один способ сортировки – метод пузырька. Этот метод основан на том, что более "легкие" элементы массива (пузырьки) постепенно "всплывают". Для этого представляем себе массив в виде столбца (трубочки), наполненного элементами. Причем внизу находится последний элемент.
Алгоритм данной сортировки по возрастанию состоит в последовательных просмотрах снизу вверх (от конца к началу) массива. Если соседние элементы таковы, что нижний элемент меньше верхнего, то выполняется обмен значениями этих элементов. Нахождение самого "легкого" (меньшего по значению) назовем проходом. В одном проходе не более N-1 сравнение. Здесь N-количество элементов в массиве. Всего проходов надо выполнить N-1, т. е. за один проход ставится 1-ый элемент, за 2-ой проход второй и т. д. за (N-1)-ый проход ставится на место (N-1)-ый элемент, а N-ый таким образом сам станет на место. Трудоемкость данного алгоритма (количество сравнений) будет (N-1)2.
Сказанное можно проиллюстрировать на примере. Пусть массив М состоит из 5 элементов : 7, 5, 0, 6, 2. отсортируем его в порядке возрастания.
7 | 7 | 7 | 0 | 0 | 0 | 0 | 0 |
5 | 5 | 0 | 7 | 7 | 2 | 2 | 2 |
0 | 0 | 5 | 5 | 2 | 7 | 5 | 5 |
6 | 2 | 2 | 2 | 5 | 5 | 7 | 6 |
2 | 6 | 6 | 6 | 6 | 6 | 6 | 7 |
исходный | 1 проход | 2 проход | 3 проход | 4 проход |
Текст программы сортировки для 10 элементов приводим:
program sort01;
var x : array[1..10] of integer;
i, k,a : integer;
begin {ввод массива}
for i := 1 to 10 do read (x[i]);
{ Сортировка методом пузырька}
for i := 1 to 9 do
for k := 9 downto 2 do
if x[k] < x[k-1] then
begin a := x[k]; x[k] := x[k-1]; x[k-1] := a; end;
{ Вывод отсортированного массива}
writeln;
for i:=1 to 10 do write ( x[i] : 3 );
end.
Двумерные массивы
Двумерные массивы также называют таблицами или матрицами. Каждый элемент однозначно определяется номером строки и номером столбца.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


