- •1. Роль вычислительной техники в решении прикладных задач.
- •2. Задачи, особенности и основные инструменты прикладного программирования
- •3.Языки программирования: классификация, особенности, критерии выбора.
- •4. Архитектура прикладных информационных систем.
- •5. Процедурная и объектно-ориентированная декомпозиция.
- •6. Основные принципы объектно-ориентированного программирования: абстрагирование, инкапсуляция, наследование, полиморфизм, модульность, сохраняемость, параллелизм.
- •7. Объекты и типы объектов. Атрибуты объектов и типы атрибутов. Методы объектов.
- •9. Директивы препроцессора: #include, #define, #error, #pragma, операции # и ##
- •11. Компиляция программы и сборка исполняемого модуля.
- •12. Размещение программы и данных в памяти.
- •13. Структура исполняемого модуля.
- •14. Переменные: объявление, определение, инициализация
- •15. Переменные: значение, указатель, ссылка.
- •16.Время жизни и области видимости переменных.
- •19. Составные типы данных.
- •20. Встроенные массивы: размещение в памяти, доступ к элементам. Размещение массива в памяти
- •Элементы массива
- •22. Условные конструкции выбора if/else , select.
- •23. Конструкции циклов for, while, do/ while; операторы break и continue.
- •24. Логические операции.
- •25. Функции: объявление, определение, передача аргументов по ссылке и по значению; входные и выходные параметры, возвращаемое значение, инструкция return.
- •26. Перегрузка функций.
- •27. Библиотека стандартного потокового ввода/вывода. Форматированный ввод/вывод. Файловые потоки, потоки в памяти.
- •28. Обработка строк, класс string.
- •29. Классы. Инкапсуляция. Сокрытие данных и видимость членов класса. Идиома «pimpl».
- •30. Конструктор класса. Конструктор с параметрами и конструктор по умолчанию. Конструкторкопирования.Операторприсваивания.Деструктор.
- •31.Наследование и полиморфизм классов: виртуальные функции.
- •32.Абстрактные базовыеклассы.
- •33.Множественное наследование.
- •34.Перегрузка операторов.
- •35.Объекты-владельцы. «Интеллектуальные» указатели.
- •36. Объекты-владельцы с частной копией ресурса.
- •37. Объекты-владельцы с совместным владением ресурсом.
- •38. Приведениетипов. Операторыstatic_cast, reinterpret_cast, dynamic_cast.
- •39. Константные и не-константные переменные. Оператор const_cast.
- •40. Шаблоны функций и шаблоны классов.
- •41. КонтейнерыстандартнойбиблиотекиStl.
- •42. Итераторы контейнеров.
- •43. Динамический массив на примере контейнера vector.
- •44. Связный список на примере контейнера list.
- •45. Контейнер deque библиотеки stl.
- •46. Ассоциативные контейнеры: map, multimap, set, multiset.
- •47. Стандартные алгоритмы: алгоритм sort; объекты-функции.
- •48. Взаимодействие прикладных программ с базами данных. Протокол odbc.
- •49. Оконный интерфейс. Организация графического оконного интерфейса при помощи оконных сообщений в ос Windows.
- •50. Работа с объектами графического интерфейса gdi.Кисти и перья; контекст устройства вывода («devicecontext»)
13. Структура исполняемого модуля.
Большие программные системы обычно состоят из нескольких файлов - исходных модулей. Каждый исходный модуль компилируется отдельно, а потом полученные объектные модули объединяются компоновщиком в один исполняемый модуль.
Модуль имеет следующую структуру:
Unit <имя>;
interface
<интерфейсная часть> implementation
<исполняемая часть> initialization <нициирующая часть> finalization <завершающая часть>
end.
Здесь unit - зарезервированное слово (единица); начинает заголовок модуля; <имя> - имя модуля (правильный идентификатор); interface - зарезервированное слово (интерфейс); начинает интерфейсную часть модуля; implementation - зарезервированное слово (выполнение); начинает исполняемую часть; initialization -зарезервированное слово (инициация); начинает инициирующую часть модуля; finalization - зарезервированное слово (завершение);начинает завершающую часть модуля; end - зарезервированное слово - признак конца модуля.Таким образом, модуль состоит из заголовка и четырех составных частей, любая из которых может быть пустой.
14. Переменные: объявление, определение, инициализация
При объявлении переменных обязательно нужно указать, какого типа она будет. Для определения и описания переменных основных типов используются следующие ключевые слова:
char (символьный);
short (короткий целый);
int (целый);
long (длинный целый);
float (вещественный);
double (вещественный с удвоенной точностью);
void (отсутствие значения) (будет рассматриваться при изучении функций в С++);
В таблице 2.1 приведены основные типы данных с диапазоном значений и назначением типов.
Переменные |
Тип данных |
Размер, бит (байт) |
Диапазон значений |
Примечание-назначение типа |
Символьные |
unsigned char |
8 бит(1 байт) |
0…255 |
Небольшие целые числа и коды символов. |
char |
8 бит(1 байт) |
-128…127 |
Очень малые целые числа и ASCII-коды. |
|
Перечисления |
enum |
16 бит(2 байта) |
-32768…32767 |
Упорядоченные наборы целых значений. |
Целочисленные |
unsigned int |
16 бит(2 байта) |
0…65535 |
Большие целые и счётчики циклов. |
short int |
16 бит(2 байта) |
-32768…32767 |
Небольшие целые. Управление циклами. |
|
int |
16 бит(2 байта) |
-32768…32767 |
Небольшие целые. Управление циклами. |
|
unsigned long |
32 бит(4 байта) |
0…4294967295 |
Астрономические расстояния. |
|
long |
32 бит(4 байта) |
-2147483648……2147483647 |
Большие числа, популяции. |
|
Вещественные |
float |
32 бит(4 байта) |
3.4Е-38……3.4Е+38 |
Научные расчёты (7 значащих цифр) |
double |
64 бит(8 байт) |
1.7Е-308……1.7Е+308 |
Научные расчёты (15 значащих цифр) |
|
long double |
80 бит(10 байт) |
3.4Е-4932……1.1Е+4932 |
Финансовые расчёты (19 значащих цифр) |
В С++ допустимы две формы инициализации переменной – явная, с использованием оператора присваивания:
int ival = 1024;
string project = "Fantasia 2000";
и неявная, с заданием начального значения в скобках:
int ival( 1024 );
string project( "Fantasia 2000" );
Оба варианта эквивалентны и задают начальные значения для целой переменной ival как 1024 и для строки project как "Fantasia 2000". Явную инициализацию можно применять и при определении переменных списком:
double salary = 9999.99, wage = salary + 0.01;
int month = 08;
day = 07, year = 1955;
Переменная становится видимой (и допустимой в программе) сразу после ее определения, поэтому мы могли проинициализировать переменную wage суммой только что определенной переменной salary с некоторой константой. Таким образом, определение:
// корректно, но бессмысленно
int bizarre = bizarre;
является синтаксически допустимым, хотя и бессмысленным.
