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

4.3.2. Оператор цикла с предварительным условием (с предусловием)

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

Формат записи оператора:

while <условие> do

<оператор>;

или

while <условие> do

begin

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

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

. . . . . .

<оператор n>

end;

где <условие> – логическое выражение, <оператор> (или операторы 1, 2, ..., n) – тело цикла. Оператор цикла с предусловием работает следующим образом: определяется значение истинности условия, если логическое выражение имеет значение TRUE (условие выполнено), то выполняется тело цикла, иначе (на FALSE) происходит выход из цикла. Если логическое выражение сразу принимает значение FALSE, то тело цикла не выполняется ни разу, а выполняется оператор, следующий в программе за оператором while.

(фрагмент программы)

. . . . . .

A:=1; N:=1;

while 2*A<=3*N+1 do

begin

A:=A+2;

N:=N+1

end;

. . . . . . .

Исполнение программы:

A 1

N 1

2 A<=3N+1 24 ? да 67 ? да 1010 ? да 1413 ? нет

A:=A+2 3 5 7

N:=N+1 2 3 4

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

Задача 1. Дана непустая последовательность положительных целых чисел, за которой следует 0 (это признак конца последовательности). Вычислить среднее геометрическое этих чисел.

В этой задаче неизвестно число чисел в последовательности. Поэтому нельзя воспользоваться оператором цикла с параметром.

Среднее геометрическое n чисел равно корню n – ой степени из их произведения.

program SREDNEE_2;

var x,p: integer; n: integer; SR: real;

Begin n:=0; p:=1;

Write ('Введите первое число последовательности X - ');

Readln (x);

while x<>0 do

begin

p:=p*x; n:=n+1;

Write ('Введите очередное число X - ');

Readln (x);

end;

SR:=exp(ln(p)/n);

Writeln('Cреднее геометрическое n чисел послед-ти SR=',SR:8:2)

end.

Задача 2. Числа Фибоначчи ( Fi ) определяются по формулам F0 = F1 = 1; Fi = Fi –1 + Fi –2 при i = 2, 3, ... (каждое очередное число равно сумме двух предыдущих). Вычислить сумму всех чисел Фибоначчи, которые не превосходят заданного натурального числа М.

Program SummaFib;

  Var M,                  {заданное число }

      F0, F1, F2,         {три последовательных числа Фибоначчи}

      S : Integer;        {сумма чисел Фибоначчи}

BEGIN

  Write(’Введите натуральное М : ’);

  ReadLn(M);

  F0:=1; F1:=1; F2:=2;

  S:=4;           {4 – сумма первых трех чисел Фибоначчи}

  Write(’Числа Фибоначчи, не превосходящие ’, M, ’ :’, F0:4, F1:4);

  While F2<=M do

    begin

      F0:=F1; F1:=F2; Write(F1 : 4);

      F2:=F0+F1; S:=S+F2;

    end;

  S:=S–F2; {вычитание из суммы последнего числа, которое превосходит М}

  WriteLn;

  WriteLn(’О т в е т : Сумма этих чисел равна ’, S); ReadLn

END.

Результаты работы Pascal-программы

 Введите натуральное M>0 :  10  <Enter>  

Числа Фибоначчи, не превосходящие 10 :  1  1  2  3  5  8  

О т в е т : Сумма этих чисел равна 20

Задача 3. Дано натуральное число определить, образуют ли цифры числа симметричную последовательность (палиндром). Симметрия означает, что последовательность цифровых символов читается одинаково слева направо и справа налево. Пример: 123321.

Program Palindrom;

  Var n, {заданное число }

      m, x : LongInt;

BEGIN

  Write(’Введите натуральное n : ’);

  ReadLn(n);

  {сохраняем исходное значение числа}

m:=n;

{получим обратную запись числа}

  x:=0;

  While n>0 do

    begin

      x:=x*10 +n mod 10;

n:=n div 10;

    end;

{Сравним исходную и обратную записи}

  if x=m then WriteLn (’Палиндром ’) else WriteLn (’Не палиндром ’)

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]