Курс C++ — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
Строка 1: Строка 1:
{| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;"
 
|+
 
|-align="center"
 
|'''НЕТ ВОЙНЕ'''
 
|-style="font-size: 16px;"
 
|
 
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.
 
 
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.
 
 
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.
 
 
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.
 
 
''Антивоенный комитет России''
 
|-style="font-size: 16px;"
 
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.
 
|-style="font-size: 16px;"
 
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].
 
|}
 
 
 
Текущая версия курса выглядит так:
 
Текущая версия курса выглядит так:
 
=== Вопросы с одного из прошлых экзаменов по C++ ===
 
=== Вопросы с одного из прошлых экзаменов по C++ ===

Текущая версия на 19:41, 4 сентября 2022

Текущая версия курса выглядит так:

Вопросы с одного из прошлых экзаменов по C++

Список можно найти тут

Конспект в Djvu

--System29a 01:08, 25 апреля 2011 (UTC) Есть предложение настрочить ответы на хотя бы какую-то часть вопросов, мне кажется это было бы полезно.

Механика компилятора

  • центральный процессор, команды процессора;
  • данные, память и глобальные переменные;
  • ОС и процесс;
  • функции, стек, локальные переменные;
  • куча, ссылки и указатели;
  • CRT, куча, инициализация глобальных переменных;
  • сборка проекта:
    • предобработка, boost/preprocessor;
    • компиляция, генерация кода функций, сбор имен, объектный файл;
    • компоновка;
    • заголовочные файлы и единицы трансляции;
    • выравнивание;
  • отладка программы.

Требования к программе

  • программы пишутся для решения задач;
  • программа с точки зрения пользователя;
  • программа с точки зрения разработчика;
  • отсюда требования:
    • функциональность;
    • устойчивость;
    • минимизация затрат на решение задачи пользователя (удобство);
    • скорость разработки;
  • что дает С++:
    • функциональность и удобство: множество библиотек и фреймворков;
    • устойчивость: механизмы обработки нештатных ситуаций; тестирование (boost/test; google_test);
    • скорость разработки.

Начало разработки программы

  • выделение интерфейса программы;
  • важность прототипирования;
  • алгоритмы обработки интерфейса и структуры, в которых хранятся согласованные данные; состояние, инварианты;
  • декомпозиция => масштабирование;
  • состояние и интерфейс сущностей; граф связей между сущностями;
  • важность инкапусляции;
  • глобальные переменные, функции и классы как сущности с интерфейсом и состоянием;

Простой пример. Длинное число

  • интерфейс, алгоритмы, состояние; код на С++;
  • добавим оптимизацию по короткому числу;
  • контейнер, интерфейс контейнера;
  • как реализовать копирование, swap;
  • pImpl;

Исключения

  • механика процесса;
  • бросание и обработка исключений;
  • идеология разработки безопасного в смысле исключений кода (Саттер);

RAII

  • умные указатели;
  • взаимодействие с исключениями;

Статический и динамический полиморфизм

  • наследование, область применения, явное выделение интерфейса;
  • механика;
  • шаблоны, область применения;
  • механика;
  • этюды на шаблонах, мини-введение в метапрограммирование;

Стандартные библиотеки

  • stl;
  • boost;
  • qt;

Тестирование

  • boost/test;
  • google/test;

Сериализация

  • пример;
  • идея реализации;
  • реализация;