Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Польская нотация ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ алгСбраичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ рСкомСндуСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Π°Ρ, инфиксная ΠΈ постфиксная Ρ„ΠΎΡ€ΠΌΡ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Π°Ρ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ° прСдставляСт ΠΈΠ· сСбя Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ находятся ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

БоотвСтствСнно, постфиксная Ρ„ΠΎΡ€ΠΌΠ° прСдставляСт ΠΈΠ· сСбя Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ находится послС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ²:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Для вычислСния выраТСния, записанного Π² инфиксной Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ скобок. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, прСфиксная ΠΈ постфиксная Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² порядкС ΠΈΡ… вычислСния ΠΈ Π±Π΅Π· скобок.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± прСдставлСнных Ρ„ΠΎΡ€ΠΌΠ°Ρ… записи алгСбраичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Алгоритм ДСйкстра

Для прСобразования Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ЭдсгСром Π’ΠΈΠ±Π΅ ДСйкстрой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстра:

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку;

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ числа, заносим Π΅Π³ΠΎ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку;

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, заносим Π΅Π³ΠΎ Π² стСк;

Π’Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅ΠΌ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку ΠΈΠ· стСка всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ рассматриваСмого;

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ скобки, заносим Π΅Ρ‘ Π² стСк;

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки, Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅ΠΌ ΠΈΠ· стСка всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ скобки, Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ скобку удаляСм ΠΈΠ· стСка.

РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ДСйкстры

