![]() |
![]() |
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Содержание
Язык программирования TRACИнтерпретатор языка TRAC, с исходными текстами на языке Си. Лицензия GPL. Язык программирования TRAC был создан Келвином Муэрсом в начале 60-х. Ссылки:
В данной реализации по сравнению с описанием, приведенным в книге Ч.Уэзерелла "Этюды для программистов" изменена мнемоника, работа с бланками на внешних устройствах, трассировка, нет функций установки и чтения указателя, функция list по умолчанию использует разделитель “,”, конец файла выступает как металитера. Интерпретатор по очереди считывает и выполняет файлы, указанные в списке параметров. Если параметров нет, считывается файл стандартного ввода. Сигнал прерывания (”^C”) приводит к прерыванию выполнения текущей цепочки и выходу на основной цикл, сигнал выхода (”^\”) - к немедленному выходу из программы. Синтаксис выражений языка TRAC: #( имя, пар1, ... ) - активный вызов функции (с повторным сканированием) ##( имя, пар1, ... ) - пассивный вызов функции (без повторного сканирования) ( цепочка ) - защита цепочки от выполнения Встроенные функции
Пример: вычисление факториала#( define, fact, (#( eq, A, 0, 1, (##( mul, A, #( fact, ##( sub, A, 1 ) ) )) )) ) #( scan, fact, A ) #( fact, 40 ) Результат: 815915283247897734345611269596115894272000000000 Пример: вычисление EВычисляем E как сумму обратных факториалов. #( define, e, (#( eq, A, 0, B, (#( e, ##( div, A, ##( add, C, 1 ) ), ##( add, A, B ), ##( add, C, 1 ) )) )) ) #( scan, e, A, B, C ) #( e, 1 #( repeat, 10, 0000000000 ) ) Результат: 27182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664238 Пример: вычисление ПиВычисляем по формуле:
причем арктангенс раскладываем в ряд:
##( define, barctg.loop, (#( eq, B, 0, A, (#( barctg.loop, ##( add, A, ##( div, B, D ) ), ##( div, B, C ), C, ##( add, D, 2 ) )) )) ) ##( scan, barctg.loop, A, B, C, D ) ##( define, barctg, (#( div, #( barctg.loop, B, ##( div, B, ##( sub, , ##( mul, A, A ) ) ), ##( sub, , ##( mul, A, A ) ), 3 ), A )) ) ##( scan, barctg, A, B ) ##( define, pi, (##( mul, 4, ##( sub, ##( mul, 4, #( barctg, 5, A ) ), #( barctg, 239, A ) ) )) ) ##( scan, pi, A ) #( pi, 1 #( repeat, 10, 0000000000 ) ) Результат: 31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170680 |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |