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

Хирьянов Тимофей Федорович


Алгоритм на языке КуМир записывается так:

алг тип_алгоритма имя_алгоритма (описание аргументов и результатов)
дано условие_применимости_алгоритма
надо цель_выполнения_алгоритма
нач
последовательность команд
кон

Описание алгоритма состоит из:
  • заголовка (часть до служебного слова нач),
  • тела алгоритма (часть между словами нач и кон).
Части "дано", "надо", а также "тип алгоритма" и "описание аргументов и результатов" могут отсутствовать.

Простейшие алгоритмы

Рассмотрим следующий вспомогательный алгоритм для исполнителя Чертежник.

Пример алгоритма

алг квадрат
нач
опустить перо
сместиться на вектор(0,2)
сместиться на вектор(2,0)
сместиться на вектор(0,-2)
сместиться на вектор(-2,0)
поднять перо
кон

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

Алгоритмы с аргументами

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

Пример алгоритма

алг квадрат (арг вещ а)
нач
опустить перо
сместиться на вектор(0, а)
сместиться на вектор(а, 0)
сместиться на вектор(0, -а)
сместиться на вектор(-а, 0)
поднять перо
кон

Слово арг означает, что у алгоритма есть аргумент (а), а вещ — то, что этот аргумент имеет вещественный тип. Команда вызова такого алгоритма может иметь вид

(в этом случае будет нарисован квадрат 2x2) или, например,
(в этом случае будет нарисован квадрат 5x5).

Алгоритмы с результатами

Алгоритм может не только получать информацию, но и отдавать ее. Для этого используется специальный вид величины — результаты .

Пример алгоритма с результатами

алг гипотенуза (вещ a, b, рез вещ c)
дано a >= 0 и b >= 0 | длины катетов треугольника
надо | c = длинa гипотенузы этого треугольника
нач
c:= sqrt(a ** 2 + b ** 2)
кон

Здесь служебное слово рез указывает на то, что величина c является результатом и ее значение будет меняться в процессе работы алгоритма. Например, после вызова

гипотенуза(3, 4, c)

Величина c примет значение 5.

Алгоритмы-процедуры и алгоритмы-функции

Рассмотренные выше примеры являются алгоритмами-процедурами . В Кумире также существуют алгоритмы-функции . Алгоритм-функция после выполнения возвращает значение-результат .
Правила описания алгоритмов-процедур и алгоритмов-функций имеют два отличия.
Во-первых, для алгоритмов-функций на месте тип_алгоритма должен быть указан один из простых типов алгоритмического языка (вещ, цел и т.д.), определяющий тип значений, которые возвращает данная функция.
Во-вторых, в теле алгоритма-функции необходимо использовать служебную величину знач , которой присваивается вычисленное значение функции. Ее описанием служит заголовок алгоритма, но в остальном величина знач используется так же, как и любая другая промежуточная величина. (В теле алгоритма-процедуры величину знач использовать нельзя .)
Вызов алгоритма-процедуры является отдельной командой алгоритмического языка и имеет вид:

Вспомогательным алгоритмам можно передавать дополнительные аргументы . Пример программы, содержащей основной алгоритм и вспомогательный алгоритм "Закрасить полоску":


использовать Робот алг Главная программа нач Нарисовать полоску (5) кон алг Нарисовать полоску (арг цел длина) нач нц длина раз закрасить вправо кц кон

Также робот может выполнять арифметические операции над целыми величинами: +, -, *.


