Что такое блочный код? Как блочная программа становится настоящим кодом
Что такое блочный код и как работает блочное программирование? Цвета блоков, setup и loop и пример «Мигание светодиодом», в котором блоки превращаются в C++ и MicroPython.
Блочный код — это способ собрать программу из цветных блоков, похожих на кусочки пазла, вместо того чтобы набирать её строка за строкой. Каждый блок — одна команда, например «сделать пин выходом», «включить светодиод» или «ждать 100 мс». Блоки соединяются только там, где они подходят друг к другу, поэтому ошибки вроде пропущенной точки с запятой, незакрытой скобки или опечатки в команде просто невозможны, и можно сосредоточиться на логике программы. Вот почему блочное программирование считают самым мягким входом в программирование для детей и новичков.
Но блочный код — не игрушечный язык. За каждой блочной программой, которая отправляется в Arduino или Raspberry Pi Pico, стоит настоящий код, и плата всегда выполняет именно его. В этой статье ты шаг за шагом, на бесплатных проектах BlueGrays, увидишь, что такое блоки, о чём говорят их цвета и как блочная программа превращается в настоящий код на C++ или MicroPython. В конце — сильные стороны и ограничения блочного кода и то, как он сочетается с такими инструментами, как Scratch, mBlock и Tinkercad.

