Графічне представлення алгоритму

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

Таке графічне представлення називається схемою алгоритму або блок-схемою. У блок-схемі кожному типу дій (введення вихідних даних, обчислення значень виразів, перевірці умов, управління повторенням дій, закінчення обробки і т.п.) відповідає геометрична фігура, представлена ​​у вигляді блочного символу. Блокові символи з'єднуються лініями переходів. визначальними черговість виконання дій.

Блок "процес" застосовується для позначення дії або послідовності дій, що змінюють значення, форму подання або розміщення даних. Для поліпшення наочності схеми кілька окремих блоків обробки можна об'єднувати в один блок. Подання окремих операцій досить вільно.

Блок "рішення" використовується для позначення переходів управління за умовою. У кожному блоці "рішення" повинні бути вказані питання, умова або порівняння, які він визначає.

Блок "модифікація" використовується для організації циклічних конструкцій. (Слово модифікація означає видозміну, перетворення). Усередині блоку записується параметр циклу, для якого вказуються його початкове значення, гранична умова і крок зміни значення параметра для кожного повторення.

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

Блок «початок» і «кінець» алгоритму використовується для вказівки початку і кінця алгоритму.

Блок «початок циклу з параметрами» використовується для вказівки началацікла з параметрами.

Блок «кінець циклу з параметрами» використовується для вказівки концацікла з параметрами.

Блок «введення-виведення даних» використовується для вказівки введення та виведення даних.

- перехід від блоку до блоку.

- з'єднувач блоків на сторінці.

- з'єднувач блоків на аркушах.

Логічна структура будь-якого алгоритму може бути представлена ​​комбінацією трьох базових структур: слідування (лінійна структура), розгалуження, цикл.

Характерною особливістю базових структур є наявність в них одного входу Іодная виходу.

1. Базова структура "проходження". Утворюється послідовністю дій, йдуть одне за одним.

2. Базова структура "розгалуження". Забезпечує в залежності від результату перевірки умови (так чи ні) вибір одного з альтернативних шляхів роботи алгоритму. Кожен із шляхів веде до загального виходу. так що робота алгоритму триватиме незалежно від того, який шлях буде обраний. Структура розгалуження існує в чотирьох основних варіантах:

якщо умова то дії все

якщо x> 0 то y: = sin (x) все

якщо умова то дії 1 інакше дії 2 всі

якщо a> b то a: = 2 * a; b: = 1 інакше b: = 2 * b все

вибір при умова 1: дії 1 при умова 2: дії 2. при умова N: дії N все

вибір при n = 1: y: = sin (x) при n = 2: y: = cos (x) при n = 3: y: = 0 всі

вибір при умова 1: дії 1 при умова 2: дії 2. при умова N: дії N іначедействія N + 1 все

вибір при a> 5: i: = i + 1 при a = 0: j: = j + 1 інакше i: = 10; j: = 0 всі

3. Базова структура "цикл". Забезпечує багаторазове виконання деякою сукупності дій, яка називається тілом циклу. Основні різновиди циклів представлені в таблиці:

1. Цикл типу поки - з передумовою. Наказує виконувати тіло циклу до тих пір, поки виконується умова, записана після слова поки.

нц поки умова тіло циклу (послідовність дій) КЦ

нц поки i <= 5 S := S+A[i] i := i+1 кц

2. Цикл типу для - з параметрами. Наказує виконувати тіло циклу для всіх значень деякої змінної (параметра циклу) в заданому діапазоні.

нц для i від i1до i2 тіло циклу (послідовність дій) КЦ

нц для i від 1 до 5 X [i]: = i * i * i Y [i]: = X [i] / 2 кц

3. Цикл типу до тих пір - з постусловіем.Предпісивает виконувати тіло циклу до тих пір, поки умова не стане істинним.

нц тіло циклу (послідовність дій) кц умова

нц i = i + 1 S = S + a (i) кц i<10

Можливі випадки, коли всередині тіла циклу необхідно повторювати деяку послідовність операторів, т. Е. Організувати внутрішній цикл. Така структура отримала назву циклу в циклі або вкладених циклів. Глибина вкладення циклів (тобто кількість вкладених один в одного циклів) може бути різною.

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

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

Однак на практиці в якості виконавців алгоритмів використовуються спеціальні автомати - комп'ютери. Тому алгоритм, призначений для виконання на комп'ютері, повинен бути записаний на зрозумілій йому мові. І тут на перший план висувається необхідність точного запису команд, яка не залишає місця для довільного тлумачення їх виконавцем.

Отже, мова для запису алгоритмів повинен бути формалізований. Така мова прийнято називати мовою програмування, а запис алгоритму на цій мові - програмою для комп'ютера.

Лекція 9 (Л-4.2). Програмування.

За ознакою «призначення» програми бувають системні, прикладні та системи програмування. Системні та прикладні (класифікація) програми вивчені. Системи програмування належить вивчити.

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

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

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

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

Процес пошуку помилок в програмі називається тестуванням, процес усунення помилок - налагодженням.

ЯП - фіксована система позначень і правил для опису алгоритмів і структур даних.

Еволюція і класифікація ЯП.

I покоління. ЯП - набір машинних команд в довічним або вісімковий форматі. Для кожної ЕОМ був потрібний свою мову. Від програміста було потрібно не тільки знання ЯП, а й знання архітектури комп'ютера.

II покоління. Мови ассемблерного типу, що дозволяють замість довічного або вісімковий коду використовувати їх мнемонічне символьне позначення - імена. Це крок вперед у порівнянні з 1 поколінням, але все ж це машинно-орієнтовані мови. Як і раніше від програміста було потрібно не тільки знання ЯП, а й знання архітектури комп'ютера. Зараз ці ЯП використовуються для створення ПЗ за мінімальним обсягом і з максимальною продуктивністю.

1) носять непроцедурного характер - описують ЩО робити, а не ЯК треба робити. Приклад - PROLOG, LONGIN. Вільно освоюються і застосовуються непрофесіоналами;

2) об'єктно-оріентірованнние - кожен графічний об'єкт знає, що потрібно робити зі своїми даними (SMALLTALK, його основа SIMULA-67);

3) мови запитів - вилучення інформації з БД. Стандарт цих ЯП є SQL - STRUCTURED QUERY LANGUAGE;

4) мови паралельного програмування - орієнтовані на створення ПО для обчислювальних систем паралельної архітектури (багатомашинні, мультипроцесорні системи і т.д.). Ці мови є модифікацією FORTRAN, OCCAM, SISAL і т.д.).

V покоління. Мови штучного інтелекту (InterLisp, EXPERTLISP, IQLISP, SAIL) і природні мови, які не потребують освоєння спеціального синтаксису. В даний час природні мови обмежених можливостей (CLOUT, Q $ A, HAL).