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

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

Автор W Cat

Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:


galaxy[q_row][q_col][q_size] *= 10


Π° вмСсто:


accounts[start..finish] = accounts[start..finish] / 10


просто:


accounts[start..finish] /= 10


Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ присваиваниС Π² Ρ„ΠΎΡ€ΠΌΠ΅:


лСвая_Ρ‡Π°ΡΡ‚ΡŒ = лСвая_Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅


Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:


лСвая_Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏ= Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅


Π³Π΄Π΅ ΠΎΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·: + - * / &

Когда лСвая_Ρ‡Π°ΡΡ‚ΡŒ содСрТит нСсколько индСксирований/сСчСний, Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏ= Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ быстрСС, Ρ‡Π΅ΠΌ длинная Ρ„ΠΎΡ€ΠΌΠ°. Когда Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½Π΅Ρ‚Π΅ ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π²Ρ‹ смоТСтС Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠΏ= Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ здСсь Π½Π΅Ρ‚ нСобходимости Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π΅Π²ΡƒΡŽ_Ρ‡Π°ΡΡ‚ΡŒ с Π΅Ρ‘ ΠΆΠ΅ ΠΊΠΎΠΏΠΈΠ΅ΠΉ, располоТСнной Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ справа.


2.5.2 Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Команда Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ записываСтся ΠΊΠ°ΠΊ имя ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, сопровоТдаСмоС ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ список Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ссли ΠΎΠ½ΠΈ прСдусмотрСны, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ,


plot(x, 23)


2.5.3 команда if (Ссли)

Команда вСтвлСния if (Ссли) провСряСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ условиС, ΡƒΠ±Π΅ΠΆΠ΄Π°ΡΡΡŒ Π² Π΅Π³ΠΎ истинности (Π½Π΅-Π½ΡƒΠ»ΡŒ) ΠΈΠ»ΠΈ лоТности (0), Π° Π·Π°Ρ‚Π΅ΠΌ обСспСчиваСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… сСрий Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ if ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ elsif (Π°_Ссли) ΠΈ else (ΠΈΠ½Π°Ρ‡Π΅), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ,


if a then

x = 1

end if


if a = 9 and find(0, s) then

x = 4

y = 5

else

z = 8

end if


if char = 'a' then

x = 1

elsif char = 'b' or char = 'B' then

x = 2

elsif char = 'c' then

x = 3

else

x = -1

end if


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ elsif хотя ΠΈ являСтся сокращСниСм ΠΎΡ‚ else if, Π½ΠΎ это сокращСниС Π΄Π΅Π»Π°Π΅Ρ‚ тСкст Π±ΠΎΠ»Π΅Π΅ ясным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² лишнСм end if, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ нСсокращСнной Ρ„ΠΎΡ€ΠΌΠ΅. А Ρ‚Π°ΠΊ имССтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ "скобка" end if для всСго Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ if, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π² Π½Ρ‘ΠΌ содСрТится мноТСство ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² elsif.

ВыраТСния, входящиС Π² ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ if ΠΈ elsif, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ с использованиСм ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ истинности.


2.5.4 ΠΊΠΎΠΌΠ°Π½Π΄Π° while (ΠΏΠΎΠΊΠ°)

Команда while (ΠΏΠΎΠΊΠ°) провСряСт ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ Π΅Ρ‘ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ, ΠΈ ΠΏΠΎΠΊΠ° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно, цикличСски выполняСт Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ записаны Π΄Π°Π»Π΅Π΅ Π² Π΅Ρ‘ Ρ‚Π΅Π»Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ,


while x 0 do

a = a * 2

x = x - 1

end while


Когда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, провСряСмоС ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ if, elsif ΠΈΠ»ΠΈ while содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ and ΠΈΠ»ΠΈ or, Ρ‚ΠΎ проводятся ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹Π΅ вычислСния. НапримСр,


if a < 0 and b > 0 then ...


