Alweer geen Excel

Herhalingen

Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gaat aan de slag met Pascal.

TP kent net als C en Rust een hele reeks aan herhalingen, veel meer dan BASIC. Door het gebruik van programma-blokken, ingesloten door Begin...End kan zo een scala aan herhalingen worden gebouwd. De mogelijkheden zijn:

While X Do <statement> herhaalt <statement> zolang X True is, als X meteen al False is, wordt <statement> nooit uitgevoerd. Let op, <statement> betreft één statement of een programma-blok. Dat is anders bij de volgende.

Repeat <programma-blok> Until X voert het hele programma-blok (zonder Begin en End) uit, test X, en als X evalueert naar False, dan wordt het proces herhaald. Ook als X vanaf het begin False is, wordt het hele blok toch éénmaal uitgevoerd.

Tot slot is er nog de mogelijkheid een vast aantal maal te herhalen.

For X := <begin> To <eind> Do <statement> kent aan X de waarde <begin> toe, voert <statement> uit, verhoogt X met 1 en herhaalt. Je kan X ook laten verlagen met 1 door To te vervangen door Downto. Je kan als index integers gebruiken, en alle andere ordinale types, inclusief enumeraties en subranges daarvan. Je mag de index niet aanpassen in het <statement>.

Daarmee is For eigenlijk een wat beperkte variant op While. Toch zit er nog wel iets in dat helpt bij het schrijven van duidelijke code. TP kent enumeraties, net als C. Minder krachtig dan in Rust, maar veel duidelijker dan in BASIC. Zo kan je schrijven:

Program EnumForDemo;

Type
  Day = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

Var
  D: Day;

Begin

  For D := Mon To Sun Do
    Writeln('Dag nummer ', Ord(D), ' is ', D);
End.

Zou je hetzelfde willen doen in BASIC dan krijg je

10 DIM Days$(6)
20 Days$(0) = "Mon": Days$(1) = "Tue": Days$(2) = "Wed"
30 Days$(3) = "Thu": Days$(4) = "Fri": Days$(5) = "Sat": Days$(6) = "Sun"
40 FOR i = 0 TO 6
50 PRINT "Dag nummer "; i; " is "; Days$(i)
60 NEXT i

C en Rust kennen wel enumeratie, maar door de manier waarop de compiler ze behandelt, moet je wat zaken zelf regelen die in TP automatisch gaan. In C krijg je dan

enum Day { Mon, Tue, Wed, Thu, Fri, Sat, Sun }; 

int main(void) {
    for (int i = Mon; i <= Sun; i++) {
        printf("Dag nummer %d is ", i);
        switch (i) {
            case Mon: printf("Mon"); break;
            case Tue: printf("Tue"); break;
            case Wed: printf("Wed"); break;
            case Thu: printf("Thu"); break;
            case Fri: printf("Fri"); break;
            case Sat: printf("Sat"); break;
            case Sun: printf("Sun"); break;
        }
        printf("\n");
    }
    return 0;
}

Arnout van Kempen is naast computernerd ook directeur compliance & risk bij aaff. Hij schrijft op persoonlijke titel.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.