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

Общая форма записи цикла Repeat…Until

Repeat

<тело цикла>;

Until <условие>;

Принцип действия цикла Repeat…Until:

Вначале выполняется тело цикла следующие после слова Repeat (повторять). Когда компилятор доходит до слова Until (до) происходит проверка поставленного условия. Если оно не соблюдается (т.е. оно ложное), то тело цикла выполняется ещё раз. Как только условие станет соблюдаться (т.е. будет истинным) цикл RepeatUntil завершит свою работу.

Для цикла RepeatUntil характерны 4 особенности:

  1. Тело цикла выполняется, по крайней мере, один раз.

  2. Тело цикла выполняется пока условие ложное.

  3. В теле цикла может находиться произвольное количество операторов без операторных скобок beginend.

  4. Один из операторов тела цикла должен влиять на значение условия, иначе цикл будет бесконечным.

Рассмотрим примеры с использованием цикла RepeatUntil.

Пример 1. Дана последовательность чисел, оканчивающаяся нулём. Составить программу для подсчёта суммы этой последовательности.

Program Posledovatelnost;

Var S,n:integer;

Begin

S:=0;

Repeat

Writeln(‘Введите число:’); Readln(n);

S:=S+n;

Until n=0;

Writeln(‘Сумма чисел=’,S);

End.

Пример 2. Составить программу для подсчёта количества цифр в введённом числе.

Program Kolichestvo;

Var k,n,m:integer;

Begin

k:=0;

Writeln('Введите число n=');Readln(n);

M:=n;

Repeat

m:=m div 10;

inc(k);

Until m=0;

Writeln('Количество цифр в числе ‘,n,’=',k);

End.

Ц и к л с п а р а м е т р о м (For)

Циклы While…do и Repeat…Until используются в основном тогда, когда нам заранее не известно общее количество шагов цикла.

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

Общий вид цикла For…to

For <параметр цикла>:=<начальное значение> to <конечное значение> do

<тело цикла>;

Принцип действия цикла Forto:

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

Слова For, to, do – означают: для, до, делать.

В качестве тела цикла может быть как простой, так и составной оператор.

Существует ещё одна форма записи цикла с параметром:

For <параметр цикла>:=<начальное значение> downto <конечное значение> do

<тело цикла>;

Принцип действия цикла Fordownto:

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

Рассмотрим примеры:

Пример 1. Составить программу для вывода на экран первых 20 натуральных чисел, сначала в порядке возрастания, а затем в порядке убывания.

Program F;

Var i:integer;

Begin

writeln;

For i:=1 to 20 do

write(i,' ');

writeln;

For i:=20 downto 1 do

write(i,' ');

readln;

End.

Пример 2. Составить программу для вычисления факториала введённого натурального числа.

Для начала вспомним понятие факториала числа.

Определение: Факториалом натурального числа n называется последовательное произведение натуральных чисел 1·2·3·4·…·n и обозначается n!

Следовательно: n!=1·2·3·4·…·n

Например: 1!=1

2!= 1·2=2

3!= 1·2·3=6

4!= 1·2·3·4=24

5!= 1·2·3·4·5=120

6!= 1·2·3·4·5·6=720

Утверждение:

0!=1. Факториал отрицательного числа не существует.

Теперь составим программу:

Program Factorial;

Var F,i,n:integer;

Begin

Writeln('Введите натуральное число ');Readln(n);

F:=1;

For i:=1 to n do

F:=F*i;

writeln('Факториал числа ',n,'=',F);

End.

Пример 3. Вычисление суммы ряда:

Program summation;

Var

i, n: Word;

summa: Real;

Begin

Write (‘Введите количество слагаемых n=’);

ReadLn (n);

summa:=0;

for i:=1 to n do

summa:=summa+1/sqr(i);

WriteLn (‘S=’, summa);

End.