Initiation à la programmation Java

Cours initiation à la programmation Java, tutoriel & guide de travaux pratiques en pdf.

Structures itératives
Introduction

Les structures de selection que nous avons introduites dans le chapitre precedent permettent d’ecrire des programmes plus interessants et realisant des t^aches un peu plus realistes qu’au debut de notre apprentissage. Nous allons maintenant aborder un autre aspect tres important : les structures iteratives. Les instructions etudiees vont nous permettre de faire executer par le processeur plusieurs fois le m^eme morceau de programme.
Une motivation tres simple peut justier le besoin des structures iteratives : le lancement d’un programme Java est relativement long, car il faut d’abord lancer la machine virtuelle (voir le chapitre 1). Quand un programme doit interagir avec l’utilisateur, son lancement est encore plus lent, car la Console doit d’abord appara^tre (voir le chapitre 3). De ce fait, il est naturel de chercher a ne lancer qu’une seule fois un programme et de faire en sorte qu’apres avoir termine sa t^ache, celui-ci recommence depuis le debut. Cette notion de\retour au debut »se traduit informatiquement par une notion de repetition : le processeur execute plusieurs fois les m^emes instructions, en recommencant a chaque fois au debut du groupe considere.
Dans la pratique, la repetition comporte de tres nombreuses applications qui depassent largement le cadre de l’exemple qui vient d’^etre propose. Elle permet en particulier d’eectuer des calculs complexes qui sont au centre des applications pratiques de l’informatique : previsions meteorologiques, modelisation des materiaux, etc. En fait, sans repetition, l’ordinateur est quasi inutile.
Les structures qui permettent de repeter des operations portent le nom de structures iteratives.
Dans la pratique, on les designe par le nom plus commun de boucles. Nous commencerons par etudier les boucles conditionnelles, c’est-a-dire des structures permettant de repeter des operations tant qu’une condition est remplie. Nous verrons comment utiliser ces boucles pour realiser des calculs complexes qui ne pourraient pas ^etre programmes sans boucle.
Nous etudierons ensuite les boucles \non-conditionnelles », des structures qui peuvent repeter des operations un nombre donne de fois. Nous etudierons des applications naturelles de ces structures, montrant qu’elles cachent en fait une structure conditionnelle, et sont surtout utiles comme instrument de simplication des programmes.
Nous consacrerons la n du chapitre aux subtilites liees a l’utilisation des boucles, qu’elles soient algorithmiques (comme par exemple l’utilisation correcte des boucles embotees ou de l’interruption de boucle) ou plus specique a Java (les problemes de portees des variables par exemple).

Boucle conditionnelle post-testee
Exemple introductif

Comme nous l’avons indique en introduction, une premiere motivation des structures iteratives est de faire recommencer un programme au debut de son traitement, sans pour autant le relancer.
L’exemple suivant illustre une solution possible :
Exemple 5.1 :
On considere un programme elementaire qui calcule la moyenne de deux notes. En ajoutant une nouvelle instruction composee (le do while), le programme peut realiser autant de calcul qu’on le souhaite, sans avoir besoin d’^etre relance :
Moyenne
1 import dauphine.util.*;
2 public class Moyenne {
3 public static void main(String[] args) {
4 Console.start();
5 do {
6 System.out.print(« Premiere note = « );
7 double note1=Console.readDouble();
8 System.out.print(« Seconde note = « );
9 double note2=Console.readDouble();
10 System.out.println(« Moyenne = « +( (note1+note2)/2 ));
11 System.out.print(« Voulez-vous recommencer ? [o/n] « );
12 } while (Console.readChar()==’o’);
13 }
14 }
Si on fait abstraction pour l’instant des lignes 5 et 12, ce programme est assez classique.
D’ailleurs, quand on l’execute, il fonctionne tout a fait classiquement jusqu’a la ligne 11 incluse :
l’utilisateur saisit deux reels puis le programme ache la moyenne de ces nombres. Ensuite, il ache le texte de la ligne 11.
L’utilisateur peut alors saisir un caractere. S’il saisit un caractere dierent de la lettre o, le programme s’arr^ete. Par contre, s’il saisit la lettre o, le programme recommence a la ligne 6.
On obtient par exemple l’achage suivant :
Affichage
Premiere note = 12
Seconde note = 15
Moyenne = 13.5
Voulez-vous recommencez ? [o/n] o
p. 100 F. Rossi { 21 septembre 2001 (Version 2.0)

BOUCLE CONDITIONNELLE POST-TESTEE

Premiere note = 18
Seconde note = 16.5
Moyenne = 17.25
Voulez-vous recommencez ? [o/n] n
Le bloc qui commence a la ligne 5 et qui termine a la ligne 12 est donc execute une premiere fois.
Puis, si l’expression booleenne qui suit le mot cle while vaut true, le processeur recommence l’execution du bloc, etc. tant que l’expression vaut true.

L’instruction do while

Forme generale (syntaxe)
Pour repeter l’execution d’un morceau de programme, on peut utiliser l’instruction composee do while. La forme generale d’utilisation de l’instruction do while est la suivante :
do
instruction ;
while (expression de type boolean );
Dans la pratique, on conseille vivement de toujours utiliser un bloc, plut^ot qu’une seule instruction,
ce qui donne la forme suivante :
do {
instruction 1 ;

instruction n ;
} while (expression de type boolean );
Semantique
Quand il rencontre une instruction do while, le processeur l’execute de la facon suivante :
1. il commence par executer l’instruction qui suit le do (dans le cas d’un bloc, il execute toutes
les instructions du bloc, de facon classique) ;
2. il evalue l’expression qui suit le while ;
3. si l’expression vaut true, l’execution recommence en 1 ;
4. sinon, l’execution de l’instruction do while est terminee.
REMARQUE
L’instruction do while realise une boucle conditionnelle post-testee. Comme toutes les structures iteratives, c’est bien s^ur une boucle. Elle est conditionnelle car la repetition n’a lieu que si une condition est remplie. Enn elle est post-testee car l’evaluation de la condition a lieu apres l’execution de l’instruction (ou du bloc) qui se repete.
On comprend maintenant le fonctionnement du programme de l’exemple 5.1. En eet, pour evaluer l’expression de la ligne 12, a savoir Console.readChar()==’o’, le processeur doit bien entendu eectuer l’appel de methode readChar. Il doit donc attendre que l’utilisateur saisisse un caractere.
Quand cette saisie est eectuee, le caractere obtenu est compare a la lettre o. Si l’utilisateur a tape cette lettre, le processeur recommence l’execution du bloc a la ligne 6, sinon, le programme est termine.
REMARQUE
L’evaluation de l’expression du while est eectuee apres chaque execution de l’instruction (ou du bloc) qui suit le do. Dans l’exemple 5.1, cela signie qu’une saisie est eectuee apres chaque execution du bloc. Le processeur ne se souvient pas de l’evaluation precedente.
Vocabulaire
On utilise un vocabulaire assez specique quand on parle de boucle :
corps de la boucle : designe l’instruction ou le bloc qui est repete par la boucle ;
iteration : designe une execution du corps de la boucle ; tour : synonyme d’iteration.
1 Premiers programmes
2 Variables et calculs
3 Utilisation des methodes et des constantes de classe
4 Structures de selection
5 Structures iteratives
6 Denition de methodes de classe
7 Premiere approche des objets
8 Les tableaux
9 Creation d’objets
10 Graphisme

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *