Информатика
.pdf21.01.2013
Другая форма счётного оператора цикла
FOR <Параметр цикла> := <Начальное значение> DOWNTO <Конечное значение> DO <Оператор>;
<Параметр цикла> изменяется от <Начального значения> до <Конечного значения> с шагом -1.
141
Примеры счётного оператора цикла
For i := 1 To n Do s := s + i;
For i := n Downto 1 Do s := s + i;
21.01.2013
i = 1, n, 1 |
a > b |
s = s + i |
i = n, 1, -1 |
s = s + i |
142
21.01.2013
Оператор цикла с предпроверкой условия
WHILE <Условие> DO <Оператор>;
Пока <Условие> имеет значение Истина, повторяется <Оператор>. Если <Условие> имеет значение Ложь, то выполнение оператора WHILE прекращается.
143
Пример цикла с предусловием
eps := 1;
WHILE eps / 2 + 1 > 1 DO BEGIN
eps := eps / 2; END;
21.01.2013
eps = 1 |
|
eps/2+1 |
нет |
|
|
> 1 |
|
да |
|
eps = eps/2 |
|
144
21.01.2013
Оператор цикла с постпроверкой условия
REPEAT <Тело цикла> UNTIL <Условие>;
Операторы <тело цикла> повторяются до тех пор, когда <Условие> получит значение Истина.
145
Пример цикла с постусловием
a :=1; s :=0;
REPEAT s := s + a; a := a + 1
UNTIL a > 100;
21.01.2013
a = 1 s = 0
s = s + a
a = a + 1
a > 100
нет
да
146
21.01.2013
Оператор выбора
CASE <Ключ> OF <Список выбора> ELSE <Оператор> END;
<Список выбора> - это несколько инструкций вида:
<Константа> : <Оператор>;
Вычисляется <Ключ> и его значение ищется в <Списке выбора>. Если такое значение <Константы> есть, то выполняется соответствующий <Оператор>, а если нет, то выполняется <Оператор> после ELSE.
147
Пример оператора выбора
Case k Of
1 : z := x + y;
2 : z := x - y;
3 : z := x * y;
4 : z := x / y; Else z := 0; End;
21.01.2013
k
k=1 |
z = x + y |
|
k=2 |
z = x - y |
|
k=3
z = x * y
k=4
z = x / y
z = 0
148
21.01.2013
Оператор безусловного перехода
GOTO <Метка>;
<Метка> - это произвольный идентификатор, позволяющий помечать любой оператор программы и таким образом ссылаться на него.
<Метка> : <Оператор>;
GOTO передает управление помеченному <Оператору>.
Метки объявляются в разделе описаний (служебное слово Label).
149
21.01.2013
Пример использования метки
Label b1; BEGIN
. . .
b1: z := y / x; {Меченный оператор}
. . .
Goto b1;
. . .
END.
150