Найти в Дзене

Алгоритм решения задания 6 ЕГЭ по информатике. Часть 2

В прошлой статье мы научились работать с функциями черепахи из модуля turtle, узнали разницу между пересечением и объединением фигур и опробовали на практике алгоритм решения 6 заданий первого типа. В данной статье мы продолжим работу с этим заданием, но уделим внимание второму типу – будем находить периметр и площадь внутри объединения и пересечения фигур. Не будем долго затягивать и приступим к практике! Изменения в коде решения у нас будут минимальны. Самое главное – задать точкам цвет фона, обычно – белый, и увеличить их размер. То есть первый блок кода нашего решения может выглядеть так: По сравнению с тем, что был использован в прошлой статье, здесь изменены значения всего двух переменных – dot_color и dot_size. Также для расстановки точек в последнем блоке больше не нужно подбирать какие-то определённые диапазоны. При достаточной мощности компьютера можете расставить точки хоть на диапазоне координат от -50 до 50. Но все же лучше хотя бы примерно понять квадрант, в котором распо
Оглавление

В прошлой статье мы научились работать с функциями черепахи из модуля turtle, узнали разницу между пересечением и объединением фигур и опробовали на практике алгоритм решения 6 заданий первого типа.

В данной статье мы продолжим работу с этим заданием, но уделим внимание второму типу – будем находить периметр и площадь внутри объединения и пересечения фигур.

Не будем долго затягивать и приступим к практике!

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

Изменения в коде решения у нас будут минимальны. Самое главное – задать точкам цвет фона, обычно – белый, и увеличить их размер. То есть первый блок кода нашего решения может выглядеть так:

-2

По сравнению с тем, что был использован в прошлой статье, здесь изменены значения всего двух переменных – dot_color и dot_size.

Также для расстановки точек в последнем блоке больше не нужно подбирать какие-то определённые диапазоны. При достаточной мощности компьютера можете расставить точки хоть на диапазоне координат от -50 до 50. Но все же лучше хотя бы примерно понять квадрант, в котором располагаются фигуры, и сократить диапазоны до минимума.

В остальном же код остаётся прежним. Давайте опробуем его на задании с такой формулировкой (как и в прошлый раз, ограничимся лишь алгоритмом черепахи и условием):

Задание 661

«Черепахе был дан для исполнения следующий алгоритм:

Повтори 9 [Вперёд 17 Налево 90 Вперед 8 Налево 90 Вперёд 17]
Поднять хвост
Налево 90 Вперед 3 Направо 90 Вперёд 5 Налево 90
Опустить хвост
Повтори 4 [Вперёд 97 Направо 90 Вперёд 132 Направо 90]

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

Первая фигура у нас чертится по такому алгоритму: Повтори 9 [Вперёд 17 Налево 90 Вперед 8 Налево 90 Вперёд 17]. Переведём его на язык Python:

-3

Далее черепаха перемещается с поднятым хвостом к началу второй фигуры: Налево 90 Вперед 3 Направо 90 Вперёд 5 Налево 90

В Python это выглядит так:

-4

Ну и вторая фигура задана таким алгоритмом: Повтори 4 [Вперёд 97 Направо 90 Вперёд 132 Направо 90]. Перепишем его в Python:

-5

К этим трём блокам кода добавляем блоки с базовой настройкой и размещением точек. В итоге наша программа приобретает такой вид:

-6

Запустим её и увидим такое изображение на экране.

-7

Прямоугольник с двумя пунктирными зелёными и оранжевыми сторонами –как раз тот, периметр которого нам нужно вычислить. Что же, отрезков немного, можно посчитать и вручную.

Ширина этого прямоугольника равна 5 единичным отрезкам, а длина – 12. Складываем все стороны: 5 + 5 + 12 + 12. И получаем ответ на это задание: 34.

Пример 1

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

Задание 602

«Черепахе был дан для исполнения следующий алгоритм:

Повтори 3 [Опустить хвост
Повтори 2 [Вперёд 10 Направо 90 Вперёд 10 Направо 90]
Поднять хвост
Вперёд 5 Направо 90 Вперёд 5 Направо 90]

Определите в сантиметрах длину замкнутой ломаной, которая является границей объединения фигур, очерченных заданными алгоритмом линиями. В ответе укажите только число. Единицы измерения указывать не нужно.»

Не переживайте, в алгоритме черепахи нет опечаток. Он действительно задаёт всего одну фигуру, но довольно сложную. При решении главное – чётко определить, какие действия в каком цикле должны быть расположены.

Давайте буквально построчно переписывать алгоритм. Фраза «Повтори 3» на Python переводится как «for _ in range(3):». Затем следует команда «Опустить хвост» или же в интерпретации модуля turtle – pd().

Ну а второй цикл уже привычный: Повтори 2 [Вперёд 10 Направо 90 Вперёд 10 Направо 90]. Запишем его так:

-8

Далее идёт оставшаяся часть алгоритма внутри первого цикла for:

-9

Допишем в начало код базовой настройки, а в конец блок кода с расстановкой точек и получим такую программу:

-10

Прежде чем её запускать, давайте подумаем, что же мы ожидаем увидеть на экране. Очевидно, что у нас будет какая-то сложная фигура, состоящая из трёх. Об этом говорит самый первый цикл for с тремя повторениями.

Теперь рассмотрим вложенный цикл на два повторения. В нём черепаха сначала идёт вперёд на 10 единиц, затем поворачивает направо на 90 градусов и снова вперёд на 10 и направо. То есть чертятся две стороны квадрата с длиной в 10 единиц. Учитывая, что цикл повторяется дважды, то можем предположить, что это будет целый квадрат со стороной 10.

