|
Скачати 156.58 Kb.
|
ОСНОВНІ УПРАВЛЯЮЧІ СТРУКТУРИ 2.Управляюча структура «Розгалуження» Управляюча структура «розгалуження» – це одна з базових управляючих структур. Вона використовується для перевірки умови і вибору однієї або більше дій в залежності від істинності або хибності умови. В основі заданої оператором ЯКЩО умови лежить порівняння двох елементів, яке зазвичай представляють операціями відношення: < менше > більше = рівно <= менше або рівно >= більше або рівно <> не рівно Існує декілька різновидів структури «розгалуження». Розглянемо їх. 2.1. Просте розгалуження (оператор ЯКЩО) Просте розгалуження використовується при виборі однієї з двох альтернативних дій в залежності від істинності або хибності умови. Для представлення структури використовуються ключові слова ЯКЩО, ТО, ІНАКШЕ і ЯКЩО ВСЕ. Наприклад: ЯКЩО account_balance $300 ТО service_charge = 5.00 ІНАКШЕ service_charge = 2.00 ЯКЩО ВСЕ В залежності від результату умови ЯКЩО буде реалізована дія ТО або дія ІНАКШЕ. 2.1.1. Просте розгалуження без гілки хибності (без оператора ІНАКШЕ) Структура без оператора ІНАКШЕ є різновидом простої структури ЯКЩО. Вона використовується в тих випадках, коли дія повинна бути виконана тільки у випадку істинності умови. Якщо умова хибна, нічого не відбудеться і конструкція ЯКЩО буде пропущена. Наприклад: ЯКЩО тип_навчання = _заочний_ ТО Додати 1 до число_заочників ЯКЩО ВСЕ В даному випадку, поле число_заочників буде змінене, тільки якщо студент навчається на заочному відділенні. 2.2. Складене розгалуження (складений оператор ЯКЩО) Складений оператор – це декілька операторів, об'єднаних в одну групу (блок). Складений оператор ЯКЩО складається з кількох умов, поєднаних логічними операціями І або АБО. Якщо для поєднання умов використовується операція І, то для виконання складеної умови істинними повинні бути обидві умови, наприклад: ЯКЩО тип_навчання = _заочний_ І стать_студента = Ж ТО Додати 1 до число_дівчат_заочниць ЯКЩО ВСЕ В цьому випадку, кожний запис студентів буде перевірений двічі. Обрані будуть тільки дівчата-студентки, які навчаються заочно, і тільки в цьому випадку значення змінної число_дівчат_заочниць буде збільшене. Якщо одна з умов хибна, значення лічильника не зміниться. Якщо для поєднання умов використовується операція АБО, то для визнання складеної умови істинною, достатньо, щоб хоча б одна із поєднаних умов була істинною. Якщо обидві поєднані умови хибні, то і складена умова вважається хибною. Якщо в наведеному вище прикладі замінити операцію І на операцію АБО, вихідні дані суттєво зміняться. ЯКЩО тип_ навчання = заочний_ АБО стать_студента = Ж ТО Додати 1 до число_дівчат_заочниць ЯКЩО ВСЕ У цьому прикладі, складена умова буде істинною, якщо хоча б одна з умов істинна. Лічильник буде збільшений у випадку:
Пропущені будуть тільки ті студенти чоловічої статі, які не навчаються на заочному відділенні. У результаті змінна число-дівчат-заочниць буде містити кількість студенток заочниць, студентів заочників і студенток очного відділення. Ім’я змінної число-дівчат-заочниць не буде відповідати значенню, що в ній зберігається. Поєднуючи умови операціями І або АБО, потрібно добре розуміти, що буде відбуватись. Операціями І або АБО можна поєднати більше двох умов. Але якщо в одній умові ЯКЩО використовуються обидві операції, то, щоб виключити двозначність, слід використовувати круглі дужки. Розглянемо приклад: ЯКЩО код_запису = '23' АБО код_зміни = видалити І залишок_рахунку = 0 ТО Видалити запис користувача ЯКЩО ВСЕ Логіка цієї конструкції збиває з пантелику. Що групувати і обробляти спочатку: перші дві умови або дві останні? Але алгоритми не повинні бути неоднозначними. Хоч для логічних операцій немає жорстко оговореного порядку виконання, він є у більшості мов програмування. Тому, щоб уникнути двозначності, слід використовувати круглі дужки: ЯКЩО (код_запису = '23' АБО код_зміни = видалити) І залишок_рахунку = нулю ТО Видалити запис користувача ЯКЩО ВСЕ Тепер двозначності немає, і, зрозуміло, які умови повинні бути виконані для видалення запису клієнта: запис буде видалений, якщо залишок_рахунку дорівнює нулю і або код_запису рівний 23, або код_зміни рівний «видалити». 2.3. Операція НЕ Операція НЕ може бути використана для логічного заперечення умови, наприклад: ЯКЩО НЕ (код_запису = '23') ТО Змінити запис користувача ЯКЩО ВСЕ Тут, дії оператора ЯКЩО будуть виконані для всіх записів, код яких відрізняється від 23, тобто не рівний 23. Зверніть увагу, що операції І або АБО можна використовувати разом з операцією НЕ, але щоб уникнути двозначностей, потрібно не забувати застосовувати круглі дужки: ЯКЩО НЕ (код_запису = '23' І код_зміни = видалити) ТО Змінити запис користувача ЯКЩО ВСЕ У цьому прикладі, запис користувача буде змінений, якщо код_запису не рівний 23 і код_зміни не рівний «видалити». 2.4. Вкладене розгалуження (вкладений оператор ЯКЩО) Розгалуження є вкладеним (багатозначним), якщо у тілі конструкції розгалуження зустрічається ключове слово ЯКЩО. Вкладені розгалуження можуть бути лінійними і нелінійними. 2.4.1. Лінійні вкладені конструкції ЯКЩО Лінійна вкладена конструкція ЯКЩО застосовується, коли змінна перевіряється на різні значення і для кожного із значень потрібно виконати різні дії. Цей вид вкладеного розгалуження називається лінійним, тому що оператор ІНАКШЕ слідує відразу за відповідною йому умовою ЯКЩО. Лінійні вкладені конструкції ЯКЩО рекомендується для наочності записувати з відступами, вирівнюючи всі відповідні ключові слова ЯКЩО, ІНАКШЕ і ЯКЩО ВСЕ. Наприклад: ЯКЩО record_code = 'А’ ТО Збільшити counter_A ІНАКШЕ ЯКЩО record_code = ‘В’ ТО Збільшити counter_B ІНАКШЕ ЯКЩО record_code = ‘С’ ТО Збільшити counter_C ІНАКШЕ Збільшити error_counter ЯКЩО ВСЕ ЯКЩО ВСЕ ЯКЩО ВСЕ В наведеному прикладі кількість операторів ЯКЩО рівна кількості операторів ІНАКШЕ і кількості операторів ЯКЩО ВСЕ. Правильне використання відступів робить конструкцію більш наочною і зрозумілою. Групу лінійно вкладених конструкцій ЯКЩО інколи називають «каскадною конструкцією ЯКЩО» відповідно до вигляду розташування окремих фрагментів у запису алгоритму. 2.4.2. Нелінійні вкладені конструкції ЯКЩО Нелінійною вкладена конструкція ЯКЩО є тоді, коли для виконання певної дії перевіряється кілька різних умов. Конструкція називається нелінійною тому, що оператор ІНАКШЕ може бути відокремлений від відповідного йому оператора ЯКЩО. Записуючи лістинг програми, також важливо коректно використовувати відступи. Кожен оператор ІНАКШЕ і ЯКЩО ВСЕ має бути на одному рівні з відповідним йому оператором ЯКЩО. Наприклад: ЯКЩО тип_навчання = _заочний_ ТО ЯКЩО стать_студента = Ж ТО ЯКЩО вік_студента 21 ТО Додати 1 до дорослі_дівчата_заочниці ІНАКШЕ Додати 1 до молоді_дівчата_заочниці ЯКЩО ВСЕ ІНАКШЕ Додати 1 до хлопці_заочники ЯКЩО ВСЕ ІНАКШЕ Додати 1 до студенти_денного_навчання ЯКЩО ВСЕ В даному прикладі кількість операторів ЯКЩО, операторів ІНАКШЕ і операторів ЯКЩО ВСЕ співпадає. Правильне використання відступів допоможе побачити відповідні трійки операторів ЯКЩО, ІНАКШЕ і ЯКЩО ВСЕ. Проте нелінійні вкладені конструкції ЯКЩО можуть містити логічні помилки, які важко виправляти, тому не слід захоплюватися їх використанням. Якщо це можливо, краще замінити групу нелінійних вкладених конструкцій ЯКЩО розгалуженням із складеною умовою. Така заміна можлива, оскільки два послідовні оператори ЯКЩО працюють як оператор ЯКЩО із складеною умовою, що використовує операцію І. Як приклад розглянемо наступну нелінійну вкладену конструкцію ЯКЩО: ЯКЩО тип_навчання = _заочний_ ТО ЯКЩО вік_студента 21 ТО Збільшити на 1 дорослі_заочники ЯКЩО ВСЕ ЯКЩО ВСЕ Її можна записати у вигляді складеної конструкції ЯКЩО: ЯКЩО тип_навчання = _заочний_ І вік_студента 21 ТО Збільшити на 1 дорослі_заочники ЯКЩО ВСЕ Обидві ці конструкції дадуть однаковий результат, але, якщо логіка дозволяє, краще використовувати другий варіант конструкції, оскільки він простіший для розуміння. Розглянемо приклад задачі з програмування, в якій використовується управляюча структура «розгалуження». Приклад 1. Прочитати три символи Складіть алгоритм, який буде пропонувати користувачу введення трьох символів, прийматиме ці символи як вхідні дані, сортуватиме їх в алфавітному порядку і виводитиме на екран. Крок 1: Визначення алгоритму Таблиця визначення алгоритму
Крок 2: Розробка логіки алгоритму Для сортування трьох символів у порядку зростання в алгоритмі використовується кілька конструкцій ЯКЩО: Прочитати_три_символи
temp = символ_1 символ_1 = символ_2 символ_2 = temp 5 ЯКЩО ВСЕ 6 ЯКЩО символ_2 > символ_3 7 ТО temp = символ_2 символ_2 = символ_3 символ З = temp 8 ЯКЩО ВСЕ 9 ЯКЩО символ_1 > символ_2 10 ТО temp = символ_1 символ_1 = символ_2 символ_2 = temp 11 ЯКЩО ВСЕ 12 Вивести на екран символ1, символ_2, символЗ 13 КІНЕЦЬ У запропонованому рішенні сортування виконується шляхом «обміну» значеннями двох змінних: temp = символ_1 символ_1 = символ_2 символ_2 = temp Тут значеннями обмінюються змінні символ_1 і символ_2, для обміну використовується тимчасова змінна, temp. При написанні подібного коду слід бути уважним, щоб при перетасовуванні не втратити значення змінних. Щоб зробити алгоритм більш наочним, сортування слід виконувати в окремому модулі (див. пр.16 п.4.3). Крок 3: Перевірка алгоритму «на папері» Для перевірки алгоритму будуть використані два набори відповідних символів. Перший набір складатиметься з символів k, b, g, а другий – z, s, а. Вхідні дані
Очікувані результати Розрахуємо очікувані результати для кожного контрольного набору.
Перевірочна таблиця Для позначення дій програми використовуються номери рядків. Зверніть увагу, що при перевірці логіки «на папері», кожна конструкція ЯКЩО розглядається як одна дія.
Питання для самоконтролю
2.5. Множинне розгалуження (оператор ВИБІР) Лінійна вкладена конструкція ЯКЩО має альтернативу – конструкцію ВИБІР. Її використовують з кількох причин:
У конструкції ВИБІР можуть бути представлені кілька логічних гілок: ВИБІР за _змінною_ значення_1: група дій_1 значення_2: група дій_2 . . . значення_n: група дій_n значення_інакше: група дій_інакше ВИБІР ВСЕ Вираз, що записується після оператора ВИБІР, називається селектором. Селектор може належати до одного з типів: цілий, символьний, булевий. Дійсні типи в селекторах використовувати не можна. Мітки варіантів – константи, типи яких повинні співпадати з типом селектора. Всі мітки повинні бути різними. Якщо якомусь оператору в конструкції ВИБІР відповідає декілька міток, то вони перераховуються через кому. Виконується конструкція ВИБІР так: Спочатку обчислюється значення селектора, а тоді виконується той оператор з конструкції, мітка якого дорівнює значенню селектора. Якщо значення селектора рівне значення_1, буде виконана група дій_1, якщо значення_2 – група дій_2 і так далі. По закінченню виконання вибраного оператора управління передається на виконання оператору, що слідує за оператором ВИБІР. Рядок значення_інакше доданий на випадок, коли значення селектора не буде дорівнювати жодному з наведених значень. Якщо значення селектора не співпадає ні з однією з міток, то обирається оператор, який знаходиться після оператора ВИБІР, тобто після службового слова ВИБІР ВСЕ. Мітки варіантів не потрібно описувати в розділі міток. Розглянемо приклад. Приклад 2. Визначити квартал року Складіть алгоритм, який буде приймати порядковий номер місяця як вхідні дані, визначати квартал року за цим порядковим номером і виводити його на екран. Крок 1: Визначення алгоритму Таблиця визначення алгоритму
Крок 2: Розробка логіки алгоритму В алгоритмі рішення буде використовуватись конструкція ВИБІР. Визначення_номеру_квартала Запросити у користувача порядковий_номер_місяця Отримати порядковий_номер_місяця ВИБІР по порядковий_номер_місяця 1,2,3: номер_кварталу=1 4,5,6: номер_кварталу=2 7,8,9: номер_кварталу=3 10,11,12: номер_кварталу=4 ВИБІР ВСЕ Вивести на екран номер_кварталу КІНЕЦЬ Крок 3: Перевірка алгоритму «на папері» Для перевірки алгоритму будуть використані два набори відповідних символів. Перший набір складатиметься з символів k, b, g, а другий — z, s, а. Вхідні дані
Очікувані результати Розрахуємо очікувані результати для кожного контрольного набору.
Перевірочна таблиця Для позначення дій програми використовуються номери рядків. Зверніть увагу, що при перевірці логіки «на папері» кожна конструкція ЯКЩО розглядається цілком як одна дія.
Для обох наборів очікувані результати співпадають з обчисленими, алгоритм коректний. Питання для самоконтролю
|
Створення нової бази даних. Структура таблиці. Типи полів та їхні властивості Структура таблиці — це структура запису, тобто сукупність назв полів, їхніх типів та властивостей, визначених користувачем під час... |
Тема. Використання операторів розгалуження для розв’язування прикладних задач Формування вмінь і навиків використання операторів розгалуження для розв’язування прикладних задач. Закріплення вмінь і навиків використання... |
План: Закони України про ЦЗ. Основні визначення. Структура ЦЗ України Практична робота № Закон України про ЦЗ. Структура ЦЗ України. Структура ЦЗ на ОНГ |
Тема: Практична робота №1 «Структура споживання родин з різним рівнем доходів» Структура сукупних витрат домогосподарств України із різними середньодушовими загальними доходами |
Тема Створення та реалізація програм з розгалуженням Мета Навчитись складати та виконувати програми з використанням вказівок розгалуження |
Структура змістовної частини бакалаврської р Опис функції підприємства, організаційна структура підприємства, структурного підрозділу (ARIS) |
ЛЬВІВСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ БЕЗПЕКИ ЖИТТЄДІЯЛЬНОСТІ Я-концепція – це цілісна структура (у хворих на шизофренію вона, наприклад, порушена). Проте ця структура має і певні протиріччя,... |
Уроку Тема: Оператор розгалуження Мета: Ознайомити учнів з умовними операторами та з використанням їх в середовищі програмування; розвинути логічне та алгоритмічне... |
Уроку Тема: Вкладені розгалуження Мета: Ознайомити учнів з вкладеними розгалуженнями та з використанням їх в середовищі програмування; розвинути логічне та алгоритмічне... |
Лекція Р 3 Тема: Вказівки розгалуження Умовні оператори та оператор вибору призначені для задання потрібного за умовою задачі порядку виконання операторів, тобто для реалізації... |