Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оператор вибору
У Паскале є ще один оператор, що дозволяє програмувати складні розгалуження, коли мається трохи (більше двох) варіантів дії. Цей оператор називається оператором вибору (case) і має такий вигляд: Case вираз of список_значень_1: оператор_1; список_значень_2: оператор_2; список_значень_n: оператор_n; Else оператор; End; Тут між зарезервованими словами case і of знаходиться вираз, що приймає значення, що може бути присутнім в одному зі списків значень, що знаходяться ліворуч від двокрапок. Кожний оператор, що йде за двокрапкою, відокремлюється від наступного списку значень крапкою з комою. Оператор else, що відповідає всім не перерахованим значенням вираз, необов¢ язковий. При виконанні даного оператора спочатку обчислюється значення виразу. Потім вибирається той список значень, у якому знаходиться отримане значення, і виконується відповідний йому оператор. У списках значень оператора case припустимими є цілі і деякі інші (але не дійсні) типи. Будь-яке задане значення вираз може входити в список значень неодноразово, але виконуватися буде лише перша підходяща галузь. Якщо значення вираз відсутній у списках значень, жоден з варіантів виконуватися не буде. У цьому випадку виконується галузь else оператора case або, якщо ця галузь відсутня, наступний за case оператор. Підсумок Отже, ми познайомилися з використанням у програмах на Паскале умовного оператора й оператора вибору, а також з логічними перемінними і логічними виразми. Усе це часто використовується в програмах, що можуть виконуватися по-різному, у залежності від уведених даних. Ну а ми... Ми не будемо зловживати терпінням великого Холмса, тим більше що до нього стукається вже якийсь повний вогненно-рудий пан з розповіді «Союз рудих». А вам, шановний читач, корисно буде подумати над рішенням наступних задач (рішення тут має на увазі написання і виконання відповідної програми). Задача 1. Перевірити, чи є число а парним. Задача 2. Знайти найбільше з трьох чисел. Задача 3. Для цілого числа п знайти суму його цифр. Знайти суму квадратів його цифр у випадку, якщо п чотиризначне. Задача 4. Визначити, чи є число п одночасно позитивним і кратним 3. Задача 5. Визначити, чи може шаховий кінь за один хід потрапити з клітки з координатами (x, у) у клітку з координатами (x-z, у-z). Задача 6. Визначити, чи належить крапка з координатами (х, у) заданій безлічі крапок на координатній площині (безлічі зображені на мал. 2.3, безлічі включають границю). Безлічі крапок Перенесемося з Англії кінця XIX століття на двох тисяч років тому — у Древню Грецію. Древня Греція — країна великих учених, поетів і легендарних героїв. Познайомимося з історією одного з них. «...Сізіф, син бога володаря усіх вітрів Эола, був засновником міста Коринфа, що у найдавніші часи називався Эфирой. Ніхто у всій Греції не міг дорівнювати по підступництву, хитрості і спритності розуму із Сізіфом. Сізіф завдяки своїй хитрості зібрав незлічимі багатства в себе в Коринфі; далеко поширилася слава про його скарби. Коли прийшов до нього бог смерті похмурий Танат, щоб звести його в сумне царство Аїда, те Сізіф, ще раніш відчувши наближення бога смерті, підступно обдурив бога Таната і закував його в окови. Перестали тоді на землі вмирати люди. Ніде не відбувалися великий пишний похорон; перестали приносити і жертви богам підземного царства. Порушився на землі порядок, заведений Зевсом. Тоді громовержець Зевс послав до Сізіфа могутнього бога війни Ареса. Він звільнив Таната з оковів, а Танат вивергнув душу Сізіфа і відвів її в царство тіней померлих. Але й отут зумів допомогти собі хитрий Сізіф. Він сказав дружині своєї, щоб вона не ховалася його тіла і не приносила жертви підземним богам. Послухалася чоловіка дружина Сізіфа. Аид і Персефона довго чекали похоронних жертв. Усі немає їх! Нарешті наблизився до трону Аїда Сізіф і сказав владико царства померлих, Аїду: «ПРО, володар душ померлих, великий Аид, рівняй могутністю Зевсу, відпусти мене на світлу Землю. Я велю дружині моєї принести тобі багаті жертви і повернуся назад у царство тіней. Так обдурив Сізіф владику Аїда, і той відпустив його на землю. Сізіф не повернувся, звичайно, у царство Аїда. Він залишився в пишному палаці своєму і весело бенкетував, радуючись, що один із усіх смертних зумів повернутися з похмурого царства тіней. Розгнівався Аид, знову послав він Таната за душею Сізіфа. З'явився Танат у палац хитрейшего зі смертних і застав його за розкішним бенкетом. Вивергнув душу Сізіфа ненависний богам і людям бог смерті; назавжди відлетіла тепер душу Сізіфа в царство тіней. Тяжке покарання несе Сізіф у загробному житті за всі підступництва, за всі обмани, що зробив він на землі. Він засуджений укочувати на високу, круту гору величезний камінь. Напружуючи всі сили, трудиться Сізіф. Піт градом струменіє з його від тяжкої роботи піт. Усі ближче вершина; ще зусилля, і кінчений буде праця Сізіфа; але виривається з рук його камінь і із шумом котиться вниз, піднімаючи хмари пилу. Снову приймається Сізіф за роботу. Так вічно котить камінь Сізіф і ніколи не може Досягти мети — вершини гори...» Нічого не скажеш — смутна история! Адже Сізіф — узагалі ж непоганий хлопець, у всякому разі в розумі йому не відмовиш! Не можна чи допомогти бідолахо? От що цікаво — дайте прочитати древній міф програмісту, і він скаже: «Нічого страшного. Мова йде про виконання нескінченного циклу. Я і сам іноді попадаю в таке ж положення і знаходжу з нього вихід!» Цикл є однієїз найважливіших алгоритмічних структур і являє собою послідовність операторів, що виконується неодноразово. У програмах, зв'язаних з обробкою даних або обчисленнями, часто приходиться виконувати циклічно повторювані дії. Цикли дозволяють записати такі дії в компактній формі. Цикли належать до числа керуючих операторів. Уважний читач міг помітити, що дотепер ми використовували два види операторів. Одні з них (Read, Write, оператор присвоювання) тільки виконували які-небудь дії, інші ж керували ходом виконання програми (наприклад, умовний оператор). Останні і називаються керуючими операторами. Давайте познайомимося з прикладами використання циклів у програмах на Паскале. Розглянемо задачу на обчислення суми великого числа доданків: 1+1+1+1+1+...+1=99 Можна було б вибрати просте рішення і записати обчислення даної суми в рядок, уживши 99 операцій додавання. Ну а якщо число елементів суми дорівнює 1000 або просто будь-якому цілому числу? Уявіть собі програму з оператором, що займає кілька сторінок і містить 999 додавань! Очевидно, просте рішення тут уже не підходить. Можна помітити, що при обчисленні суми повторюються всего три операції причому у визначеному порядку: 1. Розділити одиницю на знаменник. 2. Додати частка до раніше отриманої суми. 3. Збільшити на 1 значення знаменника. Отже, задачу можна вирішити, наприклад, так: 1. Привласнити перемінної Sum значення, рівне 0 (Sum: = 0). 2. Привласнити перемінної 1 значення, рівне 1 3. Додати до суми значення 1 (Sum: = Sum +1). 4. Збільшити 1 на 1 (1: = 1 + 1). 5. Повторити кроки 3 і 4. Повторивши операції 3 і 4 99 разів, ми одержимо необхідну суму. Це приклад алгоритмічної конструкції «цикл». У мові програмування Паскаль мається три різновиду циклу: · цикл із лічильником (цикл «для» — for... to / downto); · цикл із передумовою (цикл «поки» — while); · цикл із післяумовою (цикл «доти, поки» — repeat...untll). Кожна з трьох різновидів циклу має свої особливості, для кожної з них є своє коло задач, найбільше природно розв'язуваних саме з її допомогою. Цикл із передумовою Цикл із передумовою має вигляд: While умова do {Ця частина називається заголовком циклу} оператор; {Ця частина називається тілом з циклу} Тілом циклу може бути і група операторів, а включена в операторные дужки begin – end (є складений оператор). Цикл із передумовою виконується доти поки виконується умова в заголовку циклу, причому вона перевіряється спочатку, потім виконується оператор. Змінним, вхідним в умову, повинні бути привласнені визначені значення до входу в цикл. У тілі циклу повинні бути оператори, що у якийсь момент змінять значення умови, зробивши його помилковим. Якщо цього не случиться, цикл буде нескінченним. При виникненні в програмі нескінченного циклу говорять, що програма «зациклилася». Зациклившуюся програму приходиться зупиняти одночасним натисканням клавіш Ctrl+Break, інакше вона буде виконуватися вічно (точніше, до першого відключення комп'ютера). Задача про обчислення суми може бути вирішена з використанням циклу while... do у такий спосіб:
|