guida

Guida Pascal - 28. Case..of; else

28. Case..of; else

Il costrutto if non sempre risponde alle necessità che si possono incontrare nella creazione di un programma. Per risolvere casi più complessi rispetto alla struttura alternativa è stato introdotto lo schema della scelta multipla o struttura di selezione multipla. La sua sintassi è la seguente:

case selettore of
  valore 1: begin
    istruzioni;
  end;
  valore 2: begin
    istruzioni;
  end;
  valore n: begin
    istruzioni;
  end;
else begin
  istruzioni;
end;

Se il valore della variabile selettore è presente in una delle liste di valori, allora viene eseguito il blocco di istruzioni, comprese tra begin ed end, corrispondenti a tale valore, in seguito si procede con la prima istruzione dopo il costrutto case. Se il valore della variabile selettore non è presente in una delle liste di valori, viene eseguito il blocco di istruzioni, comprese tra begin ed end, presenti sotto ad else. Quando c'è solo un istruzione che segue un certo caso si possono omettere begin e end. Occorre fare attenzione che il costrutto case termina con un end. Esempio:

program Calcolatrice;
uses crt;
var 
  a,b,c,scelta: real;
begin
  clrscr;
  gotoxy(20,2);write('CALCOLATRICE');
  textcolor(lightgreen);
  gotoxy(20,7);write('1-Addizione');
  gotoxy(20,9);write('2-Sottrazione');
  gotoxy(20,11);write('3-Moltiplicazione');
  gotoxy(20,13);write('4-Divisione');
  gotoxy(20,15);write('5-Fine programma');
  gotoxy(35,20);write('Scelta ='); 
  read(scelta);
  case scelta of
    1:
      begin
        clrscr;
        textcolor(yellow);
        gotoxy(20,4);write('ADDIZIONE');
        gotoxy(20,8);write('a =);read(a);
        gotoxy(20,10);write('b =');read(b);
        c:=a+b;
        gotoxy(20,12);write('somma =', c:0:2);
        readln;
      end;
    2: 
      begin
        clrscr;
        textcolor(red);
        gotoxy(20,4);write('SOTTRAZIONE');
        gotoxy(20,8);write('a =');read(a);
        gotoxy(20,10);write('b =');read(b);
        c:=a-b;
        gotoxy(20,12);write('differenza =', c:0:2);
        readln;
      end;
    3:
      begin
        clrscr;
        textcolor(green);
        gotoxy(20,4);write('MOLTIPLICAZIONE');
        gotoxy(20,8);write('a =');read(a);
        gotoxy(20,10);write('b =');read(b);
        c:=a*b;
        gotoxy(20,12);write('prodotto =', c:0:2);
        readln;
      end;
    4:
      begin
       clrscr;
       textcolor(5);
       gotoxy(20,4);write('DIVISIONE');
       gotoxy(20,8);write('a =');read(a);
       gotoxy(20,10);write('b =');read(b);
       q:=a/b;
       gotoxy(20,12);write('quoziente =', c:0:2);
       readln;
    end;
  gotoxy(20,18);write('PREMI INVIO PER USCIRE');
  readln;
end.