Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Розгалуження в алгоритмах і програмахСодержание книги
Поиск на нашем сайте
Пригадайте! 1. Що таке алгоритм? Назвіть основні блоки блок-схеми алгоритму і поясніть їх призначення. 2. Які алгоритми (фрагменти алгоритмів) називаються лінійними? У чому полягає їх характерна особливість? 3. Які вирази називаються логічними? Які значення вони можуть набувати? 4. Назвіть логічні операції, наведіть означення кожної з них. 5. Назвіть логічні функції табличного процесора Excel 2007. Чому дорівнюють їхні значення залежно від значень аргументів. Алгоритми з розгалуженням У попередніх пунктах було розглянуто кілька лінійних алгоритмів, зокрема, алгоритми для розв’язування задач на обчислення значень арифметичного виразу для виконавця, який вміє виконувати арифметичні операції. Розглянемо приклад задачі, алгоритм розв’язування якої – не є лінійним. Задача 1. Обчислити значення виразу (a – b) / (c – d), де a, b, c, d – дійсні числа.
Звернемо увагу на те, що значення цього виразу можна обчислити не для будь-якого набору значень змінних a, b, c, d. Адже цей вираз містить дію ділення на вираз зі змінними, значення якого може дорівнювати нулю. Тобто якщо значення різниці c – d дорівнює нулю, то значення виразу (a – b) / (c – d) обчислити не можна, а якщо не дорівнює – то можна. Це означає, що система команд виконавця повинна містити команду порівняння двох чисел, наприклад таку: «s=t?», де s і t – або числа, або змінні чи вирази, які мають певні числові значення. Така команда є прикладом команди перевірки умови. Результатом виконання команди перевірки умови може бути або істина (умова виконується), або хиба (умова не виконується). З іншого боку, ви вже знаєте, що порівняння «s=t?» можна розглядати як висловлення або як простий логічний вираз, який набуватиме значення true або false залежно від конкретних значень змінних s і t. І тоді команду перевірки умови можна інтерпретувати як команду обчислення значення логічного виразу. Алгоритм розв’язування задачі 1 виглядатиме так: 1. Увести значення змінних a, b, c, d. 2. х:= c – d. 3. Обчислити значення логічного виразу х = 0. 4. Якщо обчислене значення логічного виразу true, то повідомити «Вираз значення не має: ділення на нуль», після чого виконати команду 8, якщо false – то виконати команду 5. 5. у:= a – b. 6. z:= у/х. 7. Повідомити значення змінної z. 8. Закінчити виконання алгоритму.
Команди 1–3 наведеного алгоритму виконуватимуться про будь-якому наборі значень змінних a, b, c, d. Подальше виконання цього алгоритму залежатиме від значення логічного виразу, обчисленого в команді 3. Якщо це значення true, то виконуватимуться команди 5–8, а якщо false, то виконуватимуться команда виведення повідомлення «Вираз значення не має: ділення на нуль» і команда 8. У блок-схемі алгоритму команди перевірки умови або обчислення значення логічного виразу позначаються блокомРішення . Оскільки результатом виконання цих команд може бути або true або false, то з цього блоку є два виходи. Вихід Так означає, що результатом перевірки умови є true, а вихід Ні – що результатом перевірки умови є false. Наведемо блок-схему наведеного вище алгоритму розв’язування задачі 1 (рис. 2.46).
Рис. 2.46. Блок-схема алгоритму обчислення значення виразу (a – b) / (c – d)
Розглянемо фрагмент алгоритму на рис. 2.46 від блоку Рішення до блоку Термінатор (не включаючи цей блок). Характерною рисою цього фрагменту алгоритму є те, що при кожному його виконанні деякі команди будуть виконуватися, причому кожна по одному разу, а деякі – виконуватися не будуть. Це залежить від результату виконання команди перевірки умови (команди обчислення значення логічного виразу). Такий фрагмент алгоритму називається розгалуженням.
Виконаємо наведений алгоритм для двох наборів даних. Ці набори підберемо так, щоб проілюструвати хід виконання алгоритму для кожного з двох можливих результатів обчислення значення логічного виразу.
Звертаємо вашу увагу:
В алгоритмах використовують розгалуження двох видів: повне розгалуження (рис. 2.47) і неповне розгалуження (рис. 2.48)
До верстальника: на рис 2.47 і 2.48 у ромбах вставити такі тексти: Перевірка умови (обчислення значення логічного виразу)
Виконання повного розгалуження відбувається так: виконавець виконує команду перевірки умови (команду обчислення значення логічного виразу); якщо результат виконання цієї команди true, то виконавець виконує послідовність команд 1, після чого переходить до виконання першої команди наступного фрагмента алгоритму; якщо ж результат виконання цієї команди false, то виконавець виконує послідовність команд 2, після чого також переходить до виконання першої команди наступного фрагмента алгоритму. Виконання неповного розгалуження відрізняється від виконання повного розгалуження тим, що при результаті виконання команди перевірки умови false, виконавець одразу переходить до виконання першої команди наступного фрагмента алгоритму.
Усередині розгалуження можуть знаходитися як лінійні фрагменти алгоритму, так і інші розгалуження. Наведемо приклад алгоритму із розгалуженням у розгалуженні.
Задача 2. Дано два числа. Визначити, чи рівні вони. Якщо ні, то яке з них більше.
Блок-схема алгоритму розв’язування цієї задачі виглядатиме так (рис. 2.49):
Наведемо приклад ще однієї задачі, алгоритм розв’язування якої містить розгалуження. Задача 3. Є дев’ять однакових на вигляд монет, одна з яких фальшива і легша від інших. Двома зважуваннями на терезах без гир визначити фальшиву монету. Складемо алгоритм для виконавця з такою системою команд: 1. Узяти вказану купку монет. 2. Розділити вказану купку монет на три рівні купки. 3. Покласти на терези вказані купки монет. 4. Перевірити умову «Терези в рівновазі?». 5. Визначити при зважуванні, яка з купок монет легша. 6. Повідомити результат.
Для виконавця із такою системою команд алгоритм розв’язування задачі 3 такий: 1. Узяти дану купку з 9 монет. 2. Розділити взяту купку монет на три рівні купки. 3. Покласти на терези першу і другу купки монет. 4. Перевірити умову «Терези в рівновазі?». 5. Якщо істина, то взяти третю купку монет, якщо хиба, то взяти легшу купку. 6. Розділити взяту купку монет на три рівні купки. 7. Покласти на терези першу і другу купки монет. 8. Перевірити умову «Терези в рівновазі?». 9. Якщо істина, то повідомити: "Фальшивою є монета, що залишилася не покладеною на терези", якщо хиба — повідомити: "Фальшивою є легша монета". Блок-схема цього алгоритму виглядатиме так (рис. 2.50):
Рис. 2.50. Блок-схема алгоритму розв’язування задачі 3
|
||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-18; просмотров: 779; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.180.152 (0.009 с.) |