2. В каких случаях в цикле for используется ключевое слово Downto?
3. Может ли в цикле For использоваться счетчик типа Real? Byte? Char?
4. Назовите 3 основных отличия оператора цикла Repeat от оператора цикла While.
5. Сколько раз выполнится тело следующего цикла: x:=3; while x<5 do inc(x); ?
В данном параграфе рассмотрим несколько типовых задач, которые можно решить с использованием рассмотренных ранее операторов циклов.
Для лучшего усвоения материала рекомендуется самостоятельно «прорешать» представленные примеры (возьмите лист бумаги и карандаш, посмотрите, на каком шаге какие значения в какие переменные будут попадать и что программа напечатает на экране).
Пользователь вводит целое положительное число N. Вычислить факториал от N.
Факториал целого числа N (обозначается N!) – это произведение всех целых чисел в диапазоне от 1 до N включительно. Исключение: факториал 0 равен 1.
Пример: 4! = 1*2*3*4 = 24
Другими словами, задачу можно перефразировать следующим образом: пользователь вводит целое положительное число N. Вычислить произведение целых чисел от 1 до N.
Для решения такой задачи наиболее подходящим будет цикл for, т.к. нам заранее известно количество повторений: от 1 до N, т.е. N раз.
Исходный текст программы в нашем случае будет выглядеть следующим образом.
Пример:
var
N: integer; {число, которое вводит пользователь}
F: integer; {сюда будем вычислять факториал}
i: integer; {счетчик для цикла}
begin
writeln(‘Вычисление факториала N!’);
writeln(‘Введите число N:’);
readln(N);
F:=1; {задаем стартовое значение – инициализируем}
for i:=1 to N do F:=F*i; {в этом цикле и вычисляется факториал}
writeln(N, ‘!=’, F); {печатаем на экране результат}
end.
Суть алгоритма следующая: сначала в переменную F записываем единицу, а затем на каждом шаге домножаем его на новый элемент: на 2, на 3, и т.д., пока не дойдем до N. Для этого используем счетчик i, который внутри цикла for будет как раз принимать значения 1, 2, 3 и т.д. до N (см. начальное и конечное значение). В конце программы не забываем вывести результат на экран.
Пользователь вводит целое положительное число N. Вычислить сумму .
Данная задача аналогична предыдущей. Заводим дополнительную переменную Sum и на каждом шаге цикла добавляем в нее новый элемент – 1/i. Основное отличие – при инициализации в Sum запишем 0, т.к. в данном случае мы имеем дело с суммой, а не с произведением.
Пример:
var
N: integer; {число, которое вводит пользователь}
Sum: integer; {сюда будем считать сумму}
i: integer; {счетчик для цикла}
begin
writeln(‘Введите число N:’);
readln(N);
Sum:=0; {задаем стартовое значение – инициализируем}
for i:=1 to N do Sum:=Sum+1/i;
writeln(‘Sum=’, Sum); {печатаем на экране результат}