№6 Черепаха

Задание 6: Анализ алгоритмов. Черепаха

  • Тема: определение результата работы исполнителя (чаще всего - Черепаха).
  • Ответ: целое число (координаты, площадь, количество точек).
  • Балл: 1. Время: 4 мин. Сложность: базовый (средний процент выполнения: 39%).

Общая информация

Задание 6 проверяет умение анализировать работу исполнителей, особенно исполнителя «Черепаха». Нужно пошагово выполнить алгоритм и определить результат.

Задания: N6.Черепашка


Исполнитель «Черепаха»

Черепаха действует на плоскости с декартовой системой координат. В начальный момент она находится в начале координат (0, 0), голова направлена вверх (вдоль положительной оси Y), хвост опущен.

Основные команды

  • Вперёд n — движение на n единиц в направлении головы
  • Назад n — движение в противоположном направлении на n единиц
  • Повтори k [команды] — повторение последовательности команд k раз
image
  • Опустить хвост — начало рисования (следующий путь будет нарисован)
  • Поднять хвост — движение без рисования (следующий путь не рисуется)
  • Направо m — поворот на m градусов по часовой стрелке
  • Налево m — поворот на m градусов против часовой стрелки
image

Полезные команды turtle для ЕГЭ

Команда Что делает Когда использовать в задаче
from turtle import * Импортирует основные функции turtle Почти в каждом решении
left(angle) Поворот влево на angle градусов Чтобы выставить стартовое направление (обычно left(90))
right(angle) Поворот вправо на angle градусов Команды «Направо m»
forward(n) Движение вперёд на n Команды «Вперёд n»
backward(n) Движение назад на n Команды «Назад n»
penup() Поднимает перо (без рисования) Команда «Поднять хвост»
pendown() Опускает перо (рисует) Команда «Опустить хвост»
setpos(x, y) Перемещает в точку (x, y) Обход точек/проверка внутренних точек
dot() Ставит точку в текущей позиции Визуализация целочисленных точек
screensize(w, h) Размер рабочей области Когда фигура большая и не помещается
setup(w, h) Размер окна программы Для удобного просмотра рисунка
speed(0) Максимальная скорость рисования Чтобы ускорить построение
tracer(0) Отключает покадровую анимацию Чтобы рисовать сразу весь результат
update() Обновляет экран вручную После tracer(0)
hideturtle() Скрывает значок черепахи Чтобы не мешал при подсчёте
done() Завершает программу и удерживает окно В конце скрипта

Мини-шаблон для задач ЕГЭ:

from turtle import *

left(90)
k = 20
screensize(2000, 2000)
tracer(0)
pendown()

# ... команды из условия ...

update()
done()

Направления движения

При поворотах направление изменяется следующим образом:

  • Начальное направление: ↑ (вверх, положительная ось Y)
  • Направо 90°: → (вправо, положительная ось X)
  • Направо 180°: ↓ (вниз, отрицательная ось Y)
  • Направо 270°: ← (влево, отрицательная ось X)
  • Налево 90°: ← (влево, отрицательная ось X)
  • Налево 180°: ↓ (вниз, отрицательная ось Y)
  • Налево 270°: → (вправо, положительная ось X)

Типы заданий

Тип 1: Работа с отрезками

Формулировка: Определите площадь или периметр фигуры, нарисованной Черепахой.

image

Особенности:

  • Нужно найти площадь замкнутой фигуры
  • Или периметр фигуры
  • Может быть несколько фигур
image

Тип 2: Работа с точками

Формулировка: Определите количество точек с целочисленными координатами внутри объединения или пересечения фигур.

image

Особенности:

  • Нужно найти точки с целыми координатами
  • Может быть объединение или пересечение фигур
  • Формула для объединения: количество точек фигуры 1 + количество точек фигуры 2 − количество точек пересечения
image

Алгоритм решения через таблицу (аналитический)

Сюда же метод решения через рисунок (графеский) - просто чертим от руки путь черепахи

Шаг 1: Подготовка

  1. Зафиксировать начальное состояние:

    • Координаты: (0, 0)
    • Направление: вверх (положительная ось Y)
    • Хвост: опущен (рисует)
  2. Выписать все команды алгоритма

Шаг 2: Трассировка

  1. Составить таблицу трассировки:

    Шаг Команда Координаты (x, y) Направление Хвост
    0 - (0, 0) опущен
    1 Вперёд 5 (0, 5) опущен
    2 Направо 90 (0, 5) опущен
    ... ... ... ... ...
  2. Выполнять команды пошагово:

    • При движении изменяются координаты
    • При повороте изменяется направление
    • При поднятии/опускании хвоста изменяется режим рисования
  3. Учитывать повторения:

    • Команда "Повтори k [команды]" выполняется k раз
    • Все команды внутри повторения выполняются последовательно

Шаг 3: Вычисление результата

  1. Для площади:

    • Определить фигуру (прямоугольник, треугольник и т.д.)
    • Вычислить площадь по формуле
    • Или использовать формулу Пика: S = I + B/2 - 1, где I - точки внутри, B - точки на границе
  2. Для количества точек:

    • Найти все точки с целыми координатами внутри фигуры
    • Для объединения: сложить точки обеих фигур, вычесть пересечение
    • Для пересечения: найти общие точки

