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

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

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

Однако ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ экономит пространство. Оно экономит пространство, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ объСм ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для манипуляции этими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ машин возрастаСт. Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сТимались, ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΈΡ‚ Π² символы! ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, доступ ΠΊ 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(). Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (ΠΏΠΎΠ΄)выраТСния извСстны, ΠΎΠ½ΠΎ вычисляСтся; Π² настоящСм компиляторС Π² этой Ρ‚ΠΎΡ‡ΠΊΠ΅ производится гСнСрация ΠΊΠΎΠ΄Π°.