Vous êtes sur la page 1sur 13

Lorsque vous arriverez au branchement sur la route, prenez-le.

- Yogi Berra

ITI 1520 Section 5: Branchements


Objectifs: Diagrammes pour modles logiciels Instruction de branchement Traage dun branchement et traduction en Java Expressions Boolennes complexes
139

Note historique
1945 : Un insecte coinc dans les circuits bloque le fonctionnement du calculateur Mark I. Linformaticienne Grace Murray Hopper dcide alors que tout ce qui arrte le bon fonctionnement d'un programme s'appellera bug ! 1951 : Invention du premier compilateur (A0) pour gnrer un programme binaire partir du code source dun programme Elle sera l'une des principales cratrices de lun des premiers langages de programmation: COBOL.

140

Instruction de branchement
Jusquici, les modules de nos algorithmes ont contenu: une instruction simple une squence dinstructions simples Nous avons souvent besoin de structures plus complexes dans nos solutions, par exemple lorsque des calculs diffrents dpendent de certaines conditions. Exemple: trouver la valeur absolue dun nombre x Instruction de branchement (condition)!
141

Problme: Nombre le plus grand


crivez un algorithme qui retourne la plus grande valeur entre deux nombres donns.
DONNES: RSULTAT: EN-TTE: x, y (deux nombres) m (maximum entre x et y) m max2( x, y )

Nous reprsenterons la solution avec une instruction de branchement

142

Instruction de branchement

Test?

faux

vrai

Les botes pointilles sont des BLOCS DINSTRUCTIONS. Notez que linstruction de branchement est complexe et contient plusieurs autres instructions dans les blocs dinstructions Reprsentation graphique des modles logiciels! 143

Diagrammes de modles logiciels


Permet une description visuelle des algorithmes. Compos de nuds connects par des flches. Nud de test: Reprsente la vrification dune condition (expression Boolenne, avec point dinterrogation).
Test?

Nud de bloc dinstruction: Indique o un autre bloc dinstruction peut tre insr. Ce bloc peut contenir des instructions simples ou complexes (et mme aucune instruction)
Bloc

144

Contenu dun bloc dinstruction


Instruction simple (invocation, affectation) Instruction vide ( = ne rien faire) Instruction de branchement Instruction de rptition/boucle ( venir)

Important: Chaque bloc a exactement une entre (une flche entrante) et une sortie (une flche sortante).

145

Exercice 5-1 - De retour au problme du plus grand nombre


Comment crire lalgorithme trouvant le maximum (m) entre deux valeur (x et y) dans notre modle logiciel?

146

Exercice 5-2 - Maximum entre 3 nombres


Trouvez le maximum entre trois nombres donns x, y, et x. Version 1: avec tests imbriques Version 2: squence de tests

147

Traduction de branchements au Java

Test?

faux bloc1

vrai bloc2

Java :
if (Test) { // Instructions } else { // Instructions }

Bloc dinstruction 2 Bloc dinstruction 1

148

Linstruction if de Java une option


La partie else de linstruction est optionnelle. Donc dans les algorithmes utilisez le bloc vide dans la branche fausse dun branchement.
if (test) { // Instructions } else { // Instructions }

faux

Test?

vrai block2

if (test) { // Instructions }
149

Exercice 5-3 Traduction de branchements 1


Donnes: Rsultat: En-tte: x, y, z (trois nombres) m (la plus grande des donnes) m max3(x, y, z)

Deux solutions: squence dinstructions de branchement instructions de branchement imbriques Traduisez-les en Java:

150

Solution avec branchements imbriqus

faux faux

x>y?
faux

vrai

y>z?

vrai

x>z?

vrai

mz

my

mz

Mx

151

Exercice 5-4 Traduction branchements imbriqus

152

Exemple dun bloc dinstruction avec instruction de branchement


b 0
a 0

faux faux

x>0?

vrai

y>x?

vrai

a4 b 0

b a + 1

a 5

153

Exercice 5-5 Traduction dun bloc dinstruction

154

Traage dalgorithmes avec branchements


Lors du traage dalgorithmes avec tests (branchements ou boucles):
Numrotez les tests et les instructions. Ajoutez une ligne pour les conditions values ainsi que le rsultat de lvaluation (vrai ou faux ). Indiquez uniquement les instructions excutes dans la trace.

155

Exercice 5-6 - Trace du problme maximum de trois nombres, version 2


Trace: max3(5, 11, 8)

156

Exercice 5-7 - Billet de cinma


crivez un algorithme pour calculer le prix d'un billet pour une personne lorsque le cot est de: 7$ pour les personnes de 16 ans ou moins, 5$ pour celles de 65 ans ou plus, et 10$ pour les autres Version 1: tests imbriqus Version 2: squence de tests

157

Variables Boolennes
Une variable Boolenne ne peut avoir que 2 valeurs possibles: VRAI ou FAUX En ralit reprsent par deux valeurs (ex: 0 et 1) mais dans le langage de programmation seulement ces deux mots clefs sont permis! Les affectations de valeurs peuvent tre utilises x VRAI y FAUX

Le rsultat dun test (expression Boolenne) peut aussi tre affect une variable Boolenne: x (a < 0)

158

10

Exercice 5-8 - Valeur positive


crivez un algorithme qui vrifie si un nombre donn x est strictement positif.

DONNE: RSULTAT: EN-TTE: MODULE

159

Expressions Boolennes composes


Une expression Boolenne compose (aussi appele condition multiple) contient deux ou plusieurs expressions Boolennes simples connectes par des oprateurs logiques (ET/AND et OU/OR). Exercice 5-9 - Construisez une expression Boolenne qui retourne vrai si un ge donn est entre 16 et 65 (16 et 65 exclus) et faux autrement.

160

11

Tables de vrit
Une table de vrit pour une expression Boolenne compose montre les rsultats pour toute les combinaisons de valeurs possibles:
x VRAI VRAI FAUX FAUX y VRAI FAUX VRAI FAUX x ET y x OU y

161

Oprateur NON (NOT)


x VRAI NON x FAUX

FAUX

VRAI

NON est un oprateur servant trouver le complment dune valeur simple ou dune expression Boolenne complexe: Exemple. Si ge = 15, alors: Lexpression ge > 16 sera value FAUX, et NON (ge > 16) aura comme valeur VRAI. Lexpression ge < 65 sera value VRAI, et NON (ge < 65) aura comme valeur FAUX.

162

12

Exercice 5-10 Encore des expressions Boolennes complexes


Supposons que x = 5 et que y = 10.
Expression
(x > 0) ET (NON y = 0) (x > 0) ET ((x < y) OU (y = 0) (NON x > 0) OU ((x < y) ET (y = 0)) NON ((x > 0) OU ((x < y) ET (y = 0)))

Valeur

163

Expressions dans les tests


Le TEST dans un branchement ou une boucle peut tre nimporte quelle expression Boolenne: Variable Boolenne Ngation dune variable Boolenne NON (Java: ! ) Comparaison entre deux valeurs de types compatibles Oprateurs Java: == != < > <= >= Les donnes compares ne sont pas ncessairement des boolean, mais le rsultat de la comparaison est boolean Expressions Boolennes composes ET (Java: && ) OU (Java: || ) ATTENTION Ne pas confondre = avec == Ne pas confondre ET avec OU ex: tester si X est dans lintervalle 12..20: X >= 12 && X <= 20
164

13