
- •Препроцессор. Директивы препроцессора.
- •Описание, определение и вызов функций. Параметры по умолчанию. Встроенные функции.
- •Особенности работы с указателями разных типов в языке с.
- •Модели памяти. Функции работы с динамической памятью.
- •Шаблоны функций. Перегружаемые функции.
- •Организация ввода-вывода.
- •Разработка надежного программного обеспечения. Обработка исключительных ситуаций.
- •13. Особенности программирования для ос Windows.
- •14. Библиотека динамической компоновки. Области применения. Разработка и использование dll-библиотек.
- •15. Объектно-ориентированное программирование. Классы. Определение спецификации доступа.
- •16. Объектно-ориентированное программирование. Полиморфизм.
- •17. Ооп. Наследование. Области видимости для классов.
- •18. Ооп. Классы. Дружественные функции.
- •19. Понятие компоненты. Типы компонент. Свойства. Контейнерные компоненты.
- •20. Организация процесса конструирования по. Типы по. Стратегии конструирования.
- •21. Понятие жизненного цикла. Модели жизненного цикла.
- •22. Особенности процесса синтеза программных систем.
- •23. Разработка структуры программы. Модульное программирование. Критерии оценки программ.
- •24. Проектирование программ. Методы нисходящего и восходящего проектирования.
- •27. Классические методы анализа проектирования. Метод Джексона.
- •28. Структурные методы проектирования. Sadt.
- •29. Структурные методы проектирования программных систем. Использование dfd и er диаграмм.
- •30. Case-системы. Классификация.
- •31. Методы контроля и тестирования по. Статический и динамический контроль. Функциональное тестирование.
- •32. Методы контроля и тестирования по. Структурное тестирование. Многомодульное тестирование.
- •33. Разработка интерфейса пользователя. Структуры диалога. Критерии выбора структуры диалога.
- •34. Разработка интерфейса пользователя. Описание диалога. Использование сетей переходов для представления структуры диалога. Правила свёртки сети переходов.
- •40. Критерии оценки качества по. Документирование и оценка качества в соответствии с iso 9000.
- •41. Основные понятия сом-технологии.
1. Структура программы на языке С++.
Программа на С++ состоит из трех основных блоков.
1 блок: блок директив препроцессора – содержит набор строк, начинающихся с символа # и обеспечивающих предварительную подготовку файла перед компиляцией
2 блок: блок объявлений - содержит определение глобальных переменных, а также тел функций.
3 блок: основной блок программы или основная функция main.
В С++ определены следующие типы данных:
Скалярные типы данных:
арифметические или основные (целые и плавающие);
указатели.
Составные типы (массивы, структуры, перечисления, смеси).
Скалярные арифметические:
целочисленные:
char, int, short, long.
сhar –занимает 1 байт от –128 до 128
int – занимает min – 2 байта, max – тип процессора
short – 2 байта
long – 4 байта
В Си есть понятие беззнаковое целое число (т.е. нулевой бит интерпретируется, как часть числа; добавляется unsigned) и целое число со знаком.
вещественные, плавающие:
float – 4 байта, 1 бит - знаковый, байт - порядок, 23 бита – мантисса
double – 8 байт, 1 бит – знаковый, 11 бит – порядок, 52 бита – мантисса
longdouble – 10 байт – распределение аналогичное double
double = longfloat
void – неопределенный тип, позволяет отложить спецификацию типа до момента применения переменной в программе.
Указатели – это адрес памяти, выделенный для переменной или функции. Формат определения указателей:
Спецификатор типа * [модификатор] идентификатор;
Спецификатор типа задает тип объекта из числа основных структур или смесей.
Указатель типа void естественно может указывать на переменную любого типа.
Модификатор - это необязательный параметр, который может быть равен сonst, far, near, huge. Определяет размер переменной в зависимости от модели памяти, для которой компилируется программа. int * x;
Составные типы.
Массив:
Спецификатор типа описатель [количественная величина] идентификатор;
Спецификатор типа задает тип переменной.
Описатель задает имя переменной.
При наличии константного выражения задается количество . Количество может быть опущено
если при объявлении массив инициализируется ,
если массив объявлен, как формальный параметр,
если массив объявлен, как ссылка на массив явно определенный в другом файле.
Нумерация в массиве начинается с нуля.
Перечисления.
Данный тип используется, если переменная может принимать одно значение из определенного множества. Используется ключевое слово enum
Enum day {Mon, Tue, Wen,…} day_of_week;
Структуры применяются для объединения разных типов.
Struct [<имя поля>] {<тип> <имя поля>[,} переменные
Смеси – это тип данных, хранить в одной и той же памяти значения разных типов, но не одновременно. Для описания смеси используется следующая синтаксическая структура:
Union[<имя.типа.смеси>]
{<тип>.<имя поля>[,..;]}
Препроцессор. Директивы препроцессора.
Отличительной особенностью языка С++ является выполнение препроцессирования перед компиляцией. Суть препроцессирования заключается в просмотре исходного файла с подготовкой его к компиляции. Управлять процессом можно с помощью директив препроцессора, причем директивы действуют от места их описания до конца исходного файла. Таким образом, директива может быть вставлена в любом месте программы. Согласно стандарту языка директива начинается с решетки, после которой следует имя директивы.
# include «имя файла.»
# include <имя файла>
В 1- м случае файл ищется в рабочем каталоге, а во 2-м в каталоге, определенном средой программирования. Данная директива позволяет включить в исходный файл содержимое другого файла.
1.define имя макро <тело>
2.define имя макро (формирование аргумента) <тело>
Позволяет описать макро или замену. При использовании данной директивы, когда на этапе препроцессирования встречается имя макро, оно заменяется последовательностью операторов, указанных в теле макро.
# define Pi 3.14156
Макроподстановка чувствительна к последовательности выполнения операций, т.к. тело макро рассматривается как некоторое строчное выражение
# define Mul(a,b) (a)*(b)
c=Mul(x+3, y-2) -> (x+3)*(y-2)
При использовании директивы define можно использовать директиву отмены текущего макроса с текущей точки программы. Для этого используется директива #undef .
В директивах препроцессора имеется группа директив, которые используются для управления, формирования исходного файла.
Директива условной компиляции состоит из набора директив.
#ifdef - определяет условие выполнения компиляции (условие – идентификатор, являющийся константой)
# elif – позволяет задать альтернативный идентификатор, который также целая константа.
# else – определяет альтернативную ветвь предыдущего условия.
# endif – завершает блок условной компиляции.
# операция образования строки
Если знак # предшествует формальному параметру макро, то соответствующий ему фактический параметр будет заключаться в кавычки и считаться строковым литералом. Все пробелы, предшествующие первой лексеме и следующие за последней игнорируются.
#define stroka(x) printf(#x”\n”)
stroka(‘Данные о продажах’)
* Директива формирования сообщения об ошибке
#error сообщение
Директива error позволяет направить в стандартный поток ошибок сообщения, указанные в теле директивы. Используется для управления процессом компиляции на этапе отладки. После вывода сообщения компиляция прекращается, строка сообщения выводится на экран.
*
#pragma
Перед выполнением препроцессирования компилятор просматривает набор поддерживаемых pragm. В отличие от остальных директив данная директива используется на этапе компиляции.
Часто используются прагма #exit и прагма #startup.
#pragma startup function name
Данная прагма определяет функции, которые будут выполняться при запуске программы до передачи управления функции main.
#exit
Определяет функцию, которая будет выполняться при завершении программы до передачи управления ОС.