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

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

Автор W Cat

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:


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


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:


length("") -- 0


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3:


length({}) -- 0


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

sequence


lock_file


Бинтаксис:

include file.e

i1 = lock_file(fn, i2, s)

ОписаниС:

Когда ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½ ΠΌΠ½ΠΎΠ³ΠΈΠΌ процСссам, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΈΠΉ Π·Π°ΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ€Ρ‡ΠΈ содСрТимого Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ чтСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

lock_file() ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ», fn, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ Π² Π½Π΅Π³ΠΎ. Под Linux/FreeBSD имССтся Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π·Π°ΠΌΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ i2. (Под DOS32 ΠΈ WIN32 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ i2 игнорируСтся, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ° integer.) Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ shared (ΠΎΠ±Ρ‰ΠΈΠΉ) Π·Π°ΠΌΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы ΠΎΡ‚ записи Π² этот Ρ„Π°ΠΉΠ». Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ exclusive (ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ) Π·Π°ΠΌΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° запись Π² Ρ„Π°ΠΉΠ» ΠΈ трСбуСтся врСмСнная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов ΠΈ ΠΎΡ‚ записи, ΠΈ ΠΎΡ‚ чтСния вашСго Ρ„Π°ΠΉΠ»Π°. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ Π·Π°ΠΌΠΊΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… процСссов, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΌΠΎΠΊ, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΠΊΠ° для этого Ρ„Π°ΠΉΠ»Π°. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» file.e содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС:


global constant LOCK_SHARED = 1,


LOCK_EXCLUSIVE = 2


Под DOS32 ΠΈ WIN32 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡ€Π°Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ s. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ s Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ° ряд ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ: {ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Π±Π°ΠΉΡ‚, послСдний_Π±Π°ΠΉΡ‚}. Ряд ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний Π±Π°ΠΉΡ‚Ρ‹ участка Π² Ρ„Π°ΠΉΠ»Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ Π·Π°ΠΌΠΎΠΊ. Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ пустой ряд {}, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠ΅Ρ€Π΅Ρ‚ΡŒ вСсь Ρ„Π°ΠΉΠ». Π’ Π΄Π°Π½Π½ΠΎΠΌ выпускС для Linux/FreeBSD ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠ΅Ρ€Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вСсь Ρ„Π°ΠΉΠ», поэтому Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° s Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ {}.

Если функция Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, lock_file() Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 1. Если Π·Π°ΠΏΠΈΡ€Π°Π½ΠΈΠ΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, выдаётся 0. lock_file() Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы снимут свои Π·Π°ΠΌΠΊΠΈ. Π’Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ запрос Π·Π°ΠΌΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Под Linux/FreeBSD эти Π·Π°ΠΌΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ "ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ", ΠΏΠΎΠ΄Π°Ρ‚Π»ΠΈΠ²Ρ‹ΠΌΠΈ Π·Π°ΠΌΠΊΠ°ΠΌΠΈ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. Они ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ процСссы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ особыС Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ взаимодСйствии со всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ запирания для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов. Под WIN32 ΠΈ DOS32 Π·Π°ΠΏΠΈΡ€Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² осущСствляСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.

