Een PST-diagram is een programmastructuurdiagram; volgens mij ontworpen om programmeurs tijd te laten verliezen, geen copyrights te betalen voor stroomschema's en leerlingen te irriteren (voor zover dat al niet gebeurt door het geven van Pascal in het middelbaar, iets waar ik radicaal tegen ben: ofwel snap je er geen kloot van en ga je nooit die richting uit ofwel ken je al meer van programmeren en dan verdoe je daar je tijd).
Maar bon, soit, dat was niet wat je vroeg. De simpelste uitleg die ik je kan geven over hoe je een PST maakt: stroomschema's zul je hopelijk wel kennen (heb ik in ieder geval bij TO gezien), in feite komt het erop neer dat wat bij een stroomschema naar benden loopt, in een PST naar rechts loopt. Gewone commando's komen in een rechthoekje, procedures/functies in een rechthoekje waarvan de verticale zijden dubbel getekend zijn. Keuzestructuren komen in een ruit te liggen.
Als ik me niet vergis heb je een gelijkaardig boek als ik ooit voor info heb gehad (Informatic@ toevallig?), dan staan er ergens wel PST's in hoor (ze lijken een beetje op een stamboomdiagram/organigram).
Misschien kun je van de broncode in Pascal makkelijker een PST opbouwen, anyhow, ik heb gewoon zinn om te Pascallen (zonder al die zever die informaticaboeken errond hangen, spijtiggenoeg is mijn Pascal nogal roestig).
Code:
program gemiddelde;
var aantal, //aantal personen
totaal, //totaal van de leeftijden
leeftijd, //huidige ingegeven leeftijd
persoon : integer; //tellervariabele
begin
aantal:=0; //zeker zijn dat het aantal nul is
totaal:=0; //zeker zijn dat het totaal nul is
write('Van hoeveel personen wilt u de gemiddelde leeftijd berekenen? ');
while aantal < 1
do input(aantal);
for persoon := 1 to aantal
do begin
while leeftijd >= 0
do begin
write('Geef de leeftijd van persoon ', inttostr(persoon) ,' in: ');
input(leeftijd);
end;
totaal:=totaal+leeftijd;
leeftijd := -1; //ervoor zorgen dat bij de volgende lus in het begin een verkeerde waarde komt zodat de controle geldig blijft
end;
writeln();
writeln();
writeln('Deze ', inttostr(aantal), ' personen hebben een gemiddelde leeftijd van ', floattostr(totaal/aantal), ' jaar');
//geavanceerde code die ervoor zorgt dat je nog op een toets moet drukken na de uitvoering zodat je resultaat zichtbaar blijft
asm
mov 08h, ah
int 21h
end;
end.
Dit is de basiscode, de code waar dit programma mee uitgerust moet zijn. Uit Informatic@ weet ik dat ze er daar meer poep rond hangen en alles in IVU opdelen, dat zul je hopelijk zelf wel kunnen. Ik ben tegen een dergelijke opsplitsing omdat zoals je ziet het vragen naar de leeftijden en de verwerking ervan in eenzelfde structuur moet gebeuren tenzij je uitgebreidere code zou gaan gebruiken. Dus heel het IVU-systeem valt in duigen daarmee. Let er ook op dat ik andere namen voor variabelen heb gebruikt, let daarvoor op. Ik heb ook zonder de variabele gemiddelde gewerkt, die zit vervat in "totaal/aantal", die kun je desnoods toewijzen aan een variabele en zo invoegen. Dat is natuurlijk vrije keuze. In zo'n simpele programma's is zoiets volgens mij niet optimaal omdat je die variabele daarna niet meer nodig hebt. In grotere programma's is het natuurlijk een betere stijl om die variabele wel toe te wijzen omdat het dan waarschijnlijk is dat je het gemiddelde nog wel zult nodig hebben.
Dat laatste vanaf asm to de daaropvolgende end is niet echt nodig, maar is een trucje dat ik gevonden heb om ervoor te zorgen dat je uitvoer zichtbaar blijft en dat je enkel nog op een toets moet drukken om af te sluiten.