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.