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

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

Автор W Cat

Π―Π·Ρ‹ΠΊ программирования Euphoria

вСрсия 3.1 Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство (c) 2007 Rapid Deployment Software Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ свободноС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого Руководства. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста: http://rapideuphoria.com/russian/refman_r.htm

Π§Π°ΡΡ‚ΡŒ I - Π―Π΄Ρ€ΠΎ языка

1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅


Π―Π·Ρ‹ΠΊ программирования Euphoria ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками:


* ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простоС, Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ядра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»Π΅Π³ΠΊΠΎ поддаётся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌΡƒ использованию.

* динамичСскоС распрСдСлСниС памяти. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π½Π΅ доставляя программисту Π·Π°Π±ΠΎΡ‚ ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΈΡ… ΠΈ высвобоТдСнии участков памяти. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ любой размСрности ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны элСмСнту ряда (массива) Euphoria.

* ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² 30 Ρ€Π°Π· быстрСС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ Perl ΠΈΠ»ΠΈ Python.

* ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ транслятор с Euphoria Π½Π° Π‘ΠΈ, Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π³ΠΎΠ½ΡΡŽΡ‰ΠΈΠΉ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, часто ΠΎΡ‚ 2-Ρ… Π΄ΠΎ 5-Ρ‚ΠΈ Ρ€Π°Π· прибавляя Π΅ΠΉ скорости ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈ Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎ быстрым.

* ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ индСксы Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, нСдопустимыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, присваиваСмых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Ρ‚.ΠΏ. Π—Π΄Π΅ΡΡŒ практичСски Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ -- Π²Ρ‹ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Π½Π° чСловСчСском языкС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ с вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²ΠΎ врСмя Π΅Ρ‘ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π°, плюс распСчатку ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° отлаТиваСтся быстро, просто ΠΈ Π±ΠΎΠ»Π΅Π΅ досконально.

* Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ ΠΎΡ‚ нСобходимости Π·Π½Π°Ρ‚ΡŒ особСнности вашСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Для программирования Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ свСдСния ΠΎ Π΄Π»ΠΈΠ½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… слов, прСдставлСнии Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, порядкС Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ Ρ‚.Π΄. ΠΈ Ρ‚.ΠΏ.

* Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ встроСны полноэкранный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ исходного ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ имССтся полноэкранный ΠΌΠ½ΠΎΠ³ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с Ρ†Π²Π΅Ρ‚Π½ΠΎΠΉ подсвСткой ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ синтаксиса ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ стандартных конструкций языка. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ написан Π½Π° Euphoria, ΠΈ Π΅Π³ΠΎ исходный ΠΊΠΎΠ΄ прСдоставляСтся Π²Π°ΠΌ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ… Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

* ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Linux, FreeBSD, 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Windows ΠΈ DOS любой вСрсии, Π½Π΅ имСя Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° объСм доступной для использования памяти, Π² Ρ‚ΠΎΠΌ числС, прСсловутых 640K. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всю ΠΌΠ½ΠΎΠ³ΠΎ-ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ вашСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹, плюс дисковый Ρ„Π°ΠΉΠ» памяти, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ оказываСтся нСдостаточно.

* Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ².

* ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅, дСмонстрируСт Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сортируСт Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ° : Ρ†Π΅Π»Ρ‹Π΅ числа, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, строки ΠΈ Ρ‚.Π΄. ΠŸΡ€ΠΈ этом Euphoria Π½Π΅ являСтся "ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ" языком, Π° достигаСт ΠΌΠ½ΠΎΠ³ΠΈΡ… прСимущСств этих языков Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ простым ΠΏΡƒΡ‚Ρ‘ΠΌ.

* систСма программирования Euphoria ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ свободна ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°.


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

Π—Π΄Π΅ΡΡŒ прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria.


~~~~~~~~~~~


sequence list, sorted_list


function merge_sort(sequence x)

-- сортируСт x Π² порядкС возрастания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ рСкурсивного слияния

integer n, mid

sequence merged, a, b


n = length(x)

if n = 0 or n = 1 then

return x -- Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ случай

end if


mid = floor(n/2)

a = merge_sort(x[1..mid]) -- сортируСтся пСрвая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° x

b = merge_sort(x[mid+1..n]) -- сортируСтся вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° x


-- слияниС Π΄Π²ΡƒΡ… отсортированных ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΊ

merged = {}

while length(a) 0 and length(b) 0 do

if compare(a[1], b[1]) then

merged = append(merged, a[1])

a = a[2..length(a)]

else

merged = append(merged, b[1])

b = b[2..length(b)]

end if

end while

return merged & a & b -- слитыС Π΄Π°Π½Π½Ρ‹Π΅ плюс остатки

end function


procedure print_sorted_list()

-- Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ sorted_list ΠΈΠ· list

list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}

sorted_list = merge_sort(list)

? sorted_list

end procedure


print_sorted_list() -- эта ΠΊΠΎΠΌΠ°Π½Π΄Π° запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ


