
Информатика: создаём своего цифрового помощника Урок 21 из 26
Последовательность и трассировка шагов
Проследим каждую команду алгоритма и поймём, как небольшая ошибка меняет окончательный результат.
Где мы на карте
Это третий блок одного проекта. Мы пользуемся данными версии 0.2, но пока описываем действия на бумаге: так можно обнаружить ошибку до написания Python.
Ситуация и вопрос
Курьер получил три команды: взять посылку, дойти до двери, позвонить. Если позвонить до того, как он взял посылку, адресат откроет дверь, но доставка не состоится. Компьютер тоже исполняет шаги в порядке записи, если мы не задали другое правило.
Новые слова без пропусков
Алгоритм — конечное описание действий для определённого класса входов. Последовательность — выполнение шагов один за другим. Трассировка — запись значений после каждого шага, а не только последнего ответа. Шаг — одно точно названное действие. Вход — данные, которые алгоритм получает; выход — то, что он возвращает или показывает. Побочный эффект — дополнительное изменение, например запись файла. Два алгоритма могут показывать одинаковый экран сейчас, но по-разному вести себя после повторного запуска из-за разного порядка сохранения.
Опорный сигнал
вход → шаг 1 → состояние 1 → шаг 2 → состояние 2 → выход
Разбираем шаг за шагом
Пусть count=0, а две вымышленные записи имеют done=false и done=true. Бумажные команды: (1) count ← count + 1; (2) показать count; (3) count ← count + 1; (4) показать count. Трасса даёт 1, затем 2. Если сначала выполнить оба прибавления, а потом два показа, выйдет 2 и 2. Набор команд почти тот же, порядок другой. Для помощника правильнее: прочитать файл, найти запись, изменить done, сохранить файл, подтвердить результат после повторного чтения. Сообщение «сохранено» перед записью было бы ложным обещанием.
Проверка руками
Устройте настольный прогон: один ученик держит карточку count, другой выполняет инструкции +1, «показать», +1 строго слева направо. После каждого шага впишите в таблицу номер шага, новое значение и показанный ответ. Затем поменяйте местами «показать» и последнее +1: конечный count останется равным 2, но пользователь увидит другое число. Это и есть причина, по которой одного итогового состояния мало для проверки программы с выводом.
Предскажите и проверьте
Начало count=2; шаги +1, показать, −2, показать. Не считайте в уме только итог. Заполните строку после каждого шага: 3, экран 3, 1, экран 1. Объясните, почему экран не обязан показывать все промежуточные значения.
Поймайте ошибку
«В конце count=1, значит алгоритм верен». Неверно: промежуточное сообщение могло показать 3 тогда, когда требовалось 1. Проверьте трассу и критерии для каждого наблюдаемого действия.
Перенос в новую ситуацию
Даны действия «открыть файл», «проверить поля», «показать задачи», «сообщить об ошибке». Расположите их так, чтобы при неверном JSON задачи не показывались как достоверные. Нарисуйте ветку ошибки без перехода к показу.
Изменение проекта
Добавьте в ALGORITHM-ru.md таблицу трассировки для t-01: состояние до, действие, состояние после, видимое сообщение. Проследите успешное сохранение и ошибку чтения. Выделите шаг, где действительно меняется файл.
Задание и доказательство
Сделайте две трассы: нормальный путь и путь с отсутствующим файлом. Поменяйте местами два шага и объясните, какое наблюдение изменилось. Доказательство — таблицы и точное указание первого неверного шага.
Возврат через 1, 7 и 30 дней
Завтра восстановите трассу счётчика. Через семь дней найдите ошибку порядка в новой бытовой инструкции. Через месяц сравните фактический порядок программы с бумажной трассой.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.