Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воробьева Соппа Программирование в Паскаль 2006...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.4 Mб
Скачать

Ввод-вывод строковых данных

При вводе строк, как и символов, используется оператор readln. Однако нажатие клавиши [Enter] не является значимым символом. Клавиша [Enter] формирует символ конца строки.

Пример. Организовать ввод ФИО студента.

Var

fam: string;

Begin

writeln(‘Введите фамилию и инициалы студента’);

readln(fam);

На клавиатуре строка набирается без апострофов, например:

Андреева С.В. [Enter]

Одновременно с вводом строки в нулевом байте ячейки для переменной fam устанавливается длина строки, равная 13 символам.

Вывод строк осуществляется с помощью операторов writeln и write. например, оператор

writeln(‘|’, fam:20, ‘|’);

выведет на экран в правую часть поля из 20 позиций строку fam:

| Андреева С.В.|

Обработка строковых данных

К строкам применимы операции отношения и сцепления. К любому символу строки можно обратиться как к элементу одномерного массива, например запись st[2] определяет второй символ в строке st.

Операция отношения

Сравнение двух строк выполняется последовательно слева направо с учетом кодировки символов, например

‘Паскаль’> ‘ПАскаль’,

так как код символа ‘а’ больше кода символа ‘А’.

Операция сцепления

Операция сцепления обозначается символом ‘+’ и служит для объединения двух строк в одну. Например, в результате выполнения операторов:

fam := ‘Андреева С.В.’;

pr := ‘   ’; {7 пробелов}

fam1 := fam + pr;

writeln(‘|’, fam1, ‘|’);

на экран выведется строка:

|Андреева С.В. |

Заметим, что строка вывода занимает поле в 20 позиций, а переменная fam располагается в левой части поля.

Если длина сцепленной строки превысит максимальную длину, заданную в описании, то «лишние» справа символы отбрасываются.

Стандартные функции и процедуры

Большинство действий над строками реализуется с помощью стандартных функций и процедур.

length(st) – функция, возвращающая длину строки st из нулевого байта.

Пример. Определить длину строки fam = Андреева С.В.

length(fam) = 13 (символов).

copy(st, i, n) – функция копирования n символов в подстроку из заданной строки st, начиная с i-й позиции.

Пример. К переменной fam добавить справа 7 пробелов, скопированных из строки pr, заданной константой в разделе Const.

Const

pr := ‘    ’; {20 пробелов}

……………………

fam1 := fam + copy(pr, 1, 7);

writeln(‘|’, fam1, ‘|’);

В результате выполнения данных операторов на экран будет выведена строка:

|Андреева С.В. |

pos(st1, st) – функция поиска подстроки st1 в заданной строке st. Результатом выполнения поиска является номер позиции в строке st, с которой обнаружено первое вхождение подстроки st1.

Пример. В заданной строке st=‘abcd’ найти подстроку ‘bc’.

pos(‘bc’, st) = 2.

delete(st, i, n); – процедура удаления n символов из заданной строки st, начиная с i-й позиции.

Пример. Из заданной строки st=‘abcde’ удалить подстроку ‘cd’.

delete(st, 3, 2);

В результате выполнения процедуры получим: st=‘abe’.

insert(st1, st, i); – процедура вставки подстроки st1 в строку st, начиная с i-й позиции. При вставке оставшиеся в строке st символы сдвигаются вправо.

Пример. В строку st=‘abc’ после символов ‘ab’ вставить символ подчеркивания.

insert(‘_’, st, 3);

В результате выполнения процедуры получим: st=‘ab_c’.

str(x[:w [:d]], st); – процедура преобразования числа x в строку st. Целые числа w, d – необязательные параметры, задающие форматированное преобразование.

Пример. Преобразовать число  в строку.

str(pi:6:2, st);

В результате выполнения процедуры получим: st=‘   3.14’.