[MUSIQUE] [MUSIQUE] Dans ce cours, nous avons déjà parlé des instructions dites instructions de contrôle. Ces instructions de contrôle, elles permettent de contrôler l'exécution du code qui est rédigé dans le programme. Par défaut, on rédige bien sûr le code de façon séquentielle, comme un document textuel. Par défaut, les instructions sont exécutées séquentiellement, les unes après les autres. Les instructions de contrôle, elles, elles permettent de modifier cet ordre par défaut. Et parmi les instructions de contrôle existantes, il y a l'instruction dite conditionnelle. Cette instructions conditionnelle, elle va nous permettre d'exécuter un bloc d'instructions ou de ne pas l'exécuter, ou de faire le choix entre exécuter un bloc d'instructions ou un autre bloc d'instructions. Et ce choix, il va se faire en fonction d'une condition. Cette condition va être évaluée soit à vrai, soit à faux. Et en fonction du résultat de cette évaluation, on va exécuter le bloc ou ne pas l'exécuter ; ou on va exécuter un bloc ou exécuter un autre bloc. Cette condition, elle va avoir pour but d'évaluer un contexte, une situation. Ce qu'il faut bien voir c'est différencier la rédaction du code et l'exécution du programme. La rédaction du code, elle doit prendre en compte toutes les situations. On va devoir décrire les deux situations possibles, et au moment de l'exécution, la condition va être évaluée, et en fonction de l'évaluation de cette condition, c'est à ce moment-là que sera décidé si un bloc est exécuté ou si c'est l'autre bloc. Donc le code doit prendre en compte toutes les situations. L'exécution, elle, va se modifier en fonction de l'évaluation du contexte, et en particulier en fonction de l'évaluation de la condition. Ce qui veut dire que pour deux exécutions du même programme, on n'aura pas le même déroulement puisque le contexte sera différent. On a déjà vu le schéma général d'une instruction conditionnelle avec le si. Le schéma c'est : si alors [BRUIT] [BRUIT] bloc d'instructions. Ce qui se lit : si cette condition est vraie, alors on va exécuter ce bloc d'instructions. Inversement, si la condition est fausse, alors le bloc d'instructions ne sera pas exécuté, et donc on passera directement à l'exécution de l'instruction qui suit le si alors. L'autre forme de si est si condition, alors bloc d'instructions 1, sinon bloc d'instructions 2. Ce qui se lit : si la condition est vraie, alors on exécute le bloc d'instructions 1. Sinon, c'est-à -dire si elle est fausse, on exécute le bloc d'instructions 2. Vous voyez, à la rédaction du code, on doit explicitement évoquer les deux situations possibles : ce qui se passe si la condition est vraie, ce qui va se passer si la condition est fausse. Et au moment de l'exécution, l'évaluation de la condition va donner soit la valeur vraie, soit la valeur fausse, et en fonction de cette évaluation, on exécutera soit ce bloc, soit ce bloc. Pour la même exécution, on ne pourra jamais exécuter simultanément ou à la suite les deux blocs d'instructions. Une autre façon d'exprimer ce type de situation que nous avons déjà vue sous forme d'un diagramme, [BRUIT] [BRUIT] c'est une autre formulation de l'instruction conditionnelle en algorithmique sous forme de diagramme : si la condition est vraie, alors on va exécuter une succession d'instructions, sinon on ne va pas exécuter cette branche, mais on va exécuter celle-ci avec à la suite les instructions. Ce sont les deux formulations qu'on avait déjà vues dans la partie consacrée aux algorithmes. Nous allons maintenant voir comment on exprime l'instruction conditionnelle en ce cas-là . Vous allez voir que la formulation est vraiment très proche de la formulation algorithmique. La grosse différence c'est qu'elle va se faire en anglais. [BRUIT] [BRUIT] La première formule se présente sous la forme if une condition qui sera exprimée sous la forme d'une expression booléenne, que nous verrons ultérieurement, et à la suite une expression qui peut être soit une instruction, soit un bloc d'instructions, c'est-à -dire une succession d'instructions. La deuxième formulation, [BRUIT] [BRUIT] [BRUIT] [BRUIT] if condition, expression 1, qui sera donc soit une instruction, soit un bloc d'instructions, else expression 2, qui sera, là aussi, soit une instruction, soit un bloc d'instructions. Si expression 1 ou expression 2 comportent plus d'une instruction, il est indispensable de délimiter ces instructions sous forme de blocs, et à ce moment-là de délimiter les instructions avec l'accolade ouvrante pour marquer le début du bloc, et l'accolade fermante pour marquer la fin du bloc. Ces marqueurs permettent d'identifier quel est le bloc d'instructions qui est associé au if ici ou au else ici, à l'intérieur de l'ensemble du reste du code. Regardons maintenant comment va s'exécuter le code à partir d'une instruction conditionnelle. [BRUIT] [BRUIT] On imagine qu'on a une instruction, à la suite une instruction conditionnelle, et à la suite une autre instruction. Comment va se réaliser l'exécution de ce code? L'ordre par défaut est l'exécution séquentielle. Donc on va exécuter expression 1, puis on va tester la condition. Si la condition est vraie, expression 1 sera exécutée, puis on reprend l'ordre séquentiel, et donc c'est l'instruction qui se trouve directement après l'instruction du if ou le bloc d'instructions du if qui va être exécutée, et ça sera donc expression 2. L'autre situation, on exécute expression 1, on teste la condition. Si la condition est fausse, expression 1 ne sera pas exécutée. On exécutera l'instruction qui se trouvera directement après le if, expression 2. Les deux situations possibles ici, c'est expression 01, expression 1, expression 02 ; ou expression 01, expression 02. Et vous voyez qu'on se trouve bien dans la situation d'exécuter le bloc correspondant à expression 1 ou de ne pas l'exécuter. L'autre situation avec le else. [BRUIT] [BRUIT] [BRUIT] [BRUIT] Même chose, par défaut, l'ordre séquentiel : expression 1 va être exécutée, la condition va être testée. Si elle est vraie, on exécute expression 1. Expression 2 dans ce cas-là ne sera pas exécutée, et l'exécution séquentielle reprendra après expression 1, expression 02. La deuxième situation, on exécute expression 01, on teste la condition. Si la condition est fausse, alors à ce moment-là on n'exécute pas expression 1, on exécute expression 2, puis on reprend l'ordre séquentiel d'exécution des instructions, et donc on va passer à expression 02. Par défaut, si expression 1 ou expression 2 ne contiennent qu'une instruction, on peut les écrire directement à la suite. Si expression 1 ou expression 2 contiennent plusieurs instructions, on parle alors d'un bloc d'instructions et il faudra les délimiter avec la parenthèse ouvrante, la parenthèse fermante. Et vous voyez qu'ici c'est particulièrement important puisqu'il va falloir délimiter à l'intérieur de l'intégralité du code, quel est le bloc d'instructions qui se rattache au else, et le différencier des instructions qui vont suivre le bloc d'instructions qui est rattaché au else. Dans cette vidéo, nous avons vu quelques rappels sur l'instruction conditionnelle. Nous avons vu aussi comment cette instruction conditionnelle s'exprime en ce cas-là , et nous avons vu comment cette instruction conditionnelle s'exécute dans le code du programme. [MUSIQUE] [MUSIQUE]