Выбрать главу

Если в процесс вовлечена перекачка данных в файл памяти, вы можете увидеть большие траты времени на те команды, которым требуется доступ к дисковой памяти, таким как команды обращения к элементам большого ряда, выгруженного на диск.

...

Часть II - Библиотека подпрограмм

1. Введение

В этом документе вы найдёте описание множества подпрограмм. Некоторые из них встроены непосредственно в интерпретаторы ex.exe, exw.exe и exu. Другие написаны на Euphoria и, чтобы воспользоваться ими, вы должны будете включать в свою программу стандартные библиотечные .e-файлы, расположенные в каталоге euphoria\include. В этих случаях необходимый библиотечный файла указывается в графе "Синтаксис" описания подпрограммы. Конечно, библиотечный файл требует только однократного включения в вашу программу. Встроенные подпрограммы, не требующие библиотечных файлов, отображаются редактором в малиновом цвете. Вы можете переопределять эти встроенные подпрограммы, создавая свои собственные подпрограммы под теми же самыми именами. Интерпретатор предупредит вас о переопределении сообщением, вывод которого может быть вами отменён.

Чтобы показать, какой тип объекта должен быть подан в подпрограмму или выдаётся ею, в описаниях используются следующие обозначения, непосредственно к синтаксису не относящиеся:

x

- общий объект (object) (атом или ряд)

s

- ряд (sequence)

a

- атом (atom)

i

- целое (integer)

fn

- целое (integer), используемое как номер файла

st

- символьный ряд, строка (sequence), или односимвольный атом

Некоторые подпрограммы доступны только на одной или двух из четырёх платформ. В описаниях такие подпрограммы обозначены как "Платформа: DOS32" или "Платформа: WIN32" или "Платформа: Linux". В некоторых других местах вы можете встретить пометки (DOS32) или (WIN32) или (Linux). Подпрограммы, работающие на Linux, в общем случае работают и на FreeBSD. Единственное исключение относится к управлению мышью.

Если в подпрограмму будет подан аргумент с недопустимой величиной, работа вашей программы прервётся с сообщением об ошибке.

2. Предназначение подпрограмм

2.1 Стандартные типы

Предопределённые стандартные типы служат не только для объявления с ними переменных, но вы можете также вызывать их подобно обычным функциям, чтобы проверить, что переменная принадлежит к данному типу.

integer (целое)

- проверяет, что объект имеет тип integer

atom (число)

- проверяет, что объект имеет тип atom

sequence (ряд)

- проверяет, что объект имеет тип sequence

object (объект)

- проверяет, что объект имеет тип object (всегда истина)

2.2 Манипулирование рядами

length (длина)

- выдаёт длину ряда

repeat (повторить)

- повторяет элемент n раз и выдаёт ряд длины n

reverse (повернуть)

- поворачивает ряд так, что первые элементы занимают место последних

append (добавить)

- добавляет новый элемент после конца ряда

prepend (прибавить)

- прибавляет новый элемент перед началом ряда

2.3 Сравнение, поиск и сортировка

compare (сравнить)

- сравнивает два объекта

equal (равно)

- проверяет два объекта на идентичность

find (найти)

- ищет объект в ряде - начало поиска с первого элемента

find_from (найти_от)

- ищет объект в ряде - начало поиска с заданного элемента

match (сопоставить)

- ищет ряд как отрезок другого ряда - начало поиска с первого элемента

match_from (сопоставить_от)

- ищет ряд как отрезок другого ряда - начало поиска с заданного элемента

sort (сортировать)

- сортирует элементы ряда в порядке возрастания

custom_sort (сортировать_как)

- сортирует элементы ряда, основываясь на заданной вами функции сравнения

2.4 Преобразование и сопоставление образцов

lower (нижний_регистр)

- преобразует атом или ряд к нижнему регистру

upper (верхний_регистр)

- преобразует атом или ряд к верхнему регистру

wildcard_match (искать_в_строке_с_догадками)

- сопоставляет строку с заданным образцом, содержащим символы догадок ? и *

wildcard_file (искать_имя_файла_с_догадками)

- сопоставляет имя файла с заданным образцом, содержащим символы догадок

2.5 Математика

Эти подпрограммы работают с отдельными атомами или рядами величин. См. Часть I - Ядро языка - Операции на рядах.

sqrt (корень)

- вычисляет квадратный корень объекта

rand (случайные_числа)

- выдаёт случайные числа

sin (синус)

- вычисляет синус угла

arcsin (арксинус)

- вычисляет угол для данного синуса

cos (косинус)

- вычисляет косинус угла

arccos (арккосинус)

- вычисляет угол для данного косинуса

tan (тангенс)

- вычисляет тангенс угла

arctan (арктангенс)

- вычисляет угол для данного тангенса

log (логарифм)

- вычисляет натуральный логарифм

floor (целая_часть)

- округляет вниз до ближайшего целого

remainder (остаток)

- вычисляет остаток от деления двух чисел

power (степень)

- вычисляет число, возведённое в степень

PI (Пи)

- число PI (Пи) (3.14159...)

2.6 Битовые логические операции

Данные подпрограммы трактуют числа как наборы битов и выполняют логические операции над соответствующими битами двоичного представления чисел. Мы не предлагаем подпрограмм для сдвигов битов влево или вправо, так как вы можете получить такой же эффект, выполняя умножение или деление на необходимые степени двойки.

and_bits (И_побитно)

- выполняет логическое AND (И) над соответствующими битами

or_bits (ИЛИ_побитно)

- выполняет логическое OR (ИЛИ) над соответствующими битами

xor_bits (НО_побитно)

- выполняет логическое XOR (исключающее ИЛИ, НО) над соответствующими битами

not_bits (НЕ_побитно)

- выполняет логическое NOT (НЕ) над всеми битами

2.7 Ввод/вывод для файлов и устройств

Чтобы произвести операции ввода/вывода в файл или на устройство, вы должны сначала открыть файл или устройство для этих операций, а уже затем применять подпрограммы, описываемые ниже, для ввода и вывода (записи и чтения). По окончании операций чтения или записи вы должны закрыть файл или устройство. Подпрограмма open() выдаст вам номер файла, который вы должны использовать как первый аргумент в других подпрограммах ввода/вывода. Ряд вполне определенных файлов/устройств открыт для вас автоматически (на манер текстовых файлов):