Комментарии:
Если пользователь введет 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) на \r\n (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")
-- примечание: двойная косая черта в адресе файла необходима,
-- чтобы в операционную систему была выдана штатная одинарная
Пример программы:
demo\dos32\bitmap.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})
-- s будет равно {1, -0.1, -1, 1.5}
Пример 3:
s = remainder({17, 12, 34}, 16)
-- s будет равно {1, 12, 2}
Пример 4:
s = remainder(16, {2, 3, 5})
-- s будет равно {0, 1, 1}
См. также:
floor
repeat
Синтаксис:
s = repeat(x, a)
Описание:
Создаёт ряд длины a, где каждый элемент является x.
Комментарии:
Когда вы повторяете с помощью данной функции ряд или число с плавающей точкой, интерпретатор фактически не создаёт множественные копии в памяти. Напротив, единственная копия помечается числом экземпляров.
Пример 1:
repeat(0, 10) -- {0,0,0,0,0,0,0,0,0,0}