Задания № 6, 16 · ОГЭ

Выполнение программы

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

Выполнение программы — это последовательное преобразование исходных данных в результат по правилам алгоритма. Компьютер читает команды, вычисляет выражения, изменяет значения переменных и проверяет условия, поэтому ответ зависит не только от текста программы, но и от порядка выполнения команд.

1. Что происходит при запуске

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

  1. Компьютер получает исходные данные: их вводит пользователь, читает из файла или они уже записаны в программе.
  2. Создаются переменные и их начальные значения.
  3. Выполняется первая команда, затем следующая, если управление не передано в другое место.
  4. Для каждой команды вычисляются нужные выражения.
  5. Полученные значения записываются в переменные, выводятся на экран или используются в следующей команде.
D
Команда и выражение

Команда задаёт действие программы: присваивание, ввод, вывод, проверку условия или повторение. Выражение состоит из чисел, переменных, знаков операций и вызовов функций и имеет значение. Например, в команде \(c = a + b\) выражение \(a+b\) вычисляется, а затем его результат присваивается переменной \(c\).

Важно отличать выполнение команды от её записи. В строке x = x + 1 правая часть вычисляется по старому значению \(x\), а затем новое значение сохраняется в \(x\). Это не равенство из математики, а присваивание.

2. Вычисление выражений

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

\[a+b\cdot c\;=\;a+(b\cdot c)\]
\[(a+b)\cdot c\;\ne\;a+b\cdot c\]
УровеньОперацииПример
1Скобки(a + b)
2Степеньa ** 2
3Умножение, деление, остатокa * b, a / b, a % b
4Сложение и вычитаниеa + b, a - b
5Сравнениеa > b, a == b
6Логические операцииnot, and, or

Тип данных влияет на результат. При целочисленном делении результат может быть целым, а при обычном делении — вещественным. Остаток \(a\bmod b\) показывает, что осталось после деления \(a\) на \(b\). Например, \(17\bmod 5=2\), потому что \(17=3\cdot5+2\).

T
Правило последовательного вычисления

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

Проверь себя

Каково значение переменной x после выполнения команд x = 7; x = x * 2 - 3?

3. Переменные и состояние программы

В каждый момент выполнения у программы есть состояние: значения всех переменных и положение управления. Команда присваивания изменяет состояние только после полного вычисления правой части. Если переменная встречается справа, используется её значение до присваивания.

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

После первой строки \(a=4\). После второй \(b=7\), но \(a\) остаётся равным 4. После третьей \(a=14\). Поэтому выводом будут числа 14 и 7. Удобно записывать состояние после каждой команды в таблице трассировки.

№
Обмен значений двух переменных

Нельзя без дополнительной переменной просто выполнить a = b; это уничтожит старое значение \(a\). Для обмена используют временную переменную.

1
Сохраняем старое значение первой переменной.
\(\displaystyle t\leftarrow a\)
2
Записываем в \(a\) старое значение \(b\).
\(\displaystyle a\leftarrow b\)
3
Записываем в \(b\) сохранённое старое значение \(a\).
\(\displaystyle b\leftarrow t\)
4
Если вначале \(a=3\), \(b=8\), получаем итог.
\(\displaystyle t=3,\quad a=8,\quad b=3\)

4. Ветвление и повторение команд

Управление может идти не только сверху вниз. В условной команде проверяется логическое выражение, результат которого — истина или ложь. Если условие истинно, выполняется одна ветвь, иначе — другая. Сравнение = в некоторых языках означает присваивание, а проверка равенства записывается как ==; конкретный синтаксис нужно знать для используемого языка.

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

Python
1s = 0
2for i in range(1, 4):
3    s = s + i
4print(s)

Цикл выполняется для \(i=1\), затем \(i=2\), затем \(i=3\). Значения \(s\) после итераций равны 1, 3 и 6. После этого условие продолжения не выполняется, и выводится 6.

!
Частые ошибки при разборе

<ul><li>Читать программу «по смыслу», пропуская отдельные команды.</li><li>Использовать первоначальное значение переменной после того, как оно уже изменилось.</li><li>Забывать о приоритете операций и скобках.</li><li>Считать лишней последнюю итерацию цикла или, наоборот, выполнять её после окончания условия.</li><li>Путать остаток от деления с частным: \(17\bmod5=2\), а не 3.</li><li>Не учитывать целочисленный тип, отрицательные числа и округление вещественных значений.</li></ul>

5. Разбор программы по шагам

Рассмотрим программу. Нужно определить значение z после её выполнения.

Python
1x = 5
2y = 2
3x = x + y * 3
4y = x % 4
5z = x - y
Показать решение Решение

Составим трассировку: после каждой строки записываем только изменившиеся значения.

ШагКомандаxyz
1x = 55——
2y = 252—
3x = x + y * 3112—
4y = x % 4113—
5z = x - y1138
1
Подставляем текущие значения в третью строку. Умножение выполняется раньше сложения.
\(\displaystyle x=5+2\cdot3=11\)
2
Вычисляем остаток от деления текущего \(x\) на 4.
\(\displaystyle y=11\bmod4=3\)
3
Вычитаем новое значение \(y\) из текущего \(x\).
z=11-3=8
№
Ответ

После выполнения всех команд \(z=8\). Ключевой момент — в строке y = x % 4 используется уже изменённое значение \(x=11\).

6. Как решать задания на выполнение программы

  1. Выпишите начальные значения переменных и входные данные.
  2. Проверьте, где начинаются и заканчиваются ветви и циклы.
  3. Для каждой строки вычислите правую часть с учётом приоритета операций.
  4. Сразу занесите новый результат в таблицу; старое значение больше не используйте.
  5. Для цикла выделите отдельную строку на каждую итерацию.
  6. В конце перепроверьте ответ обратной подстановкой или повторным проходом.
Приём для экономии времени

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

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

Быстрая проверка

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · остаток от деления
Каково значение r после a = 19; r = a % 6?
Главное за минуту

Главное

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