Основы программирования складываются из восьми понятий, на которых построена любая программа: алгоритм, переменные, типы данных, операторы, условия, циклы, функции и коллекции. К ним добавляется девятый навык, умение читать ошибки. Синтаксис у языков разный, а эти идеи одинаковые, поэтому выучить их достаточно один раз и на одном языке.
Ниже каждое понятие разобрано на коротком примере на Python, с реальным выводом, а в конце все они собраны в одну программу на 20 строк. Если вы ещё выбираете, с чего вообще начинать и сколько времени закладывать, сначала загляните в план «Программирование с нуля: с чего начать», а сюда возвращайтесь за самой базой.
Что такое программирование простыми словами

Программирование означает запись инструкций для компьютера на языке, который он умеет выполнить. Компьютер не догадывается, что вы имели в виду. Он делает ровно то, что написано, в том порядке, в котором написано.
Отсюда главное правило новичка: если программа работает не так, почти всегда она делает именно то, что вы ей сказали. Ошибка сидит в инструкции.
Человек пишет код на языке программирования: Python, JavaScript, Java, C. Процессор этот текст не понимает, ему нужны машинные команды. Перевод делает специальная программа, и устроен он двумя способами.
| Способ | Как работает | Примеры языков |
|---|---|---|
| Компиляция | Весь код заранее переводится в готовый исполняемый файл, потом файл запускают | C, C++, Go, Rust |
| Интерпретация | Программа-интерпретатор читает код и сразу выполняет его | Python, JavaScript, PHP |
Для основ эта разница почти не важна. Важнее, что интерпретируемый язык удобнее для первых шагов: написали строку, запустили, увидели результат. Поэтому примеры ниже на Python. Подробнее о выборе первого языка читайте в обзоре языков программирования для начинающих.
Из чего состоят основы программирования

