На Горох
Информатика

§ 5. Запись результатов выполнения алгоритма

"Информатика", Горячев А.В., Суворова Н.И.

Объяснение темы В оглавлении: § 5. Запись результатов выполнения алгоритма

Кратко о теме

Чтобы проверить алгоритм и понять, откуда взялся его результат, полезно проследить выполнение каждой команды. Для этого записывают исходные данные, отмечают изменения переменных и фиксируют вывод. Такая пошаговая запись называется трассировкой. Она помогает не перепутать старые и новые значения, правильно выбрать ветвь при проверке условия и учесть каждое повторение цикла. Главное — выполнять команды в заданном порядке.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

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

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

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

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

Как это устроено

Перед выполнением алгоритма определяют исходные данные и начальные значения переменных. Иначе неизвестно, с чего начинает работу исполнитель, а значит, нельзя правильно вычислить результат первой команды. Например, команда x := x + 1 требует знать начальное значение x. Его записывают до начала трассировки, чтобы отличать исходное состояние от последующих изменений.

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

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

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

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

Что фиксируют при пошаговой записи выполнения алгоритма

Момент выполненияКоманда или проверкаЗначения переменныхВывод
Начало: исходные данные и начальные значенияНачальные условияИсходное состояниеПока отсутствует
Выполнение команды присваиванияПрисваиваниеНовое значение после командыЕсли команда выводит данные
Проверка условия и выбор ветвиУсловие, результат проверкиСостояние перед выбранной ветвьюЕсли предусмотрен вывод
Очередное повторение циклаКоманды тела и проверка условияИзменения на этой итерацииЕсли предусмотрен вывод
Завершение: итоговые значения и результатОстановка алгоритмаКонечное состояниеИтоговый вывод

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

Разбор задач

Задача 1. Для алгоритма x := 4; y := x + 3 запиши значения переменных после каждой команды. Сначала нужно понять, какие значения заданы в начале и какие вычисляются позже. В алгоритме две команды, поэтому проследим их по очереди.

  1. До первой команды значение x ещё не задано, а команда x := 4 присваивает переменной число 4. После выполнения получаем x = 4.
  2. Теперь выполняется y := x + 3. Подставляем текущее значение x, то есть 4, и вычисляем 4 + 3 = 7; затем записываем y = 7.

Ответ: после первой команды x = 4, после второй x = 4 и y = 7. Значение x сохраняется, поскольку вторая команда меняет только y. Именно поэтому выражение для y вычисляется с уже полученным значением x.

Задача 2. Проследи алгоритм: n := 7; если n > 5, то n := n - 2, иначе n := n + 2. Нужно сначала проверить условие, а не выполнять обе команды из ветвей. После этого останется проследить только выбранную команду и найти конечное значение.

  1. Первая команда задаёт n = 7. Проверяем условие n > 5: число 7 больше 5, значит, условие истинно.
  2. Выбираем ветвь «то» и выполняем n := n - 2. Подставляем текущее n: 7 - 2 = 5, поэтому новое значение переменной равно 5.
  3. Ветвь «иначе» не выполняется, потому что условие оказалось истинным. На этом алгоритм завершён; дополнительного присваивания n := n + 2 нет.

Ответ: условие истинно, выполняется ветвь «то», конечное значение n = 5. Проверка перед выбором ветви не позволяет ошибочно прибавить 2 после вычитания. В таблице полезно записать отдельно исходное n, результат проверки и новое значение.

Задача 3. Для алгоритма s := 0; i := 1; пока i ≤ 4: s := s + i; i := i + 1 запиши трассировку и итоговые значения s и i. Здесь s накапливает сумму, а i показывает очередное число. После каждой итерации нужно обновить обе переменные и снова проверить условие цикла.

  1. В начале s = 0, i = 1. Условие 1 ≤ 4 истинно: прибавляем i к s, получаем s = 1, затем увеличиваем i до 2.
  2. Проверяем 2 ≤ 4: условие истинно. Получаем s = 1 + 2 = 3 и i = 3; затем проверка 3 ≤ 4 тоже истинна.
  3. На следующей итерации получаем s = 3 + 3 = 6 и i = 4. Условие 4 ≤ 4 истинно, поэтому выполняем ещё одно повторение: s = 6 + 4 = 10, i = 5.
  4. Теперь проверяем 5 ≤ 4. Условие ложно, значит, тело цикла больше не выполняется и алгоритм останавливается.

Ответ: итоговые значения — s = 10 и i = 5. Счётчик i равен 5, потому что он увеличивается и в последней итерации, после прибавления 4 к сумме. Запись проверки после этого изменения показывает, почему цикл завершился.

Типичные ошибки

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

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

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

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

Связь с другими темами

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

Что запомнить

  • Выполняй команды строго в заданном порядке.
  • Записывай исходные значения до первого шага.
  • После присваивания используй новое значение переменной.
  • В ветвлении сначала проверь условие.
  • Для каждого повторения цикла фиксируй изменения переменных.
  • Итоговый вывод отличай от промежуточных значений.

Частые вопросы по теме

Зачем записывать выполнение алгоритма по шагам?

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

Какие значения переменных нужно вносить в таблицу?

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

Когда следует записывать новое значение переменной?

Новое значение записывают после выполнения команды присваивания. До этого момента в переменной хранится прежнее значение.

Как отмечать в таблице выполнение условия и выбор ветви?

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

Как понять, что цикл завершился и можно записать результат?

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

Спросить по теме параграфа

§ 5. Запись результатов выполнения алгоритма

Учебник

Оглавление →
Предмет
Информатика
Учебник
"Информатика", Горячев А.В., Суворова Н.И.