Пример,

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