L'instruction CASE
L'instruction CASE vous permet de réécrire un code qui utilise beaucoup d'instructions IF THEN ELSE, rendant la logique du programme beaucoup plus lisible. Considérez la portion de code suivante écrite en utilisant des instructions IF THEN ELSE,

	if operator = '*' then result := number1 * number2
	   else if operator = '/' then result := number1 / number2
	       else if operator = '+' then result := number1 + number2
	           else if operator = '-' then result := number1 - number2
	               else  invalid_operator = 1;

La réécriture en utilisant l'instruction CASE donne,
	case  operator  of
	      '*' : result:= number1 * number2;
	      '/' : result:= number1 / number2;
	      '+' : result:= number1 + number2;
	      '-' : result:= number1 - number2;
	otherwise    invalid_operator := 1
	end;


La valeur de operator est comparée à chaque valeur spécifiée. Si une valeur testée correspond à le valeur de operator, les instructions associées à cette valeur sont exécutées.

Si la valeur de operator ne correspond pas à une des valeurs, elle est comparée à la valeur suivante. La clause otherwise permet de prendre les mesures nécessaires lorsque operator ne correspond à aucune des valeurs.

Vous devez comparer les variables à des constantes, bien qu'il soit possible de grouper les cas comme ci-après:

	case  user_request  of
	      'A' :
	      'a' :  call_addition_subprogram;
	      's' :
	      'S' :  call_subtraction_subprogram;
	end;

PROGRAMME DOUZE
Modifiez le programme suivant, en utilisant les instructions CASE appropriées,

	program  PROG_DOUZE (input, output);
	var      invalid_operator : boolean;
	         operator : char;
	         number1, number2, result : real;
	begin
	         invalid_operator := FALSE;
	         writeln('Introduisez deux nombres et un operateur selon le format');
	         writeln(' nombre1 operateur nombre2');
	         readln(number1); readln(operator); readln(number2);
	         if operator = '*' then result := number1 * number2
	         else if operator = '/' then result := number1 / number2
	         else if operator = '+' then result := number1 + number2
	         else if operator = '-' then result := number1 - number2
	         else invalid_operator := TRUE;

	         if invalid_operator then
	            writeln('Operateur non valide')
	         else
        	    writeln(number1:4:2,' ', operator,' ', number2:4:2,' égale '
	                    ,result:5:2)
	end.

Cliquez ici pour afficher la réponse
Copyright B Brown/P Henry/CIT, 1988-1995. Tous droits réservés.
Copyright UCL/INGI, 1995. Tous droits réservés
URL: http://candix1.fsa.ucl.ac.be/langages/Pascal/tutoriel/pas026.htm