Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рабочая программа дисциплины.docx
Скачиваний:
3
Добавлен:
01.10.2024
Размер:
144.95 Кб
Скачать

1.8. Структура и содержание учебной дисциплины

1.8.1. Структура лекционного курса

Раздел дисциплины

Часы

Рейтинг

1 семестр

ТЕМА 1. Введение в алгоритмизацию, архитектуру ВС, средства разработки программ

4

1

Лекция 1. Основные понятия программирования. Алгоритмы и алгоритмизация. Общие сведения об архитектуре ВС

Общие сведения о программировании. Основные понятия: задача, метод, алгоритм, программа, исполнитель, вычислительная машина. Алгоритмы и алгоритмизация, примеры простых алгоритмов. Способы записи алгоритмов: словесная запись, запись с помощью схемы (блок-схемы, диаграммы Насси-Шнайдермана), псевдокод, запись в терминах языка программирования. Архитектура фон Неймана. Принцип программного управления. Порядок функционирования ЭВМ. Базовые машинные команды. Состав современной ВС.

2

0,5

Лекция 2. Средства создания и загрузки программ. Этапы трансляции программ

Инструменты для реализации алгоритма: язык программирования, интегрированная среда разработки программного обеспечения (система программирования). Язык ассемблера, трансляция и интерпретация программ. Порядок трансляции программы на языке Си. Исходные файлы, объектные файлы. Препроцессор, компоновщик. Состав современных систем программирования.

2

0,5

ТЕМА 2. Изучение основ императивного программирования. Часть 1

16

3,5

Лекция 3. Основные понятия

Переменные, понятие типа данных, операции, декларации, операторы, функции. Структура программы, поток управления, порядок работы программы.

2

0,5

Лекция 4. Алфавит. Базовые типы. Представление чисел

Алфавит: исходный и исполняемый наборы символов. Управляющие последовательности символов. Универсальные символы. Базовые типы: стандартные целые типы, стандартные беззнаковые целые типы, типы для действительных чисел с плавающей точкой, типы для комплексных чисел. Представление целых чисел и чисел с плавающей точкой.

2

0,5

Лекция 5. Другие лексические элементы. Основы ввода/вывода. Стандартная библиотека языка Си

Константы: целые, десятичные с плавающей точкой, шестнадцатеричные с плавающей точкой, символьные константы и символьные литералы. Идентификаторы, ключевые слова, пунктуаторы, комментарии. Функции printf и scanf. Стандартная библиотека языка Си.

2

0,5

Лекция 6. Операторы управления. Часть I

Формы управления процессом управления программ. Оператор if: полная и сокращенная формы. Вложенные операторы if. Циклические конструкции, порядок работы. Операторы циклов while, do-while и for.

2

0,5

Лекция 7. Операторы управления. Часть II

Вспомогательные операторы. Передача управления в программах. Операторы continue, break, goto, return. Оператор множественного выбора switch, особенности передачи управления.

2

0,5

Лекция 8. Одномерные массивы. Общие сведения об указателях. Обработка символов.

Одномерные массивы: определение, доступ к элементам. Поиск минимального элемента в массиве. Варианты типов массивов, массивы переменной длины. Массивы и указатели. Ввод и вывод символов. Подсчет символов, подсчет слов. Библиотечные функции для классификации символов, манипуляции символами.

2

0,5

Лекция 9. Строки символов

Нуль-терминальные однобайтовые строки. Операции со строками: создание строк, заполнение строк, сравнение строк, преобразования строк, конкатенация строк. Примеры программ для работы со строками. Библиотечные функции для манипуляции строками, проверки строк, манипуляции символьными массивами.

2

0,5

ТЕМА 3. Изучение основ императивного программирования. Часть 2

8

2

Лекция 10. Структуры, объединения, битовые поля. Перечислимый тип

Структуры: определение, создание переменных, инициализация при создании, доступ к полям, размещение в памяти. Ключевое слово typedef. Структуры, ссылающиеся одна на другую. Объединения: синтаксис, использование, размещение полей в памяти. Битовые поля: синтаксис, использование. Перечислимый тип.

2

0,5

Лекция 11. Указатели. Интерпретация составных описателей

Понятие указателя. Объявление переменной типа указатель. Операции взятия адреса (адресации) & и разыменования (разадресации) *. Двойные, тройные и т.д. указатели. Изменение значения переменной вызывающей функции. Указатели и массивы. Адресная арифметика. Указатели на строки символов. Правило интерпретации составных описателей, примеры составных описателей с интерпретацией.

