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

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

Для освобождения пространства, отведённого под строку, используйте free() с адресом строки в качестве аргумента.

Пример:

atom title

title = allocate_string("The Wizard of Oz")

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

demo\win32\window.exw

См. также:

allocate, free

allow_break

Синтаксис:

include file.e

allow_break(i)

Описание:

Если аргумент i = 1 (истина), команды control-c и control-Break получают возможность прервать вашу программу, когда она пытается в очередной раз обратиться к клавиатуре.

Если i = 0 (ложь), ваша программа не будет реагировать на команды control-c или control-Break.

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

При нажатии клавиш control-c или control-Break DOS будет выводить ^C на экран, даже если ваша программа не может быть прервана.

Изначально ваша программа может быть прервана в любой точке, где она пытается читать с клавиатуры. Она может быть также прервана другими операциями ввода/вывода в зависимости от режима, установленного пользователем в его файле config.sys (уточните по руководству MS-DOS особенности команды BREAK). Но для некоторых типов программ возможность такого внезапного прерывание с клавиатуры может иметь некоторые негативные последствия и даже приводить в результате к потере данных. Вызов allow_break(0) позволяет вам избежать подобных опасных ситуаций.

И вы можете проверять, не нажимал ли пользователь control-c или control-Break, чтобы продуманно отреагировать на это нажатие и безопасно прервать программу. Для такой проверки служит функция check_break().

Пример:

allow_break(0) -- не дайте пользователю прикончить меня!

См. также:

check_break

and_bits

Синтаксис:

x3 = and_bits(x1, x2)

Описание:

Выполняет логическую операцию AND над соответствующими битами в x1 и x2. Бит в x3 устанавливается в 1, только если соответствующие биты в x1 и x2 оба равны 1.

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

Аргументами данной функции могут быть атомы и ряды. Если аргументы являются рядами, применяются правила операций на рядах.

Аргументы должны быть представлены как 32-битные числа, со знаком или без знака.

Если вы намерены манипулировать полными 32-битными величинами, вы должны объявить переменные как atom, но не как integer. В Euphoria тип integer ограничен 31-битом.

Результат трактуется как число со знаком. Оно будет отрицательным, когда старший бит является 1.

Для лучшего понимания двоичного представления числа вы можете вызвать его на отображение в шестнадцатеричной записи. Используйте для этого команду printf() с форматом %x.

Пример 1:

a = and_bits(#0F0F0000, #12345678)

-- a равно #02040000

Пример 2:

a = and_bits(#FF, {#123456, #876543, #2211})

-- a равно {#56, #43, #11}

Пример 3:

a = and_bits(#FFFFFFFF, #FFFFFFFF)

-- a равно -1

-- заметьте, что #FFFFFFFF является положительным числом,

-- но результат побитовой логической операции трактуется

-- как 32-битное число со знаком, так что он отрицателен.

См. также:

or_bits, xor_bits, not_bits, int_to_bits

append

Синтаксис:

s2 = append(s1, x)

Описание:

Создаёт на базе s1 новый ряд, с x, добавленным в конец ряда s1 в качестве последнего элемента ряда s2. Длина ряда s2 будет равна length(s1) + 1, то есть, на один элемент больше длины исходного ряда s1.

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

Если x является атомом, операция эквивалентна s2 = s1 & x Если x является рядом, - не эквивалентна.

Необходимая дополнительная память выделяется автоматически и очень эффективно, благодаря динамическому распределению памяти, работающему в Euphoria. Случай, когда s1 и s2 в действительности являются одним и тем же рядом (как в Примере 1 ниже), особенно оптимален.

Пример 1:

Вы можете применить append() для динамического удлинения ряда, т.е.

sequence x

x = {}

for i = 1 to 10 do

x = append(x, i)

end for

-- x теперь равен {1,2,3,4,5,6,7,8,9,10}

Пример 2:

Любой объект Euphoria может быть добавлен к ряду, т.е.

sequence x, y, z

x = {"fred", "barney"}

y = append(x, "wilma")

-- y теперь равен {"fred", "barney", "wilma"}

z = append(append(y, "betty"), {"bam", "bam"})

-- z теперь равен {"fred", "barney", "wilma", "betty", {"bam", "bam"}}

См. также:

prepend, оператор сцепления &, оператор формирования ряда

arccos

Синтаксис:

include misc.e

x2 = arccos(x1)

Описание:

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

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

Аргумент, x1, должен быть в пределах от -1 до +1 включительно.

Результат, выраженный в радианах, будет находиться между 0 и PI.

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

Функция arccos() вычисляется не так быстро, как arctan().

Пример:

s = arccos({-1,0,1})

-- s равно {3.141592654, 1.570796327, 0}

См. также:

cos, arcsin, arctan

arcsin

Синтаксис:

include misc.e

x2 = arcsin(x1)

Описание:

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

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

Аргумент, x1, должен быть в пределах от -1 до +1 включительно.

Результат, выраженный в радианах, будет находиться между -PI/2 и +PI/2.

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

Функция arcsin() вычисляется не так быстро, как arctan().

Пример:

s = arcsin({-1,0,1})

-- s равно {-1.570796327, 0, 1.570796327}

См. также:

sin, arccos, arctan

arctan

Синтаксис:

x2 = arctan(x1)

Описание:

Выдаёт угол, тангенс которого равен x1.

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

Результат, выраженный в радианах, будет между -PI/2 и PI/2.

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

Функция arctan() вычисляется быстрее, чем arcsin() или arccos().

Пример:

s = arctan({1,2,3})

-- s равно {0.785398, 1.10715, 1.24905}

См. также:

tan, arcsin, arccos

atom

Синтаксис:

i = atom(x)

Описание:

Выдаёт 1, если x является атомом, иначе выдаёт 0.

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

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

Пример 1:

atom a

a = 5.99

Пример 2:

object line

line = gets(0)

if atom(line) then

puts(SCREEN, "конец файла\n")

end if

См. также:

sequence, object, integer, атомы и ряды

atom_to_float32

Синтаксис:

include machine.e

s = atom_to_float32(a1)

Описание:

Преобразует атом Euphoria в ряд из 4-х однобайтовых величин. Эти 4 байта содержат представление числа с плавающей точкой в 32-х битном формате по стандарту IEEE.