Вспомним!
Циклом в программировании называют часть программы, многократно выполняемую при заданном условии.
В Паскале существует три вида циклов. Один из них - это цикл с параметром.:
for i := n1 to n2 do тело цикла;
Этот оператор повторяет выполнение простого или составного оператора известное число раз, т.е. число повторений должно быть известно перед началом цикла.
Форма записи:
for параметр: = Начальное значение to конечное значение do оператор;
При этом параметр начального значения, конечного значения должны быть целого типа Integer.
Начальное значение должно быть меньше конечного.
Цикл работает следующим образом:
1) Параметр принимает начальное значение.
2) Выполняется оператор.
3) Параметр увеличивается на единицу.
4) Если параметр больше конечного значения, то происходит выход из цикла, если меньше, то повторяется пункт 2.
Замечание: Внутри цикла изменять параметр нельзя! Изменять шаг нельзя!
Например, следующая блок-схема говорит о цикле с параметром i, который изменяется от 1 до 315 с шагом 1. Тело цикла выполниться 315 раз.
For i:=1 to 315 do тело цикла;
Существует вторая форма оператора:
for параметр: = Большее значение downto Меньшее значение do Оператор
При этом шаг параметра равен -1.
Например, для того чтобы 10 раз напечатать слово «Привет!» на экране, запишем следующий цикл:
For i :=1 to 10 do writeln(‘Привет!’);
Задание 1. Составить программу, вычисляющую сумму чисел от 1 до 100. Т. е. S=1+2+3+4+5+...+100.
Разберем фрагмент блок-схемы. Параметр изменяется от 1 до 100 с шагом 1. И он прибавляется на каждом шаге к сумме.
Возникает вопрос: А на первом шаге чему равна предыдущая сумма? Если программе не задать определенное значение переменной, то она возьмет любое число, и тогда результат будет неверен. Поэтому при вычислении суммы чисел, в начале программы данную сумму нужно обнулить.
Program sum;
var i, S: integer;
begin
S:=0;
For i :=1 to 100 do S:=S+i;
writeln (‘сумма чисел от 1 до 100 равна ’, S);
end.
Разберем принцип работы данной программы на трассировочной (пошаговой) таблице:
Результат: S=5050
Задание 2. Какое значение примет переменная x в результате выполнения следующего фрагмента программы?
read(n);
p:=1;
for i:=1 to n do
p:=p*i;
writeln(p);
Разберем на примерах:
Видно, что P - это произведение чисел от 1 до n, где n вводится с клавиатуры. Т.е. P=1*2*3*4*...*n. Данное произведение называется факториалом и в математике обозначается n!
В начале программы P не обнуляем, а присваиваем 1. Иначе, все произведение будет равно 0.
Задание 3. Какое значение примет переменная x в результате выполнения следующего фрагмента программы?
read(n);
for i:=1 to n do
n:=n*i;
writeln(n);
Разберем на примере:
Продолжать можно до бесконечности, так как n постоянно увеличивается, то есть программа зациклится. Этот алгоритм показывает, что внутри цикла нельзя изменять параметр и конечное значение!
Задание 4. Составить программу, решающую следующую задачу: Дано натуральное N. Вычислить:
Очевидно, что параметр цикла i= 1, 2, 3, ..., n
Фрагмент программы:
S:=0;
For i :=1 to n do S:=S+1/i;
Задание 5. Составить программу, решающую следующую задачу: Дано натуральное N. Вычислить:
Параметр цикла:
i= 1 2 n
Знаменатель дробей на каждом шаге:
M=sin1 sin1+sin2 sin1+…+sin n
Фрагмент программы:
S:=0;
M:=0;
For i :=1 to n do begin
M:=sin(i)+M;
S:=S+1/M;
end;
Задание 6. Одна штука товара стоит n рублей. Составьте программу, которая выводит на экран таблицу стоимости 11, 12, 13, … 30 штук товара. Стоимость n вводится с клавиатуры.
Протокол:
Введите стоимость: 56
11 штук – 616 руб.
12 штук – 672 руб.
13 штук – 728 руб.
14 штук – 784 руб.
15 штук – 840 руб.
…
Фрагмент программы:
write('введите стоимость: '); readln(n);
For i :=11 to 30 do writeln( i, ' штук - ', i*n, ' руб.')
Задание 7. Составить программу, решающую следующую задачу: Каждая бактерия делится на две в течении 1 минуты. В начальный момент времени имеется одна бактерия. Сколько их станет через 10 минут?
Фрагмент программы:
for i:=1 to 10 do
k:=k*2;
writeln(k);