Программирование циклов с заданным числом повторений в языке Паскаль, Программирование циклов с неизвестным заранее числом повторений в языке Паскаль
Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме.
Циклы принадлежат к числу управляющих операторов. Внимательный ученик мог заметить, что до сих пор вы использовали два вида операторов. Одни из них (Read, Write, оператор присваивания) только выполняли какие-либо действия, другие же управляли ходом выполнения программы (например, условный оператор). Последние и называются управляющими операторами.
Способ использования циклов в программах на Паскале. Рассмотрим задачу на вычисление суммы большого числа слагаемых:
1 + 2 + 3 + 4 + .. + n
Можно было бы выбрать простое решение и записать вычисление данной суммы в строчку, употребив n операций сложения. Ну а если число элементов суммы равно 1000? Представьте себе программу с оператором, который занимает несколько страниц и содержит 999 сложений! Очевидно, простое решение здесь уже не подходит. Можно заметить, что при вычислении суммы повторяются всего две операции, причем в определенном порядке:
1. Увеличить значение переменной цикла на 1
2. Прибавить к ранее полученной сумме.
В языке программирования Паскаль имеется три разновидности цикла:
- Цикл с предусловием (цикл “пока” – whi1е);
- Цикл с постусловием (цикл “до тех пор, пока” repeat...until);
- Цикл с параметром (со счетчиком) (цикл “для” – for ... to / downto… do);
Каждая из трех разновидностей цикла имеет свои особенности, для каждой из них есть свой круг задач, наиболее естественно решаемых именно с ее помощью.
При разработке программы циклической структуры выделяют следующие понятия:
1.
o параметр (переменная цикла) – величина, с изменением значения которой связано многократное выполнение цикла;
o начальное и конечное значения параметра цикла;
o шаг цикла - значение, но которое изменяется параметр цикла при каждом повторении;
Действия, повторяющиеся в цикле, называются телом цикла.
Цикл организуют по определенным правилам. Цикл состоит из следующих блоков:
- подготовки цикла;
- тела цикла;
- условия продолжения цикла.
В подготовку цикла входят действия, связанные с заданием исходных значений для параметра цикла.
В тело цикла входят многократно повторяющиеся действия для вычисления искомых величин и подготовка следующего значения параметра цикла.
В условии продолжения цикла определяется необходимость дальнейшего выполнения повторяющихся действий (тела цикла). Если параметр цикла не удовлетворяет поставленному условию, то выполнение цикла прекращается.
Оператор цикла с параметром применяют тогда, когда заранее известно число повторений одной и той же последовательности операторов. Начальные и конечные значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями.
FOR i:=M1 TO M2 DO оператор1
FOR i:=M1 TO M2 DO
BEGIN
операторы циклической части
END;
FOR i:=M1 DOWNTO M2 DO
BEGIN
операторы циклической части
END;
ГДЕ i - параметр цикла, М1 и М2 - начальное и конечное значение параметра цикла. DOWNTO изменяет параметр с шагом -1.
Блок-схема цикла с параметром:
Пример программы (цикл с параметром):
Вычислить сумму S=1+2+3+…+N:
Program zadacha;
Uses crt;
var n,s, i : integer;
Begin
Clrscr;
write(‘введите число N ’); readln(n);
s:=0;
for i:=1 to n do
s:=s+i;
writeln(‘сумма чисел равна’, s);
readln;
End.
Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы. Такие повторяемые участки вычислительного процесса называются циклами. Программа циклической структуры содержит один или несколько циклов. Различают детерминированные циклы с заранее известным числом повторений и итерационные циклы, в которых число повторений заранее неизвестно. Изменяющаяся в цикле переменная называется параметром цикла.
Для организации цикла необходимо выполнить следующие действия:
1) задать перед циклом начальное значение параметра цикла;
2) изменять параметр перед каждым новым повторением цикла;
3) проверять условие повторения цикла;
4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.
В языке Паскаль существует 3 вида циклов:
1) цикл с параметром или цикл типа for,
2) цикл с предусловием или цикл типа while,
3) цикл с постусловием или цикл типа repeat ... until.
В цикле типа for число повторений известно заранее, в циклах типа while и repeat ... until число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while - перед циклом, в цикле типа repeat ... until - после его окончания.
В циклах типов for и while повторяющяся часть (тело цикла) состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в операторные скобки begin ... end, образуя составной оператор. В цикле типа repeat ... until тело цикла помещается между зарезервированными словами языка (лексемами) repeat и until, операторные скобки не требуются, в названии цикла его тело условно обозначается тремя точками.
С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные значения и т.п. При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в цикле к этой переменной прибавляется соответствующий член заданной последовательности. При нахождении произведения переменной присваивается значение 1, затем в цикле эта переменная умножается на общий член последовательности.
Пример цикла типа for
Вычисление n чисел Фибоначчи:
F1=1; F2=1;…; Fn=Fn-1+Fn-2 ,
например F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 и т.д.
program fib; {Нахождение чисел Фибоначчи}
var x, y, z, i, n : integer;
begin
writeln (‘Введите n’); read (n);
x:=1; y:=0;
for i:=1 to n do
begin
z:=x ; x:=x+y ; y:=z ;
write (' ', x ) ;
end;
readln;
end.