Исходные данные для всех задач: робот находится на бесконечном поле без внешних стенок (то есть использовать внешние стенки для решения задачи нельзя. В результате исполнения вспомогательного алгоритма робот должен вернуться в исходную клетку.


Во всех задачах этого листка нельзя использовать цикл нц пока .

Как выполнять задания P, Q, R

Откройте задание 12.P. В меню Кумира выберите "Робот - Сменить стартовую обстановку". Загрузите стартовую обстановку из одного из файлов каталога /home/pub/tasks/kumir/robot/12/P/. Изучите различные примеры стартовых обстановок, которые находятся в этом каталоге. Во всех этих заданиях необходимо нарисовать рисунок.


Для рисования модифицируйте алгоритм Нарисовать башню . Добавьте этой функции аргументов так, чтобы в зависимости от различных значений аргументов функция рисовала башни различного вида. Для проверки своего алгоритма модифицируйте Главный алгоритм , вызывая алгоритм Нарисовать башню с различным набором аргументов.


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


Команды абсолютного и относительного смещения (х и у отсчитывается от начала координат 0,0) сместиться в точку (х, у) сместиться на вектор (а, в) (а и в отсчитывается от начала вектора) команда абсолютного смещения команда относительного смещения а в х у




Вид величины арг – объявление величин-аргументов (входных или исходных данных) – показывает вид переменных т. е., как величина используется в алгоритме Тип величины Тип переменной – область значений аргументов вещ - описание величины вещественного (действительного) типа (Пример: 2.5, 6.9, 6.0, 7.9, 3.0) цел - описание величины целого типа (Пример: 2, 0, 8, 9).


Вызов ВА с аргументами Точное имя ВА (числовые значения аргументов в соответствии с их типами через запятую в том же порядке как и в заголовке ВА) Пример. Заголовок: алг Пр 1(арг вещ а, в, с, цел н, к) Вызовы: Пр 1(0, 4, 8.2, 8, 0) ; Пр 1(4, 2, 5, 3, 9) ; Пр 1(6, 7, 4.5, 0, 7)


Пример использования ВА с аргументами для исполнителя Чертежник алг деталь нач ро(7, 2, 3); ро(7, 3, 2); ро(7, 4, 1) кон алг ро (арг вещ х, у, а) нач см в точку (х, у); опустить перо см на вектор (2*а, а); см на вектор(-2*а, а) см на вектор (-2*а, -а); см на вектор(2*а, -а) поднять перо кон Гла вный алгоритм Вспомогательный алгоритм Вызов ВА Заголовок ВА


Использование ВА с аргументами при построении изображения Используя метод последовательного уточнения и проанализирова в данное изображение можно выделить стандартную деталь – ромб, начало его рисования, параметры и количество. Отсюда следует, чтобы получить данный рисунок надо записать четыре вызова ВА в основном алгоритме и один ВА для рисования ромба с тремя параметрами х, у, а Х У у х а 2 а алг деталь нач ро(2, 2, 2); ро(0, 7, 3); ро(4, 7, 1); ро(9, 4, 2) кон алг ро (арг вещ х, у, а) нач см в точку (х, у); опустить перо см на вектор (2*а, а); см на вектор(2*а, -а) см на вектор (-2*а, -а); см на вектор(-2*а, а) поднять перо кон

Вариант 1

1.

2. Составьте программу закрашивания прямоугольника, размеры которого пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 2

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу закрашивания квадрата, длину стороны которого пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 3

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде буквы "Г". Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 4

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде буквы "Т". Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 5

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде буквы "П". Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 6

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде буквы "Ш". Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 7

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде буквы "Н". Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 8

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде крестика. Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 9

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

2. Составьте программу рисования фигуры в виде диагонального крестика. Вертикальные и горизонтальные размеры пользователь вводит с клавиатуры. Ввод данных можно осуществлять любым способом.

Вариант 10

1. Составьте программу закрашивания указанных клеток. Количество клеток в каждом ряду или столбце определяется переменной, значение которой меняется в программе перед каждым циклом. Начальное положение Робота - в левом верхнем углу поля.

Хирьянов Тимофей Федорович


Алгоритм на языке КуМир записывается так:

алг тип_алгоритма имя_алгоритма (описание аргументов и результатов)
дано условие_применимости_алгоритма
надо цель_выполнения_алгоритма
нач
последовательность команд
кон

Описание алгоритма состоит из:
  • заголовка (часть до служебного слова нач),
  • тела алгоритма (часть между словами нач и кон).
Части "дано", "надо", а также "тип алгоритма" и "описание аргументов и результатов" могут отсутствовать.

Простейшие алгоритмы

Рассмотрим следующий вспомогательный алгоритм для исполнителя Чертежник.

Пример алгоритма

алг квадрат
нач
опустить перо
сместиться на вектор(0,2)
сместиться на вектор(2,0)
сместиться на вектор(0,-2)
сместиться на вектор(-2,0)
поднять перо
кон

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

Алгоритмы с аргументами

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

Пример алгоритма

алг квадрат (арг вещ а)
нач
опустить перо
сместиться на вектор(0, а)
сместиться на вектор(а, 0)
сместиться на вектор(0, -а)
сместиться на вектор(-а, 0)
поднять перо
кон

Слово арг означает, что у алгоритма есть аргумент (а), а вещ — то, что этот аргумент имеет вещественный тип. Команда вызова такого алгоритма может иметь вид

(в этом случае будет нарисован квадрат 2x2) или, например,
(в этом случае будет нарисован квадрат 5x5).

Алгоритмы с результатами

Алгоритм может не только получать информацию, но и отдавать ее. Для этого используется специальный вид величины — результаты .

Пример алгоритма с результатами

алг гипотенуза (вещ a, b, рез вещ c)
дано a >= 0 и b >= 0 | длины катетов треугольника
надо | c = длинa гипотенузы этого треугольника
нач
c:= sqrt(a ** 2 + b ** 2)
кон

Здесь служебное слово рез указывает на то, что величина c является результатом и ее значение будет меняться в процессе работы алгоритма. Например, после вызова

гипотенуза(3, 4, c)

Величина c примет значение 5.

Алгоритмы-процедуры и алгоритмы-функции

Рассмотренные выше примеры являются алгоритмами-процедурами . В Кумире также существуют алгоритмы-функции . Алгоритм-функция после выполнения возвращает значение-результат .
Правила описания алгоритмов-процедур и алгоритмов-функций имеют два отличия.
Во-первых, для алгоритмов-функций на месте тип_алгоритма должен быть указан один из простых типов алгоритмического языка (вещ, цел и т.д.), определяющий тип значений, которые возвращает данная функция.
Во-вторых, в теле алгоритма-функции необходимо использовать служебную величину знач , которой присваивается вычисленное значение функции. Ее описанием служит заголовок алгоритма, но в остальном величина знач используется так же, как и любая другая промежуточная величина. (В теле алгоритма-процедуры величину знач использовать нельзя .)
Вызов алгоритма-процедуры является отдельной командой алгоритмического языка и имеет вид:
Статьи по теме: