лек.№4 информ
.pdf4.5.Оператор цикла
4.5.1.С параметром
For i:= N1 |
To N2 Do "оператор"; |
|
For i:= N1 |
DownTo N2 Do "оператор"; |
|
Пример расчета конечной суммы последовательности: |
||
12 + 32 + 52 +. . . + (2*N-1)2; |
SN = N*(4*N2-1)/3; |
|
PROGRAM SUM_K; |
{ расчет конечной суммы } |
|
var a, S, Sn, i, N: word; |
|
|
Begin |
|
|
write('Введите число членов суммы N='); readln(N);
S:= 0; |
|
For i:= 1 to N do begin |
{ цикл суммирования } |
a:= Sqr(2*i-1); S:= S+a |
end; |
Sn:= N*(4*N*N-1) div 3; |
|
Writeln('Конечная сумма S=', S:-10:2);
Writeln('Расчет конечной суммы по формуле Sn=', Sn:-10:2); Writeln('Нажми Enter'); readln
End.
4.5.2. С условием
While "условие" DO "оператор"; Repeat "операторы" Until "условие";
"условие" - выражение логического типа (Boolean).
Расчет суммы членов бесконечного ряда с заданной погрешностью.
N:= 0; |
a:= 1; |
SN:= 1; |
e:= 2. 7182828; S:= (e2 + 1)/e; |
|
repeat |
N:= N+1; |
k:= 1/((2*N-1)*2*N); |
a:= a*k; |
|
SN:= SN+a; |
|
|
|
|
Writeln('Частичная сумма Sn=', |
Sn:-11:6, '_ _ n=', n:2); |
|||
until abs(S-Sn) < eps; |
{ eps - допустимая погрешность расчетов} |
Writeln('_ _ _ Сумма ряда S =', S :-11:6);
Операторы цикла с условием могут применяться для анализа правильности вводимых данных, например, необходимо ввести |X|<1 ("защита от дурака"):
Repeat Write('введите значение |х|<1;_ _x='); readln(x) until abs(x)<1;
4.5.3. Операторы ограничения и прерывания цикла
Continue; |
- |
ограничение цикла, |
Break; |
- |
прерывание цикла. |
Пример использования операторов для блокировки несанкционированного доступа в программу.
For i:= 1 to 3 do begin
Write( 'Введите ПАРОЛЬ:' ); Readln(S); {S и Parol - переменные одного типа}
If S = Parol Then Break |
{ прерывание цикла } |
|
else If i <> 3 Then Continue; |
|
{ ограничение цикла } |
Writeln( 'Доступ к программе ЗАПРЕЩЕН' ); |
||
Writeln( 'Нажмите Enter' ); Readln; Halt |
{ прерывание программы } |
|
end; |
{продолжение программы} |
4.6. Оператор перехода к метке
Goto "метка";
M1: Write('Введите x>=0'); Readln(x); If x<0 Then Goto M1;
Метки описываются в разделе описания, например: Label M1;
Пример операторов для расчета конечной суммы вклада через 10 месяцев (pr - процентная ставка), при условии досрочного снятия вклада, если начальная сумма "S1" возросла более чем в два раза:
S:= S1; For i:= 1 to 10 do begin
S:= S*(1 + pr/100); If S > 2*S1 Then Goto M1 end;
M1: Writeln(S);