Пример «Функции с одним операндом»
Файлы:
- Синтаксис языка
- Встроенные функции
- Функции с одним операндом.перфо
- Встроенные функции
Пример программы на языке программирования Перфо:
//Эта программа написана на языке Перфо
//Для демонстрации встроенных функций с одним операндом
// --- Логические функции ---
// Тест функции НЕ: логическое отрицание
(Вывод "(НЕ Ложь): " (Не Ложь) пс) // ожидаем: Истина
(Вывод "(НЕ Истина): " (Не Истина) пс) // ожидаем: Ложь
// --- Математические функции ---
// Тест функции Корень: квадратный корень числа
(Вывод "(Корень 49): " (Корень 49) пс) // ожидаем: 7
// Тест функции Sqrt: квадратный корень (аналог Корень)
(Вывод "(Sqrt 25): " (Sqrt 25) пс) // ожидаем: 5
// Тест функции Синус: вычисляет синус
(Перем ПИ 3.141528)
(Вывод "(Синус 0): " (Синус 0) пс) // ожидаем: 0
(Вывод "(Синус (/ ПИ 2)): " (Синус (/ ПИ 2)) пс) // ожидаем: ?1
// Тест функции Sin: синус (аналог Синус)
(Вывод "(Sin 0): " (Sin 0) пс) // ожидаем: 0
// Тест функции Косинус: вычисляет косинус
(Вывод "(Косинус 0): " (Косинус 0) пс) // ожидаем: 1
(Вывод "(Косинус (/ ПИ 2)): " (Косинус (/ ПИ 2)) пс) // ожидаем: ?0
// Тест функции Cos: косинус (аналог Косинус)
(Вывод "(Cos 0): " (Cos 0) пс) // ожидаем: 1
// Тест функции Знак: определяет знак числа
(Вывод "(Знак -5): " (Знак -5) пс) // ожидаем: -1
(Вывод "(Знак 0): " (Знак 0) пс) // ожидаем: 0
(Вывод "(Знак 8): " (Знак 8) пс) // ожидаем: 1
// Тест функции Sign: знак числа (аналог Знак)
(Вывод "(Sign -1): " (Sign -1) пс) // ожидаем: -1
// Тест функции Цел: целая часть числа
(Вывод "(Цел 12.75): " (Цел 12.75) пс) // ожидаем: 12
(Вывод "(Цел -4.3): " (Цел -4.3) пс) // ожидаем: -4
// Тест функции Дроб: дробная часть числа
(Вывод "(Дроб 12.75): " (Дроб 12.75) пс) // ожидаем: 0.75
(Вывод "(Дроб -4.3): " (Дроб -4.3) пс) // ожидаем: -0.3
// Тест функции Log: ln(x)
(Вывод "(Log 1): " (Log 1) пс) // ожидаем: 0
(Вывод "(Log 2.71828): " (Log 2.71828) пс) // ожидаем: ?1
// Тест функции Log10: логарифм по основанию 10
(Вывод "(Log10 1000): " (Log10 1000) пс) // ожидаем: 3
// Тест функции Exp: экспоненциальная функция
(Вывод "(Exp 1): " (Exp 1) пс) // ожидаем: ?2.718
(Вывод "(Exp 0): " (Exp 0) пс) // ожидаем: 1
// Тест функции АБС: абсолютное значение (русская форма)
(Вывод "(АБС -9): " (АБС -9) пс) // ожидаем: 9
// Тест функции Abs: абсолютное значение (аналог АБС)
(Вывод "(Abs -8): " (Abs -8) пс) // ожидаем: 8
// Тест функции Тангенс: тангенс
(Вывод "(Тангенс 0): " (Тангенс 0) пс) // ожидаем: 0
// Тест функции Tan: тангенс
(Вывод "(Tan 0): " (Tan 0) пс) // ожидаем: 0
// Тест функции Asin: арксинус
(Вывод "(Asin 1): " (Asin 1) пс) // ожидаем: ?1.5708
// Тест функции Acos: арккосинус
(Вывод "(Acos 1): " (Acos 1) пс) // ожидаем: 0
// Тест функции Atan: арктангенс
(Вывод "(Atan 1): " (Atan 1) пс) // ожидаем: ?0.7854
// Тест функции Помодулю: абсолютное значение с сохранением типа
(Вывод "(Помодулю -5): " (Помодулю -5) пс) // ожидаем: 5
(Вывод "(Помодулю 3): " (Помодулю 3) пс) // ожидаем: 3
// Тест функции Абс: модуль числа (аналог ПоМодулю)
(Вывод "(Абс -7.5): " (Абс -7.5) пс) // ожидаем: 7.5
// --- Функции работы со строками ---
// Тест функции СтрДлина: количество символов в строке
(Перем Текст "абвгдеёжзи")
(Вывод "(СтрДлина Текст): " (СтрДлина Текст) пс) // ожидаем: 10
// Тест функции СтрЧислоСтрок: количество строк в тексте
(Перем МногоСтрок (СиСтр "первая\nвторая\nтретья"))
(Вывод "(СтрЧислоСтрок МногоСтрок): " (СтрЧислоСтрок МногоСтрок) пс) // ожидаем: 3
// Тест функции СокрЛ: удаляет пробелы в начале строки
(Перем Ст " текст")
(Вывод "(СокрЛ Ст): " (СокрЛ Ст) пс) // ожидаем: "текст"
// Тест функции СокрП: удаляет пробелы в конце строки
(Перем Ст "текст ")
(Вывод "(СокрП Ст): " (СокрП Ст) пс) // ожидаем: "текст"
// Тест функции СокрЛП: обрезает пробелы с обеих сторон
(Перем Стр " текст ")
(Вывод "(СокрЛП Стр): " (СокрЛП Стр) пс) // ожидаем: "текст"
// Тест функции ВРег: преобразует в верхний регистр
(Перем Стр "абвгде")
(Вывод "(ВРег Стр): " (ВРег Стр) пс) // ожидаем: "АБВГДЕ"
// Тест функции НРег: преобразует в нижний регистр
(Перем Стр "АБВГДЕ")
(Вывод "(НРег Стр): " (НРег Стр) пс) // ожидаем: "абвгде"
// Тест функции ТРег: преобразует строку в заголовочный стиль
(Перем Стр "ПРИВЕТ мир")
(Вывод "(ТРег Стр): " (ТРег Стр) пс) // ожидаем: "Привет мир"
// --- Функции преобразования типов ---
// Тест функции Булево: преобразует в логическое
(Вывод "(Булево 1): " (Булево 1) пс) // ожидаем: Истина
(Вывод "(Булево 0): " (Булево 0) пс) // ожидаем: Ложь
// Тест функции Символ: получает символ по коду
(Вывод "(Символ 1076): " (Символ 1076) пс) // ожидаем: "д"
(Вывод "(Символ ""А""): " (Символ "А") пс) // ожидаем: "А"
// Тест функции Строка: преобразует значение в строку
(Вывод "(Строка 123): " (Строка 123) пс) // ожидаем: "123"
// Тест функции Дата: преобразует строку в дату
(Вывод "(Дата ""20240718120505""): " (Дата "20240718120505") пс) // ожидаем: '18.07.2024 12:05:05'
(Вывод "(Дата ""18.07.2024 12:05:05""): " (Дата "18.07.2024 12:05:05") пс) // ожидаем: '18.07.2024 12:05:05'
// Тест функции Объект: упаковывает значение в тип объект
(Вывод "(Объект 1): " (Объект 1) пс) // ожидаем: 1
(Вывод "(Объект ""АБВ""): " (Объект "АБВ") пс) // ожидаем: АБВ
// Тест функции Цел8: преобразует значение в тип Цел8
(Вывод "(Цел8 3.7): " (Цел8 3.7) пс) // ожидаем: 3
// Тест функции Цел16: преобразует значение в тип Цел16
(Вывод "(Цел16 3.7): " (Цел16 3.7) пс) // ожидаем: 3
// Тест функции Цел32: преобразует значение в тип Цел32
(Вывод "(Цел32 3.7): " (Цел32 3.7) пс) // ожидаем: 3
// Тест функции Цел64: преобразует значение в тип Цел64
(Вывод "(Цел64 3.7): " (Цел64 3.7) пс) // ожидаем: 3
// Тест функции Целое: преобразует значение в тип Целое
(Вывод "(Целое 3.7): " (Целое 3.7) пс) // ожидаем: 3
// Тест функции Байт: преобразует значение в тип Байт
(Вывод "(Байт 3.7): " (Байт 3.7) пс) // ожидаем: 3
// Тест функции Бит8: преобразует значение в тип Бит8
(Вывод "(Бит8 3.7): " (Бит8 3.7) пс) // ожидаем: 3
// Тест функции Бит16: преобразует значение в тип Бит16
(Вывод "(Бит16 3.7): " (Бит16 3.7) пс) // ожидаем: 3
// Тест функции Бит32: преобразует значение в тип Бит32
(Вывод "(Бит32 3.7): " (Бит32 3.7) пс) // ожидаем: 3
// Тест функции Бит8: преобразует значение в тип Бит64
(Вывод "(Бит64 3.7): " (Бит64 3.7) пс) // ожидаем: 3
// Тест функции Вещ: преобразует значение в тип Вещ
(Вывод "(Вещ 5): " (Вещ 5) пс) // ожидаем: 5.0
// Тест функции Двещ: преобразует значение в тип ДВещ
(Вывод "(Двещ 3.14): " (Двещ 3.14) пс) // ожидаем: 3.14
// Тест функции Число: преобразует строку в тип Число
(Вывод "(Число ""42""): " (Число "42") пс) // ожидаем: 42
// Тест функции ЦелУКЗ: преобразует адрес в управляемый указатель
(Вывод "(ЦелУКЗ 123): " (ЦелУКЗ 123) пс) // ожидаем: 123
// Тест функции БитУКЗ: адрес в управляемый указатель
(Вывод "(БитУКЗ 0b1010): " (БитУКЗ 0b1010) пс) // ожидаем: 10
// Тест функции ЧислоИзШестнадцатеричнойСтроки: парсинг HEX
(Вывод "(ЧислоИзШестнадцатеричнойСтроки ""0xFF""): " (ЧислоИзШестнадцатеричнойСтроки "0xFF") пс) // ожидаем: 255
// Тест функции ЧислоИзДвоичнойСтроки: парсинг BIN
(Вывод "(ЧислоИзДвоичнойСтроки ""0b1101""): " (ЧислоИзДвоичнойСтроки "0b1101") пс) // ожидаем: 13
// --- Функции проверки типов и значений ---
// Тест функции Строка?: проверяет, является ли значение строкой
(Вывод "(Строка? ""абв""): " (Строка? "абв") пс) // ожидаем: Истина
(Вывод "(Строка? 123): " (Строка? 123) пс) // ожидаем: Ложь
// Тест функции Список?: проверяет, является ли значение списком
(Перем Спис (Список "а" "б" "в"))
(Вывод "(Список? Спис): " (Список? Спис) пс) // ожидаем: Истина
// Тест функции Пусто?: пуст ли список
(Перем Пустой (Список))
(Вывод "(Пусто? Пустой): " (Пусто? Пустой) пс) // ожидаем: Истина
(Перем Непустой (Список "а"))
(Вывод "(Пусто? Непустой): " (Пусто? Непустой) пс) // ожидаем: Ложь
// Тест функции ТипЗнч: возвращает тип значения в виде строки
(Вывод "(ТипЗнч ""абв"") = Строка: " (= (ТипЗнч "абв") (Тип "Строка")) пс) // ожидаем: Истина
(Вывод "(ТипЗнч 3.14) = Вещ: " (= (ТипЗнч 3.14) (Тип "Вещ")) пс) // ожидаем: Истина
// Тест функции ТипЗнчСтр: тип значения в строковом виде
(Вывод "(ТипЗнчСтр 10): " (ТипЗнчСтр 10) пс) // ожидаем: "Целое"
(Вывод "(ТипЗнчСтр ""А""с): " (ТипЗнчСтр "А"с) пс) // ожидаем: "Символ"
// Тест функции ПустаяСтрока: пуста ли строка
(Вывод "(ПустаяСтрока """"): " (ПустаяСтрока "") пс) // ожидаем: Истина
(Вывод "(ПустаяСтрока ""а""): " (ПустаяСтрока "а") пс) // ожидаем: Ложь
// Тест функции ПустаяСтрока?: пуста ли строка
(Вывод "(ПустаяСтрока? """"): " (ПустаяСтрока? "") пс) // ожидаем: Истина
(Вывод "(ПустаяСтрока? ""а""): " (ПустаяСтрока? "а") пс) // ожидаем: Ложь
// Тест функции Неопределено?: проверяет, что значение не определено
(Перем А Неопределено)
(Вывод "(Неопределено? А): " (Неопределено? А) пс) // ожидаем: Истина
(Уст А "данные")
(Вывод "(Неопределено? А): " (Неопределено? А) пс) // ожидаем: Ложь
// Тест функции Определено?: проверяет, что значение определено
(Перем А Неопределено)
(Вывод "(Определено? А): " (Определено? А) пс) // ожидаем: Ложь
(Уст А "данные")
(Вывод "(Определено? А): " (Определено? А) пс) // ожидаем: Истина
// Тест функции Объект?: определяет, является ли значение объектом (аналог ЗначениеЗаполнено)
(Вывод "(Объект? ""абв""): " (Объект? "абв") пс) // ожидаем: Истина
(Вывод "(Объект? '20250101'): " (Объект? '20250101') пс) // ожидаем: Истина
(Вывод "(Объект? 1): " (Объект? 1) пс) // ожидаем: Истина
(Вывод "(Объект? Неопределено): " (Объект? Неопределено) пс) // ожидаем: Ложь
// Тест функции Функция?: определяет, является ли значение функцией, в том числе анонимной
(Перем Тест (Функ()(Вывод "Тест 1")))
(Вывод "(Функция? Тест): " (Функция? Тест) пс) // ожидаем: Истина
(Функция (Тест2)(Вывод "Тест 2"))
(Вывод "(Функция? Тест2): " (Функция? Тест2) пс) // ожидаем: Истина
(Вывод "(Функция? ""нефункция""): " (Функция? "нефункция") пс) // ожидаем: Ложь
// Тест функции Дата?: определяет, является ли значение датой
(Перем Дт '20240718')
(Вывод "(Дата? Дт): " (Дата? Дт) пс) // ожидаем: Истина
(Перем НеДата "абв")
(Вывод "(Дата? НеДата): " (Дата? НеДата) пс) // ожидаем: Ложь
// Тест функции Символ?: проверка типа
(Вывод "(Символ? ""Ж""с): " (Символ? "Ж"с) пс) // ожидаем: Истина
(Вывод "(Символ? (Символ 65)): " (Символ? (Символ 65)) пс) // ожидаем: Истина
(Вывод "(Символ? ""Ж""): " (Символ? "Ж") пс) // ожидаем: Ложь
// Тест функции Булево?: определяет, является ли значение логическим
(Вывод "(Булево? Истина): " (Булево? Истина) пс) // ожидаем: Истина
(Вывод "(Булево? Ложь): " (Булево? Ложь) пс) // ожидаем: Истина
(Вывод "(Булево? 1): " (Булево? 1) пс) // ожидаем: Ложь
// Тест функции Цел8?: проверка типа
(Вывод "(Цел8? 1ц8): " (Цел8? 1ц8) пс) // ожидаем: Истина
(Вывод "(Цел8? 1ц): " (Цел8? 1ц) пс) // ожидаем: Ложь
// Тест функции Цел16?: проверка типа
(Вывод "(Цел16? 32767ц16): " (Цел16? 32767ц16) пс) // ожидаем: Истина
(Вывод "(Цел16? 32767ц): " (Цел16? 32767ц) пс) // ожидаем: Ложь
// Тест функции Цел32?: проверка типа
(Вывод "(Цел32? 32767ц32): " (Цел32? 32767ц32) пс) // ожидаем: Истина
(Вывод "(Цел32? 32767б32): " (Цел32? 32767б32) пс) // ожидаем: Ложь
// Тест функции Цел64?: проверка типа
(Вывод "(Цел64? 32767ц64): " (Цел64? 32767ц64) пс) // ожидаем: Истина
(Вывод "(Цел64? 32767б64): " (Цел64? 32767б64) пс) // ожидаем: Ложь
// Тест функции Целое?: определяет, является ли значение целым
(Вывод "(Целое? 10): " (Целое? 10) пс) // ожидаем: Истина
(Вывод "(Целое? 3.5): " (Целое? 3.5) пс) // ожидаем: Ложь
// Тест функции Байт?: проверка типа
(Вывод "(Байт? 255б8): " (Байт? 255б8) пс) // ожидаем: Истина
(Вывод "(Байт? 255ц): " (Байт? 255ц) пс) // ожидаем: Ложь
// Тест функции Бит8?: проверка типа
(Вывод "(Бит8? 127б8): " (Бит8? 127б8) пс) // ожидаем: Истина
(Вывод "(Бит8? 127ц8): " (Бит8? 127ц8) пс) // ожидаем: Ложь
// Тест функции Бит16?: проверка типа
(Вывод "(Бит16? 127б16): " (Бит16? 127б16) пс) // ожидаем: Истина
(Вывод "(Бит16? 127ц16): " (Бит16? 127ц16) пс) // ожидаем: Ложь
// Тест функции Бит32?: проверка типа
(Вывод "(Бит32? 127б32): " (Бит32? 127б32) пс) // ожидаем: Истина
(Вывод "(Бит32? 127ц32): " (Бит32? 127ц32) пс) // ожидаем: Ложь
// Тест функции Бит64?: проверка типа
(Вывод "(Бит64? 9223372036854775807б64): " (Бит64? 9223372036854775807б64) пс) // ожидаем: Истина
(Вывод "(Бит64? 9223372036854775807ч): " (Бит64? 9223372036854775807ч) пс) // ожидаем: Ложь
// Тест функции Вещ?: проверка типа
(Вывод "(Вещ? 3.14в): " (Вещ? 3.14в) пс) // ожидаем: Истина
(Вывод "(Вещ? 3.14ч): " (Вещ? 3.14ч) пс) // ожидаем: Ложь
// Тест функции Двещ?: проверка типа
(Вывод "(Двещ? 2.718д): " (Двещ? 2.718д) пс) // ожидаем: Истина
(Вывод "(Двещ? 2.718в): " (Двещ? 2.718в) пс) // ожидаем: Ложь
// Тест функции Число?: проверка типа
(Вывод "(Число? 42ч): " (Число? 42ч) пс) // ожидаем: Истина
(Вывод "(Число? 42д): " (Число? 42д) пс) // ожидаем: Ложь
// Тест функции ЭтоМассив: является ли объект массивом
(Перем Мас (Массив 2 Целое))
(Вывод "(ЭтоМассив Мас): " (ЭтоМассив Мас) пс) // ожидаем: Истина
// Тест функции Массив?: альтернативная проверка
(Вывод "(Массив? Мас): " (Массив? Мас) пс) // ожидаем: Истина
// --- Функции работы с датой и временем ---
(Перем Дт '20240718143520') //дата 18-07-2025 14:35:20
// Тест функции НачГода и КонГода
(Вывод "(НачГода Дт): " (НачГода Дт) пс) // ожидаем: '01.01.2024 0:00:00'
(Вывод "(НачалоГода Дт): " (НачалоГода Дт) пс)
(Вывод "(КонГода Дт): " (КонГода Дт) пс) // ожидаем: '31.12.2024 23:59:59.999'
(Вывод "(КонецГода Дт): " (КонецГода Дт) пс)
// Аналогично для квартала
(Вывод "(НачКвартала Дт): " (НачКвартала Дт) пс) // ожидаем: '01.07.2024 0:00:00'
(Вывод "(НачалоКвартала Дт): " (НачалоКвартала Дт) пс)
(Вывод "(КонКвартала Дт): " (КонКвартала Дт) пс) // ожидаем: '30.09.2024 23:59:59.999'
(Вывод "(КонецКвартала Дт): " (КонецКвартала Дт) пс)
// Аналогично для месяца
(Вывод "(НачМесяца Дт): " (НачМесяца Дт) пс) // ожидаем: '01.07.2024 0:00:00'
(Вывод "(НачалоМесяца Дт): " (НачалоМесяца Дт) пс)
(Вывод "(КонМесяца Дт): " (КонМесяца Дт) пс) // ожидаем: '31.07.2024 23:59:59'
(Вывод "(КонецМесяца Дт): " (КонецМесяца Дт) пс)
// Аналогично для недели
(Вывод "(НачНедели Дт): " (НачНедели Дт) пс) // ожидаем: '15.07.2024 0:00:00'
(Вывод "(НачалоНедели Дт): " (НачалоНедели Дт) пс)
(Вывод "(КонНедели Дт): " (КонНедели Дт) пс) // ожидаем: '21.07.2024 23:59:59'
(Вывод "(КонецНедели Дт): " (КонецНедели Дт) пс)
// Аналогично для дня
(Вывод "(НачДня Дт): " (НачДня Дт) пс) // ожидаем: '18.07.2024 0:00:00'
(Вывод "(НачалоДня Дт): " (НачалоДня Дт) пс)
(Вывод "(КонДня Дт): " (КонДня Дт) пс) // ожидаем: '18.07.2024 23:59:59'
(Вывод "(КонецДня Дт): " (КонецДня Дт) пс)
// Аналогично для часа
(Вывод "(НачЧаса Дт): " (НачЧаса Дт) пс) // ожидаем: '18.07.2024 14:00:00'
(Вывод "(НачалоЧаса Дт): " (НачалоЧаса Дт) пс)
(Вывод "(КонЧаса Дт): " (КонЧаса Дт) пс) // ожидаем: '18.07.2024 14:59:59'
(Вывод "(КонецЧаса Дт): " (КонецЧаса Дт) пс)
// Аналогично для минуты
(Вывод "(НачМинуты Дт): " (НачМинуты Дт) пс) // ожидаем: '18.07.2024 14:35:00'
(Вывод "(НачалоМинуты Дт): " (НачалоМинуты Дт) пс)
(Вывод "(КонМинуты Дт): " (КонМинуты Дт) пс) // ожидаем: '18.07.2024 14:35:59'
(Вывод "(КонецМинуты Дт): " (КонецМинуты Дт) пс)
// Тест функции Год: извлекает год из даты
(Вывод "(Год Дт): " (Год Дт) пс) // ожидаем: 2024
(Вывод "(ДатаГод Дт): " (ДатаГод Дт) пс)
// Тест функции Месяц: извлекает месяц из даты
(Вывод "(Месяц Дт): " (Месяц Дт) пс) // ожидаем: 7
(Вывод "(ДатаМесяц Дт): " (ДатаМесяц Дт) пс)
// Тест функции День: извлекает день из даты
(Вывод "(День Дт): " (День Дт) пс) // ожидаем: 18
(Вывод "(ДатаЧисло Дт): " (ДатаЧисло Дт) пс)
// Тест функции Час: часы из даты-времени
(Вывод "(Час Дт): " (Час Дт) пс) // ожидаем: 14
// Тест функции Минута: минуты
(Вывод "(Минута Дт): " (Минута Дт) пс) // ожидаем: 35
// Тест функции Секунда: секунды
(Вывод "(Секунда Дт): " (Секунда Дт) пс) // ожидаем: 20
// Тест функции НомерНеделиГода: номер недели в году
(Перем Дт '20240104') // четверг первой недели
(Вывод "(НомерНеделиГода Дт): " (НомерНеделиГода Дт) пс) // ожидаем: 1
// Тест функции НомерДняГода: порядковый номер дня
(Перем Дт '20240301') // 1 марта
(Вывод "(НомерДняГода Дт): " (НомерДняГода Дт) пс) // ожидаем: 61 (високосный год)
// Тест функции НомерДняНедели: получает номер дня недели
(Перем Дт '20240718') // четверг
(Вывод "(НомерДняНедели Дт): " (НомерДняНедели Дт) пс) // ожидаем: 4
// --- Прочие функции ---
// Тест функции Длина: возвращает количество символов в строке
(Перем Стр "абвгдеёжзи")
(Вывод "(Длина Стр): " (Длина Стр) пс) // ожидаем: 10
// Тест функции ЗначениеЗаполнено: проверка наличия содержимого
(Вывод "(ЗначениеЗаполнено """"): " (ЗначениеЗаполнено "") пс) // ожидаем: Ложь
(Вывод "(ЗначениеЗаполнено ""данные""): " (ЗначениеЗаполнено "данные") пс) // ожидаем: Истина
// Тест функции ПолучитьИмяВременногоФайла: возвращает путь временного файла
(Вывод "(ПолучитьИмяВременногоФайла ""пфл""): " (ПолучитьИмяВременногоФайла "пфл") пс)
// ожидаем: строка вида "C:\Temp\перфо123.пфл" или аналогичный путь
К началу статьи
Вернуться в раздел:
Примеры по языку Перфо
Перейти в раздел:
Примеры