Vous êtes sur la page 1sur 3

Haute École de Bruxelles Marco Codutti (MCD)

École Supérieure d’Informatique 11 juin 2013


Bachelor
. en Informatique .

.' $
Cours de Java – 1ère
Examen oral
Carnet d’étude
Ce qu’il faudrait nous dire. . . ou pas !
& %

Résumé
Ce document reprend ce qu’on attend que vous (les étudiants) nous disiez
lors de l’examen oral du langage Java. Nous avons pris un mot comme exemple,
le for. Bien sûr, apprendre ce texte par cœur ne suffit pas ; il faut encore montrer
que vous comprenez ce que vous racontez.

1 for
Remarque :
Comme il
Le mot for est un mot réservé du langage qui sert à définir des boucles (à priori existe égale-
ment le mot
quand on connait le nombre d’itérations ; sinon il y a le while). Il existe en deux foreach nous
variantes : le for classique et le foreach ne traiterons
ici que du for
Dans son utilisation la plus courante, il sert à coder le pour vu en logique mais il classique.
est plus général.

1.1 Utilisation courante

Un exemple classique effectue une boucle pour i prenant les valeurs de 0 à 9.


 
1 for( int i=0; i<10; i++) {
2 ...
3 }
 

1.2 Utilisation avancée

La grammaire du for est :

BasicForStatement :
for ( ForInit (opt) ; Expression(opt) ; ForUpdate(opt) )
Statement

Examinons chacune des trois parties (toutes facultatives) dans la parenthèse

Ce document est distribué sous licence Creative Commons Paternité - Partage à l’Identique 2.0 Belgique
(http://creativecommons.org/licenses/by-sa/2.0/be/).
Les autorisations au-delà du champ de cette licence peuvent être obtenues à http://www.heb.be/esi - mcodutti@heb.be.
ForInit

Cette partie qui a pour but d’initialiser la boucle est facultative (pas d’initialisation
si elle est absent). La grammaire (non reprise ici) nous apprend qu’il y a deux
possibilités pour cette partie.
– Une déclaration de variable locale. C’est à cette catégorie qu’appartient l’exemple
courant. On peut aussi imaginer qu’on déclare plusieurs variables.
– Une liste d’expression instructions. C’est à cette catégorie qu’appartiennent des
exemples comme i=0 (liste d’un seul élément) ou i=0,j=n. Mais on pourrait aussi
imaginer des exemples plus tordus comme brol() ou i++.

Expression

La grammaire nous apprend qu’il s’agit d’une expression quelconque. La sémantique


ajoute qu’elle doit être de type boolean.
Si elle est omise, on considère que le test est vrai ce qui induit une boucle infinie (à
moins d’un break ou d’un return dans le corps de la boucle).

ForUpdate

Cette partie a pour but de mettre à jour les indices avant de tester à nouveau la
condition. La grammaire (non reprise ici) nous apprend qu’on peut y trouver une
liste d’expressions instructions (comme le second cas de la partie ForInit). Les mêmes
exemples sont donc valides. Si elle est omise, pas de mise à jour.

1.3 Un exemple récapitulatif

Imaginons une partie de code qui inverse les éléments d’un tableau (le 1er élément
échange sa place avec le dernier et ainsi de suite. . .) En Java, on pourrait écrire :
 
1 for(int i=0, j=tab.length−1; i<j; i++,j−−) {
2 int t = tab[i ];
3 tab[ i ] = tab[j ];
4 tab[ j ] = t;
5 }
 

1.4 Compléments

On pourrait vouloir pousser plus loin et vous demander par exemple


Expliquer via la grammaire pourquoi on met des accolades lorsqu’il y a
plusieurs instructions dans la boucle.
La grammaire indique qu’il n’y a qu’une seule instruction dans la boucle. Mais si on
examine ce qu’est une instruction dans la grammaire, on trouve, dans la liste des
possibilités, le block.

LGJ1 – Examen oral – page 2


Un block est une suite d’instructions entre accolades qui a donc le statut d’instruction
unique. Ce qui permet de le retrouver comme corps du for tout en respectant la
grammaire qui impose une seule instruction.
Est-ce que tout for peut s’écrire avec un while, et vice-versa ?
Bien sûr ! Dans un sens on a
 
1 for( init ; cond; update) { init
2 instructions while(cond) {
3 } instructions
4 update
5 }
 

et, dans l’autre


 
1 while(cond) { for(:cond;) {
2 instructions instructions
3 } }
 

LGJ1 – Examen oral – page 3

Vous aimerez peut-être aussi