INF1563 Programmation I


Instructions conditionnelles (alternatives)


Les instructions conditionnelles sont des instructions qui permettent d'exécuter un ensemble d'instructions si et seulement si une certaine condition est vérifiée.


L'instruction if

instruction if

Si l'évaluation de l'expression booléenne test donne true (la valeur 'vrai'), alors l'instruction est exécutée; sinon on exécute l'instruction suivante.

Syntaxe

if ( <expression booléenne> ) <instruction>

Exemple :
if (solde >= montantPreleve)
  solde = solde - montantPreleve;

S'il y a plus qu'une instruction à exécuter, utilisez un bloc.

Exemple :
if (resultat >= 93.5) {
  etudiant.setNote("A+");
  feliciterEtudiant(etudiant);
}

L'instruction if-else

instruction if

Si l'évaluation de l'expression booléenne test donne true (la valeur 'vrai'), alors l'instruction 1 est exécutée; sinon l'expression booléenne a donné false (la valeur 'faux') et l'instruction 2 est exécutée.

Syntaxe

if ( <expression booléenne> ) <instruction> else <instruction>

Exemple :
if (solde >= montantPreleve)
  solde = solde - montantPreleve;
else
  System.out.println("Solde insuffisant.");

Instructions if-else imbriquées

Exemple :
if (personne.getAge() >= 18)
  if (personne.consommeAlcool())
    personne.offrir("bière");
  else
    personne.offrir("thé");
else
  personne.offrir("jus");
Attention

Le code suivant :

if (cond1)
  if (cond2)
    instr1;
else
  instr2;
est interprété comme suit :
if (cond1) {
  if (cond2) {
    instr1;
  }
  else {
    instr2;
  }
}

L'instruction switch

L'instruction switch, appelée aussi une instruction de sélection multiple, permet de faire plusieurs tests sur la valeur d'une même expression.

Syntaxe

switch (<expression de type int ou String>) {
  case <constante> : <instruction>; break;
  case <constante> : <instruction>; break;
  case <constante> : <instruction>; break;
          ...
  case <constante> : <instruction>; break;
  default : <instruction>;
}

Sémantique

Exemple
public static void imprimerMois(int mois){
  switch (mois) {
    case 1:  System.out.println("Janvier"); break;
    case 2:  System.out.println("Février"); break;
    case 3:  System.out.println("Mars"); break;
    case 4:  System.out.println("Avril"); break;
    case 5:  System.out.println("Mai"); break;
    case 6:  System.out.println("Juin"); break;
    case 7:  System.out.println("Juillet"); break;
    case 8:  System.out.println("Août"); break;
    case 9:  System.out.println("Septembre"); break;
    case 10: System.out.println("Octobre"); break;
    case 11: System.out.println("Novembre"); break;
    case 12: System.out.println("Décembre"); break;
    default: System.out.println("Mois invalide."); break;
  }
}
Exemple :
public String eliminerAccents(String s){
  char tab[] = s.toCharArray();
  for (int i = 0; i<tab.length; i++){
    switch (tab[i]){
      case 'à' :
      case 'â' :
        tab[i] = 'a';
        break;
      case 'ç' :
        tab[i] = 'c';
        break;
      case 'é' :
      case 'ê' :
      case 'è' :
      case 'ë' :
        tab[i] = 'e';
        break;
      case 'î' :
      case 'ï' :
        tab[i] = 'i';
        break;
      case 'ô' :
        tab[i] = 'o';
        break;
      case 'ù' :
      case 'û' :
      case 'ü' :
        tab[i] = 'u';
        break;
      default :
    }
  }
  return new String(tab);
}

Remarques

Comparons le dernier code avec le code suivant :

if (tab[i] == 'à' || tab[i] == 'â')
  tab[i] = 'a';
else if (tab[i] == 'ç')
  tab[i] = 'c';
else if (tab[i] == 'é' || tab[i] == 'è' || tab[i] == 'ê' || tab[i] == 'ë')
  tab[i] = 'e';
else
  ... ;