SimReal - Hvordan lage en kalkulator? |
På denne siden vises en algoritme for omforming av et infix-uttrykk til tilhørende postfix-uttrykk. På neste side vises steg for steg hvordan infix, postfix og stakk ser ut ved lesing av et aritmetisk uttrykk. Kort fortalt går algoritmen ut på følgende: Les fortløpende ett og ett tegn si (operand/operator) fra infix-uttrykket. Hvis lest tegn er en operand, flyttes (konkateneres) operanden til postfix-uttrykket. Hvis lest tegn er en utvidet operator, poppes øverste stakk-element so opp. Så lenge so har større enn eller lik prioritet som si, konkateneres so til postfix-uttrykket, og nytt element so poppes fra operator-stakken. So pushes ned på stakken. Si pushes ned på stakken. Hvis si er en høyreparentes, poppes so opp fra operator-stakken. Så lenge so er ulik venstreparentes, konkateneres so til postfix-uttrykket og nytt element so poppes opp fra operator-stakken. Hvis si er lik slutt-tegnet #, poppes so opp fra operator-stakken og konkateneres til postfix-uttrykket. Nye so poppes opp fra operator-stakken og konkateneres til postfix-uttryket inntil operator-stakken er tom. Her finner du en simulering av denne algoritmen. Når simuleringen starter, velger du først punkt nr 3 (Simulering) i menyen. Deretter skriver du inn et aritmetisk uttrykk på infix form. Som et godt eksempel kan du skrive inn: a/b^c+d*e-a*c Trykk deretter 'Return' (Enter/Linjeskift). Infix-uttrykket blir da plassert i infix-posisjonen i simuleringen. For hvert nye trykk på 'Return', vil nå simuleringen vise steg for steg hvordan omformingen foregår fra infix til postfix form. |