2

0,5

Лекция 12. Выражения и присваивания. Часть I

Понятия выражения, операнда, операции. Константы, идентификаторы, строки в качестве операндов. Вызовы функций в выражениях. Индексные выражения. Выражения в скобках, константные выражения. Выражения с операциями: унарные, бинарные, тернарные. Операции дополнения, sizeof, мультипликативные, аддитивные, отношений, побитовые, логические, последовательного вычисления, тернарная.

2

0,5

Лекция 13. Выражения и присваивания. Часть II

Операции доступа к элементу структуры, адресации/разадресации. Операции присваивания, lvalue-выражения. Инкремент и декремент. Перегрузка операций. Порядок выполнения операций (ассоциативность, приоритет операций). Порядок вычисления операндов, побочные эффекты. Явные и неявные преобразования типов.

2

0,5

ТЕМА 4. Подпрограммы

4

1

Лекция 14. Основы создания подпрограмм

Понятие подпрограммы. Функции в языке Си: определение, объявление, вызов. Формальные и фактические параметры (аргументы), возвращаемое значение. Тело функции. Рекурсивные вызовы.

2

0,5

Лекция 15. Реализация подпрограмм

Общие свойства подпрограмм. Типы подпрограмм. Объявления и определения процедур и функций в языке Ada. Ключевые параметры (Ada). Значения параметров по умолчанию. Среды ссылок. Методы передачи параметров: смысловые модели передачи параметров. Модели реализации передачи параметров: передача по значению, передача по результату, передача по значению и результату, передача по ссылке, передача по имени. Реализация передачи параметров.

2

0,5

ТЕМА 5. Работа с динамической памятью

2

0,5

Лекция 16. Динамическая память. Создание динамических массивов

Упрощенная схема размещения программы в оперативной памяти. Выделение и освобождение памяти в «куче», функции библиотеки языка Си. Одномерные, двумерные, трехмерные динамические массивы. Выделение динамической памяти под массивы в функциях: явный и неявный возврат указателя. Обращение к элементам одномерных массивов, представляющих многомерные.

2

0,5

ВСЕГО в 1 семестре

32

8

2 семестр

ТЕМА 6. Время жизни и область действия объектов

2

1

Лекция 17. Исходные файлы. Время жизни и область действия объектов. Внешние и предварительные определения

Исходные файлы. Лексемы. Классы памяти. Локальное время жизни, статическое время жизни, время жизни потока, выделенное время жизни. Виды связывания (отсутствие, внутреннее, внешнее). Область действия переменных, объявленных на разных уровнях. Область действия функций. Область действия типов, объявленных программистов.

2

1

ТЕМА 7. Работа с файлами

2

1

Лекция 18. Файлы

Концепция «все есть файл». Файловый и потоковый ввод/вывод. Понятие потока, стандартные потоки в языке Си. Порядок работы с файлами. Способы работы с файлами. Работа с файлами средствами стандартной библиотеки языка Си: открытие, закрытие, переназначение указателя файла, форматный ввод/вывод, запись содержимого потока. Ввод/вывод на низком уровне.

2

1

ТЕМА 8. Программная реализация основных абстрактных типов данных (АТД)

6

3

Лекция 19. Программная реализация списков, стеков

Этапы создания программы. Концепция АТД: АТД, структура данных, тип данных. Линейный список. Список как коллекция. Операции списка. Реализация списка: односвязный список. Реализация списка с помощью массива. Другие виды списков. АТД «стек». Реализация стека на массиве.

2

1

Лекция 20. Программная реализация очередей, деков, отображений, деревьев

АТД «очередь». Очереди с приоритетами. АТД «дек» - двунаправленная очередь. Отображение (map). Реализация с помощью указателей, массивов. АТД «дерево». Пример использования: алгоритм кодирования Хаффмана.

2

1

Лекция 21. Множества и их программная реализация

Понятие множества. Операции АТД, основанных на множествах. Реализация множеств с помощью массивов двоичных данных. Реализация множеств с помощью связных списков. Словари. Хеширование. Некоторые структуры сложных множеств. АТД «нагруженное дерево». 2-3 деревья: поиск, вставка, удаление.

2

1

ТЕМА 9. Основы объектно-ориентированного подхода. Контейнеры STL

4

2

Лекция 22. Введение в объектно-ориентированную модель программирования. Шаблоны. Стандартная библиотека шаблонов (STL). Понятие контейнера