Ниже карта понятий. Каждое из них разобрано дальше по тексту, а по ссылке в правой колонке лежит отдельный подробный материал.
| Понятие | Что делает | Пример из жизни | Подробно |
|---|---|---|---|
| Алгоритм | Задаёт порядок шагов решения | Рецепт блюда | раздел ниже |
| Переменная | Хранит значение под именем | Подписанная коробка | что такое переменная |
| Тип данных | Определяет, что лежит в переменной и что с этим можно делать | Число, текст, «да/нет» | логический тип |
| Оператор | Считает, сравнивает, соединяет | Знаки на калькуляторе | операторы в Python |
| Условие | Выбирает ветку по ситуации | «Если дождь, беру зонт» | раздел ниже |
| Цикл | Повторяет действие | Пройти все пункты списка покупок | цикл while |
| Функция | Даёт имя куску кода, чтобы звать его снова | Кнопка «сварить кофе» | функции в Python |
| Коллекция | Хранит много значений вместе | Список покупок, телефонная книга | списки в Python |
Порядок в таблице совпадает с порядком изучения. Каждое следующее понятие опирается на предыдущие: цикл без переменной не написать, функцию без условий и циклов почти не наполнить.
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяАлгоритм: сначала шаги, потом код
Алгоритмом называют конечную последовательность шагов, которая приводит к результату. Его можно записать обычными словами задолго до того, как вы откроете редактор кода.
Задача: посчитать, сколько денег ушло на покупки дороже 1 000 ₽. Сначала словами:
- Взять список цен.
- Завести счётчик суммы, равный нулю.
- Пройти по ценам по одной.
- Если цена больше 1 000, прибавить её к счётчику.
- Показать счётчик.
Теперь то же самое на Python. Каждая строка кода соответствует шагу из списка:
prices = [450, 1200, 300, 2500]
total = 0
for price in prices:
if price > 1000:
total = total + price
print(total)
3700
Чаще всего новичок застревает на том, что непонятно, какие шаги вообще нужны. Синтаксис тут вторичен. Привычка сначала проговорить решение словами экономит больше времени, чем знание десятка функций.
Данные: переменные, типы и операторы
Переменные
Переменная хранит значение под именем. Записали age = 27, и дальше в программе можно писать age вместо числа. Значение можно поменять, имя останется тем же.
Имена лучше давать по смыслу: price и total читаются сами, а a и x1 через неделю не вспомнит даже автор. Подробный разбор с правилами именования есть в статье о переменных в программировании.
Типы данных
У каждого значения есть тип. Он определяет, какие действия с значением допустимы. Четыре базовых типа есть почти в любом языке:
name = "Анна"
age = 27
height = 1.68
is_student = False
print(type(name), type(age), type(height), type(is_student))
<class 'str'> <class 'int'> <class 'float'> <class 'bool'>
str: строка, то есть текст в кавычках.int: целое число, о нём есть отдельный материал про тип int.float: дробное число, с точкой вместо запятой.bool: логическое значение,TrueилиFalse.
Тип важен потому, что одна и та же операция для разных типов значит разное. Вот что происходит со сложением:
print("2" + "2")
print(2 + 2)
print(int("2") + 2)
print("2" + 2)
22
4
4
TypeError: can only concatenate str (not "int") to str
Две строки склеились в «22», два числа сложились в 4. Строку и число Python складывать отказывается и останавливает программу с ошибкой. Решение: явно превратить строку в число функцией int(), как в третьей строке. С этим новички сталкиваются, когда читают число с клавиатуры: input() всегда возвращает строку, разбор есть в статье про ввод числа в Python.
Операторы
Операторы делают с данными действия. Арифметические считают, операторы сравнения отвечают «да» или «нет», логические соединяют несколько условий.
print(17 / 5)
print(17 // 5)
print(17 % 5)
print(2 ** 10)
print(7 > 3 and 2 > 5)
3.4
3
2
1024
False
Обычное деление / даёт дробь. Оператор // делит с округлением вниз, а % возвращает остаток, так их и описывает учебник в документации Python. Остаток нужен чаще, чем кажется: по нему проверяют чётность и делимость. Знак ** возводит в степень. Последняя строка вернула False, потому что and требует, чтобы были верны обе части. Все знаки с примерами собраны в материале об операторах в Python.
Управление ходом программы: условия и циклы
Без условий и циклов программа выполняется строго сверху вниз, по одной строке. Эти две конструкции делают её «умной»: она начинает выбирать и повторять.
Условия
Условие проверяет выражение и выполняет одну из веток. В Python для этого есть if, elif (иначе если) и else (иначе):
balance = 350
price = 500
if balance >= price:
print("Оплата прошла")
elif balance > 0:
print("Не хватает", price - balance, "₽")
else:
print("На счёте пусто")
Не хватает 150 ₽
Python проверяет ветки по очереди и выполняет первую, где условие верно. Остальные он пропускает, даже если их условие тоже подошло бы.
Обратите внимание на отступы. Строки внутри ветки сдвинуты на четыре пробела, и это не украшение. В документации прямо сказано: отступ — это способ группировать инструкции в Python. Без отступа программа не запустится вообще.
Циклы
Цикл повторяет блок кода. Есть два основных вида:
forперебирает готовый набор значений: элементы списка, буквы строки, числа из диапазона.whileповторяет блок, пока условие остаётся верным. Сколько будет повторов, заранее может быть неизвестно.
for day in ["пн", "вт", "ср"]:
print("Тренировка:", day)
count = 3
while count > 0:
print("Осталось попыток:", count)
count = count - 1
Тренировка: пн
Тренировка: вт
Тренировка: ср
Осталось попыток: 3
Осталось попыток: 2
Осталось попыток: 1
В while легко ошибиться: забыть строку count = count - 1. Тогда условие никогда не станет ложным, и программа будет печатать одно и то же бесконечно. Как этого избежать и как выйти из цикла досрочно, подробно разобрано в статье про цикл while.
Функции и коллекции
Функции
Функцией называют кусок кода с именем. Его пишут один раз, а вызывают сколько угодно, подставляя разные данные. Без функций код быстро превращается в копипасту: одно и то же вычисление в пяти местах, и при правке одно из них легко забыть.
def with_discount(price, percent):
return price - price * percent / 100
print(with_discount(2000, 15))
print(with_discount(990, 10))
1700.0
891.0
Здесь price и percent называются параметрами, это значения на входе. Слово return отдаёт результат наружу. Результат вышел дробным, потому что деление / в Python всегда возвращает float.
Как передавать параметры по умолчанию и чем return отличается от print, читайте в материале о функциях в Python. Функция может вызывать и саму себя, такой приём называется рекурсией, но для основ это следующий шаг.
Списки и словари
Когда значений много, отдельная переменная на каждое не годится. Для этого есть коллекции. Две главные:
- Список хранит значения по порядку. Обращение по номеру, и нумерация начинается с нуля.
- Словарь хранит пары «ключ — значение». Обращение по ключу, как к слову в словаре.
cart = ["хлеб", "молоко", "сыр"]
cart.append("яблоки")
print(cart[0], len(cart))
stock = {"хлеб": 12, "молоко": 0}
print(stock["хлеб"])
print(stock.get("сыр", "нет в базе"))
хлеб 4
12
нет в базе
Метод append() добавил элемент в конец списка, len() посчитал, сколько их стало. В словаре метод get() вернул запасное значение, потому что ключа «сыр» в нём нет. Если обратиться через квадратные скобки к отсутствующему ключу, программа упадёт с ошибкой KeyError.
В документации Python словари описаны так: в отличие от последовательностей, они индексируются ключами. Методы списков с примерами собраны в статье о списках в Python.
Ошибки и отладка: как читать сообщения программы

Ошибки появляются у всех и каждый день, у опытных разработчиков тоже. Разница в том, что опытный человек читает сообщение, а новичок пугается и копирует его в поиск целиком. Почти всегда в тексте ошибки уже написано, в какой строке проблема и что именно сломалось.
Документация Python выделяет два типа ошибок: синтаксические ошибки и исключения. На практике полезно помнить и о третьем виде, когда программа работает, но считает не то.
| Вид ошибки | Когда видно | Пример |
|---|---|---|
| Синтаксическая | Программа не запускается вовсе | Забыли отступ или двоеточие |
| Исключение | Программа падает во время работы | Обратились к пятому элементу списка из двух |
| Логическая | Программа работает, но результат неверный | Написали > вместо >= |
Синтаксическая ошибка выглядит так. Python прямо пишет, чего не хватает и в какой строке:
if True:
print("привет")
IndentationError: expected an indented block after 'if' statement on line 1
Переводим: «ожидался блок с отступом после инструкции if в строке 1». Решение: сдвинуть вторую строку на четыре пробела.
Исключение возникает уже во время работы. Например, в списке два элемента, а мы просим третий:
items = ["кофе", "чай"]
print(items[2])
IndexError: list index out of range
Читать такое сообщение лучше снизу вверх: последняя строка называет тип ошибки и причину, строки выше показывают, где она случилась. Здесь индекс 2 вышел за пределы списка, потому что номера элементов 0 и 1.
Ошибки, которые можно предвидеть, перехватывают конструкцией try и except. Тогда вместо падения программа выполнит запасной вариант:
text = "сорок"
try:
number = int(text)
except ValueError:
print("Нужно число цифрами, а пришло:", text)
Нужно число цифрами, а пришло: сорок
Логические ошибки ловят иначе: выводят промежуточные значения через print() и сверяют с тем, что ожидали получить. Способ скучный, зато на старте он работает почти всегда.
Собираем основы в одну программу
Теперь соберём все понятия вместе. Программа считает расходы по категориям и помечает те, где потрачено больше 1 000 ₽:
def category_total(expenses, category):
total = 0
for item in expenses:
if item["category"] == category:
total += item["amount"]
return total
expenses = [
{"category": "еда", "amount": 650},
{"category": "транспорт", "amount": 120},
{"category": "еда", "amount": 1340},
{"category": "кино", "amount": 900},
]
for name in ["еда", "транспорт", "кино"]:
spent = category_total(expenses, name)
mark = "много" if spent > 1000 else "норма"
print(f"{name}: {spent} ₽ ({mark})")
еда: 1990 ₽ (много)
транспорт: 120 ₽ (норма)
кино: 900 ₽ (норма)
Разберём, где здесь каждое понятие:
- алгоритм: для каждой категории пройти все расходы и сложить подходящие;
- переменные и типы:
totalиspentхранят целые числа, названия категорий хранятся строками; - коллекции: список
expenses, внутри которого словари с двумя ключами; - функция:
category_total()считает сумму для любой категории; - цикл: два
for: внутри функции по расходам и снаружи по категориям; - условия:
ifотбирает нужную категорию, а запись"много" if … else "норма"выбирает пометку в одну строку; - операторы:
==,>и+=, то есть «прибавить к тому, что уже есть».
В последней строке стоит f-строка: буква f перед кавычками позволяет подставлять переменные прямо в текст, подробнее об этом в статье про f-строки. Попробуйте добавить в список новую трату или категорию и посмотрите, как изменится вывод. Такие эксперименты учат быстрее, чем перечитывание теории.
Как учить основы и в каком порядке
Порядок разделов в этой статье и есть рабочий порядок изучения. Не переходите к следующему понятию, пока предыдущее не получается без подсказки.
- Выберите один язык и не меняйте его, пока не пройдёте все восемь понятий. Для старта подходят Python и JavaScript, почему именно они, объясняем в материале о языке Python.
- Поставьте интерпретатор с официального сайта python.org и запустите первую программу. Как это сделать, показано в статье про Hello World на Python.
- На каждое понятие решайте задачи, а не только читайте. Готовый набор от простых к сложным: 30 задач по Python для начинающих.
- Сохраняйте код в Git с первых недель: история правок пригодится и для отката, и для портфолио. Как это работает, объясняет статья «Git простыми словами».
- ООП оставьте на потом. Классы и объекты понятны, только когда функции и коллекции уже привычны. Когда дойдёте, начните с материала «ООП простыми словами».
Учебник на русском у Python есть свой: официальное руководство проходит те же темы в том же порядке и подходит как справочник к любому курсу.
Частые ошибки новичков
Эти ошибки касаются подхода к учёбе. Из-за них люди бросают учёбу чаще, чем из-за сложности самого материала.
- Смотрят видео и не пишут код. После урока кажется, что всё понятно, но перед пустым файлом не получается ни строки. Решение: каждый пример из урока набирать руками и менять в нём хотя бы одно число.
- Прыгают между языками. Неделя Python, неделя JavaScript, потом C++, потому что «он быстрее». Основы при этом не закрепляются ни в одном. Решение: один язык до конца базы, второй язык потом осваивается в разы быстрее.
- Сразу берутся за большой проект. Свой мессенджер или игра на первом месяце почти всегда заканчиваются разочарованием. Решение: маленькие задачи на 10–30 строк, по одной на каждое понятие.
- Копируют ошибку в поиск, не читая. Ответ часто уже в последней строке сообщения. Решение: прочитать её, перевести и найти строку, на которую указывает Python.
- Просят нейросеть написать решение целиком. Код появляется, а навык нет. Решение: просить у ассистента объяснение ошибки или подсказку к следующему шагу, а сам код писать самому.
Где освоить основы программирования системно
Восемь понятий из этой статьи можно разобрать за выходные, а чтобы уверенно применять их, нужно несколько недель практики. С наставником, который проверяет код и объясняет ошибки, этот путь короче. Ниже курсы по основам программирования из нашего каталога: сравните программу, длительность и формат проверки заданий.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Алгоритмы и структуры данных Перейти на сайт курса | 78 840 ₽ | 2190 ₽/мес. | 5 месяцев | Обзор курса | |
| Алгоритмы и структуры данных. Базовый курс Перейти на сайт курса | 15 000 ₽ | 417 ₽/мес. | 1 месяц | Обзор курса | |
| Алгоритмы и структуры данных на Python. Базовый курс Перейти на сайт курса | 15 000 ₽ | 417 ₽/мес. | 1 месяц | Обзор курса | |
| Алгоритмы и циклы Перейти на сайт курса | 4200 ₽ | 2690 ₽/мес. | Обзор курса | ||
| Информатика и вычислительная техника Перейти на сайт курса | 32 900 ₽ | 2633 ₽/мес. | 512 часов | Обзор курса |
Больше программ — в полном каталоге курсов по основам программирования
Больше вариантов, в том числе бесплатные вводные курсы, собрано в разделе курсов по основам программирования. Если уже решили учить Python, смотрите подборку курсов по Python.




