Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РП_31_АСД.pdf
Скачиваний:
164
Добавлен:
23.02.2016
Размер:
2.92 Mб
Скачать

Тема 5 СТРУКТУРНІСТЬ ДАНИХ І ТЕХНОЛОГІЯ ПРОГРАМУВАННЯ

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

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

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

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

17

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

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

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

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

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

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

18

Тема 6. ІНФОРМАЦІЙНА МОДЕЛЬ

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

Комп’ютерне моделювання — це використання в цьому процесі комп’ютера як потужного сучасного засобу обробки інформації. Завдяки комп’ютеру суттєво розширюються галузі застосування моделювання, а також забезпечується всебічний аналіз отриманих результатів. Що ж таке модель? Моделлю можна назвати і матеріальні макети реально існуючих об’єктів, і нематеріальні об’єкти (наприклад такі, як теорія розвитку суспільства або всім відома формула земного тяжіння Р = mgh), багато чого іншого. Як же в одному слові можна об’єднати такі різні поняття?

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

Може виникнути запитання, чому не можна дослідити сам об’єкт, навіщо створювати моделі? Для цього може існувати багато причин:

оригінала на момент дослідження може не існувати (наприклад, угіпотезах про загиблий материк Атлантида або про побудову Єгипетськихпірамід, або про можливу «ядерну зиму», яка може початися після атомногобомбардування);

реально цей об’єкт не можна побачити цілком (наприклад, земну кулю,усю сонячну систему або атом);

дослідник хоче побачити об’єкт, але не має можливості потрапити намісце його знаходження (наприклад: Ейфелева вежа, єгипетські піраміди,Софіївський собор тощо);

процес, який досліджується, небезпечний для життя (наприклад,ядерна реакція). Для одного й того ж об’єкта можна створити велику кількість моделей. Все

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

Отже, кількість моделей та їх різноманітність дуже велика. Щоб не розгубитися в цьому розмаїтті, необхідно моделі класифікувати.

Найсуттєвішими ознаками, за якими класифікуються моделі є:

галузі використання;

урахування в моделі фактора часу;

19

спосіб представлення моделей.

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

навчальні — наочні посібники, тренажери, навчальні програми;

дослідні — створюються для дослідження характеристик реальногооб’єкта (наприклад, модель теплоходу перевіряється на плавучість, амодель літака— на аеродинамічні характеристики);

науково-технічні — для дослідження процесів та явищ (наприклад,ядерний реактор або синхрофазотрон);

ігрові моделі — для вивчення можливої поведінки об’єкта в запрограмованих або непередбачених ситуаціях (наприклад: військові,економічні, спортивні ігри тощо);

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

випробуваннялікарських препаратів на мишах або інших тваринах, політ собаки в космос).

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

За способом представлення моделі можуть бути матеріальні та інформаційні.

Матеріальні моделі — це предметне відображення об’єкта зі збереженням геометричних та фізичних властивостей (наприклад: іграшки,

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

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

вербальними — моделі отримані в результаті розумової діяльності людини і представлені в розумовій або словесній формі;

знаковими — моделі, що виражені спеціальними знаками (малюнками, текстами, схемами, графіками, формулами тощо).

За формою представлення можна виділити наступні види інформаційних моделей:

геометричні — графічні форми та об’ємні конструкції;

словесні —у сні та письмові описи з використанням ілюстрацій;

математичні — математичні формули, що відображають зв’язок різних параметрів об’єкта;

структурні — схеми, графіки, таблиці;

логічні — моделі, в яких представлені різні варіанти вибору дій на основі різних заключень та аналізу умов;

спеціальні — ноти, хімічні формули тощо;

20

комп’ютерні та некомп’ютерні.

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

21