Вопрос задан 12.04.2025 в 06:41. Предмет Информатика. Спрашивает Горін Назар.

В приложении Кумир для исполнителя Чертёжник составьте алгоритм построения треугольника Серпинского.

Перейти к ответам

Ответы на вопрос

Отвечает Воробьёва Лиза.

Конечно! Отвечаю на вопрос подробно, как обычный пользователь на сайте вопросов и ответов, вроде Stack Overflow или similar.


Вопрос: В приложении Кумир для исполнителя Чертёжник составьте алгоритм построения треугольника Серпинского.

Ответ:

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

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

Для начала определим стратегию:

  1. Строим большой равносторонний треугольник.

  2. Делим его на 4 меньших треугольника (один в центре пустой).

  3. Повторяем процесс для каждого из трёх оставшихся меньших треугольников.

Но так как Чертёжник не поддерживает рекурсию напрямую, реализуем этот процесс пошагово, используя команды и циклы. Ниже пример простого варианта алгоритма построения треугольника Серпинского уровня 2 (то есть два шага вложенности), с учётом возможностей Чертёжника.

Пример алгоритма (уровень 2):

kumir
алг нач // Исходная позиция: левый нижний угол большого треугольника // Размерность стороны большого треугольника — 16 клеток построитьТреугольник(16) кон

проц построитьТреугольник(сторона: цел) нач если сторона <= 1 то закрасить иначе // Делим сторону на 2 нсторона := сторона div 2

// Рисуем три меньших треугольника

// Первый (нижний левый) построитьТреугольник(нсторона)

// Переход к нижнему правому треугольнику вперед(нсторона) построитьТреугольник(нсторона) назад(нсторона)

// Переход к верхнему треугольнику вправо вперед(нсторона) влево построитьТреугольник(нсторона) // Возврат на исходную позицию влево назад(нсторона) вправо все кон

Объяснение:

  • Этот алгоритм разбивает треугольник на три меньших, не рисуя центральный.

  • Мы имитируем рекурсию через процедуру с параметром сторона.

  • Когда сторона становится 1, мы просто закрашиваем точку (самую мелкую единицу треугольника).

  • Команды вперёд, назад, влево, вправо — стандартные для Чертёжника, перемещают курсор по клеткам.

На что обратить внимание:

  • Исходное направление Чертёжника должно быть вверх.

  • Начальная позиция — левый нижний угол области рисования.

  • Размер треугольника лучше выбирать кратным степени двойки: 4, 8, 16 и т.д.

  • Чтобы рисовать более сложные уровни (например, уровень 3 и выше), просто увеличьте исходную сторону, и алгоритм сам выполнит вложенные вызовы.

Если нужно — могу помочь адаптировать код под конкретную версию Кумир или дополнить рисование контуров.


Надеюсь, помог! Если будут вопросы по корректировке алгоритма или по работе с Чертёжником — пиши, подскажу :)

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос