1. Глава 1: Введение
В этой главе мы сделаем первые шаги в программировании на языке Си на вашей Raspberry Pi Zero 2 W. Мы подготовим операционную систему, установим все необходимые инструменты и, конечно же, напишем и запустим нашу самую первую программу. Этот процесс поможет вам понять, как выглядит цикл разработки программы на Си, от написания кода до его выполнения.
—
1.1. Подготовка Raspberry Pi
Прежде чем начать писать код, нам нужно подготовить нашу миниатюрную, но мощную Raspberry Pi Zero 2 W. Эти шаги гарантируют, что у вас будет чистая, эффективная среда для разработки.
Установите Raspberry Pi OS Lite (без графики) на SD-карту через [Raspberry Pi Imager](https://www.raspberrypi.com/software/).
Почему «Lite» и без графики? Версия «Lite» потребляет меньше ресурсов (оперативной памяти и процессорного времени) и занимает меньше места на SD-карте, что идеально для Raspberry Pi Zero 2 W с ее ограниченными возможностями. Разработка на Си часто не требует графического интерфейса, а подключение по SSH позволяет работать удаленно с любого компьютера.
Raspberry Pi Imager: Это официальный инструмент, который упрощает процесс записи образа операционной системы на SD-карту. Вы можете найти его на официальном сайте Raspberry Pi.
Подключитесь по SSH или откройте терминал, если у вас есть экран.
SSH (Secure Shell): Это безопасный сетевой протокол, который позволяет вам управлять Raspberry Pi удаленно с вашего основного компьютера через командную строку. Это очень удобно, так как вам не нужен дополнительный монитор, клавиатура или мышь для Pi. Для подключения вам понадобится IP-адрес вашей Raspberry Pi и логин/пароль (по умолчанию pi/raspberry).
Терминал: Если вы подключили монитор и клавиатуру к вашей Pi, вы можете работать прямо в терминале операционной системы.
Обновите систему:
sudo apt update && sudo apt upgrade
`sudo`: Это команда, которая позволяет выполнять другие команды с правами суперпользователя (администратора). Обновление системы требует таких прав.
`apt update`: Эта команда обновляет список доступных пакетов в репозиториях (хранилищах программного обеспечения). Она не скачивает сами пакеты, а лишь их метаданные.
`apt upgrade`: Эта команда скачивает и устанавливает новые версии всех установленных пакетов, для которых доступны обновления.
`&&`: Этот оператор означает «и». Он гарантирует, что apt upgrade будет выполнен только в том случае, если apt update завершился успешно. Это хорошая практика для последовательных команд.
Зачем обновлять? Регулярное обновление системы гарантирует, что у вас установлены самые свежие версии программ и исправлены известные ошибки безопасности.
—
1.2. Установка компилятора gcc
Для того чтобы ваша Raspberry Pi «поняла» код, который вы напишете на языке Си, ей нужен специальный инструмент — компилятор. Компилятор — это программа, которая переводит ваш высокоуровневый код (который вы пишете) в низкоуровневый машинный код, понятный процессору.
Чтобы компилировать программы на C, установим GNU Compiler Collection (GCC). Это стандартный и самый распространённый набор компиляторов для различных языков, включая Си.
sudo apt install build-essential
`build-essential`: Это метапакет, который включает в себя не только gcc (компилятор Си), но и другие необходимые инструменты для компиляции программ, такие как g++ (компилятор C++), make и dpkg-dev. Установка этого пакета гарантирует, что у вас есть всё необходимое для сборки большинства программ из исходников.
Проверим установку:
gcc --version
Эта команда выведет версию установленного компилятора gcc. Если вы видите номер версии (например, gcc (Raspbian 10.2.1-6+rpi1) 10.2.1), значит, установка прошла успешно.
—
1.3. Первая программа: hello.c
Теперь, когда ваша Raspberry Pi готова, а компилятор установлен, давайте напишем нашу первую программу! Традиционно, первой программой является «Hello, World!», которая просто выводит сообщение на экран.
Создайте файл hello.c:
Вы можете использовать любой текстовый редактор в терминале, например nano (наберите nano hello.c и нажмите Enter). После ввода кода сохраните файл, нажав Ctrl+X, затем Y и Enter.
#include <stdio.h> // Это "директива препроцессора". Она включает стандартную библиотеку ввода/вывода (Standard Input/Output). Без нее мы не сможем использовать функцию printf.
int main() { // Это главная функция программы. Выполнение любой программы на Си начинается именно с функции main().
printf("Привет, Raspberry Pi!\\n"); // Функция printf() используется для вывода текста на экран (в консоль).
// Символ '\n' — это "последовательность экранирования", которая означает переход на новую строку.
// Без нее следующий вывод появился бы в той же строке.
return 0; // Возвращаем 0, чтобы показать операционной системе, что программа завершилась успешно, без ошибок.
}
Комментарии в коде: Обратите внимание на строки, начинающиеся с //. Это комментарии. Комментарии игнорируются компилятором и служат только для того, чтобы помочь людям понять код. Они очень важны для документирования вашей работы!
Синтаксис Си: Си — это язык с чувствительностью к регистру (например, main и Main — это разные вещи), и он использует точку с запятой (;) в конце большинства инструкций. Фигурные скобки ({ }) используются для обозначения блоков кода (например, тело функции main).
Скомпилируйте и запустите:
gcc hello.c -o hello
./hello
- `gcc hello.c -o hello`:
gcc: Запускаем компилятор.
hello.c: Указываем имя нашего исходного файла.
-o hello: Это флаг (опция) компилятора. Он говорит gcc назвать сгенерированный исполняемый файл hello. Если бы мы не использовали -o, исполняемый файл по умолчанию назывался бы a.out.
- `./hello`:
./: Указывает операционной системе, что исполняемый файл hello находится в текущем каталоге. Это необходимо для запуска программ, находящихся не в стандартных системных путях.
hello: Запускает скомпилированную программу.
Примечание
Флаг -o hello говорит компилятору назвать исполняемый файл hello.
Вывод:
Привет, Raspberry Pi!
Поздравляем! Вы только что успешно скомпилировали и запустили свою первую программу на C на вашей Raspberry Pi Zero 2 W. Это фундаментальный шаг в мире встроенного программирования и работы с аппаратным обеспечением!
—
1.4. Что дальше?
Теперь, когда вы освоили основы настройки и запуска простейшей программы, пришло время углубиться в сам язык Си.
Следующий шаг — разобраться с переменными и арифметикой в языке C. Вы узнаете, как хранить данные в памяти, как выполнять математические операции и как ваш код может стать интерактивным.
Дополнительные ресурсы: - man gcc — справочник по компилятору gcc. Введите эту команду в терминале, чтобы получить подробную информацию. - man printf — документация по функции printf. Это очень мощная функция, и man страница покажет вам все ее возможности форматирования.