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

1.13. Базові структури управління

Основним досягненням теорії програмування 60-х років є усвідомлення і теоретичне осмислення того факту, що існують декілька основних (базових) способів управління обчисленнями, використовуючи які можна описати будь-який алгоритмічний метод рішення задачі. Структура управління будь-якого алгоритму може бути реалізована у виді комбінації основних структур управління. Ці способи управління, або структури управління, нам уже відомі. До них відносяться:

  • послідовне виконання

  • розгалуження

  • повторення з передумовою

Таким чином, замість програмування в системі команд - блоків Обчислення, Умова і Стрілка Перейти, можна програмувати в структурах управління, причому швидкодія алгоритмів при цьому не погіршується, а такі властивості, як зрозумілість («читабельність») алгоритму істотно поліпшуються. Ефект спагеті не може проявитися тому, що кожна зі структур управління має тільки один вихід.

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

Вхід A, B;

Вихід: D;

{Коментар: D = НСД (AB)}

A, B: НАТ;

D: НАТ;

Початок

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

Якщо A < B

то B := B - A

інакше A := A - B;

D := A

Кінець.

Рис 1.10. Текст і блок-схема алгоритму Евкліда.

Порівняйте текст і блок схему алгоритму Евкліда (рис 1.9): структурований текст представляє алгоритм не менш виразно, ніж його блок-схема. Текст до того ж містить багато корисної інформації, яку не можна виразити в графічних образах. Це відноситься, наприклад, до опису величин.

Розглянемо алгоритм наближеного обчислення кореня квадратного з невід’ємного дійсного числа. Цей алгоритм спирається на метод наближених обчислень, представлений формулами

де a – позитивне число, з якого потрібно обчислити корінь.

Ці формули потрібно розуміти так:

Обчислення починаються зі значення x = a (формула (1)).

На кожному кроці поточне значення x підставляється в праву частину формули (2) і обчислюється нове значення x.

Якщо нове значення x відрізняється від старого на величину більшу, ніж точність обчислень, обчислення по формулі (2) повторюється. У противному випадку обчислення закінчене.

У формулах методу число n відіграє роль лічильника числа кроків .

Запишемо цей алгоритм:

Алгоритм КвКорінь;

Вхід a, t: ДІЙСН;

Вихід y: ДІЙСН;

Доп x: ДІЙСН;

Початок

y := a;

Повторювати

x := y;

y := (x + a/x)/2

до Abs(x – y)<= t

Кінець.

Методами математичного аналізу можна довести, що значення y може бути зроблено як завгодно близьким до

1.14. Абстракція даних

Приклади Виконавців, розглянуті вище, використовують абстрактні представлення про предметні області, над якими визначаються алгоритми. Вони показують, що поняття Виконавця є однією з основних абстракцій, використовуваних для опису алгоритмів. Саме система команд Виконавця і є уточненням набору засобів, за допомогою яких будуються алгоритми. У наших прикладах системи команд Виконавця предметно-орієнтовані. Так, у прикладі 1.1 Виконавець має справу з цілочисельною арифметикою, а в задачі 1.4 – з арифметикою дійсних чисел. Особливо наочно це демонструє Виконавець приклада 1.2, команди якого виконують геометричні побудови.

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

Проблема проектування набору команд Виконавця як опису властивостей і методів відповідної предметної області відіграє центральну роль у теорії і практиці алгоритмізації. Саме їй присвячені практично всі наукові дослідження і навчальні курси з програмування.

Сукупності даних, які оброблює алгоритм, прийнято називати структурами даних (Виконавця). Структури даних (способи опису упорядкованих даних) впливають на ефективність алгоритму, а також на простоту його розуміння і програмної реалізації. Структури даних є головними будівельними блоками, з яких формуються алгоритми. Алгоритмічні структури даних повинні, з одного боку, адекватно описувати ту предметну область, над якою визначається Виконавець, з іншого боку – ефективно відображатися в універсальні структури даних (наприклад, у структуру комп'ютерної пам'яті). Ці в якомусь ступені суперечливі вимоги приводять до наступного, більш формального розуміння терміна «структура даних».

Структура даних складається з трьох основних компонентів:

  • Набір предметно-орієнтованих операцій для обробки специфічних типів абстрактних об'єктів описуваної предметної області.

  • Структура пам'яті, у якій зберігаються дані, що описують абстрактні об'єкти.

  • Інтерпретація (реалізація) кожної з операцій у термінах структури пам'яті.

Перший компонент визначення – набір операцій над абстрактними об'єктами – називається абстрактним типом даних (АТД). Другий і третій компоненти разом утворюють реалізацію структури даних.

АТД визначає, що робить структура даних – які операції вона підтримує, не розкриваючи, як вони виконуються.