Что такое блочный код и почему он называется «блочным»?
В блочном коде каждая команда — это деталь с выемками и выступами по краям. Выступ внизу одного блока входит в выемку блока под ним, поэтому команды выполняются по порядку сверху вниз. У некоторых блоков внутри есть открытая «пасть»: это блоки-контейнеры, в которые вкладываются другие блоки. У других есть белые овальные гнёзда, куда вставляется число или другой блок значения. Форма каждой детали определяет, что куда можно вставить, поэтому собрать программу с нарушением правил почти невозможно. Большинство современных блочных редакторов идут по пути, который открыли Scratch от MIT и открытая библиотека Blockly от Google. Блоки в BlueGrays тоже основаны на Blockly; набор блоков для электронных проектов мы разработали сами и показываем его на языке приложения. Запомни: блоки — не новый язык программирования. Команды, порядок, условия, циклы и переменные — ровно те же понятия, что и в текстовом коде; блоки просто делают их видимыми.
Как блочная программа превращается в настоящий код?
Блочные редакторы незаметно для тебя используют генератор кода: у каждого типа блока есть шаблон в текстовом коде, и по мере того как блоки складываются, эти шаблоны соединяются по порядку. В BlueGrays всё немного строже: блоки каждого проекта составлены так, чтобы один к одному совпадать с настоящим кодом, который загружается в плату. У каждой строки в блоках есть соответствие в коде, а у каждой строки кода — соответствие в блоках. В проектах на Arduino и ESP32 это код на C++, в проектах на Raspberry Pi Pico — на MicroPython. Чтобы читать блочную программу, достаточно знать пять частей:
- настройка (один раз): часть, которая выполняется только один раз при включении или перезагрузке платы. Она соответствует функции setup() в Arduino, и обычно именно здесь пины делают входами (INPUT) или выходами (OUTPUT).
- повторять всегда: часть, которая снова и снова выполняется сверху вниз, пока плата включена. В Arduino это функция loop(), в MicroPython — цикл while True:.
- Блоки команд: блоки вроде «записать HIGH в пин 9» или «ждать 100 мс», которые складываются внутрь контейнеров; каждый из них выполняет одно действие. Большинство таких блоков — одна строка текстового кода.
- Блоки значений: числа вроде 9 или 100 в белых овалах и скруглённые блоки, которые возвращают результат, например «прочитать пин 13». Они вставляются в гнёзда блоков команд и в коде становятся значением в скобках.
- Выпадающие списки: варианты вроде OUTPUT / INPUT или HIGH / LOW. Они соответствуют константам OUTPUT / INPUT и HIGH / LOW в коде, а поскольку в списке есть только допустимые варианты, опечатка здесь невозможна.
Блоки и код рядом: проект «Мигание светодиодом»
Хватит теории, посмотрим на настоящий пример. В проекте «Мигание светодиодом» светодиод с резистором подключены к пину 9, и светодиод мигает пять раз в секунду. В таблице ниже мы по одному переводим в код блоки с изображения выше. Каждая строка таблицы — один блок, а каждый блок — одна строка кода:
| Блок | Код на C++ | Что делает |
|---|---|---|
| настройка (один раз) | void setup() { … } | Содержимое выполняется один раз при запуске платы |
| настроить пин 9 как OUTPUT | pinMode(9,OUTPUT); | Делает пин 9 выходом, который может управлять светодиодом |
| повторять всегда | void loop() { … } | Содержимое повторяется, пока плата работает |
| записать HIGH в пин 9 | digitalWrite(9,HIGH); | Подаёт на пин 5 V, светодиод загорается |
| ждать 100 мс | delay(100); | Приостанавливает программу на 100 миллисекунд |
| записать LOW в пин 9 | digitalWrite(9,LOW); | Ставит на пине 0 V, светодиод гаснет |
| ждать 100 мс | delay(100); | Ждёт 100 мс с выключенным светодиодом |
1void setup() {
2 pinMode(9,OUTPUT); // LED pini çıkış / LED pin as output
3}
4
5void loop() {
6 digitalWrite(9,HIGH); // LED'i yak / Turn the LED on
7 delay(100); // 100 ms bekle (1000 ms = 1 sn) / Wait 100 ms (1000 ms = 1 s)
8 digitalWrite(9,LOW); // LED'i söndür / Turn the LED off
9 delay(100); // 100 ms bekle / Wait 100 ms
10}В коде есть несколько вещей, которых не видно в блоках: слово void, фигурные скобки и точки с запятой. Это правила синтаксиса C++, а в блоках о них заботится сама форма деталей. «Пасть» блока-контейнера заменяет фигурные скобки, а блоки, стоящие один под другим, задают порядок строк. Если поменять 100 в гнезде значения на 1000, в коде будет delay(1000), и светодиод станет мигать раз в секунду. Если выбрать в списке LOW вместо HIGH, HIGH в коде превратится в LOW. Благодаря такому точному соответствию уже через несколько проектов начинаешь читать код, не глядя на блоки. Схему и пошаговую сборку этого же проекта ты найдёшь во 2-й части серии: мигаем светодиодом с помощью блочного кода.
Что означают цвета блоков?
В блочных редакторах цвет — не украшение: он показывает, из какой категории блок. При первом взгляде на программу цвета позволяют прочитать её так: «здесь объявляется переменная, здесь принимается решение, а здесь цикл». Вот категории, которые встречаются на изображениях блоков в проектах BlueGrays:
| Цвет | Категория | Примеры блоков с изображений | Код |
|---|---|---|---|
| Бирюзовый | Структура программы, ввод и вывод на пинах, ожидание | настройка (один раз), повторять всегда, настроить пин … как OUTPUT, записать HIGH в пин …, прочитать пин …, ждать … мс | setup(), loop(), pinMode(), digitalWrite(), digitalRead(), delay() (функции Arduino) |
| Тёмно-бирюзовый | Блоки пинов и времени для Pico | пин led : GP LED_PIN , OUTPUT; включить (on) / выключить (off) пин led; ждать 0.5 с | Pin(…, Pin.OUT), led.on(), led.off(), time.sleep() (команды MicroPython) |
| Пыльно-розовый | Переменные | глобальные переменные (в начале), объявить целое (int) … = …, установить … в … | int ledState = 0; ledState = …; |
| Серо-голубой | Логика | если … то, сравнения ≠ и =, не … | if, !=, ==, ! |
| Зелёный | Циклы | считать с i от 0 до 5 через 1 | for (int i = 0; i < 6; i++) |
| Фиолетовый | Массивы | массив 2 3 4 5 6 7, элемент i из ledPins | int ledPins[] = {2, 3, 4, 5, 6, 7}; ledPins[i] |
Подсказки дают и формы. Блоки условий и сравнений имеют заострённые концы, похожие на шестиугольник, и встают в гнездо условия блока «если», а у блоков чисел и переменных концы скруглённые. В таблице есть деталь, на которую стоит обратить внимание: в блоке «считать с i от 0 до 5 через 1» верхняя граница включается, то есть i по очереди принимает значения 0, 1, 2, 3, 4 и 5. В коде это записывается условием i < 6, и цикл выполняется шесть раз. Проект «Бегущий огонь» зажигает шесть светодиодов один за другим именно этим блоком; блоки циклов и массивов мы подробно разбираем в части серии про циклы и переменные.

