Le langage Java
Structures de contrôle
Les structures de contrôle 1
Le langage Java
Notion de structure de contrôle
Jusqu’ici, dans un programme,
Les instructions sont exécutées séquentiellement (dans l’ordre où elles apparaissent).
Les instructions opèrent sur les données (les valeurs des variables) grâce à des opérateurs
Les structures de contrôle permettent aux données, à leur tour, d’influencer les traitements
Il y a 3 structures de contrôle:
les branchements conditionnels
les itérations
les boucles conditionnelles
Les structures de contrôle 2
Le langage Java
Branchement conditionnel
Démo : Exécution pas à pas, branchement conditionnel ou structure alternative
1 Structure alternative réduite 2 Structure alternative complète
La notion de bloc – séquence d’instruction représentant une entité
Lorsque l'on veut regrouper plusieurs instructions, nous devons créer ce que l'on appelle un bloc, c'est-à-dire un
ensemble d'instructions compris entre les accolades { et }.
Quand un bloc contient une seule instruction, il n'est pas obligatoire d'utiliser des accolades (déconseillé).
Les structures de contrôle 3
Le langage Java
Exercice - Structure de Choix imbriqués
Exemples :
x = 1, y = 1, z = 1
x = 1, y = 1, z = 2
x = 1, y = 2, z = 1
x = 1, y = 2, z = 2
x = 1, y = 2, z = 3
INTRODUCTION 4
Le langage Java
Les conditions simples
Une condition est toujours entourée de parenthèses.
Une condition simple compare deux expressions grâce un opérateur de comparaison
Une condition est un cas particulier d'expression, qui ne peut prendre que deux valeurs.
En Java, ces valeurs se notent true et false.
Opérateurs de comparaison
Opérateur de comparaison Signification
< inférieur à
> supérieur à
== égal à
<= inférieur ou égal à
>= supérieur ou égal à
!= différent de
INTRODUCTION 5
Le langage Java
Exercice - Qu’affichent les séquences d’instructions suivantes ?
INTRODUCTION 6
Le langage Java
Les opérateurs logiques
Les opérateurs logiques permettent de relier des conditions
simples et ainsi créer des conditions composées (complexes).
L'opérateur logique ET : (a < b) && (c < d)
=> est vraie uniquement si les deux conditions (a < b) et (c < d) sont toutes les deux vraies.
Exercice : donner les résultats de l’exécution de la séquence suivante pour n ayant comme valeur 0, 4, 8, 10 et 12.
L'opérateur logique OU : (a < b) || (c < d)
=> est vraie si au moins une des deux conditions (a < b) ou (c < d) est vraie.
INTRODUCTION 7
Le langage Java
Exercice : donner le résultat de l’exécution de la séquence suivante pour n et m ayant comme valeur :
(-1,-1), (-1,1), (0,0) et (1,1)
L'opérateur logique NON : !(a < b)
=> est vraie si (a < b) est fausse, et fausse si (a < b) est vraie.
Note : opérateur Non est un opérateur unaire, il n’attend qu’un seul opérande.
INTRODUCTION 8
Le langage Java
Quelques erreurs classiques
1. Le test d'égalité s'écrit ==, et pas =
2.
3.
a vaut 1 est toujours affiché quelle que soit la valeur de a!
Le point-virgule est considéré comme une instruction, qui ne fait rien.
4. Ne pas oublier les accolades, l'indentation ne suffit pas:
INTRODUCTION 9
Le langage Java
Quiz
Qu’affiche ce programme quand l’utilisateur saisit 1 et 2 ?
Qu’affiche ce programme quand l’utilisateur entre 1 et 3 ?
Qu’affiche ce programme quand l’utilisateur entre 2 et 1 ?
INTRODUCTION 10
Le langage Java
Itération – concept
Imaginons que l’on veuille affiche la table de multiplication de 5.
=> il faut utiliser une boucle for pour éviter cette répétition.
La variable i prend ici les valeurs de 1 à 10.
INTRODUCTION 11
Le langage Java
Itération – la boucle for
Une boucle for permet de répéter un nombre donné de fois la même séquence d'instructions (bloc).
On utilise une variable de contrôle d’itération caractérisée par sa valeur initiale, sa valeur finale, son pas de
variation.
Elles sont utilisées quand le nombre de répétitions est connu avant d'entrer dans la boucle.
Note : Dans cette forme, La durée de vie de la variable d’itération i est la boucle.
INTRODUCTION 12
Le langage Java
Syntaxe de l'instruction for
Exercice : Que s'affiche-t-il quand on exécute le
programme ?
INTRODUCTION 13
Le langage Java
Exemples d'autres formes de boucles for
=> la variable p prendra les valeurs de 0, 2, 4, 6, 8 (p += 2 est équivalent à p = p + 2)
=> la variable k prendra les valeurs 10, 9, 8 … jusqu’à 1
=> la condition est toujours vraie (du moins dans le principe). La boucle est répétée indéfiniment
INTRODUCTION 14
Le langage Java
Boucles infinies et erreur classiques
1. On s'est trompé sur la condition:
2. On s'est trompé sur l'incrémentation:
3. Pas de point-virgule (;) à la fin de l'instruction for
4. Attention aux accolades
INTRODUCTION 15
Le langage Java
Exemple : moyenne de 4 notes
Programme équivalent
avec la boucle for
Exercice : Comment modifier le code pour laisser l'utilisateur choisir le nombre de notes ?
INTRODUCTION 16
Le langage Java
Boucles imbriquées
Reprenons l'exemple précédent de la table de multiplication par 5:
Affiche 9 fois la table de multiplication par 5
Affiche la table de multiplication par 1, puis par 2, jusque 10.
INTRODUCTION 17
Le langage Java
Programme complet
INTRODUCTION 18
Le langage Java
Quiz
Que s'affiche-t-il quand on exécute les séquences de code suivantes :
INTRODUCTION 19
Le langage Java
Les boucles conditionnelles - concept
Elles sont utilisées quand le nombre de répétitions est inconnu avant d'entrer dans la boucle,
Les boucles conditionnelles permettent de répéter une séquence d’instruction définit par un bloc
L’itération se fera par une condition.
Tant que la condition est vraie nous itérons.
INTRODUCTION 20
Le langage Java
Les structures do…while et while
Deux structures de boucle conditionnelle
Syntaxes
Le bloc d’instructions de la structure do…while sont toujours exécutées au moins une fois.
Pour la structure while, la condition est testée avant d’entrer dans la boucle (le bloc peut ne jamais être exécuté).
La condition peut utiliser des opérateurs logiques.
Les parenthèses autour de la condition sont obligatoires.
Si la condition ne devient jamais fausse, les instructions dans la boucle sont répétées indéfiniment !
Forcer l’utilisateur à saisir un nombre de note supérieur à 0
INTRODUCTION 21
Le langage Java
L’instruction do…while
Exercice : Que s'affiche-t-il quand on exécute les séquences d’instructions suivantes?
INTRODUCTION 22
Le langage Java
Quelques erreurs classiques
Il n'y a pas de ; à la fin de la condition du while
En revanche, il y a un point-virgule à la fin du do..while:
INTRODUCTION 23
Le langage Java
Programme complet
INTRODUCTION 24
Le langage Java
Choix boucle for/while/do…while
Utiliser la boucle for quand le nombre d'itérations (de répétitions) est connu avant d'entrer dans la boucle :
Sinon, utiliser une structure boucle conditionnelle
Utiliser la boucle do…while quand les instructions doivent être effectuées au moins une fois
Sinon, utiliser la forme while
Démo : Améliorer le programme « lire le nombre de note » avertir l’utilisateur de saisie erroné & ne pas
dupliquer le test (nombre_de_notes <= 0)
INTRODUCTION 25
Le langage Java
Comment trouver la condition ?
Exemple :
Comment forcer l'utilisateur à entrer une note supérieure à 0 et inférieur ou égal à 10 ?
On veut répéter la boucle tant que le nombre de notes est incorrect
Le nombre de notes est incorrect s’il est inférieur ou égal à 0 ou si il est supérieur à 10,
Etude de cas : Le nombre mystère
INTRODUCTION 26
Le langage Java
Les blocs
En Java, les instructions peuvent être regroupées en blocs.
Les blocs sont identifiés par des délimiteurs de début et de fin : { et }
Ils peuvent contenir leurs propres déclarations et initialisation de variables:
Notion de portée
Les variables déclarées à l'intérieur d'un bloc sont appelées variables locales (au bloc).
Elles ne sont accessibles qu'à l'intérieur du bloc.
Les variables déclarées en dehors de tout bloc (même du bloc main(){}) sont appelées variables globales (au
programme). Elles sont accessibles dans l'ensemble du programme. A EVITER
La portée d'une variable, c'est l'ensemble des lignes de code où cette variable est accessible, autrement dit où elle
est définie, existe, a un sens donc un espace mémoire réservé.
INTRODUCTION 27
Le langage Java
Bonne pratique : Déclarer les variables au plus près de leur utilisation
Exemple :
plutôt que
Règles de résolution de portée
En cas d'ambiguïté, c'est-à-dire quand plusieurs variables de portées différentes portent le même nom:
la variable « la plus proche » est choisie (en terme de bloc)
Portée : cas des itérations
La déclaration d'une variable à l'intérieur d'une itération est une déclaration locale au bloc de la boucle, et aux deux
instructions de test et d'incrément.
INTRODUCTION 28