+7 (812) 703-02-02 info@hse.spbstu.ru

DEV-C110. Процедурное программирование на языках C/C++

Длительность дисциплины: 32 ак.ч.


Аннотация

Данный курс является вторым в линейке курсов по разработке программного обеспечения на языках С/C++, предлагаемых нашим учебным центром.
В данном курсе рассматриваются более сложные темы, связанные с процедурным программированием.
Вы познакомитесь с операторами, инструкциями и циклами, директивами препоцессора, указателями, функциями.
Для более полного знакомства со всеми возможностями технологий программирования на языке C++ рекомендуется прохождение следующего курса в линейке курсов по разработке ПО:  DEV-C200. Объектно-ориентированное программирование на языке С++. Базовый уровень

Знания и умения, полученные в результате изучения

В результате освоения программы обучающийся должен уметь:
• создавать (и уничтожать) динамические массивы;
• использовать указатели на многомерные массивы;
• передавать функции указатели на массив (встроенный массив, динамический массив);
• создавать функции с переменным числом параметров;
• создавать рекурсивные функции;
• использовать массивы указателей на функции;
• объявлять структуры; 
• создавать экземпляры пользовательского типа; 
• использовать структуры: массив объектов пользовательского типа, передача агрегатного объекта в функцию.

В результате освоения программы обучающийся должен знать:
• пространство имен стандартной библиотеки; 
• неименованные пространства имен и псевдонимы пространств имен;
• особенности создания и использования многомерных массивов;
• динамическое выделение памяти; 
• особенности использования указателей на многомерные массивы;
• возможности передачи функции указателя на массив;
• перегрузку имен функций и рекурсивные функции;
• особенности использования переменного числа параметров функций;
• ключи формата ввода/вывода;
• назначение структур и битовых полей; 
• назначение объединений. 

В результате освоения программы обучающийся должен приобрести практический опыт:
• использования сложных структур данных;
• перегрузки имен функций и создания рекурсивных функций;
• использования указателей на функции в качестве параметров;
• использования битовых полей и объединений языка Си.

Содержание дисциплины

Тема 1. Данные
1.1 Пространства имен Директива using. 
Пространство имен стандартной библиотеки. 
Неименованные пространства имен. 
Псевдонимы пространств имен.

Тема 2. Массивы
2.1 Многомерные массивы
Эквивалентные указатели на многомерные массивы. 
2.2 Динамическое выделение памяти. 
Динамические массивы.
Операторы new и delete. 
Формы оператора delete. 
Способы создания динамических двумерных массивов.
Практические занятия
1. Создание (и уничтожение) динамических массивов.
2. Операторы new и delete. 
3. Указатели на многомерные массивы.

Тема 3. Функции
3.1 Функции и массивы
Передача функции указателя на массив. 
3.2 Перегрузка имен функций. 
Рекурсивные функции.
Перегрузка имен функций. 
Использование рекурсивных функций.
3.3 Переменное число параметров. 
Файловый ввод/вывод.
Переменное число параметров. 
"Старые" потоки ввода/вывода языка С. 
Функции printf и scanf. 
Ключи формата ввода/вывода. 
Файловый ввод/вывод. Диагностика ошибок. 
3.4 Указатели на функции. 
Сложные указатели.
Указатель на функцию. 
Вызов функции с помощью указателя. 
Использование указателей на функции в качестве параметров. 
Массив указателей на функции. 
Примеры сложных объявлений функций и указателей на функции.
Практические занятия
1. Передача функции указателя на массив (встроенный массив, динамический массив).
2. Функции с переменным числом параметров
3. Рекурсивные функции
4. Указатель на функцию. Указатель на функцию в качестве аргумента другой функции
5. Массивы указателей на функции

Тема 4. Типы данных, определяемые пользователем
4.1 Структуры языка Си. 
Структуры и функции.
Назначение структур. 
Использование структур.
4.2 Битовые поля. 
Объединения языка Си.
Назначение битовых полей. 
Использование битовых полей. 
Назначение объединений. 
Использование объединений.
Практические занятия
1. Объявление структуры. 
2. Создание экземпляров пользовательского типа. 
3. Использование структур: массив объектов пользовательского типа, передача агрегатного объекта в функцию.
4. Пример использования структур - картотека.