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

Итерационные циклы с постусловием

Синтаксис:

repeat

оператор;

оператор;

...

оператор

until выражение

Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False). Как только логическое выражение становится истинным (True), происходит выход из цикла.

Так как выражение оценивается после выполнения операторов, то в любом случае операторы выполнятся хотя бы один раз.

Пример.

repeat

WriteLn('Введите положительное число');

ReadLn(x);

until x>0;

 

Операторы завершения цикла

Для всех операторов цикла выход из цикла осуществляется как вследствие естественного окончания оператора цикла, так и с помощью операторов перехода и выхода.

В версии Турбо Паскаль 7.0 определены стандартные процедуры:

Break

Continue

Процедура Break выполняет безусловный выход из цикла. Процедура Continue обеспечивает переход к началу новой итерации цикла.

Заметим, что хотя и существует возможность выхода из цикла с помощью оператора безусловного перехода goto, делать этого не желательно. Во всех случаях можно воспользоваться специально предназначенными для этого процедурами Break и Continue.

Операторы ветвления и цикла Условный оператор if

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

if < условие > then      < оператор1> else      < оператор2>,

где < условие > - любое булевское выражение; < оператор1 >, < оператор2 > - простой или составной оператор. Часть оператора: else < оператор2 > может быть опущена. Тогда If выполняет оператор, записанный после Then, или пропускает его. Операторы, указанные после ключевых слов Then и Else, сами могут быть условными операторами. Такой случай называют вложенностью, например:

if A > B then     X := A else     if B < C then         X := B     else         X := C;

В Турбо-Паскале принято, что каждый Else относится к ближайшему If. Рассмотрим пример:

if N > 0 then     if ( M Div N ) > N then          M := M - N     else         M := M + N;

Оператор присваивания M := M + N будет выполняться только в том случае, если N > 0 и (M Div N) <= N. Ключевое слово Else является частью второго If, т.е. для N <= 0, никаких действий не производится. Если мы хотим, чтобы оператор M := M + N выполнялся для N <= 0, т.е. чтобы Else относился к первому If, необходимо использовать составной оператор:

if N > 0 then begin         {составной оператор}      if ( M Div N ) > N then          M := M - N     end     else         M := M + N;

Оператор множественного выбора Case

Данный оператор позволяет выбирать одну из нескольких возможных альтернатив. Причем выбор определяется значением ключа, в качестве которого может использоваться выражение порядкового типа (обычно Integer или Char). Рассмотрим программу, осуществляющую перевод римской цифры в ее десятичный эквивалент.

Оператор Case работает следующим образом. Вначале вычисляется значение ключа R. Затем отыскивается такой оператор (простой или составной), которому предшествует константа, равная значению ключа выбора. Константа отделяется от выполняемого оператора двоеточием. После того, как выбранный оператор выполнится, Case завершает свою работу. Иногда используют Case с ключевым словом Else, после которого может стоять любой оператор. При отсутствии в списке выбора нужной константы осуществляется переход к оператору, следующему за Case, или управление передается оператору, стоящему за ключевым словом Else. Для каждой альтернативы предполагается один оператор (простой или составной). Ветвь Else допускает последовательность операторов, разделенных точкой с запятой. Любому оператору в списке выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми, например:

var     I : integer;     X : real; . . . case I of     2, 3: X := X * X;     100 : X := Sin(X); end;

В этом фрагменте для I = 2 и I = 3 выполняется оператор X := X * X.