М. В. Ломоносова Факультет вычислительной математики и кибернетики Е. И. Большакова, Н. В. Груздева Основы программирования на языке Рефал Учебное пособие
![]()
|
3.4.Встроенные функцииПриведём перечень основных встроенных функций языка Рефал-5, характеризуя подробно лишь те функции, аналоги которых отсутствуют в языке Рефал-2. Если формат задания аргументов встроенной функции не указывается, то он точно такой же, как и в языке Рефал-2. Более подробное описание встроенных функций Рефала-5 можно найти в [9, 10]. Арифметические функции Аргументами арифметических функций и вычисляемыми ими значениями являются числа, представленные как знак числа и макроцифра, причём знак может отсутствовать. Так же, как и в Рефале-2, формат задания аргументов для двухместных арифметических функций (N1)N2. Перечислим основные арифметические функции: Add (может обозначаться как +) вычисляет сумму своих аргументов. Sub (может обозначаться как -) вычисляет разность своих аргументов. Mul (может обозначаться как *) вычисляет произведение своих аргументов. Div (может обозначаться как /) вычисляет частное целочисленного деления первого аргумента на второй. Mod возвращает остаток от целочисленного деления первого аргумента на второй. Divmod (аналог Dr в языке Рефал-2) возвращает результат в формате (частное) остаток, причём остаток имеет знак первого аргумента и выполняется равенство: N1=N2*частное+остаток. Compare (аналог Nrel в Рефале-2) – выполняет сравнение двух заданных чисел: возвращается либо знак '-', если первый аргумент-число N1 меньше второго аргумента N2, либо знак '+', если первый аргумент больше второго, либо '0', когда аргументы равны. Функции символьной обработки охватывают несколько групп: Функции-преобразователи типа, к которым относятся: Numb – перевод заданной цепочки десятичных цифр в число (макроцифру), представленное этими символами. Symb – обратное преобразование, т.е. перевод заданного числа (макроцифры) в цепочку десятичных цифр. Explode – перевод заданного идентификатора в цепочку символов-литер. Implode – создание идентификатора из всех начальных алфавитно-цифровых символов заданного выражения, возвращается идентификатор, за которым следует остаток строки, или макроцифра 0 и исходная строка, если строка начинается не с буквы. Например: Функции выделенияв заданном выражении заданного количества термов на верхнем уровне: First выделяет нужное количество термов верхнего уровня от начала заданного выражения и заключает их в структурные скобки. Если в аргументе функции задано число, превышающее количество термов выражения (на верхнем уровне), то всё выражение заключается в скобки. Например: Last – выделяет нужное количество термов с конца заданного выражения и заключает оставшиеся в начале выражения термы в структурные скобки. Например: Функции изменения регистра букв, входящих в заданное выражение: Lower замещает прописные буквы на строчные. Upper замещает строчные буквы на прописные. Функция вычисления длины заданного выражения, т.е. количества входящих в него термов верхнего уровня: Lenw (аналог функции Lengw Рефала-2), её результат – макроцифра – длина выражения в термах, за которой следует само выражение. Например, Функция определения типа первого символа заданного выражения: Type возвращает два символа-индикатора типа первого терма выражения-аргумента, за которыми следует само исходное выражение. Возвращаемые индикаторы соответствуют: 'Ll' – символ-буква; 'D0' – символ-цифра; 'Wi' – идентификатор; 'N0' – макроцифра; 'В0' – выражение начинается с левой структурной скобки; 'Pl' – любой другой объектный символ; '*0' – если исходное выражение является пустым. Например: Функции ввода, вывода и работы с файлами Card выполняет чтение цепочки символов из входного файла, её значение – считанная цепочка литер; по окончании файла функция возвращает число 0. Print и Prout осуществляют печать заданного выражения, значением функции является соответственно заданное выражение или пустое выражение. Open – открытие файла для записи или чтения. Обращение к функции имеет вид: Mode – либо 'r' или 'R' (открыть для чтения), либо 'w' или 'W' (открыть для записи); Descr – файловый дескриптор (число в диапазоне 1-19, 0 соответствует терминалу); File-name – строка, задающая имя файла. Get вводит строку текста из файла, заданного дескриптором, значением функции является считанная цепочка символов. Put выводит заданное выражение в заданный дескриптором файл, результат функции – выводимое выражение. PutOut аналогична Put, но возвращает пустое значение. Заметим, что использование файловых дескрипторов позволяет, в отличие от Рефала-2, работать одновременно с несколькими файлами чтения или записи. Функции работы с копилкой Br – закапывание выражения в копилку. Dg – выкапывание выражения из копилки. Cp – копирование выражения из копилки. Rp – замена выражения, закопанного под заданным именем. Dgall – выкапывание всей копилки. Системные функции Функция без аргумента Time возвращает строку, обозначающую текущий день недели, месяц, дату, время и год. Функция Mu задаётся в одном из двух форматов: |