Цикл — это набор команд, которые многократно выполняются до тех пор, пока выполняется (или не выполняется) некоторое условие.
В паскале существуют 3 способа организации цикла (типа):
1) Цикл со счетчиком
2) Цикл с постусловием
3) Цикл с предусловием
Рассмотрим первый тип — цикл со счетчиком.
Данный тип используется в случаях, когда известно количество повторений (итераций) в цикле. В Паскале цикл со счетчиком выглядит так:
FOR i:=a to b DO
действия; //тело цикла
где i — переменная-счетчик; a — начальное значение переменной i; b — конечное значение переменной i.
Набор команд, которые выполняются в цикле называют телом цикла.
Пример:
FOR i:=1 to 4 DO
writeln('Привет'); //тело цикла
Переменная i изменяется от 1 до 4 (с шагом 1). Пока i будет изменятся — будет выполняться команда writeln(‘Привет’).
На экране мы увидим:
Привет
Привет
Привет
Привет
Количество повторений в цикле со счетчиком можно по формуле (b-a)+1. (В нашем случае: (4-1)+1 = 4. Все верно!)
Если цикл будет выглядеть так:
FOR i:=102 to 105 DO
writeln('Привет'); //тело цикла
Мы увидим тот же результат, что и в предыдущем примере. Убедимся, используя формулу: (105-102)+1 = 4. Цикл выполнится 4 раза.
Вопрос! Что мы увидим после выполнения следующего кода программы?
FOR i:=1 to 4 DO
writeln('Привет');
writeln('Пока');
Кто-то скажет:
Привет
Пока
Привет
Пока
и т.д.
НЕТ! На экране мы увидим следующее:
Привет
Привет
Привет
Привет
Пока
В цикле будет выполнятся только одно действие writeln(‘Привет’). только оно относится к телу цикла. Команда writeln(‘Пока’) — вне тела цикла.
Как сделать так, чтобы обе команды входили в тело цикла?
Необходимо использовать ОПЕРАТОРНЫЕ СКОБКИ!
BEGIN
……..
END;
Получим:
FOR i:=1 to 4 DO BEGIN
writeln('Привет');
writeln('Пока');
end;
Теперь тело цикла состоит из двух команд.
Рассмотрим несколько классических примеров использования цикла со счетчиком.
Задача 1.
Посчитать сумму чисел от 1 до 100. (1+2+3+…+100) (не используя формулу суммы членов арифметической прогрессии)
Задача, как вы уже поняли, решается с помощью цикла со счетчиком. Мы можем изменять переменную-счетчик в цикле от 1 до 100. Это даст нам ряд чисел, которые нужно сложить:
FOR i:=1 to 100 DO
………………………
Объявим дополнительно переменную S. В эту переменную будем записывать сумму на каждом шаге цикла. До выполнения цикла S=0.
Рассмотрим табличку:
i | S=0 |
1 | 0+1=1 |
2 | 1+2=3 |
3 | 3+3=6 |
4 | 6+4=10 |
5 | 10+5=15 |
6 | 15+6=21 |
На каждом шаге цикла переменная S будет изменяться с прибавлением текущего значения переменной i
S:=S+i
(Новое значение S:= текущее значение S + текущее значение i)
Программа будет иметь вид:
var i,S: integer;
begin
for i:=1 to 100 DO
S:=S+i;
writeln('Сумма чисел от 1 до 100 равна ', s);
end.
Задача 2.
Посчитать сумму пяти введенных с клавиатуры чисел
Результат представить в виде:
Введите 1-е число 5 Введите 2-е число 6 Введите 3-е число 7 Введите 4-е число 10 Введите 5-е число 10 Сумма равна 38 |
Начнем наши рассуждения.
Нам необходимо ввести 5 чисел, следовательно можем использовать цикл со счетчиком
FOR i:=1 TO 5 DO
………………….
Что же должно выполняться в цикле?
1) Вывод на экран диалогового сообщения для пользователя («Введите 1-е число и т.д.)
2) Ввод числа а
3) Сложение числа а к некоторой переменной S (аналогично Задаче 1)
Получим:
var i,a,S: integer;
begin
for i:=1 to 5 DO BEGIN
writeln('Введите ',i,' -е число');
readln(a);
S:=S+a;
end;
writeln('Сумма равна ', s);
end.
(красным цветом выделено тело цикла)
Задача 3.
Найти сумму нечетных чисел от 1 до 1000.
Задача аналогична задаче 1. Отличие в том, что на числа накладывается условие: числа должны быть нечетными.
Определить четность можно, используя оператор MOD — остаток от деления.
Организуем цикл:
FOR i:=1 to 1000 DO
if i mod 2<>0 then S:=S+i;
writeln(S);
end;
.......
Таким образом к переменной S будут прибавляться только те i, которые удовлетворяют условию.
В дополнение:
если бы условие было сложным, например: найти сумму нечетных чисел и чисел, которые делятся на 10 — мы бы использовали запись:
FOR i:=1 to 1000 DO
if (i mod 2<>0) OR (i mod 10=0) then S:=S+i
Т.е. помимо нечетных чисел в сумме будут участвовать числа, которые делятся на 10 (использовали OR для объединения двух множеств).
очень круто !!!