Операторы повторений
Оператор выбора
Else
Else
If (a > b) and (b > c) then
Begin
a:=c; b:=c;
End
Begin
a:=-a; b:=-b; c:=-c;
End;
Writeln(‘a =’, a,’ b = ‘,b,’ c = ‘,c);
Readkey;
End.
Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит ключ выбора - выражение любого порядкового типа.
Структура оператора выбора такова:
case<ключ выбора>of
список констант 1: оператор 1;
список констант 2: оператор 2;
…………………………………..
список констант N: оператор N;
else<оператор>;
end;
case, of, else, end – зарезервированные слова (случай, из, иначе, конец)
Оператор выбора является естественным продолжением условного оператора для случая нескольких альтернатив. В начале оператора задается выражение порядкового типа, а альтернативы «помечаются» конкретными значениями этого типа – списками констант. Любой список констант может состоять из одной константы.
Оператор выбора вычисляет значение выражения <ключ выбора>. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор стоящий после этого списка. В противном случае выполняется оператор, стоящий после else, либо, если он отсутствует, управление передается на оператор end и выполнение программы продолжается.
Пример 4. Составим программу, которая в зависимости от номера месяца печатает количество дней в нем.
Program ех_4;
Uses crt;
Var n: integer;
Begin
Clrscr;
Write(‘Введите номер месяца: ’);
Readln(n);
Case n of
1, 3, 5, 7, 8, 10, 12: writeln(‘В этом месяце 31 день’);
4, 6, 9, 11: writeln(‘В этом месяце 30 дней’);
else writeln(‘В этом месяце 28 дней’);
end;
Readkey;
End.
В языке Турбо Паскаль есть три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ (циклы).
3.1. Оператор цикла с параметром используют, когда известно число повторений одного и того же действия.
Он имеет такую структуру:
for <параметр> :=<нач_знач> to <кон_знач> do<оператор>;
for, to, do – зарезервированные слова (для , до, выполнить)
<параметр> - переменная порядкового типа;
<нач_знач> - начальное значение параметра – выражение того же типа
<кон_знач> - конечное значение параметра - выражение того же типа
<оператор> - произвольный оператор Турбо Паскаля.
При выполнении оператора For вначале вычисляется выражение <нач_знач> и осуществляется присваивание <параметр>:=<нач_знач>. После этого циклически повторяется:
ü Проверка условия <параметр> <= <кон_знач>; если условие не выполнено, оператор for завершает свою работу; (если условие не выполняется в самом начале работы оператора For, исполняемый оператор не будет выполнен ни разу)
ü Выполнение оператора <оператор>;
ü Наращивание переменной <параметр> на единицу.
Пример 5. Составить программу, подсчитывающую сумму всех натуральных чисел от 1 до N.
Program ex_5;
Uses crt;
Var I, n, S: integer;
Begin
Clrscr;
Write(‘ Введите натуральное число n’);
read (n);
S:=0; { начальное значение суммы}
For I:=1 to n do{цикл подсчета суммы}
S:=S+I;
Writeln (‘Сумма =’ , S); {вывод результата}
Readkey;
End.
Существует другая форма оператора For:
for <параметр> :=<нач_знач> downto <кон_знач> do<оператор>;
Цикл выполняется аналогичным образом, но шаг наращивания параметра цикла равен (-1), поэтому, чтобы цикл выполнился хотя бы один раз начальное значение параметра цикла должно быть не меньше конечного значения параметра.
Модифицированный фрагмент программы из примера 5.
……..
For I:=n downto 1 do{цикл подсчета суммы}
S:=s+I;
……..
3.2.Оператор цикла While с предпроверкой условия:
While <условие> do <оператор>;
While, do –зарезервированные слова (пока [выполняется условие], делать);
<условие>-выражение логического типа;
<оператор> - произвольный оператор Турбо Паскаля;
Если выражение <условие> имеет значение true (истина), то выполняется <оператор>, после чего вычисление выражения <условия> и его проверка повторяются. Если <условие> имеет значение false (ложь), оператор While прекращает свою работу.
Пример 6. Составить программу, подсчитывающую сумму всех натуральных чисел от 1 до N.
Program ex_6;
Uses crt;
Var I, n, S: integer;
Begin
Clrscr;
Write(‘ Введите натуральное число n’); read (n);
S:=0; I:=1; { начальное значение суммы}
WhileI<=ndo{цикл подсчета суммы}
begin
S:=S+I;
I:=I+1;
End;
Writeln (‘Сумма =’ , S); {вывод результата}
Readkey;
End.
3.3.Оператор цикла Repeat …Until с постпроверкой условия:
Repeat <тело цикла> until <условие>;
Repeat, Until -зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);
<Тело цикла>– произвольная последовательность операторов Турбо Паскаля;
<условие>-выражение логического типа;
Операторы <тело цикла> выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть false (ложь), операторы <тело цикла> повторяются, в противном случае оператор Repeat … Until завершает свою работу
Пример 7. Составить программу, подсчитывающую сумму всех натуральных чисел от 1 до N.
Program ex_7;
Uses crt;
Var I, n, S: integer;
Begin
Clrscr;
Write(‘ Введите натуральное число n’); read (n);
S:=0; I:=1; { начальное значение суммы}
Repeat{цикл подсчета суммы}
S:=S+I;
I:=I+1;
Untili>n;
Writeln (‘Сумма =’ , S); {вывод результата}
Readkey;
End.