Песни о Паскале | страница 62
>var S: string; k : integer;
>begin
> repeat
> Write(’Введите строку: ’); Readln(S);
> for k:=1 to Length(S) do Writeln(S[k]);
> until Length(S)=0;
>end.
Здесь функция Length вставлена в оператор FOR, а параметром процедуры Writeln является текущий символ строки S[k]. В цикле FOR выполняется теперь лишь один оператор, поэтому отпала нужда в блоке BEGIN-END. Обратите внимание на условие завершения цикла UNTIL, – оно записано с применением функции Length.
На этом прервем изучение символов и строк. Однако тема не исчерпана, и к ней мы ещё вернемся.
• Строки – это цепочки символов. Для работы с отдельными символами в Паскале предусмотрен тип данных CHAR.
• Данные типа CHAR можно «склеивать» друг с другом и со строковыми данными, в результате получаются строки.
• Доступ к отдельным символам строки возможен путем индексации. Эта операция обозначается парой квадратных скобок, следующих за строкой; внутрь скобок помещают числовое выражение – индекс.
• Доступ по индексу применяется как для чтения символов строки, так и для их изменения.
• Для обработки строки необходимо знать её длину. С этой целью в Паскале применяется функция Length.
• Для последовательной обработки символов строки обычно используют цикл со счетчиком FOR-TO-DO.
A) Напишите программу для подсчета букв «А» во введенной пользователем строке. Или слабо?
Б) Напишите программу, меняющую символы «А» строки на символы «Б». Подсказка: изменение символа строки делается оператором присваивания вида S[i]:=…
В) Что делают со строкой S следующие операторы?
> for i:=1 to Length(S) do S:= S + S[i];
> for i:=Length(S) downto 1 do S:= S + S[i];
Проверьте свои предположения на практике.
Г) Записи телефонных номеров обычно содержат дополнительные символы: скобки, черточки, пробелы, например: 8(123)45-67-89. Предположим, что пользователь их так и вводит. Пусть ваша программа удалит из такой строки все символы, кроме цифр. Например, после ввода указанного выше номера она должна напечатать: 8123456789.
Д) Пусть ваша программа напечатает введенную пользователем строку вразрядку, добавляя подчёркивание либо пробел после каждого символа, например: 'Pascal' преобразует в 'P_a_s_c_a_l'.
Глава 19
Процедуры и функции: разделяй и властвуй
Чем дальше в лес, тем больше дров, – наши программы становятся все замысловатей! Чем измеряют сложность программ? – усилиями, что потребны на их осмысление. С ростом размера программы её сложность растет снежным комом: так программа в десять страниц стократ сложней одностраничной! Почему?