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

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

Автор W Cat

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° исполняСтся Π² ΠΎΠΊΠ½Π΅ DOS с частотой Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈΠ½ΠΎΠΉ, Ρ‡Π΅ΠΌ 18.2, функция time() Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ±Π΅Π³Π°Ρ‚ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄, Ссли Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π΅ являСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

Π‘ частотой Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅ΠΉΡΡ ΠΎΡ‚ 18.2, функция time() ΠΏΠΎΠ΄ DOS Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 1/100 ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΅Ρ‘ исполнСния. Под Windows ΠΈ FreeBSD функция time() всСгда исполняСтся ΠΎΡ‡Π΅Π½ΡŒ быстро.

Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ex.exe исполняСтся, систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ врСмя дня. Но Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π· ex.exe (Ρ‚.Π΅. Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС "CauseWay..."), ΠΊΠΎΠ³Π΄Π° частота Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° установлСна высокая, Π²Π°ΠΌ (ΠΈΠ»ΠΈ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ пСрСзапуск ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ частоту. Если Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого, систСмноС врСмя Π±ΡƒΠ΄Π΅Ρ‚ быстро ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ свойствСнна Windows 95/98/NT ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ DOS ΠΈΠ»ΠΈ Windows 3.1. Но Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡƒ Π±Π°Ρ‚Π°Ρ€Π΅ΠΉΠ½Ρ‹ΠΌΠΈ часами вашСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

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


tick_rate(100)

-- time() ΠΈΠ΄Ρ‘Ρ‚ с шагом .01 сСкунды

-- вмСсто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… .055 сСкунды


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

time, time profiling


time


Бинтаксис:

a = time()

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ число сСкунд, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ фиксированного ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ.

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

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΡˆΠ»ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ участка ΠΊΠΎΠ΄Π° вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя отсчСтами time(), взятыми Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ участка ΠΊΠΎΠ΄Π°.

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ DOS32 ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 0.05 сСкунды. Под WIN32 ΠΈ Linux/FreeBSD Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 0.01 сСкунды.

Под DOS32 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Π·Π²Π°Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ tick_rate() с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

Под DOS32 ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ 24 часами. ПослС этого Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, выдаваСмая time() Π±ΡƒΠ΄Π΅Ρ‚ пСрСустановлСна ΠΈ начнётся Π½ΠΎΠ²Ρ‹ΠΉ счёт. Если, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ tick_rate(), ΠΈ частота часов Π±Ρ‹Π»Π° Π²Ρ‹ΡˆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ 18.2/сСк, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ time() Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ дольшС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² этом случаС Euphoria ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ прСрывания ΠΎΡ‚ часов прямо ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ‚ отсчёты Π² Π±ΠΎΠ»Π΅Π΅ Ρ‘ΠΌΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, 32-Π±ΠΈΡ‚Π½ΠΎΠΉ.

Эмуляция DOS ΠΏΠΎΠ΄ Windows XP Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Π°. Когда Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (with profile_time), функция time() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ мСста ΠΏΠΎΠ΄ Windows ME/98/95.

На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… функция time() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ отсчётов ΠΎΡ‚ time(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ ΠΈΡΡ‚Π΅ΠΊΡˆΠ΅Π΅ врСмя.

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


constant ITERATIONS = 1000000

integer p

atom t0, loop_overhead


t0 = time()

for i = 1 to ITERATIONS do

-- врСмя пустого Ρ†ΠΈΠΊΠ»Π°

end for

loop_overhead = time() - t0


t0 = time()

for i = 1 to ITERATIONS do

p = power(2, 20)

end for

? (time() - t0 - loop_overhead)/ITERATIONS

-- вычислСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π² сСкундах) ΠΎΠ΄Π½ΠΎΠ³ΠΎ возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ


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

date, tick_rate


trace


Бинтаксис:

with trace

trace(i)

ОписаниС:

Если i Ρ€Π°Π²Π½ΠΎ 1 ΠΈΠ»ΠΈ 2, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ полноэкранная интСрактивная трассировка/ΠΎΡ‚Π»Π°Π΄ΠΊΠ° исполнСния ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Если i Ρ€Π°Π²Π½ΠΎ 3, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ трассировка ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ ctrace.out. Если i Ρ€Π°Π²Π½ΠΎ 0, трассировка Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ. Когда i Ρ€Π°Π²Π½ΠΎ 1, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° экранС трассировки Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅. Когда i Ρ€Π°Π²Π½ΠΎ 2, трассировка отобраТаСтся Π² ΠΌΠΎΠ½ΠΎΡ…Ρ€ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Ρ€Π°ΡΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ с ΠΌΠ΅Ρ‚Π°ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ "with trace". ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° trace() Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ эффСкта, Ссли Π²Ρ‹Π·Π²Π°Π½Π° Π²Π½Π΅ участка вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ дСйствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π° "with trace".

Π‘ΠΌ. Π§Π°ΡΡ‚ΡŒ I - 3.1 ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡΠ½ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΏΠΎ вопросам трассировки ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ trace(2), Ссли Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° вашСй систСмС Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ.

ВсС Ρ„ΠΎΡ€ΠΌΡ‹ trace() ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Вранслятором с Euphoria Π½Π° Π‘ΠΈ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ trace(3).

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


if x then

-- Π΄Π°, этот участок Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ...

trace(1)

-- ΠΈ Ρ‚.Π΄.

...

end if


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

profile, debugging and profiling


...

ΠΎΡ‚ U Π΄ΠΎ Z


unlock_file


Бинтаксис:

include file.e

unlock_file(fn, s)

ОписаниС:

ΠžΡ‚ΠΏΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ» fn ΠΈΠ»ΠΈ участок Ρ„Π°ΠΉΠ»Π° fn. Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ этим Π·Π°ΠΏΠ΅Ρ€Ρ‚ с использованиСм lock_file(). Под DOS32 ΠΈ WIN32 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΏΠ΅Ρ€Π΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ участок Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°, задавая Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ s Π² Π²ΠΈΠ΄Π΅ {ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ_Π±Π°ΠΉΡ‚, послСдний_Π±Π°ΠΉΡ‚}. Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый участок Π² Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ этим Π·Π°ΠΏΠ΅Ρ€Ρ‚ с использованиСм lock_file(). Под Linux/FreeBSD Π² Π΄Π°Π½Π½ΠΎΠΉ вСрсии Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вСсь Ρ„Π°ΠΉΠ» Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. АргумСнт s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ пустым рядом {}, Ссли отпираСтся вСсь Ρ„Π°ΠΉΠ». Под Linux/FreeBSD Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ s всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ пустым рядом {}.

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

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΏΠ΅Ρ€Π΅Ρ‚ΡŒ Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹ΠΉ Π²Π°ΠΌΠΈ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ возмоТности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным Π΅Π³ΠΎ использованиС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ (процСссами).

Π›ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΈΠ· своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΎΡ‚ΠΏΠ΅Ρ€Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘ΠΌ. lock_file() для изучСния Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

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

lock_file


unregister_block


Бинтаксис:

include machine.e (or safe.e)

unregister_block(a)

ОписаниС:

УдаляСт Π±Π»ΠΎΠΊ памяти ΠΈΠ· списка бСзопасных Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ safe.e (ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсиСй machine.e). Участок памяти, занятый этим Π±Π»ΠΎΠΊΠΎΠΌ, начинаСтся ΠΏΠΎ адрСсу a.

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

Данная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… цСлях. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Π΅Ρ‘ для вычСркивания Π±Π»ΠΎΠΊΠΎΠ² памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ€Π°Π½Π΅Π΅ внСсли Π² список с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ register_block(). ВычСркивая (удаляя) Π±Π»ΠΎΠΊ, Π²Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΈΠ· списка бСзопасных Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ safe.e. Π­Ρ‚ΠΎ прСдохраняСт Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΡ‚ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния-записи ΠΏΠΎ адрСсам Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°.

Π‘ΠΌ. register_block() для уяснСния Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ изучСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

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

register_block, safe.e


upper


Бинтаксис:

include wildcard.e

x2 = upper(x1)

ОписаниС:

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

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


s = upper("Euphoria")

-- s Ρ€Π°Π²Π½ΠΎ "EUPHORIA"


a = upper('g')

-- a Ρ€Π°Π²Π½ΠΎ 'G'


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

-- s Ρ€Π°Π²Π½ΠΎ {"EUPHORIA", "PROGRAMMING"}


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

lower


use_vesa


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

DOS32

Бинтаксис:

include machine.e

use_vesa(i)

ОписаниС:

use_vesa(1) ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚ Euphoria Π² Ρ€Π΅ΠΆΠΈΠΌ подчинСния рСкомСндациям графичСского стандарта VESA. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Euphoria Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… SVGA Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ. use_vesa(0) восстановит ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, примСняСмый Euphoria ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ.

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Euphoria ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π° эту ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ внимания. Однако, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ трудности ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π² графичСскиС Ρ€Π΅ΠΆΠΈΠΌΡ‹ SVGA, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ use_vesa(1) Π² Π½Π°Ρ‡Π°Π»Π΅ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ graphics_mode().

АргумСнты Π² use_vesa(), ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΡ‚ 0 ΠΈΠ»ΠΈ 1, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

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


use_vesa(1)

fail = graphics_mode(261)


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

graphics_mode


value


Бинтаксис:

include get.e

s = value(st)

ОписаниС:

Π§ΠΈΡ‚Π°Π΅Ρ‚ строковоС прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Euphoria ΠΈ рассчитываСт Π΅Π³ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ. Π’Ρ‹Π΄Π°Ρ‘Ρ‚ 2-Ρ… элСмСнтный ряд Π²ΠΈΠ΄Π° {error_status, Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°}, Π³Π΄Π΅ элСмСнт error_status ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·:


GET_SUCCESS -- Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ΅ прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

GET_EOF -- ΠΊΠΎΠ½Π΅Ρ† строки ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ слишком быстро

GET_FAIL -- Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ синтаксис


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

Данная функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ get(), Π½ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ производится ΠΈΠ· строки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠΎΠ΄Π°Ρ‘Ρ‚Π΅, Π° Π½Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π΅ с устройства.

ПослС прочтСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Euphoria value() приостанавливаСт дальнСйшСС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ символы Π² строкС. НапримСр, "36" ΠΈ "36P" - ΠΎΠ±Π° случая Π΄Π°Π΄ΡƒΡ‚ Π²Π°ΠΌ {GET_SUCCESS, 36}.

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


s = value("12345"}

-- s Ρ€Π°Π²Π½ΠΎ {GET_SUCCESS, 12345}


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


s = value("{0, 1, -99.9}")

-- s Ρ€Π°Π²Π½ΠΎ {GET_SUCCESS, {0, 1, -99.9}}


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


s = value("+++")

-- s Ρ€Π°Π²Π½ΠΎ {GET_FAIL, 0}


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

get, sprintf, print


video_config


Бинтаксис:

include graphics.e

s = video_config()

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ ряд Π²Π΅Π»ΠΈΡ‡ΠΈΠ½, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ вашСй видСоподсистСмы:

{Ρ†Π²Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€?, графичСский Ρ€Π΅ΠΆΠΈΠΌ, число строк тСкста, число ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ тСкста, число пиксСлов ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, число пиксСлов ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, число Ρ†Π²Π΅Ρ‚ΠΎΠ², число страниц}.

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ graphics.e ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ константы:


global constant

VC_COLOR = 1,

VC_MODE = 2,

VC_LINES = 3,

VC_COLUMNS = 4,

VC_XPIXELS = 5,

VC_YPIXELS = 6,