Основы алгоритмизации
Вспомогательные алгоритмы
Комбинирование алгоритмических структур
Задача. Правее Робота находится ряд из 10 клеток , некоторые из которых закрашены. Последняя закрашенная клетка может примыкать к стене. Необходимо закрасить клетки выше и ниже каждой закрашенной клетки.
Комбинирование алгоритмических структур
Задача. Правее Робота находится ряд из 10 клеток , некоторые из которых закрашены. Последняя закрашенная клетка может примыкать к стене. Необходимо закрасить клетки выше и ниже каждой закрашенной клетки.
начало
10 раз
использовать Робот алг Закрасить выше_ниже нач . нц 10 раз . . если справа свободно . . . то вправо . . все . . если клетка закрашена . . . то вверх ; закрасить . . . . вниз ; вниз ; закрасить . . . . вверх . . все . кц кон
конец
справа свободно
нет
да
вправо
нет
клетка закрашена
да
вверх; закрасить
вниз; вниз
закрасить; вверх
Разработка алгоритма методом последовательной детализации
- Задача разбивается на более простые части (подзадачи).
- Решение каждой части задачи формулируется в отдельной команде.
- Если полученные команды не входят в СКИ, их представляют в виде совокупности более простых команд.
- И так далее, пока все команды не будут понятны исполнителю.
Задача. Робот находится в некоторой клетке горизонтального коридора. Ни одна из клеток коридора не закрашена.
Робот должен закрасить все клетки этого коридора и вернуться в исходное положение.
Укрупнённый алгоритм
начало
1. Закраска всех клеток коридора левее исходной
2. Возвращение в исходное положение
3. Закраска всех клеток коридора правее исходной
4. Возвращение в исходное положение
5. Закраска исходной клетки
конец
1. Закраска всех клеток коридора левее исходной
влево нц пока сверху стена и снизу стена . закрасить ; влево кц
2. Возвращение в исходное положение
вправо нц пока клетка закрашена . вправо кц
3. Закраска всех клеток коридора правее исходной
вправо нц пока сверху стена и снизу стена . закрасить ; вправо кц
4. Возвращение в исходное положение
влево нц пока клетка закрашена . влево кц
5. Закраска исходной клетки
закрасить
Полный алгоритм
использовать Робот алг Закрасить_и_вернуться нач . влево . нц пока сверху стена и снизу стена . . закрасить ; влево . кц . вправо . нц пока клетка закрашена . . вправо . кц . вправо . нц пока сверху стена и снизу стена . . закрасить ; вправо . кц . влево . нц пока клетка закрашена . . влево . кц . закрасить кон
Вспомогательные алгоритмы
Вспомогательный алгоритм – это алгоритм, используемый в составе другого алгоритма. Вызывается из основного алгоритма по имени.
использовать Робот алг Закрасить_и_вернуться нач . Закрасить_влево . Вернуться_вправо . Закрасить_вправо . Вернуться_влево . закрасить кон
алг Вернуться_вправо нач . вправо . нц пока клетка закрашена . . вправо . кц кон
алг Закрасить_вправо нач . вправо . нц пока сверху стена и снизу стена . . закрасить ; вправо . кц кон
алг Закрасить_влево нач . влево . нц пока сверху стена и снизу стена . . закрасить ; влево . кц кон
алг Вернуться_влево нач . влево . нц пока клетка закрашена . . влево . кц кон
Вспомогательные алгоритмы
Задача . Используя вспомогательный алгоритм, составить алгоритм создания Роботом следующего орнамента.
начало
3 раз
Узор
Переход
Узор
конец
Вспомогательные алгоритмы
Задача . Используя вспомогательный алгоритм, составить алгоритм создания Роботом следующего орнамента.
использовать Робот алг Орнамент нач . нц 3 раз . . Узор ; Переход . кц . Узор кон
алг Узор нач . вниз ; закрасить ; вниз . вправо ; закрасить ; вправо . вверх ; закрасить ; вверх . влево ; закрасить кон
алг Переход нач . вправо ; вправо ; вправо кон