- •10. Константы. Правила построения и создания своих собственных (перечислимых) констант.
- •11. Литерные константы (видимые). Литерные константы esc-последовательности. Расширенная таблица ascii. Пример программы.
- •12. Строковые константы. Особенности и примеры их применения.
- •13. Числовые целые константы. Особенности и примеры их применения.
- •14. Числовые вещественные константы. Особенности и примеры их применения.
- •15. Операция присваивания. Пример линейной программы.
- •16. Синтаксис и семантика операторов выражения, перехода и возврата, ветвления и выбора. Пример программы ветвления.
- •17. Синтаксис и семантика операторов цикла, прерывания и продолжения. Пример циклической программы.
- •18. Классификация типов данных. Основные и производные типы данных. Правила преобразования арифметических типов: по умолчанию и явное.
- •19. Арифметические операции и их приоритеты.
- •20. Логические операции. Синтаксис и семантика. Условная операция.
- •21. Виды выражений. Приоритеты операций.
- •22. Символьный тип данных. Операции над данными символьного типа.
- •23. Одномерные массивы. Индексация выражения. Массив как параметр функций.
- •24. Многомерные массивы. Индексация выражения. Массив как параметр функций.
- •25. Массивы с элементами типа char и строковые массивы.
- •26. Указатели: понятие, синтаксис и семантика объявления. Операция выделения значения. Адрес-константа. Операции адресации, адресная арифметика.
- •27. Взаимодействие между массивами и указателями. Динамические массивы. Операции выделения и освобождения памяти.
- •28. Тип данных «структура». Объявление, синтаксис и особенности использования.
- •29. Динамические типы данных. Список. Основные операции над элементами списка. Примеры.
- •30. Динамические типы данных. Очередь. Основные операции над элементами очереди. Примеры.
- •31. Динамические типы данных. Стек. Основные операции над элементами стека. Примеры.
- •32. Динамические типы данных. Бинарное сбалансированное дерево. Правила обхода. Основные операции над элементами. Примеры.
- •33. Классы памяти. Точки описания переменных. Автоматическая, регистровая, внешняя, статическая память. Области объявления и видимости имен переменных. Примеры.
- •34. Ссылки: понятие, синтаксис и семантика объявления. Примеры использования.
- •35. Синтаксис, семантика и прагматика функций. Указатели функций. Примеры.
- •36. Механизм передачи значений между параметрами и аргументами функции. Примеры.
- •37. Рекурсивные функции. Примеры явной и косвенной рекурсии.
- •38. Перегрузка функций. Шаблоны функций. Примеры.
- •39. Препроцессор. Команды препроцессора. Использование макроподстановок и макроимен. Команды условной компиляции.
- •40. Объектно-ориентированное программирование. Инкапсуляция, наследование, полиморфизм.
- •41. Понятие объекта и класса. Данные и методы. Инкапсуляция данных и методов класса.
- •42. Тип данных class. Статусы доступа к данным. Указатель this. Конструкторы и деструкторы.
- •43. Дружественные функции, методы, классы. Статические члены класса.
- •44 Наследование классов и производные классы.
39. Препроцессор. Команды препроцессора. Использование макроподстановок и макроимен. Команды условной компиляции.
Препроцессором называется первая фаза компилятора. Инструкции препроцессора называются директивами. Они должны начинаться с символа #, перед которым в строке могут находиться только пробельные символы.
Препроцессор принимает данные на входе и выдает данные, предназначенные для входа другой программы. Препроцессор стартует до начала компиляции. Команды, отданные препроцессору, позволяют программисту определить переменные, совершить замену текста и проверить простые условия.
Директивы управляют поведением препроцессора. Каждая директива занимает одну строку и имеет следующий формат:
символ #
препроцессорная инструкция (одна из define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, warning, pragma)
аргументы (в зависимости от инструкции)
Условная компиляция применяется, когда в зависимости от значения различных макросов, нужно компилировать, или нет, тот или иной кусок кода, или установить другие макросы.
Директивы условной компиляции #if, #ifdef и #ifndef применяются для того, чтобы исключить компиляцию отдельных частей программы. Это бывает полезно при отладке или, например, при поддержке нескольких версий программы для различных платформ.
40. Объектно-ориентированное программирование. Инкапсуляция, наследование, полиморфизм.
Шаги к повышению абстракции:
использование функций;
описание собственных типов данных;
объединение в модули
Все три описанных выше метода повышения абстракции преследуют цель упростить структуру программы, то есть представить ее в виде меньшего количества более крупных блоков и минимизировать связи между ними.
Введение понятия класса является естественным развитием идей модульности. В классе структуры данных и функции их обработки объединяются. Клаcc используется только через его интерфейс — детали реализации для пользователя класса несущественны.
Класс является типом данных определяемым пользователем. В классе задаются свойства и поведение какого-либо предмета или процесса в виде полей данных (аналогично структуре) и функций для работы с ними.
Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией (encapsulation). В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.
Наследование — это возможность создания иерархии классов, когда потомки наследуют все свойства своих предков, могут их изменять и добавлять новые. Свойства при наследовании повторно не описываются, что сокращает объем программы.
Третьим китом, на котором стоит ООП, является полиморфизм — возможность использовать в различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать требуемое действие во время выполнения программы.