Кумир вспомогательный алгоритм: Занятие 3. Вспомогательный алгоритм — Программирование в системе Кумир – Занятие 9. Робот. Вспомогательный алгоритм
Алгоритм-процедура в языке Кумир
Вспомогательные алгоритмы в Кумир
Часто для упрощения решения исходной задачи, ее разбивают на подзадачи — более простые, с точки зрения программирования, части. Алгоритмы, в которых решаются подзадачи, в языке Кумир называются вспомогательными (или подчиненными) алгоритмами.
Применение вспомогательных алгоритмов в программировании дает ряд преимуществ:
- удается избежать многократно повторяемого кода в программе;
- созданный ранее алгоритм можно использовать при построении других алгоритмов;
- структура программы становится более понятной;
- оказывается более простым процесс отладки программы.
В Кумире вспомогательные алгоритмы, подобно подпрограммам в языке Паскаль, делятся на алгоритмы-функции и алгоритмы-процедуры.
Алгоритмы-процедуры
Формат описания алгоритма-процедуры в общем виде можно представить в следующем виде:
- алг имя алгоритма ()
- нач
- кон
Параметры вспомогательного алгоритма (если они есть) называются фактическими. Их описание происходит в круглых скобках после имени алгоритма. Описание включает в себя информацию о типах параметров и о том, чем они являются — аргументами или результатами:
- арг – описания параметров-аргументов;
- рез – описания параметров-результатов;
- аргрез (или арг рез) – описания параметров, являющихся одновременно и аргументами, и результатами.
Рассмотрим пример вспомогательного алгоритма определения суммы цифр целого двухзначного числа (СЦДЧ):
- алг СЦДЧ (арг цел num, рез цел S)
- нач
- S := div (num, 10) + mod (num, 10)
- кон
В заголовке алгоритме СЦДЧ описывается два параметра: первый — параметр-аргумент, принимающий число, сумму цифр которого нужно определить, второй — параметр-результат, принимающий искомую сумму.
Команда вызова алгоритма-процедуры
Алгоритм-процедура может быть вызван как из основного, так и из вспомогательного алгоритма. Для обращения к алгоритму-процедуре используется команда вызова, имеющая следующий вид:
- имя алгоритма ()
Параметры вызова (если они есть) называются формальными параметрами.
Параметры вызова представляют собой необходимые для работы вспомогательного алгоритма данные. Между формальными параметрами в команде вызова и фактическими параметрами в заголовке алгоритма должно быть соответствие, которое определяется порядком их следования. Параметры должны быть согласованы между собой, в том числе по типам величин.
Так, алгоритм, в котором содержится команда вызова алгоритма СЦДЧ может выглядеть, например, следующим образом:
- цел num, S
- ввод num
- СЦДЧ (num, S)
- вывод S
Вспомогательный алгоритм – алгоритм, снабженный таким заголовком, который позволяет вызвать его из других алгоритмов.
Видео: Исполнитель Чертежник. Вспомогательные алгоритмы, автор Дмитрий Тарасов
Текст вспомогательных алгоритмов:
Программа рисования узора:
алг рисунок нач • нц 8 раз • • квадрат • • сместиться на вектор (3,0) • кц кон |
Использование вспомогательных алгоритмов с параметрами
алг вспомогательный_алгоритм (список используемых переменных)
нач
алгоритм
кон
Список используемых параметров может иметь формат:
Пример:
алг ромб (цел а)
нач
опустить перо
сместиться на вектор (2*а,а)
сместиться на вектор (2*а,-а)
сместиться на вектор (-2*а,-а)
сместиться на вектор (-2*а,а)
поднять перо
кон
Данный алгоритм рисует ромб, шириной 4*а и высотой 2*а, где величина а – передается в качестве параметра вспомогательного алгоритма.
С помощью данного алгоритма и циклического процесса можно нарисовать следующий узор:
алг Ромб нач цел а • сместиться в точку(-2,0) • а:=1 • нц 5 раз • • ромб(а) • • а:=а+1 • • сместиться на вектор(-2,0) • кц кон |
Попробуйте нарисовать один из предложенных узоров:
Использование вспомогательных алгоритмов
Главная | Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 6 классы | Планирование уроков на учебный год (ФГОС) | Использование вспомогательных алгоритмов
Содержание урока
Презентация «Управление исполнителем Чертежник»
Чертёжник учится, или Использование вспомогательных алгоритмов
Вспомогательный алгоритм
Плакат «Исполнитель»
Компьютерный практикум. Ресурсы ЕК ЦОР. Система КуМир
Компьютерный практикум. Ресурсы ЕК ЦОР. Задания 1 — 2
Компьютерный практикум. Ресурсы ЕК ЦОР. Задания 3 — 4
Вопросы и задания
Вспомогательный алгоритм
Вспомогательный алгоритм рисования цифры 0 будет выглядеть так:
алг
нач
опустить перо
сместиться на вектор (0, 2)
сместиться на вектор (1, 0)
сместиться на вектор (0, -2)
сместиться на вектор (-1, 0)
поднять перо
сместиться на вектор (2, 0)
кон
Строка алг цифра_О называется заголовком алгоритма. Имя алгоритма — цифра О. Алгоритм рисования буквы помещается чуть правее между служебными словами нач и кон.
Вспомогательный алгоритм рисования цифры 6 оформите самостоятельно.
Приказ на выполнение вспомогательного алгоритма записывается в основном алгоритме.
В среде КуМир основной алгоритм для изображения индекса 660000 будет выглядеть так:
использовать Чертежник
алг индекс Красноярска
нач
цифра_6
цифра_0
цифра_0
цифра_0
цифра_0
кон
К какому типу алгоритмов относится этот основной алгоритм?
Цели урока:
- закрепить представления учащихся об исполнителях алгоритмов;
- научить учащихся управлять исполнителем Чертежник с использованием вспомогательных алгоритмов;
- сформировать умение записи, исполнения и отладки алгоритмов с использованием команд Чертежника в среде «Кумир»
Обеспечение урока:
- система Кумир;
- мультимедийный проектор;
- презентация урока (приложение 1)
- карточки-задания;
- компьютеры.
Ход урока
1. Проверка домашнего задания.
- Блиц-опрос учащихся на знание основных определений: исполнитель, формальный исполнитель, неформальный исполнитель.
- Ученики приводят примеры неформальных и формальных исполнителей.
2. Объяснение нового материала.
Чертежнику часто приходится рисовать одно и тоже несколько раз, чтобы не писать громоздких и запутанных алгоритмов используют вспомогательные алгоритмы.
Вспомогательный алгоритм – это подпрограмма, которая выполняет какое-то действие, предусмотренное исходным заданием (слайд 2).
Мы создадим два вспомогательных алгоритма:
- Построим алгоритм «Забор»
- Построим алгоритм «Ель»
- Соединим два алгоритма и применим Цикл N раз.
Описание действий, которые могут повторятся указанное число раз или пока не выполнено заданное условие, называется циклом.
При составлении алгоритмов довольно часто встречаются случаи, когда некоторую последовательность команд нужно выполнить несколько раз подряд. Для упрощения записи алгоритма в таких случаях можно использовать специальную конструкцию повторения N раз.
Общий вид цикла:
нц <количество раз> раз
<тело цикла (последовательность команд)>
кц (слайд 4).
2. Проработка содержания темы обучающимися:
Задание: Создать следующий рисунок в программе Кумир, используя исполнитель Чертежник (слайд 3).
Построим алгоритм «Забор» (слайд 5).
алг забор
нач
нц 10 раз
опустить перо
сместиться на вектор (0,10)
сместиться на вектор (2,2)
сместиться на вектор (2,-2)
сместиться на вектор (0,-10)
кц
кон
Построим алгоритм «Ель» (слайд 6).
алг ель
нач
нц 5 раз
опустить перо
сместиться на вектор (0,15)
сместиться на вектор (-2,-2)
поднять перо
сместиться на вектор (2,0)
опустить перо
кц
нц 5 раз
поднять перо
сместиться на вектор (2,0)
опустить перо
сместиться на вектор (-2,2)
кц
поднять перо
сместиться на вектор (8,-15)
кц
кон
Запишем основной алгоритм, пользуясь вызовом процедуры вспомогательного алгоритма (соединим два вспомогательных алгоритма).
использовать Чертежник
алг
нач
нц 10 раз
забор
кц
поднять перо
сместиться на вектор (-36,10)
нц 5 раз
опустить перо
ель
кц
кон
алг забор
нач
опустить перо
сместиться на вектор (0,10)
сместиться на вектор (2,2)
сместиться на вектор (0,-10)
кон
алг ель
нач
опустить перо
сместиться на вектор (0,15)
нц 5 раз
сместиться на вектор (-2,-2)
поднять перо
сместиться на вектор (2,0)
опустить перо
кц
нц 5 раз
поднять перо
сместиться на вектор (2,0)
опустить перо
сместиться на вектор (-2,2)
кц
поднять перо
сместиться на вектор (8,-15)
кон
Дополнительное задание: Создать вспомогательный алгоритм «ДОМ» и дополнить картинку (слайд 7).
4. Домашнее задание: повторить конспект (придумать свои рисунки с применением вспомогательного алгоритма).
Алгоритм-функция в Кумире
В языке Кумир существует еще один тип вспомогательного алгоритма — алгоритм-функция. Между алгоритмом-функцией и алгоритмом-процедурой существуют отличия в правилах описания и способе вызова.
Формат описания вспомогательного алгоритма-функции можно представить в следующем виде:
- алг тип алгоритма имя алгоритма ()
- нач
- знач :=
- кон
Результат выполнения алгоритма записывается в служебную величину знач и возвращается в точку вызова. Тип возвращаемого значения определяется элементом тип алгоритма, который может быть одним из простых типов языка Кумир.
Приведем пример вспомогательного алгоритма определения меньшего из двух (мид) целых чисел:
- алг цел мид (цел а, цел в)
- нач
- если а
- то знач := а
- иначе знач := в
- все
- кон
Алгоритм возвращает в точку вызова целое значение (на что указывает служебное слово цел, стоящее перед именем алгоритма), записанное в служебную величину знач. Фактическими параметрами алгоритма мид являются две целые величины а и в.
Команда вызова алгоритма-функции
Алгоритм-функция может быть вызван из основного или другого вспомогательного алгоритма. Команда вызова должна быть частью некоторого выражения. Она содержит имя вспомогательного алгоритма, после которого перечисляются параметры вызова (формальные параметры).
Фактические параметры должны соответствовать формальным по порядку следования и согласовываться по типам величин.
Например, вызов алгоритма мид можно оформить следующим образом:
Здесь в алгоритм мид передаются две целые величины ч1 и ч2. Величины ч1 и ч2 являются формальными параметрами. Они согласовываются с фактическими параметрами, используемыми в алгоритме мид (т. е. а и в). В точку вызова возвращается результат работы алгоритма — значение меньшего из двух переданных чисел.
§34. Вспомогательные алгоритмы
Содержание урока
Что такое вспомогательный алгоритм?
Два метода составления программ
Выводы. Интеллект-карта
Вопросы и задания
Практическая работа № 23 «Вспомогательные алгоритмы»
Что такое вспомогательный алгоритм?
Ключевые слова:
• вспомогательный алгоритм • процедура • вызов процедуры уточнения • возврат из процедуры • метод последовательного
В этой задаче Роботу нужно закрасить по три клетки в двух совершенно одинаковых помещениях, имеющих форму сапога (рис. 6.16).
Рис. 6.16
Конечно, было бы хорошо, если бы у Робота была команда (например, Сапог), выполняя которую, Робот обрабатывает такое помещение и возвращается обратно. Тогда бы мы написали такую программу:
алг Два сапога
нач
Сапог
вправо; вправо; вправо
Сапог
кон
Для сокращения длины программы мы записали несколько команд в одной строке, разделив их точкой с запятой.
Обсудите в классе, какая ошибка возникнет, если запустить эту программу. Почему?
Но в системе команд Робота нет команды Сапог! Однако всё можно исправить, если объяснить Роботу, что ему нужно делать по команде Сапог. Для этого достаточно записать в конце программы (после служебного слова кон) вспомогательный алгоритм:
алг Сапог
нач
вниз; закрасить
вниз; закрасить
вправо; закрасить
влево; вверх; вверх
кон
Теперь программа запускается и работает.
Вспомогательный алгоритм решает отдельную задачу и может быть использован при решении более сложных задач. Вызов вспомогательного алгоритма можно использовать так же, как команды из СКИ исполнителя.
Вспомогательный алгоритм часто называют процедурой.
Давайте разберёмся, что будет происходить при запуске этой программы. Алгоритм, записанный в самом начале программы (у нас это алгоритм Два сапога), называется основной программой. Компьютер выполняет основную программу. В первой же строке он встречает неизвестную команду Сапог, которая не входит в СКИ исполнителя Робот. Значит, это вызов вспомогательного алгоритма (процедуры).
Для того чтобы вызвать вспомогательный алгоритм (процедуру), нужно записать его название в теле другого алгоритма.
Если в основной программе нет вызова процедуры, эта процедура не выполнится ни разу, хотя и будет записана в тексте программы.
Вспомогательный алгоритм выполняется только тогда, когда он вызван.
Встретив вызов процедуры Сапог, компьютер ищет процедуру с таким названием ниже основной программы. Если она найдена, то выполняются все команды, записанные в теле этого вспомогательного алгоритма. Затем происходит возврат из процедуры — передача управления на ту команду в основной программе, которая записана сразу после команды Сапог.
После завершения работы процедуры управление передаётся обратно, к следующей команде вызывающей программы.
Для того чтобы увидеть, как передаётся управление, в КуМире можно использовать пошаговый режим с входом в процедуры (клавиша F7).
Конечно, эту задачу можно было бы решить и без процедуры, но решение с процедурой получилось короче. Нам не пришлось писать два раза одинаковые команды. Кроме того, если в какой- то совершенно другой задаче Роботу нужно будет закрашивать клетки в таком же помещении, мы сможем использовать готовый вспомогательный алгоритм Сапог.
Следующая страница Два метода составления программ
Cкачать материалы урока
Алгоритмы-процедуры и алгоритмы-функции в КУМИР
Хирьянов Тимофей Федорович
Алгоритм на языке КуМир записывается так:
Описание алгоритма состоит из:алг тип_алгоритма имя_алгоритма (описание аргументов и результатов)
дано условие_применимости_алгоритма
надо цель_выполнения_алгоритма
нач
последовательность команд
кон
- заголовка (часть до служебного слова нач),
- тела алгоритма (часть между словами нач и кон).
Простейшие алгоритмы
Рассмотрим следующий вспомогательный алгоритм для исполнителя Чертежник.Он позволяет нарисовать квадрат 2х2 (начиная с левого нижнего угла). Для этого нужно использовать в основной программе команду вызова вспомогательного алгоритма, которая будет иметь вид:алг квадрат
нач
опустить перо
сместиться на вектор(0,2)
сместиться на вектор(2,0)
сместиться на вектор(0,-2)
сместиться на вектор(-2,0)
поднять перо
кон
квадрат
Алгоритмы с аргументами
Для того, чтобы рисовать квадраты разных размеров, можно использовать алгоритм с аргументами.Слово арг означает, что у алгоритма есть аргумент (а), а вещ — то, что этот аргумент имеет вещественный тип. Команда вызова такого алгоритма может иметь видалг квадрат (арг вещ а)
нач
опустить перо
сместиться на вектор(0, а)
сместиться на вектор(а, 0)
сместиться на вектор(0, -а)
сместиться на вектор(-а, 0)
поднять перо
кон
(в этом случае будет нарисован квадрат 2×2) или, например,квадрат(2)
(в этом случае будет нарисован квадрат 5×5).квадрат(5)
Алгоритмы с результатами
Алгоритм может не только получать информацию, но и отдавать ее. Для этого используется специальный вид величины — результаты.Здесь служебное слово рез указывает на то, что величина c является результатом и ее значение будет меняться в процессе работы алгоритма. Например, после вызоваалг гипотенуза (вещ a, b, рез вещ c)
дано a >= 0 и b >= 0 | длины катетов треугольника
надо | c = длинa гипотенузы этого треугольника
нач
c := sqrt(a ** 2 + b ** 2)
кон
гипотенуза(3, 4, c)
величина c примет значение 5.Алгоритмы-процедуры и алгоритмы-функции
Рассмотренные выше примеры являются алгоритмами-процедурами. В Кумире также существуют алгоритмы-функции. Алгоритм-функция после выполнения возвращает значение-результат.Правила описания алгоритмов-процедур и алгоритмов-функций имеют два отличия.
Во-первых, для алгоритмов-функций на месте тип_алгоритма должен быть указан один из простых типов алгоритмического языка (вещ, цел и т.д.), определяющий тип значений, которые возвращает данная функция.
Во-вторых, в теле алгоритма-функции необходимо использовать служебную величину знач, которой присваивается вычисленное значение функции. Ее описанием служит заголовок алгоритма, но в остальном величина знач используется так же, как и любая другая промежуточная величина. (В теле алгоритма-процедуры величину знач использовать нельзя.)
Вызов алгоритма-процедуры является отдельной командой алгоритмического языка и имеет вид:
илиимя_алгоритма-процедуры
Вызов алгоритма-функции производится путем указания его имени в выражении. Встретив это имя при вычислении выражения, КуМир выполняет алгоритм-функцию.имя_алгоритма-процедуры (список_параметров_вызова)
Использовать этот алгоритм в программе можно, например, так:алг вещ площадь (вещ a, b, c)
дано a >= 0 и b >= 0 и c >= 0 | длины сторон треугольника
надо | значение функции равно площади этого треугольника
нач
вещ p | полупериметр
p := (a + b + c) / 2
знач := sqrt(p * (p — a) * (p — b) * (p — c))
кон
алг
или так:
нач вещ P
P := площадь(3, 4, 4)
конесли площадь(a, b, c) > 10
то
…
все
Raid-Helper — Commands
донаторные функции
Донат 5 €, чтобы разблокировать эти функции для 1 учетной записи. За 10 € вы можете дополнительно разблокировать эти функции для 1 сервера. Используйте команду! Verify после того, как вы пожертвовали 000
! Customemotes [#] set [emote] [emote] | Устанавливает до 15 пользовательских эмоций для # (1-3) пользовательского шаблона. | ! Customemotes 1 комплект: Пепе:: Каппа: |
! Customemotes [#] show | Показывает пользовательские эмоции для # (1-3) пользовательских шаблонов. | ! Customemotes 2 show |
! Customemotes [#] удалить [ключевое слово] | Удаляет указанную эмоцию по умолчанию для этого шаблона. Ключевые слова: скамейка, поздний, предварительный, отсутствие | ! Customemotes 2 удалить предварительное отсутствие |
! Customroles [#] set [emote] [emote] — [emote] [emote] — .. | Устанавливает до 3 пользовательских ролей для # (1-3) пользовательских шаблонов.3 раздела разделены символом «-». Каждый из первых разделов эмоций — это эмоция, используемая для роли, и ее имя будет отображаться как имя роли. Все последующие эмоции в разделе будут считаться частью этой роли в событие и считается как таковое. Пример picure. | ! Customroles 1 set: dps:: rogue: -: healer:: priest: |
! Customroles [#] delete | Удаляет установленные роли для указанного шаблона.Никакие роли не будут показаны на мероприятии, только классы. | ! Customroles 1 delete |
! Createevent recurring [#] | Начинает создание события и инициирует повторение этого события каждые # days. Ограничено 1 на канал. | ! Createevent recurring 7 |
! Recurring [ключевое слово] [channelID] | show — показывает все повторения на вашем сервере. delete — Удаляет повторяющееся событие в указанном канале. Вы можете оставить channelId вне, обращаясь к первому повторению в текущем канале , или вы можете ввести полный суффикс channelid + (вы можете проверить это в! Recurring show), чтобы адресовать конкретное повторение. Вы также можете ввести только суффикс (например, 3), чтобы указать конкретное повторение в текущем канале. | ! Повторяющиеся шоу ! повторяющееся удаление 508.0, ! повторяющееся удаление 508 ..- 3 ! повторяющееся удаление 3 |
! Editrecurring [channelID] | Редактирует повторяющееся событие в указанном канале. Если идентификатор канала не указан, текущее событие канала будет отредактировано. Вы можете оставить channelId вне, обращаясь к первому повторению в текущем канале , или вы можете ввести полный суффикс channelid + (вы можете проверить это в! Recurring show), чтобы адресовать конкретное повторение. Вы также можете ввести только суффикс (например, 3) для адресации конкретного повторения в текущем канале. | ! Editrecurring ! editrecurring 508.. ! editrecurring 508 ..- 3 ! editrecurring 3 |
! Verify | Если вы пожертвовали и хотите активировать функции донора, используйте эту команду. Бот отправит вам DM и попросит идентификатор транзакции PayPal. | ! Verify |
emote pack | Можно либо загрузить эти эмоции, чтобы использовать их с пользовательским шаблоном, либо использовать идентификатор эмоции (имена файлов в этом пакете) Пример:! Customemotes set 1 592438128057253898 663649500065300484 | Скачать |
settings
Команды! Setmanagerrole и! Settimezone важны, остальные необязательны ✌
! ServerSettings | Отображает текущие настройки сервера. | ! Serversettings |
! SetPrefix [префикс] | Изменяет префикс, используемый для команд на этом сервере. | ! Setprefix + |
! SetManagerRole [roleName] | Устанавливает роль менеджера. | ! Setmanagerrole Officer |
! SetAssistantRole [roleName] | Устанавливает роль, которая служит помощником (может создавать только события). | ! Setraiderrole 1 Raider |
! SetHistoryChannel [channelName] | Установите канал, который будет получать сообщения журнала dkp. | ! Sethistorychannel logs |
! SetWelcome [msg] | Установите приветственное сообщение, которое будет отправлено пользователям, присоединяющимся к этому серверу. Если вы установите его для удаления, существующее приветственное сообщение будет удалено. | ! Setwelcome Добро пожаловать! ! Setwelcome delete |
! SetRaiderSignUp [true / false] | Установив регистрацию в рейдере на true, пользователи, имеющие роль рейдера, смогут подписаться на события. Если для параметра установлено значение false, это позволит всем подписаться на события. | ! Setraidersignup true |
events
команда! Createevent является центральной функцией этого бота и инициирует создание события. 🗓
! CreateEvent | Начинает процесс создания события. | ! Createevent |
! CreatePoll | Запускает процесс создания события опроса. | ! Createpoll |
! Sync [msgID] | Синхронизирует событие с его реакциями на случай, если бот не отвечает. Событие будет обновлено с задержкой в 1 минуту. | ! Sync 604.. |
! EndEvent [msgID] | Закидывает событие. Вы все еще можете добавлять / удалять пользователей вручную. | ! Endevent 604.. |
! OpenEvent [msgID] | Откройте вручную заблокированное событие.Не работает, если событие просто истекло, в этом случае вам нужно отредактировать дату события. | ! Openevent 604.. |
! EditEvent [msgID] | Начинает процесс редактирования события. | ! Editevent 604.. |
! RemoveUser [msgID] [userName] | Удаляет пользователя из указанного события. Чтобы удалить нескольких пользователей, поместите имена пользователей в скобки [] и разделяйте их запятыми. | ! Removeuser 604 .. Mitmoc ! removeuser 604 .. [Mitmoc, Fillory] |
! AddUser [msgID] [имя_реакции] [имя_пользователя] | Добавляет пользователя с указанной реакцией на событие. | ! Adduser 604 .. Разбойник Mitmoc |
! AddUsers [msgID] [responseName] [userNames] .. | Добавляет пользователей с указанными реакциями на событие. Поставьте имена пользователей в скобках и разделите их запятой.Вы можете повторить синтаксис для нескольких ролей. | ! Addusers 604 .. Разбойник [Mitmoc, Azzieh] Маг [s1berain, Nastacia] |
! CopyUsers [источник msgID] [назначение msgID] | Скопировать все регистрации из исходного события в событие назначения. | ! Copyusers 604 .. 605.. |
! DeleteEvent [msgID] | Удаляет событие. Используйте это с осторожностью, если вы хотите избавиться от события. | ! Восстановить реакции 604.. |
! MoveEvent [msgID] | Переместить событие на текущий канал. | ! Moveevent 604.. |
! Событие quickCreate [название] [описание] [канал] [дд-мм-гггг] [ЧЧ: мм] [шаблон #] [необязательно: расширенные настройки копирования пасты] | Создает событие без прохождения настройки в DM. Скобки записаны в этой команде. |