Операторы повторений

Оператор выбора

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.