Π’ ΠΏΠΎΠ»Π΅ operationPriority скобка (‘(‘) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΎ ошибки ΠΏΡ€ΠΈ парсингС, Π° Ρ‚ΠΈΠ»ΡŒΠ΄Π° (‘

‘) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° для упрощСния ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ прСдставляСт собой ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ минус.

Алгоритм вычислСния постфиксной записи

ПослС получСния постфиксной записи, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π°Π»Π³ΠΎΡ€ΠΈΠΌΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСго ΠΎΠ΄ΠΈΠ½ стСк.

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись;

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ числа, парсим Π΅Π³ΠΎ ΠΈ заносим Π² стСк;

ПослСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, послС ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, являСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ выраТСния.

РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° вычислСния постфиксной записи

Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 15/(7-(1+1))*3-(2+(1+1))*15/(7-(200+1))3-(2+(1+1))(15/(7-(1+1))*3-(2+(1+1))+15/(7-(1+1))*3-(2+(1+1))) Ρ‡Π΅Ρ€Π΅Π· составлСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ посмотрим, Π²Π΅Ρ€Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Для ориСнтирования Π½ΠΈΠΆΠ΅ прСдставлСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ ЯндСкса.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ ЯндСкса

Запустив Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π˜Ρ‚ΠΎΠ³ΠΈ

Π₯ΠΎΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ здСсь Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚ΡƒΡ‚ Π½Π΅ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ символами, Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ значСния, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½ΡƒΠ»ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния, Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, поэтому Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прСдствалСн лишь ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

РСкомСндуСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π°Π²Ρ‚ΠΎΡ€ рассказываСт, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Однако Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π°Π²Ρ‚ΠΎΡ€ строит ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ с использованиСм Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ парсСра.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π½Ρ„ΠΈΠΊΡΠ½Ρ‹Π΅, прСфиксныС ΠΈ постфиксныС выраТСния¢

Когда Π²Ρ‹ записываСтС арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ€ΠΎΠ΄Π΅ B * C, Ρ‚ΠΎ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт Π²Π°ΠΌ достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная B умноТаСтся Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ C, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ умноТСния * находится Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ записи называСтся инфиксной, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ располоТСн ΠΌΠ΅ΠΆΠ΄Ρƒ (in between) Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ инфиксный ΠΏΡ€ΠΈΠΌΠ΅Ρ€: A + B * C. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ + ΠΈ * ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ, Π½ΠΎ Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ? + Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с A ΠΈ B ΠΈΠ»ΠΈ * ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ B ΠΈ C? Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выглядит Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ.

ЀактичСски, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ выраТСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρƒ вас вопросов. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ + ΠΈ *. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ свой ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΆΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² с Π½ΠΈΠ·ΠΊΠΈΠΌ. ЕдинствСнной Π²Π΅Ρ‰ΡŒΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ², ΡΠ²Π»ΡΡŽΡ‚ΡΡ скобки. Для арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стоят Π²Ρ‹ΡˆΠ΅ слоТСния ΠΈ вычитания. Если ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ порядок слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, ΠΈΠ»ΠΈ ΠΈΡ… Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π΅ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A + B * C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². B ΠΈ C ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ добавляСтся A. (A + B) * C заставит Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слоТСниС A ΠΈ B ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ A + B + C ΠΏΠΎ очСрёдности (Ρ‡Π΅Ρ€Π΅Π· Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ) ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ самый Π»Π΅Π²Ρ‹ΠΉ +.

Π₯отя это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ для вас, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ нуТдаСтся Π² Ρ‚ΠΎΡ‡Π½ΠΎΠΌ Π·Π½Π°Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Одним ΠΈΠ· способов записи выраТСния, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ порядку ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, являСтся созданиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ называСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ расставлСнными скобками. Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ выраТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Ρƒ скобок для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π‘ΠΊΠΎΠ±ΠΊΠΈ Π΄ΠΈΠΊΡ‚ΡƒΡŽΡ‚ порядок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ многозначности. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° расстановки ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ².

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A + B * C + D ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписано ΠΊΠ°ΠΊ ((A + (B * C)) + D) с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ происходит Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ слСдуСт ΠΊΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ слоТСниС. A + B + C + D ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² (((A + B) + C) + D), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

БущСствуСт Π΅Ρ‰Ρ‘ Π΄Π²Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ. Рассмотрим ΠΈΠ½Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись A + B. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли ΠΌΡ‹ помСстим ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ двумя ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ? Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ + A B. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² A B +. Всё это выглядит нСсколько странным.

A + B * C Π² прСфиксной Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ + A * B C. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ умноТСния ставится нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ B ΠΈ C, указывая Π½Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ * Π½Π°Π΄ +. Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния ΠΏΠ΅Ρ€Π΅Π΄ A ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ умноТСния.

Π’ постфиксной записи Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выглядит ΠΊΠ°ΠΊ A B C * +. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вновь сохраняСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ * находится нСпосрСдствСнно послС B ΠΈ C, обозначая, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ +. Π₯отя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находятся Π΄ΠΎ ΠΈΠ»ΠΈ послС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², порядок послСдних ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ остаётся Π² точности Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Π±Ρ‹Π».

Π’Π°Π±Π»ΠΈΡ†Π° 2: ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ инфиксной, прСфиксной ΠΈ постфиксной записи

Π˜Π½Ρ„ΠΈΠΊΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡŒΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡŒΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ запись
A + B+ A BA B +
A + B * C+ A * B CA B C * +

А сСйчас рассмотрим инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (A + B) * C. Напомним, Ρ‡Ρ‚ΠΎ Π² этом случаС запись Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия скобок для указания Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слоТСниС ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Однако, ΠΊΠΎΠ³Π΄Π° A + B записываСтся Π² прСфиксной Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния просто помСщаСтся ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ: + A B. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ для умноТСния. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ умноТСния пСрСмСщаСтся Π² Π½Π°Ρ‡Π°Π»ΠΎ всСго выраТСния, давая Π½Π°ΠΌ * + A B C. Аналогично, Π² постфиксной записи A B + явно указываСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ происходит слоТСниС. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ для ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° C. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ постфиксным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ A B + C *.

Рассмотрим эти Ρ‚Ρ€ΠΈ выраТСния Π΅Ρ‰Ρ‘ Ρ€Π°Π· (см. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 3). ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅. ΠšΡƒΠ΄Π° ΡƒΡˆΠ»ΠΈ скобки? ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π½Π°ΠΌ Π² прСфиксной ΠΈ постфиксной записи? ΠžΡ‚Π²Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ большС Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ своим ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ. Волько инфиксная запись Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ прСфиксного ΠΈ постфиксного Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π½ΠΈΡ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ для использования.

Π’Π°Π±Π»ΠΈΡ†Π° 3: Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со скобками

Π˜Π½Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
(A + B) * C* + A B CA B + C *

Π’Π°Π±Π»ΠΈΡ†Π° 4 дСмонстрируСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ инфиксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ эквивалСнтных ΠΈΠΌ прСфиксных ΠΈ постфиксных записСй. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ эквивалСнтны с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния порядка выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’Π°Π±Π»ΠΈΡ†Π° 4: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ инфиксной, прСфиксной ΠΈ постфиксной записи

Π˜Π½Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
A + B * C + D+ + A * B C DA B C * + D +
(A + B) * (C + D)* + A B + C DA B + C D + *
A * B + C * D+ * A B * C DA B * C D * +
A + B + C + D+ + + A B C DA B + C + D +

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ инфиксного выраТСния Π² прСфиксноС ΠΈ постфиксноС¢

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

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· рассматриваСмых Π½Π°ΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ использованиС ΠΈΠ΄Π΅ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ расстановки скобок Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, рассмотрСнной Π½Π°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅. Напомним, Ρ‡Ρ‚ΠΎ A + B * C ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ (A + (B * C)), Ρ‡Ρ‚ΠΎΠ±Ρ‹ явно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ умноТСния ΠΏΠ΅Ρ€Π΅Π΄ слоТСниСм. Однако, ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΎΠΌ рассмотрСнии Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ каТдая ΠΏΠ°Ρ€Π° скобок Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ°Ρ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎ сСрСдинС.

ВзглянитС Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ скобку Π² ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ (B * C) Π²Ρ‹ΡˆΠ΅. Если ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½Π΅ΠΌ символ умноТСния с Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π»Π΅Π²ΡƒΡŽ скобку, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² B C *, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ. Если ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния Ρ‚ΠΎΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ скобкС ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Π½ΠΈΠΌ Π»Π΅Π²ΡƒΡŽ скобку, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ станСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ постфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (см. рисунок 6).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Рисунок 6: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΏΡ€Π°Π²ΠΎ для постфиксной записи

Если ΠΌΡ‹ сдСлаСм Ρ‚ΠΎΠΆΠ΅ самоС, Π½ΠΎ вмСсто пСрСдвиТСния символа Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊ ΠΏΡ€Π°Π²ΠΎΠΉ скобкС, сдвинСм Π΅Π³ΠΎ ΠΊ Π»Π΅Π²ΠΎΠΉ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΡ€Π΅Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ (см. рисунок 7). ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΏΠ°Ρ€Ρ‹ скобок Π½Π° самом Π΄Π΅Π»Π΅ являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Рисунок 7: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Π»Π΅Π²ΠΎ для прСфиксной записи.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Рисунок 8: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ слоТного выраТСния ΠΊ прСфиксной ΠΈ постфиксной записи.

ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· инфиксного Π² постфиксный Π²ΠΈΠ΄ΒΆ

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прСобразования любого инфиксного выраТСния Π² постфиксноС. Для этого посмотрим Π±Π»ΠΈΠΆΠ΅ Π½Π° сам процСсс конвСртирования.

Рассмотрим Π΅Ρ‰Ρ‘ Ρ€Π°Π· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A + B * C. Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Π΅Π³ΠΎ постфиксным эквивалСнтом являСтся A B C * +. ΠœΡ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ A, B ΠΈ C ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π° своих мСстах, Π° мСстополоТСниС ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π•Ρ‰Ρ‘ Ρ€Π°Π· взглянСм Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² инфиксном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π½Π°ΠΌ попадётся +. Однако, Π² постфиксном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ + находится Π² ΠΊΠΎΠ½Ρ†Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, *, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ слоТСниСм. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌΡƒ постфиксному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ.

Π’ процСссС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ выраТСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π΄Π΅-Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. Π’Π°ΠΊΠΆΠ΅ порядок этих сохраняСмых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ (ΠΈΠ·-Π·Π° ΠΈΡ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°), ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ со слоТСниСм ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ умноТСния, ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ послС использования послСднСго. Из-Π·Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ порядка ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС стСка для хранСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ понадобятся.

Π§Ρ‚ΠΎ насчёт (A + B) * C? Напомним Π΅Π³ΠΎ постфиксный эквивалСнт: A B + C *. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌΡΡ, Ρ‡Ρ‚ΠΎ обрабатывая это инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΌΡ‹ встрСтим +. Π’ этом случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ *, + ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ прСимущСство Π½Π°Π΄ * Π² силу использования скобок. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° прСобразования. Когда ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π»Π΅Π²ΡƒΡŽ скобку, Ρ‚ΠΎ сохраняСм Π΅Ρ‘ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ. Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ появится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ правая скобка, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ мСстополоТСниС (вспомнитС Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ ΠΏΠΎΠ»Π½ΠΎΠΉ расстановки скобок). ПослС появлСния ΠΏΡ€Π°Π²ΠΎΠΉ скобки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выталкиваСтся ΠΈΠ· стСка.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ сканируСм инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Ρ‚ΠΎ для хранСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСк. Π­Ρ‚ΠΎ прСдоставит Π½Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. На Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка всСгда Π±ΡƒΠ΄Π΅Ρ‚ послСдний сохранённый ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Когда Π±Ρ‹ ΠΌΡ‹ Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² стСкС (Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ).

Рисунок 9 дСмонстрируСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прСобразования, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Π΄ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ A * B + C * D. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * удаляСтся Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ встрСчаСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +. Π’Π°ΠΊΠΆΠ΅ + остаётся Π² стСкС, ΠΊΠΎΠ³Π΄Π° появляСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ *, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ слоТСниСм. Π’ ΠΊΠΎΠ½Ρ†Π΅ инфиксного выраТСния ΠΈΠ· стСка Π΄Π²Π°ΠΆΠ΄Ρ‹ происходит Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅, удаляя ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ помСщая + ΠΊΠ°ΠΊ послСдний элСмСнт Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ постфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

Рисунок 9: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ A * B + C * D Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π° Python, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ prec для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Он связываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с Ρ†Π΅Π»Ρ‹ΠΌ числом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с числами Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠ°ΠΊ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ приоритСтности (для этого ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ρ†Π΅Π»Ρ‹Π΅ числа 3, 2 ΠΈ 1). ЛСвая скобка ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ самоС Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, любой сравниваСмый с Π½Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π°Π΄ Π½Π΅ΠΉ. Π‘Ρ‚Ρ€ΠΎΠΊΠ° 15 опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ символами Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Полная функция прСобразования ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ActiveCode 8.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ постфиксная Ρ„ΠΎΡ€ΠΌΠ°

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ запись прСдставляСт собой Ρ‚Π°ΠΊΡƒΡŽ запись арифмСтичСского выраТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сначала Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ – Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, для выраТСния a + b * c постфиксная запись Π±ΡƒΠ΄Π΅Ρ‚ a b c * +. Π—Π΄Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * Π±ΡƒΠ΄ΡƒΡ‚ b ΠΈ c (Π΄Π²Π° Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°), Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ + Π±ΡƒΠ΄ΡƒΡ‚ Π° ΠΈ составной ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ b c *. Π­Ρ‚Π° запись ΡƒΠ΄ΠΎΠ±Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ скобок. НапримСр, для выраТСния (a + b) * c постфиксная запись Π±ΡƒΠ΄Π΅Ρ‚ a b + c *. Π’ этой записи Π½Π΅ трСбуСтся ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ скобки для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок вычислСния, зависящий ΠΎΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΊ Π² исходном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Алгоритм ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ исходный массив лСксСм ΠΈ строит Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈΠ· Ρ‚Π΅Ρ… ΠΆΠ΅ лСксСм, располоТСнных Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΅Ρ‰Π΅ стСк – Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Алгоритм ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° выраТСния Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС пСрСкладывания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· стСка Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, порядок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ смСнился Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ.

Π Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» выраТСния, содСрТащиС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ нСслоТно. Для удобства ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° выраТСния Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись Π² синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² список лСксСм сначала ΠΊΠ»Π°ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ скобку, Π° Π·Π°Ρ‚Π΅ΠΌ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись появляСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚:

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния, записанного Π² постфиксной записи, ΠΎΡ‡Π΅Π½ΡŒ просто (Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сначала ввСсти значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ). ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись. ЗначСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ констант кладутся Π² стСк. Когда встрСчаСтся опСрация, ΠΈΠ· стСка бСрутся Π΄Π²Π° Π²Π΅Ρ€Ρ…Π½ΠΈΡ… значСния, вычисляСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ этим значСниям, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ помСщаСтся Π² стСк. Если встрСчаСтся функция, Ρ‚ΠΎ бСрётся ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· стСка, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ помСщаСтся Π² стСк Π½Π° Π΅Π³ΠΎ мСсто.

Вычислим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния a b c + * d + 2 / ΠΏΡ€ΠΈ Π° = 1, b = 2, c = 3, d = 4

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠ°Ρ лСксСмаБтСк
a1
b1 2
c1 2 3
+1 5
*5
d5 4
+9
29 2
/4.5

Вычислим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния x x sin 2 * + ΠΏΡ€ΠΈ x = 3.14

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠ°Ρ лСксСмаБтСк
x3.14
x3.14 3.14
sin3.14 0
23.14 0 2
*3.14 0
+3.14
ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠ°Ρ лСксСмаБтСк
a0
b0 2
||1
c1 0
!1 1
&&1

Π€Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Word

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Π°Ρ ΠΈ постфиксная польская (бСсскобочная) Ρ„ΠΎΡ€ΠΌΠ° записи.

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ арифмСтичСскиС выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² повсСднСвной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ содСрТащиС скобки, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΠΈΠ½Ρ„ΠΈΠΊΡΠ½Ρ‹ΠΌΠΈ выраТСниями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ располагаСтся ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния дСйствий Π² Ρ‚Π°ΠΊΠΈΡ… выраТСниях опрСдСляСтся ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ скобками. ВычислСниС ΠΈ компиляция Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· с Ρ†Π΅Π»ΡŒΡŽ выявлСния порядка выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡ‹ записи арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· скобок, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… порядок дСйствий задаСтся порядком Π·Π½Π°ΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ записи Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ польской ΠΈΠ»ΠΈ бСсскобочной записью. Польская запись ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСфиксной, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ, ΠΈ постфиксной, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слСдуСт Π·Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ. ВычислСниС ΠΈ компиляция бСсскобочных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ оказываСтся ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ со скобками, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² порядкС описания ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Π½Π΅ трСбуСтся.

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Π°Ρ польская запись (ΠŸΡ€ΠŸΠ—) опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Если инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π• прСдставляСт собой ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π°, Ρ‚ΠΎ ΠŸΡ€ΠŸΠ— выраТСния Π• – это просто Π°.

Если (Π•) Π΅ΡΡ‚ΡŒ инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠŸΡ€ΠŸΠ— этого выраТСния Π΅ΡΡ‚ΡŒ ΠŸΡ€ΠŸΠ— Π•.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ порядок построСния ΠŸΡ€ΠŸΠ— Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ инфиксного выраТСния. НапримСр, для Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (a + b) * (c β€” d) построСниС ΠŸΡ€ΠŸΠ— ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ выполняСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Богласно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ прСфиксная запись выраТСния Π•1*Π•2 – это *E1β€˜E2β€˜, Π³Π΄Π΅ Π•1β€˜,Π•2β€˜ – прСфиксныС записи Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π•1ΠΈ Π•2. Выполняя построСниС постфиксных записСй для этих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ,

ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅:

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡŒΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ставится нСпосрСдствСнно Π·Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, инфиксной записи (A+B) соотвСтствуСт постфиксная Ρ„ΠΎΡ€ΠΌΠ° AB+.

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ польская запись (ΠŸΠΎΠŸΠ—) опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Если инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π• прСдставляСт собой ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π°, Ρ‚ΠΎ ΠŸΠΎΠŸΠ— выраТСния Π• – это Π°.

Если (Π•) Π΅ΡΡ‚ΡŒ инфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ постфиксная запись этого выраТСния Π΅ΡΡ‚ΡŒ постфиксная запись Π•.

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ построим ΠŸΠΎΠŸΠ— выраТСния

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ внСшнСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π½Π°ΠΉΠ΄Π΅ΠΌ постфиксныС записи ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄:

ΠŸΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ постфиксныС записи Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ запись Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ двумя Ρ†Π΅Π½Π½Ρ‹ΠΌΠΈ свойствами, благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² компиляторах:

Для записи любого выраТСния Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ скобки.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ нСпосрСдствСнно слСдуСт Π·Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² отсутствуСт. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (A+B)+C ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ AB+C+, Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A+(B+C) прСдставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ ABC++.

К ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ считывания ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±Π΅Π· считывания ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ относится ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ опСрациям, ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊ, ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ отрицания (эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌ

) просто ставят нСпосрСдствСнно Π·Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. НапримСр, инфиксная запись

A прСдставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ A

(Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ «-» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π² инфиксной записи, указывая ΠΊΠ°ΠΊ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ ΡƒΠ½Π°Ρ€Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ смысл становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΈΠ· контСкста. Π’ постфиксной записи это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅.

Благодаря описанным Π²Ρ‹ΡˆΠ΅ свойствам Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² постфиксной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

lex = getNextLex(); // ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ лСксСму

if(isOperand(lex)) // лСксСма Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

push(lex); // Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ лСксСму Π² стСк

if(isOperator(lex)) // лСксСма Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

push(performOperation(lex, pop(), pop()));

/* Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ лСксСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ послСдними элСмСнтами, записанными Π² стСк, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти элСмСнты Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ;

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вычислСний Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния оказываСтся СдинствСнным элСмСнтом стСка.

Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ стСком, Π»Π΅ΠΆΠΈΡ‚ практичСски Π² основС любого компилятора. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π»ΠΎΠΊ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, послС Ρ‡Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° строит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, просматривая выраТСния Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ вычислСниС постфиксной записи выраТСния Π½Π΅ прСдставляСт трудности, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠ΅ инфиксной записи Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ слоТнСС. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ продукция языка ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

Π³Π΄Π΅ A, B ΠΈ C ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°ΠΌΠΈ, Π° «ΠΈ» – Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°ΠΌΠΈ. Π’ΠΎΠ³Π΄Π° эта продукция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» A являСтся инфиксной записью, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ B ΠΈ C вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ «ΠΈ». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, постфиксная Ρ„ΠΎΡ€ΠΌΠ° выраТСния образуСтся ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² B, C, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «ΠΈ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ постфиксная запись ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ запись для B

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ запись для C

Если Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ символы выводятся Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π² Ρ‚Π°ΠΊΠΎΠΌ порядкС, Ρ‚ΠΎ всС Ρ„Ρ€Π°Π·Ρ‹ языка Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π² постфиксной Ρ„ΠΎΡ€ΠΌΠ΅.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ выраТСния ΠΈΠ· инфиксной записи Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ.

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

Рассмотрим Π΄Π²Π° выраТСния Π² инфиксной Ρ„ΠΎΡ€ΠΌΠ΅: А+Π’*Π‘ ΠΈ (А+Π’)*Π‘ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ постфиксныС Ρ„ΠΎΡ€ΠΌΡ‹ АВБ*+ иАВ+Π‘*. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС порядок слСдования ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² этих Ρ„ΠΎΡ€ΠΌΠ°Ρ… совпадаСт с порядком слСдования ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² исходных выраТСниях. ΠŸΡ€ΠΈ просмотрС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выраТСния (А+Π’*Π‘) ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ А ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сразу ΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² постфиксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ символ «+» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ‚ΡƒΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π΅Ρ‰Π΅ Π½Π΅ просмотрСнный ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ (Ρ‚.Π΅. символ «+») Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сохранСн, Π° впослСдствии ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ. ПослС просмотра ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π’ этот символ записываСтся вслСд Π·Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ А. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ просмотрСнными ΡƒΠΆΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. Однако ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ символ «+» Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ запись Π΅Ρ‰Π΅ Ρ€Π°Π½ΠΎ, Ρ‚.ΠΊ. Π·Π° Π½ΠΈΠΌ слСдуСт символ «*», ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ скобок обуславливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «+» Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ инфиксной Ρ„ΠΎΡ€ΠΌΡ‹ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, для ΠΈΡ… ΡƒΡ‡Π΅Ρ‚Π° Π²Π²Π΅Π΄Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ precedence(oper1, oper2), Π³Π΄Π΅ oper1 ΠΈ oper2 – символы, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TRUE, Ссли oper1 ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ oper2, ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π½ΠΎ oper1 располагаСтся слСва ΠΎΡ‚ oper2 Π² бСсскобочном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, прСдставлСнном Π² инфиксной Ρ„ΠΎΡ€ΠΌΠ΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС функция precedence(oper1, oper2) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ FALSE.НапримСр, значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ precedence(«*»,»+») ΠΈ precedence(«+» «+») – «ΠΈΡΡ‚ΠΈΠ½Π°», Π°precedence («+»,»*») – «Π»ΠΎΠΆΡŒ».

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста Π² этом Π°Π±Π·Π°Ρ†Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ постфиксной записи (ΠΊΠ°ΠΊ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‚Π°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ студСнтами ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ) для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок.

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для прСобразования строки, прСдставлСнной Π² инфиксной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π½Π΅ содСрТащСй скобок, Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкС скобки ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, СдинствСнным ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ порядка выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ являСтся ΠΈΡ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

1. (Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку » «);

2. (ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ стСк с ΠΈΠΌΠ΅Π½Π΅ΠΌ opstk);

3. while (Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π΅Ρ‰Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ символы) <

6. (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ символ ΠΊ постфиксной строкС);

8. while(empty(stack) == FALSE) &&

(precedence(stacktop(opstk), symb) == TRUE)) <

/* smbtp ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ больший, Ρ‡Π΅ΠΌ symb, поэтому ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊ постфиксной строкС. */

10. (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ smbtp ΠΊ постфиксной строкС);

/* Π² этой Ρ‚ΠΎΡ‡ΠΊΠ΅ Π»ΠΈΠ±ΠΎ opstk пуст, Π»ΠΈΠ±ΠΎ symb ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π°Π΄ stacktop(opstk). ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ symb Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ считаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ symb. */

/* ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ строка оказываСтся просмотрСнной Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π² стСкС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку. */

15. while(empty(opstk) == FALSE) <

(Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ smbtp ΠΊ постфиксной строкС);

Для обСспСчСния возмоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скобками послС считывания ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ скобки ΠΎΠ½Π° записываСтся Π² стСк. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ установки ΠΏΡ€Π°Π²ΠΈΠ»Π° precedence(op, «(«) == FALSE для любого символа ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ символа ΠΏΡ€Π°Π²ΠΎΠΉ (Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ) скобки. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ precedence(«(«, op) == FALSE для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ символ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ послС Π»Π΅Π²ΠΎΠΉ скобки, записывался Π² стСк.

ПослС считывания Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· стСка ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано ΠΏΡƒΡ‚Π΅ΠΌ установки precedence(op, «)») == TRUEдля всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ op, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Π»Π΅Π²ΠΎΠΉ скобки. ПослС считывания этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ· стСка ΠΈ закрытия ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· стСка ΠΈ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π° вмСстС с Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобкой. ОбС скобки Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π·Π°Ρ‚Π΅ΠΌ Π½ΠΈ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку, Π½ΠΈ Π² стСк. Установим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ precedence(«(«, «)») Ρ€Π°Π²Π½ΠΎΠΉ FALSE. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ достиТСнии ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки Ρ†ΠΈΠΊΠ», Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² строкС 8, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½, Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТится со строки 12. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² стСк, строка 12 замСняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ

if((empty(opstk) == TRUE) || (symb <> «)»))

Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… соглашСний для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ precedence, Π° Ρ‚Π°ΠΊΠΆΠ΅ исправлСний для строки 12 рассмотрСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для прСобразования любой строки, записанной Π² инфиксной Ρ„ΠΎΡ€ΠΌΠ΅, Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ. ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° приоритСтности скобок:

precedence(«(«,op) == FALSE для любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ op

precedence(op,»(«) == FALSE для любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ op, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ «)»

precedence(op,»)») == TRUE для любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ op, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ «(«

precedence(«)»,op) = «Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ» для любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ op, (ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° сравнСния Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ)

ΠŸΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ нСсколькими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€1:

ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡΡ содСрТимоС symb, постфиксной строки ΠΈ opstk послС просмотра ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа. Π’Π΅Ρ€ΡˆΠΈΠ½Π° opstkнаходится справа.

Π‘Ρ‚Ρ€ΠΎΠΊΠ°symbΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ строкаopstk
AA
+A+
BAB+
*AB+*
CABC+*
ABC*+
ABC*+

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ 1, 3 ΠΈ 5 ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ просмотру ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ символ (symb) Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ помСщаСтся Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку. Π’ строкС 2 Π±Ρ‹Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° опСрация, Π° стСк оказался пустым, поэтому опСрация помСщаСтся Π² стСк. Π’ строкС 4 ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ символа (*) большС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ символа, располоТСнного Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка (+), поэтому Π½ΠΎΠ²Ρ‹ΠΉ символ помСщаСтся Π² стСк. На 6-ΠΌ ΠΈ 7-ΠΌ ΡˆΠ°Π³Π°Ρ… входная строка пуста, поэтому ΠΈΠ· стСка ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ строку.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€2:

Π‘Ρ‚Ρ€ΠΎΠΊΠ°symbΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½Π°Ρ строкаOpstk
((
AA(
+A(+
BAB(+
)AB+
*AB+*
AB+C*

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ скобки ΠΈΠ· стСка Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ элСмСнты Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° лСвая скобка, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ±Π΅ скобки ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ. ИспользованиС скобок для измСнСния приоритСтности выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΡ… располоТСния Π² постфиксной строкС, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.

Π‘Ρ‚Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запоминания Π² Π½Π΅ΠΌ просмотрСнных Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

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

Π΄. ΠŸΠΎΠΌΠ΅Ρ‰Π°Ρ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку скобки, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вычислСний. Π’Π°ΠΊ, ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π»Π΅Π²ΠΎΠΉ скобки ΠΎΠ½Π° записываСтся Π² стСк. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΅ΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ скобки всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ этими скобками ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, располоТСнных Π·Π° этими скобками.

Π˜Π½Ρ„ΠΈΠΊΡΠ½Π°Ρ нотация β€” это Ρ„ΠΎΡ€ΠΌΠ° записи матСматичСских ΠΈ логичСских Ρ„ΠΎΡ€ΠΌΡƒΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ записаны Π² инфиксном стилС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 + 2). Π—Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Π±ΠΎΡ€Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ записанных Π² Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° слоТнСС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с прСфиксной (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ + 2 2) ΠΈΠ»ΠΈ постфиксной (2 2 +). Однако эта запись ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ СстСствСнная для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.

Π’ инфиксной Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ прСфиксной ΠΈ постфиксной, скобки, ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ порядок Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ отсутствии скобок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

Β«AntananarivoΒ» β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° русский

Π˜Π½Ρ„ΠΈΠΊΡΠ½Π°Ρ запись ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ, Π³Π΄Π΅ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ описываСт ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Π° Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ записи ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ S(1,3) Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ функция S ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слоТСния: S(1,3) = 1+3 = 4.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *