Посмотр рубрик

Предисловие

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

Уроки ориентированы на компиляторы GCC и Clang, широко используемые в том числе при разработке под микроконтроллеры. Если какие-то моменты специфичны именно для GCC, это обычно указано в уроке

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

Уроки ориентированы преимущественно на программирование микроконтроллеров, поэтому в них могут быть опущены темы, характерные для разработки под ПК и мощные контроллеры. Например, стандартная библиотека C++ рассматривается лишь частично: на некоторых embedded-платформах доступна не вся её функциональность, а отдельные возможности могут быть слишком ресурсоёмкими. И наоборот, подробнее разобраны особенности некоторых платформ и семейств микроконтроллеров. В других разделах сайта рассмотрены конкретные платформы и работа с ними, но базой для всех них являются C и C++, поэтому данный раздел рекомендуется изучить в первую очередь.

Также в отдельный раздел "Справочник" вынесена документация по некоторым заголовочным файлам стандартной библиотеки C с описанием функций и примерами использования. В самих уроках они рассмотрены бегло, поэтому после изучения уроков обращайтесь к справочнику.

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

Уроки местами содержат большой объём дополнительной информации по теме, чтобы оставаться в рамках темы и не размазывать эту информацию по другим урокам. Если что-то кажется сложным и лишним - пропустите главу, к ней всегда можно вернуться позже.

Главы со звёздочкой * необязательны для изучения: они содержат более продвинутую информацию по теме урока

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

Запуск примеров #

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

В рамках уроков мы не будем рассматривать конкретные среды разработки, поэтому предлагаю использовать онлайн-компилятор OneCompiler. Вот базовый шаблон программы, которая выводит Hello, World! в консоль. Запуск программы - кнопка Run:

#include <iostream>
#include <stdint.h>
#define LOG(x) std::cout << (x) << std::endl

int main() {
    LOG("Hello, World!");
}

file

Здесь LOG - макрос, который выводит в консоль значение типа, поддерживаемого оператором std::cout << (удобно для простых тестов).

Раздел "Дополнительно" #

В конце большинства уроков есть блок "Дополнительно" с тезисами, вопросами, заданиями и примерами для Arduino. Для вывода в монитор порта используется объект Serial. Примеры можно адаптировать для другого окружения, заменив ввод-вывод и платформозависимые функции.

Полезные страницы #


(37 голосов)
Подписаться
Уведомить о
guest

6 комментариев
Старые
Новые Популярные
Прокрутить вверх