- •7)Понятие структурного программирования. Базовые конструкции структурного программирования. Оператор «выражения».
- •8)Операторы ветвления. Условный оператор if. Оператор switch.
- •10)Операторы передачи управления. Оператор goto. Оператор break. Оператор continue. Оператор return.
- •11) Указатели. Инициализация указателей. Операции с указателями. Ссылки.
- •12)Массивы. Динамические массивы. Строки.
- •13)Типы данных, определяемые пользователем. Переименование типов. Перечисление.
- •14)Типы данных, определяемые пользователем. Структуры. Битовые поля. Объединения.
- •15)Функции. Объявление и определение функций.
- •16)Способы обмена данными между функциями. Глобальные переменные. Возвращаемое значение. Параметры функции. Передача массивов в качестве параметров. Параметры со значениями по умолчанию.
- •17)Рекурсивные функции. Функция main().
- •18)Перегрузка функций.
- •19)Шаблоны функции.
- •20)Директивы препроцессора. Директива #include. Директива #define. Директива #undef.
- •21)Директива препроцессора. Директивы условной компиляции.
- •22)Основные свойства объектно-ориентированного программирования. Понятие класса.
- •23)Классы. Описание класса. Описание объекта. Константные методы. Указатель this.
- •24)Конструкторы. Конструктор копирования. Статические элементы класса.
- •25)Деструкторы. Дружественные функции и классы.
- •26)Перегрузка операций. Перегрузка бинарных и унарных операций.
- •27)Перегрузка операций. Перегрузка операции присваивания. Перегрузка операции приведения типа. Перегрузка операции индексирования.
- •28)Наследование. Ключи доступа к элементам базового класса. Простое наследование.
- •29)Виртуальные методы. Механизм позднего связывания.
- •30)Абстрактные классы. Множественное наследование.
- •31)Шаблоны классов. Создание шаблонов. Использование шаблонов класса.
- •35)Форматирование данных при вводе - выводе в поток. Флаги и манипуляторы.
- •38)Модель программирования для os Windows. Механизм обработки сообщений в Windows. Группы сообщений.
20)Директивы препроцессора. Директива #include. Директива #define. Директива #undef.
Препроцессором называется первая фаза компилятора, на которой исходный текст программы преобразуется в соответствии со специальными инструкциями, содержащимися в тексте программы.
- инструкции препроцессора называются директивами
- директива препроцессора должна начинаться с символа #
Директива #include:
- директива #include <имя файла> вставляет содержимое указанного файла в ту точку исходного файла, где она записана
- #include “имя файла” – поиск в каталоге, содержащем исходный файл
- заголовочные файлы обычно имеют расширение .h и могут содержать:
а) определения типов, констант, встроенных функций, шаблонов, перечислений
б) объявления функций, данных, имен, шаблонов
в) пространства имен
г) директивы препроцессора
д) комментарии
Директива #define:
- директива #define определяет подстановку в тексте программы
- используется для определения:
а) символических констант
#define имя текст_подстановки
б) макросов
#define имя(параметр) текст_подстановки
в) символов, управляющих условной компиляцией
#define имя
Примеры:
#define VERSION1
#define VASIA “Василий Иванович”
#define MAX(x, y) ((x)>(y)?(x):(y))
#define MUX
Использование макросов:
- вызов макроса
y=MAX(sum1, sum2) будет заменен на
y=((sum1)>(sum2)?(sum1):(sum2))
- отсутствие круглых скобок может привести к неправильному порядку вычисления
неправильный вариант:
#define sqr(x) (x*x)
sqr(y+1) (y+1*y+1)
правильный вариант:
#define sqr(x) ((x)*(x))
sqr(y+1) ((y+1)*(y+1))
Директива #undef:
#undef имя
- удаляет определение символа, введенного директивой #define
21)Директива препроцессора. Директивы условной компиляции.
Директивы условной компиляции #if, #ifdef, #ifndef применяются для того, чтобы исключить компиляцию отдельных частей программы.
формат директивы #if:
#if константное_выражение
[#elif константное_выражение…]
[#elif константное_выражение…]
[#else…]
#endif
пример #if:
#if VERSION==1
#define INCFILE “vers1.h”
#elif VERSION==2
#define INCFILE “vers2.h”
#else
#define INCFILE “versN.h”
#endif
#include INCFILE
В константных выражениях может использоваться проверка, определена ли константа, с помощью defined(имя_константы):
#if defined(MUX)
……
#endif #ifdef и #ifndefпозволяют управлять компиляцией в зависимости от того, определен ли с помощью директивы #define указанный в них символ:
#ifdef символ //расположенный ниже код компилируется, если символ определен
#endif
#ifndef символ //расположенный ниже код не компилируется, если символ не определен
#endif
22)Основные свойства объектно-ориентированного программирования. Понятие класса.
Повышение степени абстракции.
Методы повышения уровня абстракции программ:
1. Использование функций
2. Описание собственных типов данных
3. Объединение в модули описаний типов данных и функций, предназначенных для работы с ними и сокрытием от пользователя такого модуля деталей его реализации.
Объектно-ориентированное программирование (ООП) вводит специальное понятие "класс":
- в классе структуры данных и функции для их обработки могут объединяться
- класс можно использовать только через его интерфейс, а детали реализации для пользователя скрыты.
Идея классов отражает строение объектов реального мира:
- каждый реальный объект или процесс обладают свойствами и поведением.
- в классе свойства реального объекта представляются в виде данных, а поведение описывают с помощью функций.
Основные свойства ООП:
1. Инкарнация (сокрытие информации).
Объединение данных с функциями их обработки в сочетании с сокрытием ненужной для использования этих данных информации.
2. Наследование.
Возможность создания иерархии классов, когда потомки наследуют все свойства своих предков, могут их изменять и добавлять новые.
3. Полиморфизм.
Возможность использовать в различных классах иерархии одно имя для обозначения сходных по смыслу действий и выбирать требуемое действие во время выполнения программы.
