В данном цикле уроков разобрано программирование на языках C/C++ на уровне синтаксиса и некоторых инструментов из стандартных библиотек. Уроки не охватывают всех тонкостей и возможностей языка и всех инструментов из стандартных библиотек, но дают достаточно информации для написания своих крупных и сложных проектов, изучения чужих, а также свободного чтения другой литературы по теме.
C/C++ может показаться очень сложным языком (так то оно и есть), но на самом деле главное понять основные принципы синтаксиса и устройства файлов проекта. Тогда многие тонкости автоматически покажутся очень логичными и даже не требующими запоминания
Уроки ориентированы больше на программирование микроконтроллеров, поэтому в них могут быть опущены моменты, характерные для разработки под ПК и мощные контроллеры (например опущено семейство C++ библиотек std, т.к. не во всех компиляторах они есть), и наоборот подробнее разобраны особенности под некоторые платформы и семейства микроконтроллеров. В других разделах уроков на сайте рассмотрены конкретные платформы и особенности работы с ними, но базой для всех них является C/C++ - поэтому он вынесен в отдельный раздел, который рекомендуется изучить в первую очередь.
Также в отдельный раздел "Справочник" вынесена документация на некоторые стандартные библиотеки языка C с описанием функций и примерами использования - в самих уроках они рассмотрены бегло, после изучения уроков обращайтесь к справочнику.
Уроки изложены последовательно почти везде, где это возможно, поэтому изучать их рекомендуется по порядку. Последующие уроки опираются на информацию и термины из предыдущих уроков без пояснения - подразумевается, что читатель уже разобрался в прошлых темах. Иногда встречаются понятия из следующих уроков, в этом случае урок ссылается на нужный урок - можно пройти дальше, а потом вернуться для полного усвоения темы.
Уроки местами содержат большой объём дополнительной информации по теме, чтобы оставаться в рамках темы и не размазывать эту информацию по другим урокам. Если что-то кажется сложным и лишним - пропустите главу, к ней всегда можно вернуться позже.
Данные уроки не являются пересказом/переводом других источников - текст написан из головы, исходя из личного 10-летнего опыта программирования. Для более полного погружения можно ознакомиться с официальным референсом языка.
Запуск примеров #
Большинство примеров в тексте уроков ради краткости являются абстрактными, то есть не представляют собой готовую программу, которую можно запустить - они предназначены просто для понимания и снабжены поясняющими комментариями. В то же время все примеры рабочие, их можно вставить в среду для выполнения кода, добавить отсутствующие библиотеки и запустить.
В рамках уроков мы не будем рассматривать конкретные среды разработки, я предлагаю использовать онлайн компилятор-запускатор C++ кода onecompiler. Вот базовый шаблон программы для запуска, он же является минимальной программой, которая выводит Hello, World!
в консоль. Запуск программы - красная кнопка Run:
#include <iostream>
#include <stdint.h>
#define LOG(x) std::cout << (x) << std::endl
int main() {
LOG("Hello, World!");
}
Здесь LOG
- универсальный макрос, который выводит данные любого типа в консоль.