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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор ΠœΡŽΡ€Ρ€Π΅ΠΉ Π₯ΠΈΠ»Π»

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ свободной памяти Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ функциями (#с.7.2.3):

void operator new(long); void operator delete(void*);

Бтандартная рСализация new Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π§Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° new Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ памяти для выдСлния? ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°ΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°, это ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Запрос Π²Ρ€ΠΎΠ΄Π΅

char* p = new char[100000000];

ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ нСприятностям. Когда Ρƒ new Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ получаСтся, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ _new_handler (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² # 4.6.9). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ явно ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ set_new_handler(). НапримСр:

#include Β«stream.hΒ»

void out_of_store()

(* cerr Β«β€ž «опСрация new Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»Π°: Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ памяти\nβ€œ; exit(1); *)

typedef void (*PF)(); // Ρ‚ΠΈΠΏ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

extern PF set_new_handler(PF);

main() (* set_new_handler(out_of_store); char* p = new char[100000000]; cout Β«β€ž "сдСлано, p = " «« long(p) «« Β«\nβ€œ; *)

ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ «сдСлано», Π° Π±ΡƒΠ΄Π΅Ρ‚ вмСсто этого Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ

опСрация new Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»Π°: Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ памяти

Ѐункция _new_handler ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΏΠΎΡƒΠΌΠ½Π΅ΠΉ, Ρ‡Π΅ΠΌ просто Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ new ΠΈ delete, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π΄Π°Π»ΠΈ свои собствСнныС operator new() ΠΈ operator delete(), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство памяти, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ new. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сборщик мусора, сдСлав, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, использованиС delete Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Но это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, всС-Ρ‚Π°ΠΊΠΈ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ.

По историчСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ new просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ 0, Ссли ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ достаточноС количСство памяти ΠΈ Π½Π΅ Π±Ρ‹Π» Π·Π°Π΄Π°Π½ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ _new_handler. НапримСр

include Β«stream.hΒ»

main() (* char* p = new char[100000000]; cout Β«β€ž "сдСлано, p = " «« long(p) «« Β«\nβ€œ; *)

выдаст

сдСлано, p = 0

Π’Π°ΠΌ сдСлали ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅! Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π·Π°Π΄Π΅Ρ‚ _new_handler, Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя Π·Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ истощСния памяти ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ использовании new Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π½ΠΈΠ΅ΠΌ случая, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π΄Π°Π» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для размСщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·Π²Π°Ρ‚Π΅Π»Π΅ΠΌ, см. #5.5.6).

3.3 Π‘Π²ΠΎΠ΄ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π‘++ систСматичСски ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² #с.9, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅, поТалуйста, этот Ρ€Π°Π·Π΄Π΅Π». А здСсь приводится краткая сводка ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€: описаниС (*список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² opt*) Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt


if ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

while ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ do ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while (Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) for ( ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

case константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ default : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break ; continue ;

return Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ;

goto ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ список_ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ описаниС являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² присваивания ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ выраТСния.

3.3.1 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° значСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ if, ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ switch:

if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ else ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ( Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π’ Π‘++ Π½Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ булСвского Ρ‚ΠΈΠΏΠ°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния

== != Β« β€ž= β€œ Β»=

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ†Π΅Π»ΠΎΠ΅ 1, Ссли сравнСниС истинно, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·Ρ€Π°Ρ‰Π°ΡŽΡ‚ 0. НС Ρ‚Π°ΠΊ ΡƒΠΆ Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ИБВИНА ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ 1, Π° Π›ΠžΠ–Π¬ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ 0.

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ (ΠΈΠ»ΠΈ СдинствСнный) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выпоняСтся Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅, ΠΈΠ½Π°Ρ‡Π΅ выполнСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (Ссли ΠΎΠ½ Π·Π°Π΄Π°Π½). ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ Π² качСствС условия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ любоС Ρ†Π΅Π»ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ частности, Ссли a Ρ†Π΅Π»ΠΎΠ΅, Ρ‚ΠΎ

if (a) // ...

эквивалСнтно

if (a != 0) // ...

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ amp; amp; !! ! Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² условиях. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ amp; amp; ΠΈ !! Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΠΌΠ΅Π½Ρ‚, Ссли это Π½Π΅Π½ΡƒΠΆΠ½ΠΎ. НапримСр:

if (p amp; amp; 1Β«p-Β»count) // ...

Π²Π½Π°Ρ‡Π°Π»Π΅ провСряСт, являСтся Π»ΠΈ p Π½Π΅ Π½ΡƒΠ»Π΅ΠΌ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Ρ‚Π°ΠΊ, Ρ‚ΠΎ провСряСт 1Β«p-Β»count.

НСкоторыС простыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ if ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ с удобством

Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ выраТСниями арифмСтичСского if. НапримСр:

if (a Β«= d) max = b; else max = a;

Π»ΡƒΡ‡ΡˆΠ΅ выраТаСтся Ρ‚Π°ΠΊ:

max = (aΒ«=b) ? b : a;

Π‘ΠΊΠΎΠ±ΠΊΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ условия Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

НСкоторыС простыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π·ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if. НапримСр:

switch (val) (* case 1: f(); break; case 2; g(); break; default: h(); break; *)

ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

if (val == 1) f(); else if (val == 2) g(); else h();

Бмысл Ρ‚ΠΎΡ‚ ΠΆΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (switch) ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этом случаС явно выраТаСтся ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ дСйствия (сопоставлСниС значСния с рядом констант). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch читаСтся Π»Π΅Π³Ρ‡Π΅.

Π—Π°Π±ΠΎΡ‚ΡŒΡ‚Π΅ΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ switch Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ выполнялся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ case. НапримСр:

switch (val) (* // остороТно case 1: cout Β«β€ž β€žcase 1\nβ€œ; case 2; cout β€žΒ« Β«case 2\nβ€œ; default: cout «« Β«default: case Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½\nβ€œ; *)

ΠΏΡ€ΠΈ val==1 Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚

case 1 case 2 default: case Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

ΠΊ Π²Π΅Π»ΠΈΠΊΠΎΠΌΡƒ ΠΈΠ·ΡƒΠΌΠ»Π΅Π½ΠΈΡŽ нСпосвящСнного. Π‘Π°ΠΌΡ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ спсоб Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ случай – это break, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Π²Π°Ρ‚ΡŒ goto. НапримСр:

switch (val) (* // остороТно

case 0: cout Β«β€ž β€žcase 0\nβ€œ; case1: case 1: cout β€žβ€ž Β«case 1\nβ€œ; return; case 2; cout «« Β«case 2\nβ€œ; goto case1; default: cout «« Β«default: case Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½\nβ€œ; return; *)

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΌΡƒ с val==2 выдаст

case 2 case 1

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΊΠ° case Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠ° для упорСблСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ goto:

goto case 1; // синтаксичСская ошибка

3.3.2 Goto

Π‘++ снабТСн ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ Π΄ΡƒΡ€Π½ΡƒΡŽ Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ goto.

goto ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ : ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ высокого уровня ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π‘++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° гСнСрируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π° Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ нСпорСдствСнно Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ goto ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ синтаксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ goto ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ΅Π½ Π² Ρ‚Π΅Ρ… Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ°Ρ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Одно ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ состоит Π² Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ (break лишь ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ самого Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ). НапримСр:

for (int i = 0; iΒ«n; i++) for (int j = 0; jΒ«m; j++) if (nm[i][j] == a) goto found // Π½Π°ΠΉΠ΄Π΅Π½ΠΎ // Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ // ...

found: // Π½Π°ΠΉΠ΄Π΅Π½ΠΎ // nm[i][j] == a

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ continue, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ сути Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½Π΅Ρ† ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² #3.1.5.

3.4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠ΅ использованиС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ согласованноС использованиС отступов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ€Π°ΠΌΠΌΡ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ приятным. БущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стилСй согласованного использования отступов. Автор Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… оснований ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ (хотя ΠΊΠ°ΠΊ ΠΈ Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π°, Ρƒ мСня Π΅ΡΡ‚ΡŒ свои прСдпочтСния). Π‘ΠΊΠ°Π·Π°Π½ΠΎΠ΅ относится Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΊ ΡΡ‚ΠΈΠ»ΡŽ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².


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

1. осмыслСн,

2. описываСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ

3. Π½Π΅ устарСл.

НСпонятныС, двусмыслСнныС ΠΈ просто Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Ρ‚Π°Ρ€ΠΈΠΈ содСрТатся Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ.

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ срСдствами самого язка, слСдуСт это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π½Π΅ просто ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π”Π°Π½Π½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ относится ΠΊ коммСнтариям Π²Ρ€ΠΎΠ΄Π΅:

// пСрСмСнная "v" Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°.

//пСрСмСнная"v"Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Β«f()Β».

// Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ init() ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ // любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² этом Ρ„Π°ΠΉΠ»Π΅.

// Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ очистки Β«cleanup()Β» Π² ΠΊΠΎΠ½Ρ†Π΅ вашСй // ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

// Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«wierd()Β».

// функция Β«f()Β» ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании Π‘++ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ становятся Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ€ΠΈΠΈ стали излишними, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ (#4.2) ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° очиски для классов (см. #5.5.2).

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ясно сформулировано Π½Π° языкС, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ это Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π΅ слСдуСт. НапримСр:

a = b+c; // a становится b+c count++; // ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСтчик

Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ…ΡƒΠΆΠ΅ Ρ‡Π΅ΠΌ просто излишни, ΠΎΠ½ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π²Π°ΡŽΡ‚ объСм тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΎΠ½ΠΈ часто Π·Π°Ρ‚ΡƒΠΌΠ½ΠΈΠ²Π°ΡŽΡ‚ структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ.

Автор ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚:

1. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π°, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ, для Ρ‡Π΅Π³ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ находящиСся Π² Π½Π΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π΄Π°ΡŽΡ‰ΠΈΠΉ ссылки Π½Π° справочники ΠΈ руководства, ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Ρ†ΠΈΠΈ ΠΏΠΎ использованию ΠΈ Ρ‚.Π΄.,

2. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² ΠΊΡ‚ΠΎΡ€ΠΎΠΌ сформулировано Π΅Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (Ссли ΠΎΠ½ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½) ΠΈ, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π² Π½Π΅ΠΉ прСдполоТСниях ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ срСды выполнСния,

3. НСбольшоС число ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² Ρ‚Π΅Ρ… мСстах, Π³Π΄Π΅ ΠΏΡ€ΠΎΡ€Π°ΠΌΠΌΠ° Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π° ΠΈ/ΠΈΠ»ΠΈ нСпСрСносима ΠΈ