
- •П. Г. Ратайчук, а. М. Тихоненко
- •Алгоритмічна мова
- •Курс лекцій
- •Черкаси – 2003
- •Основні поняття навчальної алгоритмічної мови
- •Величини в навчальнiй алгоритмiчнiй мовi
- •Вирази в навчальнiй алгоритмiчнiй мовi
- •Загальні правила опису алгоритмів на нам
- •Переклад алгоритмiв на мову Паскаль
- •Лiнiйнi алгоритми
- •Команди побудови розгалужень в нам
- •Наступнi алгоритми вимагають застосування команди розгалуження
- •Наступнi алгоритми вимагають застосування команди вибору
- •Команди повторення нам
- •Приклади алгоритмів, що вимагають застосування iтерацiйного циклу
- •Лiнiйні таблиці
- •Приклади алгоритмів
- •Прямокутні таблиці
- •Приклади алгоритмів прямокутних таблиць
- •Лiтерні величини
- •Приклади алгоритмів літерних величин
- •Список рекомендованої літератури
- •Про авторів
- •Алгоритмічна мова
- •18028, М. Черкаси, вул. Смілянська, 120/1
Команди побудови розгалужень в нам
Розгалуженi алгоритми - це такi, в яких для виконання вибирається лише одна iз декiлькох груп команд в залежностi вiд певних умов.
В НАМ для побудови розгалужених алгоритмiв (розгалужених фрагментiв алгоритмiв) передбачено два види команд: команду розгалуження та команду вибору. Певна рiзниця мiж ними обумовлює доцiльнiсть використання тiєї чи iншої в залежностi вiд особливостей розв'язуваної задачi:
Команда розгалуження зручнiша i зрозумiлiша у записi, але може бути застосована лише у випадку необхiдностi вибору однiєї iз двох груп команд;
Команда вибору унiверсальна, тобто дозволяє здiйснити вибiр однiєї iз будь-якої кiлькостi груп команд, але не дуже зручна i зрозумiла у записi.
Використання команди розгалуження замiсть команди вибору для побудови багатогiлкових розгалужень приводить до появи, так званих, вкладених команд розгалуження, при запису та аналiзу яких надзвичайно легко помилитися. Використання команди вибору замiсть команди розгалуження для побудови двогiлкових розгалужень приводить до незграбного запису.
Команда розгалуження має двi форми запису - повну та скорочену.
У повнiй формi команда розгалуження мiстить двi групи команд. З них вибирається для виконання лише одна в залежностi вiд певної умови. Загальний вигляд команди такий:
якщо <умова> то <серiя_1> iнакше <серiя_2>.
У скороченiй формi команда розгалуження мiстить одну групу команд, що може бути виконана або не виконана в залежностi вiд певної умови. Загальний вигляд команди такий:
якщо <умова> то <серiя_1>.
В цих командах серiя_1 є основною, серiя_2 - альтернативною. Формально скорочена форма команди розгалуження вiдповiдає повнiй, в якiй альтернативна серiя порожня. Умова команди розгалуження являє собою деякий логiчний вираз, значення якого може бути або iстинним, або хибним.
Серiї команд розгалуження можуть мiстити будь-яку кiлькiсть команд. Серiя може бути навiть порожньою. Якщо серiя мiстить лише одну команду, то вiдзначати її службовими слова пс та кс необов'язково. Винятком є випадок, коли серiю_1 складає одна команда розгалуження скороченої форми. При цьому, щоб забезпечити однозначнiсть розумiння такої вкладеної команди, все ж виникає потреба застосовувати службовi слова пс та кс i до однiєї команди. Наприклад, команду
якщо <умова> то якщо <умова_1> то <серiя_1> iнакше <серiя_2>
у вiдповiдностi з правилами НАМ слiд розумiти так само, як i команду
якщо <умова> то пс якщо <умова_1> то <серiя_1> iнакше <серiя_2> кс,
тобто, вкладеною є команда розгалуження повної форми. Але якщо розставити службовi слова пс i кс iнакше
якщо <умова> то пс якщо <умова_1> то <серiя_1> кс iнакше <серiя_2>,
то вкладеною буде вже команда розгалуження скороченої форми.
Правило виконання команди розгалуження повної форми: спочатку перевiряється умова (обчислюється логiчний вираз); якщо умова виявилась iстинною, то виконуються команди серiї_1, а команди серiї_2 пропускаються; у протилежному випадку, якщо умова виявилась хибною, пропускаються команди серiї_2, а виконуються команди серiї_1.
Правило виконання команди розгалуження скороченої форми: спочатку перевiряється умова; якщо умова виявилась iстинною, то команди серiї_1 виконуються; якщо умова виявилась хибною, то команди серiї_1 пропускаються.
Команда розгалуження допускає iнвертування умови, тобто еквiвалентними основним її варiантам будуть такi:
якщо не <умова> то <серiя_2> iнакше <серiя_1>
якщо не <умова> то iнакше <серiя_1>
Команда вибору також має двi форми запису - повну та скорочену. Вони мають такий вигляд:
вибiр вибiр
при <умова_1>: <серiя_1> при <умова_1>: <серiя_1>
при <умова_2>: <серiя_2> при <умова_2>: <серiя_2>
.................... ....................
при <умова_N>: <серiя_N> при <умова_N>: <серiя_N>
iнакше <серiя> кв
кв
Службове слово кв означає кiнець команди вибору. Серiя, указана пiсля службового слова iнакше називається альтернативною; всi iншi - основнi. Умови команди вибору являють собою певнi логiчнi вирази, що можуть бути або iстинними, або хибними. Серiї команди вибору можуть мiстити будь-яку кiлькiсть команд. Вони можуть бути навiть порожнiми. Якщо серiя мiстить лише одну команду, то вiдзначати її службовими словами пс i кс необов'язково.
Правило виконання команди вибору повної форми: перевiрка умов здiйснюється послiдовно, i як тiльки зустрiчається iстинна, то виконується вiдповiдна серiя. Пiсля цього команда вибору вважається виконаною, тобто всi наступнi умови та серiї пропускаються. У разi, якщо не знайшлось жодної iстинної умови, то виконується альтернативна серiя, що записана пiсля службового слова iнакше. Таким чином здiйснюється вибiр для виконання лише однiєї iз N+1 серiй.
Правило виконання команди вибору скороченої форми вiдрiзняється лише тим, що у разi, якщо серед умов команди не знайшлось жодної iстинної, то не буде виконано i жодної серiї.
Команда розгалуження мови Паскаль за побудовою, особливостями та правилом виконання повнiстю аналогiчна командi розгалуження НАМ.
Загальний вигляд її такий:
If <умова> Then <серiя_1> Else <серiя_2>; {повна форма}
If <умова> Then <серiя_1>; {скорочена форма}
Умова команди розгалуження являє собою логiчний вираз, що має бути записаний у вiдповiдностi iз правилами мови Паскаль.
Будь-яка серiя команди розгалуження може являти собою або оператор, або складений оператор. В останньому випадку необхiдне застосування операторних дужок Begin i End. Таким чином, операторнi дужки являють собою переклад службових слiв пс i кс.
В мовi Паскаль, на жаль, вiдсутня команда, яка б за своїми можливостями спiвпадала з командою вибору НАМ. Тому у переважнiй бiльшостi випадкiв команду вибору можна перекласти на мову Паскаль лише шляхом застосування послiдовностi вкладених команд розгалуження:
If <умова_1> Then <серiя_1> Else
If <умова_2> Then <серiя_2> Else
............................
If <умова_N> Then <серiя_N> Else <серiя>; {повна форма}
If <умова_1> Then <серiя_1> Else
If <умова_2> Then <серiя_2> Else
............................
If <умова_N> Then <серiя_N>; {скорочена форма}
При цьому, якщо якась серiя являє собою команду розгалуження скороченої форми, то необхiдно застосувати операторнi дужки.
При побудовi розгалужених алгоритмiв дуже часто виникають ситуацiї, коли потрiбнi результати за певних умов виявляються одержаними, i тому у виконаннi наступних команд алгоритму необхiдностi вже немає. Такi ситуацiї називаються ситуацiями дострокового завершення алгоритму, i вони можуть бути реалiзованi за допомогою команди вихiд.
Правило виконання команди вихiд полягає в тому, що алгоритм вважається завершеним, незалежно вiд того, в який момент i в якому мiсцi алгоритму зустрiлась ця команда.
Застосування указаної команди у багатьох випадках дозволяє зробити алгоритм зрозумiлiшим та компактнiшим.
З метою дострокового завершення процедур та функцiй в мовi програмування Паскаль застосовується оператор Exit. Умови його застосування та правило виконання тi ж самi, що й команди вихiд.