Вложенные блоки «если» на этом изображении превращаются в коде во вложенные строки if. Блок «если button ≠ lastButton» — это строка if (button != lastButton), и она срабатывает, когда состояние кнопки меняется. Вложенный в него блок «если button = 1» ловит только момент нажатия. Блок «установить ledState в не ledState» — это строка ledState = !ledState;, которая превращает 0 в 1, а 1 в 0. Следующий за ним блок «записать ledState в пин 7» — это digitalWrite(7, ledState);. Весь проект можно посмотреть на странице «Переключение светодиода кнопкой (вкл/выкл)»; связь между блоком «если» и if/else мы разбираем в части серии про кнопки и условия.
C++ на Arduino и ESP32, MicroPython на Pico
Одна и та же блочная логика на разных платах переводится на разные языки. В проектах на Arduino и ESP32 блоки соответствуют коду на C++, а блоки «настройка (один раз)» и «повторять всегда» становятся setup() и loop(). Например, у блоков проекта «Мигание светодиодом на ESP32» та же структура, что и у «Мигания светодиодом»; отличаются только пин (5) и задержка (500 мс). В проектах на Raspberry Pi Pico блоки превращаются в MicroPython. Функции setup() здесь нет: всё, что лежит внутри блока настройки, становится строками, которые выполняются один раз в начале файла, а блок «повторять всегда» превращается в цикл while True:.

