Главная » Статьи » Програмирование » Pascal

Циклы

Добавил: swich e-mail от 30.11.2010, просмотров: 1011


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

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

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

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

Арифметические циклы

Синтаксис:

for переменная := значение 1 to значение 2 do оператор

или

for переменная := значение 1 downto значение 2 do оператор

Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 дозначения 2.

Переменная цикла, начальное и конечное значения должны иметь порядковыйтип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.

Как и в случае использования оператора условного прехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов,обязательно надо объединить их в составной оператор (окаймить операторнымискобками begin ... end). В противном случае будет сделана логическая ошибка программы.

Пример 1. Квадраты чисел от 2-х до 10-и.

for x:=2 to 10 do WriteLn(x*x);

Пример 2. Латинский алфавит.

for ch:='A' to 'Z' do Writeln(ch);

Пример 3. Использование цикла с downto.

for i:=10 downto 1 do WriteLn(i);

Пример 4. Использование составного оператора.

for x:=1 to 10 do begin y:=2*x+3; WriteLn('f(',x,')=',y); end;

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

Синтаксис:

while выражение do оператор

Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражениеистинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.

Здесь также следует помнить, что позволяется использовать только одиноператор после ключевого слова do. Если необходимо выполнить группу операторов,то стоит использовать составной оператор.

Пример.

eps:=0.001;while x > eps do x:=x/2;

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

Синтаксис:

repeat оператор;оператор;...операторuntil выражение

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

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

Пример.

repeat WriteLn('Введите положительное число'); ReadLn(x);until x>0;

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

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

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

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

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

Добавлено в: Pascal
Смотрите так же:
⇒ Умные преступники ( самые умные преступления )
⇒ Астрономы нашли самую древнюю галактику
⇒ Широкая улыбка - залог долголетия
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]