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

2. Циклічні програми. Складність циклічної програми.

Циклічними називають програми, що містять оператори циклів. Циклічна програма може містити декілька операторів циклу, що виконуються послідовно або входять в інші оператори . Найпростіші циклічні програми містять один оператор циклу і оператори, що керують введенням-виведенням. До найпростіших відносяться циклічні програми розглянутих прикладів.

3. Оператори повторення While і Repeat.

Оператор For використовується лише у випадку, коли заздалегідь відома кількість повторень тіла циклу. У більш загальному випадку, коли кількість повторень заздалегідь невідома, а задана деяка умова закінчення (або продовження) циклу, у мові Pascal використовують інші оператори повторення: оператор циклу з передумовою While і оператор циклу з постумовою Repeat.

Оператор циклу з передумовою визначений діаграмою:

Оператор циклу

з передумовою

Оператор (тіло циклу) виконується до тих пір, поки умова істинна. Якщо при першій перевірці умова виявилась хибною, оператор не виконується ні разу.

Приклад 3. Знайти найменший натуральний розв’язок нерівності x3 + ax2 + bx + c > 0 з цілими коефіцієнтами.

Очевидний алгоритм пошуку розв’язку складається у послідовному обчисленні значень Y = x3 + ax2 + bx + c для x = 1, 2, 3, ... до тих пір, поки Y  0.

Program UneqvSolution;

Var a, b, c : Integer;

X : Integer; Y : Real;

Begin

Write(‘ введіть коефіцієнти a, b, c : ‘); Readln(a, b, c);

X := 1; Y := a + b + c + 1; { Ініціалізація циклу }

While Y <= 0 do begin

X := Succ(X); { Наступне значення X }

Y := ((X + a)*X + b)*X + c { Наступне значення Y }

end;

Writeln(‘X = ‘, X, ‘ Y = ‘, Y )

End.

Оператор циклу з постумовою визначений діаграмою:

Оператор циклу

з постумовою

Тіло циклу Repeat виконується до тих пір, поки умова приймає значення False. Дії, що містяться в тілі циклу, будуть виконані у крайньому випадку один раз. Таким чином, умова є умовою закінчення циклу.

Приклад 4. Знайти номер найменшого числа Фібоначчі, що ділиться на 10. Послідовність Фібоначчі { F(n) } визначається рекуррентно:

F(1) = F(2) = 1, F(n+2) = F(n+1) + F(n)

Як і у попередньому прикладі, обчислюємо Fn для n = 3, 4, ... до тих пір, поки не знайдемо елемент послідовності, що ділиться на 10. Проблема обгрунтування методу залишається тією ж: чи існує потрібний елемент?

Program Fibbonachy;

Var Fib1, Fib2 : Integer;

Index : Integer; Buf : Integer;

Begin

Fib1 := 1; Fib2 := 1; Index := 2; { Ініціалізація циклу }

Repeat

Buf := Fib2;

Fib2 := Fib2 + Fib1; { Наступне число Фібоначчі }

Fib1 := Buf; { Попереднє число Фібоначчі }

Index := Succ(Index) { Номер числа Фібоначчі }

until Fib2 mod 10 = 0;

Writeln(‘Номер = ‘, Index, ‘ Число = ‘, Fib2)

End.

Цикли While і Repeat називають ще ітераційними циклами, оскільки за їх допомогою легко реалізувати різного роду ітераційні обчислення (обчислення, в яких кожний наступний результат є уточненням попереднього). Умова закінчення циклу - досягнення відхилення результату Yn от Yn-1 деякої допустимої похибки :

|Yn - Yn-1| < 

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