Wanneer je in een webbrowser van pagina naar pagina surft, kun je met de
Terug-knop weer naar de vorige pagina. Dat gedrag is een schoolvoorbeeld van
een stapel (Stack): de laatst bezochte pagina moet als eerste weer
opduiken als je teruggaat. Precies het LIFO-principe.
Dit is een consoleversie van een opdracht die in de cursus als Windows-programma met knoppen stond. We laten de vensters en knoppen vallen en behouden de kern: een
Stackdie de terug-geschiedenis bijhoudt.
Je houdt twee dingen bij: de huidige pagina, en een Stack<string> met de
pagina’s waar je nog naar terug kunt.
Push) — daar kun je straks naar terug. Daarna wordt de nieuwe pagina
de huidige pagina. (De allereerste pagina duw je niet op de stapel: er was nog
geen huidige pagina.)Pop): die wordt
opnieuw de huidige pagina.Het hoofdprogramma met het menu is al gegeven (zie het beginbestand). Het drukt telkens het menu af, leest je keuze, en roept de juiste procedure op:
1. Bezoek pagina
2. Ga terug
3. Toon geschiedenis
4. Stop
Jij hoeft enkel de drie procedures in te vullen. Ze werken op de stapel
geschiedenis en op de variabele huidigePagina:
| Procedure | Wat ze doet | Uitvoer |
|---|---|---|
BezoekPagina | Leest een pagina; duwt de huidige pagina op de stapel (tenzij er nog geen is) en maakt de nieuwe pagina de huidige | Huidige pagina: <pagina> |
GaTerug | Neemt de bovenste pagina van de stapel (Pop) als nieuwe huidige pagina | Huidige pagina: <pagina> of Geen vorige pagina's in de geschiedenis. |
ToonGeschiedenis | Toont de terug-geschiedenis | Geschiedenis: gevolgd door elke pagina op een eigen regel |
De procedure bij optie 1 heeft een paginanaam nodig. Die lees je met
Console.ReadLine()in de procedure zelf (op de regel na de keuze). Het doorlopen van eenStackmetforeachgeeft de elementen al van boven naar onder (laatst toegevoegde eerst): precies de volgorde dieToonGeschiedenisnodig heeft. Is de stapel leeg, dan toontToonGeschiedenisenkel de kopregel.
Per bewerking eerst een regel met het cijfer van je keuze. Voor optie 1 volgt op de volgende regel de pagina.
Telkens het menu, gevolgd door de uitvoer van de gekozen bewerking.
Invoer:
1
home.com
1
nieuws.com
2
4
Uitvoer:
1. Bezoek pagina
2. Ga terug
3. Toon geschiedenis
4. Stop
Huidige pagina: home.com
1. Bezoek pagina
2. Ga terug
3. Toon geschiedenis
4. Stop
Huidige pagina: nieuws.com
1. Bezoek pagina
2. Ga terug
3. Toon geschiedenis
4. Stop
Huidige pagina: home.com
1. Bezoek pagina
2. Ga terug
3. Toon geschiedenis
4. Stop
Bij het bezoek aan nieuws.com werd home.com op de stapel geduwd. Eén keer
terug brengt je dus opnieuw bij home.com.