Shanraq.org Shanraq.org
Состояние и переменная на примере игры
Общество

Информатика: создаём своего цифрового помощника Урок 20 из 26

Состояние и переменная на примере игры

Поймём состояние на игре с тремя жизнями и опишем, как помощник хранит изменение задачи.

Где мы на карте

Это третий блок одного проекта. Мы пользуемся данными версии 0.2, но пока описываем действия на бумаге: так можно обнаружить ошибку до написания Python.

Состояние и переменная на примере игры

Ситуация и вопрос

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

Новые слова без пропусков

Состояние — данные о системе в выбранный момент. Переменная — имя для значения, которое алгоритм может изменить. Присваивание заменяет прежнее значение новым; запись lives ← lives − 1 не утверждает математическое равенство, а предписывает сначала вычислить правую часть. Начальное значение — состояние до первого события. Переход состояния — пара «было → стало» после одного действия. Инвариант — условие, которое должно оставаться истинным, например число жизней не становится отрицательным. Не путайте переменную в бумажном алгоритме с сохранённым полем в JSON: после выключения временное значение пропадёт, если его не записать.

Опорный сигнал

начальное состояние → событие → новое значение → проверка ограничения

Разбираем шаг за шагом

Сделайте таблицу с колонками событие | lives до | действие | lives после. Начало: 3. Ловушка: 3 − 1 = 2. Бонус: 2 + 2 = 4. Три потери подряд: 4 − 1 = 3, затем 2, затем 1. Если при 0 случится ещё ловушка, алгоритм должен либо оставить 0, либо закончить игру — правило нужно выбрать заранее. Для t-01 таблица короче: done=false → действие «отметить выполненной» → done=true. Повторное нажатие не должно случайно вернуть false, если кнопка называется «Отметить выполненной».

Проверка руками

Нарисуйте три клетки для числа очков: «было», «действие», «стало». При 3 − 2 + 4 сначала запишите 3 → 1, затем 1 → 5; не перепрыгивайте сразу к пяти. Рядом нарисуйте две карточки задачи с одним id: done=false до действия «отметить выполненной» и done=true после. Название остаётся тем же. Спросите: что произойдёт, если отметку поставить второй раз? Наш договор должен сказать, останется ли true, иначе состояние непредсказуемо.

Предскажите и проверьте

Начните с двух жизней и примените ловушку, бонус +2, ловушку. Назовите состояние после каждого шага до просмотра примера: 1, 3, 2. Затем спросите, каким будет done после двух одинаковых действий «отметить выполненной»: true, если действие задаёт значение, а не переключает его. Это различие важно при повторной отправке команды.

Поймайте ошибку

«lives ← lives − 1 означает, что число равно числу минус один, значит алгоритм неверен». Стрелка означает обновление: прочитать старое значение, вычислить новое, записать новое. Для математики используйте равенство, для бумажной команды — стрелку.

Перенос в новую ситуацию

Придумайте счётчик прочитанных страниц. Он начинается с 0; по событию «прочитал страницу» увеличивается на 1. Что сделать при случайном повторном событии? Запишите правило, иначе два нажатия дадут ложный прогресс.

Изменение проекта

В ALGORITHM-ru.md добавьте таблицу состояний одной задачи: id, title, done. Отдельно укажите, что id не меняется при отметке выполнения. Сохранение нового done в файл пока обозначьте отдельным шагом, не выдавая бумажную переменную за запись на диске.

Задание и доказательство

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

Возврат через 1, 7 и 30 дней

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

Следующий урок: Последовательность и трассировка шагов

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

Проверить доказательство проекта

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

Чтобы проверить, нужно войти. Войти

Комментарии (0)

Пока нет комментариев. Будьте первым.