Лекция 3.Алгоритмическая конструкция Повторение. Цикл с параметром. автор: Садовский Ефим Моисеевич 1. Повторение. Операторы ветвления (краткая и полная форма).
2. Циклы Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз. Например, программа контроля знаний (тест) выводит вопрос, принимает ответ, добавляет оценку за ответ к сумме баллов, затем повторяет это действие еще и еще раз, и так до тех пор, пока испытуемый не ответит на все вопросы. Алгоритм, в котором есть последовательность операций, которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.3. Цикл For Цикл for применяется в том случае, если некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно.Общий вид. for i:=n1 to n2 do begin … end; шаг равен 1 | или for i:=n2 downto n1 do begin … end; шаг равен -1 |
(Перевод: for – для, to – к, до, downto – вниз к, do - выполнить) Команды, расположенные между операторными скобками begin – end повторяются n2-n1+1 раз, а переменная цикла i принимает все значения от n1 до n2 с шагом 1 (n1,n1+1,n1+2…n2) или от n2 до n1 с шагом -1. Если n1>n2 команды цикла не выполнятся ни разу. Переменная i называется счетчиком цикла, ее значение автоматически изменяется на 1 или -1. Ограничения и недостатки: а) Все переменные, указанные в строке for – целого типа (Integer). б) Шаг переменной цикла – только целый (1 или –1). в) Нельзя изменять значение переменной цикла внутри цикла (нельзя, например, внутри цикла на-писать i:=i+1) 4. Примеры: 1. Рассчитать сумму первых натуральных чисел от 1 до 100.r> Подумаем, как бы мы считали устно: 1+2+3+4+5+6+…+100. Самый прямой способ: 1+2=3, 3+3=6, 6+4=10, 10+5=15, 15+6=21 и т.д. То есть каждый раз к предыдущему значению суммы мы прибавляем следующее слагаемое. Попробуем заставить то же самое делать компьютер:program primer1;
var i,s:integer;
begin
s:=0;
for i:=1 to 100 do
s:=s+i;
writeln('S=',s);
end. Сначала S=0. Переменная i принимает значения от 1 до 100 (перебирается каждое слагаемое), которое прибавляется к предыдущему значению суммы: s:=s+i. Внимание! Заметим, что всегда при вычислении суммы, исходное значение суммы принимается равным 0, при вычислении произведения - 1.
2. Рассчитать сумму четных натуральных чисел от 7 до n. Четные числа от 7 (8, 10, 12, 14, …) изменяются с шагом 2. Но переменная цикла FOR может изменяться только с шагом 1! Что делать? Добавляем условие!program primer1;
var i,n,s:integer;
begin
write('Введите N=');
readln(n);
s:=0;
for i:=7 to n do
if i mod 2=0 then
s:=s+i;
writeln('S=',s);
end. Условием if мы из всех чисел от 7 до n выбираем только те, которые делятся на 2 – четные! При этом внутри цикла остается одна команда if, поэтому операторные скобки можно не ставить.
3.Найти сумму N чисел, вводимых с клавиатуры. Внимание! Мы заранее не знаем, сколько чисел надо будет ввести (их количество задает пользователь). Что делать? Очень просто: команды ввода числа (write и readln) расположим внутри цикла (между операторными скобками цикла), в этом случае число вводится столько раз, сколько выполняется цикл.program primer2;
var n,i,s,x:integer;
begin
write('Введите количество чисел N=');
readln(n);
s:=0;
for i:=1 to n do
begin
write('Введите число: ');
readln(x);
s:=s+x;
end;
writeln('Полученная сумма S=',s);
end. Сначала вводится количество чисел, а затем n раз вводится число X (команды ввода расположены внутри цикла) и прибавляется к предыдущему значению суммы.
7. Решение задач. 1. Найти N! (факториал). ВНИМАНИЕ! N!=1*2*3*4*5*...*N. 2. Найти сумму натуральных чисел от 2 до 56, кратных 5. 3. Найти произведение натуральных нечетных чисел от n1 до n2. 4. Найти сумму:
К О Н С П Е К Т Тема: Алгоритмическая конструкция Повторение. Цикл с параметром. 2. Циклы. Алгоритм, в котором есть последовательность операций, которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.3. Цикл For. Цикл for применяется в том случае, если некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно.
Общий вид. for i:=n1 to n2 do begin … end; шаг равен 1 | или for i:=n2 downto n1 do begin … end; шаг равен -1 |
(Перевод: for – для, to – к, до, downto – вниз к, do - выполнить) Команды, расположенные между операторными скобками begin – end повторяются n2-n1+1 раз, а переменная цикла i принимает все значения от n1 до n2 с шагом 1 (n1,n1+1,n1+2…n2) или от n2 до n1 с шагом -1. Если n1>n2 команды цикла не выполнятся ни разу. Переменная i называется счетчиком цикла, ее значение автоматически изменяется на 1 или -1. Ограничения и недостатки: а) Все переменные, указанные в строке for – целого типа (Integer). б) Шаг переменной цикла – только целый (1 или –1). в) Нельзя изменять значение переменной цикла внутри цикла (нельзя, например, внутри цикла на-писать i:=i+1) 4. Примеры: 1. Рассчитать сумму первых натуральных чисел от 1 до 100.r> Подумаем, как бы мы считали устно: 1+2+3+4+5+6+…+100. program primer1; var i,s:integer; begin s:=0; for i:=1 to 100 do s:=s+i; writeln('S=',s); end.Внимание! Заметим, что всегда при вычислении суммы, исходное значение суммы принимается равным 0, при вычислении произведения - 1.
2. Рассчитать сумму четных натуральных чисел от 7 до n. program primer1; var i,n,s:integer; begin write('Введите N='); readln(n); s:=0; for i:=7 to n do if i mod 2=0 then s:=s+i; writeln('S=',s); end. 3.Найти сумму N чисел, вводимых с клавиатуры. program primer2; var n,i,s,x:integer; begin write('Введите количество чисел N='); readln(n); s:=0; for i:=1 to n do begin write('Введите число: '); readln(x); s:=s+x; end; writeln('Полученная сумма S=',s); end. Сначала вводится количество чисел, а затем n раз вводится число X (команды ввода расположены внутри цикла) и прибавляется к предыдущему значению суммы.
pascal, pascal, pascal, pascal, pascal, pascal, pascal, pascal
|