Вспомогательные алгоритмы с аргументами
Вспомните тему вспомогательные алгоритмы — для
рисования двух квадратов с разными сторонами, например 2 и 3, нам нужно
было составить два разных вспомогательных алгоритма. А как быть, если
нужно рисовать много разных квадратов с разными длинами сторон? Не писать
же для каждого свой алгоритм! Оказывается алгоритмы могут иметь аргументы,
можно составить алгоритм рисования квадрата с произвольной длиной стороны.
алг квадрат2
нач
. опустить перо
. сместиться на вектор(0,2)
. сместиться на вектор(2,0)
. сместиться на вектор(0,-2)
. сместиться на вектор(-2,0)
. поднять перо
кон |
алг квадрат3
нач
. опустить перо
. сместиться на вектор(0,3)
. сместиться на вектор(3,0)
. сместиться на вектор(0,-3)
. сместиться на вектор(-3,0)
. поднять перо
кон |
С понятием аргумент вы уже встречались в математике. В математике
аргумент функции — независимая переменная, от значений которой зависят
значения функции.
Например, функция f(x) = x2+1 имеет один аргумент. При
различных значениях аргумента будем получать различные значения функции —
при x=2
получим f(x)=5, при x=3 получим f(x)=10 и т. д.
Нужный нам вспомогательный алгоритм (который рисует квадрат определенной
длины) можно записать так:
алг квадрат(арг
вещ а)
нач
. опустить перо
. сместиться на вектор(0,а)
. сместиться на вектор(а,0)
. сместиться на вектор(0,-а)
. сместиться на вектор(-а,0)
. поднять перо
кон
Запись «алг квадрат(арг
вещ а)» означает, что у алгоритма «квадрат» есть один аргумент
(арг) «а», который может быть произвольным вещественным (вещ) числом.
Для того чтобы вызвать этот алгоритм нужно написать, например,
«квадрат(2)» - получим квадрат со стороной 2 или «квадрат(3)» - получим
квадрат со стороной 3 и т. п.
Какое-то конкретное значение «а» получит только во время работы программы
во время соответствующего вспомогательного алгоритма. И везде вместо «а»
будет подставлено компьютером это число.
Программа для рисования это рисунка может быть такой:
использовать Чертежник
алг квадраты
нач
. сместиться в точку(1,1)
. квадрат(2)
. сместиться в точку(4,1)
. квадрат(3)
. сместиться в точку(8,1)
. квадрат(4)
. сместиться в точку(13,1)
. квадрат(5)
. сместиться в точку(0,0)
кон
алг квадрат(арг
вещ а)
нач
. опустить перо
. сместиться на вектор(0,а)
. сместиться на вектор(а,0)
. сместиться на вектор(0,-а)
. сместиться на вектор(-а,0)
. поднять перо
кон
Научим Чертежника новым командам. Одна из команд пусть называется «линия(арг вещ x1,y1,x2,y2)»
– для рисования линии из точки (x1,y1) в точку (x2,y2).
Вспомогательный алгоритм может быть таким:
алг линия(арг
вещ x1, y1, x2, y2)
нач
. сместиться в точку(x1,y1)
. опустить перо
. сместиться в точку(x2,y2)
. поднять перо
кон
Вторая команда пусть называется «прямоугольник(арг вещ x1,y1,x2,y2)»
для рисования прямоугольника. Точка (x1,y1) одна точка диагонали АС
прямоугольника, точка (x2,y2) – противоположная. Перед записью алгоритма
нужно понять чему равны координаты двух других точек.
Вспомогательный алгоритм может быть таким:
алг прямоугольник(арг
вещ x1, y1, x2, y2)
нач
. сместиться в точку(x1,y1)
. опустить перо
. сместиться в точку(x2,y1)
. сместиться в точку(x2,y2)
. сместиться в точку(x1,y2)
. сместиться в точку(x1,y1)
. поднять перо
кон
Теперь используя эти команды нарисуем домик:
использовать Чертежник
алг домик
нач
. прямоугольник(2,1,8,5)
. прямоугольник(3,2,5,4)
. прямоугольник(6,1,7,4)
. линия(1,4,5,8)
. линия(5,8,9,4)
кон
алг линия(арг
вещ x1, y1, x2, y2)
нач
. сместиться в точку(x1,y1)
. опустить перо
. сместиться в точку(x2,y2)
. поднять перо
кон
алг прямоугольник(арг
вещ x1, y1, x2, y2)
нач
. сместиться в точку(x1,y1)
. опустить перо
. сместиться в точку(x2,y1)
. сместиться в точку(x2,y2)
. сместиться в точку(x1,y2)
. сместиться в точку(x1,y1)
. поднять перо
кон
Примечание: естественно, одновременно с этими командами мы можем
использовать и стандартные команды чертежника (сместиться в точку,
сместиться на вектор …).
Задание 1. Используя
вспомогательные алгоритмы линия и прямоугольник создайте какой-либо
рисунок.
Задание 2.
Попробуйте переписать алгоритмы линия и прямоугольник так, чтобы рисование
осуществлялось командой сместиться на вектор.
Задание 3.
Составьте алгоритм «прямоугольник (арг вещ x, y, a, b)», который рисует
прямоугольник с длинами сторон a и b, начиная из заканчивая в точке (х,
y).
Задание 4. Нарисуйте
самостоятельно, что нарисует Чертежник выполнив алгоритм:
использовать Чертежник
алг спираль
нач
. сместиться в точку(3,3)
. опустить перо
. виток(1); виток(3); виток(5); виток(7); виток (9)
. поднять перо
кон
алг виток(арг
вещ а)
нач
. сместиться на вектор(а, 0)
. сместиться на вектор(0, -а)
. сместиться на вектор(-а-1,0)
. сместиться на вектор(0, а+1)
кон
|