Gestructureerd programmeren

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Gestructureerd programmeren kan worden gezien als een subdiscipline van procedureel programmeren, een van de belangrijke programmeerparadigma's (en waarschijnlijk het populairste) voor het programmeren van computers.

In de jaren zestig werd het langzaamaan duidelijk dat de complexiteit van computerprogramma's uit de hand begon te lopen. Programmeurs zagen door de bomen het bos niet meer.

Goede programmeurs wisten door structureel te werken echter code te produceren die veel makkelijker te doorzien was. Het viel op dat bekwame programmeurs met name veel minder GOTO-statements gebruikten. Wetenschappers in de informatica, waaronder met name Edsger Dijkstra, Jean-Dominique Warnier en Michael A. Jackson, zagen de oplossing in het gestructureerd programmeren, waarbij het door nieuwe constructies in programmeertalen onnodig zou worden constructies als het goto-statement te gebruiken, waardoor de leesbaarheid van code veel beter werd.

De drie basisconstructies in gestructureerd programmeren zijn:

  • sequentie = opeenvolging (S1 S2)
  • selectie = keuzestructuur (if B then S1 else S2)
  • iteratie = herhaling (met de herhalingsvoorwaarde voor- of achteraf; meestal while B do S en do S until B)

Hierbij staat S voor een opdracht (Statement) en B voor een logische expressie (Boolean). Belangrijk is hierbij dat zowel een opdracht als een logische expressie willekeurig complex mag zijn. In programmeertalen is dat voor opdrachten gerealiseerd door begin…end-constructies:

Men hoopte dat een en ander het bewijzen van de (wiskundige) correctheid van een programma mogelijk zou maken. Dat is echter tot op heden niet gelukt.

Als alternatief voor het stroomdiagram werd het Nassi-Shneiderman-diagram uitgevonden. De restricties hiervan werken in het voordeel van het programmeren, het zijn dezelfde restricties die men moet hanteren met gestructureerd programmeren.

Dit gestructureerde programmeren leidde tot een nieuwe generatie programmeertalen. Vrijwel al deze talen kennen het goto-statement en het label nog wel, maar het gebruik ervan wordt sterk afgeraden en bemoeilijkt door extra declaratieverplichtingen.

Enkelvoudige keuzestructuur[bewerken]

Bij een keuzestructuur wordt een bepaald stuk code, afhankelijk van een voorwaarde, al dan niet uitgevoerd door de computer.

structuur beschrijving
if v then xxx xxx wordt alleen uitgevoerd als aan de voorwaarde voldaan wordt
if v then xxx else yyy als aan de voorwaarde voldaan wordt, wordt xxx uitgevoerd; zo niet wordt yyy uitgevoerd
if v1 then xxx elseif v2 ... als niet aan de eerste voorwaarde voldaan wordt, worden vervolgacties afhankelijk van een tweede voorwaarde
voorbeeld van een if
 <?
 $humeur = "slecht";
 if ($humeur == "slecht") {
   echo ("ik ben slechtgehumeurd");
 }
 ?>
voorbeeld van een elseif
 <?
 $humeur = "goed";
 if ($humeur == "slecht") {
   echo "ik ben slechtgehumeurd";
 }
 elseif ($humeur == "verveeld") {
   echo "ik verveel mij";
 }
 else {
   echo "ik ben goedgeluimd";
 }
 ?>

Meervoudige keuzestructuur[bewerken]

Bij een meervoudige keuzestructuur (of: switch) kan gereageerd worden op verschillende waarden. Dit kan ook geïmplementeerd worden met een aantal enkelvoudige keuzestructuren (en de kans is groot dat daar dan "elseif"-statements in voorkomen), maar met een switch gaat het eenvoudiger:

 <?
 $humeur = "goed";
 switch ($humeur) {
 case "slecht":
   echo "ik ben slechtgehumeurd";
   break;
 case "verveeld":
   echo "ik verveel mij";
   break;
 default:
   echo "ik ben goedgeluimd";
 }
 ?>

Voorwaardelijke herhalingsstructuur[bewerken]

Als statements voorwaardelijk herhaald moeten worden zijn er twee mogelijkheden:

  • eerst testen, daarna de opdracht uitvoeren en vervolgens opnieuw testen (en eventueel de opdracht uitvoeren, opnieuw testen enzovoorts)
  • eerst de opdracht uitvoeren, daarna testen, eventueel de opdracht herhalen, opnieuw testen enzovoorts.

In het eerste geval kan het zijn dat de opdracht helemaal nooit uitgevoerd wordt (herhaling van 0 of meer keren), in het tweede geval wordt de opdracht minimaal één keer uitgevoerd.

PHP-voorbeeld van eerste mogelijkheid
 <?
 $teller = 0;
 while ($teller <= 12) {
   echo "de teller zit nu aan: $teller <br />";
   $teller++;
 }
 ?>
PHP-voorbeeld van de tweede mogelijkheid
 <?
 $teller = 0;
 do {
   $teller++;
   echo "de teller zit nu aan: $teller <br />";
 } while ($teller <= 12);
 ?>

Zie ook[bewerken]

Wikibooks Wikibooks heeft een studieboek over dit onderwerp: Programmeren, de basis/De controlestructuren.