~~~~~~~~~~~


Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ содСрТит 4 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: list ΠΈ sorted_list ΠΊΠ°ΠΊ ряды (sequence) (Π³ΠΈΠ±ΠΊΠΈΠ΅ массивы). Вторая опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ merge_sort(). Π’Ρ€Π΅Ρ‚ΡŒΡ опрСдСляСт ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ print_sorted_list(). ЧСтвёртая ΠΈ послСдняя ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ print_sorted_list() Π½Π° исполнСниС.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π½Π° экранС:

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.


merge_sort() Ρ‚Π°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ отсортируСт {1.5, -9, 1e6, 100} ΠΈΠ»ΠΈ {"oranges", "apples", "bananas"} .


Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ имССтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Euphoria -- euphoria\tutorial\example.ex . Π­Ρ‚ΠΎ Π½Π΅ самый быстрый ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сортировки, доступных Π² Euphoria. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ -- euphoria\demo -- ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "ex allsorts", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ…Ρ€ΠΎΠ½ΠΎΠΌΠ΅Ρ‚Ρ€Π°ΠΆ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки ΠΏΡ€ΠΈ возрастании числа сортируСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Быстрый ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ программирования Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Euphoria Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΡ‚ΠΈ Π² -- euphoria\demo\bench\filesort.ex .


1.2 Установка

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ систСму Euphoria Π½Π° своСй машинС, сначала ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ»Π΅ install_r.doc . Установка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² простом ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² euphoria Π½Π° ваш ТСсткий диск Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ) с ΠΈΠΌΠ΅Π½Π΅ΠΌ "euphoria", ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ вашСго Ρ„Π°ΠΉΠ»Π° autoexec.bat с Ρ‚Π°ΠΊΠΈΠΌ расчётом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ euphoria\bin Π² ΠΏΡƒΡ‚ΡŒ поиска, Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния EUDIR ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ euphoria.

ПослС установки ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ euphoria Π½Π° вашСй машинС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

\euphoria readme.doc readme.htm License.txt \bin Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ex.exe ΠΈ exw.exe. Врансляторы ec.exe ΠΈ ecw.exe. Или Π½Π° Linux/FreeBSD, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ exu ΠΈ транслятор ecu. Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ слуТСбныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ed.bat, guru.bat ΠΈ Ρ‚.Π΄. \include стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚.Π΅. graphics.e ΠΈ Ρ‚.ΠΏ. \source ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, транслятор, Π±ΠΈΠ½Π΄Π΅Ρ€) \doc refman.doc, library.doc ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² простом тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ \html Ρ„Π°ΠΉΠ»Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° HTML, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² .doc Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ doc \tutorial нСбольшиС ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Euphoria \demo ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… \dos32 Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, спСцифичСскиС для DOS32 (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ) \win32 Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, спСцифичСскиС для WIN32 (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ) \linux Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, спСцифичСскиС для Linux/FreeBSD (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ) \langwar ΠΈΠ³Ρ€Π° language war (пиксСльно-графичСская вСрсия для DOS ΠΈΠ»ΠΈ тСкстовая вСрсия для Linux/FreeBSD) \bench ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Linux Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ для DOS/Windows, Π° dos32 ΠΈ win32 ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ для Linux/FreeBSD. Π’ Π΄Π°Π½Π½ΠΎΠΌ РуководствС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ с использованиСм ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹. ( \ ). ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux/FreeBSD Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ дСйствуСт обычная косая Ρ‡Π΅Ρ€Ρ‚Π°( / ).


1.3 Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ex , exw ΠΈΠ»ΠΈ exu , сопровоТдаСмой ΠΈΠΌΠ΅Π½Π΅ΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ здСсь Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слова (извСстныС ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ). Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ command_line(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ всю Π²Π²Π΅Π΄Ρ‘Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. ВСрсия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Euphoria для DOS32 называСтся ex.exe . ВСрсия для WIN32 называСтся exw.exe . ВСрсия для Linux/FreeBSD называСтся exu . Как это здСсь принято, Π³Π»Π°Π²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Euphoria ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .ex , .exw ΠΈΠ»ΠΈ .exu . Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Euphoria, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π³Π»Π°Π²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .e ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° .ew ΠΈΠ»ΠΈ .eu . Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ".ex", ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ex Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для вас автоматичСски. exw.exe Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ".exw", Π° exu -- ".exu". ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ссли Ρ„Π°ΠΉΠ» с основным Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Π½Π°ΡˆΡ‘Π»ΡΡ. Если Ρ„Π°ΠΉΠ»Π° с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ Π½ΠΈ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· условлСнных Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π½Π΅Ρ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PATH (сначала с использованиСм основного Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…).


Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ стандартныС Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


ex filesort.ex sorted.txt


ΠΈΠ»ΠΈ просто,


ex filesort sorted.txt


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… компиляторов ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², здСсь Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для измСнСния Ρ€Π΅ΠΆΠΈΠΌΠ° собствСнно ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ex , exw ΠΈΠ»ΠΈ exu . Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° имя вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Euphoria, ΠΈ Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ это имя, ΠΎΠ½ пригласит вас ΠΊ Π΅Π³ΠΎ Π²Π²ΠΎΠ΄Ρƒ.