Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Euphoria. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 33

Автор W Cat

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 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 World\n")

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}, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ (знакомСсто) ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ символа.