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

2.2.2.2Процес розгалуження

Алгоритми розв’язання бiльшостi задач не є послідовними. Дії (обчислення), які необхідно виконати, можуть залежати від визначеної умови, наприклад, від вихідних даних, або результатів, отриманих під час виконання програми. Таким чином розгалужений алгоритм передбачає вибір однієї з декількох послідовностей дій у залежності від вихідних даних чи проміжних результатів.

Обчислювальний процес називається розгалуженим, якщо в залежності від виконання визначених умов він реалізується за одним з декількох, заздалегідь передбачених (можливих), напрямків. Розгалужені програми можуть бути реалiзованi одним із трьох способів: з використанням операторів переходу, умовного оператора чи оператора вибору (варіанту). Для цього існують спецiальнi оператори передачі управління, які дають можливість перейти з одного місця програми в інше (передати управління) та змінити послідовний порядок виконання її операторів.

Якщо такий перехід здійснюється тільки при виконанні певної умови, він називається умовним, а вiдповiдний йому оператор – оператором умовного переходу. Якщо перехід виконується в будь-якому випадку, він називається безумовним, а вiдповiдний йому оператор – оператором безумовного переходу. Якщо, у залежності від значення якого-небудь виразу необхідно виконати один з декількох послідовних операторів, використовують оператор вибору.

2.2.2.3Логічний вираз

Логічний вираз (умова) – це засіб запису умов для пошуку потрібних даних. Логічний вираз може приймати значення true (iстиннiсть), або false (хибнicть). Логічні вирази бувають прості та складені. Простий – це два арифметичні вирази, з’єднані символом відношення, а складений – це прості логічні вирази, з’єднані назвами логічних операцій: and (i), not (ні) i оr (або), xor (або з виключенням). У табл. 2 .8 наведены основні логічні операції.

Таблиця 2.8 – Логічні операції

A

B

NOT A

A AND B

A OR B

A XOR B

True

True

False

True

True

False

False

True

True

False

True

True

True

False

False

False

True

True

False

False

True

False

False

False

Подвійну нерiвнiсть 1<х<5 як складний логічний вираз записують так: (1<х) and (х<5). Сукупність нерівностей вигляду х<1; х>5 – так: (х<1) оr (х>5). Прості логiчнi вирази, які входять у складені, завжди беруть у дужки.

2.2.2.4Умовний оператор if

Часто при створені програми необхідно щоб певна її частина виконувалась лише при виконані умови. У таких випадках програмісту необхідно застосувати оператор перевірки умови, який має наступний формат:

if <логічний вираз>

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

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

Якщо логічний вираз істинний (True), то виконується оператор після слова then (оператор1), якщо вираз помилковий (False), то виконується оператор після слова else (оператор2). Якщо при виконанні умови необхідно виконати більше одного оператора, то слід використовувати складений оператор.

Слід звернути увагу, що перед словом else крапка з комою не ставиться.

Оператор перевірки умови може мати коротку форму:

if <логічний вираз>

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

При такій формі запису умовного оператора, якщо логічний вираз істинний (True), то виконується оператор після слова then (оператор1) і дія оператора на цьому закінчується; якщо вираз помилковий (False), то управління передається на оператор, наступний за умовним.

Приклад 2. Скласти програму, яка б знаходила дійсні корені квадратного рівняння a·x2+b·x+c=0.

Блок-схема алгоритму розв’язку даного прикладу наведена на рис. 2 .8.

Текст програми

Program koreni; {обчислення коренів рівняння }

uses Crt; {підключення модуля управління виводом на екран дисплея}

var a,b,c,d,x,x1,x2,z: real;

begin

clrscr; { процедура для очищення поточного вікна}

writeln(' Введіть коефіцієнти квадратного рівняння ');

Рис. 2.8. Блок-схема алгоритму знаходження дійсних коренів квадратного рівняння

write(' a= '); readln(a);

write(' b= '); readln(b);

write(' c= '); readln(c);

writeln('a= ',a:5:2,' b= ',b:5:2,' c= ',c:5:2);

d:=sqr(b)-4*a*c; {визначення дискримінанту}

if d>0 then

begin

z:=2*a;

x1:=(-b+sqrt(d))/z;

x2:=(-b-sqrt(d))/z;

writeln(' Рівняння має два корені ');

writeln(' x1= ',x1:6:2,' x2= ',x2:6:2)

end

else if d=0 then

begin

x:=-b/(2*a);

writeln(' Рівняння має один корінь ');

writeln(' x=',x:6:2)

end

else writeln(' Дійсних коренів немає ');

readln

end.

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