Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

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 Stack die de terug-geschiedenis bijhoudt.

Hoe werkt de geschiedenis?

Je houdt twee dingen bij: de huidige pagina, en een Stack<string> met de pagina’s waar je nog naar terug kunt.

Opgave

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:

ProcedureWat ze doetUitvoer
BezoekPaginaLeest een pagina; duwt de huidige pagina op de stapel (tenzij er nog geen is) en maakt de nieuwe pagina de huidigeHuidige pagina: <pagina>
GaTerugNeemt de bovenste pagina van de stapel (Pop) als nieuwe huidige paginaHuidige pagina: <pagina> of Geen vorige pagina's in de geschiedenis.
ToonGeschiedenisToont de terug-geschiedenisGeschiedenis: 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 een Stack met foreach geeft de elementen al van boven naar onder (laatst toegevoegde eerst): precies de volgorde die ToonGeschiedenis nodig heeft. Is de stapel leeg, dan toont ToonGeschiedenis enkel de kopregel.

Invoer

Per bewerking eerst een regel met het cijfer van je keuze. Voor optie 1 volgt op de volgende regel de pagina.

Uitvoer

Telkens het menu, gevolgd door de uitvoer van de gekozen bewerking.

Voorbeeld

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.