Программа курса основы программирования дисциплина обязательная, привязанная к семестру. Специальности нп, нк, ни, бакалавры, семестры 1, 2

Вид материалаПрограмма курса

Содержание


Содержание курса
Тема 2. Основные конструкции программирования
Тема 3. Программирование типовых алгоритмов
Тема 4. Функции
Тема 5. Модульная структура программы на языке С
Тема 7. Динамические структуры данных
Тема 8. Рекурсия и динамические структуры данных
Лабораторные занятия
Темы контрольных работ 1-го семестра
2-й семестр
Тема 10. Объектно-ориентированное программирование в С++, абстракция и инкапсуляция
Тема 11.Иерархия классов, наследование, полиморфизм
Тема 15. Понятия о событийно-управляемом и параллельном программировании, о применении API
Лабораторные занятия
Подобный материал:

Факультет физико-математических и естественных наук


Кафедра информационных технологий



Программа курса

ОСНОВЫ ПРОГРАММИРОВАНИЯ


Дисциплина обязательная, привязанная к семестру.

Специальности НП, НК, НИ, бакалавры, семестры 1, 2.

Трудоемкость – 6 кредитов за 2 семестра.

1-й семестр – 3 кредита, 2 часа лекций и 2 часа лабораторных в неделю

2-й семестр – 3 кредита, 2 часа лекций и 2 часа лабораторных в неделю

Цель курса


Студент должен приобрести практические навыки самостоятельной постановки и решения задач на компьютере, понимать важность разработки эффективного алгоритма и выбора подходящих структур данных для решения поставленной задачи, знать программирование типовых алгоритмов и уметь ими пользоваться. Знать основы языков программирования С и С++.

Содержание курса


1-й семестр

Лекции

Тема1. Алгоритмы и процесс решения задачи на компьютере

Системы исчисления. Представление чисел в двоичной, восьмеричной и 16-ричной системах счисления. Прямой и дополнительный код. Арифметические операции для чисел, представленных в 2-, 8- или 16-ричной системах счисления.

Структурная схема компьютера (процессор, оперативная и внешняя память, устройства ввода-вывода информации, регистры центрального процессора) Примеры представления данных в памяти компьютера. Единицы объема информации в компьютере. Понятие о программе на машинном языке. Понятие о языке высокого уровня.

Путь от постановки задачи до реализации с использованием языка программирования. Роль алгоритма в процессе решения задачи. Определение и свойства алгоритма (однозначность, эффективность). Как записать алгоритм? Блок-схема алгоритма. Программирование алгоритма для компьютера.

Стратегия отладки алгоритма и программы. Примеры простейших алгоритмов. Пример простейшей программы на языке С.

Тема 2. Основные конструкции программирования

Синтаксис и семантика высокоуровневых языков программирования на примере языка С: алфавит, регистрозависимость, идентификаторы, константы, переменные, основные простые типы данных, операции над данными, приоритеты и порядок (направление) выполнения операций, понятие о функции, выражения. Понятия о простейших способах ввода-вывода информации, о файлах и директивах препроцессора.

Производные типы данных: массивы, строки, структуры. Указатели, их назначение; операции над указателями. Указатели и массивы. Оператор присваивания, безусловные, условные и циклические управляющие конструкции.

Тема 3. Программирование типовых алгоритмов

Накопление сумм, произведений, программирование рекуррентных формул, вычисление сумм сходящихся числовых рядов, схема Горнера для вычисления значений полинома, нахождение наибольшего и наименьшего значений в массиве, методы сортировки информации (метод пузырька, метод выбора, метод вставки, метод Шелла), характеристики методов сортировки. Использование типовых алгоритмов.

Тема 4. Функции

Назначение, способы передачи параметров. Указатели и функции. Указатели на функции, указатели, возвращаемые функцией. Функции форматированного ввода-вывода. Файлы, их типы, файловый ввод-вывод.

Тема 5. Модульная структура программы на языке С

Переменные, класс памяти, область видимости, время жизни.

Тема 6. Рекурсия

Понятие рекурсии, взаимосвязь итерации и рекурсии, математические рекурсивные функции, примеры рекурсивных функций.

Тема 7. Динамические структуры данных

Использование массива указателей для сортировки данных. Одно и двунаправленные списки, стеки, очереди, хеш-таблицы, бинарные деревья. Обоснование выбора той или иной динамической структуры в реальных задачах. Зависимость алгоритма от выбранной структуры данных.

Тема 8. Рекурсия и динамические структуры данных

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

