Пример 1:
rate = 7.875
printf(myfile, "The interest rate is: %8.2fn", rate)
The interest rate is: 7.88
Пример 2:
name="John Smith"
score=97
printf(1, "%15s, %5dn", {name, score})
John Smith, 97
Пример 3:
printf(1, "%-10.4s $ %s", {"ABCDEFGHIJKLMNOP", "XXX"})
ABCD $ XXX
Пример 4:
printf(1, "%d %e %f %g", 7.75) -- одна и та же величина в разных форматах
7 7.750000e+000 7.750000 7.75
См. также:
sprintf, puts, open
profile
Синтаксис:
profile(i)
Описание:
Включает или выключает режим профилирования во время исполнения программы. Команда действует в отношении обоих профилей, профиля команд (операций) и профиля времени. Если i равно 1, профилирование включается, генерируется отчёт. Если i равно 0, профилирование выключается, отчёт не создаётся.
Комментарии:
По командам "with profile" ("с профилем операций") или "with profile_time" ("с профилем времени") профилирование включается автоматически. Используйте profile(0), чтобы выключить его. Используйте затем profile(1) для включения профилирования именно в том месте программы, начиная с которого оно вам необходимо.
Пример 1:
with profile_time
profile(0)
...
procedure slow_routine()
profile(1)
...
profile(0)
end procedure
См. также:
trace, profiling, special top-level statements
prompt_number
Синтаксис:
include get.e
a = prompt_number(st, s)
Описание:
Приглашает пользователя ввести число с клавиатуры. st является текстовой строкой с приглашением, которая отображается на экране. s является рядом, состоящим из двух величин {меньшая, большая}, определяющих диапазон величин, которые пользователь вправе ввести. Если пользователь выйдет из этого диапазона допустимых значений, приглашение повторяется. s может быть пустым рядом, {}, если ограничений нет.
Комментарии:
Если данная процедура слишком проста и не отвечает вашим потребностям, не стесняйтесь скопировать её и затем сделать из неё свою собственную более специализированную версию.
Пример 1:
age = prompt_number("Сколько вам лет? ", {0, 150})
Пример 2:
t = prompt_number("Введите температуру по Цельсию:n", {})
См. также:
get, prompt_string
prompt_string
Синтаксис:
include get.e
s = prompt_string(st)
Описание:
Приглашает пользователя ввести строку текста. st включает в себя текст приглашения, отображаемый на экране. Строка, которую ввёл пользователь, размещается в ряде s за вычетом любых служебных символов перевода строки и возврата каретки.
Комментарии:
Если пользователь введет control-Z (метка конца файла), s получит значение "" - пустого ряда.
Пример:
name = prompt_string("Как вас зовут? ")
См. также:
gets, prompt_number
put_screen_char
Синтаксис:
include image.e
put_screen_char(i1, i2, s)
Описание:
Выводит ноль или более символов на экран вместе с их атрибутами. i1 определяет строку, а i2 - колонку, где должен быть выведен первый из символов. Ряд s выглядит следующим образом: {ascii-код1, атрибут1, ascii-код2, атрибут2, ...}. Каждая пара элементов ряда описывает один символ. Атом ascii-код содержит код ASCII символа. Атом атрибутов содержит информацию о цвете символа, цвете фона и, возможно, другие платформенно-зависимые данные, управляющие внешним видом символа на экране.
Комментарии:
Длина s должна быть кратна 2. Если s имеет длину 0, на экран не будет ничего выводиться. Более быстро выводятся несколько символов в одном вызове put_screen_char(), чем поочерёдно в цикле по одному на вызов.
Пример:
-- записывает AZ в верхний левый угол экрана
-- (атрибуты зависят от платформы)
put_screen_char(1, 1, {'A', 152, 'Z', 131})
См. также:
get_screen_char, display_text_image
puts
Синтаксис:
puts(fn, x)
Описание:
Выводит в файл или на устройство fn единственный байт (атом) или ряд байтов. Выводятся только младшие 8 битов каждой из величин, подаваемых в процедуру. Если fn - экран, вы увидите вывод символов текста.
Комментарии:
Когда выводится ряд байтов, внутри ряда не должно быть вложенных рядов. Этот ряд должен состоять только лишь из атомов. (В типовом случае ряд кодов ASCII).
Избегайте наличия нулей среди кодов, выводимых на экран или стандартный выход. Такой вывод может быть усечён.
Не забывайте, что если файл для вывода был открыт в текстовом режиме, DOS и Windows будут заменять n (10) на rn (13 10). Открывайте файл в двоичном режиме, если вам не нужны подобные услуги.
Пример 1:
puts(SCREEN, "Введите своё имя: ")
Пример 2:
puts(output, 'A') -- на вывод будет послан единственный байт 65
См. также:
printf, gets, open
rand
Синтаксис:
x2 = rand(x1)
Описание:
Выдаёт случайное целое в пределах от 1 до x1, где x1 может быть от 1 до наибольшей допустимой положительной величины типа integer (1073741823).
Комментарии:
Данная функция применима к атому или ко всем элементам ряда.
Пример:
s = rand({10, 20, 30})
-- s может быть: {5, 17, 23} или {9, 3, 12} и т.д.
См. также:
set_rand
read_bitmap
Синтаксис:
include image.e
x = read_bitmap(st)
Описание:
Читает файл изображения в ряд. st является именем .bmp-файла - "биткарты". Файл должен быть именно в формате bitmap. Поддерживается большинство общих вариаций этого формата. Если файл прочитан успешно, результатом будет 2-элементный ряд. Первым элементом будет палитра, содержащая величины интенсивностей цветов в диапазоне от 0 до 255. Вторым элементом будет 2-х мерный ряд, содержащий собственно пиксельно-графическое изображение. Вы можете подать полученную палитру в процедуру all_palette() (после деления её на 4 для правильного масштабирования). Ряд с изображением может быть подан в процедуру display_image() для вывода на экран.
Поддерживаются биткарты с 2, 4, 16 или 256 цветами. Если файл имеет негодный формат, вместо изображения выдаётся код ошибки (atom):
global constant BMP_OPEN_FAILED = 1,
BMP_UNEXPECTED_EOF = 2,
BMP_UNSUPPORTED_FORMAT = 3
Комментарии:
Необходимые вам изображения в формате bitmap вы можете создавать, используя графический редактор Paintbrush из пакета Windows или многие другие графические программы. Эти изображения затем могут быть включены в ваши программы, написанные на Euphoria.
Пример:
x = read_bitmap("c:\windows\arcade.bmp")
-- примечание: двойная косая черта в адресе файла необходима,
-- чтобы в операционную систему была выдана штатная одинарная
Пример программы:
demodos32bitmap.ex
См. также:
palette, all_palette, display_image, save_bitmap
register_block
Синтаксис:
include machine.e (or safe.e)
register_block(a, i)
Описание:
Регистрирует (добавляет) участок памяти в списке безопасных блоков, поддерживаемом библиотекой safe.e (отладочная версия machine.e). Блок начинается с адреса a. Длина блока составляет i байтов.
Комментарии:
Данная процедура предназначена только для отладочных целей. Библиотека safe.e регистрирует и отслеживает блоки памяти, которые вашей программе разрешено использовать в подпрограммах peek(), poke(), mem_copy() и т.п. Процедура нормально работает только с теми участками памяти, которые выделены вами для своих целей путем выполнения команд Euphoria allocate() или allocate_low() и которые еще не освобождены с помощью команд Euphoria free() или free_low(). В некоторых случаях вы можете затребовать добавочные, внешние, участки памяти, например, в результате вызова функции Си. Если вы отлаживаете вашу программу с использованием safe.e, вы должны также регистрировать эти внешние участки памяти, иначе safe.e будет препятствовать вашему доступу к ним. Когда вы закончите использование внешнего блока, вы сможете отменить его регистрацию с помощью команды unregister_block().
Когда вы включаете machine.e, у вас вызываются другие версии процедур register_block() и unregister_block(), которые не производят никаких операций. Подобный приём делает простыми и лёгкими переходы между отладочным и штатным режимами исполнения вашей программы.
Пример :
atom addr
addr = c_func(x, {})
register_block(addr, 5)
poke(addr, "ABCDE")
unregister_block(addr)
См. также:
unregister_block, safe.e
remainder
Синтаксис:
x3 = remainder(x1, x2)
Описание:
Вычисляет остаток от деления x1 на x2. Результат будет иметь тот же знак, что и x1, а величина результата будет меньше, чем величина x2.
Комментарии:
Аргументы, подаваемые в эту функцию, могут быть атомами или рядами. В случае рядов применяются правила действий с рядами.
Пример 1:
a = remainder(9, 4)
-- a будет равно 1
Пример 2:
s = remainder({81, -3.5, -9, 5.5}, {8, -1.7, 2, -4})