Theory
Till maths में fail नहीं हो सकता
एक combo order till पर आता है: 2 samosas 15 पर plus 3 chai... software को 2 + 3 × 5 evaluate करना है।
क्या वह 17 है, या 25? आप जानते हैं यह 17 है (पहले multiply), क्योंकि आपके school ने precedence आपमें drill किया।
पर बाएँ से दाएँ पढ़ती एक machine पहले 2 + 3 देखती है और ख़ुशी-ख़ुशी 25 produce करती है। हर calculator को brackets के साथ पूरा BODMAS सिखाना गड़बड़ है। Computer science ने एक साफ़ trick ढूँढा: notation ख़ुद बदलिए, दो lessons पहले वाले stack का इस्तेमाल करते हुए।
Theory
एक sentence कहने के तीन तरीक़े
Operator कहाँ बैठता है यह बस grammar है:
- Infix: A + B (operator बीच में: human style)
- Postfix: A B + (operator बाद में: "A और B लीजिए, अब add कीजिए")
- Prefix: + A B (operator पहले: "अगले दोनों को add कीजिए")
वही meaning, तीन word orders। Magic: postfix और prefix में, कभी कोई brackets और precedence rules नहीं चाहिए। सिर्फ़ symbols का order काम का order तय करता है।
Theory
Rank के rules
Conversion operator precedence पर चलता है (कौन tighter bind करता है):
1. Brackets ( ) पहले, हमेशा
2. Powers ^
3. × और / अगला
4. + और - आख़िर में
5. Equal rank: बाएँ से दाएँ काम कीजिए
तो 2 + 3 × 5 में, + को turn मिलने से पहले × 3 और 5 पकड़ लेता है: expression असल में मतलब है 2 + (3 × 5)।
यही insight conversion method है: invisible brackets visible बनाइए, फिर हर operator relocate कीजिए।
Follow along
Exam recipe: full bracketing से convert कीजिए
- Precedence इस्तेमाल करते हुए infix expression को पूरी तरह parenthesize कीजिए A + B × C बन जाता है (A + (B × C)): हर operator को अपना bracket pair मिलता है।
- POSTFIX के लिए: हर operator को इसके closing bracket के ठीक AFTER move कीजिए (A + (B × C)) : × (B C) के बाद जाता है, + सब कुछ के बाद जाता है: (A (B C) ×) +
- PREFIX के लिए: हर operator को इसके opening bracket के ठीक BEFORE move कीजिए + (A × (B C)) : operators अपने bracket को bracket के बजाय lead करते हैं।
- सभी brackets मिटा दीजिए Postfix: A B C × + Prefix: + A × B C। हो गया, कोई bracket नहीं बचता।
Theory
दो बार हल किया: bracket सब कुछ बदल देता है
A + B × C (× पहले bind करता है):
Bracketed: (A + (B × C))
Postfix: A B C × + Prefix: + A × B C
(A + B) × C (bracket + को पहले force करता है):
Bracketed: ((A + B) × C)
Postfix: A B + C × Prefix: × + A B C
दोनों postfix answers compare कीजिए: वही तीन letters, अलग story। Infix version का bracket एक अलग ordering के रूप में survive करता है, bracket के रूप में नहीं।
Think first
कागज़ पर आपकी बारी
Bracket recipe इस्तेमाल करते हुए A × (B + C) - D को postfix में convert कीजिए। पहले कागज़ पर कीजिए: पूरी तरह bracket कीजिए, operators relocate कीजिए, brackets मिटाइए। फिर tap कीजिए।
Show the answer
Precedence से पूरी तरह bracketed: ((A × (B + C)) - D)
Operators को उनके closing brackets के बाद move कीजिए:
+ (B C) के बाद → B C +
× (A ...) के बाद → A B C + ×
- आख़िर में → A B C + × D -
Postfix: A B C + × D -
अगर आपने A B C + × D - लिखा आपके पास method है; अगर + और × swap हो गए, फिर check कीजिए कौन सा bracket पहले close होता है (innermost जीतता है)।
Quiz
A + B × C का postfix form क्या है, और यह A B + C × क्यों NAHI है?
- A B C × +, क्योंकि × का precedence ज़्यादा है तो B × C पहले group होता है
- A B + C ×, क्योंकि conversion हमेशा बाएँ से दाएँ जाता है
- × + A B C, क्योंकि operators front पर move करते हैं
- A B C + ×, क्योंकि infix expression में + पहले आता है
Show the answer
A B C × +, क्योंकि × का precedence ज़्यादा है तो B × C पहले group होता है
Precedence बाक़ी सब कुछ से पहले B × C group करता है: (A + (B × C)) → A B C × +। Option B precedence के बजाय reading order से convert करने की classic error है: A B + C × असल में मतलब है (A + B) × C, एक अलग expression। Option C PREFIX form की logic है (misapplied), और option D नए कपड़ों में left-to-right trap दोहराता है।
Watch out
जहाँ marks ग़ायब होते हैं
Precedence ignore करना killer है: A + B × C को बाएँ से दाएँ convert करना एक ग़लत answer देता है जो साफ़ LAGTA है। हमेशा पहले bracket कीजिए, फिर convert कीजिए।
Equal-precedence operators बाएँ से दाएँ जाते हैं: A - B + C ((A - B) + C) की तरह bracket होता है, कभी (A - (B + C)) नहीं।
और अपने answers label कीजिए: examiners postfix AND prefix दोनों माँगते हैं; prefix label किया एक correct postfix zero score करता है।
Formula
Stack यह काम क्यों करता है
Machine में, conversion और evaluation दोनों एक stack पर चलते हैं: operands गुज़रते हैं, operators stack पर तब तक wait करते हैं जब तक एक lower-ranked operator (या एक closing bracket) उन्हें pop नहीं करता। Postfix evaluate करना और भी simple है: एक number देखिए, push कीजिए; एक operator देखिए, दो pop कीजिए, compute कीजिए, वापस push कीजिए। Exams के लिए पूरी stack applications list: expression conversion/evaluation, function calls, undo/redo, browser back, balanced-bracket checking।
Summary
Key takeaways
- Infix (A + B) को precedence और brackets चाहिए; postfix (A B +) और prefix (+ A B) को दोनों नहीं चाहिए।
- Precedence: brackets, फिर ^, फिर × /, फिर + -, equal ranks बाएँ से दाएँ।
- Recipe: पूरी तरह bracket कीजिए, operators को उनके bracket के बाद (postfix) या पहले (prefix) move कीजिए, brackets मिटाइए।
- A + B × C → postfix A B C × +, prefix + A × B C; (A + B) × C → A B + C ×।
- Machine एक stack से convert और evaluate करती है: operands बहते हैं, operators wait करते हैं।
- Stack applications: expressions, call stack, undo, browser back, bracket checking।
- Memory hook: पहले bracket कीजिए, फिर operators relocate कीजिए।