Задание № 6 · ОГЭ

Анализ структуры программы

Как читать исходный код по уровням: от объявлений и блоков до операторов и подпрограмм
6 мин чтенияСложность: Обновлено 29 сентября 2026

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

Из каких частей состоит программа

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

  1. Заголовок или имя программы. Он может указывать название программы и параметры запуска.
  2. Объявления. Здесь задают переменные, константы, типы данных, процедуры и функции.
  3. Основной блок. Это команды, с которых начинается выполнение программы.
  4. Подпрограммы. Именованные части кода, которые выполняют отдельную задачу и вызываются из основной программы или друг из друга.
D
Определение

Блок программы — логически выделенная последовательность операторов, выполняемая как единое целое. Блок может быть основной частью программы, телом условия или цикла, а также телом процедуры или функции. В разных языках границы блока обозначаются по-разному: например, отступами, ключевыми словами или фигурными скобками.

Границы частей важно отличать от комментариев. Комментарий объясняет код человеку, но не является командой и не влияет на результат выполнения. Интерпретатор или компилятор пропускает комментарии при обработке программы.

Объявления, операторы и выражения

Объявление сообщает программе, какие имена используются и какие значения или типы с ними связаны. Например, объявление переменной \(x\) резервирует имя для хранения значения. В некоторых языках тип указывают явно, в других он определяется по присваиваемому значению.

Python
1a = 5
2b = 2 * a + 1
3print(b)

В этом фрагменте первые две строки содержат присваивания, а третья — вызов функции вывода. Выражение \(2 \cdot a + 1\) вычисляется справа от знака присваивания, после чего результат записывается в \(b\). Поэтому на момент вывода \(b=11\).

D
Основные понятия

Оператор — команда, задающая действие программы: присваивание, ввод, вывод, проверку условия, повторение или вызов подпрограммы. Выражение — запись, значение которой можно вычислить, например \(a+b\), \(x>0\) или \(2 \cdot n\). Объявление вводит имя или описывает его свойства, а оператор изменяет состояние программы или управляет её выполнением.

\[\text{значение переменной после присваивания} = \text{результат вычисления выражения справа от } =\]

При чтении кода полезно различать знак присваивания и знак сравнения. В Python и многих других языках \(=\) означает записать значение, а \(==\) — проверить равенство. Условия часто записываются с помощью простого условия или составного условия.

Порядок выполнения и вложенность блоков

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

КонструкцияКак читаетсяЧто происходит
ПоследовательностьСверху внизВыполняются все команды по очереди
УсловиеЕсли условие истинно, то...Выполняется выбранный блок; возможна ветка иначе
ЦиклПовторять блокОдин блок выполняется несколько раз
Вызов подпрограммыВыполнить имя(...)Управление передаётся процедуре или функции

Вложенность показывает, какие команды относятся к блоку. В Python это отступы, в Pascal — ключевые слова begin и end, в C++ — фигурные скобки. При анализе сначала определите внешнюю конструкцию, затем рассмотрите команды внутри неё.

Микро-проверка

Что произойдёт при выполнении кода: x = 3; x = x + 4; print(x)?

Подпрограммы: процедуры и функции

Подпрограмма — отдельный именованный блок команд, предназначенный для многократного использования. Процедура обычно выполняет действие, а функция дополнительно возвращает значение. Перед выполнением подпрограмму объявляют, а затем вызывают по имени, иногда передавая ей аргументы.

Python
1def square(n):
2    return n * n
3
4x = 4
5print(square(x))

При чтении этого кода не следует выполнять тело функции сразу после строки с её объявлением. Сначала функция только создаётся. Её тело выполняется при вызове \(square(x)\). Аргумент \(x=4\) подставляется вместо параметра \(n\), функция возвращает \(4\cdot4=16\), затем число выводится.

Приём для анализа

Составьте список имён и их текущих значений. При каждом присваивании обновляйте значение, при условии проверяйте только нужную ветвь, а при вызове функции временно переходите в её тело. После команды return вернитесь к месту вызова.

Разобранный пример: читаем программу по блокам

Определим, что выведет программа. В ней есть функция, цикл и условие. Для анализа выделим объявления, основной блок и вложенные команды.

Python
1def add_if_even(s, x):
2    if x % 2 == 0:
3        return s + x
4    return s
5
6s = 0
7for x in range(1, 5):
8    s = add_if_even(s, x)
9print(s)
1
Функция объявляется до основного блока. Она прибавляет x к s только при чётном x.
\(\displaystyle x\bmod 2=0 \Rightarrow \text{return } s+x;\quad x\bmod 2\ne0 \Rightarrow \text{return } s\)
2
Цикл range(1, 5) перебирает значения 1, 2, 3, 4. Начальное значение суммы равно нулю.
\(\displaystyle s_0=0\)
3
При x=1 число нечётное, поэтому функция возвращает прежнюю сумму.
\(\displaystyle s_1=0\)
4
При x=2 число чётное, поэтому к сумме прибавляется 2.
\(\displaystyle s_2=s_1+2=2\)
5
При x=3 число нечётное, сумма не изменяется.
\(\displaystyle s_3=2\)
6
При x=4 число чётное, к сумме прибавляется 4.
\(\displaystyle s_4=s_3+4=6\)
№
Ответ к примеру

После завершения цикла \(s=6\). Команда print(s) выведет 6. Важный шаг — не прибавлять нечётные числа: вызов функции каждый раз проходит через условие.

\[s=2+4=6\]

Алгоритм чтения исходного кода

Для экзаменационных заданий удобно использовать один и тот же порядок действий. Он снижает риск пропустить изменение переменной или неправильно понять вложенность.

  • Найдите начало и конец основной части программы.
  • Отметьте объявления переменных, констант, функций и процедур.
  • Разделите команды на последовательности и вложенные блоки.
  • Определите порядок выполнения: последовательность, условие, цикл, вызов подпрограммы.
  • Составляйте таблицу значений переменных после каждой важной команды.
  • Проверьте, какая команда выполняется последней и что именно выводится.
!
Частые ошибки

Не выполняйте команды, находящиеся внутри ложной ветви условия. Не считайте объявление функции её вызовом. Следите за тем, что переменная может изменяться на каждой итерации цикла. Также не путайте локальную переменную внутри функции с одноимённой переменной основной программы: области видимости могут быть различными.

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

Q
Быстрый тест по теме

Проверь себя

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · части программы
Какая часть программы хранит команды, выполняемые после запуска основного блока?
Главное за минуту

Главное

  • Структура программы включает объявления, основной блок, операторы и подпрограммы.
  • Оператор задаёт действие, выражение вычисляется, а объявление вводит имя или описывает его свойства.
  • Код читают сверху вниз, учитывая условия, циклы, вызовы функций и вложенность блоков.
  • При трассировке фиксируют значения переменных после важных команд.
  • Объявление подпрограммы не запускает её: выполнение начинается при вызове.