Ссли a < 0 Π»ΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ Euphoria Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ (Π½Π΅ большС Π»ΠΈ b Ρ‡Π΅ΠΌ 0). Π‘ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠΆΠ΅ ΠΈ Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ соотвСтствуСт Π»ΠΆΠΈ. Аналогично,


if a < 0 or b > 0 then ...


Ссли a < 0 истинно, Ρ‚ΠΎ Euphoria Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ соотвСтствуСт истинС ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ b.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ставим условиС Π² Ρ„ΠΎΡ€ΠΌΠ΅:


A and B


Π³Π΄Π΅ A ΠΈ B ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ двумя Π»ΡŽΠ±Ρ‹ΠΌΠΈ выраТСниями, Euphoria Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ расчёт, Ссли A Π»ΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ станСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ лоТью, Π΄Π°ΠΆΠ΅ Π½Π΅ взглянув Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ B.

Аналогично, Π² случаС:


A or B


ΠΊΠΎΠ³Π΄Π° A истинно, Euphoria пропустит вычислСниС выраТСния B ΠΈ ΡƒΡ‡Ρ‚Ρ‘Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΊ истину.

Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ B содСрТит Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΈΠ·-Π·Π° возмоТности наличия Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов, Ρ‚.Π΅. ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий, ΠΊΡ€ΠΎΠΌΠ΅ простой Π²Ρ‹Π΄Π°Ρ‡ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΠΎ врСмя компиляции. Π‘ΠΎΠ»Π΅Π΅ старыС вСрсии Euphoria (Π΄ΠΎ 2.1) Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, поэтому Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ старый ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, хотя поиск Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… Euphoria ΠΈ Π½Π΅ выявил ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, зависящиС ΠΎΡ‚ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Π² этом смыслС.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, B Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΡƒΡŽ остановку. Но Ссли Euphoria пропускаСт вычислСниС B, ошибка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,


if x != 0 and 1/x 10 then -- Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ


while 1 or {1,2,3,4,5} do -- ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с рядом


Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ B ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π΄Π°ΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, индСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ нСдопустимыС Π²Π΅Ρ‰ΠΈ.

Всё это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ выглядит ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π΅Ρ€ΡΡˆΠ»ΠΈΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π½ΠΎ фактичСски часто позволяСт Π²Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π±ΠΎΠ»Π΅Π΅ простым ΠΈ Π±ΠΎΠ»Π΅Π΅ ясным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. НапримСр:


if atom(x) or length(x)=1 then


Π‘Π΅Π· ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρƒ вас Π±Ρ‹Π»Π° Π±Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° x являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° для Π°Ρ‚ΠΎΠΌΠΎΠ² Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°. Но с ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ length(x) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° x являСтся рядом. Аналогично:


-- Π½Π°ΠΉΡ‚ΠΈ 'a' ΠΈΠ»ΠΈ 'A' Π² s

i = 1

while i <= length(s) and s[i] != 'a' and s[i] != 'A' do

i += 1

end while


Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ пСрСмСнная i ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ большС length(s). Π‘Π΅Π· ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вас ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°Π»Π° Π±Ρ‹ ошибка индСксирования, ΠΊΠΎΠ³Π΄Π° s[i] вычисляСтся Π² самом послСднСм Ρ†ΠΈΠΊΠ»Π΅. Но с ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ цикличСскиС вычислСния Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Π½Ρ‹, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ i <= length(s) станСт Π»ΠΎΠΆΠ½Ρ‹ΠΌ. Euphoria Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ s[i] != 'a' ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ s[i] != 'A'. И Π²Ρ‹, Ρ‚Π΅ΠΌ самым, Π±ΡƒΠ΄Π΅Ρ‚Π΅ застрахованы ΠΎΡ‚ ошибки индСксирования.

УкорочСнная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° and ΠΈ or ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… if, elsif ΠΈ while. Она Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… контСкстах. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° присваивания:


x = 1 or {1,2,3,4,5} -- x Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ {1,1,1,1,1}