Далее черепаха поднимает хвост и перемещается вверх и вправо на 5 единиц – то есть ровно на середину только что начерченного квадрата.

И далее снова повторяется отрисовка квадрата и переход к его центру. Значит, на экране у нас будет три квадрата, каждый из которых начинается из центра предыдущего.

Запустим код и убедимся в этом.

-11

Отлично, все как мы и предполагали. Нам нужно найти длину замкнутой ломаной линии объединения этих трёх квадратов. Давайте выделим её цветом.

-12

Длину стороны квадрата мы уже вычислили ранее. Также определили, что каждый новый квадрат начинается из центра предыдущего. То есть длина восьми маленьких участков ломаной равна половине длины стороны квадрата, а именно – 5.

Отметим все числа на рисунке (длины маленьких сторон на углах отметим по одному разу).

-13

Осталось всего лишь сложить все имеющиеся значения. Вот они по часовой стрелке: 10 + 5 + 5 + 5 + 5 + 10 + 10 + 5 + 5 + 5 + 5 + 10. Итоговая сумма составила 80 единиц. Это число и запишем в ответ.

Пример 2

Теперь поработаем с площадью фигур. Начнём с такой формулировки:

Задание 631

«Черепахе был дан для исполнения следующий алгоритм:

Повтори 4 [Вперёд 19 Направо 90 Вперёд 30 Направо 90]
Поднять хвост
Вперёд 2 Направо 90 Вперёд 8 Налево 90
Опустить хвост
Повтори 4 [Вперёд 93 Направо 90 Вперёд 97 Направо 90]

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

Алгоритм здесь классический, ничего необычного в нём нет. Просто переписываем его на языке Python. Выглядеть он будет так:

-14

Уже имея опыт решения 6 заданий, можем сказать, что здесь будет два прямоугольника, второй, которые больше, смещён относительно первого на 2 и 8 единиц.

Давайте допишем программу полностью и запустим её.

-15

В итоге имеем такое пересечение двух прямоугольников.

-16

Отметим жёлтым цветом интересующую нас область.

-17

Нужно вычислить её длину и ширину. Само собой, вручную считать мы это не будем. Давайте исходить из имеющихся данных – длины и ширины первой (зелёной) фигуры. Она задаётся таким алгоритмом: Вперёд 19 Направо 90 Вперёд 30 Направо 90. Отсюда можно сделать вывод, что её длина 30 единиц, а ширина – 19.

Далее рассмотрим, насколько смещена вторая фигура, а следовательно, и само пересечение. Это можно определить по перемещению черепахи с поднятым хвостом: Вперёд 2 Направо 90 Вперёд 8 Налево 90. То есть на 2 и 8 единиц соответственно. Отметим эти значения на изображении.

-18

Теперь будет несложно подсчитать размеры сторон пересечения: от 30 отнимаем 8 и от 19 отнимаем 2. Получается, что длина пересечения равна 22, а ширина17.

-19

Для вычисления площади нас осталось просто перемножить два этих числа. Получаем ответ – 374.

Пример 3

В заключение решим задание на площадь объединения фигур:

Задание 667

«Черепахе был дан для исполнения следующий алгоритм:

Повтори 3 [Вперёд 39 Направо 90 Вперёд 48 Направо 90]
Поднять хвост
Вперёд 27 Направо 90 Вперёд 24 Налево 90
Опустить хвост
Повтори 3 [Вперёд 29 Направо 90 Назад 18 Направо 90]

Определите площадь области объединения фигур, ограниченных заданными алгоритмом линиями»

Подробно останавливаться на коде уже не будем. Алгоритм всех передвижений черепахи запишем так:

-20

Дополним программу базовой настройкой, цветом каждой фигуры и расстановкой точек:

-21

Проверим результат работы программы.

-22

Да, и вот тут пересечение фигур выполнено не совсем удачно. Что же, давайте поэтапно разберём, как двигалась черепаха.

Изначально она находилась в точке с координатами (0, 0), а её голова была направлена «вверх». Первым делом выполняются команды: Вперёд 39 Направо 90 Вперёд 48 Направо 90. То есть черепаха рисует две стороны прямоугольника с длинами 39 и 48 единиц.

-23

Далее снова выполняются всё те же команды и прямоугольник дорисовывается полностью.

-24

А на третьей итерации цикла for черепаха перемещается в правый верхний угол фигуры и поворачивается головой «вниз».

-25

Далее идёт перемещение с поднятым хвостом вперёд на 27 единиц.

-26

После чего черепаха поворачивает налево и сдвигается еще на 24 единицы.

-27

Повернувшись направо на 90 градусов, она приступает к рисованию второй фигуры. Её уже подробно разбирать не будем. Нам здесь важно, что одна из сторон пересечения одновременно будет и стороной второй фигуры. И длина этой стороны равняется 18.

-28

Осталось лишь найти вторую сторону пересечения. На изображении она отмечена синим цветом.

-29

Найти её несложно – достаточно от длины меньшей стороны первой фигуры (39) отнять первое перемещение черепахи с поднятым хвостом (27).

-30

В итоге получим, что длина искомой стороны пересечения равна 12.

-31

Теперь можем найти площадь объединения фигур. Для этого достаточно найти площадь каждой фигуры, сложить полученные значение и вычесть из этой суммы площадь пересечения. Запишем это выражение: 39 × 48 + 29 × 18 – 18 × 12 = 2178.

Число 2178 и будет ответом на это задание.

Больше заданий данного типа с подробным решением вы можете найти в нашем тренажёре