Циклические алгоритмы.
В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.
Любой цикл состоит из тела и заголовка. Тело цикла — это набор повторяющихся операторов, а условие — это логическое выражение, в зависимости от результата которого и происходит повторное выполнение цикла. Если тело цикла состоит из нескольких операторов, то его заключают между так называемыми операторными скобками – перед телом цикла пишут begin, после тела цикла – end.
Если заранее известно количество необходимых повторений, то цикл называется циклом с параметром. В оставшихся двух типах циклов производится проверка некоторого условия, и в зависимости от результата этой проверки происходит либо выход из цикла, либо повторение выполнения тела цикла. Если проверка условия производится перед выполнением блока операторов, то такой цикл называется циклом с предусловием (цикл "пока"), а если проверка производится после выполнения тела цикла, то это цикл с постусловием (цикл "до").Особенность этих циклов заключается в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, а тело цикла с предусловием может ни разу не выполниться. В зависимости от решаемой задачи необходимо использовать тот или иной вид циклов.
Цикл с параметром.
Синтаксис:
for переменная := значение 1 to значение 2 do тело цикла
Оператор for вызывает тело цикла, находящееся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2.
Переменная цикла( так называемый счетчик) увеличивается на 1 при каждом выполнении тела цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.
Рассмотрим задачу, вычисляющую сумму чисел от 1 до 10.
Program primer;
Var i,s: integer;
Begin
s:=0 { начальное значение суммы – 0}
For i:=1 to 10 do s:=s+i; {на каждом шаге цикла к сумме прибавляется значение счетчика, то есть 1, 2, 3 и т.д.}
writeln('сумма равна', s);
readln;
End.
Задание 1. В новом файле наберите текст программы. Сохраните программу в файл 2Ваши_инициалы1.PAS. Запустите программу на выполнение, изучите ее работу.
Задание 2. Измените программу так, чтобы она вычисляла сумму чисел от M до N (не забудьте, что значения M и N вводятся заранее с клавиатуры). Сохраните программу в файл 2Ваши_инициалы2.PAS. Запустите программу на выполнение, проверьте правильность ее работы.
Ц иклы с предусловием
Запись этой блок-схемы в языке Турбо Паскаль будет выглядеть следующим образом:
while условие do тело цикла;
Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно истинно, то тело цикла выполняется, если ложно – то нет.
Когда тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения). Тело цикла выполнится столько раз, сколько раз логическое выражение будет истинным.
Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно условие стало ложным. Иначе произойдет так называемое зацикливание, одна из самых неприятных ошибок в программировании.
Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным, то оператор не будет выполнен ни разу.
Рассмотрим задачу на вычисление факториала 10! = 1·2·3·4·5·6·7·8·9·10
Program primer;
VAR
Factorial, N : Integer;
BEGIN
Factorial := 1; {стартовое значение факториала =0! }
N := 1; {стартовое значение для условия цикла }
WHILE N<=10 DO {заголовок цикла, условие }
begin {начало тела цикла }
Factorial := Factorial*N; {вычисление факториала N! }
N := N + 1 {N должно меняться в цикле}
end; {конец тела цикла }
WriteLn(’10!= ’,Factorial); {вывод результата расчета }
Readln;
END.
Задание 3. В новом файле наберите текст программы. Сохраните программу в файл 2Ваши_инициалы3.PAS. Запустите программу на выполнение, изучите ее работу.
Задание 4. Измените программу так, чтобы она вычисляла факториал вводимого пользователем числа N. Сохраните программу в файл 2Ваши_инициалы4.PAS. Запустите программу на выполнение, проверьте правильность ее работы.
