Информатика и программирование

Кафедра программной инженерии

Специальность: Программная инженерия

Преподаватель: Карпенко С.Н. Сысоев А.В.

Дисциплина является основой для последующего изучения других базовых и вариативных курсов по математике и информатике, предусмотренных программой направления подготовки 090304 «Программная инженерия».

Освоение дисциплины «Информатика и программирование» необходимо для выполнения курсовой и выпускной работ бакалавра.

Дисциплина «Информатика и программирование» является первой частью двухгодичного курса по различным аспектам программирования, общей целью которого является подготовка высококвалифицированных разработчиков сложных программных систем моделирования объектов и явлений реального мира, управления экономико-социальными и производственными процессами, а также решения других задач автоматизации, научных исследований и проектирования на основе применения современной вычислительной техники.

Данная дисциплина преследует цель систематического изучения следующих аспектов:

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

Содержание

1 семестр

  1. Введение в предмет. Структура и содержание курса.
  2. Решение задач с использованием вычислительной техники.
  3. Современная система разработки программного обеспечения.
  4. Среда исполнения программ. Программа в среде Microsoft Windows.
  5. Основные понятия языков программирования. Синтаксис, семантика, формальные способы описания языков программирования.
  6. Типы данных, способы и механизмы управления данными.
  7. Программа на языке C. Методы и основные этапы трансляции.
  8. Структурное программирование и операторы языка C.
  9. Конструирование новых типов данных.
  10. Модульное программирование.
  11. Элементы анализа и разработки алгоритмов.
  12. Методы работы с внешней памятью. Файлы.
  13. Динамическое управление памятью.

2 семестр

  1. Отличия  языка С++ от языка С
  2. Введение в объектно-ориентированное программирование
  3. Классы и объекты
  4. Конструкторы и деструктор
  5. Обработка исключений
  6. Перегрузка операций
  7. Пример. Класс Cdate
  8. Наследование и иерархия классов
  9. Специальные поля и методы классов
  10. Виртуальные методы. Абстрактные виртуальные методы и классы
  11. Шаблоны. Шаблоны функций и шаблоны классов
  12. Пример. Класс Container
  13. Пример. Класс Dictionary

Лабораторный практикум

1 семестр

  1. Знакомство. Обзор содержания курса и плана практики. Отчетность. Литература.
  2. Введение в языки программирования. Языки высокого/низкого уровня. Понятия программы, переменной, способа интерпретации, типа данных. Тривиальная программа “Hello, world” на C.
  3. Структура программы на C, синтаксис. Операторы ввода-вывода. Типы данных. Операторы ветвления.
  4. Обсуждение результатов С.Р. Обсуждение правильного использования операторов if и if…else. Оператор множественного выбора. Циклы. Контроль ввода (циклы с постусловием).
  5. Обсуждение результатов С.Р. Массивы (синтаксис, примеры объявления, индексация). Генерация псевдослучайных данных. Прерывание циклов (break, continue). Бинарный поиск, простейшая сортировка.
  6. Обсуждение результатов С.Р. Постановка задачи по ЛР 1. Схема сдачи ЛР, обсуждение реализации (организация диалога с пользователем). Изучение сортировок (оценка эффективности): сортировка пузырьком.
  7. Изучение сортировок (оценка эффективности): сортировка выбором, сортировка вставками, сортировка слиянием.
  8. Подпрограммы (назначение, виды). Передача параметров по значению и по ссылке. Рекурсия.
  9. Обсуждение результатов С.Р. Изучение сортировок (оценка эффективности): сортировка Хоара, сортировка Шелла, сортировка подсчётом.
  10. Обсуждение результатов С.Р. Передача параметров в подпрограммы (параметры-константы, параметры без типа, массивы и строки открытого типа).
  11. Обсуждение результатов С.Р. Постановка задачи по ЛР 2.
  12. Тип данных «указатель на функцию». Пример использования указателей не функцию на примере сортировки (функция сравнения элементов).
  13. Обсуждение результатов С.Р. Конструирование составных типов данных. Модули. Пример реализации модуля для работы с комплексными числами.
  14. Файловый ввод-вывод (основные понятия, организация файлового ввода-вывода в C). Решение задач с использованием файлового ввода-вывода.
  15. Обработка ошибок (примеры типичных ошибок). Обсуждение проблем реализации метода Гаусса (прямой, обратный ход, проверка деления на ноль, антипереполнение). Тест по пройденному материалу. Ответы на вопросы.

 2 семестр

  1. Некоторые отличия С++ от С. Ввод/вывод, константы, работа с динамической памятью, ссылки, передача параметров по ссылке, перегрузка функций, константные параметры.
  2. Введение в объектно-ориентированное программирование. Парадигмы ООП. Процедурное и объектно-ориентированное программирование. Сравнительный пример применения двух подходов.
  3. Классы и объекты. Объявление класса, поля и методы, спецификаторы доступа. Описание класса. Объявление и использование объектов класса.
  4. Конструкторы и деструктор. Понятие и типы конструкторов. Понятие деструктора. Когда и как вызываются конструкторы и деструктор.
  5. Обработка исключений. Ошибки и способы их обработки. Обработка исключений. Правила написания обработчика. Вложенные исключения.
  6. Перегрузка операций. Введение. Перегрузка операций, два способа перегрузки операций. Правила перегрузки операций различных типов. Динамические поля и перегрузка операций.
  7. Перегрузка операций и конструктор преобразования типа. Пример класса CDate.
  8. Агрегация и наследование. Агрегация, наследование и спецификаторы доступа. Создание и удаление объектов при наследовании. Перегрузка и перекрытие методов.
  9. Специальные поля и методы классов. Константные поля и методы класса. Константные объекты. Статические поля и методы.
  10. Виртуальные методы. Виртуальное перекрытие методов. Абстрактные методы и классы.
  11. Шаблоны. Шаблоны функций. Введение в шаблоны классов
  12. Примеры применения наследования и шаблонов. Класс Container. Класс Dictionary
  13. Введение в STL.

Литература

а) основная литература:

  1. Буч Г. Объектно-ориентированный анализ и проектирование с приложениями на С++. 2-е изд. М.: БИНОМ, СПб: Бином, 2000. – 560 с.
  2. Грудзинский А.О., Мееров И.Б., Сысоев А.В. Методы программирования. Курс на основе языка ObjectPascal. – Н.Новгород, изд. ННГУ, 2006. – 392 с.
  3. Карпенко С.Н. Методические материалы по курсу «Основы программирования». URL: http://www.software.unn.ru/?doc=941.
  4. Карпенко С.Н. и др. Методы объектно-ориентированного программирования. URL: http://e-learning.unn.ru/course/view.php?id=251.
  5. Кетков Ю.Л. Введение в языки программирования C и C++. Интернет-университет информационных технологий - ИНТУИТ.ру, БИНОМ. Лаборатория знаний, 2006 г. - 344 с. http://www.intuit.ru/studies/courses/1039/231/info.
  6. Подбельский В.В. Язык С++. М.: Финансы и статистика, 5-е изд. - 560 с.
  7. Страуструп Б. Язык программирования С++. М.:Бином-Пресс, 2008. - 1104 с.

б) дополнительная литература:

  1. Йенсен К., Вирт Н. Паскаль: Руководство для пользователя и описание языка. – М.: Мир, 1982.
  2. Стивенс Р. Delphi. Готовые алгоритмы. – М.: ДМК Пресс, 2005.
  3. Шилдт Г. Самоучитель С++. СПб.: БХВ-Петербург.

Отчетность

  • Семестр 1: Зач
  • Семестр 2: Экз