![]() |
guill.net
-
La page des réseaux
|
![]() ![]() |
La boucle Pour
C'est la structure que l'on
utilise lorsqu'on veut répéter
plusieurs instructions
un nombre connu de fois.
Reprenons l'exemple des
voitures... Plutôt que de demander à l'utilisateur de donner
un nombre, il serait préférable de lui écrire directement
à l'écran toutes les informations sur toutes ses voitures!
On peut le faire avec une boucle Pour : on connait le nombre de voitures, c'est 10...
Dans les variables
compteur : entier
Dans le programme :
Pour
compteur de 1 à
10 Répeter
Ecrire ( " Marque ", Voiture[compteur].Marque )
Ecrire
( "Modèle"...)
Si ContôleTechnique
Alors
...
FinSi
Fin
Pour
Dans ce programme, on rentre dans la boucle, compteur = 1. On écrit donc les informations relatives à la voiture numéro 1. Ensuite, on répète les instructions et compteur = 2. On va donc afficher les informations concernant la voiture numéro 2 et ainsi de suite, 10 fois!
La boucle Tant Que
Le principe est le même,
il s'agit de répéter plusieurs instructions mais un nombre
inconnu de fois.
Supposons que l'on fasse
un programme pour faire des additions, mais on veut pouvoir faire plusieurs
additions à la suite. Cela donne :
Tant que l'utilisateur écrira "y", il pourra refaire une autre addition. On ne sais pas combien d'addition il fera : on utilise une boucle Tant Que.
Notons quand-même qu'on
n'est pas obligé de rentrer dans la boucle : si l'utilisateur répond
autre chose que "y" la première fois, on n'exécute pas ce
qu'il y a dans la boucle...
La boucle Répéter - Jusqu'à
C'est le même principe
que la boucle Tant Que, c'est à dire qu'on ne sais pas combien
de fois on va répéter ce qu'il y a dedans. Pourtant la
différence réside dans le fait qu'on exécute au moins
une fois.
Cela donne :
Ici, on est obligé de faire au moins une addition...
Et on sort de la boucle si
EncoreUneAddition
est différent de "y".
La structure Selon
La structure Selon est assez
simple à comprendre. Elle permet de faire quelque chose en fonction
de la valeur d'une variable.
Imaginons une variable Note
comprise entre 0 et 20.
En fonction de la note,
on peut écrire un commentaire différent.
Cela donne
Selon
Note
0..6
: Ecrire ( "C'est nul!" )
7..9
: Ecrire ( "Bof" )
10 :
Ecrire ( "C'est la moyenne" )
11..15
: Ecrire ( "Bien" )
16..20
: Ecrire ( "Excellent" )
Default
: Ecrire ( "La note n'est pas entre 0 et 20" )
Fin
Selon
NB : Default est utilisé
si aucune valeur ne correspond à la variable...
Il est maintenant temps
de passer à une autre partie : les fonctions et les procédures...
Fonctions et Procédures
Dans l'exemple du langage structuré, on avait définit des actions avant le programme principal.
C'est le but des fonctions
et des procédures.
La différence entre
une fonction et une procédure est la suivante : une fonction
renvoie une valeur alors qu'une procédure est un bout de programme.
Explication par l'exemple
:
Les
variables définies dans la fonction ou la procédure sont
appelées variables locales.
Elles n'existent que lorsque
l'on entre dans la fonction ou procédure et sont détruites
losqu'on en sort. On peut évidemment utiliser les variables globales
dans les fonctions et procédures...
NB : Les variables globales sont celles qui sont déclarées au début du programme.
Il faut que je vous explique
qu'on peut aussi mettre des paramètres à des fonctions ou
des procédures...
Exemple : on veut écrire
une fonction qui fait la somme de n'importe quel nombre a et b.
On peut définir une
fonction comme suit :
fonction
Somme (variables a, b : entiers)
debut
renvoyer ( a + b )
fin
fin
fonction
Ainsi, dans le programme,
la valeur de Somme (5,7) sera 12,la valeur de Somme (Nombre1,Nombre2) sera
Nombre1 + Nombre2... et on peut utiliser la fonction Somme autant de fois
que l'on veut.
Exemple général sur tout ce qu'on a vu
On va faire un programme
pour un professeur qui veut classer ses éleves. Dans le type élève,
il y aura le nom de l'élève et sa note.
Le professeur rentrera les
élèves et leur note les uns après les autres, et le
programme écrira à l'écran la liste des élèves
et leur note, mais de la meilleure note à la plus mauvaise.
On sait simplement que le
nombre d'élève est inférieur à 100.
Commencez par lire le programme
pricipal, et seulement après les fonctions et les procédures.
Allons-y...
Au
début, il n'y a pas d'élèves, TotalElèves =
0.
Ensuite, jusqu'à ce
qu'il n'y ait plus d'élève, on remplit une ligne du vecteur
et on augmente de 1 le total des élèves.
A la fin de la boucle, le
vecteur est rempli avec les élèves et leur note, et on sait
qu'il y a TotalEleves élèves et donc lignes remplies.
Ensuite, on répète
autant de fois qu'il y a d'élève : TrouverElèveSuivant,
qui doit être une fonction qui revoit la ligne de l'élève
suivant à afficher à l'écran, et on écrit à
l'écran le nom et la note de l'élève. Et voilà...
pour le programme principal.
Maintenant, on va voir ce
qu'il y a dans la procédure MettreElèveDansVecteur
Dans
le champ DéjàAffiché d'Elève, on écrit
Faux. C'est normal, on n'a encore rien affiché. Cette variable servira
plus tard...
Dans le programe principal,
on augmente TotalElèves de 1 ( on dit incrémenter ) à
chaque passage dans la boucle Jusqu'à. Par conséquent, chaque
fois qu'on appelle la procédure, on remplit la ligne qui suit celle
qui a été remplie avant.
Ensuite, on demande si il y a encore un élève après celui-là et on met la réponse dans EncoreUnEleve?.
Il ne reste plus que la fonction, c'est sans doute le plus difficile...
Le but de la fonction est
de renvoyer l'élève ayant la note la plus haute et
n'ayant pas encore été affiché.
On regarde donc à
chaque fois tous les élèves. Si l'élève a déjà
été affiché, on ne s'en occupe pas et on passe au
suivant. Si il n'a pas été affiché, on regarde si
sa note est supérieure à la plus grande note qu'on a trouvé
jusque là. Si ce n'est pas le cas, on passe à l'élève
suivant, sinon, on dit qu'il a la note la plus haute qu'on ait trouvée
jusque là et on retient son numéro de ligne.
A la sortie de la boucle,
on se retrouve avec le numéro de ligne de celui qui à la
note la plus haute : il ne reste plus qu'à marquer qu'il a déjà
été affiché et à renvoyer son numéro
de ligne!
Lisez bien ce programme...
Si vous comprenez tout, alors je n'ai presque plus rien à dire!
Sinon, essayez de prendre
un papier et un crayon et de marquer chaque variable et la valeur qu'elle
a. Mettez-vous à la place de l'ordinateur et exécutez le
programme à la main. Comme ça, vous verrez comment ça
marche!
Je vous propose quand même
de faire ensemble un autre programme...
D'accord? Toujours
là? Vous avez toujours envie de programmer?
Alors passez à la
suite!