Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию.doc
Скачиваний:
7
Добавлен:
17.04.2019
Размер:
1.6 Mб
Скачать

4.1 Массив символов

Одномерный массив символов по своим свойствам существенно отличается от всех остальных массивов языка Паскаль. Свойства одномерного массива символов приближены к свойствам коротких строк (String).

Инициализация массива символов

• Массив можно объявить и присвоить ему начальное значение непосредственно в разделе констант. При этом требуется соблюдение условия — длина тексто­вой константы должна равняться количеству элементов массива. CONST В: ARRAY[1 .. 50] OF CHAR = 'Я учусь программировать';

• Массив символов можно ввести с клавиатуры как последовательность симво­лов конечной длины N, не превышающей количество элементов массива — N ≤ HIGH(B) – LOW(B) + 1.

VAR ARRAY[1.. 500] OF CHAR; I, N: WORD;

BEGIN ...

WRITELN('Введите длину строки текста не более 500 символов, N');

READLN(N);

WRITELN('Введите строку текста В');

FOR I :=1 ТО N DO READ(B[I]); ...

Существенным недостатком этого способа ввода текста является необходимость знать точное количество символов N во вводимой строке.

• Массив символов можно заполнить в теле программы с помощью оператора присваивания. Но есть ограничение — количество символов в текстовой кон­станте должно быть равно количеству элементов массива.

VAR ARRAY[1..23] OF CHAR;

BEGIN ...

В:= 'Я учусь программировать';

Вывод массива символов

Массив символов можно вывести на экран монитора двумя способами.

• Процедуры WRITELN и WRITE поддерживают вывод массива символов. До­пускается запись — WRITELN(B), где В — идентификатор одномерного мас­сива символов.

• Содержимое массива символов можно выводить в цикле, используя оператор WRITE(B[I]). Ниже приведен фрагмент программы, обеспечивающей посим­вольный вывод элементов массива B в строку.

WRITELN('Массив В содержит текст:');

FOR I := LOW(B) ТО HIGH(B) DO WRITE(B[I]); WRITELN;

Пример 38. Ввести натуральное число N. Вывести строку S, представляющую запись этого числа в двоичной системе счисления.

Для пояснения алгоритма преобразования десятичного числа в двоичную сис­тему счисления используем пример на рис. 4.1.

20

2

20

10

2

0

10

5

2

0

4

2

2

1

2

1

0

Рис. 4.1. Преобразование числа 20 в двоичную систему счисления

PROGRAM PR38;

CONST B:ARRAY[1..10] OF CHAR = ";

VAR I, К, N: BYTE; S: STRING[1];

BEGIN

WRITELN('Введите число N');

READLN(N);

К:= 0;

WHILE N> 1

DO BEGIN

К:= К + 1;

STR(N mod 2:1, S);

В[К] := S[1];

N := N div 2

END;

IF(N= 1) or (K = 0)

THEN BEGIN

К := К + 1;

STR(N mod 2:1, S);

B[K] := S[1]

END;

WRITELN('B двоичном коде число будет равно:');

FOR I:= К DOWNTO 1 DO WR1TE(B[I]); {Вывод массива символов}

WRITELN

END.

Структурограмма

Ввод с клавиатуры числа N; К = 0; {К — счетчик разрядов двоичного числа}

Пока N > 1 делать:

К = К + 1; {номер вычисляемого разряда двоичного кода}

STR(N mod 2:1, S); B[K]:=S[1]; {Преобразование числа 0 или 1 в литеру

и помещение этой литеры в массив символов В}

N = N div 2; {Деление числа N на основание 2}

( N = l) or (K = 0)

True

К = К + l; STR(N mod 2:1, S); В[К] := S[l]; {Запись числа N }

Для I от К до 1 с шагом -1 делать: {Вывод двоичного кода на экран}

Вывод литеры В[I];

Из этой программы видно, что строковая процедура STR, преобразующая число в строку, не принимает в качестве аргумента переменные типа CHAR. Именно по этой причине пришлось ввести строку S единичной длины.

Операции с массивами символов

Массивы символов можно использовать в сцепках. Например, в операторе WRITELN в списке вывода допускается строковое выражение:

WRITELN('Результирующая строка:' + B + ',');

где i массив символов. Знак + означает операцию сцепки строк. Недостатком та­кого выражения является то, что пустые разряды массива B займут на экране свои позиции, и поэтому запятая может оказаться на значительном удалении от текста, хранимого в массиве B.

Массивы символов A и B в отличие от массивов всех других типов можно срав­нивать между собой с помощью операций отношения =, <>; допускается использование также <, >, <=, >=.

Сравнение массивов производится путем последовательного сравнения литер (элементов массивов) от наименьшего индекса до наибольшего индекса. Сравнение завершается при первом несовпадении или достижении верхнего индекса одного из массивов. Массивы A и B могут иметь разную размерность. В строковых выражени­ях сцепок массивы символов ничем не отличаются от строк. Так допустима следую­щая конструкция:

IF A+B>='X = ' + B + '.'

THEN S := А + 'за вычетом' + В;

где A и B массивы символов, a S строка String.