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

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

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

polygon


Платформа:

DOS32

Синтаксис:

include graphics.e

polygon(i1, i2, s)

Описание:

Вычерчивается многоугольник с 3-мя или более вершинами, заданными в s, на пиксельно-графическом экране с использованием цвета i1. Внутренняя область закрашивается, если i2 равно 1. Не закрашивается, если i2 равно 0.

Пример:


polygon(GREEN, 1, {{100, 100}, {200, 200}, {900, 700}})

-- вычерчивается сплошной зелёный треугольник.


См. также:

draw_line, ellipse


position


Синтаксис:

position(i1, i2)

Описание:

Перемещает курсор на строку i1, в колонку i2, верхний левый угол экрана соответствует строке 1, колонке 1. Символ, выводимый на экран после этой команды, появится именно в назначенном месте. position() сообщит об ошибке, если предпринимается попытка задания знакоместа за пределами экрана.

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

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

Система координат при отображении текста отличается от системы координат при отображении пикселов. Пикселы отображаются так, что верхний левый угол экрана соответствует координатам (x=0,y=0), а первая координата задает положение по горизонтали, слева направо. В пиксельно-графических режимах вы можете отображать и текст, и пикселы. Процедура position() устанавливает только строку и колонку для текста, положением пикселов она не управляет. Аналогичной процедуры для назначения следующей пиксельной позиции не существует.

Пример:


position(2,1)

-- курсор устанавливается в начало второй строки сверху


См. также:

get_position, puts, print, printf


power


Синтаксис:

x3 = power(x1, x2)

Описание:

Возводит x1 в степень x2, выдаёт результат.

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

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

Степени 2 вычисляются очень быстро.

Пример 1:


? power(5, 2)

-- печатается 25


Пример 2:


? power({5, 4, 3.5}, {2, 1, -0.5})

-- печатается {25, 4, 0.534522}


Пример 3:


? power(2, {1, 2, 3, 4})

-- {2, 4, 8, 16}


Пример 4:


? power({1, 2, 3, 4}, 2)

-- {1, 4, 9, 16}


См. также:

log, sqrt


prepend


Синтаксис:

s2 = prepend(s1, x)

Описание:

Присоединяет x к началу ряда s1. Длина s2 будет равна length(s1) + 1.

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

Если x атом, эта операция дает то же, что и s2 = x & s1. Если же x ряд, то результат будет иным.

Случай, когда s1 и s2 являются одной и той же переменной, обрабатывается очень эффективно.

Пример 1:


prepend({1,2,3}, {0,0}) -- {{0,0}, 1, 2, 3}


-- Сравните со сцеплением (конкатенацией):


{0,0} & {1,2,3} -- {0, 0, 1, 2, 3}


Пример 2:


s = {}

for i = 1 to 10 do

s = prepend(s, i)

end for

-- s будет равно {10,9,8,7,6,5,4,3,2,1}


См. также:

append, concatenation operator &, sequence-formation operator


pretty_print


Синтаксис:

include misc.e

pretty_print(fn, x, s)

Описание:

Печатает в файле или на устройстве fn объект x, используя скобки { , , , }, отступы и последовательные строки, чтобы показать структуру объекта x в удобном для вас представлении s.

Доступен ряд режимов печати, отличающихся представлением s. Подавайте вместо s {}, если хотите воспользоваться режимом по умолчанию (исходным), или задавайте свой любимый режим в элементах ряда s как указано ниже (в квадратных скобках номер элемента ряда s):

[1] показывать символы ASCII:

* 0: никогда

* 1: вместе с любыми целыми в диапазоне ASCII 32..127 (исходный)

* 2: подобно 1, плюс показывать как "строку", когда все целые ряда находятся в диапазоне ASCII

* 3: подобно 2, но показывать *только* буквы в кавычках, а не числа, для любых целых в диапазоне ASCII, а также символы пробела: t r n

[2] число отступов для каждого уровня вложения ряда - исходный: 2

[3] колонка, в которой начинается печать - исходный: 1

[4] область колонки, где начинается перенос строки - исходный: 78

[5] формат для вывода целых - исходный: "%d"

[6] формат для вывода чисел с плавающей точкой - исходный: "%.10g"

[7] минимальная величина кода для символов ASCII - исходный: 32

[8] максимальная величина кода для символов ASCII - исходный: 127

[9] максимальное число выводимых строк.

Если длина s меньше 8, все незаданные опции до конца ряда будут иметь величины по умолчанию, исходные, т.е. {0, 5} даст "никогда не показывать ASCII", плюс 5-символьный отступ, а все остальные величины будут исходными.

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