1from machine import Pin
2import time
3
4# ============ PIN ============
5LED_PIN = 14 # Boştaki herhangi bir GPIO / Any free GPIO
6led = Pin(LED_PIN, Pin.OUT) # led adlı pin, ÇIKIŞ / pin named led, OUTPUT
7
8print("== BlueGrays: Pico Harici LED Blink ==")
9print("LED pin: GP" + str(LED_PIN))
10print("500ms yakip 500ms sonduruyor / 500ms on 500ms off")
11
12# ============ ANA DÖNGÜ / MAIN LOOP ============
13while True:
14 led.on() # LED'i yak / Turn the LED on
15 print("[LED] ACIK / ON")
16 time.sleep(0.5) # 0.5 saniye bekle / Wait 0.5 s
17
18 led.off() # LED'i söndür / Turn the LED off
19 print("[LED] KAPALI / OFF")
20 time.sleep(0.5) # 0.5 saniye bekle / Wait 0.5 sСоответствие можно проследить строка за строкой. Блок «объявить целое (int) LED_PIN = 14» внутри блока «глобальные переменные (в начале)» — это строка LED_PIN = 14; в Python типы не пишут, поэтому части (int) в коде нет. Блок «пин led : GP LED_PIN , OUTPUT» превращается в led = Pin(LED_PIN, Pin.OUT). «включить (on) пин led» — это led.on(), «ждать 0.5 с» — time.sleep(0.5), а «вывести в порт» — строка print(). Блок «объединить текст» ставит рядом текст «LED pin: GP» и значение LED_PIN с помощью +. Обрати внимание: на Arduino задержка задаётся в миллисекундах (100 мс), в MicroPython — в секундах (0.5), и в блоках эта разница видна по отдельным блокам «ждать … мс» и «ждать … с». Схему смотри на странице «Внешний светодиод на Raspberry Pi Pico»; если Pico для тебя в новинку, сначала прочитай статью Что такое Raspberry Pi Pico, так будет проще.
Преимущества и ограничения блочного кода
| Тема | Преимущество | Ограничение |
|---|---|---|
| Синтаксические ошибки | Нет ошибок с точкой с запятой, скобками и регистром букв | Логические ошибки всё равно бывают: неправильный пин или неправильная задержка ошибочны и в блоках |
| Читаемость | Цвета и формы с первого взгляда показывают структуру программы | Длинные программы в виде блоков занимают много места на экране, текстовый код компактнее |
| Скорость обучения | До первой программы — считаные минуты, а понятия становятся наглядными | Если никогда не выходить из блоков, навыки текстового кода, например чтение сообщений об ошибках, не развиваются |
| Охват | Основные конструкции уже есть: пины, ожидание, условия, циклы, переменные и последовательный порт | Не у каждой библиотеки и не у каждой аппаратной детали есть блок; для сложных проектов нужен текстовый код |
| Связь с платой | Одна и та же логика выглядит знакомо на Arduino, ESP32 и Pico | Плата всегда выполняет текстовый код, так что рано или поздно его нужно знать |
Блочный код — не ответ на всё, а мост. В первые недели это очень сильный способ понять логику программы, а настоящая цель — в какой-то момент перейти по этому мосту и спокойно смотреть на текстовый код. Блоки и код рядом ускоряют этот переход, ведь в каждом новом проекте ты снова и снова видишь, как одни и те же блоки превращаются в одни и те же строки. После встречи с блоком «повторять всегда» в десяти проектах слово loop() уже не покажется странным. Когда захочется перейти к текстовому коду, статья Основы программирования Arduino на примерах проведёт тебя от переменных до функций.
Кому подходит блочный код?
- Дети и семьи: дети от 9–10 лет, которые свободно читают, могут начать вместе со взрослым. Когда на экране блоки, а на макетной плате загорается светодиод, программирование перестаёт быть абстрактным.
- Учителя и кружки робототехники: если сначала объяснить проект на блоках, а потом перейти к его коду, на одном уроке встречаются ученики разного уровня. План урока, который мы для этого подготовили, — в последней части серии: план урока по робототехнике с блочным кодом.
- Новички в Arduino: если плата только что куплена, а первые скетчи кажутся запутанными, блоки — самый быстрый способ увидеть, что делает каждая строка. Чтобы познакомиться с самой платой, начни со статьи Что такое Arduino.
- Все, кому трудно читать код: понимать программу, написанную кем-то другим, — отдельный навык. Если посмотреть на блоки готового проекта и уловить его структуру, легче увидеть, что и где делает длинный код.
Сравнение со Scratch, mBlock, Tinkercad и MakeCode
Большинство инструментов, которые приходят на ум при словах «блочный код», — это редакторы, работающие на компьютере или в браузере, и у каждого своя сильная сторона. Общее у них то, что ты перетаскиваешь блоки и собираешь собственную программу. BlueGrays отвечает на другую потребность: показывает блоки готовых, проверенных проектов рядом со схемой подключения, списком деталей и настоящим кодом. Составлять в приложении программу из своих блоков (пока) нельзя; вместо этого ты читаешь, как устроена программа, которая точно работает. Поэтому эти инструменты не конкурируют, а дополняют друг друга. Например, последовательность светофора, собранную в mBlock, можно сравнить с блоками проекта «Светофор», а если платы пока нет, смоделировать схему в Tinkercad. Подробности — в руководствах mBlock и Arduino и Моделирование Arduino в Tinkercad.
| Инструмент | Кто расставляет блоки? | Сильная сторона |
|---|---|---|
| Scratch | Ты, на компьютере | Первый шаг в программирование через анимации, истории и игры |
| mBlock | Ты, на компьютере | Программирование плат вроде Arduino блоками в стиле Scratch и просмотр сгенерированного кода |
| Tinkercad Circuits | Ты, в браузере | Виртуальная сборка схемы и её моделирование с блочным или текстовым кодом |
| MakeCode | Ты, в браузере | Переключение между блоками, JavaScript и Python для плат вроде micro:bit |
| BlueGrays | Блоки готовые и сопоставлены с кодом проекта | Чтение блоков проверенных проектов рядом с настоящим кодом, схемой подключения и списком деталей |
Как пользоваться блочным кодом в приложении BlueGrays
- Выбери в разделе «Обзор › Проекты» проект с меткой «Блоки». Можно также включить фильтр «Проекты с блоками», чтобы в списке остались только они. В приложении больше 100 проектов с блоками: большинство из них на Arduino, остальные на ESP32 и Raspberry Pi Pico.
- В разделе кода проекта включи переключатель Показать блоками. Вместо кода появятся блоки той же программы; нажми на изображение, чтобы открыть его на весь экран и спокойно рассмотреть с увеличением.
- Перейди на вкладку Разбор блоков. Там программа объясняется шаг за шагом: на каждом шаге видны только блоки этого шага и то, что они делают.
- Если интересно, что делает какая-то команда, загляни в Справочник по коду. Каждый пример там показан и блоками, и командами Arduino и MicroPython.
- Выключи переключатель, чтобы вернуться к настоящему коду. Скопируй его, вставь в Arduino IDE (для Pico — в Thonny) и загрузи в плату.
- Закрепляй изученное в разделе Вопросы дня: каждый день 5 вопросов уровней от A1 до C2, недельный рейтинг и значки.
И блоки, и код 31 проекта полностью бесплатны; в остальных проектах блоки, как и код, открываются с Premium. Вот несколько бесплатных проектов для хорошего первого шага: «Мигание светодиодом», «Два светодиода мигают поочерёдно», «Светофор», «Бегущий огонь», «Мигание светодиодом на ESP32» и «Мигание встроенным светодиодом Raspberry Pi Pico». Все проекты с блоками по платформам собраны на странице «Блочный код»; там же можно сравнить блоки и код примерного проекта рядом друг с другом.
Серия «От блоков к коду»: дорожная карта
- Что такое блочный код и как блочная программа становится настоящим кодом (эта статья)
- Первая программа: мигаем светодиодом с помощью блочного кода, блоки и C++ рядом
- Кнопки и условия: блок «если» и if/else
- Циклы и переменные: «повторять всегда», «считать», массивы и счётчики
- Чтение датчиков блоками, последовательный порт и MicroPython на Pico
- Для учителей: план урока по робототехнике с блочным кодом
В следующей части серии мы с нуля соберём проект «Мигание светодиодом» из этой статьи (схема, блоки и код на C++ рядом) в статье мигаем светодиодом с помощью блочного кода. А пока в приложении BlueGrays можно открыть упомянутые здесь проекты со схемами подключения и кодом и одним касанием перейти к блочной версии той же программы через Показать блоками или к пошаговому объяснению через Разбор блоков.
Частые вопросы
Что такое блочный код?
Блочный код — это способ собирать программы из цветных блоков, которые соединяются как кусочки пазла, вместо того чтобы набирать команды. Каждый блок — одна команда, и блоки выполняются по порядку сверху вниз. Синтаксические ошибки невозможны, поэтому дети и новички могут сосредоточиться на логике программы.
Чем блочное программирование отличается от текстового?
Понятия одни и те же: команды, порядок, условия, циклы и переменные есть и там, и там. Разница в записи: текстовому коду нужны точки с запятой, скобки и точное написание, а в блоках об этом заботится форма деталей. Для длинных и сложных программ текстовый код удобнее.
С какого возраста подходит блочный код?
Дети от 9–10 лет, которые свободно читают, могут начать вместе со взрослым, а для детей помладше есть блочные инструменты с картинками. Верхней границы возраста нет: взрослым, которые только начинают знакомство с Arduino, блоки тоже очень помогают в первых проектах.
В каких программах пишут блочный код?
Самые известные — Scratch, mBlock, Tinkercad Circuits и MakeCode: в них ты перетаскиваешь блоки на компьютере и собираешь собственную программу. В приложении BlueGrays ты читаешь блоки готовых, проверенных проектов на Arduino, ESP32 и Pico рядом с их настоящим кодом. Эти инструменты дополняют друг друга.
Можно ли программировать Arduino блоками?
Да, но плата всегда выполняет текстовый код. Инструменты вроде mBlock незаметно переводят блоки в код Arduino и загружают его. В BlueGrays блоки один к одному совпадают с кодом проекта на C++; чтобы загрузить программу, скопируй код и вставь его в Arduino IDE.
Как перейти от блочного кода к текстовому?
Самый действенный способ — смотреть на блоки и код одной и той же программы рядом. Если в нескольких проектах проследить, в какую строку превращается каждый блок, начинаешь читать код без блоков. Потом попробуй вносить небольшие изменения прямо в коде, например поменять задержку или номер пина.
Что собрать после прочтения
Все проекты
Мигающий светодиод
Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