Лабораторные занятия

  1. Программирование простейшего алгоритма, знакомство с форматным вводом выводом данных.
  2. Составление блок-схем для решения СЛАУ 2-го порядка и решения квадратного уравнения. Выбор вариантов для отладки алгоритмов.
  3. Демонстрация составления программ по разработанным на предыдущем лабораторном занятии алгоритмам, их отладка и выполнение.
  4. Примеры работы с массивами, различные виды описаний, ввод, блок-схема вывода по k элементов в строке. Демонстрационная программа и ее выполнение.
  5. Использование различных типов цикла для работы с массивами и строками. Составление программы, ее отладка и выполнение. Использование в циклах операторов break , continue.
  6. Программирование типовых алгоритмов. Накопление сумм, произведений, программирование рекуррентных формул, вычисление сумм сходящихся числовых рядов, схема Горнера для вычисления значений полинома, нахождение наибольшего и наименьшего значений в массиве. Примеры использования типовых алгоритмов, сортировка выбором, программирование интерполяционного полинома Лагранжа.
  7. Примеры работы со строками и символами. Составление программы «подсчет символов и слов в тексте» и ее выполнение.
  8. Примеры работы со структурами, ввод-вывод элементов структуры. Составление программы «подсчет среднего балла по результатам сессии» и ее выполнение.
  9. Программирование с использованием функций. Использование массивов и структур в качестве аргументов.
  10. Программирование с использованием функций. Использование в качестве аргументов указателей на некоторую функцию.
  11. Демонстрация простейшей функции и двухмодульной программы. Работа с переменными разных классов памяти, затенение глобальных переменных одноименными локальными, область видимости, время жизни.
  12. Демонстрационная программа выполнения рекурсивной функции (в пошаговом режиме). Составление и отладка рекурсивной программы быстрой сортировки.
  13. Использование массива указателей для сортировки данных. Составление, отладка и выполнение программы.
  14. Работа со списком и стеком. Бинарное дерево, создание и включение. Обходы бинарного дерева в глубину и в ширину.

Темы контрольных работ 1-го семестра


Промежуточный контроль знаний

Контрольная работа №1.

теоретический вопрос по темам 1 - 4;

2 задачи на программирование по темам 1 - 4.

Контрольная работа №2.

теоретический вопрос по темам 5 - 8;


2 задачи на программирование по темам 5 - 8.

Итоговый контроль знаний:

Теоретические вопросы и 2 задачи на программирование по всему курсу.

2-й семестр


Лекции

Тема 9. Язык С++ как расширение языка С

Перегрузка функций, функции с аргументами по умолчанию, операция расширения области видимости, объявления в операторах, прототипы функций, ссылки и параметры ссылки, спецификаторы inline. const, enum, операции new delete, комментарии  до конца строки.

Тема 10. Объектно-ориентированное программирование в С++, абстракция и инкапсуляция

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

Тема 11.Иерархия классов, наследование, полиморфизм

Базовые классы, абстрактные классы, виртуальные методы, раннее и позднее связывание, таблица виртуальных методов. Указатели на объекты.

Тема 12. Потоковые классы

Потоковые классы. Объекты cin, cout. Состояние потока. Указатели формата, манипуляторы. Потоковые классы для выполнения операций над файлами.

Тема 13.Множественное наследование

Виртуальные классы. Порядок вызова конструкторов и деструкторов в производном классе.

Тема 14. Открытые и закрытые производные классы

Правила доступа для классов и объектов.

Тема 15. Понятия о событийно-управляемом и параллельном программировании, о применении API

Обработка исключительных ситуаций, Механизмы обработки событий, управление параллелизмом, понятие о применении прикладного программного интерфейса (API) на примере языка С++Builder.

Лабораторные занятия

  1. Использование ссылок. Ссылки, как синонимы имен переменных, передача аргументов по ссылке, ссылка, как возвращаемый функцией результат.
  2. Составление, отладка и выполнение программы, использующей спецификаторы inline. const, enum, операции new delete , указатель на void.
  3. Пример описания класса. Определение простейших конструкторов и деструкторов. Работа с классом. Конструкторы и массивы объектов.
  4. Пример описания класса с конструктором, деструктором и различными методами, в которых происходит обращение к конструктору и деструктору.
  5. Пример описания класса. Класс Complex, интерфейс класса. Конструкторы.
  6. Пример описания класса. Класс Complex. Перегрузка основных операций. Пример использования класса Complex.
  7. Иерархия классов геометрических объектов. Программирование интерфейса класса.
  8. Работа с классами геометрических фигур, виртуальные методы, раннее и позднее связывание.
  9. Пример множественного наследования, создание класса «меню». Виртуальные классы.
  10. Класс «меню». Порядок вызова конструкторов и деструкторов в производных классах.



Темы контрольных работ 2-го семестра


Промежуточный контроль знаний

Контрольная работа №1 включает:

теоретический вопрос по темам 9 - 12;


2 задачи на программирование по темам 9 - 12.

Контрольная работа №2 включает:

теоретический вопрос по темам 13 - 15;


2 задачи на программирование по темам 13 - 15.

Итоговый контроль знаний:

Теоретические вопросы и 2 задачи на программирование по всему курсу.

  1. Литература


Обязательная
  1. Подбельский В.В., Фомин С. С. Программирование на языке Си. М., «Финансы и статистика», 2005.
  2. Подбельский В. В. Язык Си++. М., «Финансы и статистика», 2005.
  3. Павловская Т. А. С/С++. Программирование на языке высокого уровня. СПб., Питер, 2005.
      1. Дополнительная

  1. Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. М., изд. Вильямс, 2003.
  2. Керниган Б., Ритчи Д. Язык программирования Си. М., 1992.


Программу составили:

Бордукова Валентина Тимофеевна, кандидат физико-математических наук, доцент;

Фролов Павел Петрович, кандидат физико-математических наук, доцент