13 Цикл с предусловием Цикл с предусловием
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название — while-цикл.
While <условие выполнения> Do <оператор>;
блок-схема
Пример:
Program test1;
Var z:Integer;
Begin
z:=10;
Whilez>0 Do
z:=x-3;
WriteLn(z);
End.
14 Прием накопления суммы
Данный алгоритмический прием используется, когда надо просуммировать большое количество чисел. Для этого переменной, в которую будет записываться сумма, в начале присваивается нулевое значение, затем делается цикл, где на каждом шаге к этой переменной добавляется очередное число.
Пример 4: Просуммировать все целые числа от 1 до 100.
?
s := 0; {Обнуление переменной}
for i:=1 to 100 do
s:=s+i; {Прибавление очередного элемента суммы}
Очень важная, фундаментальная идея, использованная в данном приеме, состоит в том, что результат выполнения каждого шага цикла, зависит от значения переменной, вычисленной на предыдущем шаге. Таким образом, вместо тривиального повторения одного и того же, мы на каждом шаге получаем новый результат. Так в приведенном примере очередное число добавляется к значению переменной s, полученному на предыдущем шаге. А к чему добавляется очередное число на самом первом шаге? Чтобы было к чему добавлять, перед циклом обязательно должна присутствовать инициализация (присваивание начального значения) переменной, в которой накапливается сумма. Чаще всего требуется присвоить ей начальное значение 0.
15 Цикл с накоплением произведения
накоплению суммы можно в отдельной переменной накапливать произведение. Переменной, в которой производится накопление, присваивается начальное значение 1.
Пример 5. Вычисление факториала.
Факториалом целого числа n называется произведение всех целых чисел от 1 до n. Обозначается n!. То есть: n! = 1*2*3*…*n
?
readln(n);
p:=1;
for k:=2 to n do
p:=p*k;
writeln(p);
