Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

1.3. Основні властивості алгоритмів

Алгоритм має наступні властивості:

1. Елементарність. Кожна команда з набору команд Виконавця містить вказівку виконати деяку елементарну (не деталізовану більш детально) дію, яку розуміє, однозначно і точно виконує Виконавець.

Поняття елементарності відносне. Так, в алгоритмі приклада 1.1 є команда обчислення НСД двох чисел. Це означає, що Виконавець уміє знаходити НСД, причому алгоритм обчислення (алгоритм Евкліда або який-небудь інший) прихований від людини, яка складає алгоритми для цього Виконавця. Якщо набір команд Виконавця не містить команди обчислення НСД, обчислення НСД має бути визначеним у вигляді алгоритму.

Приклад 1.3 Алгоритм Евкліда обчислення найбільшого спільного дільника цілих позитивних чисел A і B: НСД(A, B).

Алгоритм Евкліда;

Вхід A, B;

Вихід: D;

{Коментар: D - найбільший спільний дільник A і B}

Початок

Поки A ≠ B виконувати

Якщо A < B

то Обчислити B = B - A

інакше Обчислити A = A - B;

D присвоїти значення A

Кінець.

У цьому прикладі використана команда повторення. Вона має вигляд

Поки <Умова> виконувати <Команда>

Виконуючи цю команду, Виконавець перевіряє, чи виконується Умова. Якщо Умова виконується, Виконавець виконує Команду, зазначену після слова виконувати і повторює перевірку Умови. і Перевірка Умови і виконання Команди повторюються доти, поки Умова істинна. Якщо Умова не виконалася, Виконавець переходить до виконання команди, що слідує за командою повторення.

У цьому ж прикладі використана ще одна команда – команда виду

Якщо <Умова> то <Команда 1> інакше <Команда 2>

Вона називається командою розгалуження. Виконуючи цю команду, Виконавець перевіряє Умову. Якщо Умова виконана, виконується Команда 1, у противному випадку виконується Команда 2. Далі Виконавець переходить до наступної команди. Відзначимо, що команда повторення, як і команда розгалуження, містять у собі інші команди.

2.Визначеність. Виконання алгоритму строго визначено. Це означає, що на кожному кроці Виконавець не тільки точно виконує команду, але й однозначно визначає наступну команду. Тому повторне виконання алгоритму для тих самих вхідних даних у точності повторює перше його виконання.

Так, при виконанні алгоритму в прикладі 1.3 присутнє розгалуження, яке проте однозначно визначено умовою А < В.

3.Масовість. Алгоритми, як правило, описують хід рішення не однієї-єдиної задачі, а цілого класу однотипних задач.

Так, у прикладі 1.1 описаний алгоритм додавання будь-яких двох дробів. Одна-єдина задача, що розв'язується Виконавцем у даний момент, визначена значеннями вхідних даних A, B, C, D. Зміна вхідних даних означає рішення іншої задачі з цього ж класу задач.

Аналогічно, алгоритм приклада 1.2 будує середину будь-якого відрізка, заданого його кінцями, а в прикладі 3 за допомогою алгоритму Евкліда знаходиться НСД будь-якої пари натуральних чисел.

4. Результативність. Виконання будь-якого алгоритму повинно бути закінчене через кінцеву кількість кроків (тобто виконання кінцевого числа команд) з деяким результатом.

Так, у прикладі 1.2 результат – точка E – середина відрізка AB. Алгоритм приклада 1.5 видає результат “Рішень нема“ навіть у тому випадку, коли рівняння не має дійсних коренів, оскільки його дискримінант менше нуля.

Відзначимо, однак, що кількість кроків алгоритму, що вирішує деяку задачу, заздалегідь невідома і може бути дуже великою, тому властивість результативності конкретного алгоритму часто приходиться спеціально доводити. Програміст має бути упевненим у тому, що складений ним алгоритм, по-перше, завжди завершує роботу, і по-друге – працює правильно, тобто видає правильну відповідь.

Для обґрунтування правильності алгоритму Евкліда потрібно довести, що команда повторення завжди завершується і d = НСД(a, b).