Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Оператори повторення 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 деякої допустимої похибки e:

|Yn - Yn-1| < e

 

Обмежені типи.

Обмежений тип у мові Паскаль можна визначити, накладаючи обмеження на вже визначений скалярний тип - його називають базовим скалярним типом. Обмеження визначаються діапазоном - мінімальним і максимальним значеннями констант базового скалярного типу. Обмеження стандартного типу Real не допускається.

Синтаксична діаграма обмеження має вид:

 

Обмежений

Тип

 

Наприклад:

а) Type Day = 1..30; - обмеження на тип integer;

б) Digit = ‘0’..’9’; - обмеження на тип char;

Базовий скалярний тип визначає допустимість всіх операцій і відношень над значеннями обмеженого типу. Обмежені типи дають можливість описувати алгоритм у більш наочній формі. Крім цього, у процесі трансляції і виконання програми з’являється можливість економити пам’ять і здійснювати контроль присвоювань.

 

Приклад 5.

Program Time_Table;

Type Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Workday = Monday.. Friday;

Var i: Workday;

Begin

For i:= Monday to Friday do

Case i of

Monday: Writeln(‘фізика‘, ’інформатика‘, ’історія’);

Tuesday, Friday: Writeln(‘мат. аналіз‘,’педагогіка‘, ‘англійська’);

Wednesday, Thursday: Writeln(‘фізика ‘,’алгебра‘,’інформатика’)

end

End.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...