
- •1.0. Обработка данных на компьютере
- •1.0.1. Программирование
- •1.0.2. Систематическое программирование
- •1.1. Программа PrintHello
- •1.2 Последовательное выполнение
- •1.3. Символьные данные
- •1.3.1. Программа CopyChar
- •1.3.2. Оператор присвоения.
- •1.3.3. Аннотированный вывод и эхо ввода.
- •1.4. Условное выполнение
- •1.4.1. Условия
- •1.4.2. Оператор if
- •1.4.3. Оператор begin
- •1.5. Циклическое выполнение
- •1.5.1 Оператор while
- •1.5.2. Бесконечное выполнение
1.5. Циклическое выполнение
Компьютерным программам необходимо циклически повторять выполнение операторов. Повторение выполнения управляется условием, которое должно выполняться для продолжения цикла.
Новые идеи: циклы (итерации), оператор WHILE, оператор DO, прекращение выполнения, символ конца данных, бесконечное выполнение.
Одним из основных преимуществ компьютерных вычислений является способность повторять простые операции много раз с большой скоростью. Повторения также называются итерациями. Как правило, итерации используются тогда, когда нужно обработать некоторое количество, возможно большое однотипных объектов данных. Например, выполнить начисление зарплаты 200 000 сотрудников или рассчитать орбиту спутника в 1 000 000 шагов.
Компьютеры способны выполнять миллионы операторов в секунду, человек трудно писать операторы с такой скоростью, поэтому было изобретены циклы, где оператор будучи записан один раз выполняется многократно.
1.5.1 Оператор while
Циклическое выполнение задается с помощью оператора WHILE – выражения со стандартными словами WHILE и DO в следующей форме:
WHILE условие
DO
оператор DO
Если условие выполняется, Паскаль-машина выполняет оператор DO , после чего выполнение всего выражения WHILE повторяется до тех пор, пока выполняется условие.
Как правило, оператор WHILE записывается в вышеприведенном стиле, WHILE и DO на отдельных строках, оператор DO сдвинут вправо на два пробела. Это стандартный стиль написания программ, который облегчает их чтение.
Программа Copy использует оператор WHILE для любого количества символов из INPUT в OUTPUT. Символ # используется как маркер конца входных данных для остановки процесса копирования.
PROGRAM Copy (INPUT, OUTPUT);
{Копирует все символы, предшествующие #
из INPUT в OUTPUT}
VAR
Ch: CHAR;
BEGIN
READ(Ch);
WHILE Ch <> ‘#’
DO
BEGIN
WRITE(Ch);
READ(Ch)
END;
WRITELN
END.
INPUT : ABC#
OUTPUT : ABC
INPUT : Red#AZURE
OUTPUT : Red
Второй вариант выполнения программы показывает, что любые данные следующие за символом # не будут выведены в OUTPUT. Следовательно, маркер конца данных не может быть использован как данные.
Часть выполнения программы Copy для входных данных ABC# показана в таблице выполнения ниже. Значения не показаны в тех строках таблицы, где они не могут быть изменены.
Частичная таблица выполнения для программы Copy
|
Условие |
INPUT |
OUTPUT |
Ch |
BEGIN READ(Ch) WHILE Ch <> ‘#’ DO BEGIN WRITE(Ch) READ(Ch) END WHILE Ch <> ‘#’ DO BEGIN WRITE(Ch) READ(Ch) END WHILE Ch <> ‘#’ DO BEGIN WRITE(Ch) READ(Ch) END WHILE Ch <> ‘#’ WRITELN END.
|
Yes
Yes
Yes
No |
ABC# ABC#
ABC#
ABC#
ABC#_
ABC# |
_
A_
AB_
ABC_
ABC/_ ABC |
? A
B
C
# |