Введение в программирование
Введение в программирование
Представьте, что вы хотите научить собаку приносить тапки. Вы не объясняете ей это словами, как другу: «Пожалуйста, сбегай в прихожую, найди мои тапки под креслом и верни их сюда». Вместо этого вы говорите коротко и чётко: «Тапки!», — и делаете жест. Собака учится понимать, что именно означает эта команда, и связывает её с конкретным действием.
Тапки:
Сбегай в прихожую
Проверь под креслом
Если мои тапки под креслом, то верни их сюда
Тапки!
Тапки!
Тапки!
Компьютер — как очень послушный, но очень буквальный помощник. Он не понимает намёков, шуток или эмоций. Он выполняет только то, что вы ему сказали — и только так, как вы сказали. Чтобы с ним «договориться», нужен особый язык — код.
Что такое код?
Код — это текстовые инструкции, написанные по строгим правилам, которые понимает компьютер. Это просто список шагов, как в рецепте бутерброда:
- Возьми хлеб.
- Намажь масло.
- Положи ломтик сыра.
- Накрой вторым ломтиком хлеба.
Если перепутать шаги — например, положить сыр до масла — бутерброд получится странным. Так и с кодом: порядок и точность критичны. Даже одна лишняя запятая может «сломать» программу.
Мы можем понимать буквально всё через призму алгоритма:
1. Взять чайник и наполнить его водой до отметки
2. Поставить чайник на включенную конфорку
3. Дождаться закипания воды
4. Взять чашку и положить в неё чайную ложку заварки
5. Залить заварку кипятком из чайника
6. Накрыть чашку блюдцем и подождать три минуты
7. Добавить сахар по вкусу
8. Размешать ложкой до полного растворения сахара
9. Напиток готов к употреблению
Но почему компьютеру нужны текстовые инструкции, если он — машина? Ответ — в его природе.
Как компьютер «думает»: язык нулей и единиц
Внутри любого компьютера — миллиарды крошечных переключателей, называемых транзисторами. Они работают, как микроскопические выключатели света:
- «Включено» → электричество идёт → обозначается как 1
- «Выключено» → электричество не идёт → обозначается как 0
Такой язык из нулей и единиц называется двоичным кодом (binary). Всё, что вы видите на экране — текст, картинки, видео, игра — в итоге превращается в последовательности вроде:
01001001 00100000 01101100 01101111 01110110 01100101 00100000 01001001 01010100
(Кстати, это фраза «I love IT» в двоичном виде.)
Компьютер «понимает» только такие последовательности. Но писать программы вручную на двоичном коде — как строить дом, откручивая каждый винтик по одному: возможно, но безумно долго и легко ошибиться.
Поэтому люди придумали языки программирования — промежуточные языки, ближе к человеческому, но всё ещё точные и формальные. Пример:
print("Привет, Вселенная!")
Эту строчку легко прочитать человеку. А специальная программа — компилятор или интерпретатор — переведёт её в двоичный код, который поймёт процессор.
📌 Важно: код — это язык общения между человеком и машиной. Человек описывает логику — машина исполняет.
Код вокруг нас: команды в повседневной жизни
Вы уже сталкивались с кодом — даже если не знали об этом.
-
Лампочка с выключателем — простейшая «программа»:
ЕСЛИ нажата кнопка → ВКЛЮЧИТЬ свет.
Если выключатель — двухклавишный:
ЕСЛИ нажата КЛАВИША_1 → включить верхний свет
ЕСЛИ нажата КЛАВИША_2 → включить подсветку -
Робот-пылесос получает инструкции:
ДВИГАТЬСЯ прямо 2 метра → ПОВЕРНУТЬ направо → ПРОВЕРИТЬ, есть ли препятствие → ЕСЛИ есть — ОСТАНОВИТЬСЯ и выбрать другой путь -
Игрушка на ИК-пульте (инфракрасном): когда вы нажимаете кнопку «Вперёд», пульт посылает кодированный сигнал — короткую вспышку инфракрасного света в определённом ритме. Машина «расшифровывает» этот ритм и понимает: «двигайся вперёд».
Эти примеры показывают главную идею:
Код — это не обязательно текст на экране. Это любая система чётких, однозначных команд, по которым что-то работает.
Как устроен процесс: от идеи до исполнения
Рассмотрим это на схеме. Представьте, что вы хотите написать программу, которая здоровается с пользователем по имени.
Разберём шаги:
- Идея — то, что вы хотите, чтобы программа сделала.
- Код — вы описываете идею словами, которые понимает язык программирования (например, Python, JavaScript).
- Перевод — программа-посредник превращает ваш код в машинные команды.
- Исполнение — процессор читает эти команды (в виде импульсов тока) и заставляет память, экран, динамик — работать так, как нужно.
- Результат — человек получает то, что ожидал.
Заметьте: компьютер не понимает смысла. Он не знает, что такое «привет» или «Аня». Он просто копирует символы из памяти на экран — как курьер, который доставляет посылку, не зная, что внутри.
Как строится код
Если представить программу как дом, то код — это конструктор с инструкцией. В нём есть базовые элементы, из которых можно собрать что угодно — от калькулятора до космического симулятора. Давайте познакомимся с тремя главными «деталями»: переменная, условие, цикл.
Переменная
Представьте, что вы убираете игрушки в коробки. На каждую вы клеите этикетку: «машинки», «кубики», «мягкие игрушки». Внутрь можно класть разное — сегодня три машинки, завтра пять. Этикетка остаётся той же, а содержимое — меняется.
Переменная в коде — это как такая коробка с этикеткой.
- Имя переменной — это этикетка (например,
возраст,счёт,имя_игрока). - Значение — то, что лежит внутри (например,
12,100500,"Алиса").
Пример на Python:
имя = "Саша"
возраст = 10
счёт = 0
Здесь мы «наклеили» три этикетки и положили в коробки данные. Позже можно изменить содержимое:
счёт = счёт + 10 # теперь в коробке "счёт" лежит 10
возраст = возраст + 1 # Саше исполнилось 11
🔍 Почему
счёт = счёт + 10не противоречит математике?
В математике такое уравнение бессмысленно:x = x + 10→0 = 10.
Но в коде это команда, а не равенство:
«Возьми текущее значение из коробкисчёт, прибавь 10, и положи результат обратно в ту же коробку».
Переменные — основа любого взаимодействия с пользователем. Без них невозможно запомнить, что ввёл человек, сколько очков набрал игрок или какая температура за окном.
Условие — развилка на дороге
Жизнь полна выбора:
- Если на улице дождь — взять зонт.
- Если в холодильнике молоко закончилось — купить в магазине.
- Если в игре здоровье ≤ 0 — показать экран «Game Over».
В коде такие развилки реализуются через условные конструкции — чаще всего словами ЕСЛИ (if), ИНАЧЕ (else).
Пример: программа-помощник для сбора рюкзака в поход.
погода = "дождь" # ← можно изменить на "солнечно"
ЕСЛИ погода == "дождь":
добавить_в_рюкзак("дождевик")
добавить_в_рюкзак("резиновые сапоги")
ИНАЧЕ:
добавить_в_рюкзак("кепку")
добавить_в_рюкзак("крем от солнца")
Обратите внимание на два знака = в погода == "дождь":
- Один
=— это присвоение (положить в коробку). - Два
==— это сравнение (проверить, совпадает ли содержимое).
Можно строить сложные условия:
ЕСЛИ температура < 0 И идёт_снег:
надеть("тёплую шапку")
ИНАЧЕ ЕСЛИ температура > 30:
надеть("лёгкую рубашку")
ИНАЧЕ:
надеть("ветровку")
Чем больше условий, тем «умнее» становится программа. Но важно не запутаться — как в лабиринте, где каждая дверь ведёт к новой развилке.
Цикл
Повторение — основа обучения и работы. Чтобы наточить карандаш, вы крутите его в точилке 10–15 раз. Чтобы подняться на 5-й этаж, делаете ~70 шагов. В реальной жизни мы не считаем каждый шаг — просто идём. Но компьютеру нужно сказать: «Сделай это N раз».
Для этого существуют циклы — конструкции, которые повторяют блок команд.
Цикл ПОВТОРИТЬ N раз (for)
ПОВТОРИТЬ 5 раз:
сказать("Привет!")
→ На экране появится:
Привет!
Привет!
Привет!
Привет!
Привет!
В более зрелых языках (например, Python) это выглядит так:
for i in range(5):
print("Привет!")
Здесь i — счётчик: он автоматически меняется от 0 до 4, помогая отслеживать, на каком шаге мы находимся.
Цикл ПОКА условие истинно (while)
стакан = 0 # мл воды
ПОКА стакан < 200: # стакан вмещает 200 мл
налить(50) # добавляем по 50 мл
стакан = стакан + 50
сказать("Теперь в стакане", стакан, "мл")
Вывод:
Теперь в стакане 50 мл
Теперь в стакане 100 мл
Теперь в стакане 150 мл
Теперь в стакане 200 мл
На 250 мл цикл не пойдёт — условие стакан < 200 станет ложным, и повторение остановится.
⚠️ Опасность: если забыть изменить условие внутри цикла — получится бесконечный цикл.
Пример аварии:while температура < 100:включить_нагрев() # ← но не измеряем температуру снова!Программа «застрянет», потому что
температураникогда не обновится.
Почему столько языков программирования?
Вы, наверное, слышали названия: Python, JavaScript, Scratch, C++, Lua, Rust… Зачем их так много? Разве нельзя договориться об одном?
Представьте инструменты:
- Молоток — чтобы вбить гвоздь.
- Отвёртка — чтобы закрутить шуруп.
- Паяльник — чтобы соединить провода в наушниках.
Все они «делают дырки» или «соединяют», но в разных ситуациях. Так и с языками:
| Язык | Для чего подходит | Примеры использования | «Возраст» обучения |
|---|---|---|---|
| Scratch | Первые шаги, визуальное программирование | Анимации, простые игры | 7–12 лет |
| Python | Универсальный, простой синтаксис | Научные расчёты, веб, анализ данных, обучение ИИ | 10+ |
| JavaScript | Всё, что работает в браузере | Интерактивные сайты, игры онлайн | 12+ |
| Lua | Встраивается в другие программы | Скрипты в играх (Roblox, Minecraft моды) | 11+ |
| C++ | Высокая скорость и контроль над железом | Видеоигры, операционные системы | 14+ |
✅ Главное — логика. Освоив
переменную,условие,циклв Scratch, вы легко перенесёте эти знания в Python — как научившись ездить на велосипеде, легко освоить самокат.
Ошибки
Когда вы учитесь кататься на велосипеде, падения не означают, что вы «не созданы для езды». Они показывают: «Слишком резко повернул», «Ногу не поставил вовремя», «Скорость не сбавил на повороте».
То же — с кодом. Ошибки (bugs) неизбежны. Даже у самых опытных программистов в коде бывают опечатки, логические недосмотры или неверные предположения. Разница в том, что профессионалы умеют читать сообщения об ошибках и превращают их в шаги к исправлению.
Три основных типа ошибок
Синтаксические ошибки («опечатки»)
Это нарушения правил языка — как грамматические ошибки в письме. Компьютер не может даже начать выполнять такой код.
Пример (JavaScript):
console.log("Привет"
→ пропущена закрывающая скобка и кавычка.
Сообщение в консоли:
SyntaxError: Unexpected end of input
(«Синтаксическая ошибка: неожиданный конец ввода»)
💡 Как исправить: внимательно сверить скобки, кавычки, точки с запятой. Браузер даже подсвечивает строку с ошибкой.
Ошибки времени выполнения («сломалось при запуске»)
Код синтаксически верен, но «ломается» в процессе работы — например, при обращении к несуществующему объекту.
Пример:
let возраст = "пятнадцать"; // текст, а не число
let через_год = возраст + 1;
console.log(через_год); // → "пятнадцать1"
Ожидали 16, получили "пятнадцать1". Почему? Потому что в JavaScript при сложении строки и числа — число превращается в строку, и происходит склеивание ("пятнадцать" + "1").
Это не ошибка в строгом смысле (программа не упала), но логическая неточность. Такие ошибки самые коварные — программа «работает», но даёт неверный результат.
Логические ошибки («думал одно — сделал другое»)
Код запускается, не падает, не ругается — но ведёт себя не так, как задумано.
Пример:
// Хотим проверить, чётное ли число
let n = 4;
if (n % 2 = 0) { // ← ОЙ! Должно быть ==, а не =
console.log("Чётное");
}
Здесь n % 2 = 0 — это попытка присвоить 0 остатку от деления, что запрещено (остаток — результат вычисления, его нельзя перезаписать). В некоторых языках это вызовет ошибку, в JavaScript — молчаливый сбой или false.
Правильно:
if (n % 2 === 0) { // тройное === — строгое сравнение (значение + тип)
console.log("Чётное");
}
🔎 Строгий совет: всегда используйте
===и!==вместо==/!=, если не уверены. Это предотвращает неожиданные приведения типов.
Как искать ошибки? Три приёма
-
Читайте сообщение. Оно почти всегда говорит:
- что пошло не так (
Cannot read property 'x' of undefined), - где (файл, строка, столбец),
- иногда — почему.
- что пошло не так (
-
Выводите промежуточные значения через
console.log():
let a = 5;
let b = 0;
console.log("a =", a, "b =", b); // ← проверяем до деления
let c = a / b;
console.log("c =", c); // → Infinity — ага, деление на ноль!
- Разбивайте задачу на мелкие шаги.
Вместо:— лучше:let результат = преобразовать(получитьДанные().фильтр(x => x > 0).map(y => y * 2));
let данные = получитьДанные();
console.log("Данные:", данные);
let положительные = данные.filter(x => x > 0);
console.log("Положительные:", положительные);
let удвоенные = положительные.map(y => y * 2);
console.log("Удвоенные:", удвоенные);
let результат = преобразовать(удвоенные);
Каждый console.log — как контрольный пункт на маршруте. Ошибка не пройдёт незамеченной.
📌 Философия программиста:
«Код пишется один раз, а читается — сотни раз. Пишите так, чтобы через месяц (или коллега) понял вашу логику с первого взгляда».
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). А теперь — ключевой момент — графические блоки — это не игрушка и не ненастоящее программирование. Это то же самое, только в другой форме. Scratch — это веб-платформа — чтобы начать, достаточно открыть браузер и перейти на сайт https — //scratch.mit.edu. Там вы увидите большую зелёную кнопку Создать (или Создавай, Начни создавать) — она… Edublocks — это такой же конструктор, только для программирования. Здесь — имя — переменная, в которой лежит текст Алиса, возраст — переменная со значением 12, любит_роботов — переменная, в которой записан ответ на вопрос любит ли Алиса роботов? — и ответ True (да) Когда вы напишете программу на Python, компьютер не может сразу её выполнить. Ваш текст — это просто файл с символами. Его нужно перевести в команды, которые поймёт процессор. JavaScript — это работник, который умеет читать план и делать всё это по вашей команде.Блоки
Scratch
Edublocks
Типы данных
Программа на Python
Программа на JavaScript