Два попеременно мигающих светодиода
Два светодиода быстро мигают по очереди: когда один загорается, другой гаснет, будто они перебрасывают друг другу мяч. Arduino держит каждый свет включённым пятую долю секунды, а затем передаёт очеред

Светофор
Крошечная копия светофора, который ты каждый день видишь на дороге. Красный горит две секунды, жёлтый мигает на мгновение, зелёный горит две секунды, затем через жёлтый снова возвращается красный, и т

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

Включение и выключение светодиода кнопкой (вкл/выкл)
Нажми кнопку один раз — свет загорится, нажми ещё раз — погаснет, совсем как выключатель в твоей комнате. Arduino замечает каждое нажатие и переводит светодиод в противоположное состояние, выжидая кор

Мигающий светодиод на ESP32
Учит базовой работе с выходами GPIO на ESP32. Эффект мигания получается включением и выключением светодиода с цифрового пина. Это ESP32-версия классического проекта мигания на Arduino UNO; базовые команды мигания в среде Arduino те же, но расположение пинов ESP32 и уровни GPIO 3,3 V отличаются от Arduino UNO.

Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)
Первый проект серии Raspberry Pi Pico! Мигаем зелёным встроенным светодиодом, чтобы проверить, что плата работает, — классический первый опыт «Hello World». НИКАКИХ внешних компонентов, только Pico и USB-кабель. Код написан на MicroPython (официальном языке, поддерживаемом Raspberry Pi Foundation). Изучи в Thonny IDE класс machine.Pin, режим Pin.OUT, методы led.on()/off() и time.sleep(). Каждое переключение видно в выводе (REPL).

Raspberry Pi Pico: управление внешним светодиодом (макетная плата)
Следующий шаг после встроенного светодиода Pico: подключить внешний светодиод на макетной плате и управлять им через пин GP14. В этом проекте ты узнаешь, как использовать любой пин GPIO общего назначения у Pico как выход, какая полярность у светодиода (длинная ножка = анод/+, короткая = катод/–) и зачем нужен токоограничивающий резистор (220Ω). Без резистора через светодиод пойдёт слишком большой ток, и он может сгореть. Схема очень простая: Pico GP14 → резистор 220Ω → светодиод → GND.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

