Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Програмування (методичка).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
495.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.