Oppure

Loading
Case…of
Il costrutto case…of prende in esame una variabile e, per ogni valore specificato esegue un’istruzione diversa. Supporta l’else e vuole l’end alla fine. La variabile non deve essere di tipo string. E’ possibile l’inserimento di un or:

Program Esempio;
Uses Crt;
Var n:byte;
    c:word;

begin
    clrscr;
    write(‘Inserisci un numero: ‘);
    readln(n);
    case n of
         1: writeln(‘E’’ stato premuto il pulsante 1’);
         2: begin
            sound(440);
            delay(1000);
            nosound;
            end;
         3 or 4 or 5: write(‘Il numero premuto è fra 3 e 5’);
    else
      begin
      c:=sqr(n);
      writeln(c,’ è il quadrato di ‘,n);
      end;
    end;
    readln
end.


Non è molto difficile, vero? Per prima cosa si considera n: se è uguale a 1 scrive una frase (da notare che, per scrivere un apostrofo bisogna inserire due apici, perché altrimenti si terminerebbe la frase al primo); se n è uguale a 2, emette un suono (la procedura sound(x) emette un suono di x hertz, la procedura nosound ferma il suono e la procedura delay(x) genera un’attesa di x millisecondi); se n è uguale a 3, a 4 o a 5, scrive un’altra frase; se n non è nessuno dei valori specificati, alla variabile c viene assegnato il valore di x2 (la funzione sqr(x) ritorna x2) e poi viene stampata a video una frase che esplicita il valore di c; l’end prima di readln termina il ciclo case...of ed è obbligatorio anche se non c’è else.

Questa istruzione è molto utile quando bisogna considerare valori diversi di una stessa variabile senza dover usare moltissimi if...then...else. In particolare, il case...of può essere usato con un buon profitto nella scrittura di piccoli giochi come il tetris o pacman in cui bisogna far corrispondere alle freccette direzionali un movimento (in questo caso si prende una variabile char e si considera il suo valore per ogni freccia direzionale).

E' stato possibile notare, come avrete certamente visto, che ogni volta che in corrispondenza di un valore si devono eseguire più operazioni è obbligatorio specificare il blocco di operazioni con un begin che termina con un end;. In generale, nel Pascal, quando si deve fare eseguire un blocco di istruzioni, lo si chiude sempre tra un begin ed un end;. Il programma principale, infatti è racchiuso tra begin ed end..
A cura di: Il Totem