
- •П. Г. Ратайчук, а. М. Тихоненко
- •Алгоритмічна мова
- •Курс лекцій
- •Черкаси – 2003
- •Основні поняття навчальної алгоритмічної мови
- •Величини в навчальнiй алгоритмiчнiй мовi
- •Вирази в навчальнiй алгоритмiчнiй мовi
- •Загальні правила опису алгоритмів на нам
- •Переклад алгоритмiв на мову Паскаль
- •Лiнiйнi алгоритми
- •Команди побудови розгалужень в нам
- •Наступнi алгоритми вимагають застосування команди розгалуження
- •Наступнi алгоритми вимагають застосування команди вибору
- •Команди повторення нам
- •Приклади алгоритмів, що вимагають застосування iтерацiйного циклу
- •Лiнiйні таблиці
- •Приклади алгоритмів
- •Прямокутні таблиці
- •Приклади алгоритмів прямокутних таблиць
- •Лiтерні величини
- •Приклади алгоритмів літерних величин
- •Список рекомендованої літератури
- •Про авторів
- •Алгоритмічна мова
- •18028, М. Черкаси, вул. Смілянська, 120/1
МІНІСТЕРСТВО
ОСВІТИ І НАУКИ УКРАЇНИ ЧЕРКАСЬКИЙ
ДЕРЖАВНИЙ БІЗНЕС-КОЛЕДЖ
УДК
800.92(078)
Розповсдження
та тиражування
Рекомендовано до
друку рішенням без офційного дозволу
ЧДБК методичної ради Черкаського
заборонено
державного
бізнес-коледжу
Протокол
№5 від 2 вересня 2002 р.
Укладач:
Ратайчук
П. Г., Тихоненко А. М.
Алгоритмічна
мова. Курс лекцій
Черкаси.
- 2003.-75
с.
Рецензент:
Богатирьов О. О., кандидат
фізико-математематичних наук, доцент
(Черкаський державний університет ім
Б.Хмельницького)
Посібник містить
теоретичні дані про алгоритмічну мову,
основні правила перекладу алгоритмів
на мову Паскаль та приклади розв’язування
завдань за представленими алгоритмами.
Посібник призначений для організації
самостійної роботи студентів вищих
навчальних закладів І-ІІ рівнів
акредитації.
Затверджено на
засіданні циклової
комісії комп`ютерних
технологій
та
програмування ©
П. Г.Ратайчук,
Протокол
№14 від 18 червня 2002 року А.
М. Тихоненко,
2003 Зміст Основні
поняття навчальної алгоритмічної
мови…............4 Величини
в навчальній алгоритмічній
мові......................…8
Вирази
в навчальній алгоритмічній
мові.............................11 Загальні
правила опису алгоритмів на
НАМ.......................16 Безумовнi
команди навчальної алгоритмiчної мови
та
команди
звернення до
алгоритмів...............…......…….........20
Переклад
алгоритмів на мову
Паскаль.................................22 Лінійні
алгоритми......................................................................28 Команди
побудови розгалужень в
НАМ................................32
Команди
повторення
НАМ.......................................................38 Лінійні
таблиці............................................................................57 Прямокутні
таблиці...................................................................67
Літерні
величини........................................................................70 Список
рекомендованої
літератури........................................73 Про
авторів..................................................................................74
Етап алгоритм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кв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нець якої визначено, називається
сер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мен тип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т
НАМ - це сукупн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л простих
команд на безумовн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 її можна перенести на
наступний рядок, але н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
безпосередньо. Наприклад: 2+3, Sin(30),
24. Тип сталої величини завжди може
бути визначений за її зовнiшнiм виглядом.
Серед сталих
величин видiляють константи за тiєю
ознакою, що для одержання значення
константи не потрiбно проводити нiяких
додаткових обчислень (константа 24 у
попередньому прикладi).
Розрiзняють
константи таких типiв:
1) числовi константи
цiлого типу - це звичайнi цiлi числа;
2) числовi константи
натурального типу - це числа натурального
ряду 1, 2, 3 i т.д.;
3) числовi константи
дiйсного типу - це будь-якi числа, що
мають вигляд десяткового дробу;
4) логiчнi константи,
що позначаються стандартними iменами
ТАК i НI;
5) лiтернi (текстовi)
константи - це величини, що мають
вигляд рядкiв довiльних символiв; щоб
вiдрiзнити їх в алгоритмi, рядки з обох
сторiн мають бути обмеженi символом "
(подвiйнi лапки), наприклад: "школа",
"12345".
Змінною
величиною
називається така величина, значення
якої може змінюватися внаслідок
виконання певних команд алгоритму.
Серед зм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нної визначає також
множину допустимих її значень, що не є
безглуздими у вiдповiдностi зi змiстом
розв'язуваної задачi. Наприклад,
можливими небезглуздими значеннями
змiнної, змiст якої "вiк людини", є
значення в межах вiд 0 до 200.
Типи величин
розпод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д типу
одержуваного значення розр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ну вiд мов
програмування, навчальна алгоритмiчна
мова не забороняє використовувати
будь-якi вiдомi математичнi функцiї iз
складу тих, що мають власне iм'я. Наприклад:
Sin(x), Cos(x), Tg(x), ArcCos(x), ArcSin(x), ArcTg(x), Lg(x),
Ln(x) та iншi.
Спецiальнi позначення
функцiй в НАМ використовувати не можна,
i тому в таких випадках застосовують
штучнi iмена або способи:
Квадратний корiнь
iз x записують як Sqrt(x);
Модуль x записують
як Abs(x);
Логарифм x з
основою a можна записати як Ln(x)/Ln(a) або
як Lg(x)/Lg(a) (властивості логарифмів);
Експоненцiйну
функцiю e
На вибiр одиниць
вимiрювання кутiв (радiани або градуси)
при застосуваннi тригонометричних та
обернених тригонометричних функцiй
навчальна алгоритмiчна мова в принципi
обмежень не накладає. Тому, для
визначеностi, вибираємо такою одиницею
вимiрювання радiан. Таким чином, при
розв'язуваннi задач, що вимагають
застосування кутiв у градусах, потрiбно
буде передбачати перетворення радiанної
мiри кутiв у градусну або навпаки.
В навчальнiй
алгоритмiчнiй мовi використання iмен
для позначення числових констант
правилами не передбачено, тому в таких
випадках теж можливе застосування
штучних засобiв:
У
звичайних випадках число
Число "e"
можна записувати як Exp(1).
В арифметичних
виразах можуть бути застосованi такi
знаки арифметичних операцiй:
Знак бiнарної
операцiї пiднесення до степеня "^";
Знаки бiнарних
операцiй множення "*", дiлення "/"
i "Div", а також знаходження остачi
вiд дiлення "Mod";
Знаки бiнарних
операцiй додавання та вiднiмання "+"
i "-";
Знаки унарних
операцiй вказiвки знаку "+" i "-".
Зауваження.
Унарною називається операцiя, що
виконується над однiєю величиною (над
одним операндом). Бiнарною називається
операцiя, що виконується над двома
величинами (над двома операндами).
Операцiя дiлення
"Div" може використовуватись т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нних A="пар", B="воз" i лiтерної
константи "о", тобто A + "о" +
B, одержуємо значення "паровоз";
при склеюваннi "19" i "99"
одержуємо значення "1999". Iз наведених
прикладiв видно, що результат склеювання
залежить вiд порядку слiдування операндiв
у виразi, тобто A+B не дорiвнює B+A.
Вираз
називають логiчним,
якщо внаслiдок його обчислення
одержують логiчне значення.
В логiчних виразах
можуть бути застосованi такi знаки
логiчних операцiй: "не", "i",
"або" (операцiї перерахованi в
порядку спадання приорiтету)
Розглянемо
виконання цих логiчних операцiй над
деякими логiчними величинами A i B.
Логiчне заперечення
"не" - унарна операцiя, наприклад,
не A; результат операцiї буде iстинним,
якщо величина A хибна, i навпаки,
результат операцiї буде хибним, якщо
величина A iстинна.
Логiчне множення
"i" - бiнарна операцiя, наприклад,
A i B; результат операцiї буде iстинним,
якщо iстинними є обидвi величини, i
навпаки, результат операцiї буде хибним,
якщо хибною є хоча б одна iз величин.
Логiчне додавання
"або" - бiнарна операцiя, наприклад,
A або B; результат операц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й.
Операц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>
требаП. Г. Ратайчук, а. М. Тихоненко
Алгоритмічна мова
Курс лекцій
Черкаси – 2003
Основні поняття навчальної алгоритмічної мови
Величини в навчальнiй алгоритмiчнiй мовi
Вирази в навчальнiй алгоритмiчнiй мовi
записують як Exp(x).
можна записувати як 3.14;
Загальні правила опису алгоритмів на нам
поч <перел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 як аргументи, але не навпаки. Перел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в>): <тип функц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 величини, що "п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терний тип, який є структурованим, але допустимим для типу функц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днiсть виконання дiї (присвоїти змiннiй значення виразу). В той же час знак "=" нiяких дiй не передбачає. Таким чином, якщо з математичної точки зору запис A=A+1 є безглуздим, то запис A:=A+1 в алгоритмах зустрiчається надзвичайно часто. Вiн означає, що значення змiнної A необх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в обов'язково має сп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в.