Создай управляющий алгоритм для робота: различия между версиями

Материал из Поле цифровой дидактики
(Новая страница: «{{genAIcase |Description=Кейс создания управляющих алгоритмов для роботов на различных языках |Field_of_knowledge=Робототехника |Type_of_Content=Код, Текст |Prompt=Создать тему : Предложи схему алгоритма для робота-геолога. Представь эту схему на языке mermaid : Создай алгоритм для ро...»)
 
 
Строка 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


Описание Кейс создания управляющих алгоритмов для роботов на различных языках
Область знаний Робототехника
Тип генерируемого контента Код, Текст
Ссылка на пример
Сценарий генерации Создать тему
Предложи схему алгоритма для робота-геолога. Представь эту схему на языке mermaid
Создай алгоритм для робота-геолога на языке Oberon
Среды для генерации: 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.