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

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

Автор W Cat

-- Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΊΡƒΡ‚Π°Π½Π°, Π΅Ρ‘ имя "myprog.exe",

-- ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ c:\myfiles

-- ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚: myprog myfile.dat 12345 "the end"


cmd = command_line()


-- cmd Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ:

{"C:\MYFILES\MYPROG.EXE",

"C:\MYFILES\MYPROG.EXE", -- Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ мСста

"myfile.dat",

"12345",

"the end"

}


-- Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1,

-- ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ повторяСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ,

-- ΠΈ слуТит просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ постоянной Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡŽ

-- ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

-- Ρ„ΠΎΡ€ΠΌΡƒ .exe, ΠΈΠ»ΠΈ Π½Π΅Ρ‚.


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

getenv


compare


Бинтаксис:

i = compare(x1, x2)

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ 0, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ x1 ΠΈ x2 ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, 1, Ссли x1 большС Ρ‡Π΅ΠΌ x2, -1, Ссли x1 мСньшС Ρ‡Π΅ΠΌ x2. БчитаСтся, Ρ‡Ρ‚ΠΎ Π°Ρ‚ΠΎΠΌΡ‹ мСньшС рядов. Ряды ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ поэлСмСнтно, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅.

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


x = compare({1,2,{3,{4}},5}, {2-1,1+1,{3,{4}},6-1})

-- ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, x Ρ€Π°Π²Π½ΠΎ 0


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


if compare("ABC", "ABCD") < 0 then -- -1

-- Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ истина: ряд ABC считаСтся "мСньшим", Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΊΠΎΡ€ΠΎΡ‡Π΅

end if


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


x = compare({12345, 99999, -1, 700, 2},

{12345, 99999, -1, 699, 3, 0})

-- x Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 700 699


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


x = compare('a', "a")

-- x Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ -1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 'a' являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ,

-- Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ "a" являСтся рядом Π΄Π»ΠΈΠ½Ρ‹ 1


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

equal, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° рядах


cos


Бинтаксис:

x2 = cos(x1)

ОписаниС:

ВычисляСт ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ косинус x1, Π³Π΄Π΅ x1 Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ….

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

Данная функция ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ Π°Ρ‚ΠΎΠΌΠ°ΠΌ ΠΈΠ»ΠΈ ΠΊΠΎ всСм элСмСнтам ряда.

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


x = cos({.5, .6, .7})


-- x Ρ€Π°Π²Π½ΠΎ {0.8775826, 0.8253356, 0.7648422}


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

sin, tan, log, sqrt


crash_file


Бинтаксис:

include machine.e

crash_file(s)

ОписаниС:

Π—Π°Π΄Π°Ρ‘Ρ‚ прСдставлСнноС Π² Π²ΠΈΠ΄Π΅ ряда s имя Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для Π²Ρ‹Π²ΠΎΠ΄Π° диагностичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Euphoria Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ·-Π·Π° ошибки, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π²ΠΎ врСмя компиляции ΠΈΠ»ΠΈ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹.

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Euphoria ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ диагностичСскоС сообщСниС Π²Ρ€ΠΎΠ΄Π΅ "syntax error" ΠΈΠ»ΠΈ "divide by zero" Π½Π° экранС, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выводя ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ» ex.err, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда располагаСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

Вызывая crash_file(), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ отладочная информация.

Ряд s ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым, Ρ‚.Π΅. "". Π’ этом случаС диагностичСская ΠΈΠ»ΠΈ отладочная информация Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½ΠΈ Π½Π° экран, Π½ΠΈ Π² Ρ„Π°ΠΉΠ». Ряд s ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ "NUL" ΠΈΠ»ΠΈ "/dev/null", Π² этом случаС диагностичСская информация Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° экран, Π½ΠΎ Π² Ρ„Π°ΠΉΠ» ex.err Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ записано.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ crash_file() ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько это Π½ΡƒΠΆΠ½ΠΎ, Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… частях вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ случаС Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π·Π°Π΄Π°Π½ Π² послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ crash_file(), стоящСй ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ возникновСния ошибки .

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


crash_file("\\tmp\\mybug")


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

abort, crash_message, crash_routine, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅


crash_message


Бинтаксис:

include machine.e

crash_message(s)

ОписаниС:

Π—Π°Π΄Π°Ρ‘Ρ‚ сообщСниС, прСдставлСнноС Π² Π²ΠΈΠ΄Π΅ ряда s, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° экран Π² случаС, Ссли Euphoria Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ остановит Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ·-Π·Π° ошибки, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹.

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Euphoria ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ диагностичСскоС сообщСниС Π½Π° экранС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "subscript out of bounds" (индСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†) ΠΈΠ»ΠΈ "divide by zero" (Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль), сопровоТдая Π΅Π³ΠΎ распСчаткой ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ ex.err. Π­Ρ‚ΠΈ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ малопонятны для Ρ‚Π΅Ρ… Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ программистами Euphoria. Но вызывая crash_message(), Π²Ρ‹ смоТСтС ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ содСрТимым сообщСний, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° экранС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ понимания Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΉ ситуации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ этом вся отладочная информация Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Ρ‘ ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ ex.err, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ потСряСтС Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ошибкС, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ этой Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ подправляя стандартныС сообщСния.

