
- •1. Типи знань і методи їх представлення.
- •2. Парадигми імперативного стилю. Підтримка в мовах програмування. Парадигма процедурності.
- •3. Парадигма модульности (локализации).
- •4. Парадигма атд.
- •5. Парадигма ооп.
- •7. Ефективний доступ до членів класу. Дружні функції та дружні класи.
- •8. Конструкторы и деструкторы.
- •9. Инициализация полей класса. Статические члены класса.
- •10. Наследование классов. Конструкторы базового класса.
- •11. Обмеження доступу до базового класу.
- •12. Множинне наслідування.
- •13. Виртуальные базовые классы.
- •14. Конкретные и абстрактные типы. Виртуальные функции.
- •15. Виртуальные деструкторы и «витруальные» конструкторы. Клонирование.
- •16. Посилання. Ініціалізація, використання, порівняння з покажчиками.
- •17. Перевантаження функцій.
- •18. Перевантаження унарних операцій.
- •19. Перевантаження бінарних операцій.
- •20. Параметризація типів за допомогою шаблонів.
- •21. Параметризація функцій за допомогою шаблонів.
- •22. Перетворення за допомогою конструкторів. Обмеження.
- •23. Перетворення за допомогою перетворюючих функцій.
- •24. Область видимости.
- •25. Пространства имен. Директива using.
- •27. Потоки. Віртуальні операції введення та виведення.
- •29. Узагальнені алгоритми та бібліотека стандартних шаблонів. Ітератори.
1. Типи знань і методи їх представлення.
Алгоритм (метод решения) + структуры данных (представление знаний) = Программы.
Типы знаний:
1. Объекты и их свойства. Объединение свойств в объекты. Анализ, проэктирование, программирование – 3 составные части программирования. Пример: type T=record h:THeight; … end;
2. События (факты). Событие – это факт участия объекта в некоторой деятельности (может отображаться переменной логического типа). var IsBeatenBy:boolean;
3. Процессы (процедуры) – знания про то, как одни объекты превращаются в другие (дерево – доска, доска – стол). procedure() begin…end;
4. Метазнания – знания про знания, или знания про то, как пользоваться знаниями.
Методы представления знаний:
Нужно провести формальное доказательство правильности программ. Решение этой задачи требует описания я/п таким образом, чтобы этот я/п совпадал с языком, на котором проводится доказательство правильности программы. Знание - формальное описание семантики языка программирования.
1. Математическая логика. Представление с помощью предикатов.
2. Продуктивные системы. Все знания – как список продукции: условие – действие. Например – Пролог. if…then, if … then.
3. Фреймы (frame – рамка) – капсула, кот содержит в себе свойства объекта и методы обработки. Возможность наследовать свойства от одного фрейма к другому. С++ - классы.
4. Семантические сети – графическая форма представления отношения между объектами. Например орграф, вершины которого – объекты, понятия, ситуации, действия, дуги – свойства или элементарные отношения между объектами.
2. Парадигми імперативного стилю. Підтримка в мовах програмування. Парадигма процедурності.
Парадигма – способ, метод мышления, который используется в решении целого класса задач.
1. Парадигма алгоритмизации (50-60)
2. Локализации (модульности) (60-70)
3. Абстрактных типов данных (АТД) (70-80)
4. ООП (80...)
Язык программирования поддерживает стиль программирования, если в нем присутствуют средства, которые делают удобным использование этого стиля. Я/п не поддерживает технику пр-ния, если для написания соотв пр-мы требуются чрезмерные усилия либо мастерство. Такой язык просто предоставляет возможности для использования данной техники.
Паскаль – структурное программирование
Фортран – модульное.
Язык программирования поддерживает парадигму, если она поддерживает соответствующий стиль и позволяет контролировать неумышленные отклонения от парадигмы в момент компиляции и/или выполнения. Например С++ - контроль (соответствие) типов.
Парадигма алгоритмизации (процедурности).
Акцент делается на обработке – алгоритме, неорбходимом для выполнения требуемых вычислений. Языки поддерживают эту парадигму, предоставляя средства для передачи аргументов функциям (процедуры, подпрограммы, макросы, ... ) и возврата значений из функций.
Задачи: Мало данных, много алгоритмов, разбивание задачи на подзадачи: разветвление, циклы, последовательность.
Мотив возникновения парадигмы: необходимость декомпозиции алгоритмов, которые возникают в очень сложных алгоритмических задачах.
Языковые средства: 1. Процедуры с механизмами их вызова, передачи и возвращения параметров. 2. Конструкции структурного программирования: последовательность , разветвления, циклы.
Языки: Алгол 60(язык для записи алгоритмов), Паскаль 68-70, Си, Си++, Пролог, Бейсик, FoxPro, Фортран. Приклад: double sqrt (double x) {-------- return resalt;} вызов: y=sqrt(z);
Девиз: Используйте наилучшие алгоритмы, декомпозицию и задачи лучше делать в виде процедур и конструкций структурного программирования. Разделяй и властвуй (алгоритм отделяется от данных).