Под DOS32 lock_file() Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ. Π’Π½Π΅ Windows, ΠΏΠΎΠ΄ чистой MS-DOS, функция ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 0 (Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


include misc.e

include file.e

integer v

atom t

v = open("visitor_log", "a") -- ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для дополнСния

t = time()

while not lock_file(v, LOCK_EXCLUSIVE, {}) do

if time() t + 60 then

puts(1, "Π£ΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»Π° цСлая ΠΌΠΈΠ½ΡƒΡ‚Π° ... Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΆΠ΄Π°Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ!\n")

abort(1)

end if

sleep(5) -- ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΠΈΠ΄Ρ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам

end while

puts(v, "Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ\n")

unlock_file(v, {})

close(v)


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

unlock_file, flush, sleep


lock_memory


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

DOS32

Бинтаксис:

include machine.e

lock_memory(a, i)

ОписаниС:

ΠŸΡ€Π΅Π΄ΠΎΡ…Ρ€Π°Π½ΡΠ΅Ρ‚ участок Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎ адрСсу a, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π΄Π»ΠΈΠ½Ρƒ i, ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ°Ρ‡ΠΊΠΈ Π½Π° диск.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ вСсь ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, хранятся Π² памяти Π²ΠΎ всё врСмя исполнСния вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. lock_memory() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ установили свой собствСнный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ машинного прСрывания DOS, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Когда машинноС ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ срабатываСт, Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы тСряСтся всякая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π½Π° диск, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π·Π°Ρ‰ΠΈΡ‚Π° всСх участков памяти с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΈ обслуТивании прСрывания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

demo\dos32\hardint.ex

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

get_vector, set_vector


log


Бинтаксис:

x2 = log(x1)

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ x1.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π­Ρ‚Π° функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ Π°Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΊΠΎ всСм элСмСнтам ряда. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π° с сообщСниСм ΠΎΠ± ошибкС, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Π·ΡΡ‚ΡŒ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа ΠΈΠ»ΠΈ нуля.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


a = log(100)

-- a Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 4.60517


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

sin, cos, tan, sqrt


lower


Бинтаксис:

include wildcard.e

x2 = lower(x1)

ОписаниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π°Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ряд Π½Π° латинском Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


s = lower("Euphoria")

-- s Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ "euphoria"


a = lower('B')

-- a Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 'b'


s = lower({"Euphoria", "Programming"})

-- s Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ {"euphoria", "programming"}


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

upper


machine_func


Бинтаксис:

x1 = machine_func(a, x)

ОписаниС:

Π‘ΠΌ. machine_proc() Π½ΠΈΠΆΠ΅


machine_proc


Бинтаксис:

machine_proc(a, x)

ОписаниС:

ВыполняСт спСцифичСскиС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ эффСкты. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ косвСнно Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π° Euphoria. ΠŸΡ€ΡΠΌΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»Π΅Ρ‡ΡŒ Π·Π° собой зависаниС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ тяТСлыС послСдствия, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

machine_func


match


Бинтаксис:

i = match(s1, s2)

ОписаниС:

ΠŸΡ‹Ρ‚Π°Π΅Ρ‚ΡΡ Π½Π°ΠΉΡ‚ΠΈ совпадСниС s1 ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² s2. Если ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта s2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ начинаСтся (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ) ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


location = match("pho", "Euphoria")

-- location Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 3


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

find, find_from, compare, match_from, wildcard_match


match_from


Бинтаксис:

i1 = match_from(s1, s2, i2)

ОписаниС:

ΠŸΡ‹Ρ‚Π°Π΅Ρ‚ΡΡ Π½Π°ΠΉΡ‚ΠΈ совпадСниС s1 ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² s2, начиная с индСкса i2. Если ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ элСмСнта s2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ начинаСтся (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ) ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 0. i2 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 1 Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹ s плюс 1. (Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ индСксу ΠΏΡ€ΠΈ сСчСнии s.)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


location = match_from("pho", "phoEuphoria", 4)

-- location Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 6


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

find, find_from, match, compare, wildcard_match


mem_copy


Бинтаксис:

mem_copy(a1, a2, i)

ОписаниС:

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ участок Π² памяти, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ i Π±Π°ΠΉΡ‚ΠΎΠ², с адрСса a2 ΠΏΠΎ адрСсу a1.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π‘Π°ΠΉΡ‚Ρ‹ Π² памяти Π±ΡƒΠ΄ΡƒΡ‚ скопированы ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли участок ΠΏΠΎ адрСсу a2 частично ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ участок ΠΏΠΎ адрСсу a1.

mem_copy(a1, a2, i) эквивалСнтно: poke(a1, peek({a2, i})), Π½ΠΎ выполняСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


dest = allocate(50)

src = allocate(100)

poke(src, {1,2,3,4,5,6,7,8,9})

mem_copy(dest, src, 9)


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

mem_set, peek, poke, allocate, allocate_low


mem_set


Бинтаксис:

mem_set(a1, i1, i2)

ОписаниС:

УстанавливаСт i2 Π±Π°ΠΉΡ‚ΠΎΠ² Π² памяти, начиная с адрСса a1, Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i1.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

МладшиС 8 Π±ΠΈΡ‚ΠΎΠ² i1 Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅.

mem_set(a1, i1, i2) эквивалСнтно: poke(a1, repeat(i1, i2)) Π½ΠΎ выполняСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


destination = allocate(1000)

mem_set(destination, ' ', 1000)

-- 1000 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² памяти Π±ΡƒΠ΄ΡƒΡ‚ установлСны Π² 32

-- (ASCII-код для ' ')


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

mem_copy, peek, poke, allocate, allocate_low


message_box


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

WIN32

Бинтаксис:

include msgbox.e

i = message_box(s1, s2, x)

ОписаниС:

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΊΠ½ΠΎ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ s2, содСрТащСС строку сообщСния s1. x опрСдСляСт ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны для наТатия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ характСристики. x ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Ρ‚ΠΎΠΌΠΎΠΌ ΠΈΠ»ΠΈ рядом. Если функция Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 0, это Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± ошибкС ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ вывСсти ΠΎΠΊΠ½ΠΎ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ msgbox.e, Π³Π΄Π΅ имССтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ для x ΠΈ i.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


response = message_box("Π–Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ?",

"Моя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°",

MB_YESNOCANCEL)

if response = IDCANCEL or response = IDNO then

abort(1)

end if


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

demo\win32\email.exw


mouse_events


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

DOS32

Бинтаксис:

include mouse.e

mouse_events(i)

ОписаниС:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΡ‹ΡˆΠΈΠ½Ρ‹Π΅ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ get_mouse(). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ get_mouse() Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΎ всСх событиях. mouse_events() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… этапах исполнСния вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости измСнСния пСрСчня событий.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π΅Ρ… событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вас Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ частого события MOVE, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ пропуска события, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.