Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pabop_rpn_stack [2017-09-01 14:54]
pabop_rpn_stack [2022-07-18 13:20] (current)
Line 1: Line 1:
 +===== Miniräknare (rpn) =====
 +Gör en webbsida  med en miniräknare som jobbar med omvänd polsk notation. Detta sätt att evaluera uttryck tycker jag är överlägset det traditionella sättet (HP:s räknedosor använder ofta detta sätt).
 +Det räcker att er räknare klarar de fyra räknesätten och att nollställa räknaren, dvs tömma stacken (+,-,*,/,c)
 +
 +ex.
 +
 +  Uttrycket (4+5)*(6-7) 
 +  slår man in på följande sätt 
 +  4 ¶ 5 ¶ + ¶ 6 ¶ 7 ¶ - ¶ * ¶ 
 +  Där ¶ betyder "ENTER",
 +
 +Stacken kommer att se ut som följande under inmatningen.
 +
 +Stackens utseende.
 +  7
 +  5 6 6 -1
 +  4 4 9 9 9 9 -9
 +
 +===== Syfte =====
 +  * förstå, skapa och kunna använda vanliga datastrukturer såsom fält, stack
 +  * kunna införa och använda array i datastrukturer
 +  * kunna analysera programmeringsuppgifter
 +  * lära sig hantera $_SESSION
 +
 +
 +===== Uppgift: =====
 +1. Gör en stack enligt nedan
 +
 +Ni skall göra en egen stack. Stacken skall ha följande funktioner.
 +<code php>
 +Pop()         // returnerar det översta och tar samtidigt bort det
 +Top()         // returnerar det översta
 +Push($tal)    // lägger in tal överst i stacken
 +IsEmpty()     // returnerar true om stacken är tom
 +Size()        // returnerar stoleken på stacken
 +PrintStack()  // Skriver ut en stack, brukar inte finnas men ni kommer att behöva den.
 +</code>
 +
 +2. Använd er stack för att göra en rpm-miniräknare, ni får inte ändra $_SESSION direkt utan endast via din stack.
 +
 +===== Tips! =====
 +  * Spara er stack i en $_SESSION variabel tex. $_SESSION['stack'][]
 +  * Ni måste starta en session med ett namn.<code php><?php
 +session_name('ert_login');
 +session_start();</code>
 +  * Gör först alla funktioner ovan (alla stack-funktioner) och testa att det fungerar som de ska.
 +  * Som vanligt kan man spara en hel del tid genom att kolla vilka färdiga funktioner som finns i php (php.net)
 +  * Gör sedan miniräknaren med hjälp av de funktioner ni har gjort.
 +
 +Ett körbart program [[http://student.oedu.se/~jf/ex/rpn_calc.exe|dos]], [[http://student.oedu.se/~jf/ex/rpn_calc|linux]] eller [[http://student.oedu.se/~jf/code/rpn.php|web]]  för att bättre förstå hur din räknare skall funka.
 +
 +===== Länkar =====
 +  * En sida [[http://www.calculator.org/rpn.html|Reverse Polish Notation]] med lite mer info.
 +  * Wiki om [[http://en.wikipedia.org/wiki/Reverse_Polish_notation|RPM]]