Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
циклы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
162 Кб
Скачать
☆

2. Цикл с предусловием.

While <условие> do <оператор>;

Цикл выполняется, пока условие остается истинным.

Пример. Первоначальный вклад составил S рублей. Через сколько лет сумма вклада более, чем в 2 раза превысит первоначальный вклад, если годовой процент составляет x%.

Например, S=1000 р, x=10%

1 год S=1000+1000*10/100=1100

2 год S=1100+1100*10/100=1210

Program primer;

Var s, sum, x: real;

n: integer;

Begin

Write(‘S=’); Readln(S);

Write(‘x=’); Readln(x);

Sum:=2*s; n:=0;

While S<=Sum do begin

s:=s+s*x/100;

n:=n+1;

end;

write('через ', n, ‘ лет’);

end.

Пример 5. Задана арифметическая прогрессия -21; - 16;… Определить номер первого положительного члена прогрессии.

a – очередной член прогрессии, n – его порядковый номер

a=a+5

n=n+1

повторять, пока a<=0

Program primer;

var

a, n: integer;

begin

a:= -21; n:=1;

while a<=0 do begin

a:=a+5; n:=n+1; end;

writeln(‘n=’, n);

end.

Program primer;

var

a, n: integer;

begin

a:= -21; n:=1;

repeat

a:=a+5;

n:=n+1;

until a>0;

writeln(‘n=’, n);

end.

Примечание: необходимо учитывать, что тело цикла должно содержать по крайней мере, одну команду, влияющую на значение логического выражения (условия) таким образом, чтобы цикл завершился за конечное число шагов. Например, в рассмотренном примере это команда a:=a+5;

3. Цикл с постусловием

Repeat

<опреаторы>;

Until <условие>

Оператор повторяет последовательность команд пока условие не станет истинным. Этот цикл всегда выполняется хотя бы 1 раз.

Пример. Найти сумму цифр введенного натурального числа.

Program primer;

var

a, n, s: integer;

begin

Write(‘n=’); Readln(n);

S:=0;

repeat

a:=n mod 10;

s:=s+a;

n:=n div 10;

until n=0;

writeln(‘s=’, s);

end.

Пример 6. Протабулировать (вывести на экран таблицу значений) функции y=2x+1 интервале [-3; 3] с шагом 0.5.

x= - 3 y=…

x= - 2.5 y=…

…

x=3 y=…

Program primer;

var

x, y: real;

begin

x:=0;

repeat

y:=sqrt(sqr(sin(x)+2));

writeln(‘x=’, x:6:2, ‘y=’, y:8:4);

x:=x+0.2;

until x>1;

end.

Пример 7. Вычислить сумму с заданной точностью E=0.0001.

Program primer;

Var S, e, slag: real;

k: integer;

begin

e:=0.0001; s:=0; k:=1;

slag:= k/sqr(k+1);

repeat

s:=s+slag;

k:=k+1;

slag:=k/sqr(k+1);

until slag<e;

write (‘s=’, s:6:2);

end.

Вложенные циклы

Циклическая конструкция может содержать в теле цикла другой цикл. Такие конструкции называют вложенными циклами. Глубина вложения и тип циклов может быть различными.

Например, a) For . . . do – внешний цикл

While . . . do – внутренний цикл (в данном случае глубина = 2)

b) While . . . do

For . . . do

Repeat

. . .

Until (глубина =3)

Рассмотрим механизм работы вложенных циклов на примере:

For a:=1 to 2 do

For b:=1 to 3 do

Writeln(‘a=’, a, ‘ b=’, b);

a=1

a=1

a=1

b=1

b=2

b=3

выполняется внутренний цикл по b при a=1

a=2

a=2

a=2

b=1

b=2

b=3

выполняется внутренний цикл по b при a=2

Параметр внешнего цикла не меняет свое значение до тех пор, пока внутренний цикл не завершит свою работу.

Пример: вывести на экран таблицу Пифагора.

внутренний цикл

внешний цикл

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9



Program primer;

var

i, j: integer;

begin

for i:=1 to 9 do

begin

for j:= 1 to 9 do

write(i*j:4);

writeln;

end;

end.

Внутренний цикл формирует каждую строку таблицы. Writeln – перевод курсора на новую строку.

Пример. Вводятся k натуральных чисел. Найти сумму цифр каждого из них.

повторить

1. Ввести число N

2. Найти сумму его цифр

3. Вывести результат

Program primer;

var

n, s, a, i, k: integer;

begin

write (‘k=’); readln(k);

for i:=1 to k do

begin

Write(‘n=’); readln (n); s:=0;

Repeat

a:=n mod 10;

s:=s+a;

n:=n div 10;

until n=0;

writeln (‘s=’,s);

end;

end.