циклі (рис. 2.4, б);
цикл з заданим числом повторень (рахунковий цикл) - позначає повторення деяких дій вказану кількість разів (рис. 2.4, в).
Малюнок 2.2- Додаткові структури алгоритмів: а- вибір, б- цикл-до, в- цикл з заданим числом повторень.
Будь-яка з додаткових конструкцій легко реалізується через базові. Перераховані шостій конструкцій були покладені в основу структурного програмування.
Примітка. Слово структурний в даному назві підкреслює той факт, що при програмуванні використані тільки перераховані конструкції (структури). Звідси і поняття програмування без go to .
Програми, написані з використанням тільки структурних операторів передачі управління, називають структурними, щоб підкреслити їх відмінність від програм, при проектуванні або реалізації яких використовувалися низькорівневі способи передачі управління.
Модулі та їх властивості
При проектуванні досить складного програмного забезпечення після визначення його загальної структури виконують декомпозицію компонентів у відповідності з обраним підходом до отримання елементів, які, на думку проектувальника, в подальшій декомпозиції не потребують.
Як уже згадувалося раніше, в даний час використовують два способи декомпозиції розроблюваного програмного забезпечення, пов'язані з відповідним підходом:
процедурний (або структурний - за назвою підходу);
об'єктний.
Результатом процедурної декомпозиції є ієрархія підпрограм (процедур), в якій функції, пов'язані з прийняттям рішення, реалізуються підпрограмами верхніх рівнів, а безпосередньо обробка - підпрограмами нижніх рівнів
Результатом об'єктної декомпозиції є сукупність об'єктів, які потім реалізують як змінні деяких спеціально розроблюваних типів (класів), що представляють собою сукупність полів даних і методів, що працюють з цими полями.
Таким чином, при будь-якому способі декомпозиції отримують набір пов'язаних з відповідними даними підпрограм, які в процесі реалізації організують у модулі.
Термін модуль став використовуватися і в сенсі автономно компільований набір програмних ресурсів. Дані модуль може отримувати і/або повертати через загальні області пам'яті або параметри.
Розрізняються три основних види модулів, що відповідають основним етапам отримання готової програми: вихідний, об'єктний, завантажувальний.
Вихідний модуль містить команди вибраної мови програмування. Надалі він підлягає компіляції. У результаті компіляції отримуємо об'єктний модуль.
Об'єктний модуль складається з тексту на машинній мові і містить, крім машинних команд і констант, керуючі словники, необхідні для подальшого завантаження та налаштування програми в оперативній пам'яті. Об'єктні модулі мають стандартний формат незалежно від вихідної мови програмування. Спеціальною програмою - редактором - вони об'єднуються в завантажувальний модуль.
Завантажувальний модуль - програма, що складається з тексту на машинній мові, і керуючих словників, які необхідні для його завантаження в оперативну пам'ять для подальшого виконання. Компілятори, редактори та завантажувачі є компонентами сучасних операційних систем.
Вихідний модуль включає, як правило, покажчик початку модуля, тіло модуля, покажчик кінця модуля. Покажчик початку модуля містить, щонайменше, ім'я модуля, за яким до нього звертаються.
Тіло модуля складається з будь-яких допустимих команд мови програмування, за винятком покажчиків початку і кінця модуля. Покажчик кінця модуля обмежує текст модуля. Іноді він може бути відсутнім. Тоді тіло модуля обмежується останньою командою, або покажчиком початку наступного модуля.
З часом, коли основні вимоги структурного підходу стали підтримуватися мовами програмування, і під модулем стали розуміти окремо компилируемого бібліотеку ресурсів, вимога незалежності модулів стало основним.
Практика показала, що чим вище ступінь незалежності модулів, тем:
легше розібратися в окремому модулі і всій програмі і, відповідно, тестувати, налагоджувати і модифікувати її;
менше ймовірність появи нових помилок при виправленні старих або внесення змін в програму, т, е. ймовірність появи хвильового ефекту;
простіше організувати розробку програмного забезпечення групою програмістів і легше його супроводжувати.
Таким чином, зменшення залежності модулів покращує технологічність проекту. Ступінь незалежності модулів (як підпрограм, так і бібліотек) оцінюють двома критеріями: ...