[MUSIQUE] [MUSIQUE] Nous allons voir maintenant quelques exemples de mise en pratique de l'instruction conditionnelle if ou if else en fonction de la situation. On va considérer une situation dans laquelle on veut déterminer le prix d'un billet de concert pour un client en fonction de son âge. On va considérer que le prix sera de 80 francs pour les clients qui ont entre 20 et 60 ans et qu'il sera de 60 francs sinon, c'est-à -dire pour les clients qui ont moins de 20 ans ou pour les clients qui ont plus de 60 ans. On voit que le prix va dépendre d'une situation, donc intuitivement on comprend qu'on va avoir besoin d'utiliser un si et un if. La première chose à faire, ça va être de déterminer la condition qui va permettre de déterminer dans quel contexte on se trouve. Idéalement, la situation pourrait se présenter sous cette forme-là . L'âge doit être compris entre 20 et 60, plus grand que 20, plus petit que 60. Malheureusement, ce type de formulation, de condition n'est pas possible en Scala. On va être obligé de décomposer, c'est-à -dire d'une part de tester que âge est plus grand que 20 et d'autre part que âge est plus petit que 60. Cette formulation n'est pas possible. La formulation correcte va être d'une part de tester si âge est plus grand que 20, d'autre part de tester que âge est plus petit que 60. Et donc on veut que le client, pour avoir le prix normal, 80 francs, il faut qu'il respecte ces deux conditions, c'est-à -dire qu'il ait à la fois un âge supérieur à 20 et un âge inférieur à 60. On va combiner les deux expressions avec l'opérateur et. Et donc, on va se retrouver avec un test, une condition qui va s'exprimer sous la forme : if âge plus grand que 20 et âge plus petit que 60, dans ce cas la variable prix va prendre la valeur 80. Sinon on est dans l'autre situation, puisqu'on n'a que deux situations possibles, donc le else va correspondre à l'autre situation, et pour l'autre situation, le prix va être égal à 60. On imagine évidemment qu'on a déjà déclaré la variable âge et la variable prix et que j'ai juste écrit le fragment de code qui correspond au if else. À la fin de l'exécution de ce if else, la variable prix contiendra la valeur qui correspond au prix du client en fonction de la valeur de son âge. Le if else n'est pas systématiquement nécessaire. On peut aussi utiliser simplement le if, en fonction de la situation. Et on peut d'ailleurs formuler une autre solution à ce problème en utilisant simplement un if, en considérant par exemple que par défaut, le prix va valoir 60 francs, et qu'on ne va le modifier que si on se trouve dans la situation où le prix doit être changé à 80 francs. Dans Scala, comment va-t-on procéder? On va, au moment de la déclaration de la variable prix, lui attribuer la valeur 60. Puis, on va tester ici la même condition. [AUDIO_VIDE] [AUDIO_VIDE] Au moment de la déclaration, la variable prix va valoir 60. Si on est dans la condition où le prix doit être modifié, passer de 60 à 80, le prix sera modifié, sinon, si on n'est pas dans cette condition, il n'y a rien à faire puisque la variable prix a déjà la valeur qu'elle doit avoir. À la fin de l'exécution de ce if, on va se trouver avec la variable prix qui contiendra la valeur qui correspondra à la situation en fonction de l'âge du client. Ces deux solutions sont équivalentes. Elles donnent le même résultat. Ça vous permet aussi de voir que pour un même problème, on peut avoir plusieurs formulations de solutions différentes, mais qui arrivent cependant au même résultat. Nous pouvons envisager encore une troisième solution qui va donner le même résultat mais qui va considérer la situation d'un autre point de vue. On va pouvoir par exemple, plutôt que de considérer la condition qui nous permet d'obtenir le tarif standard, identifier la condition qui nous permet de déterminer le prix, le tarif réduit. Dans quelle situation va-t-on se trouver? Il faut que l'âge soit inférieur à 20 ou l'âge soit supérieur à 60. On pourra ici même identifier inférieur ou égal ou supérieur ou égal. Et comment allons-nous connecter les deux expressions booléennes? Il suffit d'avoir soit l'âge inférieur à 20, soit l'âge supérieur à 60. De toute façon, il n'est pas possible d'avoir les deux en même temps. On ne peut pas avoir et moins de 20 ans et plus de 60 ans. Ici, notre expression sera combinée avec le ou, donc je peux réutiliser mon instruction if. Cette fois-ci, la situation qui va correspondre à cette condition est vraie, ça va s'inverser par rapport à la solution précédente. Dans Scala, le prix est le prix réduit, sinon le prix est le prix normal. Vous voyez qu'on vient de construire une troisième solution. Cette troisième solution donne le même résultat : à la fin, la variable prix contient le prix qui correspond à l'âge du client. Aucune de ces trois solutions n'est meilleure que les autres. Ces trois solutions sont équivalentes. À vous de choisir en fonction de votre façon d'analyser et d'approcher la problématique laquelle de ces trois solutions vous paraît la plus naturelle à utiliser. [MUSIQUE] [MUSIQUE]