Кажется мы стали забывать уроки ОБЖ…
99 бутылок: CFAQ
Отдаю очередную дань своему давнему хобби — написанию американской традиционной песни про пиво на разнообразных языках программирования.
72. CFAQ (читается «СИФАК»). Очень люблю самодельные языки программирования, есть в них
Когда узнал, что у известного
Язык, конечно, довольно простой, без поддержки подпрограмм или функций (их можно эмулировать отдельными файлами, передавая параметры через глобальные переменные), но с циклами, ветвлениями и переменными.
# 99.TXT. Написано Степанищевым Евгением, апрель 2020
B = 99
repeat -1 {
Bt = {B}
repeat 2 {
if {Bt} = 0 {
set S = no bottles
} else {
if {Bt} = 1 {
set S = 1 bottle
} else {
set S = {Bt} bottles
}
}
if {Bt} = {B} {
echo {S} of beer on the wall, {S} of beer.<br>
} else {
echo Take one down and pass it around, {S} of beer on the wall.<br>
}
Bt -= 1
}
B -= 1
if {B} = 0 {
echo No more bottles of beer on the wall, no more bottles of beer.<br>
echo Go to the store and buy some more, 99 bottles of beer on the wall.
exit
}
}Первую версию программы писал вайтбордингом — мне её просто негде было запустить. К счастью Леонид предоставил тестовый стенд на побаловаться, я исправил все ошибки и теперь программа гарантированно работает, проверено. Правда все 99 «бутылок» она вывести не может — не хватает памяти в буфере вывода, так что испытывал на десяти.
Скудность конструкций языка компенсируется относительным богатством встроенных функций для работы с различным оборудованием и взаимодействия с внешним миром (например, он умеет выводить информацию через бота в мессенджер «Телеграм»), но в моей программе это, разумеется, не пригодилось.