Шаг 4: Проверка

  1. Проверить трассировку - убедиться, что все команды выполнены
  2. Проверить вычисления - пересчитать площадь или количество точек
  3. Записать ответ в требуемом формате

Алгоритм решения через Python

Шаг 1: Подготовка

Для этого понадобится библиотека turtle

from turtle import *
  1. Зафиксировать начальное состояние:
left(90) # поворот черепахи на ось у (в библиотеке она на оси х)
k = 20 # коэффициент отвечает за масштаб точек на листе

screensize(2000,2000) # размер окна
tracer(0) # рисовать все точки сразу
pendown() # опустить хвость (режим рисования)

Шаг 2: Алгоритм

Для повторяющихся:

for _ in range(5):
    forward(30 * k) # вперед (число из задания умножить на коэффициент)
    right(90) # поворот направо
    forward(40 * k)
    right(90)

penup # поднять хвост (режим не-рисования)
forward(20 * k)
right(90)
forward(5 * k)
right(90)
pendown() # опустить хвость

Шаг 3: Построение точек

for x in range(-50, 50): # для оси х берем числа больше чем есть в задании
    for y in range(-50, 50): # для оси у
        setpos(x * k, y * k) # устанавливаем значения (масштаб)
        dot() # обозначаем точки
done()

Шаг 4: Проверка

Запустить код, проверить масштаб, откорректировать значение k при необходимости, затем посчитать количество точек и/или вычислить периметр/площадь


Пример решения аналитически

Задача: Начальное положение:

  • координаты: (0, 0)
  • направление: вверх (положительная ось Y)
  • хвост: опущен (рисует)

Алгоритм:

  • Повтори 5 [Вперёд 30 Направо 90 Вперёд 40 Направо 90]
  • Поднять хвост
  • Вперёд 20 Направо 90 Вперёд 5 Направо 90
  • Опустить хвост
  • Повтори 7 [Вперёд 10 Направо 90]

Результат:

  • Определите периметр области пересечения фигур, ограниченных заданными алгоритмом линиями.

Решение:

  1. Начальное состояние

    • Точка: (0, 0)
    • Направление: вверх
    • Хвост: опущен
  2. Таблица трассировки (по блокам команд)

1 блок:

  • Повтори 5 [Вперёд 30 Направо 90 Вперёд 40 Направо 90] 1 из 5:
Шаг Команда/блок Положение после блока Направление Хвост
0 - 0, 0 вверх +
1 Вперёд 0, 30 вверх +
2 Направо 0, 30 направо +
3 Направо 40, 30 направо +
4 Вперёд 40, 30 вниз +

2 из 5:

Шаг Команда/блок Положение после блока Направление Хвост
1 Вперёд 40, 0 вниз +
2 Направо 40, 0 направо +
3 Направо 0, 0 направо +
4 Вперёд 0, 0 вверх +

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

2 блок:

  • Поднять хвост
  • Вперёд 20 Направо 90 Вперёд 5 Направо 90
  • Опустить хвост
Шаг Команда/блок Положение после блока Направление Хвост
1 Поднять хвост 40, 30 вниз -
2 Вперёд 40, 10 вниз -
3 Направо 40, 10 налево -
4 Вперёд 35, 10 налево -
5 Направо 35, 10 вверх -
6 Опустить хвост 35, 10 вверх +

3 блок:

  • Повтори 7 [Вперёд 10 Направо 90] 1 из 7:
Шаг Команда/блок Положение после блока Направление Хвост
1 Вперёд 35, 20 вверх +
2 Направо 35, 20 направо +

2 из 7:

Шаг Команда/блок Положение после блока Направление Хвост
1 Вперёд 45, 20 направо +
2 Направо 45, 20 вниз +

3 из 7:

Шаг Команда/блок Положение после блока Направление Хвост
1 Вперёд 45, 10 вниз +
2 Направо 45, 10 налево +

4 из 7:

Шаг Команда/блок Положение после блока Направление Хвост
1 Вперёд 35, 10 налево +
2 Направо 35, 10 вверх +

После этого черепаха будет в точке (35,10) как и в конце второго блока, все остальные команды будут аналогичны.

  1. Находим пересечение фигур
    • Фигура A: прямоугольник x in [0, 40], y in [0, 30]
    • Фигура B: квадрат x in [35, 45], y in [10, 20]
    • Пересечение: прямоугольник x in [35, 40], y in [10, 20]
    • Размеры пересечения: ширина 5, высота 10
image
  1. Периметр пересечения

    • P = 2 * (a + b) = 2 * (5 + 10) = 30
  2. Ответ: 30


Пример решения Python

from turtle import *

left(90)
k = 20
screensize(2000, 2000)
tracer(0)
pendown()

# Фигура A
for _ in range(5):
    forward(30 * k)
    right(90)
    forward(40 * k)
    right(90)

# Смещение без рисования
penup()
forward(20 * k)
right(90)
forward(5 * k)
right(90)
pendown()

# Фигура B
for _ in range(7):
    forward(10 * k)
    right(90)

update()
done()

После построения видно:

  • A: x in [0, 40], y in [0, 30]
  • B: x in [35, 45], y in [10, 20]
  • Пересечение: 5 x 10
  • Периметр: 30

Формула для подсчета точек

image image

Формула для подсчета периметра


Составлено: Лилия С.
Источники: КИМ ЕГЭ 2026, открытый банк ФИПИ, спецификация ЕГЭ по информатике

Удачи на экзамене! 🎓