Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - лекции.doc
Скачиваний:
18
Добавлен:
07.11.2018
Размер:
512.51 Кб
Скачать

Управляющие структуры языка Паскаль. Условные операторы.

Составной оператор.

Последовательность операторов, ограниченная словами begin end;.

begin

a := 11;

b := a * a;

Write( a, b )

end;

Последняя точка с запятой перекочевала за слово end.

В структурном программировании составной оператор рассматривается как единая логическая единица.

Пустой оператор

Точка с запятой.

If LogicFunc( x ) then;

Имеет смысл когда например, нужно проигнорировать логическое значение, возвращаемое функцией.

Условный оператор

if Условие then Оператор1 else Оператор 2;

if Условие then Оператор;

Примеры условий:

var

Flag: Boolean;

Ch: Char;

begin

{условие – логическая переменная}

If Flag then Writeln(‘Истинно’)

else Writeln(‘Ложно’);

{условие – логическое выражение}

If not Flag then Writeln(‘Ложно’)

else Writeln(‘Истинно’);

if X > 5 then … {условие – результат сравнения}

if (X > 5) and (X < 10) then …

if Ch in [‘0’..’9’] then …

if not (Ch in [‘0’..’9’]) then …

if (A * B) > 5 then …

if Readkey <> ‘Y’ then …

end.

Вложенные условия

if Условие1 then

if Условие2 then

if Условие3 then Оператор;

Принадлежность else ( ближайшему if, не имеющему else )

if Условие1

then

if Условие2 then Оператор1

else Оператор2;

В данном примере Оператор2 относится к Условию2, с каким-бы отступом он небыл написан.

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

Case Переменная of

Значение 1: Оператор1;

Значение 2: Оператор2;

Значение N: ОператорN

else

Оператор

end;

Пример1:

Write('Оценка ? ');

ReadLn(X);

case X of

1: WriteLn('Неуд.');

2: WriteLn('Неуд.');

3: WriteLn('Уд.');

4: WriteLn('Хорошо');

5: WriteLn('Отлично');

end;

Пример2:

Write('?: ');

Ch := ReadKey;

case Ch of

'A'..'Z', 'a'..'z': WriteLn('Letter');

'0'..'9': WriteLn('Digit');

'+', '-', '*', '/': WriteLn('Operator');

else

WriteLn('Special character');

end;

Операторы цикла Оператор цикла с предусловием (while)

В практике программирования циклы — повторяющиеся выполнения одних и тех же простых или составных операторов — играют очень важную роль. Существует три стандартных способа организации циклических вычислений.

Рассмотрим оператор цикла с предусловием, записываемый как

WHILE Условие DO Оператор;

Конструкция WHILE...DO переводится как «пока...делать». Оператор (простой или составной), стоящий после служебного слова DO и называемый телом цикла, будет выполняться циклически, пока выполняется логическое условие, т.е. пока значение "Условия" равно True. Само условие цикла может быть логической константой, переменной или выражением с логическим результатом.

Условие выполнения тела цикла WHILE проверяется до начала выполнения каждой итерации. Поэтому, если условие сразу не выполняется, то тело цикла игнорируется и будет выполняться оператор, стоящий сразу за телом цикла.

При написании циклов с предусловием следует помнить о двух вещах. Во-первых, чтобы цикл имел шанс когда-нибудь завершиться, содержимое его тела должно обязательно влиять на условие цикла. Во-вторых, условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла. Поясним сказанное примером, вычисляющим значение факториала 10!

var

Factorial, N : Integer:

begin

Factorial := 1; { стартовое значение факториала = 1}

N := 1; {стартовое значение для условия цикла)

while N <= 10 do

begin { начало тела цикла WHILE }

Factorial:=Factorial*N;{ вычисление факториала N! }

N := N + 1 { N должно меняться в цикле }

end; { конец тела цикла WHILE }

WriteLn( Factorial ); { вывод результата расчета }

end.

Обратите внимание на присваивание N:=1 перед циклом. Без него значение N может быть любым, и условие может быть некорректным, не говоря уже о самом значении факториала. Значение N меняется внутри цикла. При этом гораздо безопаснее так писать тело цикла, чтобы оператор, влияющий на условие, был последним в теле. Это гарантирует от нежелательных переборов. Если, скажем, в предыдущем примере поставить, строку N:=N+1; перед вычислением значения Factorial, то Результатом программы будет значение 11!. Исправить оплошность можно, заменив стартовое значение N на 0, а условие — на N<10. Но от этого программа вряд ли станет нагляднее.

Поскольку циклу WHILE «все равно», что происходит в его теле, тело может содержать другие, вложенные, циклы.