Карел (язык программирования)
![]() | |
Парадигма | процедурный |
---|---|
Разработано | Ричард Э. Паттис |
Впервые появился | 1981 |
Веб-сайт | Ккарел |
Диалекты | |
Некоторые локализованные языковые варианты | |
Под влиянием | |
Паскаль | |
Под влиянием | |
Карел++, AgentSheets , Гвидо ван Робот |
Karel — образовательный язык программирования для начинающих, созданный Ричардом Э. Паттисом в его книге «Робот Карел: нежное введение в искусство программирования» . Паттис использовал этот язык на своих курсах в Стэнфордском университете , Калифорния . Язык назван в честь Карела Чапека , чешского писателя, который ввел слово робот в своей пьесе «РУР». [1] [2]
Принципы
[ редактировать ]Программа по имени Карел, который живет в среде, состоящей из на языке Карел используется для управления простым роботом сетки улиц (слева-направо) и проспектов (вверх-вниз). Карел понимает пять основных инструкций: move
(Карел перемещается на одну клетку в том направлении, в котором смотрит), turnLeft
(Карел поворачивает на 90° влево), putBeeper
(Карел включает пейджер на площади, на которой стоит), pickBeeper
(Карел поднимает пейджер с площади, на которой он стоит) и turnoff
(Карел выключается, программа завершается). Карел также может выполнять логические запросы о своем ближайшем окружении, спрашивая, есть ли пейджер там, где он стоит, есть ли рядом с ним барьеры и о направлении, в котором он смотрит. Программист . может создавать дополнительные инструкции , определяя их в терминах пяти основных инструкций и используя условного потока управления операторы if
и while
с запросами среды и с помощью iterate
построить. [ нужна ссылка ]
Пример
[ редактировать ]Ниже приведен простой пример синтаксиса Karel:
BEGINNING-OF-PROGRAM DEFINE turnRight AS BEGIN turnLeft; turnLeft; turnLeft; END BEGINNING-OF-EXECUTION ITERATE 3 TIMES BEGIN turnRight; move END turnoff END-OF-EXECUTION END-OF-PROGRAM
Спецификация
[ редактировать ]Следующая реализация — Karel на языке программирования Python . [3] Доступны и другие реализации.
Примитивные функции
[ редактировать ]Ниже приведены примитивные функции.
move()
: Карел перемещается на одну клетку в том направлении, в котором смотрит.
turn_left()
: Карел поворачивает налево на 90 градусов.
put_beeper()
: Карел включает звуковой сигнал на текущем квадрате.
pick_beeper()
: Карел берет пейджер с текущего квадрата.
paint_corner(COLOR_NAME)
: Карел закрашивает текущий угол цветом. Существует ограниченный список доступных цветов.
Структуры программы
[ редактировать ]Программы Karel структурированы следующим образом:
- Комментарии: Любая строка, начинающаяся с
#
является комментарием и игнорируется интерпретатором. - Функции в Karel объявляются с использованием
def
, за которым следует имя функции и круглые скобки. В последующих строках следует тело функции. main()
: При запуске программы выполняетсяmain
функция. Остальные функции не выполняются, если они не вызваны.
Условия в Кареле
[ редактировать ]Карел может реагировать на определенные условия в своем мире:
front_is_clear(),
beepers_present(),
beepers_in_bag(),
left_is_clear(),
right_is_clear(),
facing_north(),
facing_south()
,
facing_east()
,
facing_west()
И их обратные стороны:
front_is_blocked(),
no_beepers_present(),
no_beepers_in_bag()
,
left_is_blocked()
,
right_is_blocked(),
not_facing_north(),
not_facing_south(),
not_facing_east(),
not_facing_west()
.
Он также может проверить цвет текущего блока, corner_color_is(COLOR_NAME)
.
Условия и циклы
[ редактировать ]Существуют две структуры управления:
- Условное выполнение с использованием
if
иelse
. - Циклы с использованием
for
иwhile
.
Варианты и потомки
[ редактировать ]Этот язык вдохновил на разработку различных клонов и подобных образовательных языков. Поскольку язык предназначен для начинающих, на некоторых языках существуют локализованные варианты, в частности на чешском (язык программирования был довольно популярен в Чехословакии ).
Принципы Karel были обновлены до парадигмы объектно-ориентированного программирования в новом языке программирования под названием Karel++. Karel++ концептуально основан на Karel, но использует совершенно новый синтаксис, аналогичный Java .
НАСТОЯЩАЯ базовая реализация, rbKarel, [4] предоставляет основные команды Karel в среде RBScript с синтаксисом BASIC, используемым для циклов и условий. Этот учебный проект предоставляет кроссплатформенный графический интерфейс для экспериментов Karel, включая пошаговый и голосовой вывод.
Язык и среда, вдохновленные карелами, под названием Robot Emil. [5] использует трехмерное представление мира роботов. Робот Эмиль предлагает большую палитру объектов, которые можно разместить, изображая стены, окна (прозрачность), воду и траву. Камеру можно свободно перемещать по 3D-среде. Роботом можно управлять в интерактивном режиме с помощью кнопок в графическом интерфейсе или с помощью программ, написанных на языке программирования Эмиля, похожем на Карел. Автор заявляет, что программа бесплатна для использования школами, студентами и детьми. Доступны версии на английском , чешском и словацком языках .
Для программирования роботов FANUC Robotics используется собственный язык, который также называется Karel . Однако FANUC Karel является производным от Pascal .
Язык также был реализован как Karel the Dog в JavaScript компанией CodeHS . Как и в исходном языке, в этой реализации Карел представлен в сеточном мире. Программисты используют и развивают простой словарь команд Карела для выполнения задач программирования. Вместо того, чтобы ставить и собирать пейджеры, пес Карел кладет и берет теннисные мячи.
Немецкая версия Карела называется «Робот Кароль». [6]
См. также
[ редактировать ]- Образовательный язык программирования
- RoboMind — образовательная альтернативная среда программирования.
- RUR-PLE — еще один инструмент «Изучения Python», основанный на идеях Карела.
- CodeHS — вводное обучение информатике с использованием Karel в JavaScript
Дальнейшее чтение
[ редактировать ]- Ричард Э. Паттис. Робот Карел: Нежное введение в искусство программирования . Джон Уайли и сыновья, 1981. ISBN 0-471-59725-2 .
- Джозеф Бергин, Марк Стелик, Джим Робертс, Ричард Э. Паттис. Карел++: Нежное введение в искусство объектно-ориентированного программирования . Джон Уайли и сыновья, 1996. ISBN 0-471-13809-6 .
Ссылки
[ редактировать ]- ^ «Кто на самом деле изобрел слово «робот» и что оно означает?» . Архивировано из оригинала 27 июля 2013 года . Проверено 25 июля 2013 г.
- ^ Марголиус, Иван (осень 2017 г.) «Пражский робот». Архивировано 11 сентября 2017 г. в Wayback Machine. Информационный бюллетень «Друзья чешского наследия» №. 17, стр.3-6
- ^ Пих, Крис; Робертс, Эрик (январь 2019 г.). «Робот Карел изучает Python. Приложение: Справочник» . compedu.stanford.edu . Проверено 12 июня 2023 г.
- ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» .
- ^ «Введение (EN)» . www.emil.input.sk . Архивировано из оригинала 2 ноября 2010 г.
- ^ «Робот Кароль – Побег из лабиринта | Школьная лаборатория информатики — InfoSphere, откройте для себя информатику в модулях для всех типов школ и классов» . schuelerlabor.informatik.rwth-aachen.de . Проверено 29 декабря 2020 г.
Внешние ссылки
[ редактировать ]- Карельский синтаксис
- xKarel Р. Досталя и П. Абрахамчика (создан в 1997 г.)
- Карел Т. Митчелла (создан в 2000 г.)
- Карел в крошечном цвете Ли Брэдли (создан в 2013 г.)
- Карел для iPad от CloudMakers (создан в 2014 г.)
- Карел в JavaScript от CodeHS
- Карел в Perl 5, автор Э. Чороба (создан в 2016 г.)
- Карел-3D на JavaScript и C++ (sk) (en) (de) (es) (создан 2017, 2018)
- Гвидо ван Робот (GvR) - Карел на Python (создан в 2006, 2010 г.)