Цикл со счетчиком в Паскале

for_logoЦикл — это набор команд, которые многократно выполняются до тех пор, пока выполняется (или не выполняется) некоторое условие.

В паскале существуют 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 для объединения двух множеств).

Вы можете оставить комментарий, или ссылку на Ваш сайт.

1 комментарий к записи “Цикл со счетчиком в Паскале”

  1. даня:

    очень круто !!!

Оставить комментарий

Антибот *