Читаем Язык программирования Euphoria. Справочное руководство полностью

set_rand(i1)

Описание:

Устанавливает генератор случайных чисел в определённое состояние, i1, так что вы будете получать одинаковые серии квазислучайных чисел при последовательных запусках своей программы с вызовами rand().

Комментарии:

Обычно числа, выдаваемые функцией rand(), являются непредсказуемыми и будут при каждом запуске вашей программы другими. Тем не менее, иногда необходимо иметь повторяющиеся серии квазислучайных чисел, например, для целей отладки программы или, может быть, вам необходимо генерировать один и тот же вывод (к примеру, случайное изображение) по требованию вашего пользователя.

Пример:

sequence s, t

s = repeat(0, 3)

t = s

set_rand(12345)

s[1] = rand(10)

s[2] = rand(100)

s[3] = rand(1000)

set_rand(12345) -- та же величина для set_rand()

t[1] = rand(10) -- те же аргументы для rand(), что и ранее

t[2] = rand(100)

t[3] = rand(1000)

-- в этой точке s и t будут идентичными

См. также:

rand

set_vector

Платформа:

DOS32

Синтаксис:

include machine.e

set_vector(i, s)

Описание:

Устанавливает s в качестве нового адреса для обработчика прерывания номер i. Ряд s должен содержать дальний адрес защищённого режима в форме: {16-битный сегмент, 32-битное смещение}.

Комментарии:

Перед вызовом set_vector() вы должны разместить машинный код подпрограммы обработчика прерывания в памяти по адресу s.

16-битный сегмент может быть сегментом кода, используемым Euphoria. Чтобы получить значение для этого сегмента, см. demo\dos32\hardint.ex. Смещение может быть 32-битной величиной, выдаваемой функцией allocate(). Euphoria исполняется в защищённом режиме с сегментами кода и данных, расположенными в одной и той же физической памяти, но с различными режимами доступа.

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

После отработки подпрограммы прерывания ваш обработчик может вернуть управление вызвавшей прерывание программе, выполнив инструкцию iretd, или путем перехода на оригинальный обработчик. Обработчик должен сохранять и затем восстанавливать состояние всех регистров, значения которых он переписывает.

Вы должны заблокировать память, занимаемую вашим обработчиком, чтобы быть уверенным, что он никогда не будет перенесен на диск при использовании виртуальной памяти. См. lock_memory().

Настоятельно рекомендуем изучить работу файла demo\dos32\hardint.ex, прежде чем пытаться устанавливать собственный обработчик прерывания.

Вы должны хорошо знать программирование на машинном уровне, чтобы писать свои собственные обработчики прерываний.

Вы можете вызвать set_vector() с дальним адресом, выданным get_vector(), если возникла необходимость восстановить исходный оригинальный обработчик.

Пример:

set_vector(#1C, {code_segment, my_handler_address})

Пример программы:

demo\dos32\hardint.ex

См. также:

get_vector, lock_memory, allocate

sin

Синтаксис:

x2 = sin(x1)

Описание:

Выдаёт синус x1, где x1 выражено в радианах.

Комментарии:

Данная функция может быть применена к атому или ко всем элементам ряда.

Пример:

sin_x = sin({.5, .9, .11})

-- sin_x равен {.479, .783, .110}

См. также:

cos, tan

sleep

Синтаксис:

include misc.e

sleep(i)

Описание:

Приостанавливает исполнение программы на i секунд.

Комментарии:

Под WIN32 и Linux/FreeBSD операционная система будет приостанавливать вашу программу и отдавать управление другим запущенным программам. Под DOS32 ваша программа будет исполнять занятый цикл в течение i секунд, во время которых другие программы могут выполняться, но на конкурентной основе за обладание процессором.

При работе в режиме многозадачности приостанавливается вся программа, а не только текущая задача. Чтобы приостановить текущую задачу, вы можете вызвать task_schedule(task_self(), {i, i}), а затем исполнить task_yield().

Пример:

puts(1, "Остановка на 15 секунд ...\n")

sleep(15)

puts(1, "Остановка закончена.\n")

См. также:

lock_file, abort, time

sort

Синтаксис:

include sort.e

s2 = sort(s1)

Описание:

Сортирует ряд s1 в порядке возрастания, используя быстрый алгоритм сортировки. Элементы s1 могут быть любой смесью атомов или рядов. Атомы идут перед рядами, а ряды сортируются в "алфавитном" порядке, так, что сначала сортировка выполняется по первым элементам (полям), затем, если первые эквивалентны, по вторым и т.д. Выдаёт отсортированный ряд.

Пример 1:

x = 0 & sort({7,5,3,8}) & 0

-- x становится равным {0, 3, 5, 7, 8, 0}

Пример 2:

Перейти на страницу:

Все книги серии Euphoria

Язык программирования Euphoria. Справочное руководство
Язык программирования 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 имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных