СПОСОБИ ПРОГРАМУВАННЯ

Алгоритмічне програмування

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

Структурне програмування

базується на підпрограма [7]. Підпрограма є частиною програми у вигляді сукупності операторів, що виконують потрібну дію і не залежать від інших частин вихідного коду. При цьому структура програми відображає структуру розв'язуваної задачі. Алгоритм її вирішення видно з початкового тексту, який складається з послідовності закінчених блоків коду, що мають певне смислове навантаження. Підпрограми - це, по суті справи, нові оператори або операції мови, що визначаються програмістом. До них можна звертатися за назвами і викликати їх в будь-якій послідовності. Мова програмування з використанням підпрограм відносять до класу процедурних мов.

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

Подієво-орієнтоване програмування засноване на використанні:

  • • користувальницьких подій, ініційованих діями користувача;
  • • системних подій, що виникають в операційній системі (наприклад, викликаних повідомленнями від таймера);
  • • програмних подій, що генеруються самою програмою (наприклад, виявлена помилка, яка потребує обробки).

За допомогою подієвого програмування створюється програма з наступною структурою:

  • • головна частина програми, яка являє собою один нескінченний цикл, що стежить за появою нового повідомлення із заданого списку шляхом опитування (наприклад, операційною системою Windows);
  • • при виявленні повідомлення викликається підпрограма, повідомлення обробляється і цикл опитування триває до отримання повідомлення "Завершити роботу".

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

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

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

Один із способів формування незалежних частин програми полягає у створенні бібліотек об'єктних модулів за допомогою програми LIB. Ця програма дозволяє також поповнити стару бібліотеку процедурами, які витягуються з оттранслировать заздалегідь об'єктних модулів або з іншої бібліотеки. Кожна система програмування зазвичай має власну бібліотеку стандартних процедур / функцій. На стадії складання об'єктні модулі включають в формується завдання (програму). Файли з бібліотеками вказуються при зверненні до компонувальнику програм LINK.

Весь процес трансляції складається, в загальному випадку, з чотирьох стадій:

  • • формування текстових модулів (з використанням текстової підстановки);
  • • синтаксичний аналіз і видача помилок, знайдених транслятором в тексті програми;
  • • генерація об'єктних модулів в машинних кодах, оптимізація;
  • • складання з об'єктних модулів виконуваного коду програми.

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

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

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

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

 
< Попер   ЗМІСТ   Наст >