Циклы. Сочетания цикла и разветвления.
При решении многих задач вычислительный процесс может иметь циклический характер. Это означает, что часть операторов многократно выполняется при различных значениях переменных. В языке PASCAL имеется три вида операторов цикла: оператор с предварительным условием (While), оператор с последующим условием (Repeat), оператор цикла с параметром (For).
Операторы для записи циклов являются сложными, так как в их состав входят другие операторы.
Для всех операторов цикла характерна следующая особенность. Повторяющиеся вычисления записываются всего один раз. Вход в цикл возможен только через его начало. Переменные цикла должны быть определены до входа в циклическую часть. Необходимо предусмотреть выход из из цикла: или по естественному его окончанию, или по оператору перехода.
Форма записи оператора цикла с предусловием:
While <логическое выражение> do
begin
<операторы циклической части>
end;
Например, найти наименьшее положительное число для данной ЭВМ.
Program MinEps;
var Eps, Eps_Min: real;
begin
Eps:=1;
While Eps>0 do {Заголовок оператора цикла}
begin
Eps_Min:=Eps; {Тело оператора цикла }
Eps:=Eps/2;
end;
writeln('Eps_Min=', Eps_Min);
end.
Форма записи оператора цикла с постусловием:
Repeat
< операторы циклической части>
Until < логическое выражение >
Например, найти наименьшее положительное число для данной ЭВМ.
Program MinEps;
var Eps_Min: real;
begin
Eps_Min:=1;
Repeat {Заголовок оператора цикла}
Eps_Min:=Eps_Min/2; {Тело оператора цикла }
Until Min_Eps/2=0;
writeln('Eps_Min=', Eps_Min);
end.
Оператор цикла с параметром используется в тех случаях, когда известно заранее число повторений. Существует два варианта оператора:
1) используется при изменении переменной цикла i по возрастанию
For i:=m1 to m2 do
begin
<операторы циклической части>
end;
2) используется при изменении переменной цикла i по убыванию
For i:=m1 Downto m2 do
begin
<операторы циклической части>
end;
Например, вычислить сумму первых 10 натуральных чисел
Program Sum10;
var i, Sum :integer;
begin
Sum:=0;
For i:=1 to 10 do
Sum:=Sum+i;
writeln('Сумма=', Sum);
end.
Замечание. Если циклическая часть оператора цикла состоит из одного оператора, операторные скобки Begin - End можно не использовать.
Целью данной работы является получение практических навыков использования операторов цикла.
ЗАДАНИЕ. Напишите программу решения задачи, с использованием операторов организующих циклические вычисления.
ВАРИАНТЫ ЗАДАНИЙ.
1. Дано натуральное число N. Вычислить
1/sin(1)+1/(sin(1)+sin(2))+...+1/(sin(1)+sin(2)+...+sin(N))
2. Дано натуральное число n. Вычислить
3. Дано натуральное число n. Вычислить an.
4. Дано натуральное число n. Вычислить
a (a+1) ... (a+n-1)
5. Дано натуральное число n, действительное x. Вычислить
sin(x) + sin2 (x) + ... + sinn (x)
6. Дано натуральное число N. Сколько цифр в числе n.
7. Дано натуральное число N. Вычислить сумму его цифр.
8. Пусть a0=1; ak=kak-1+1/k, k=1,2,…
Дано натуральное число n. Получить an.
Вычислить бесконечную сумму с заданной точностью (>0). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем , - это и все последующие слагаемые можно не учитывать.
9. Вычислить:
10. Вычислить:
11. Вычислить:
12. Вычислить:
13. Вычислить
14. Дано натуральное число n. Получить все натуральные числа, меньшие n и взаимно простые с ним.
15. Дано натуральное число n. Получить все простые делители этого числа.
16. Найти натуральное число от 1 до 10000 с максимальной суммой делителей.
17. Найти первые 100 простых чисел.
18. Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением себя самого. Число 6 - совершенное, так как 6=1+2+3. Число 8 - не совершенное, так как 81+2+4. Дано натуральное n. Получить все совершенные числа, меньшие n.
20. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
Работа N 3.