- •Препроцессор. Директивы препроцессора.
- •Описание, определение и вызов функций. Параметры по умолчанию. Встроенные функции.
- •Особенности работы с указателями разных типов в языке с.
- •Модели памяти. Функции работы с динамической памятью.
- •Шаблоны функций. Перегружаемые функции.
- •Организация ввода-вывода.
- •Разработка надежного программного обеспечения. Обработка исключительных ситуаций.
- •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. Основные понятия сом-технологии.
Описание, определение и вызов функций. Параметры по умолчанию. Встроенные функции.
Выделяют объявление, описание и вызов функции. Блок объявления включает в себя: указания типа возвращаемого значения, имени функции и набора формальных параметров. Данный блок используется для указания компилятору о том, что описание функции будет выполнено ниже, либо в других файлах или модулях. Описание функции включает само тело функции. При вызове функции указывается ее имя с подстановкой фактических параметров. Передача параметров осуществляется через стек, что позволяет делать их локальными переменными внутри функций. Для того, чтобы функция могла изменять значения внешних по отношению к ней параметров, необходимо использовать адреса посредством указателей или ссылок.
void f(int a, int & b)
{a++;
b++;
}
В С принято передавать по значению переменные любых типов кроме массивов. Массивы передаются через указатели. Тип функции определяет формат возвращаемого значения; результат работы функции возвращается оператором return. Он обязателен для всех типов и может быть опущен только в функции типа void.
В С имеется возможность создавать и использовать функции с параметрами по умолчанию. В этом случае при вызове функции часть фактических параметров можно опустить. Значения параметров по умолчанию должны быть заданы в описании или определении функции.
int sum(int a, int b=10);
int c;
c=sum(15);
К моменту вызова функции с неполным списком аргументов, значение параметра по умолчанию должно быть уже определено.
Встроенные функции.
При вызове функции определенная часть времени уходит на подготовку, определения содержимого стека, передачу параметров, выделение памяти под локальные переменные. Необходимо время и на передачу управления. В некоторых случаях удобно встроить функцию в тело программы вместо ее вызова, для этого необходимо дать указания компилятору путем введения ключевого слова inline в заголовок функции.
inline int sum(int a, int b)
При этом на этапе компиляции тело функции будет заменять все вызовы ее встречающиеся в программе. Директиву include можно указать и перед функцией с большим количеством операторов, однако не гарантируется, что функция будет встроенной.
Особенности работы с указателями разных типов в языке с.
В простейшем случае ОП ЭВМ можно считать памятью с произвольной выборкой, т.е. в любой момент времени можно получить доступ к произвольной ячейке памяти. Для организации подобной адресации используются сегментированные адреса, т.е. полный адрес произвольной ячейки представляется совокупностью 2 частей: старшая – указатель на сегмент, младшая – смещение относительно заданного сегмента.
Чтобы определить физический адрес по известному сегментированному адресу, необходимо сложить смещение с увеличенной в 16 раз сегментной частью.
Для организации работы с сегментированными адресами в процессорах семейства Intel выделяют 4 сегментных регистра:
CS – сегмент кода. Используется для формирования адресов операторов программы.
DS – сегмент данных. Используется для формирования адресов статических данных.
SS – сегмент стека. Используется для вычисления адресов в стеке при передаче параметров между подпрог.
ES – расширенный сегмент. Используется для формирования адресов динамических данных.
В языке С++ для упорядоченной адресации используются указатели трех типов:
1) near – ближний указатель. Позволяет адресоваться к данным или осуществить вызов процедуры в пределах одного сегмента. В качестве адреса используется только 16-битное смещение. При формировании реального физического адреса система подставляет в качестве значения сегмента содержимое одного из сегментных регистров.
2) far – дальний указатель. Используется в случае, если данные или код выходят за пределы одного сегмента. Указатель типа far состоит из двух частей, определяющих адрес сегмента и смещение внутри сегмента. При работе с указателями типа far следует помнить о ряде правил обработки этих указателей компилятором:
1 операции на <, >, <=, >= используют при сравнении только 16-битное смещение
2 операции на =, <> работают с указателями типа far как с 32-битными целыми беззнаковыми числами
3 при выполнении арифметических операций не выполняется контроль за переходом границ сегмента.
3) huge – нормализованный указатель. Позволяет адресовать каждую ячейку памяти только одним сегментированным адресом. Хранение в нормализованном виде предполагает, что значение сегмента максимально, а значение смещения колеблется от 0 до F. Это объясняется тем, что происходит выравнивание на границу параграфа. Все операции сравнения и арифметические операции выполняются корректно. При сравнении сравнивают сначала сегментную часть и потом, если необходимо, смещение. Выполняется контроль за переходом в пределах параграфа.
