W Cat - Язык программирования Euphoria. Справочное руководство
- Название:Язык программирования Euphoria. Справочное руководство
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Язык программирования Euphoria. Справочное руководство краткое содержание
Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».
Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.
[Материал из Википедии]
Язык программирования Euphoria. Справочное руководство - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
На платформах WIN32и Linux/FreeBSDEuphoria исполняет команду graphics_mode(), для любого i2 выводя обычную текстовую консоль, если этой консоли ещё нет. Функция всегда выдаёт 0, не имеет значения, какое i2 в неё подано.
Пример:
if graphics_mode(18) then
puts(SCREEN, "требуется графика VGA!\n")
abort(1)
end if
draw_line(BLUE, {{0,0}, {50,50}})
См. также:
text_rows, video_config
...
от H до O
instance
Платформа:
WIN3 2
Синтаксис:
include misc.e
i = instance()
Описание:
Выдаёт идентификатор текущей программы.
Комментарии:
Этот идентификатор представляет собой число, вырабатываемое операционной системой, и может быть подан в различные функции Windows, выдающие сведения о текущей исполняемой программе, т.е. о вашей программе. Каждый раз, когда пользователь запускает вашу программу, будет вырабатываться другой идентификатор экземпляра (образца) программы.
В языке Си это первый аргумент при вызове функции WinMain().
На платформах DOS32 и Linux/FreeBSDinstance() всегда выдаёт 0.
См. также:
platform.doc
int_to_bits
Синтаксис:
include machine.e
s = int_to_bits(a, i)
Описание:
Выдаёт i младших битов атома a как ряд единиц и нулей. В этом ряде младшие значащие биты идут первыми. Для отрицательных чисел выдаётся двоичное дополнение.
Комментарии:
, , and/or/xor/not
Вы можете использовать индексирование, сечение, операторы and/or/xor/not для обработки выходного ряда, т.е. манипулировать рядами битов по своему усмотрению. При необходмости могут быть легко осуществлены обычные и циклические сдвиги битов, а также другие преобразования.
Пример:
s = int_to_bits(177, 8)
-- s будет равно {1,0,0,0,1,1,0,1} -- "обратный" порядок
См. также:
bits_to_int, and_bits, or_bits, xor_bits, not_bits, операции на рядах
int_to_bytes
Синтаксис:
include machine.e
s = int_to_bytes(a)
Описание:
Преобразует целое в ряд, состоящий из 4 байтов. Эти байты идут в порядке, предусмотренном на машинах 386+, т.е. младший значащий байт идет первым.
Комментарии:
Вы можете воспользоваться этой процедурой перед засылкой 4 байтов в память при работе с программой на машинном языке.
Целое может быть отрицательным. При этом будут выданы отрицательные значения для величин байтов, но после засылки их в память вы получите правильное представление (двоичное дополнение), принятое на машинах 386+.
Эта функция будет правильно преобразовывать целочисленные величины, включая 32-битные и менее. Для больших величин преобразуются только младшие 32 бита. Тип целых в Euphoria может иметь величину не более 31 бита, так что объявляйте ваши переменные как атом, если вам нужны более широкие пределы величин.
Пример 1:
s = int_to_bytes(999)
-- s будет равно {231, 3, 0, 0}
Пример 2:
s = int_to_bytes(-999)
-- s будет равно {-231, -4, -1, -1}
См. также:
bytes_to_int, int_to_bits, bits_to_int, peek, poke, poke4
integer
Синтаксис:
i = integer(x)
Описание:
Выдаёт 1, если x является целым в пределах от -1073741824 до +1073741823. В противном случае выдаёт 0.
Комментарии:
Данная команда служит для объявления переменной типа integer. Вы можете также использовать её и как функцию для проверки, какого типа объект перед вами, не целое ли это число.
Пример 1:
integer z
z = -1
Пример 2:
if integer(y/x) then
puts(SCREEN, "y кратно x")
end if
См. также:
atom, sequence, floor
length
Синтаксис:
i = length(s)
Описание:
Выдаёт длину ряда s. Переменная s должна быть именно типа ряд. В случае, если s является атомом, возникает ошибка времени исполнения с остановкой программы и выводом сообщения.
Комментарии:
Значение текущей длины каждого ряда сохраняется интерпретатором во внутреннем формате для осуществления быстрого доступа.
Пример 1:
length({{1,2}, {3,4}, {5,6}}) -- 3
Пример 2:
length("") -- 0
Пример 3:
length({}) -- 0
См. также:
sequence
lock_file
Синтаксис:
include file.e
i1 = lock_file(fn, i2, s)
Описание:
Когда одновременный доступ к файлу разрешён многим процессам, может понадобиться некий запирающий механизм, чтобы не допустить порчи содержимого в файле или избежать чтения ошибочных данных.
lock_file() как раз и запирает открытый файл, fn, чтобы предотвратить параллельный доступ других процессов к файлу в то время, когда ваша программа читает файл или пишет в него. Под Linux/FreeBSD имеется два типа замков, которые вы можете выбрать, используя параметр i2. (Под DOS32 и WIN32 параметр i2 игнорируется, но должен быть типа integer.) Выбирайте shared (общий) замок, когда вам необходимо читать из файла и вы хотите временно заблокировать другие процессы от записи в этот файл. Выбирайте exclusive (исключительный) замок, когда вам необходима запись в файл и требуется временная блокировка других процессов и от записи, и от чтения вашего файла. Один и тот же файл может иметь общие замки от многих процессов, но только один процесс может ставить исключительный замок, и это может быть только в том случае, когда ни один другой процесс не имеет никакого замка для этого файла. Библиотечный файл file.e содержит следующее объявление:
global constant LOCK_SHARED = 1,
LOCK_EXCLUSIVE = 2
Под DOS32 и WIN32 вы можете запирать назначенную часть файла, используя аргумент s. Переменная s должна быть типа ряд и иметь форму: {первый_байт, последний_байт}. Ряд обозначает первый и последний байты участка в файле, к которому применен замок. Задавайте пустой ряд {}, если вы хотите запереть весь файл. В данном выпуске для Linux/FreeBSD может быть заперт только весь файл, поэтому в качестве аргумента s вы должны задавать {}.
Если функция выполнена успешно, lock_file() выдаёт 1. Если запирание не удалось, выдаётся 0. lock_file() не ожидает, пока другие процессы снимут свои замки. Вам могут понадобиться повторные вызовы данной функции, прежде чем запрос замка будет удовлетворен.
Комментарии:
Под Linux/FreeBSD эти замки называются "консультативными", податливыми замками, это означает, что они осуществляются не операционной системой. Они указывают, как процессы могут использовать отдельные особые файлы во взаимодействии со всеми другими процессами. Процесс может получить доступ к файлу без предварительного его запирания для других процессов. Под WIN32 и DOS32 запирание файлов осуществляется операционной системой.
Под DOS32 lock_file() более полезна, когда доступ к файлам общий. Вне Windows, под чистой MS-DOS, функция обычно выдаёт 0 (неуспешно).
Пример:
include misc.e
include file.e
integer v
atom t
v = open("visitor_log", "a") -- открыт для дополнения
t = time()
while not lock_file(v, LOCK_EXCLUSIVE, {}) do
if time() t + 60 then
puts(1, "Уже прошла целая минута ... Я не могу ждать вечно!\n")
abort(1)
end if
sleep(5) -- позволим идти другим процессам
end while
Интервал:
Закладка: