Основы программирования: C++

Кувшинов Д.Р.

2017–2018


Цель курса

Цель курса — ознакомить студентов с технологиями программирования с учётом профессиональной специализации и заложить базовые навыки, позволяющие разрабатывать программное обеспечение (ПО). В процессе требуется освоить базовую часть языка C++ в качестве основного языка программирования. Язык C++ выбран по двум причинам: дидактической и практической.

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

Практическая причина проистекает из широты применения C++. Данный язык популярен там, где требуется сочетание низкоуровневых и высокоуровневых свойств, а также высокая производительность результирующего программного обеспечения — низкая задержка при получении результата (важно, например, для игр) или большой объём вычислений, которые можно выполнить за единицу времени (важно для научно-технических задач). Кроме того, доступно большое количество программных компонент, разработанных на C++. Компиляторы C++ существуют для большинства платформ, по распространённости поддержки языков программирования на различных платформах C++ занимает второе место (после C).

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


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

Содержание данного ресурса разбито на две части: теоретическую и практическую (лабораторные и самостоятельные работы). Задача полного описания задействованных понятий, принципов и элементов языка программирования при составлении курса не ставилась, рекомендуется использовать дополнительную литературу.

Замечание. В тексте используются различные символы Юникода, например, ℝ для обозначения множества действительных чисел или символ ≡ для обозначения тождества. При неудачном стечении обстоятельств (отсутствии в системе шрифтов с широкой поддержкой Юникода) ряд символов может не отображаться, в этом случае рекомендуется установить такой шрифт (например см. список).


Знаком ⌛ помечены планируемые разделы, не включенные в текущую версию.

Теоретическая часть

В теоретической части курса излагается избранный ограниченный набор сведений, включая ряд определений базовых для практической части понятий, а также охватывающих программирование как дисциплину в целом. Более полное изложение затронутых тем предлагается можно найти в изданиях из списка рекомендованной литературы.

Онлайн-справочник (на английском, русский вариант в основном получен машинным переводом).

Онлайн-компиляторы: IdeOne, C++ Shell, WandBox, Godbolt.

Блог “ISO C++” (на английском).


Лабораторные работы

Задания для выполнения на лабораторных занятиях.


Самостоятельные работы

Задания для самостоятельного выполнения.


Оценка результатов выполнения заданий

Компьютер — идеальный бюрократ.

Главное правило: работать начинать надо сразу, сдавать всё в установленный срок.

Предусмотрено два типа работ: лабораторные и самостоятельные (7 в осеннем семестре и 6 в весеннем семестре).

Правила оценивания лабораторных работ

  1. Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа выполняется и представляется преподавателю на лабораторном занятии.
  2. Оценка за каждую работу выставляется в диапазоне от 1 (“присутствовал на занятии”) до 4 (“работа выполнена”) баллов.
  3. Финальный результат вычисляется как сумма результатов по всем работам. Максимальное значение этой суммы составляет 28 баллов.

Правила оценивания самостоятельных работ

  1. Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа может выполняться как на занятиях, так и дома, однако для получения оценки её необходимо представить лично.
  2. Оценка выставляется в процентах от “идеального выполнения” и вычисляется как произведение трёх величин (коэффициентов): полноты, качества и срока исполнения (см. ниже).
  3. Для каждой работы в течение семестра назначается свой крайний срок сдачи.
  4. Коэффициент срока исполнения выбирается из четырёх возможных значений:
  5. Полнота оценивается в диапазоне [0, 1] как степень соответствия предъявляемым в формулировке задания требованиям.
  6. Качество оценивается в диапазоне [0.5, 2] с точки зрения качества предъявленного исходного кода (в частности, оценка может быть понижена за слишком неряшливое оформление и использование бессмысленных названий), эффективности используемых алгоритмов, разумности выбранных программных решений.
  7. Финальный результат вычисляется как сумма произведений “процентных” оценок работ за семестр на их фиксированные “стоимости” в баллах (указаны в начале описания каждой самостоятельной работы).

Итоговый результат за семестр

  1. Итоговый результат за семестр вычисляется как сумма баллов за лабораторные работы, самостоятельные работы и работу на практических занятиях (по 2 балла за выполнение одного задания у доски).
  2. Для допуска к экзамену необходимо набрать 40 баллов или выше.
  3. При получении более 100 баллов в БРС выставляется 100 баллов, а остаток делится на два и переносится в следующий семестр.

Аттестация в середине семестра

Для получения аттестации требуется набрать 24 балла.


Список рекомендованной литературы

C и C++

Теоретические основы

Алгоритмы

Архитектура компьютера


C и C++ II

Алгоритмы II

Разработка ПО


HTML-файлы сгенерированы с помощью системы Pandoc.

Дата последнего обновления: 2018.09.13 (v1-r324).

Кувшинов Д.Р. © 2015