While N do M;
-
+
While – пока;
Do – выполнять;
N – выражение, имеющее логическое значение (условие входа в цикл);
M – любой оператор в единственном числе. Если по смыслу задачи надо повторять группу операторов, то их надо превратить в один составной оператор (заключить в операторные скобки). Этот оператор или группа операторов называется телом цикла;
Выполняется:
1. Вычисляется значение N;
2. Если N – True, то выполняется оператор M (группа операторов), иначе оператор цикла заканчивает свою работу;
3. Перейти к пункту 1.
Среди операторов тела цикла обязательно должен присутствовать оператор, изменяющий значение выражения N;
Задача 2.
Даны числа от 1 до N (N – четное). Найти: S=
Решение:
Program Ci2;
Var K,N:Integer;
S:Real;
Begin
Writeln(’Введите четное число’);
Readln(N);
K:=0;S:=0;
While K<N do
Begin
K:=K+2;
S:=S+1/K;
End;
Writeln(’S= ’,S);
End.
Задачи:
1. Даны числа от 1 до N. Найти: Р=
2. Даны числа от 1 до N (N – нечетное). Найти: S=
3. Найти значение Х: Х=(1*3*5*…*N)/(1+3+5+…+N) (N – нечетное).
|
|
4. Даны числа от 1 до N. Вычислять: S= вплоть до слагаемого, меньшего заданного Е (Е<1).
5. Вычислить среднее арифметическое чисел K,K+1,K+2,…,K+N; (K<N).
6. Вычислить сумму чисел: S=N+(N+1)+(N+2)+(N+3)+…+(N+R); (N<R).
7. Вычислить произведение чисел: P=N*(N+1)*(N+2)*(N+3)*…*(N+R); (N<R).
8. Вычислить: P=1+(1*2)+(1*2*3)+(1*2*3*…*R).
9. Вычислить: P=1*(1+2)*(1+2+3)*(1+2+3+…+R).
10. Найти значения функции M=N2-N при N={2,4,6,…,T} (T-четное).
11. Найти значения функции X=Y2 *(Y 2 -Y)/Y при Y={N,N*1,N*2,…,N*M} (N<M).
Цикл с параметром
Оператор цикла с параметром имеет 2 модификации:
For K:=N1 to N2 do M; (с возрастанием параметра)
For K:=N1 downto N2 do M; (с убыванием параметра)
-
+
For – для;
To – до;
Downto – уменьшая до;
K – переменная порядкового типа (Integer, Char, Boolean), называется параметром цикла;
N1, N2 – выражение, имеющее значение того же типа, что и параметр K;
M – любой оператор в единственном числе;
Если по смыслу задачи надо повторять группу операторов, то их надо превратить в один составной оператор (заключить в операторные скобки):
Выполняется:
1. Вычисляется значение N1, N2;
2. K:=N1;
3. Проверяется условие:
- K<=N2 (to)
- K>=N2 (downto)
4. Если условие не выполнено, то выполнение оператора цикла заканчивается. Иначе выполняется оператор M;
5. K – получает приращение:
- K:=succ(K) (to);
- K:=pred(K) (downto);
6. Переход к пункту 3;
В турбо Паскале в отличие от Бейсика цикл с параметром реализован как цикл «пока» и значит оператор M может ни разу не выполнится.
Задача 3.
Вывести коды всех строчных символов латинского алфавита.
Решение:
Program Ci3;
Var S:Char;
Begin
For S:=’a’ to ’z’ do
|
|
Writeln(’У символа - ’,S,’ код ’,Ord(S));
End.
Задача 4.
Вывести на экран цифры в обратной последовательности
Решение:
Program Ci4;
Var R:Integer;
Begin
For R:=9 downto 1 do Write(R,’ ’:4);
End.
Задача 5
Вывести на экран 10 случайных чисел в диапазоне от 0 до 100.
Решение:
Program Ci4;
Const X=100;
Var Y,R:Integer;
Begin
Randomize; {инициализирует генератор случайных чисел}
For R:=1 to 10 do
Begin
Y:=Random(X);
Writeln(R,’=’,Y);
End;
End.