ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ (#Ρ.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. ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ ΠΏΡΠΎΡΠ°ΠΌΠΌΠ° Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° ΠΈ/ΠΈΠ»ΠΈ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠ° ΠΈ