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

1.2. Класифікація внутрішніх структур алгоритмів

Основними алгоритмічними структурами є: лінійна, розгалуження та цикл.

Лінійні структури. Прості задачі мають лінійний алгоритм розв'язання. Це означає, що він не містить перевірок умов і повторень.

Розглянемо алгоритм такої задачі: за даними довжинами катетів а, b обчислити площу прямокутного трикутника.

Алгоритм:

Вхід: Числа а,b.

1. Ввести а,b.

2. S=a*b/2.

3. Вивести значення s.

4. Кінець.

Вихід: Значення площі S.

Для перевірки працездатності алгоритму необхідно задати значення вхідних змінних, обчислити кінцевий результат за алгоритмом і порівняти із результатом ручного розрахунку.

Структура-розгалуження. Достатньо часто та або інша дія має виконуватись залежно від значення логічного виразу, який є умовою. У таких випадках використовується розгалуження.

Розглянемо алгоритм розв'язання квадратного рівняння

ax2 + bx + с = 0.

Алгоритм:

Вхід: Коефіцієнти а,b і с із рівняння ax2+bx+с=0.

1. Обчислити D=b2–4ac.

2. Якщо D<0, то (відповісти "Розв'язків немає"; Перейти до 6).

3. Якщо D=0, то (обчислити x=–b/(2a); Перейти до 6).

4. Обчислити x1=(–b+sqrt(D))/(2a).

5. Обчислити x2=(–b–sqrt(D))/(2a).

6. Закінчити роботу.

Вихід: "Розв'язків немає" або корінь x, або корені x1,x2.

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

Якщо <умова>

то (<послідовність команд>)

Виконуючи цю команду, необхідно перевірити істинність умови. Якщо умову виконано, то здійснюємо перехід до виконання першої із послідовності команди, що стоїть після слова то, і потім переходимо до виконання наступних лінійних команд. Якщо умова помилкова, то пропускаємо (<послідовність команд>) і переходимо до виконання наступної команди. Такі команди називають умовними, або розгалуженнями.

При тестуванні алгоритмів із розгалуженнями необхідно підбирати такі початкові дані, щоб можна було перевірити всі гілки.

Циклічні структури. Якщо будь-які оператори необхідно виконати кілька разів, то їх не переписують кожного разу заново, а організують цикл. Розглянемо алгоритм задачі: підрахувати кількість цифр у записі натурального числа n. Ідея розв'язання: із заданого числа вибирати із молодшого розряду цифру за цифрою, доки число не вичерпається, тобто не стане рівним нулю; кожну цифру враховувати, тобто підраховувати їх кількість.

Алгоритм:

Вхід: Число n.

1. Ввести число n.

2. К=0 {готуємо лічильник кількості цифр}.

3. Якщо n=0, то перехід до п.7.

4. K=К+1.

5. n=ndiv10.

6. Перехід до п.3.

7. Друк к.

8. Кінець.

Вихід: Кількість цифр К.

Слід зважати на те, що за конкретної реалізації цього алгоритму у середовищі конкретної мови програмування можна використовувати цикли як з перед-, так і з постумовою.

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

Алгоритм:

Вхід: А,B.

1. Обчислити U=А.

2. Обчислити V=B.

3. Поки U<>V виконувати.

4. Якщо U<V

то Обчислити V=V–U.

Інакше Обчислити U=U–V.

5. Обчислити D=U.

Вихід: D – найбільший спільний дільник А і B.

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

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

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

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

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