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

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

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

Если заранее известно количество необходимых повторений, то цикл называется арифметическим. Если же количество повторений заранее неизвестно, то говорят об итерационном цикле.

В итерационных циклах производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой итерационный цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").

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

Условный оператор 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.