Введение в функциональный язык программирования Перфо
Пока более полое описание синтаксиса смотрите в Учебник языка Перфо для школьников
Содержание
Синтаксис
Комментарий
// - комментарии
Пауза
(Пауза)
Имена переменных регистронезависимые, тип переменных определяется компилятором
(Перем НаСчету 500) // Объявляется переменная и ей присваивается значение 500
Анонимные (лямбда) - функции
Объявление анонимной функции:
функ аналог lambda в Scheme
(функ (x) (* x x)) // создать функцию, которая вычисляет квадрат числа (функ (x y) (+ x y)) // создать функцию, которая вычисляет сумму двух чисел (перем квадрат (функ (x) (* x x))) // создать функцию, которая вычисляет квадрат числа и назвать её "квадрат". (Вывод "Квадрат = " (квадрат 100) ПС)
//используем лямбду без параметров (перем ЛЯМ (функ () "значение лямбды")) (Вывод "Результат (лям) = " (лям) ПС)
//используем лямбду с двумя параметрами (перем ЛЯМ2 (функ (х у) (+ х у))) (Вывод "Результат (лям2 3 5) = " (лям2 3 5) ПС)
Область видимости
Проверим область видимости
(функция (ФА Б) (+ (* Б Б) 25)) (функция (ФД Б) (+ (ФА (+ Б 1)) (ФА (- Б 1)))) (Вывод "(ФА 5)=" (ФА 5) пс) (Вывод "(ФБ 10)=" (ФА 10) пс)
Присваивание переменной - Функции
Запомним встроенную функцию * в переменную УМН
(Перем УМН *) (Вывод "(УМН 2 3 4)=" (УМН 2 3 4) пс)
Окружение
Создадим новое окружение и проверим, что переменные созданные в нем не доступны снаружи:
(Окружение (Перем ВнутрПерем1 1) (Перем ВнутрПерем2 2) (Вывод "В окружении (+ ВнутрПерем1 ВнутрПерем2) = " (+ ВнутрПерем1 ВнутрПерем2) пс) )
Встроенные функции
Проверка встроенных функций:
(Вывод "(ТекущаяДата) = " (ТекущаяДата) пс) (Вывод "(ТипЗнчСтр ""строка"") = " (ТипЗнчСтр "строка") пс) (Вывод "(Число? 45.54) = " (Число? 45.54) пс) (Вывод "(Вещ? 45.54) = " (Вещ? 45.54) пс) (Вывод "(ТипЗнчСтр 45.54) = " (ТипЗнчСтр 45.54) пс) (Перем Аня "Девочка Аня гуляет") (Вывод "(Сред """ Аня """ 9) = " (Сред Аня 9) пс) (Вывод "(Сред ""Девочка Аня гуляет"" 9 3) = " (Сред Аня 9 3) пс) (Вывод "(Лев """ Аня """ 7) = " (Лев Аня 7) пс) (Вывод "(Прав """ Аня """ 6) = " (Прав Аня 6) пс)
Циклы в функциональном языке Перфо
Цикл Пока. Команда Прервать
(Перем Индекс 0) (Пока (< Индекс 13) (Если (= Индекс 1) ((Вывод "Пропустили 1 с помощью оператора Продолжить!" ПС) (++ Индекс) (Продолжить))) (Вывод "Пока Индекс = " Индекс ПС) (++ Индекс) (Если (= Индекс 3) ((Вывод "Сработала команда Прервать!" ПС) (Прервать))) )
Цикл Для
Реализация цикла Для
(Перем Шаг -1.95) (Для (Индекс 6.1 0 Шаг) (Если (< Индекс 1) ((Вывод "Сработала команда Прервать!" ПС) (Прервать))) (Вывод "Для Индекс = " Индекс ПС) // ПС - Перевод Строки )
Препроцессор
Область ... Конец области
Назначение операторов Область ... Конец области - группировка кода в сворачиваемые области по смыслу. Обозначив кусок кода (сразу несколько функций, кусок кода внутри функции, описания и т.п.) его можно сворачивать/разворачивать. На панели инструментов в редакторе есть кнопка позволяющая быстро перейти к нужной области по её названию. На исполнение программы никак не влияют.
#Область "Область данных" ... #КонецОбласти