Training Programmeren voor W: Hint bij opgave VENSTERS

De volgende deelproblemen kunnen geïdentificeerd worden (maar het zou ook anders kunnen):

  1. Inlezen van de vensters uit het tekstbestand en opslaan ervan in een lijst.
  2. Bepalen of een gegeven punt in een gegeven venster ligt.
  3. Bepalen of een gegeven punt in een van de ingelezen vensters in de lijst vóórkomt, en zo ja, in welk venster als eerste.
  4. De muisklikken inlezen en bijbehorende uitvoer produceren.

Breng de oplossing van ieder deelprobleem onder in een aparte routine. Beslis zelf hoe elke routine gekoppeld is aan (communiceert met) zijn buitenwereld (parameters, resultaatwaarde, globale variabelen, etc.). Leg dit vast in zijn specificatie in het commentaar onder dev.

Routine 4 kan gebruik maken van routine 3 en die weer van routine 2. Het hoofdprogramma roept achtereenvolgens routines 1 en 4 aan.

Het maken van elke routine moet een fluitje van een cent zijn (afgezien misschien van routine 3, die wat lastiger is). Juist door zaken te scheiden kun je je aandacht telkens richten op één probleem. Verdeel en heers.

Als je moeite hebt met het oplossen van het probleem, zelfs zonder gebruik van routines, dan kun je vensters1mz.py raadplegen om wat ideeën op te doen. Dit programma bevat geen routines, geen zinvol commentaar en ook de naamgeving is niet erg behulpzaam, maar "het werkt" aardig. Zo'n programma is nagenoeg waardeloos als product. (Met een slechtere opmaak is het nog erger: vensters1mzs.py).

Motivatie

Het lijkt misschien overdreven om voor dit probleem vier routines te introduceren. Maar de professional zal dat i.h.a. wel doen, omdat die weet hoeveel profijt verdeel en heers biedt. Bij grotere problemen is dit onontbeerlijk.

Deze opgave is specifiek gericht op het opdelen en het regelen van de communicatie tussen de delen. Hierover staat wat theorie in Leren Programmeren in Python, Deel 3


Zend opmerkingen over deze pagina aan Tom Verhoeff