Создай управляющий алгоритм для робота: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) (Новая страница: «{{genAIcase |Description=Кейс создания управляющих алгоритмов для роботов на различных языках |Field_of_knowledge=Робототехника |Type_of_Content=Код, Текст |Prompt=Создать тему : Предложи схему алгоритма для робота-геолога. Представь эту схему на языке mermaid : Создай алгоритм для ро...») |
Patarakin (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
|Environment=ChatGPT | |Environment=ChatGPT | ||
}} | }} | ||
=== MerMaid === | |||
{{#mermaid: | {{#mermaid: | ||
graph TD | graph TD | ||
Строка 20: | Строка 21: | ||
}} | }} | ||
=== Oberon === | |||
; Представьте алгоритм робота-геолога на языке [[Oberon]] | |||
[[Алгоритм]] робота-геолога на языке [[Oberon]] может выглядеть следующим образом: | |||
; Импортировать необходимые библиотеки для работы с датчиками и двигателями робота. | |||
<syntaxhighlight lang="oberon2"> | |||
MODULE RobotGeologistIMPORT Math, Sensors, Motors; | |||
CONST | |||
MAX_DEPTH = 100; (* максимальная глубина, на которую может опуститься робот *) | |||
MAX_ANGLE = 45; (* максимальный угол, на который может повернуться робот *) | |||
VAR | |||
depth: INTEGER; (* текущая глубина *) | |||
angle: INTEGER; (* текущий угол *) | |||
PROCEDURE Main; | |||
VAR | |||
i: INTEGER; | |||
BEGIN | |||
(* инициализация датчиков и моторов *) | |||
Sensors.Init; | |||
Motors.Init; | |||
(* начальное положение робота *) | |||
depth := 0; | |||
angle := 0; | |||
(* цикл работы робота *) | |||
FOR i := 1 TO 10 DO | |||
(* опускаемся на случайную глубину *) | |||
depth := Math.Random(MAX_DEPTH); | |||
Motors.MoveDown(depth); | |||
(* поворачиваемся на случайный угол *) | |||
angle := Math.Random(MAX_ANGLE); | |||
IF Math.Random(2) = 0 THEN | |||
angle := -angle; (* случайно выбираем направление поворота *) | |||
END; | |||
Motors.Turn(angle); | |||
(* снимаем данные с датчиков *) | |||
Sensors.Read; | |||
(* обработка данных *) | |||
IF Sensors.IsObstacle THEN | |||
(* если обнаружено препятствие, то поворачиваемся на 180 градусов *) | |||
Motors.Turn(180); | |||
ELSIF Sensors.IsMineral THEN | |||
(* если обнаружена полезная руда, то поднимаемся на поверхность *) | |||
Motors.MoveUp(depth); | |||
EXIT; (* завершаем работу робота *) | |||
END; | |||
(* поднимаемся на ту же глубину *) | |||
Motors.MoveUp(depth); | |||
END; | |||
END Main; | |||
BEGIN | |||
Main; | |||
END RobotGeologist. | |||
</syntaxhighlight> |
Текущая версия на 22:09, 5 июня 2023
Описание | Кейс создания управляющих алгоритмов для роботов на различных языках |
---|---|
Область знаний | Робототехника |
Тип генерируемого контента | Код, Текст |
Ссылка на пример | |
Сценарий генерации | Создать тему
|
Среды для генерации: | ChatGPT |
MerMaid
Oberon
- Представьте алгоритм робота-геолога на языке Oberon
Алгоритм робота-геолога на языке Oberon может выглядеть следующим образом:
- Импортировать необходимые библиотеки для работы с датчиками и двигателями робота.
MODULE RobotGeologistIMPORT Math, Sensors, Motors;
CONST
MAX_DEPTH = 100; (* максимальная глубина, на которую может опуститься робот *)
MAX_ANGLE = 45; (* максимальный угол, на который может повернуться робот *)
VAR
depth: INTEGER; (* текущая глубина *)
angle: INTEGER; (* текущий угол *)
PROCEDURE Main;
VAR
i: INTEGER;
BEGIN
(* инициализация датчиков и моторов *)
Sensors.Init;
Motors.Init;
(* начальное положение робота *)
depth := 0;
angle := 0;
(* цикл работы робота *)
FOR i := 1 TO 10 DO
(* опускаемся на случайную глубину *)
depth := Math.Random(MAX_DEPTH);
Motors.MoveDown(depth);
(* поворачиваемся на случайный угол *)
angle := Math.Random(MAX_ANGLE);
IF Math.Random(2) = 0 THEN
angle := -angle; (* случайно выбираем направление поворота *)
END;
Motors.Turn(angle);
(* снимаем данные с датчиков *)
Sensors.Read;
(* обработка данных *)
IF Sensors.IsObstacle THEN
(* если обнаружено препятствие, то поворачиваемся на 180 градусов *)
Motors.Turn(180);
ELSIF Sensors.IsMineral THEN
(* если обнаружена полезная руда, то поднимаемся на поверхность *)
Motors.MoveUp(depth);
EXIT; (* завершаем работу робота *)
END;
(* поднимаемся на ту же глубину *)
Motors.MoveUp(depth);
END;
END Main;
BEGIN
Main;
END RobotGeologist.