§ 35. Алгоритми з розгалуженнями
Розгалуження — це алгоритмічна структура, в якій залежно від виконання чи невиконання деякої умови здійснюється або та, або інша послідовність дій.
Для організації розгалужень у мові Object Pascal призначені умовні оператори lf...Then та lf...Then...Else.
Умовний оператор If...Then
Оператор lf...Then призначено для виконання деякої послідовності дій у тому випадку, якщо істинною є зазначена умова. Цей умовний оператор відповідає алгоритмічній конструкції «неповне розгалуження».
Синтаксис оператора:
If <умова> Then <оператор>;
Оператор If перевіряє істинність зазначеної умови. Як умова використовується логічний вираз (або логічна змінна як окремий випадок логічного виразу). Умова істинна, якщо логічний вираз набуває значення True, і хибна в протилежному випадку.
Якщо умова істинна (True), програма виконає дію, зазначену в частині <оператор>. Якщо ж умова хибна (False), то керування передається оператору, що міститься після оператора If.
Збільшити значення змінної А на одиницю, якщо її поточне значення менше від 5.
Оператор розгалуження має вигляд: If A < 5 Then A := A + 1; Оператор А := А + 1 виконується тільки в тому випадку, коли істинною є умова A < 5:
Початкове значення А |
Значення умови |
Оператор А := А + 1 |
Значення А після виконання оператора If |
1 |
True |
Виконується |
2 |
5 |
False |
Не виконується |
5 |
10 |
False |
Не виконується |
10 |
Якщо у випадку істинності умови потрібно виконати деяку послідовність дій, оператори, що реалізують ці дії, беруться в операторні дужки begin...end. Таку конструкцію називають складеним оператором.
Поміняти місцями значення змінних a і b, щоб була вірною нерівність a < b. var a, b, x: Integer; begin
a := StrToInt(InputBox('BBefliTb a', 'a=','0')); b := StrToInt(InputBox('BBefliTb b', 'b=','0'));
If a > b Then begin
x := a; // для обміну значеннями між змінними a i b a := b; // використовується додаткова змінна х b := x
end;
Editl .Text := IntToStr(a);
Edit2.Text := IntToStr(b); end;
Якщо умова хибна, керування передається оператору Editl .Text := IntToStr(a).
Умовний оператор If...Then...Else
Алгоритмічній конструкції «повне розгалуження» відповідає умовний оператор If...Then...Else.
Синтаксис оператора:
If <умова> Then <оператор 1>
Else <оператор 2>;
Перед службовим словом Else крапка з комою не ставиться.
якщо результатом перевірки умови є значення True, то виконується блок дій <оператор 1>, який міститься після службового слова Then. Якщо перевірка умови дала результат False, виконується блок дій оператор 2>, який міститься після службового слова Else.
Збільшити змінну a на 1, якщо a < 5, і зменшити на 1, якщо a >5. If a < 5 Then a := a + 1 Else a := a - 1;
Перевірити існування трикутника зі сторонами a, b, c.
Умова існування трикутника із заданими довжинами сторін: сума двох будь-яких довжин сторін повинна бути більшою за третю. var a, b, с : Integer; begin
a := StrToInt(InputBox('BBefliTb a', 'a=','0')); b := StrToInt(InputBox('BBefliTb b', 'b=','0')); c := StrToInt(InputBox('BBefliTb c', 'c=','0'));
If (a < b + c) and (b < a + c) and (c < a + b) Then Editl .Text := 'трикутник існує'
Else Editl .Text := 'трикутника не існує'; end;
Питання для самоперевірки
1. Дайте означення розгалуження як алгоритмічної конструкції.
2. Які вирази використовують як умову в умовному операторі?
3. Поясніть, як виконується умовний оператор в неповній формі.
4. Як записується і виконується умовний оператор в повній формі?
5. Початкові значення змінних А = -3; B = 5. Знайдіть значення змінних А і B після виконання таких операторів:
а) If A > B Then A := A - B Else B := B - A;
б) If A <> B Then A := B;
в) If A < B Then A := 2 * A Else B := B * A;
6. Запишіть умовні оператори, за допомогою яких можна виконати такі дії:
а) перевірити, чи є число а парним;
б) від більшого із заданих чисел a i b відняти менше;
в) перевірити, чи є серед чисел a, b, c рівні.
Вправа 35
Визначити більше з трьох чисел a, b, c.
1) Створіть новий проект. Змініть заголовок форми на «Пошук максимального числа». Розмістіть на формі чотири компоненти Edit для введення значень a, b, c та виведення значення Max найбільшого з трьох чисел згідно з рисунком.
2) Додайте на форму кнопку Buttonl і змініть заголовок доданої кнопки на «Знайти Мах».
3) Створіть процедуру обробки події onclick для кнопки Знайти Мах. У програмному коді створеної процедури запишіть оператори: var a, b, c, Max: Integer;
begin
a := StrToInt(EditUext); b := StrToInt(Edit2.Text); c := StrToInt(Edit3.Text); If a > b Then Max := a Else Max := b;
If c > Max Then Max := c;
Edit4.Text := IntToStr(Max); end;
4) Перевірте роботу програми для різних наборів чисел. Збережіть проект у папці Вправа 35.
5) Змініть програмний код так, щоб програма знаходила найменше з трьох чисел.
6) Додайте на форму кнопку Button2 і змініть її заголовок на «Упорядкувати a, b, c». Створіть процедуру обробки події onclick для цієї кнопки, щоб значення змінних a, b і c були впорядковані за неспаданням (поміняйте місцями a, b і c так, щоб стало a < b < c).
Комп’ютерне тестування
Виконайте тестове завдання 35 з автоматичною перевіркою на сайті interactive.ranok.com.ua.
Це матеріал з підручника Інформатика 8 клас Бондаренко
Автор: admin от 7-10-2016, 22:41, Переглядів: 5295