
Karel (programming language)
Karel — це вступна навчальна мова програмування, призначена для початківців. Її створив Річард Е. Петтіс і представив у книзі Karel the Robot: A Gentle Introduction to the Art of Programming. Цю мову Петтіс використовував у своїх курсах програмування в Стенфордському університеті в Каліфорнії. Мова названа на честь чеського письменника Карела Чапека, який увів слово робот у своїй п’єсі R.U.R.
Принципи:
Програма мовою Karel керує простим роботом на ім’я Карел, який діє в середовищі, що складається з сітки вулиць (горизонтально) та проспектів (вертикально). Карел розуміє п’ять базових команд:
●
●
●
●
●
Окрім цих команд, Карел може перевіряти умови у своєму безпосередньому оточенні, зокрема чи є маркер на поточній клітинці, чи знаходяться поруч стіни, а також у якому напрямку він повернений. Програміст може створювати нові команди, поєднуючи базові інструкції, використовувати умовні керуючі конструкції (
Приклад
Нижче наведено простий приклад синтаксису Karel:
Karel — це вступна навчальна мова програмування, призначена для початківців. Її створив Річард Е. Петтіс і представив у книзі Karel the Robot: A Gentle Introduction to the Art of Programming. Цю мову Петтіс використовував у своїх курсах програмування в Стенфордському університеті в Каліфорнії. Мова названа на честь чеського письменника Карела Чапека, який увів слово робот у своїй п’єсі R.U.R.
Принципи:
Програма мовою Karel керує простим роботом на ім’я Карел, який діє в середовищі, що складається з сітки вулиць (горизонтально) та проспектів (вертикально). Карел розуміє п’ять базових команд:
●
move — переміщує Карела на одну клітинку вперед у напрямку, куди він повернений;●
turnLeft — повертає Карела на 90 градусів ліворуч;●
putBeeper — розміщує маркер (beeper) на поточній клітинці;●
pickBeeper — забирає маркер (beeper) з поточної клітинки;●
turnoff — вимикає Карела та завершує виконання програми.Окрім цих команд, Карел може перевіряти умови у своєму безпосередньому оточенні, зокрема чи є маркер на поточній клітинці, чи знаходяться поруч стіни, а також у якому напрямку він повернений. Програміст може створювати нові команди, поєднуючи базові інструкції, використовувати умовні керуючі конструкції (
if, while), що ґрунтуються на перевірках середовища, та застосовувати ітераційні конструкції для реалізації складнішої поведінки робота.Приклад
Нижче наведено простий приклад синтаксису 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 використовується в мові програмування
Примітивні функції
Основні примітивні функції:
●
●
●
●
●
Структура програм
Програми мовою Karel мають таку структуру:
Коментарі: будь-який рядок, що починається з символу
Функції: оголошуються за допомогою ключового слова
Умови в Karel
Карел може реагувати на умови у своєму середовищі:
Та їхні заперечення:
Також можливе визначення кольору поточної клітинки за допомогою функції
Умови та цикли
Доступні дві керуючі конструкції:
умовне виконання з використанням
цикли з використанням
Наведена реалізація Karel використовується в мові програмування
Python. Існують також інші реалізації.Примітивні функції
Основні примітивні функції:
●
move() - Карел переміщується на одну клітинку в напрямку, куди він повернений.●
turn_left() - Карел повертається ліворуч на 90 градусів.●
put_beeper() - Карел розміщує маркер (beeper) на поточній клітинці.●
pick_beeper() - Карел підбирає маркер (beeper) з поточної клітинки.●
paint_corner(COLOR_NAME) - Карел зафарбовує поточну клітинку в заданий колір. Доступна скінченна множина кольорів.Структура програм
Програми мовою Karel мають таку структуру:
Коментарі: будь-який рядок, що починається з символу
#, є коментарем і ігнорується інтерпретатором.Функції: оголошуються за допомогою ключового слова
def після якого вказується ім’я функції та круглі дужки. Тіло функції записується в наступних рядках.main(): під час виконання програми запускається функція main. Інші функції виконуються лише в разі їх виклику.Умови в Karel
Карел може реагувати на умови у своєму середовищі:
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.