Файл: Определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.01.2024
Просмотров: 7081
Скачиваний: 46
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
© К. Поляков, 2022
6 (базовый уровень, время – 4 мин)
Тема: Определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмовЧто проверяется:Ручное выполнение программ для исполнителей. Описание области, ограниченной ломаной линией, в виде набора условий.1.7.2. Основные конструкции языка программирования. Система программирования.1.1.4. Читать и отлаживать программы на языке программирования.Что нужно знать и уметь:-
выполнять ручную прокрутку программы для исполнителя, в которой используется цикл -
строить на координатной плоскости фигуру, которую нарисует Черепаха (при ее известном начальном положении)
Пример задания:
Р-00 (Демо-2023). Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:Повтори 7 [Вперёд 10 Направо 120]Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.Решение (теоретическое):-
так как при каждой итерации цикла Черепаха поворачивается на угол 120 (команда Направо 120), она будет рисовать правильный треугольник (за три итерации угол изменится ровно на 120 · 3 = 360, то есть, Черепаха вернётся в исходное положение) -
тело цикла выполняется 7 раз, то есть, Черепаха дважды обойдёт треугольник и пройдёт еще одну сторону; важно, что линия замкнётся -
перед выполнением программы Черепаха стоит в начале координат и смотрит вверх («на север») -
теперь нужно нарисовать правильный треугольник со стороной 10 (команда Вперёд 10); это можно сделать, например, на листе в клеточку:
-
Ответ: 38.
-
для построения такого рисунка можно использовать, например, Word:
-
можно также использовать Excel, установив на вкладке Вид режим Разметка страницы: в этом режиме через меню Ячейки – Формат на вкладке Главная можно точно установить размеры ячейки в сантиметрах (Высота строки и Ширина столбца):
-
https://www.youtube.com/watch?v=TTHospKjDvA (автор видео: А. Набережный) -
Ответ: 38.
-
для составления программы придётся построить систему условий, которая описывает область внутри контура -
уравнение правой границы треугольника: x = 0, нас интересует область x > 0 -
верхняя граница: y = k1·x + 10, нас интересует область y < k1·x + 10
-
нижняя граница: y = k2·x, нас интересует область y > k2·x
-
организуем цикл, в котором перебираем значения x от 1 до 9 (можно и больше!) и значения y от 1 до 9; для каждой пары (x, y) проверяем два условия (третье, x > 0, уже выполнено автоматически за счёт выбранного диапазона изменения x); если оба условия выполнены, увеличиваем счётчик count:
-
Ответ: 38. -
вариант программы (сначала строится массив из всех пар координат точек, попавших внутрь области, затем выводится длина этого массива):
points = [ (x,y) for x in range(1,10) for y in range(1,10)if y < -x/3**0.5+10 and y > x/3**0.5 ]print( len(points) )
-
решение-однострочник (без массива points):
-
в Python есть стандартный модуль turtle, в котором реализована «черепашья графика»; его можно использовать для того, чтобы построить заданную фигуру:
-
далее нужно поставить точки с целочисленными координатами, для этого используется метод .dot (точка):
-
приведём полную программу:
-
результат работы программы:
-
подсчёт точек с целочисленными координатами, оказавшихся внутри контура, проводится визуально.
-
для вычисления угла наклона прямых, ограничивающих область, можно использовать функции модуля math: перевести угол в радианы и найти его тангенс:
-
Ответ: 38.
-
полная программа:
from turtle import *from math import *tracer(2) # speed(0) команды ускорения рисованияhideturtle() # ht() скрыть изображение черепашкиm = 25 # масштабleft(90) # lt(90)for i in range(7):forward(10 * m) # fd(10*m)right(120) # rt(120)penup() # up() поднять перо Черепашкиcount = 0 # количество точек, попавших внутрь треугольникаk = tan(pi / 6) # тангенс угла пи/6 радиан (угла 30 градусов)for x in range(0, 11):for y in range(0, 11):goto(x * m, y * m)if (y < -k * x + 10 # ниже верхней линии треугольника?andy > k * x # выше нижней линии треугольника?andx > 0): # правее вертикальной линии треугольника?dot(5, 'red') # красная точка (точка попала # внутрь треугольника)count += 1else:dot(5, 'black') # черная точка (точка не попала # внутрь треугольника)color('red')write(count) # количество красных точек по колонкам# нарастающим итогомmainloop() # done()
-
Ответ: 38.
Задачи для тренировки:
-
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись
-
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись