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

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн W Cat, "Язык программирования Euphoria. Справочное руководство" бесплатно, без регистрации.
Перейти на страницу:

Пример 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}


Пример 2:


repeat("JOHN", 4) -- {"JOHN", "JOHN", "JOHN", "JOHN"}

-- интерпретатор создаст только одну копию "JOHN"

-- в памяти


См. также:

append, prepend, оператор формирования ряда


reverse


Синтаксис:

include misc.e

s2 = reverse(s1)

Описание:

Оборачивает порядок элементов в ряде.

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

Создаётся новый ряд, в котором элементы высшего уровня имеют порядок, обратный по отношению к исходному ряду.

Пример 1:


reverse({1,3,5,7}) -- {7,5,3,1}


Пример 2:


reverse({{1,2,3}, {4,5,6}}) -- {{4,5,6}, {1,2,3}}


Пример 3:


reverse({99}) -- {99}


Пример 4:


reverse({}) -- {}


См. также:

append, prepend, repeat


routine_id


Синтаксис:

i = routine_id(st)

Описание:

Функция выдаёт целое число i, известное как номер (идентификатор) подпрограммы, который присваивается процедуре или функции Euphoria, уже определённой программистом. Имя подпрограммы задаётся символьным рядом st. Если подпрограмма с таким именем ещё не определена, выдаётся -1.

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

Полученный с помощью данной функции номер подпрограммы может подаваться в call_proc() или call_func() для непрямого (косвенного) вызова подпрограммы с именем st.

Подпрограмма с именем st должна быть видимой, т.е. доступной для вызова в той точке вашей программы, где вызвана функция routine_id() для получения номера подпрограммы. Непрямые вызовы подпрограмм по неким неизвестным пока их номерам могут появляться в программе ранее собственно определения подпрограмм, но конкретное численное значение каждого номера может быть выработано только после определения конкретной подпрограммы - внимательно просмотрите пример 2 ниже.

Правильный номер подпрограммы, как только ему присвоено конкретное значение, будет работать в любом месте вашей программы при косвенных вызовах подпрограммы по этому её номеру через call_proc() / call_func().

Некоторые типовые применения номеров, вырабатываемых routine_id():

1. Указание на подпрограмму, которая в программе будет определена позже.

2. Создание подпрограммы, которая вызывает другую подпрограмму через численный аргумент - см. Пример 2 ниже.

3. Использование ряда, состоящего из номеров подпрограмм, для создания команды переключения по условиям.

4. Установка объектно-ориентированной системы.

5. Обеспечение работы с call_back() - см. platformr.doc.

Обратите внимание, что функции Си, вызов которых возможен в Euphoria, также имеют свои номера подпрограммы - см. define_c_proc() и define_c_func().

Пример 1:


procedure foo()

puts(1, "Hello Worldn")

end procedure


integer foo_num

foo_num = routine_id("foo")


call_proc(foo_num, {}) -- то же самое, что и вызов foo()


Пример 2:


function apply_to_all(sequence s, integer f)

-- функция применяется ко всем элементам ряда

sequence result

result = {}

for i = 1 to length(s) do

-- мы уже можем предусмотреть здесь вызов, например,

-- add1() через некоторый, пока неизвестный, номер f,

-- хотя определение самой add1() и численное значение

-- номера f появятся по ходу программы позже

result = append(result, call_func(f, {s[i]}))

end for

return result

end function


function add1(atom x)

return x + 1

end function

-- функция add1() теперь видна, поэтому мы можем запросить

-- для неё номер подпрограммы, который подаётся затем в

-- ранее определённую функцию apply_to_all(), которая,

-- на момент её определения, ещё ничего "не знала" о функции

-- add1(), но уже предусматривала вызов некой, неизвестной

-- тогда, функции по её номеру f.

? apply_to_all({1, 2, 3}, routine_id("add1"))

-- отображается {2,3,4}


См. также:

call_proc, call_func, call_back, define_c_func, define_c_proc, platformr.doc


...

от S до T


save_bitmap


Синтаксис:

include image.e

i = save_bitmap(s, st)

Описание:

Создаёт bitmap-файл (.bmp) из 2-х элементного ряда s. Ряд st является именем .bmp-файла. s[1] является палитрой:

{{r,g,b}, {r,g,b}, ..., {r,g,b}}

Каждая из величин r, g, или b должна быть в диапазоне от 0 до 255. s[2] является двумерным рядом рядов, содержащих пиксельно-графическое изображение. Ряды, содержащиеся в s[2], должны все иметь одинаковую длину. s имеет тот же самый формат, что и величина, выдаваемая функцией read_bitmap().

Индикатор результата операции i может принимать одно из следующих значений:


global constant BMP_SUCCESS = 0,-- успех операции

BMP_OPEN_FAILED = 1,-- файл не открылся на запись

BMP_INVALID_MODE = 4 -- неверный графический формат

-- или неверный аргумент


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

Если вы использовали get_all_palette() для получения палитры перед вызовом этой функции, вы должны умножить величины интенсивностей на 4 перед вызовом save_bitmap().

Вы можете использовать save_image(), чтобы получить двумерный ряд для s[2], содержащий изображение.

Функция save_bitmap() вырабатывает файлы биткарт с 2, 4, 16, или 256 цветами, так что все они могут быть затем прочитаны с помощью read_bitmap(). Программа Paintbrush из пакета Windows и некоторые другие графические редакторы не поддерживают 4-х цветные биткарты.

Пример:


paletteData = get_all_palette() * 4

code = save_bitmap({paletteData, imageData},

"c:\example\a1.bmp")


См. также:

save_image, read_bitmap, save_screen, get_all_palette


save_image


Платформа:

DOS32

Синтаксис:

include image.e

s3 = save_image(s1, s2)

Описание:

Переписывает в ряд прямоугольное изображение с пиксельно-графического экрана. Результатом является двумерный ряд рядов, содержащий данные обо всех пикселах изображения. Вы можете затем снова вывести это изображение с использованием процедуры display_image(). Ряд s1 является 2-х элементным рядом {x1,y1}, задающим координаты верхнего левого угла изображения, s2 задаёт {x2,y2} - координаты правого нижнего угла.

Пример:


s = save_image({0,0}, {50,50})

display_image({100,200}, s)

display_image({300,400}, s)

-- записывает в ряд квадратный участок размером 51x51 из верхнего левого угла экрана,

-- а затем выводит его в позиции {100,200} и в позиции {300,400}


См. также:

display_image, save_text_image


save_screen


Платформа:

DOS32

Синтаксис:

include image.e

i = save_screen(x1, st)

Описание:

Сохраняет весь экран или прямоугольную область экрана в файле типа Windows bitmap - .bmp-файле. Чтобы записать в файл весь экран, подайте в функцию 0 для x1. Чтобы записать прямоугольную область экрана, x1 должен быть рядом двух рядов: {{topLeftXPixel, topLeftYPixel}, {bottomRightXPixel, bottomRightYPixel}}, где {topLeftXPixel, topLeftYPixel} равно {Xверхний левый, Yверхний левый}, а {bottomRightXPixel, bottomRightYPixel} равно {Xнижний правый, Yнижний правый}

Ряд st - имя вашего .bmp-файла, в который будет записана биткарта.

Индикатор результата операции i может принимать одно из следующих значений:


global constant BMP_SUCCESS = 0,-- успех операции

BMP_OPEN_FAILED = 1,-- файл не открылся на запись

BMP_INVALID_MODE = 4 -- неверный графический формат

-- или неверный аргумент


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

save_screen() вырабатывает биткарты с 2, 4, 16, или 256 цветами, которые могут быть прочитаны с помощью read_bitmap(). Программа Paintbrush из пакета Windows и некоторые другие графические редакторы не поддерживают 4-х цветные биткарты.

save_screen() работает только в пиксельно-графических режимах, но не в текстовых.

Пример 1:


-- записывается весь экран:

code = save_screen(0, "c:\example\a1.bmp")


Пример 2:


-- записывается часть экрана:

err = save_screen({{0,0},{200, 15}}, "b1.bmp")


См. также:

save_image, read_bitmap, save_bitmap


save_text_image


Синтаксис:

include image.e

s3 = save_text_image(s1, s2)

Описание:

Записывает в ряд прямоугольную область экрана в текстовом режиме. Результатом будет ряд рядов, содержащий символы ASCII и их атрибуты с экрана. Вы сможете затем перевывести этот текст с помощью процедуры display_text_image(). s1 является двухэлементным рядом вида {строка1, колонка1}, в котором определена позиция (знакоместо) верхнего левого символа. s2 - ряд вида {строка2, колонка2}, определяющий позицию (знакоместо) правого нижнего символа.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*