Объектно-ориентированная модель программирования. Классы. Объекты. Шаблоны. STL. Контейнеры: последовательные, ассоциативные. Итераторы: объявление, использование. Обобщенные алгоритмы.

2

1

Лекция 23. Описание и использование контейнеров STL

Контейнеры STL: векторы, списки, очереди, очереди с приоритетом, стеки, деки, множества, мультимножества, отображения, мультиотображения. Обзор операций контейнеров: типы элементов, итераторы, доступ к элементам, операции со стеком и очередями, операции со списками, другие операции, конструкторы, присваивания, ассоциативные операции.

2

1

ТЕМА 10. Вопросы качества и надежности программных продуктов. Обзор языков программирования

2

1

Лекция 24. Критерии качества программы. Отладка и тестирование программ. Парадигмы программирования.

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

2

1

ВСЕГО во 2 семестре

16

8

3 семестр

ТЕМА 11. Понятие класса в объектно-ориентированной парадигме

8

2

Лекция 25. Классы

Методы класса. Управление доступом. Конструкторы. Статические члены класса. Копирование объектов. Ссылка на себя. Эффективные, определяемые пользователем: методы; функции-помощники; перегрузка операторов. Объекты: деструкторы; конструктор по умолчанию; конструирование и уничтожение; локальные переменные; массивы; локальная статическая память; нелокальная память; временные объекты; размещение объектов; объединения.

2

0,5

Лекция 26. Перегрузка операторов

Операторные функции: бинарные и унарные операторы; предопределенный смысл операторов; операторы и типы, определяемые пользователем; операторы в пространствах имен. Операторы преобразования. Друзья класса. Большие объекты. Важные операторы (явные конструкторы). Индексация. Вызов функций. Разыменование. Инкремент и декремент.

2

0,5

Лекция 27. Производные классы

Производные классы: методы, конструкторы и деструкторы, копирование, иерархия классов, поля типа, виртуальные функции. Абстрактные классы. Проектирование иерархий классов: традиционная иерархия классов, абстрактные классы, локализация создания объектов.

2

0,5

Лекция 28. Шаблоны

Определение шаблона. Инстанцирование. Параметры шаблонов. Эквивалентность типов. Проверка типов. Аргументы шаблонов функций. Перегрузка шаблонов функций. Использование аргументов шаблона для выбора алгоритма. Специализация: порядок специализаций; специализация шаблонов функций. Наследование и шаблоны: параметризация и наследование; члены-шаблоны; отношения наследования. Организация исходного кода.

2

0,5

ТЕМА 12. Исключения

2

0,5

Лекция 29. Обработка исключений

Обработка ошибок. Группировка исключений: производные исключения; композиция исключений. Перехват исключений: повторная генерация; перехват всех исключений. Управление ресурсами: использование конструкторов и деструкторов; исключения и оператор new; исчерпание ресурсов; исключения в конструкторах и деструкторах. Исключения, не являющиеся ошибками. Спецификации исключений. Неперехваченные исключения. Исключения и эффективность. Альтернативные методы обработки ошибок. Стандартные исключения.

2

0,5

ТЕМА 13. Иерархии классов

2

0,5

Лекция 30. Множественное наследование

Разрешение неоднозначности. Наследование и using-объявления. Повторяющиеся базовые классы. Виртуальные базовые классы. Множественное наследование и управление доступом. Использование множественного наследования

2

0,5

ТЕМА 14. Средства стандартной библиотеки С++

2

0,5

Лекция 31. Алгоритмы и объекты-функции. Итераторы и распределители памяти

Обзор алгоритмов стандартной библиотеки. Последовательности и контейнеры. Объекты-функции: базовые классы для объектов-функций; предикаты; арифметические объекты-функции; связыватели, адаптеры и отрицатели. Алгоритмы, не модифицирующие последовательность. Алгоритмы, модифицирующие последовательность. Сортированные последовательности. Кучи. Итераторы и последовательности. Распределители памяти: стандартные и определяемые пользователем; обобщенные распределители памяти.

2

0,5

ТЕМА 15. Проектирование структуры классов

2

0,5

Лекция 32. Виды отношений. Диаграмма классов

Иерархии классов. Отношения включения. Включение и наследование. Отношения использования. Запрограммированные отношения. Диаграмма классов. Отношения внутри класса: инварианты, утверждения, предусловия и постусловия, инкапсуляция. Компоненты: шаблоны, интерфейсы и реализации, жирные интерфейсы.

2

0,5

ВСЕГО в 3 семестре

16

4

ИТОГО

64

20