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

2.2 Команда циклу з передумовою (while)

Команда циклу з передумовою (while) має вигляд:

while <логічний вираз> do <команда 1>;

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

Для виконання блоку (декількох) команд за допомогою циклу з передумовою і постумовою необхідно використати конструкцію об'єднання команд begin-end.

2.3 Команда циклу з постумовою (repeat)

Команда циклу з постумовою (repeat) має вигляд:

repeat <команди> until <логічний вираз>;

У цьому випадку команди циклу хоч раз, але виконаються. При цьому логічний вираз вказує на умову виходу із циклу при істинному його значенні. Значення логічного виразу змінюється всередині циклу.

При виконанні блоку команд немає необхідності використовувати конструкцію begin-end. Така команда циклу сама свого роду поєднує команди в блок.

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

2.4 Порівняння роботи команд циклу while, repeat та for

Порівняльні характеристики команд циклу надані в таблиці 1.

Таблиця 1

Цикл з передумовою while

(поки умова істинна)

Цикл з постумовою repeat

(до істинності умови)

1) До початку циклу необхідно зробити початкові встановлення змінних, які керують циклом, для коректного входу у цикл

2) В тілі циклу повинні бути присутніми оператори, які змінюють змінні таким чином, щоб цикл через деяке число ітерацій було завершено

3) Цикл працює поки умова істинна (поки True)

3) Цикл працює поки умова хибна (поки False)

4) Цикл завершується, коли умова стає хибною (до False)

4) Цикл завершується, коли умова стає істинною (до True)

5) Цикл може не виконатися ні разу, якщо початкове значення умови при входженні в цикл дорівнює False

5) Цикл обов’язково виконується принаймні один раз

6) Якщо в тілі циклу необхідно більше одного оператора, то треба використовувати складений оператор

6) Незалежно від кількості операторів у тілі циклу використовувати складений оператор не потрібно

Цикл з параметром for

1) Початкове встановлення змінної лічильника циклів до заголовка не потрібно

2) Змінення в тілі циклу значень змінних, які стоять у заголовку циклу, не допускається

3)Кількість ітерацій циклу незмінно та точно визначається значеннями нижньої та верхньої границь та кроку циклу

4) Нормальний хід роботи циклу може бути порушено оператором goto або процедурами Break та Continue

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

Таблиця 2 – Порівняння запису циклів while, repeat та for

S:=0;

i:=1;

while i<=n do

begin

S:=S+A[i];

i:=i+1;

end

S:=0;

i:=1;

repeat

S:=S+A[i];

i:=i+1;

until i>n

S:=0;

for i:=1 to n do

S:=S+A[i];

Приклад 1:

Логічні структури. Програма обчислює дату наступного дня1.

var day: integer; {змінна зберігає день}

month: integer; {змінна зберігає місяць}

year: integer; {змінна зберігає рік}

last: boolean; {true, якщо поточний день останній день місяця}

r: integer; {якщо рік високосний, то залишок від

розподілу year на 4 дорівнює нулю}

begin

write('Введіть цифрами сьогоднішню дату');{запит на введення

даних}

write('(число місяць рік) -> ');

readln(day, month, year); {зчитування введених

даних}

last:=false;

case month of {команда вибору}

1,3,5,7,8,10,12: if day=31

then last:=true; {останній день місяця}

4,6,9,11: if day=30

then last:=true;

2: begin

if day=28 then

begin

r:=year mod 4;

if r <> 0

then last:=true;

end;

if day=29 then

begin

r:=year mod 4;

if r=0

then last:=true

else begin

writeln('Помилка завдання дня місяця! ');

{рік не високосний - введена помилка}

exit; {вихід із програми}

end;

end;

end;

end; {case}

if last

then begin

writeln('Останній день місяця!');

day:=1;

if month=12

then begin

month:=1;

year:=year+1;

writelnt('З наступаючим Новим роком!!!');

end

else month:=month+1;

end

else day:=day+1;

writeln(‘Завтра ’ , day, '.',month,'.',year); {вивід результату}

readln;

end.

Приклад 2:

Циклічні структури. Потрібно обчислити значення функції в інтервалі зміни аргументу від 1 до 10 з кроком для (без використання циклічної структури).

program Povtor; {вибір назви буде обґрунтовано нижче}

uses Crt;

const а=2;

var x,y:integer; {цілі числа в інтервалі від -32768 до 32767, 2 байти}

begin

ClrScr;

х:=0;

y:=a*Sqr(x);

writeln('x= ',x:2,' y=',y:4);

x:=2;

у:=a*Sqr(x);

writeln('x= ',x:2,' y=',y:4);

x:=10;

y:=a*Sqr(x);

writeln('x= ',x:2,' y=',y:4);

readln;

end.{Povtor}

Тіло програми складається з серії операторів, призначених для розрахунку і виводу значень при конкретних значеннях , які повторюються. Саме тому для імені програми використаний ідентифікатор Povtor. Якщо інтервал збільшити, наприклад, в 100 разів (або крок зменшити в 100 разів), то і в 100 разів збільшиться тіло програми.

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

Приклад 3:

Циклічні структури. Оператор циклу for. Програма виконує завдання Прикладу 2 з використанням оператору циклу for.

program About_For;

uses Crt;

const a=2;

x_Min=0; {мінімальне значення х}

hx=2; {крок дискретизації аргументу х, може бути дійсним}

k=6; {число повторів циклу}

var x,y:integer; {можуть бути дійсними}

i:1..k; {інтервальний тип даних}

begin

ClrScr;

for i:=1 to k do

begin

x:=x_Min+(i-l)*hx;

y:=a*Sqr(x);

writeLn('x= ',x:2,' y=',y:4);

end; {for_i}

readln;

end. {About_For}

Приклад 4:

Циклічні структури. Оператор циклу while. Програма виконує завдання Прикладу 2 з використанням оператору циклу while.

Program About_While;

uses Crt;

const a=2;

x_Min=0; {мінімальне значення х}

x_Max=10; {максимальне значення х}

hx=2; {крок дискретизації аргументу х, може бути дійсним}

var i,x,y:integer;

begin

ClrScr;

x:=х_Мin; {для входу в цикл}

while x<=x_Max {передумова, умова входу в цикл}

begin

у:=a*Sqr(x);

writeln('x= ',x:2,' у=',у:4);

х:=х+hх; {зміна значення аргументу}

end; {для while}

readln;

end. {About_While}

Приклад 5:

Циклічні структури. Оператор циклу repeat. Програма виконує завдання Прикладу 2 з використанням оператору циклу repeat.

program About_Repeat;

uses Crt;

const a=2;

x_Min=0; {мінімальне значення х}

x_Max=10; {максимальне значення х}

hx=2; {крок дискретизації аргументу х, може бути

дійсним}

var i,x,y:integer;

begin

ClrScr;

x:=x_Min; {початкове значення аргументу}

repeat

y:= a*Sqr(x);

writeln('x= ',x:2,' y=',y:4);

x:=x+hx; {зміна значення аргументу}

Until

x> x_Max; {постумова, умова виходу з циклу}

readLn;

end. {About_Repeat}

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