- •1. Технологии программирования.
- •1.1 Введение.
- •1.2 Модульное программирование.
- •1.3 Нисходящее программирование.
- •1.4 Структурное программирование.
- •1.5 Понятия объекта, класса объектов.
- •1.6 Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.
- •2.1.1 Общие сведения о программах, лексемах и алфавите языка
- •2.1.3. Идентификаторы и служебные слова
- •3. Константы: целые, вещественные (с плавающей точкой), перечислимые, символьные (литерные), строковые (строки или литерные строки)
- •4. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций.
- •4.1 Знаки операций
- •4.2 Унарные операции
- •4.3 Бинарные операции.
- •4.4 Приоритеты операций
- •5. Переменные. Определения и описания. Спецификатор typedef.
- •5.1 Переменные. Определения и описания.
- •5.2 Класс памяти
- •6. Базовые и производные типы данных. Массивы. Указатели, ссылки и адреса. Структуры. Поля битов. Объединения
- •6.1 Массивы
- •6.2 Указатели, ссылки и адреса объектов
- •6.3 Структуры
- •6.4 Поля битов
- •6.5 Объединения
- •7. Операторы
- •7.1 Оператор выражение
- •7.2 Пустой оператор
- •7.3 Составной оператор
- •7.4 Оператор if
- •If (выражение) оператор-1; [else оператор-2;]
- •7.5 Оператор switch
- •7.6 Оператор break
- •7.7 Оператор for
- •7.8 Оператор while
- •7.9 Оператор do while
- •7.10 Оператор continue
- •7.11 Оператор return
- •7.12 Оператор goto
- •8. Функции
- •8.1 Определения, описания и вызовы функций
- •8.2 Начальные (умалчиваемые) значения параметров.
- •8.3 Функции с переменным количеством параметров
- •8.4 Перегрузка функций.
- •8.5 Ссылки и параметры-ссылки.
- •8.6 Шаблоны функций.
- •Основы ооп
- •9.1 Тип данных - класс.
- •9.2 Доступность компонентов класса
- •9.3 Конструктор и деструктор
- •9.4 Компоненты-данные и компоненты-функции. Статические и константные компоненты класса
- •10. Указатели на компоненты класса
- •10.1 Указатели на компоненты- данные.
- •10.2 Указатели на компоненты- функции.
- •10.3 Указатель this
- •11. Друзья классов
- •11.1 Дружественная функция
- •11.2 Дружественный класс
- •12. Наследование
- •12.1 Определение производного класса.
- •12.2 Конструкторы и деструкторы производных классов
- •13. Полиморфизм
- •13.1 Виртуальные функции.
- •13.2 Абстрактные классы
- •14. Шаблоны классов
- •15. Перегрузка операций
- •15.1 Общие сведения о перегрузке стандартных операций
- •15.2 Перегрузка унарных операций
- •15.3 Перегрузка бинарных операций
- •15.5 Перегрузка операции вызова функции
- •15.6 Перегрузка операции присваивания
- •15.7 Основные правила перегрузки операций.
- •16. Обработка исключительных ситуаций
- •16.1 Операторы try, throw, catch
- •16.2 Универсальный обработчик исключений
- •17. Структура Windows-приложения
- •17.2 Структура каркасного Windows-приложения
- •17.3 Главная функция WinMain()
- •17.4 Сообщения Windows
- •17.5 Класс окна. Регистрация и его характеристики
- •17.6 Создание и показ окна
- •17.7 Цикл обработки сообщений
- •17.8 Оконная функция
- •17.9 Завершение выполнения приложения
- •18. Препроцессор
- •18.1 Общие пpеобpазования
- •18.2 Директивы Препроцессора
- •18.3 Подключаемые файлы
- •18.4. Директива '#include'.
- •18.5 Однократно подключаемые файлы
- •18.6 Макросы
- •18.7 Стрингификация
- •18.8 Объединение
- •18.9 Удаление макросов
- •18.10 Условия
- •19. Разработка Windows приложений с использованием библиотеки классов mfc (microsoft foundation class library)
- •19.1 Некоторые сведения о программировании Windows-приложений
- •19.2 Преимущества использования mfc
- •19.4 Библиотека mfc
- •20. Простейшие mfc-приложения
- •20.1 Приложение без главного окна
- •20.2 Приложение с главным окном
- •20.3 Обработка окном сообщений
ПРОГРАММИРОВАНИЕ (2 семестр)
1. Технологии программирования. 2
1.1 Введение. 2
1.2 Модульное программирование. 3
1.3 Нисходящее программирование. 4
1.4 Структурное программирование. 5
1.5 Понятия объекта, класса объектов. 5
1.6 Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм. 6
2. Основы программирования на языке С++ 7
2.1. Лексические основы языка С++. Общие сведения о программах, лексемах и алфавите языка. Идентификаторы и служебные слова. 8
2.1.1 Общие сведения о программах, лексемах и алфавите языка 8
2.1.2. Алфавит и лексемы языка СИ++. 9
2.1.3. Идентификаторы и служебные слова 9
3. Константы: целые, вещественные (с плавающей точкой), перечислимые, символьные (литерные), строковые (строки или литерные строки) 10
4. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций. 13
4.1 Знаки операций 13
4.2 Унарные операции 13
4.3 Бинарные операции. 14
4.4 Приоритеты операций 19
5. Переменные. Определения и описания. Спецификатор typedef. 20
5.1 Переменные. Определения и описания. 20
5.2 Класс памяти 22
6. Базовые и производные типы данных. Массивы. Указатели, ссылки и адреса. Структуры. Поля битов. Объединения 23
6.1 Массивы 23
6.2 Указатели, ссылки и адреса объектов 23
6.3 Структуры 24
6.4 Поля битов 25
6.5 Объединения 26
7. Операторы 27
7.1 Оператор выражение 27
7.2 Пустой оператор 27
7.3 Составной оператор 28
7.4 Оператор if 28
7.5 Оператор switch 29
7.6 Оператор break 31
7.7 Оператор for 31
7.8 Оператор while 33
7.9 Оператор do while 33
7.10 Оператор continue 34
7.11 Оператор return 34
7.12 Оператор goto 35
8. Функции 35
8.1 Определения, описания и вызовы функций 35
8.2 Начальные (умалчиваемые) значения параметров. 38
8.3 Функции с переменным количеством параметров 38
8.4 Перегрузка функций. 40
8.5 Ссылки и параметры-ссылки. 41
8.6 Шаблоны функций. 43
Основы ООП 47
9. Классы С++ 47
9.1 Тип данных - класс. 47
9.2 Доступность компонентов класса 49
9.3 Конструктор и деструктор 50
9.4 Компоненты-данные и компоненты-функции. Статические и константные компоненты класса 55
10. Указатели на компоненты класса 57
10.1 Указатели на компоненты- данные. 57
10.2 Указатели на компоненты- функции. 58
10.3 Указатель this 59
11. Друзья классов 60
11.1 Дружественная функция 60
11.2 Дружественный класс 61
12. Наследование 62
12.1 Определение производного класса. 62
12.2 Конструкторы и деструкторы производных классов 65
13. Полиморфизм 66
13.1 Виртуальные функции. 66
13.2 Абстрактные классы 67
14. Шаблоны классов 71
15. Перегрузка операций 73
15.1 Общие сведения о перегрузке стандартных операций 73
15.2 Перегрузка унарных операций 74
15.3 Перегрузка бинарных операций 75
15.4 Перегрузка операций ++ и --. 76
15.5 Перегрузка операции вызова функции 76
15.6 Перегрузка операции присваивания 77
15.7 Основные правила перегрузки операций. 79
16. Обработка исключительных ситуаций 80
16.1 Операторы try, throw, catch 80
16.2 Универсальный обработчик исключений 82
17. Структура Windows-приложения 83
17.1 Разработка Windows – приложений на языке С++ 83
17.2 Структура каркасного Windows-приложения 84
17.3 Главная функция WinMain() 87
17.4 Сообщения Windows 88
17.5 Класс окна. Регистрация и его характеристики 91
17.6 Создание и показ окна 93
17.7 Цикл обработки сообщений 96
17.8 Оконная функция 97
17.9 Завершение выполнения приложения 99
18. Препроцессор 99
18.1 Общие пpеобpазования 100
18.2 Директивы Препроцессора 100
18.3 Подключаемые файлы 100
18.4. Директива '#include'. 101
18.5 Однократно подключаемые файлы 101
18.6 Макросы 102
18.7 Стрингификация 104
18.8 Объединение 105
18.9 Удаление макросов 106
18.10 Условия 106
19. Разработка Windows приложений с использованием библиотеки классов MFC (microsoft foundation class library) 109
19.1 Некоторые сведения о программировании Windows-приложений 109
19.2 Преимущества использования MFC 113
19.4 Библиотека MFC 114
20. Простейшие MFC-приложения 120
20.1 Приложение без главного окна 120
20.2 Приложение с главным окном 122
20.3 Обработка окном сообщений 124
1. Технологии программирования.
1.1 Введение.
При изучении объектно-ориентированного программирования (ООП) наибольшей проблемой является использование новой терминологии и понимание нового подхода к решению старых задач - новой технологии программирования. Определения новых терминов и характеристики методов программирования составляют содержание данной темы.
Как в любом виде деятельности в программировании имеется своя технология: - это знания, правила, навыки и инструменты, позволяющие получать гарантированный качественный результат. Но само по себе соблюдение ряда правил не дает гарантию качества результата. Это объясняется спецификой программирования. Во-первых, это не наука, где знание какой-либо формулы позволяет однозначно решить задачу, подставив в нее исходные данные и получив результат. Во-вторых, эти правила необходимо соблюдать не столько на бумаге, сколько в голове. То есть технология программирования - это скорее способ организации процесса обдумывания программы, нежели ее записи. Из сказанного следует, что если пишущий программу - мыслит, то он уже придерживается какой-то технологии программирования, даже не подозревая об этом. Простейший метод заключается в написании программы сразу от начала до конца, без использования каких-либо общих принципов.
Рассмотрим наиболее известные из технологий:
метод "северо-западного" угла (имеется в виду лист бумаги или экран дисплея). Программа пишется сразу от начала до конца, без использования каких-либо общих принципов;
технология структурного программирования, в ней предполагается придерживаться принципов модульности, нисходящего и пошагового проектирования программ, одновременного проектирования программ и структур данных.
технология объектного программирования: связана с использованием при проектировании программы понятий объектов и их классов.
Парадигма программирования.
Проблема "Что первично - курица или яйцо?" применительно к программированию звучит как парадигма: "Что первично: алгоритм (процедура, функция) или обрабатываемые им данные". В традиционной технологии программирования взаимоотношения процедуры - данные имеют более-менее свободный характер, причем процедуры (функции) являются ведущими в этой связке: как правило, функция вызывает функцию, передавая данные друг - другу по цепочке. Соответственно, технология структурного проектирования программ прежде всего уделяет внимание разработке алгоритма.
В технологии ООП взаимоотношения данных и алгоритма имеют более регулярный характер: во-первых, класс (базовое понятие этой технологии) объединяет в себе данные (структурированная переменная) и методы (функции). Во-вторых, схема взаимодействия функций и данных принципиально иная. Метод (функция), вызываемый для одного объекта, как правило, не вызывает другую функцию непосредственно. Для начала он должен иметь доступ к другому объекту (создать, получить указатель, использовать внутренний объект в текущем и т.д.), после чего он уже может вызвать для него один из известных методов. Таким образом, структура программы определяется взаимодействием объектов различных классов между собой. Как правило, имеет место иерархия классов, а технология ООП иначе может быть названа как программирование "от класса к классу".