Ряд s ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ '\n', символы Π½ΠΎΠ²ΠΎΠΉ строки, поэтому вашС сообщСниС Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π° вашСм Ρ€ΠΎΠ΄Π½ΠΎΠΌ языкС, Π° Π½Π΅ Π½Π° английском, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Euphoria Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ свои собствСнныС сообщСния. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ вашСго сообщСния Euphoria ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ экран Π² тСкстовый Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ строки чистого экрана.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ crash_message() ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… участков вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, сколько это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ сообщСниС, Ρ‚ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΎ послСдним ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ возникновСния ошибки.

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


crash_message("ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° нСизвСстная Ρ€Π°Π½Π΅Π΅ ошибка!\n" &

"Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с [email protected]\n" &

"НС удаляйтС Ρ„Π°ΠΉΠ» \"ex.err\".\n")


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

abort, crash_file, crash_routine, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅


crash_routine


Бинтаксис:

include machine.e

crash_routine(i)

ОписаниС:

Π—Π°Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая, ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ замыслу, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Euphoria Π² случаС обнаруТСния ошибки, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π° вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Ρ€Π²Π°Π»Π°ΡΡŒ Π±Ρ‹ с Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ сообщСниСм. Π’Π°ΡˆΠ° аварийная функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΈΠΏΠ° object. Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² настоящСС врСмя автоматичСски всСгда Ρ€Π°Π²Π΅Π½ 0 (рассматриваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ наличия Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках Euphoria ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ crash_routine ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ функциями. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Euphoria Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π° ваша аварийная функция, которая Π·Π°Π΄Π°Π½Π° Π² самой послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ crash_routine(), Π° Π·Π°Ρ‚Π΅ΠΌ начнётся ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ crash_routine(). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ каТдая ΠΈΠ· прСдусмотрСнных Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ 0. Если любая ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ этой Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ выдаст Π½Π΅-Π½ΡƒΠ»Π΅Π²ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° с сообщСниСм ΠΎΠ± Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΉ остановкС (авостС).

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ Π΄Π°Ρ‘Ρ‚Π΅ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ шанс ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки (Ρ‚Π°ΠΊΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ индСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π²ΠΎ врСмя Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ бСзопасным для Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… способом. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° диск. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ЀактичСски, ΠΊΠΎΠ³Π΄Π° ваша аварийная функция Π²Ρ‹Π·Π²Π°Π½Π°, Ρ„Π°ΠΉΠ» ex.err ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ записан. Π’Π°ΡˆΠ° функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ex.err Π΅Ρ‰Ρ‘ Π³Π΄Π΅-Ρ‚ΠΎ, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сообщСниС ΠΎΠ± ошибкС.

Команда crash_routine() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ»ΠΈ транслятором. Вранслированный ΠΊΠΎΠ΄ Π½Π΅ выполняСт ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ошибок Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π΅ обСспСчиваСт ΠΏΠΎΠ»Π½ΡƒΡŽ распСчатку Π² ex.err, Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ машинного уровня Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈ crash_routine() Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π° диск для использования ΠΏΡ€ΠΈ дальнСйшСй ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²Ρ‹Π·ΠΎΠ² crash_routine() Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ упорядочСнно ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, закрывая Ρ„Π°ΠΉΠ»Ρ‹, отпирая Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, высвобоТдая рСсурсы ΠΈ Ρ‚.ΠΏ. Но Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ свои собствСнныС crash_routine(). И всС Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Euphoria, Ссли пСрвая вызванная (послСдняя назначСнная) ΠΈ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π΄Π°Π΄ΡƒΡ‚ 0.

Аварийная функция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ останова, исправив ΠΎΡˆΠΈΠ±ΠΊΡƒ. Но Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, практичСски Π½Π΅ сущСствуСт. Она Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π²ΡΠΏΡΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Если Π²ΠΎ врСмя исполнСния Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ случится другая ошибка, снова вызываСтся распСчатка ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ имя Ρ„Π°ΠΉΠ»Π° Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΆΠ΅ ex_crash.err, Π° Π½Π΅ ex.err. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π°Π²Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π²Ρ‹ ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ Π½Π°Π΅Π΄ΠΈΠ½Π΅ с ex.err ΠΈ ex_crash.err, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с Π½ΠΈΠΌΠΈ Π² Ρ€ΡƒΠΊΠ°Ρ… ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ всСх нСсчастий.

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


function crash(object x)

-- Π² случаС ΠΏΠΎΠΆΠ°Ρ€Π° ...


-- (ΠΏΠΎΠ΄ Linux) ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС e-mail, содСрТащСС Ρ„Π°ΠΉΠ» ex.err

system("mail -s \"crash!\" [email protected] < ex.err > /dev/null", 2)


return 0

end function


crash_routine(routine_id("crash"))


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

abort, crash_file, crash_message, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅


current_dir


Бинтаксис:

include file.e

s = current_dir()

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΏΠ°ΠΏΠΊΠΈ, Ρ„ΠΎΠ»Π΄Π΅Ρ€Π°).