Введение в функциональный язык программирования Перфо — различия между версиями
Материал из ТХАБ.РФ
Админ (обсуждение | вклад) м (→Анонимные (лямбда) - функции) |
Тест (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
* [https://habr.com/ru/company/tinkoff/blog/267015/ предполагается сделать на основе статьи Введение в Scheme с хабра] | * [https://habr.com/ru/company/tinkoff/blog/267015/ предполагается сделать на основе статьи Введение в Scheme с хабра] | ||
− | Пока | + | Пока самое полное описание синтаксиса смотрите в [[Учебник языка Перфо для школьников]] и в файлах примеров поставляемых вместе с Перфо. |
== Синтаксис == | == Синтаксис == | ||
Строка 81: | Строка 81: | ||
) | ) | ||
− | === Цикл Для | + | === Цикл Для === |
Реализация цикла Для | Реализация цикла Для | ||
(Перем Шаг -1.95) | (Перем Шаг -1.95) | ||
Строка 90: | Строка 90: | ||
== Препроцессор == | == Препроцессор == | ||
− | + | * [[Препроцессор языка Перфо]] | |
− | |||
− | |||
− | |||
− | |||
== ссылки == | == ссылки == |
Версия 20:19, 2 декабря 2020
Пока самое полное описание синтаксиса смотрите в Учебник языка Перфо для школьников и в файлах примеров поставляемых вместе с Перфо.
Содержание
Синтаксис
Комментарий
// - комментарии
Пауза
(Пауза)
Имена переменных регистронезависимые, тип переменных определяется компилятором
(Перем НаСчету 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) ((Вывод "Сработала команда Прервать!" ПС) (Прервать))) (Вывод "Для Индекс = " Индекс ПС) // ПС - Перевод Строки )