- •Потужність множини. Зчисленні та незчисленні множини. Їх властивості.
- •2.Поняття моделі. Поняття інформаційної моделі. Поняття математичної моделі.
- •Приклади лінійних просторів
- •2.Алгоритм. Способи опису алгоритмів. Словесна та графічна форми подання алгоритмів.
- •1. Похідна функції однієї змінної, її геометричний та механічний зміст. Основні правила диференціювання.
- •3. Похідна складної функції.
- •1. Диференційовані функції однієї змінної, критерій диференційованості. Диференціал в точці, його геометричний зміст, застосування до наближених обчислень.
- •2. Програма. Поняття мови програмування. Поняття про середовище програмування
- •1. . Основні теореми диференціального числення. Теорема Лагранжа. Умови сталості та монотонності функції.
- •2. . Трансляція та її види: інтерпретація, компіляція. Їх особливості. Поняття системи програмування.
- •1. Екстремум функції. Необхідні умови екстремуму. Достатні умови екстремуму.
- •1. Максимум і мінімум функції в точці.
- •2. Основні принципи технології структурного програмування. Метод покрокової деталізації.
- •1. Структурне програмування
- •1.1. Принцип модульності
- •1. Первісна функція та неозначений інтеграл. Інтегрування підстановкою та частинами.
- •2. Основні принципи технології об’єктно-орієнтованого програмування. Поняття про об’єкт (клас).
- •1. Означений інтеграл. Необхідна умова інтегровності. Критерій інтегровності. Інтегровність неперервної функції.
- •Стандартні функції мови с
- •Аргументи функції
- •1. Квадровні фігури. Застосування означеного інтеграла до обчислення площ плоских фігур.
- •2. Алгоритми обробки масивів. Алгоритм послідовного пошуку. Пошук максимального (мінімального) елемента. Масиви даних
- •Одновимірні масиви (вектори)
- •1. Спрямлювані криві та їх довжини. Теорема Жордана. Обчислення довжини кривої за допомогою означеного інтеграла.
- •1. Застосування визначеного інтеграла до обчислення об’ємів тіл обертання та площ поверхонь обертання.
- •Задача про перевезення (транспортна задача)
- •1. Додатні числові ряди, властивості збіжних рядів, критерій збіжності. Теореми про порівняння рядів. Ознака Даламбера та інтегральна ознака Коші.
- •2. Метод штучного базису відшукання початкового базисного розв’язку злп. М-метод розв’язування злп.
- •1) Методи відшукання початкового базисного розв’язку
- •2) Описання м-методу розв’язування злп.
- •1Знакозмінні ряди. Ознака Лейбніца. Абсолютно і умовно збіжні ряди.
- •2. Двоїсті злп та їх властивості. Теореми двоїстості. Двоїстий симплекс-метод.
- •1. Функціональні послідовності і ряди. Збіжність, область збіжності. Рівномірна збіжність. Ознака Вейєрштраса.
- •2. Транспортна задача (тз). Властивості тз. Деякі методи відшукання початкового базисного розв’язку тз. Метод потенціалів розв’язування тз.
- •§2. Деякі властивості транспортної задачі.
- •§3. Базисні розв’язки транспортної задачі.
- •§4. Деякі методи відшукання базисного розв’язку транспортної задачі.
- •4.1. Метод північно-західного кута.
- •4.2. Метод мінімального елемента
- •§5. Метод потенціалів розв’язування транспортної задачі.
- •1. Метричні простори. Відкриті та замкнуті множини, їх властивості.
- •2. Потоки та мережі. Постановка задачі. Задача про найкоротший шлях. Метод Мінті. Задача про максимальний потік. Метод Форда-Фалкерсона.
- •3. Задача про максимальний потік. Метод Форда–Фалкерсона
- •1. Векторний добуток двох векторів, його властивості та застосування.
- •2. Поняття границі числової послідовності, її властивості. Теорема про границю монотонної числової послідовності. Теорема Больцано-Вейєрштраса
- •1.Еліпс, означення та канонічне рівняння. Дослідження форми еліпса за канонічним рівнянням.
- •Оптимальні чисті стратегії
- •§ 3. Оптимальні змішані стратегії
- •1. Означення детермінанта n-го порядку. Властивості детермінантів.
- •2. Правила суми і добутку. Розміщення, перестановки, комбінації (без повторень та з повтореннями).
- •2. Алгоритми обробки масивів. Сортування елементів масиву методом "бульбашки". Масиви даних
- •Одновимірні масиви (вектори)
- •1. Площини та прямі в просторі.
- •2. Теорема множення ймовірностей. Незалежність подій.
- •1. Поверхні другого порядку. Еліпсоїди, параболоїди, гіперболоїди, гіперболічний параболоїд.
- •Запишемо рівняння поверхні обертання, утвореної обертанням еліпса
- •Записуючи рівняння параболоїда обертання (6) у вигляді
- •На закінчення розглянемо
- •2. Формула повної ймовірності та формули Байєса.
- •1. Формула повної ймовірності та формули Байєса.
- •49.3. Матриця лінійного оператора. Приклади.
- •2. Опис рядків у мові програмування с. Операції над рядками, функції для обробки рядків Рядки
- •Функції обробки символів та рядків
- •Функції, що стосуються рядків, які розглядаються як послідовність байт.
- •Функції, що обробляють рядки
- •1. Множини та відношення. Основні види бінарних відношень. Розбиття множини на класи.
- •1. Лінійні диференціальні рівняння першого порядку та рівняння Бернуллі.
- •Рівняння в повних диференціалах
- •2. . Канонічні (нормальні) форми булевих функцій. Алгебра Жегалкіна.
- •1. Лінійні однорідні диференціальні рівняння n-го порядку із змінними коефіцієнтами. Фундаментальна система розв’язків. Детермінант Вронського. Загальний розв’язок.
- •2. Комбінаторні конфігурації. Біноміальна та поліноміальна теореми.
- •1. Розв’язування диференціальних рівнянь та їх систем.
- •2. Повнота і замкненість систем булевих функцій. Теорема (критерій) Поста.
- •1. Інтерполювання функцій многочленами Лагранжа.
- •Інтерполювання функцій многочленами Ньютона. Сплайни.
- •Скінченні різниці
- •Перша інтерполяційна формула Ньютона
- •Друга інтерполяційна формула Ньютона
- •1. Лінійна та нелінійна кореляція. Метод найменших квадратів. Побудова емпіричних формул.
- •2. . Опукле програмування. Функція Лагранжа. Теорема Куна-Таккера-1. Теорема Куна-Таккера-2. Задача опуклого квадратичного програмування. Квадратичний симплекс-метод. Задачі опуклого програмування.
- •Функція Лагранжа. Теореми Куна-Таккера.
2. Основні принципи технології об’єктно-орієнтованого програмування. Поняття про об’єкт (клас).
Проектування припускає врахування суперечливих вимог. Продуктами його є моделі, які дозволяють зрозуміти структуру майбутньої системи, збалансувати вимоги та намітити схему її застосування. Важливість побудови моделі полягає в тому, що моделювання реалізує принципи декомпозиції, абстракції та ієрархії. Кожна модель описує певну частину розглядуваної системи. Згодом на базі старих моделей будуємо нові. Моделювання дає змогу досліджувати недоліки системи в умовах, які ми задаємо самі. Зрозуміло, що не існує такого універсального методу, який приведе розробника від вимог складної програмної системи до їх виконання. Інженери-програмісти розробили десятки різноманітних методів, що мають такі спільні властивості:
умовні позначення — мова для опису кожної моделі;
Рис. 4. Моделі складної системи
інструменти — засоби, які прискорюють процес створення моделей, визначають закони їх функціонування та допомагають виявити помилки у процесі розробки .
З огляду на важливість побудови моделей під час проектування складних систем створено кілька типів таких моделей (рис. 4). Ці моделі охоплюють увесь спектр важливих конструкторських рішень при розробці складної системи. Тема 2. ОБ’ЄКТНИЙ ПІДХІД ДО МОДЕЛЮВАННЯ ІНФОРМАЦІЙНИХ СИСТЕМ
Становлення об’єктного підходу.
Елементи об’єктного підходу.
Переваги об’єктного підходу.
Об’єктно-орієнтоване моделювання.
[1; 3; 7] 1. Становлення об’єктного підходу Аналіз літературних джерел у галузі проектування та створення складних програмних комплексів [1—10] дає підстави для таких висновків. 1. Програмам притаманна складність, яка нерідко перевищує можливості людського розуму. 2. Складні структури часто набирають форми ієрархії: корисно моделювати і «типову», і «структурну» ієрархію складної системи. 3. Складні системи створюються на основі стійких проміжних форм. 4. Пізнавальна здатність людини обмежена, ми можемо розсунути її рамки, використовуючи методи декомпозиції, виділення абстракцій та створення ієрархій. 5. Складні системи можна досліджувати, концентруючи основну увагу або на об’єктах, або на процесах; доцільно розглядати систему як упорядковану сукупність об’єктів, які у процесі взаємодії забезпечують функціонування системи як єдиного цілого. 6. Об’єктно-орієнтоване моделювання — метод, який використовує об’єктну декомпозицію; об’єктно-орієнтований підхід має свою систему позначень та пропонує багатий набір логічних і фізичних моделей для проектування систем високого ступеня складності. В основу об’єктно-орієнтованого проектування (ООП) покладено об’єктний підхід. Головні принципи його такі:
• Абстрагованість
Основні
• Обмеження доступу • Модульність • Ієрархічність • Типізація • Паралелізм Додаткові • Стійкість
Типові представники мов ООП: Smaltalk, Object Pascal, С++, Clos та Ada. Основним елементом конструкції в них є модуль, до складу якого входять логічно пов’язані класи та об’єкти. Визначимо це так: якщо уявити процедури та функції у вигляді дієслів, а дані у вигляді іменників, то процедурні програми будуються із дієслів, а об’єктно-орієнтовані — з іменників. З цієї причини структура програм малої та середньої складності при ООП подається графом, а не деревом. Крім того, скорочена чи й відсутня область глобальних даних. Дані та дії організуються тепер у такий спосіб, що основою конструкції стають класи та об’єкти, а не алгоритми. Об’єктний підхід може бути здійснений також на вищих рівнях абстракції. Групи абстракцій у великих системах можуть подаватися у вигляді багатошарової структури. На кожному рівні можна виокремити групи об’єктів, які тісно взаємодіють для розв’язування задачі вищого рівня абстракції. У кожній групі ми знайдемо таку саму кількість взаємодіючих абстракцій. Методи структурного проектування мали на меті спростити процес розробки складних систем на основі алгоритмічного підходу. Методи об’єктно-орієнтованого проектування створені, у свою чергу, для допомоги розробникам, які використовують потужні виражальні засоби об’єктного чи об’єктно-орієнтованого підходу, який базується наопису класів та об’єктів. ООП відображає еволюційний процес у проектуванні, а не революційний; нова методологія не є різким відступом від минулих методів, а будується з урахуванням минулого досвіду. «В об’єктному підході акцент переноситься на конкретні характеристики фізичної та абстрактної системи, яка є предметом програмного моделювання. Об’єкти мають цілість, яку не слід порушувати. Об’єкт може лише змінювати стан, поведінку чи управління або набувати будь-якого відношення до інших об’єктів. Об’єкт має незмінні якості, але може змінювати свій стан. Наприклад, підйомник характеризується тим, що може рухатися вгору та вниз, залишаючись у межах своїх напрямних... Будь-яка модель має враховувати ці властивості підйомника, оскільки вони визначають його призначення» [3]. Об’єктно-орієнтоване програмування — це методологія програмування, яка базується на поданні програми у вигляді сукупності об’єктів, кожний із яких є реалізацією певного класу, а класи утворюють ієрархію на принципах успадкування. У цьому визначенні можна вирізнити три частини. 1. ООП використовує як елементи конструкції об’єктів, а не алгоритми. 2. Кожний об’єкт є реалізацією певного класу. 3. Класи організовані ієрархічно. Лише в разі додержання всіх перелічених щойно вимог програма буде об’єктно-оріентованою. Об’єктно-орієнтоване проектування — це методологія проектування, яка поєднує в собі процес об’єктної декомпозиції та прийоми подання як логічної і фізичної, так і статистичної і динамічної моделей проектованої системи. У цьому визначенні є дві важливі частини: 1) ООП веде до об’єктно-орієнтованої декомпозиції; 2) використовуються різні прийоми подання моделей, які відображають логічну (структури класів та об’єктів) та фізичну (архітектура моделей та процесів) структури системи.
Класи і методи в мові C++
Класи С++ пропонують розширення приречених системних типів. Клас - це визначуваний користувачем тип. Кожен клас представляє унікальну множину об'єктів і операцій над ними (методів). Клас надає засоби для створення, маніпулювання і знищення таких об'єктів.
Що є хорошим класом? Щось, що має невелику і добре визначену множину дій. Щось, що можна розглядати як "чорний ящик", яким маніпулюють тільки за допомогою цієї множини дій. Щось, чиє фактичне уявлення можна будь-яким мислимим способом змінити, не вплинувши на спосіб використовування множини дій. Щось, чого можна хотіти мати більше за одне.
сlass ім'я класу{список членів};
Опис класу починається з ключового слова class. Список членів класу визначає власні елементи класу.
При описі членів класів можлива вказівка атрибутів управління доступом до елементів класів. Такими атрибутами є:
public: членів класу видно іззовні класу
private: відповідні елементи можуть використовуватися тільки усередині класу
protected: відповідні елементи можуть використовуватися тільки усередині класу
За умовчанням елементи класу мають тип private. Вказаний в описі специфікатор доступу розповсюджується на всі подальші визначення, поки не зустрінеться інший специфікатор.
Оскільки користувача часто цікавить відкрита частина класу, то в описі вона повинна йти першою.
Функція card(suit,int)в описі класу є унікальною – вона має теж ім'я, що і клас і не має значення, що повертається. Ця функція називається конструктором. Вона використовується при ініціалізації створюваних екземплярів класу. Методи draw і halfdraw описані в стилі прототипу функції.
Лістинг 1. Описи класу card на C++
enum suits {diamond, club, heart, spade};
enum colors {red, black};
class card {
public:
card(suits,int);
// доступ до атрибутів
colors color ();
bool faceUp ();
int rank ();
suits suit ();
// виконувані дії
void draw (window &,int x, int у);
void halfdraw (window &,int x, int у);
void flip ();
private:
bool faceup;
int r; // ранг
suits s; // масть
};
Білет8