99 бутылок пива. Исполняют РАПИРА (КИ) и VIRT

18. РАПИРА. Точнее некий диалект языка РАПИРА для Конструктора Исполнителей.
Среда разработки и диалект мне не понравились. Не запоминаются положения и размеры окон, расцветка хромает, после вывода ошибки происходит выход, не хватает множества функций, синтаксис, не смотря на заявление разработчика, все-таки частично регистро-зависим и т.д. и т.п.

Сам язык РАПИРА (расшифровывается, как "Расширенный Адаптированный Поплан-Интерпретатор, Редактор, Архив") был придуман, как видно из синтаксиса, в Советском Союзе для обучения программированию в школах. Похоже, что конструктивно представляет из себя простую кальку с Паскаля.

Программа, выводящая песню о пиве (Panupa для Конструктора Исполнителей).


// Песня о пиве. Написал Степанищев Евгений
фун встр (и)
    старш:= и/10
    младш:= и mod 10

    если старш>0
        возврат симв(48+старш)+симв(48+младш)
    иначе
        возврат симв(48+младш)
    всё
кон фун

фун пиво (и)
    если и=0
        стр:= 'No'
    иначе
        стр:= встр (и)
    всё

    стр:= стр+' bottle'
    если и<>1
        стр:= стр+'s'
    всё

    возврат стр
кон фун

проц старт()
    для и от 99 до 1 шаг -1
        печать пиво (и)+' on the wall, '+пиво (и)+'.'
        печать 'Take one and pass it around,'
        печать пиво (и-1)+' on the wall.'
        печать ''
    кц

    печать 'No more bottles of beer...'
    печать 'Go to the store and buy some more...'
    печать '99 bottles of beer.'

кон проц



19. VIRT. Объекно-ориентированный язык. По синтаксису напоминает Object Pascal, Modula 2, Modula 3 и Oberon. Особенности. Специальные конструкции языка позволяют легко задавать списки и деревья, есть возможность перегрузки операторов "+", "-", "[]" и тому подобных, конструкции обработки исключительных ситуаций, вычисления языковых конструкций и многое другое.

Пара слов о реализации. Отступы в программе осуществляются при помощи пробелов, табуляции интерпретатор не любит, кроме того не любит он пробелов между именем функции и скобками. Но это не самое странное. Реализованный язык, по всей видимости, не дает использовать многобуквенные переменные, по крайней мере внутри функций. Так что, если вдруг, будьте внимательны.

На сайте есть компонент (45$) для Delphi, позволяющий использовать интерпретатор в качестве внутреннего языка для какого-либо проекта.

Программа, выводящая песню о пиве (beer.w).


-- Песня о пиве. Написал Евгений Степанищев

function PrintBeer(n)
    s := ''
    if n<>0 then
        s := s+str(n)
    else
        s := s+'No'
    end
    s := s+' bottle'
    if n<>1 then
        s := s+'s'
    end
return s+' of beer'

----------------- Main program ----------------

    P := 99
    While P Do
        Writeln( PrintBeer( P )+' on the wall, '+PrintBeer( P )+'.' )
        Writeln( 'Take one and pass it around,' )
        P := P-1
        Writeln( PrintBeer( P )+' on the wall.'+EOL() )
    End

    Writeln( 'No more bottles of beer...' )
    Writeln( 'Go to the store and buy some more...' )
    Writeln( '99 bottles of beer.')
return


3 апреля 2001 13:22

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: