Урок 23-24
Тема: Операторы цикла на Паскале. Цикл с постусловием.
Цель: познакомить учащихся с форматом оператора цикла с предусловием, учить составлять программы на использование оператора цикла с предусловием.
1.Проверка домашнего задания.
2.Новый материал.
Тело цикла
Условие окончания
да
нет
Оператор цикла repeat
Оператор цикла repeat имеет следующую форму:
repeat
операторы
until условие
В отличие от цикла while, условие вычисляется после очередной итерации цикла, и если оно истинно, то происходит выход из цикла. Таким образом, операторы, образующие тело цикла оператора repeat, выполняются по крайней мере один раз.
Если условие всегда оказывается ложным, то может произойти зацикливание:
repeat
write(1);
until 2=1;
Чтобы прервать зациклившуюся программу, следует использовать комбинацию клавиш Ctrl-F2.
3.Решение задач.
Задача 1. Определить сумму цифр натурального числа n и вывести его запись в обратном порядке.
program z2;
uses crt;
var k, s, n: integer; a: longint;
begin
readln (n);
k:=0; s:=0; a:=0;
repeat
k:=k+1;
s:=s+ n mod 10;
a:= a*10 +n mod 10;
n:= n div 10;
until n=0;
writeln ('число цифр ', k, ' сумма цифр; ', s);
writeln (‘Запись в обр. порядке; ',a);
end.
Задача 2. Суммирование любого количества целых чисел.
program z4;
var sum: real;
count, x:integer;
begin
count:=1; sum:=0;
repeat
write ('Введите значение’, count, '-го слагаемого'); read(x);
count:=count+1;
if x<>999 then sum:=sum+x;
until x=999;
writeln ('Сумма введенных чисел = ', sum:7:3);
end.
Задача 3. «Угадай число»
program z5;
var comp: integer;
igrok : integer;
begin
randomize;
comp:=random(100);
repeat
write ('Введите число'); read (igrok);
if igrok > comp then writeln ('Слишком много…')
else if igrok<comp then writeln ('Слишком мало…')
else writeln ('Вы угадали! ');
until igrok=comp;
end.
Задача 4. Арифметический калькулятор.
program z1; {k -сомножители, a- число сомножителей , s - произведение}
uses crt;
var x, y, s: real;
a, b: char;
begin
repeat
write(‘x=’); read(x);
write(‘y=’); read(y);
write(‘Операция(+, -, *, /)’); read(a);
case a of
‘+’: s:=x+y;
‘-’: s:=x-y;
‘*’: s:=x*y;
‘/’: s:=x/y
else
write(‘Ошибка ввода’);
end;
writeln (x:7:3, a:3, y:7:3, ‘=’, s:7:3 );
write (‘Продолжить (y/n)’);
read(b);
until (b=’n’) or (b=’n’);
end.
Задача 5. Произведение N первых нечетных чисел равно p. Сколько сомножителей взято?
program z1; {k -сомножители, a- число сомножителей , s - произведение}
uses crt;
var k,s,p:integer; a: longint;
begin
readln(p);
k:=1; s:=1; a:=0;
repeat
s:=s*k;
k:=k+2;
a:=a+1;
until p=s;
writeln ('число сомножителей; ',a);
end.
Задача 6. Известен факториал числа n. Найти это число.
program faktorial;
uses crt;
var n: real;
i: integer;
begin
read (n);
i:=1;
repeat
n:=n/i;
i:=i+1;
until n=1;
write (i-1);
end.