Информатика и программирование
Специальность: Программная инженерия
Преподаватель: Карпенко С.Н. Сысоев А.В.
Дисциплина является основой для последующего изучения других базовых и вариативных курсов по математике и информатике, предусмотренных программой направления подготовки 090304 «Программная инженерия».
Освоение дисциплины «Информатика и программирование» необходимо для выполнения курсовой и выпускной работ бакалавра.
Дисциплина «Информатика и программирование» является первой частью двухгодичного курса по различным аспектам программирования, общей целью которого является подготовка высококвалифицированных разработчиков сложных программных систем моделирования объектов и явлений реального мира, управления экономико-социальными и производственными процессами, а также решения других задач автоматизации, научных исследований и проектирования на основе применения современной вычислительной техники.
Данная дисциплина преследует цель систематического изучения следующих аспектов:
- общие вопросы создания программ, включая основные этапы процесса разработки и используемые средства;
- краткие сведения о среде исполнения программ;
- краткие сведения об инструментах программирования;
- основные элементы и принципы построения языков программирования высокого уровня на примере языков С и С++;
- базовые алгоритмы и основы алгоритмизации с примерами на языке С;
- различные способы описания моделей объектов предметной области с помощью конструирования типов данных с использованием средств C и C++;
- вопросы динамического управления памятью и работы с файлами с использованием средств C и C++;
- основы технологии объектно-ориентированного программирования на примере C++;
- углубленные элементы технологии объектно-ориентированного программирования: наследование, виртуальные методы, шаблоны функций и классов.
Содержание
1 семестр
- Введение в предмет. Структура и содержание курса.
- Решение задач с использованием вычислительной техники.
- Современная система разработки программного обеспечения.
- Среда исполнения программ. Программа в среде Microsoft Windows.
- Основные понятия языков программирования. Синтаксис, семантика, формальные способы описания языков программирования.
- Типы данных, способы и механизмы управления данными.
- Программа на языке C. Методы и основные этапы трансляции.
- Структурное программирование и операторы языка C.
- Конструирование новых типов данных.
- Модульное программирование.
- Элементы анализа и разработки алгоритмов.
- Методы работы с внешней памятью. Файлы.
- Динамическое управление памятью.
2 семестр
- Отличия языка С++ от языка С
- Введение в объектно-ориентированное программирование
- Классы и объекты
- Конструкторы и деструктор
- Обработка исключений
- Перегрузка операций
- Пример. Класс Cdate
- Наследование и иерархия классов
- Специальные поля и методы классов
- Виртуальные методы. Абстрактные виртуальные методы и классы
- Шаблоны. Шаблоны функций и шаблоны классов
- Пример. Класс Container
- Пример. Класс Dictionary
Лабораторный практикум
1 семестр
- Знакомство. Обзор содержания курса и плана практики. Отчетность. Литература.
- Введение в языки программирования. Языки высокого/низкого уровня. Понятия программы, переменной, способа интерпретации, типа данных. Тривиальная программа “Hello, world” на C.
- Структура программы на C, синтаксис. Операторы ввода-вывода. Типы данных. Операторы ветвления.
- Обсуждение результатов С.Р. Обсуждение правильного использования операторов if и if…else. Оператор множественного выбора. Циклы. Контроль ввода (циклы с постусловием).
- Обсуждение результатов С.Р. Массивы (синтаксис, примеры объявления, индексация). Генерация псевдослучайных данных. Прерывание циклов (break, continue). Бинарный поиск, простейшая сортировка.
- Обсуждение результатов С.Р. Постановка задачи по ЛР 1. Схема сдачи ЛР, обсуждение реализации (организация диалога с пользователем). Изучение сортировок (оценка эффективности): сортировка пузырьком.
- Изучение сортировок (оценка эффективности): сортировка выбором, сортировка вставками, сортировка слиянием.
- Подпрограммы (назначение, виды). Передача параметров по значению и по ссылке. Рекурсия.
- Обсуждение результатов С.Р. Изучение сортировок (оценка эффективности): сортировка Хоара, сортировка Шелла, сортировка подсчётом.
- Обсуждение результатов С.Р. Передача параметров в подпрограммы (параметры-константы, параметры без типа, массивы и строки открытого типа).
- Обсуждение результатов С.Р. Постановка задачи по ЛР 2.
- Тип данных «указатель на функцию». Пример использования указателей не функцию на примере сортировки (функция сравнения элементов).
- Обсуждение результатов С.Р. Конструирование составных типов данных. Модули. Пример реализации модуля для работы с комплексными числами.
- Файловый ввод-вывод (основные понятия, организация файлового ввода-вывода в C). Решение задач с использованием файлового ввода-вывода.
- Обработка ошибок (примеры типичных ошибок). Обсуждение проблем реализации метода Гаусса (прямой, обратный ход, проверка деления на ноль, антипереполнение). Тест по пройденному материалу. Ответы на вопросы.
2 семестр
- Некоторые отличия С++ от С. Ввод/вывод, константы, работа с динамической памятью, ссылки, передача параметров по ссылке, перегрузка функций, константные параметры.
- Введение в объектно-ориентированное программирование. Парадигмы ООП. Процедурное и объектно-ориентированное программирование. Сравнительный пример применения двух подходов.
- Классы и объекты. Объявление класса, поля и методы, спецификаторы доступа. Описание класса. Объявление и использование объектов класса.
- Конструкторы и деструктор. Понятие и типы конструкторов. Понятие деструктора. Когда и как вызываются конструкторы и деструктор.
- Обработка исключений. Ошибки и способы их обработки. Обработка исключений. Правила написания обработчика. Вложенные исключения.
- Перегрузка операций. Введение. Перегрузка операций, два способа перегрузки операций. Правила перегрузки операций различных типов. Динамические поля и перегрузка операций.
- Перегрузка операций и конструктор преобразования типа. Пример класса CDate.
- Агрегация и наследование. Агрегация, наследование и спецификаторы доступа. Создание и удаление объектов при наследовании. Перегрузка и перекрытие методов.
- Специальные поля и методы классов. Константные поля и методы класса. Константные объекты. Статические поля и методы.
- Виртуальные методы. Виртуальное перекрытие методов. Абстрактные методы и классы.
- Шаблоны. Шаблоны функций. Введение в шаблоны классов
- Примеры применения наследования и шаблонов. Класс Container. Класс Dictionary
- Введение в STL.
Литература
а) основная литература:
- Буч Г. Объектно-ориентированный анализ и проектирование с приложениями на С++. 2-е изд. М.: БИНОМ, СПб: Бином, 2000. – 560 с.
- Грудзинский А.О., Мееров И.Б., Сысоев А.В. Методы программирования. Курс на основе языка ObjectPascal. – Н.Новгород, изд. ННГУ, 2006. – 392 с.
- Карпенко С.Н. Методические материалы по курсу «Основы программирования». URL: http://www.software.unn.ru/?doc=941.
- Карпенко С.Н. и др. Методы объектно-ориентированного программирования. URL: http://e-learning.unn.ru/course/view.php?id=251.
- Кетков Ю.Л. Введение в языки программирования C и C++. Интернет-университет информационных технологий - ИНТУИТ.ру, БИНОМ. Лаборатория знаний, 2006 г. - 344 с. http://www.intuit.ru/studies/courses/1039/231/info.
- Подбельский В.В. Язык С++. М.: Финансы и статистика, 5-е изд. - 560 с.
- Страуструп Б. Язык программирования С++. М.:Бином-Пресс, 2008. - 1104 с.
б) дополнительная литература:
- Йенсен К., Вирт Н. Паскаль: Руководство для пользователя и описание языка. – М.: Мир, 1982.
- Стивенс Р. Delphi. Готовые алгоритмы. – М.: ДМК Пресс, 2005.
- Шилдт Г. Самоучитель С++. СПб.: БХВ-Петербург.
Отчетность
- Семестр 1: Зач
- Семестр 2: Экз