- •Лекція № 1 (алгоритми та методи обчислень)
- •Тема 1. Алгоритми
- •1.1 Поняття алгоритму
- •1.2. Вимоги до алгоритмів
- •1.3. Властивості алгоритмів
- •1.4. Основні типи алгоритмічних моделей
- •1.5. Форми подання алгоритмів
- •1.6. Базові структури алгоритму
- •1 .6. Комп’ютерна реалізація алгоритму
- •1.7. Структурний підхід до проектування алгоритмів
- •Тема 2. Похибки обчислень Причини появи похибок обчислень та їх класифікація
- •Абсолютна та відносна похибки
- •Поширення похибок
1.4. Основні типи алгоритмічних моделей
Розглянемо основні типи алгоритмічних моделей, що розрізняються трактуваннями поняття алгоритм.
Перший тип трактує алгоритм як деякій детермінований пристрій, здатний виконувати в кожен момент лише строго фіксовану множину операцій. Основною теоретичною моделлю такого типу є машина Тьюринга, запропонована ним у 30-х роках минулого століття, яка зробила суттєвий вплив на розуміння логічної природи розроблюваних ЕОМ. Іншою теоретичною моделлю даного типу є машина довільного доступу – введена досить недавно (у 70-х роках) з метою моделювання реальних обчислювальних машин та отримання оцінок складності обчислень.
Другий тип пов'язує поняття алгоритму з традиційним уявленням – процедурами обчислення значень числових функцій. Основною теоретичною моделлю цього типу є рекурсивні функції – історично перша формалізація поняття алгоритму.
Третій тип алгоритмічних моделей – це перетворення слів у довільних алфавітах, в яких операціями є заміни фрагментів слів іншим словом. Основною теоретичною моделлю цього типу є нормальні алгоритми Маркова.
Теорія алгоритмів має істотний вплив на розвиток ЕОМ і практику програмування. В теорії алгоритмів передбачені основні концепції, які закладені в апаратуру і мови програмування ЕОМ. Згадувані вище основні алгоритмічні моделі математично еквівалентні. Але на практиці вони істотно розрізняються ефектами складності, що виникають при реалізації алгоритмів, і породили різні напрямки в програмуванні. Так, мікропрограмування будується на ідеях машин Тьюринга, структурне програмування запозичило свої конструкції з теорії рекурсивних функцій, мови символьної обробки інформації (РЕФАЛ, ПРОЛОГ) беруть початок від нормальних алгоритмів Маркова та систем Посту. На основі теорії алгоритмів в даний час отримані практичні рекомендації, що набувають все більшого поширення в області проектування і розробки програмних систем. Результати теорії алгоритмів набувають особливого значення для криптографії.
1.5. Форми подання алгоритмів
На практиці найбільш поширеним є такі форми подання алгоритмів:
– словесна (записи природною мовою);
– графічна (зображення з графічних символів);
– псевдокод (напівформалізований опис алгоритмів умовною алгоритмічною мовою, який включає в себе як елементи мови програмування, так і фрази природної мови, загальноприйняті математичні позначення та ін.);
– програмна (тексти мовою програмування).
Словесний спосіб запису алгоритмів – це опис послідовних етапів обробки даних. Алгоритм задається у довільному викладі природною мовою.
Словесний спосіб не набув поширення з наступних причин:
– такі описи строго не формалізуються;
– страждають багатослівністю записів;
– допускають неоднозначність тлумачення окремих записів.
Графічний спосіб подання алгоритмів є більш компактним і наочним порівняно зі словесним.
При графічному поданні алгоритм зображується у вигляді послідовності пов'язаних між собою функціональних блоків, кожен з яких відповідає виконанню однієї або кількох дій. Таке графічне подання називається схемою алгоритму або блок-схемою. У блок-схемі кожному типу дій (введення вихідних даних, обчислення значень виразів, перевірка умов, керування повторенням дій, закінчення обробки і т. п.) відповідає геометрична фігура, яка має певний вигляд блочного символу. Блокові символи з'єднуються лініями переходів, які визначають черговість виконання дій. Блоки необхідно розміщувати зверху вниз або зліва направо в порядку їх виконання.
У табл. 1 наведені найбільш часто вживані блоки, конфігурація яких відповідає ГОСТ 19.701–90 "Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения".
Таблиця 1
Позначення блоку |
Виконувана функція |
|
Початок або Кінець алгоритму |
Обчислення
|
Обчислювані дії |
|
Перевірка умови: вибір одного з двох напрямків |
|
Введення або Вивід даних |
|
Організація циклічних процесів |
|
Напрямок ліній потоку – стрілки |
Побудова блок-схеми виконується з урахуванням наступних рекомендацій:
1. Блок-схема будується зверху вниз.
2. У будь-який блок-схемі є один елемент, відповідний початку, і один елемент, відповідний кінця.
3. Повинен бути хоча б один шлях з початку блок-схеми до будь-якого елементу.
4. Повинен бути хоча б один шлях від кожного елемента блок-схеми в кінець блок-схеми.
Псевдокод є системою позначень і правил, призначених для однакового запису алгоритмів. Він займає проміжне місце між природною і формальною мовами. З одного боку, він близький до звичайної природної мови, тому алгоритми можуть на ньому записуватися і читатися як звичайний текст. З іншого боку, в псевдокоді використовуються деякі формальні конструкції і математична символіка, що наближає запис алгоритму до загальноприйнятого математичного запису.
У псевдокоді не прийняті строгі синтаксичні правила для запису команд, властиві формальним мовам, що полегшує запис алгоритму на стадії його проектування і дає можливість використовувати більш широкий набір команд, розрахований на абстрактного виконавця. Однак у псевдокоді зазвичай є деякі конструкції, властиві формальним мовам, що полегшує перехід від запису на псевдокоді до запису алгоритму формальною мовою. Зокрема, в псевдокоді, так само, як і в формальних мовах, є службові слова, зміст яких визначено раз і назавжди. Єдиного або формального визначення псевдокоду не існує, тому можливі різні псевдокоди, що відрізняються набором службових слів і основних (базових) конструкцій.
