ALGORITHMS OF ASSEMBLY / 03

Практикум: 20 заданий

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

Правила и сохранение · Все заготовки

01 / Рука уходит. Запись остаётся.

Нарисовать → увидеть программу → наблюдать исполнение → изменить и предсказать.

1.1 · Нарисовать и записать

На поле 20×20 нарисуйте знак. Нажмите «Получить программу жестов»: запись сохраняет каждый ваш переворот. Найдите одинаковые RIGHT подряд. Сверните их кнопкой «Свернуть одинаковые строки» и примените запись. На карточках раскройте и сверните повтор: число движений не изменяется. Запустите программу с белого поля. Для быстрого повторения используйте «До следующего FLIP» или быстрый темп; нужный участок пройдите по шагам. Сохраните рисунок и программу.

Вопрос: Почему повторный запуск должен начинаться с тех же исходных фишек?

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

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

1.2 · Буква A: короткая программа

Теперь поле всего 5×7. Справа от пустых фишек всё время виден образец A. Программа уже подготовлена: прочитайте её, предскажите действие выбранной строки и запустите. RIGHT 4 означает четыре обычных движения. На карточке RIGHT ×4 проследите четыре отметки и четыре движения. Темп «С анимацией» показывает ход машины, «Разбор» — отдельные фазы. Сохраните остановку и продолжите из файла.

Вопрос: Почему RIGHT 4 занимает одну строку, но требует четырёх действий? Как карточка, строка редактора и движение показывают один опыт?

Сдать: Получена A из 35 фишек; найдена связь исходной строки с командой; остановка восстановлена.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

1.3 · Изменить и предсказать

В заготовке A пропущена одна фишка перекладины. Сначала предскажите, где будет разрыв. Исполните программу, найдите нужную строку и исправьте её. Можно вставлять команды кнопками и задавать число повторов. Сохраните исходный и исправленный варианты.

Вопрос: Какое конкретное изменение записи исправило рисунок?

Сдать: Разрыв найден и исправлен; сохранены две версии и сравнение с прогнозом.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

1.4 · Свой знак без рисования

Поле остаётся 5×7; мышь фишки не меняет. Выберите образец H, A или стрелку и допишите короткую программу. Первый штрих H уже начат. Используйте повтор движений и большой редактор. Сохраните рецепт, откройте его и повторите свой результат.

Вопрос: Чем сохранённая программа отличается от готового изображения?

Сдать: Нужный знак построен только командами, перенесён файлом и повторён.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

02 / Behind the screen / за экраном

16 бит выбирают запись таблицы. Запись хранит рисунок, из которого собирается программа рисования.

2.1 · Написать кодами

Введите ABBA или свою строку из 3–8 знаков. «Подготовить строку» создаёт программу записи UTF-16 на пустую ленту. Выполните её. Затем запустите программу рисунка выбранного глифа.

Вопрос: Где находятся 16 бит кода, а где 128 фишек рисунка?

Сдать: Есть выполненная программа записи строки и отдельное исполнение глифа.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

2.2 · Изменить код

После исполнения строки нажмите «Показать DATA без перезаписи»: полученные коды станут начальной лентой. В её редакторе измените один бит кода A и примените ленту. Сопоставьте полученный код с экраном. Попробуйте 😀: это две кодовые единицы и один знак.

Вопрос: Почему 16 бит не означают, что любой знак Unicode занимает ровно 16 бит?

Сдать: Записаны коды до/после; объяснена суррогатная пара.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

2.3 · Своя буква

Выберите A в редакторе таблицы. Нарисуйте собственный вариант 8×16. Сохраните рисунок в таблицу. Покажите ту же строку: все A изменят начертание, их код останется прежним.

Вопрос: Что изменилось: сообщение, таблица или оба объекта?

Сдать: Изменён глиф, сохранён исходный код и экспортирована таблица.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

2.4 · Перенести алфавит

Создайте ещё два начертания; при желании используйте U+E000. Сохраните проект и таблицу. Откройте их в другом окне и повторно исполните строку и глиф.

Вопрос: Какие файлы нужны получателю, чтобы увидеть ваши буквы?

Сдать: Переносимый проект с текстом, таблицей и выполненными программами.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

03 / Символ становится условием

