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

2.3 Обчислювальний процес, що розгалужується

На практиці рідко зустрічаються завдання, алгоритм рішення яких є лінійним. Часто виявляється, що алгоритм рішення навіть елементарного завдання не є лінійним. Наприклад, хай треба обчислити за формулою струм в електричному ланцюзі. Якщо припустити, що користувач завжди вводитиме вірні дані, то алгоритм рішення цієї задачі дійсно є лінійним. Проте покладатися на те, коли користувач проводитиметься так, як треба програмі, не слідує. Формула розрахунку припускає, що величина опору не рівна нулю. А що буде, якщо користувач введе 0? Відповідь простій: виникне помилка "Ділення на нуль", і програма аварійно завершить роботу. Можна, звичайно, покласти відповідальність за це на користувача, але краще внести зміни в алгоритм рішення, щоб розрахунок виконувався тільки в тому випадку, якщо введені вірні дані.

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

2.3.1 Умова

У повсякденному житті умова звичайно формулюється у вигляді питання, на яке можна відповісти Та чи ні. Наприклад:

  • Величина опору рівна нулю?

  • Відповідь правильна?

  • Сума покупки більше 300 рублів?

У програмі умова - це вираз логічного типа (Boolean), який може приймати одне з двох значень: True (істина) або False (брехня).

У мові Delphi є шість операторів порівняння.

Таблиця 10 Оператори порівняння

Оператор

Опис

Результат порівняння

>

Більше

True, якщо перший операнд більше другого, інакше False

<

Менше

True, якщо перший операнд менше другого, інакше False

=

Рівно

True, якщо перший операнд рівний другому, інакше False

<>

Не рівно

True, якщо перший операнд не рівний другому, інакше False

>=

Більше або рівно

True, якщо перший операнд більше або рівний другому, інакше False

<=

Менше або рівно

True, якщо перший операнд менше або рівний другому, інакше False

2.3.2 Вибір

Вибір в точці розгалуження алгоритму чергового кроку програми може бути реалізований за допомогою інструкцій if і case. Інструкція if дозволяє вибрати один з двох можливих варіантів, інструкція case — один з декількох.

2.3.2.1 Інструкція if

Інструкція if дозволяє вибрати один з двох можливих варіантів розвитку програми. Вибір здійснюється залежно від виконання умови.

У загальному вигляді інструкція if записується так:

If умова then

begin

// тут інструкції, які треба виконати

// якщо умова істинно.

end

else

begin

// тут інструкції, які треба виконати

// якщо умова помилково.

end;

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

Виконується інструкція if таким чином:

1. Обчислюється значення умови (умова — вираз логічного типа, значення якого може бути рівне True або False).

2. Якщо умова істинно (значення виразу умова рівне True), то виконуються інструкції, наступні за словом then (між begin і end). На цьому виконання операції if закінчується, тобто інструкції, наступні за else, не будуть виконані.

Якщо умова помилково (значення виразу умова рівне False), то виконуються інструкції, наступні за словом else (між begin і end).

Якщо в операторі If між словами begin і end знаходиться тільки один оператор, то слова begin і end можна не писати.

Якщо яка-небудь дія повинна виконуватися тільки при виконанні певної умови і пропущена у разі невиконання цієї умови, тоді конструкція if використовується без блоку Else.

Як приклад використання інструкції if розглянемо програму обчислення вартості міжміської телефонної розмови.

Як відомо, вартість міжміської розмови по телефону у вихідні дні нижче, ніж в звичайні. Програма, текст якої приведений далі, запрошує тривалість розмови і день тижня, а потім обчислює вартість розмови. Якщо день тижня — субота або неділя, то вартість зменшується на величину знижки. Ціна хвилини розмови і величина знижки задаються в тексті програми як константи. Вид діалогового вікна програми приведений на мал. 3.

Рисунок 3 Діалогове вікно програми Вартість розмови

Таблиця 11 Компоненти форми застосування Вартість розмови

Компонент

Призначення

Edit1

Для введення тривалості розмови в хвилинах

Edit2

Для введення номера дня тижні 2

Label1, Label

Для виведення тексту, пояснення, про призначення полів введення

Label3

Для виведення результату обчислення — вартості розмови

Button1

Для активізації процедури обчислення вартості розмови


Таблиця 12 Значення властивостей компонентів

Властивість

Значення

Form1 . Caption

Вартість розмови

Edit1.Text

Edit2.Text

Label1 .Caption

Тривалість (мин.)

Label2 .Caption

Номер дня тижня

Label3 .Caption

Button1 . Caption

Обчислити


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

procedure TForm1.Button1Click(Sender: TObject);

const

PAY =0.15; // ціна однієї хвилини розмови 0.15 рубля

DISCOUNT = 0.2; // знижка 20 відсотків

var

Time:Real; // тривалість розмови

Day:integer; // день тижня

Summa:real; // вартість розмови

begin

// одержати початкові дані

Time:=StrToFloat(Editl.Text) ;

Day:=StrToInt(Edit2.Text);

// Обчислити вартість розмови

Summa:= PAY*Time;

// Якщо день субота або неділя, то зменшити

// вартість на величину знижки

if (Day = 6) OR (Day = 7)

then Surama:=Summa*(1 - DISCOUNT);

// виведення результату обчислення

label3.caption:='K оплаті '

+ FloatToStr(Summa)+ 'руб.'; end;

end.