ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ, Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΡΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠ°ΡΠΈΠ½ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ. ΠΠ·Π²Π΅ΡΡΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΆΠΈΠΌΠ°Π»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΈΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ! ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΡΡΡΠΏ ΠΊ char ΠΈΠ»ΠΈ int ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»Ρ. ΠΠΎΠ»Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄ΠΎΠ±Π½Π°Ρ
ΠΈ ΠΊΡΠ°ΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠ΅Π»ΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· ΡΠ°ΡΡΠΈ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π½Π΅Π΅.
2.5.2 ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΡΠΌ:
struct entry (* char* name; char type; char* string_value; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 's' int int_value; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 'i' *);
void print_entry(entry* p) (* switch p-Β»type (* case 's': cout Β«β p-βstring_value; break; case 'i': cout ββ p-βint_value; break; default: cerr «« Β«ΠΈΡΠΏΠΎΡΡΠ΅Π½ type\nβ; break; *) *)
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ string_value ΠΈ int_value Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΠΏΡΡΡΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΡΠΊΠ°Π·Π°Π², ΡΡΠΎ ΠΎΠ±Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ union. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
struct entry (* char* name; char type; union (* char* string_value; //ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 's' int int_value; //ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ type == 'i' *); *);
ΠΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ entry, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ entry string_value ΠΈ int_value ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π»ΠΈΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅Π½.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΡΡ ΡΠΎΡ ΡΠ»Π΅Π½, Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π»ΠΎΡΡ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π΅ΠΏΡΠΎΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΈΠΌΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ @ΠΊΠ°ΠΏΡΡΠ»Π·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»Π΅ΠΌ ΡΠΈΠΏΠ° ΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π±ΡΠ»ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ (#5.4.6).
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Β«ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ°Β» (ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π²ΠΎΡΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ°Ρ , Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², Π³Π΄Π΅ ΠΆΡΠ»ΡΠ½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Β«ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΒ» Π½Π° VAX'Π΅ int Π² int*, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ:
struct fudge (* union (* int i; int* p; *); *);
fudge a; a.i = 4096; int* p = a.p; // ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅: Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ int ΠΈ int* Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ, Π° Π½Π° Π΄ΡΡΠ³ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ. Π’Π°ΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π½Π΅ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎ, Π° Π΅ΡΡΡ ΡΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° (#3.2.5).
ΠΠ·ΡΠ΅Π΄ΠΊΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ fudge, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ 0:
fudge.p = 0; int i = fudge.i; // i Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ 0
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠΌΡ, ΡΠΎ Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΏΡΠ°Π²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, fudge ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
union fudge (* int i; int* p; *);
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ (Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ) Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅. ΠΠΌΠ΅ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΡΠΌ. #5.4.6.
2.6 Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1. (*1) ΠΠ°ΡΡΠ°Π²ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Β«Hello, worldΒ» (1.1.1).
2. (*1) ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π² #2.1 ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: ΠΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ.
3. (*1) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π»Ρ: ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»; Π²Π΅ΠΊΡΠΎΡΠ° ΠΈΠ· 10 ΡΠ΅Π»ΡΡ ; ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΠΈΠ· 10 ΡΠ΅Π»ΡΡ ; ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ; ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»; ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ; ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅; ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π»ΠΎΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅.
4. (*1.5) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ sizeof.
5. (*1.5) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π±ΡΠΊΠ²Ρ 'a'...'z' ΠΈ ΡΠΈΡΡΡ '0'...'9' ΠΈ ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΎ ΠΆΠ΅ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΎ ΠΆΠ΅, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠΈΡΠΈΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ.
6. (*1) ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°ΠΉΡΠ΅ Π½Π°Π±ΠΎΡ Π±ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ 0 Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: #2.5.2.
7. (*1.5) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈ ΠΌΠ°Π½ΡΠΈΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ° double.
8. (*2) ΠΠ°ΠΊΠΎΠ²Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π° Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²: char, short, int, long, float, double, unsigned, char*, int* ΠΈ void*? ΠΠΌΠ΅ΡΡΡΡ Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠ΅ ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ? ΠΠΎΠΆΠ΅Ρ Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, int* ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅? ΠΠ°ΠΊ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²? ΠΠΎΠΆΠ΅Ρ Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, int ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ?
9. (*1) ΠΠ°ΠΊΠΎΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π‘++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅? ΠΠ°ΠΊΠΎΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π²Π½Π΅ΡΠ½Π΅Π΅ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π‘++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅? ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ½ΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ?
10. (*2) ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ one ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
const one = 1;
ΠΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ one Π½Π° 2. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ num ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
const num[] = (* 1, 2 *);
ΠΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ num[1] Π½Π° 2.
11. (*1) ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π²Π° ΡΠ΅Π»ΡΡ (ΠΌΠ΅Π½ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° int*. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π΄ΡΡΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° int amp;.
12. (*1) ΠΠ°ΠΊΠΎΠ² ΡΠ°Π·ΠΌΠ΅Ρ Π²Π΅ΠΊΡΠΎΡΠ° str Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
char str[] = Β«a short stringΒ»;
ΠΠ°ΠΊΠΎΠ²Π° Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ Β«a short stringΒ»?
13. (*1.5) ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅ΡΡΡΠ΅Π² Π³ΠΎΠ΄Π° ΠΈ ΡΠΈΡΠ»Π° Π΄Π½Π΅ΠΉ Π² Π½ΠΈΡ . ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ Π΅Π΅. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ Π΄Π²Π° ΡΠ°Π·Π°: ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡ Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΈ Π²Π΅ΠΊΡΠΎΡ Π΄Π»Ρ ΡΠΈΡΠ»Π° Π΄Π½Π΅ΠΉ, ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡ ΡΡΡΡΠΊΡΡΡ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ° ΠΈ ΡΠΈΡΠ»ΠΎ Π΄Π½Π΅ΠΉ Π² Π½Π΅ΠΌ.
14. (*1) Π‘ ΠΏΠΎΠΌΠΎΡΡΡ typedef ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΈΠΏΡ: Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ char, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ char, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π»ΠΎΠ΅, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° char, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²Π΅ΠΊΡΠΎΡ ΠΈΠ· 7 ΡΠ΅Π»ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π΅ΠΊΡΠΎΡ ΠΈΠ· 7 ΡΠ΅Π»ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈ Π²Π΅ΠΊΡΠΎΡ ΠΈΠ· 8 Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΈΠ· 7 ΡΠ΅Π»ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ»Π°Π²Π° 3 ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ
ΠΠΆΠΎΠ½ ΠΠ΅Π½ΡΠ»ΠΈΠ‘++ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, Π½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ Π±ΠΎΠ³Π°ΡΡΠΉ Π½Π°Π±ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. Π‘ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π²Π°Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅Π·ΡΠΌΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ²Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΡΠ°ΡΠΊΠ°Ρ ΡΠ²ΠΎΠ΄ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π° Π² ΠΊΠΎΠ½ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ ΡΡΠΈΠ»Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ* ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
β * ΠΠ°ΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌΡ indentation. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ. (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)
3.1 ΠΠ°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ
Π‘ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π²Π°Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡΡ
r=2.5 area=pi*r*r
(pi ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅), ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π½Π°ΠΏΠΈΡΠ΅Ρ:
2.5 19.635
Π³Π΄Π΅ 2.5 β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π° 19.635 β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΎΡΠΎΠΉ.
ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° (parser'Π°), ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°, ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠ΅Π½ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°). Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΡΡΠ½ΠΊΡΠΈΡ Π²Π²ΠΎΠ΄Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π²Π²ΠΎΠ΄ ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡΡ Π΄ΠΎΠ»Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ°Π΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΡΠΎΡ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π½ΠΎ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈ ΡΠ°ΠΊ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π½Π° (200 ΡΡΡΠΎΠΊ), ΠΈ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ Π΄Π°Π²Π°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π‘++.
3.1.1 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°
ΠΠΎΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΡΠ·ΡΠΊΠ°, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠΌ:
program: END // END β ΡΡΠΎ ΠΊΠΎΠ½Π΅Ρ Π²Π²ΠΎΠ΄Π° expr_list END
expr_list: expression PRINT // PRINT β ΡΡΠΎ ΠΈΠ»ΠΈ '\n' ΠΈΠ»ΠΈ ';' expression PRINT expr_list
expression: expression + term expression β term term
term: term / primary term * primary primary
primary: NUMBER // ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² Π‘++ NAME // ΠΈΠΌΡ Π‘++ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ '_' NAME = expression β primary ( expression )
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠΎΠΊ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΡΠΎΠΉ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΠ»Π°, ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ *, /, +, β (ΡΠ½Π°ΡΠ½ΡΠΉ ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ) ΠΈ =. ΠΠΌΠ΅Π½Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΡΠΏΡΡΠΊΠΎΠΌ ΡΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΊΠ°ΠΊ Π‘++, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅ΡΠ΅Π²Ρ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΠ²ΠΎΠ΄Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, END, NUMBER, + ΠΈ -) ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ get_token(), Π° Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° expr(), term() ΠΈ prim(). ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (ΠΏΠΎΠ΄)Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ, ΠΎΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ; Π² Π½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°.