Одна и та же операция читает бит до действия. Два адреса превращают прочитанное в выбор.

3.1 · Ноль или один

Загрузите заготовку: FLIP выбирает HALT при прежнем 0 и LEFT при прежней 1. Выполните прибавление единицы к 0111 по шагам. Повторите для 0100.

Вопрос: Где хранится перенос, если в языке нет команды ADD?

Сдать: Получены 1000 и 0101; объяснён выбор адреса по прежнему биту.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

3.2 · Разделить знаки

Введите A3+= и подготовьте распознаватель. Выполните его. Четыре флага для каждого знака означают: буква, цифра, операция, завершение.

Вопрос: Что программа делает с ? и чем = отличается от конца самой программы?

Сдать: Правильные флаги для A, 3, +, = и неизвестного знака.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

3.3 · Внешность и назначение

Измените рисунок + в сохранённой таблице глифов. Запустите прежний распознаватель снова. Найдите блок, в котором проверяется код операции.

Вопрос: Почему изменение внешности знака не меняет результат распознавания?

Сдать: Два начертания, одинаковый код и одинаковый флаг операции.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

3.4 · Специальный знак

Испытайте Ж7-= и a?+=. Поставьте остановку в блоке распознавания, сохраните и восстановите её. Опишите, как четыре флага можно использовать в следующем алгоритме.

Вопрос: Какие классы распознаёт именно наша программа, а не весь Unicode?

Сдать: Два протокола; указаны ограничения латиницей, русскими буквами, цифрами 0–9, +, -, =.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

04 / Калькулятор, который не умеет складывать

В машине нет сложения. Перенос и заём выполняет программа из переворотов, движений и переходов.

4.1 · Перенос

Загрузите короткую заготовку 0111 → 1000. Пройдите все шаги. Попробуйте 1111: на конечной учебной ленте перенос упрётся в левую границу.

Вопрос: Чем ограничение нашей памяти отличается от логики алгоритма?

Сдать: Трасса 0111 → 1000 и объяснение переполнения.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

4.2 · Сложение двух чисел

Введите 3+2=, подготовьте калькулятор и выполните его. Изучите регистры A и B и карту программы. Повторите 9+9=.

Вопрос: Почему код символа 3 равен 51, а число три равно 3?

Сдать: Результаты 5 и 18; объяснено извлечение числа из кода.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

4.3 · Заём и знак

Выполните 8-3=, 3-8=, 0-0=. Остановитесь перед формированием кодов результата, сохраните и продолжите из файла.

Вопрос: Где хранится знак отрицательного результата?

Сдать: Результаты 5, -5 и 0, проверенная остановка.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

4.4 · Проверить границы

Испытайте 2*3=, A+1=, 9-0=. Измените одну инструкцию в копии программы и покажите, какой тест обнаружит ошибку.

Вопрос: Почему знак ?? является результатом алгоритма проверки, а не вычислением выражения браузером?

Сдать: Таблица тестов, испорченная и исправленная версии программы.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

05 / Рисунок начинает жить

Готовая программа читает восемь соседей каждой клетки. Поле 20×20 замыкается в тор.

5.1 · Неподвижность и ритм

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

Вопрос: Чем первое повторение отличается от исчезновения?

Сдать: Блок: период 1; мигалка: период 2; проверен переход через край.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

5.2 · Долгая жизнь

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

Вопрос: Означает ли отсутствие повтора за 100 поколений, что его не будет никогда?

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

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

5.3 · Одна фишка меняет будущее

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

Вопрос: Какие начальные условия вы удержали неизменными?

Сдать: Два рецепта, отличающиеся одним битом; сравнение истории.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________

5.4 · Внутри поколения

Выберите клетку. Нажмите «К решению клетки», рассмотрите подсветку восьми соседей и счёт в состоянии программы. Выполните решение. Остановитесь посередине поколения, сохраните и восстановите.

Вопрос: Почему нельзя сразу менять текущий слой A, пока ещё не проверены остальные клетки?

Сдать: Объяснение рождения/сохранения/гибели; совпадающий результат после восстановления.

Скачать заготовку JSON · Открыть лабораторию

Файл опыта: __________   Прогноз: __________   Наблюдение и вывод: __________