
- •П. Г. Ратайчук, а. М. Тихоненко
- •Алгоритмічна мова
- •Курс лекцій
- •Черкаси – 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йного циклу
Приклад 11. "Найбiльший спiльний дiльник". Знайти найбiльший спiльний дiльник двох натуральних чисел M i N.
алг НСД(M,N: нат): нат
поч
поки M N
виконувати пс якщо M > N то M := M - N
якщо N > M то N := N - M кс
НСД := M
кiн
В даному алгоритмi реалiзовано алгоритм Евклiда.
Приклад 12. "Просте число". Визначити, чи є простим задане натуральне число Q > 1.
алг ПРОСТЕ(Q: нат): лог
поч X,k: нат
k := Q Mod 2; X := 3
поки (k 0) i (X^2 ≤ Q)
виконувати пс k := Q Mod X; X := X + 2 кс
ПРОСТЕ := (k 0) або (Q = 2)
кiн
Вiдомо, що простим є число 2. Вiдомо також, що простим є будь-яке число Q, що не має жодного дiльника на промiжку вiд 2 до Sqrt(Q). Чи не є число Q рiвним 2, тобто простим, i чи не є число 2 дiльником числа Q, перевiряється окремо. Завдяки останньому в циклi вдається органiзувати перевiрку тiльки непарних дiльникiв, що прискорює роботу алгоритму. Таким чином, змiнна X в алгоритмi приймає значення можливих непарних дiльникiв числа Q, починаючи з 3. Значення змiнної k в алгоритмi - ознака наявностi дiльника: якщо Q Mod X = 0, то число X є дiльником числа Q. Процес пошуку дiльникiв продовжується, поки не буде знайдено перший з них i поки цi дiльники не вичерпанi.
Лiнiйні таблиці
В багатьох задачах використовуються великi сукупностi даних однакового змiсту, наприклад, кiлькостi учнiв у класах даної школи, результати щоденних вимiрювань температури повiтря, назви населених пунктiв областi тощо. Характерно, що всi данi кожної з цих сукупностей мають однаковий тип.
При розв'язуваннi таких задач, щоб не переобтяжувати алгоритм великою кiлькiстю позначень, щоб забезпечити використання одноразово описаного процесу обробки до будь-якого даного, всю сукупнiсть даних об'єднують в єдину iменовану величину, яку називають табличною. Отже, таблична величина є величиною структурованого типу.
Лiнiйна таблиця - це iменована таблична величина, що являє собою послiдовнiсть однотипних значень однакового змiсту. Кожне окреме значення називають елементом таблицi. З кожним елементом зв'язаний його порядковий номер.
Знаючи порядковий номер, можна легко указати i сам елемент таблицi, що йому вiдповiдає. Важливо, що зберiгаючи лiнiйну таблицю, немає потреби зберiгати порядковi номери. Достатньо знати початок нумерацiї i шляхом вiдлiку можна знайти будь-який елемент. Корисно знати також i останнiй порядковий номер, оскiльки це дає можливiсть визначати розмiр таблицi. Найзручнiшою є нумерацiя, що починається з одиницi. Тодi значення найбiльшого порядкового номера спiвпадає з кiлькiстю елементiв таблицi.
Щоб указати, що дана величина є табличною, необхiдно належним чином її описати. При цьому слiд указати її iм'я, а також тип i порядок нумерацiї елементiв. Опис лiнiйної таблицi має такий вигляд:
<iм'я> : <тип елементiв> таб [<початок>..<кiнець>]
Наприклад:
а) X: цiл таб [1..50] - опис лiнiйної таблицi X для розмiщення 50 цiлих чисел, пронумерованих вiд 1 до 50;
б) ТЕМП: дiйс таб [5..30] - опис лiнiйної таблицi ТЕМП для розмiщення 26 дiйсних чисел, пронумерованих вiд 5 до 30;
в) Слова: лiт таб [1..100] - опис лiнiйної таблицi Слова для розмiщення 100 значень лiтерного типу, пронумерованих вiд 1 до 100.
Обробкою лiнiйної таблицi будемо називати обробку кожного з її елементiв, що здiйснюється, як правило, за одним i тим же алгоритмом. Щоб указати, який елемент лiнiйної таблицi в даний момент використовується, його порядковий номер приписують до iменi таблицi у виглядi iндекса у квадратних дужках. Такi змiннi, на вiдмiну вiд звичайних, називають змiнними з iндексами. Змiннi з iндексами можна використовувати так само, як i звичайнi змiннi, тобто указувати їх у складi виразiв, присвоювати їм значення, порiвнювати з iншими величинами тощо. Наприклад, вираз X[2]+X[6] означає суму другого та шостого елементiв таблицi X.
Змiннi з iндексами, так само як i звичайнi змiннi, можуть бути невизначеними. Таблицю, в якiй невизначеними є всi її елементи, називають порожньою. Порожню таблицю можна представити як сукупнiсть порожнiх комiрок. Таблиця може бути заповнена значеннями повнiстю або частково. Саме тому до лiнiйної таблицi додатково указують фактичну кiлькiсть значень в нiй. Якщо кажуть, що таблицю задано, то це означає, по-перше, що вiдомий її опис, а по-друге, вiдомо, скiльки i якi конкретно значення в нiй мiстяться.
При побудовi алгоритмiв обробки лiнiйних таблиць необхiдно слiдкувати, щоб значення iндексiв дiйсно вiдповiдали наявним елементам. Це означає, що значення iндексiв не можуть виходити за межi початкового та кiнцевого значень порядкових номерiв, указаних в описi таблицi.
В наведених нижче алгоритмах тип таблиць вибрано довiльним. Можна вибрати його iншим в залежностi вiд умови задачi. В усiх алгоритмах порядок нумерацiї елементiв вибрано таким, що починається з одиницi.