Отображение начнётся из текущей позиции курсора. Обычно вы ожидаете, что печать начинается в колонке 1, но чтобы так было при вызове pretty_print(), необходимо иметь курсор уже именно в первой колонке. Этого можно добиться, просто выведя символ 'n' перед вызовом pretty_print(). Если вы хотите, чтобы печать началась в другой колонке, вам нужно вызвать position() и задать необходимую величину для режима [3]. Тем самым будет обеспечено вертикальное выравнивание скобок в заданном столбце.

Задавая формат для вывода чисел, целых и с плавающей точкой, можно добавить некоторые украшения, т.е. "(%d)" или "$ %.2f".

Пример 1:


pretty_print(1, "ABC", {})


{65'A',66'B',67'C'}


Пример 2:


pretty_print(1, {{1,2,3}, {4,5,6}}, {})


{

{1,2,3},

{4,5,6}

}


Пример 3:


pretty_print(1, {"Euphoria", "Programming", "Language"}, {2})


{

"Euphoria",

"Programming",

"Language"

}


Пример 4:


puts(1, "word_list = ") -- курсор остановится в колонке 13

pretty_print(1,

{{"Euphoria", 8, 5.3},

{"Programming", 11, -2.9},

{"Language", 8, 9.8}},

{2, 4, 13, 78, "%03d", "%.3f"}) -- первые 6 из 8 подрежимов


word_list = {

{

"Euphoria",

008,

5.300

},

{

"Programming",

011,

-2.900

},

{

"Language",

008,

9.800

}

}


См. также:

?, print, puts, printf


print


Синтаксис:

print(fn, x)

Описание:

Выводит в файл или на устройство fn объект x со скобками { , , , }, чтобы показать (сохранить) его структуру.

Пример 1:


print(1, "ABC") -- выводится: {65, 66, 67}

puts(1, "ABC") -- выводится: ABC


Пример 2:


print(1, repeat({10,20}, 3))

-- выводится: {{10,20},{10,20},{10,20}}


См. также:

?, pretty_print, puts, printf, get


printf


Синтаксис:

printf(fn, st, x)

Описание:

Выводит x в файл или на устройство fn, используя строку формата st. Если x является рядом, то очередные элементы формата из st применяются к соответствующим элементам ряда x. Если x является атомом, тогда обычно st будет содержать единственный элемент формата, который будет применён к x, однако, если элементов формата несколько, каждый элемент формата будет применён к единственной величине x. Таким образом, printf() всегда ожидает точно 3 аргумента. Только длина последнего аргумента, содержащего выводимые величины, будет изменяться. Изменения могут происходить и в строке формата. Основные форматы:

%d - печатать атом как десятичное целое

%x - печатать атом как шестнадцатеричное целое. Отрицательные числа печатаются как двоичное дополнение, т.е. -1 будет выведено как FFFFFFFF

%o - печатать атом как восьмеричное целое

%s - печатать ряд как строку символов, или печатать атом как отдельный символ

%e - печатать атом как число с плавающей точкой в экспоненциальной форме

%f - печатать атом как число с плавающей точкой в форме с десятичной точкой, а не в экспоненциальной

%g - печатать атом как число с плавающей точкой в наиболее подходящем формате, исходя из величины числа

%% - печатать собственно символ '%'

К основным форматам может быть добавлена ширина полей, т.е. %5d, %8.2f, %10.4s. Число перед десятичной точкой даёт минимальную ширину поля. Число после десятичной точки даёт число точных знаков.

Если ширина поля отрицательная, т.е. %-5d, тогда величина будет выравниваться по левой границе поля внутри поля. Обычно выравнивание производится по правой границе поля. Если ширина поля начинается с нуля, т.е. %08d, поле будет спереди заполняться до заданной ширины нулями. Если ширина поля предваряется знаком '+', т.е. %+7d, тогда положительные величины будут начинаться со знака '+'.

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

Обратите внимание на следующую общую ошибку:


name="John Smith"

printf(1, "%s", name) -- ошибка!


В этом случае будет напечатан только первый символ имени, J, так как каждый из символов имени форматируется как отдельная величина. Чтобы вывести всё имя, вы должны вместо предыдущей дать команду:


name="John Smith"

printf(1, "%s", {name}) -- правильно


Теперь третий аргумент, поданный в printf(), является одноэлементным рядом, содержащим всё то, что должно быть отформатировано.

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