Введение в функциональный язык программирования Перфо — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м (Окружение)
Строка 48: Строка 48:
 
     (Перем ВнутрПерем2 2)
 
     (Перем ВнутрПерем2 2)
 
     (Вывод "В окружении (+ ВнутрПерем1 ВнутрПерем2) = " (+ ВнутрПерем1 ВнутрПерем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) ((Вывод "Сработала команда Прервать!" ПС) (Прервать)))
 +
    (Вывод "Для Индекс = " Индекс ПС) // ПС - Перевод Строки
 
  )
 
  )
  

Версия 19:52, 2 сентября 2020

Пока более полое описание синтаксиса смотрите в Учебник языка Перфо для школьников

Синтаксис

Комментарий

// - комментарии

Пауза

(Пауза)

Имена переменных регистронезависимые, тип переменных определяется компилятором

(Перем НаСчету 500) // Объявляется переменная  и ей присваивается значение 500

Анонимные (лямбда) - функции

Используем лямбду без параметров:

(перем ЛЯМ (функ () "значение лямбды"))
(Вывод "Результат (лям) = " (лям) ПС)

Используем лямбду с двумя параметрами:

(перем ЛЯМ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) ((Вывод "Сработала команда Прервать!" ПС) (Прервать)))
    (Вывод "Для Индекс = " Индекс ПС) // ПС - Перевод Строки
)

Препроцессор

Область ... Конец области

Назначение операторов Область ... Конец области - группировка кода в сворачиваемые области по смыслу. Обозначив кусок кода (сразу несколько функций, кусок кода внутри функции, описания и т.п.) его можно сворачивать/разворачивать. На панели инструментов в редакторе есть кнопка позволяющая быстро перейти к нужной области по её названию. На исполнение программы никак не влияют.

#Область "Область данных"
...
#КонецОбласти

ссылки