Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Оператор вибору






У Паскале є ще один оператор, що дозволяє програмувати складні розгалуження, коли мається трохи (більше двох) варіантів дії. Цей оператор називається оператором вибору (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 у такий спосіб:


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал