`
Читать книги » Книги » Компьютеры и Интернет » Программирование » W Cat - Язык программирования Euphoria. Справочное руководство

W Cat - Язык программирования Euphoria. Справочное руководство

1 ... 22 23 24 25 26 ... 39 ВПЕРЕД
Перейти на страницу:

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

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

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

Пара подпрограмм save_text_image() и display_text_image() пригодится вам для организации в текстовом режиме графического пользовательского интерфейса с всплывающими диалогами и выпадающими меню, которые появляются и исчезают без потери того, что было на экране до них.

Строки текстового изображения могут иметь разную длину.

Пример:

clear_screen()

display_text_image({1,1}, {{'A', WHITE, 'B', GREEN},

{'C', RED+16*WHITE},

{'D', BLUE}})

-- начиная с верхнего левого угла экрана, выводится:

AB

C

D

-- 'A' - белого цвета на чёрном (0) фоне,

-- 'B' - зелёного цвета на чёрном фоне,

-- 'C' - красного цвета на белом фоне и

-- 'D' - синего цвета на чёрном фоне.

См. также:

save_text_image, display_image, put_screen_char

dos_interrupt

Платформа:

DOS32

Синтаксис:

include machine.e

s2 = dos_interrupt(i, s1)

Описание:

Вызывает программное прерывание DOS номер i. Аргумент s1 является 10-элементным рядом 16-битных значений, заносимых в регистры процессора перед входом в процедуру прерывания. Ряд s2 аналогичен 10-элементному ряду s1, в нем будут содержаться значения регистров после выхода из процедуры прерывания. В файле machine.e имеется следующее объявление констант, из которого ясно расположение значений регистров во входном и выходном рядах s1 и s2:

global constant REG_DI = 1,

REG_SI = 2,

REG_BP = 3,

REG_BX = 4,

REG_DX = 5,

REG_CX = 6,

REG_AX = 7,

REG_FLAGS = 8,

REG_ES = 9,

REG_DS = 10

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

Значения регистров, выдаваемые в s2, всегда являются положительными целыми числами между 0 и #FFFF (65535).

Значения флагов в s1[REG_FLAGS] на входе игнорируются. На выходе младший значащий бит в s2[REG_FLAGS] соответствует флагу состояния, который обычно указывает на неудачу, если он установлен в 1.

Некоторые прерывания требуют, чтобы вы указывали адреса участков памяти. Эти адреса должны относиться к стандартной (нижней) памяти. Вы можете подготовить/освободить нижнюю память с помощью функций allocate_low() и free_low().

С программными прерываниями DOS вы имеете доступ ко всему широкому кругу специализированных операций, любых, от форматирования вашего флоппи-диска до перезагрузки компьютера. Документацию по этим прерываниям можно найти в книге Питера Нортона "Библия программиста PC", или в файле "Список прерываний" на странице Web Ральфа Брауна по адресу:

http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html

Пример:

sequence registers

registers = repeat(0, 10) -- установка значений регистров не требуется

-- вызывается прерывание номер 5 DOS: Print Screen - Печатать Экран

registers = dos_interrupt(#5, registers)

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

demodos32dosint.ex

См. также:

allocate_low, free_low

draw_line

Платформа:

DOS32

Синтаксис:

include graphics.e

draw_line(i, s)

Описание:

Чертит на экране в пиксельном режиме линию, соединяющую две или более точек с координатами, заданными в s, используя цвет номер i.

Пример:

draw_line(WHITE, {{100, 100}, {200, 200}, {900, 700}})

-- Белой линией будут соединены три точки

-- от {100, 100} до {200, 200}

-- и от {200, 200} до {900, 700}.

См. также:

polygon, ellipse, pixel

...

от E до G

ellipse

Платформа:

DOS32

Синтаксис:

include graphics.e

ellipse(i1, i2, s1, s2)

Описание:

Вычерчивает на экране в пиксельном режиме эллипс цвета номер i1. Эллипс будет вписан в воображаемый прямоугольник, определённый диагональными точками s1 {x1, y1} и s2 {x2, y2}. Если прямоугольник равносторонний (квадрат), эллипс становится кругом. Эллипс будет заполненным, когда аргумент i2 равен 1, и незаполненным, когда i2 равно 0.

Пример:

ellipse(MAGENTA, 0, {10, 10}, {20, 20})

-- Процедура вычерчивает окружность пурпурного (малинового) цвета,

-- которая является вписанной в воображаемый квадрат

-- с координатами вершин: {10, 10}, {10, 20}, {20, 20}, {20, 10}.

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

demodos32sb.ex

См. также:

polygon, draw_line

equal

Синтаксис:

i = equal(x1, x2)

Описание:

Сравнивает два объекта Euphoria для проверки их идентичности. Выдаёт 1 (истина), если объекты идентичны, 0 (ложь), если имеется отличие.

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

Данная операция эквивалентна выражению: compare(x1, x2) = 0

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

Пример 1:

if equal(PI, 3.14) then

puts(1, "дайте мне более точное значение для PI!n")

end if

Пример 2:

if equal(name, "George") or equal(name, "GEORGE") then

puts(1, "его имя - Georgen")

end if

См. также:

compare, операции сравнения (=)

find

Синтаксис:

i = find(x, s)

Описание:

Ищет объект x как элемент ряда s. В случае первого же успеха выдаёт индекс (номер) текущего элемента в ряде s, который совпадает по величине с x, и прекращает дальнейший поиск. При неудаче поиска выдаёт 0.

Пример 1:

location = find(11, {5, 8, 11, 2, 3})

-- индекс location будет равен 3

Пример 2:

names = {"fred", "rob", "george", "mary", ""}

location = find("mary", names)

-- индекс location будет равен 4

См. также:

find_from, match, match_from, compare

find_from

Синтаксис:

i1 = find_from(x, s, i2)

Описание:

Ищет объект x как элемент ряда s, начиная поиск с индекса (номера) i2. В случае первого же успеха выдаёт индекс (номер) текущего элемента в ряде s, который совпадает по величине с x, и прекращает дальнейший поиск. При неудаче поиска выдаёт 0. Индекс i2 может иметь любую величину в диапазоне от 1 до длины ряда s плюс 1 - аналогично первому индексу сечения (отрезка) ряда s.

Пример 1:

location = find_from(11, {11, 8, 11, 2, 3}, 2)

-- индекс location будет равен 3

Пример 2:

names = {"mary", "rob", "george", "mary", ""}

location = find_from("mary", names, 3)

-- индекс location будет равен 4

См. также:

find, match, match_from, compare

float32_to_atom

Синтаксис:

include machine.e

a1 = float32_to_atom(s)

Описание:

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

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

Любая 4-х байтовая величина, выражающая 32-битное число с плавающей точкой в формате IEEE, может быть преобразована в атом.

Пример:

f = repeat(0, 4)

fn = open("numbers.dat", "rb") -- побайтовое чтение

f[1] = getc(fn)

f[2] = getc(fn)

f[3] = getc(fn)

f[4] = getc(fn)

a = float32_to_atom(f)

См. также:

float64_to_atom, atom_to_float32

float64_to_atom

Синтаксис:

include machine.e

a1 = float64_to_atom(s)

Описание:

Преобразует ряд, состоящий из 8 байтов, в атом. Считается, что эти 8 байтов должны содержать число с плавающей точкой в 64-битном формате по стандарту IEEE.

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

Любая 8-ми байтовая величина, выражающая 64-битное число с плавающей точкой в формате IEEE, может быть преобразована в атом.

Пример:

f = repeat(0, 8)

fn = open("numbers.dat", "rb") -- побайтовое чтение

for i = 1 to 8 do

f[i] = getc(fn)

end for

a = float64_to_atom(f)

См. также:

float32_to_atom, atom_to_float64

floor

Синтаксис:

x2 = floor(x1)

Описание:

Выдаёт наибольшее целое, меньшее или равное x1 (округляет вниз до целого, то есть, отбрасывая дробную часть у положительных чисел или считая дробную часть за полную -1 у отрицательных чисел).

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

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

Пример:

y = floor({0.5, -1.6, 9.99, 100})

-- y будет равно {0, -2, 9, 100}

См. также:

remainder

flush

Синтаксис:

include file.e

flush(fn)

Описание:

Когда вы записываете данные в файл, обычно Euphoria сначала размещает данные в буфере, организованном в оперативной памяти, пока не будет накоплен достаточно большой объём этих данных. Этот сравнительно большой объём данных может быть затем очень быстро и эффективно записан на диск. Иногда у вас может возникнуть необходимость форсировать, ускорить немедленный вывод данных на диск, хотя оптимальный буфер ещё не заполнен. Чтобы сделать это досрочное выталкивание данных, и предназначена процедура flush(fn), где fn является номером файла, который был открыт вами для записи или дополнения.

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

Когда файл закрывается, (см. close()), все данные, остающиеся в буфере, выводятся в файл именно так, как это делает процедура flush(). Когда программа заканчивается, во все открытые файлы выводятся данные, остающиеся в буфере, и файлы закрываются автоматически.

1 ... 22 23 24 25 26 ... 39 ВПЕРЕД
Перейти на страницу:

Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение W Cat - Язык программирования Euphoria. Справочное руководство, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.

Комментарии (0)