Краткий конспект по Pascal № 3. Цикл со счетчиком FOR
Краткий конспект по Pascal № 3. Цикл со счетчиком FOR
Цикл – алгоритмическая структура, в которой те или иные действия повторяются многократно.
Есть два основных вида циклов – цикл с условием и цикл со счетчиком.
Цикл с условием мы используем тогда, когда не знаем заранее, сколько раз должны повторяться действия. Вспомни Робота из среды Кумир: когда нам нужно было подвести его к стене, но мы не знали, сколько до этой стены шагов, мы использовали конструкцию
нц пока (условие)
…
кц
– это и был цикл с условием. Действия повторялись, пока выполнялось условие.
Цикл со счетчиком применяется, когда мы заранее знаем, сколько раз должны повториться действия.
В языке Pascal цикл со счетчиком создается с помощью оператора for (англ. «для»).
Счетчик – это переменная, которая будет «отсчитывать» витки нашего цикла. Мы задаем этой переменной начальное и конечное значение, и на каждом витке цикла переменная-счетчик сама увеличивается на 1 – и так, пока она не достигнет конечного значения.
У цикла есть заголовок и тело. Заголовок определяет, сколько раз будет повторяться цикл (настраивает счетчик), а тело цикла – это действия, команды, которые будут повторяться.
Заголовок цикла for выглядит следующим образом:
for <переменная-счетчик> := <начальное значение> to <конечное значение> do
Давай разберем на примере, как работает такой цикл:
Эту строчку можно прочитать так:
для переменной i, которая изменяется от 1 до 10, выполнить
| Обрати внимание: начальное значение счетчику задается с помощью оператора присвоения
| Счетчик будет перебирать значения от 1 до 10, и для каждого из этих значений цикл for выполнит вот это действие: выведет на экран слово «Привет!».
Получается, что слово «Привет!» будет написано 10 раз.
|
for i:= 1 to 10 do
writeln(‘Привет!’);
Начальное значение счетчика не обязательно должно быть 1. Счетчик может изменяться, например, от 11 до 20 – в этом случае также пройдет 10 витков цикла.
Количество витков цикла легко подсчитать, если отнять от конечного значения счетчика начальное значение, а потом прибавить 1.
Так, если счетчик изменяется от 1 до 10, количество витков цикла равно 10 – 1 + 1 = 10.
Если счетчик изменяется от 13 до 34, количество витков цикла равно 34 – 13 + 1 = 22.
Начальное и конечное значение счетчика можно задавать не числами, а другими переменными. В этом случае к моменту начала цикла значение этих переменных должно быть известно. Ты не можешь написать
for i:= 1 to N do
если до этого ты не задал переменной N значение любым способом (через оператор присвоения или функцию read).
Давай возьмем пример посложнее. Напишем программу, которая будет суммировать все введенные с клавиатуры числа. Постарайся вникнуть в то, что делает эта программа на каждом шаге:
Счетчик – такая же переменная, как другие. Обязательно нужно объявить ее в разделе var и задать ей тип
| Каждый раз мы будем складывать разное количество чисел (то есть выполнять разное количество витков цикла). Сколько именно – спросим у пользователя программы и запишем его ответ в переменную n
| Благодаря такой записи мы будем повторять цикл столько раз, сколько чисел собирается ввести пользователь
| Так как в теле цикла мы выполняем не одно действие, а несколько, то заключим их в контейнер begin … end;
| Смотри, важный и интересный момент:
пользователь будет вводить много чисел, но для всех них мы будем использовать только одну переменную! Просто на каждом витке цикла будем записывать в нее новое значение
| Еще один важный момент:
для чего нам переменная a, и почему она изначальная равна 0?
Дело в том, что на каждом витке цикла происходят одинаковые действия.
И если на 2, 3… 10 витке мы должны прибавить новое число к уже имеющейся сумме – то и на самом первом витке мы тоже должны к чему-то прибавить первое введенное число. Вот для этого мы и «завели» переменную a. Мы записываем в нее сумму чисел. И поэтому изначально задаем ей значение 0
|
Program summator;
var
i, n, a, b : integer;
begin
writeln(‘Сколько чисел надо сложить?’);
read(n);
a:=0;
for i:=1 to n do
begin
read(b);
a:=a+b;
end;
writeln(a);
end.
Так как счетчик, по сути, обычная переменная, он также может участвовать в расчетах:
k := 2;
for i := 3 to 7 do
k := k + i;
writeln(k);
Здесь на каждом витке цикла к переменной k будет прибавляться значение счетчика i. И на каждом витке цикла это будет новое значение!
Чтобы рассчитать «на бумаге» значение k после выполнения этой программы, проще всего сделать такие записи:
Значение i (номер витка цикла)
| Тело цикла
|
| k := 2 + 3 = 5 (2 – изначальное значение k, счетчик i на этом витке равен 3)
|
| k := 5 + 4 = 9
|
| k := 9 + 5 = 14
|
| k := 14 + 6 = 20
|
| k := 20 + 7 = 27
|
Итого: по завершению программы k будет равно 27.
|