Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida Pascal - La struttura Case...of...Else

Guida Pascal

Capitolo 6° - La struttura Case...of...Else

<< Precedente Prossimo >>
Caseof
Il costrutto caseof prende in esame una variabile e, per ogni valore specificato esegue unistruzione diversa. Supporta lelse e vuole lend alla fine. La variabile non deve essere di tipo string. E possibile linserimento 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 unattesa di x millisecondi); se n è uguale a 3, a 4 o a 5, scrive unaltra 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; lend 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..
<< Precedente Prossimo >>
A proposito dell'autore

C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...