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
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