Если Π±Ρ‹ укорочСнная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° здСсь, ΠΌΡ‹ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ x Ρ€Π°Π²Π½Ρ‹ΠΌ 1, Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π΄Π°ΠΆΠ΅ Π½Π΅ взглянул Π±Ρ‹ Π½Π° {1,2,3,4,5}. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. УкорочСнная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… if/elsif/while, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΌ нас Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ лишь ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ Π΄Π°/Π½Π΅Ρ‚, Π° этим ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈ Π½ΡƒΠΆΠ΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния выраТСния для провСряСмого условия.


2.5.5 ΠΊΠΎΠΌΠ°Π½Π΄Π° for (для, ΠΎΡ‚)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ for устанавливаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» вычислСний с ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, которая ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅Ρ‚ ряд Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, начиная ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ· Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ послСднСй Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ,


for i = 1 to 10 do

? i -- ? - это короткая Ρ„ΠΎΡ€ΠΌΠ° для print()

end for


-- Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ числа Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹

for i = 10.0 to 20.5 by 0.3 do

for j = 20 to 10 by -2 do -- счёт Π²Π½ΠΈΠ·

? {i, j}

end for

end for


ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ автоматичСски ΠΈ сущСствуСт Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° цикличСских вычислСний, прСдусмотрСнных Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π’Π½Π΅ Ρ‚Π΅Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ†ΠΈΠΊΠ»Π° пСрСмСнная Ρ†ΠΈΠΊΠ»Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ объявлСнной. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΅Ρ‘ послСдняя Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, присвойтС Π΅Ρ‘ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Ρ€Π°Π½Π΅Π΅ объявлСнной ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ позволяСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… присваиваний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, конСчная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага всС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ°ΠΌΠΈ. Если Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, считаСтся, Ρ‡Ρ‚ΠΎ шаг Ρ€Π°Π²Π΅Π½ +1. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ» ΠΈ Π²ΠΎ врСмя Ρ†ΠΈΠΊΠ»Π° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ сцСнС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.4.2 Π‘Ρ†Π΅Π½Π° (ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости).


2.5.6 ΠΊΠΎΠΌΠ°Π½Π΄Π° return (Π²Ρ‹Π΄Π°Ρ‚ΡŒ, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ)

Команда return ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ прСдусмотрСна выдаваСмая Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ,


return


return {50, "FRED", {}}


2.5.7 ΠΊΠΎΠΌΠ°Π½Π΄Π° exit (Π²Ρ‹ΠΉΡ‚ΠΈ)

Команда exit ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ while ΠΈΠ»ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ for. Она Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ управлСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ послС Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ,


for i = 1 to 100 do

if a[i] = x then

location = i

exit

end if

end for


ΠžΡ‡Π΅Π½ΡŒ часто Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:


constant TRUE = 1


while TRUE do

...

if some_condition then

exit

end if

...

end while


Π’ΠΎ Π΅ΡΡ‚ΡŒ, это "бСсконСчный" Ρ†ΠΈΠΊΠ» while, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСрываСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exit Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Π’ Euphoria этот бСсконСчный Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. Π’ΠΎ врСмя ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ истинности выраТСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ while ΡƒΠΆΠ΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ простой бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ end while ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Если Π²Π°ΠΌ случится ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² настоящий бСсконСчный Ρ†ΠΈΠΊΠ» с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ex.exe, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ простого ΠΏΡƒΡ‚ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот Ρ†ΠΈΠΊΠ» Π½Π΅ сущСствуСт. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ клавиши Control-Alt-Delete, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ΄ DOS, ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ свой сСанс DOS ΠΏΠΎΠ΄ Windows. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π»Π° Ρ„Π°ΠΉΠ»Ρ‹, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π½Π° запись, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ scandisk, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²Π½ΠΎΡΡ‚ΡŒ своСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Волько Ссли ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, комбинация Control-c ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΅Ρ‘ исполнСниС (Ссли Π²Π°ΠΌΠΈ Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π΄Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° allow_break(0)).