Skip to content

Latest commit

 

History

History
53 lines (37 loc) · 7.51 KB

cpp-knowledge.md

File metadata and controls

53 lines (37 loc) · 7.51 KB

Что надо знать о C/C++ в рамках курса

Вы должны помнить два базовых принципа, которые действуют в рамках курса:

  • пишите код осознанно, не забывая читать документацию языка и библиотек
  • будьте готовы исправить код или применить методы рефакторинга

Императивный стиль

C/C++ полностью поддерживают императивный подход к программированию. Чтобы свободно им пользоваться, надо

Структурный стиль

Необходимо:

  • помнить про выражение с тернарным оператором condition ? then_value : else_value, которое в некоторых случаях может служить заменой if..else
  • помнить про инструкцию switch, которая в некоторых случаях может служить заменой if..else
  • помнить про все три формы циклов: while, do..while и for, уметь раскладывать одну инструкцию for на три инструкции (одна из которых — while), а также собирать инструкцию for из while
  • помнить про назначение инструкций continue и break в циклах, уметь изменять код, заменяя break на дополнительную булеву переменную или убирая булеву переменную в пользу break.

Процедурный стиль

C/C++ полностью поддерживают процедурную парадигму программирования. Чтобы свободно ей пользоваться, надо

  • помнить, что вызов функции является выражением и потому может быть вложен в выражение: setPosition(sin(a), cos(a))
  • помнить, что порядок вычисления аргументов при вызове функции не определён стандартом и зависит от платформы
  • помнить, что инструкция return является терминальной для функции и завершает выполнение как стуктурного блока кода, так и всей функции
  • помнить про особенности функции main
  • помнить про области видимости переменных
  • иметь представление о классификации простых и составных типов данных в C/C++, в том числе уметь пользоваться ссылочными типами, указателями, массивами Си, структурами struct
  • уметь использовать как массивы языка Си, так и стандартный контейнер std::vector
  • уметь выбирать между изменяемыми ссылками T& и константными ссылками const T&, ссылками T&, const T& и указателями T *, const T*
  • знать о понятиях "нулевой указатель", о применении ключевых слов nullptr, new, delete
  • иметь представление о трёх местах хранения переменных: статическая память, динамическая память, стек потока программы

Деление программы на модули

Языки C/C++ способствуют разделению кода на интерфейс (заголовочные файлы) и реализацию (файлы *.c/*.cpp). Также поддерживается деление программы на отдельные модули, где под модулем программы понимается отдельная пара "заголовочный файл" - "файл реализации". Следует:

Общая схема компиляции:

Иллюстрация