Название: Алгоритмы и программы (Афанасьева Т. В.)

Жанр: Информационные системы и технологии

Просмотров: 1340


4.2. оператор цикла for

 

Если число повторений тела цикла заранее известно, то чаще всего применяется оператор цикла с параметром. Общий вид оператора:

 

for        <параметр_цикла>:=<нач.знач.> to <кон.знач.> do <оператор>;

или

for <параметр_цикла>:=< кон.знач> downto < нач.знач> do < оператор >;

 

где  <параметр_цикла> – параметр цикла, переменная типа integer (точнее,

любого порядкового типа);

<нач.знач.>  –  начальное  значение  –  выражение,  задающее  начальное значение параметра цикла;

<кон.знач.>    –          конечное        значение         –          выражение,    задающее        конечное значение параметра цикла.

Например:

а) For i:=1 to 10           do a:= a+1 ;

б) For i:=1 to 20           do begin

a:= c+b ; WRITELN (a,b,c) ; c:= c+1 ;

end ;

в) For k:=20 downto 1 do

WRITELN (k*k)

Задать шаг, отличный от 1 или –1 нельзя!

 

Выход из цикла

 

В циклах с условиями при большом объеме вычислений возможна ситуация, когда время выполнения цикла становится слишком большим.

В этом случае необходимо использовать стандартную процедуру прекращения выполнения цикла:

break.

Эта процедура используется также для досрочного выхода из цикла в случае получения результата до конца выполнения цикла. Процедура continue     используется    для     досрочного    перехода    к     следующей операции цикла.

 

Пример 4.10. Подсчет в строке букв <А> и <B>. program k1;

var a:char; p,i,s:integer; begin

writeln('Подсчет в строке букв <А> и <B> ');

writeln; s:=0; p:=0;

writeln('Введите строку из 10 букв без пробелов');

for i:=1 to 10 do begin

read(a);

if a='a' then s:=s+1; if a='b' then p:=p+1; end;

if s>0 then writeln ('Букв «a» в строке ',s)

else writeln('Букв «a» в строке нет');

if p>0 then writeln ('Букв «b» в строке ',p);

else writeln('Букв «b» в строке нет');

writeln;

writeln('Для окончания работы нажмите ЕNTER');

readln;

end.

 

Пример 4.11. Возведение числа в степень.

program k7; var k,i:integer; n,y:longint; begin

writeln;

writeln(' Возведение числа в степень ');

y:=1;

writeln('введите число, возводимое в степень'); writeln(' { число должно быть меньше 20 }'); readln(k);

writeln('введите целую степень { меньше 5 }');

readln(n);

for i:=1 to n do y:=y*k;

writeln;

writeln('число ',к,' в степени ',n, '= ',y);

writeln;

writeln('Для окончания работы нажмите ENTER');

readln;

end.

 

Пример 4.12. Вычисление:

1: величины отчисления в подоходный налог ежемесячно,

2: среднемесячной зарплаты за текущий период.

program k5; var i,k:integer; p,z,c,s:real; begin

writeln('вычисление:');

writeln(' 1: величины отчисления в подоходный налог ежемесячно');

writeln(' 2: среднемесячной зарплаты за текущий период ');

writeln;

writeln('введите количество месяцев            ');

read(k);

writeln('введите процент подоходного налога        ');

read(p);

c:=0;

for i:=1 to k do begin

writeln('введите зарплату за ',I,' месяц          ');

read(z);

writeln('подоходный налог за ',I, ' месяц = ',p*z:4);

writeln('–––––––––––––––––––––––––––––––––––––––––––');

c:=c+z;

end;

writeln('средняя зарплата за ',K,' месяцев = ',с/k:4); end; writeln('––––––––––––––––––––––––––––––––––––––––––––'); writeln;

writeln('Для окончания работы нажмите ENTER');

readln;

end.

 

Пример 4.13. Вычисление числа в факториале. program k4;

var

y, i, p:integer;

begin

writeln('Вычисление числа в факториале ');

writeln;

y:=1;

writeln('введите целое число { меньше 18 } ');

readln(p);

for i:=2 to p do y:=y*i;

writeln('Число ',p,'!= ',y);

writeln;

writeln('для окончания работы нажмите ENTER');

readln;

end.

 

Пример 4.14. Вычисление числа в факториале. program k4;

var y,i,p:integer; begin

writeln;

writeln('            Вычисление числа в факториале ' );

writeln;

y:=1;

writeln(' Введите целое число { меньше 18 } ');

readln(p);

for i:=p downto 2 do y:=y*i;

writeln('число ',p,'!= ',y);

writeln;

writeln;

writeln('для окончания работы нажмите ENTER');

readln;

end.

 

Пример           4.15.    Найти количество     минимумов    и          максимумов последовательности.

Алгоритм:

1. присваиваем переменным k и n минимальное и максимальное число соответственно;

2. открываем цикл:

2.1. вводим элемент последовательности а;

2.2. если a> или =(предыдущего максимума k), то

если a=(пред. макс. k), то количество максимумов i увеличивается на 1;

если a>(пред. макс. k), то количество максимумов i=1, а переменной k

присваиваем значение а (k:=a).

Аналогичные действия проводятся c минимальными элементами. program orion_posl;

var a,n,k:real; r,i,l,j:integer; begin

i:=0; j:=0; k:=–1e–39; n:=1E+38;

write('введите количество элементов последовательности : ');

read(r);

writeln('введите последовательность');

for l:=1 to r do begin

readln(a);

if a>=k then begin

if a=k then i:=i+1; if a>k then i:=1; k:=a;

end;

if a<=n then begin

if a=n then j:=j+1;

if a<n then j:=1;

n:=a; end; end;

writeln('min=',n:2:0,' кол-во min=',j); writeln('max=',k:2:0,' кол-во max=',i); readln; end.

 

Задания для самостоятельного выполнения

1. При  табулировании функции y=ln(x–a) на  отрезке [1,  10] c  шагом h

определить второе значение y, больше p.

2. Вычислить сумму ряда, общий член которого задан формулой An=(xn)/n!.

3. В      последовательности символов        вывести          на        печать TRUE, если

количество гласных букв больше, чем согласных, и FALSE, – если иначе.

4. В      последовательности целых  положительных         чисел  определить максимальное четное число и его порядковый номер.

5. В  последовательности  вещественных  чисел  определить  наименьшее отрицательное число и его порядковый номер.

6. В последовательности целых чисел определить третье положительное число и подсчитать количество цифр в нем.

7. В последовательности символов выдать на печать TRUE, если значение последнего символа равно Ф.

8. В  последовательности чисел  выдать  на  печать  TRUE,  если  значение максимального числа больше числа 10.

9. В  последовательности вещественных  чисел  подсчитать  произведение чисел, кратных 3.

10. В  последовательности чисел  сравнить,  что  больше:  сумма  положи-

тельных или произведение отрицательных.

11. В последовательности символов подсчитать количество букв и коли-

чество цифр.

12. В последовательности чисел определить предпоследнее отрицательное число.

 

Контрольные вопросы

1. Что такое цикл, параметр цикла?

2. Оператор цикла с параметром.

3. Оператор цикла с предусловием.

4. Оператор цикла с постусловием. Отличия от других операторов цикла.