Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 18-02-2016 14:48:01

sabrine
Invité

structures répétitives ( les boucles ) !

Bonjour , bref je n'arrive toujours pas a comprendre les Boucles ( pour , tant que ) , et surtout les exercices dont il y'a les étoiles ( en pyramide ..)
SVP j'ai besoin d'un site ou quelqu'un pour m'expliquer cette structure , je n'ai vraiment besoin mercii d'avance !

#2 18-02-2016 15:30:45

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 948

Re : structures répétitives ( les boucles ) !

Bonjour,

D'abord la notion de boucle...
Une boucle est uns structure qui doit être employée pour effectuer un travail répétitif, (presque toujours le même).
Par exemple compter de 15 en 15 à partir d'un nombre donné (par ex. 15)
On part d'une variable nb (par ex) qu'on initialise à 17 (par ex)
Sans boucle, tu écrirais.
nb = 17
Ajouter 15 à  nb
Ajouter 15 à  nb
Ajouter 15 à nb
...........
Ajouter 15 à  nbre.
Si tu le fais 50 fois, tu vas te fatiguer d'écrire 50 fois :
nb PREND LA VALEUR nb+15...
Donc, la boucle va faire ce travail à ta place 50 fois de suite si tu le lui demandes gentiment :
S'il te plaît,
Ajoute-moi 50 fois de suite 15 au nombre 17...
Ça va plus vite, hein...
Là on connaît le nombre de fois (on dit d'itérations), il faut donc utiliser une boucle POUR :
POUR  i  POUR ligne ALLANT_DE 1 A 50
   DEBUT_POUR
   nombre PREND_LA_VALEUR nombre + 15
   FIN_POUR

Que fait la boucle ? Grâce à un compteur intégré que j'ai appelé i, elle compte le nombre de fois, qu'elle va parcourir le cycle:
DEBUT_POUR --> nombre PREND_LA_VALEUR nombre + 15 --> FIN_POUR _|
^                                                                                                 |
|<--------------------------------------------------------------------| 
Quand i atteint la valeur 51, la boucle s'arrête...
La valeur de nombre est alors ; 17+15*50 = 767.
Voilà le programme

1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     nb EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     nb PREND_LA_VALEUR 17
6     POUR i ALLANT_DE 1 A 50
7       DEBUT_POUR
8       nb PREND_LA_VALEUR nb+15
9       FIN_POUR
10    AFFICHER "Valeur de nb : "
11    AFFICHER nb
12    AFFICHER "Valeur de i :"
13    AFFICHER i
14  FIN_ALGORITHME

***Algorithme lancé***
Valeur de nb : 767
Valeur de i :51
***Algorithme terminé***

Mais tu peux aussi utiliser une boucle TANT_QUE + condition :

1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     nb EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     nb PREND_LA_VALEUR 17
6     TANT_QUE (i<50)
7       DEBUT_TANT_QUE
8       nb PREND_LA_VALEUR nb+15
9       i REND_LA_VALEUR i+1
10       FIN_TANT_QUE
11    AFFICHER "Valeur de nb : "
12    AFFICHER nb
13    AFFICHER "Valeur de i :"
14    AFFICHER i
15  FIN_ALGORITHME

C'est de l'imitation du précédent.

***Algorithme lancé***
Valeur de nb : 767
Valeur de i :50
***Algorithme terminé***

Un "détail" : lorsque après i PREND_LA_VALEUR i+1, i a pris la valeur 49, la boucle TANT_QUE exécute une 50e fois le programme...
Après i PREND_LA_VALEUR i+1, i a pris la valeur 50, le cycle recommence, mais i n'étant plus < 50, on sort de cette boucle, avant que le compteur i n'augmente de 1... C'est pourquoi, là, la valeur affichée de i est de 50 et non 51...
La boucle POUR est à utiliser si on connaît le nombre d'itérations à faire : on n'a pas besoin de gérer soi-même le compteur...

Les scripts d'affichage des étoiles en pyramide.


VARIABLES
   etoile EST_DU_TYPE NOMBRE
   ligne EST_DU_TYPE NOMBRE
   nb EST_DU_TYPE NOMBRE
   espace EST_DU_TYPE NOMBRE
   nb_fin EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
    AFFICHER "Nombre de lignes de la Pyramide ?"
    LIRE nb
    POUR ligne ALLANT_DE 1 A nb
        DEBUT_POUR
        nb_fin PREND_LA_VALEUR nb-ligne
        POUR espace ALLANT_DE 1 A nb_fin
            DEBUT_POUR
            AFFICHER " "
            FIN_POUR
        POUR etoile ALLANT_DE 1 A 2*ligne-1
            DEBUT_POUR
            AFFICHER "*"
           FIN_POUR
        AFFICHER " "
        FIN_POUR
FIN_ALGORITHME

AFFICHER "Nombre de lignes de la Pyramide ?"
    LIRE nb
    POUR ligne ALLANT_DE 1 A nb

Pourquoi ?
nb est le nombre de lignes de la boucle : je peux en vouloir 3, 5, 10, 28...
Je demande cette valeur (LIRE nb), puis ma boucle va traiter une ligne à chaque itération...
Tu vas devoir afficher sur les lignes successives 1 étoile, 3 étoiles, 5, 7, 9, 11, 13 si tu choisis 7 pour nb...
Sur la 7e ligne aucun espace...
sur la 6e, un espace avant les étoiles et un après avec cocher retour à la ligne (après, aucune importance. Tu vois pourquoi ?)
sur la 5e, deux espaces avant les étoiles,
sur la 4e, trois espaces avant les étoiles,
...............
sur la 1ere, six  espaces avant les étoiles
Ligne 1, 6 (= 7-1) espaces
Ligne 2, 5 (= 7-2) espaces
..........
Ligne 7, (0 (=7-7) espaces
le nombre d'espaces à tracer est donné par la valeur nb-ligne, je le stocke dans nb_fin
Une fois le nombre d'espaces placés, je n'ai plus qu'à placer les étoiles à la suite, en nombre impair.
avec ligne= 1, 2*ligne-1=1
avec ligne= 2, 2*ligne-2=3
avec ligne= 3, 2*ligne-2=5...
etc.

Je repasse commenter les autres variantes du code si nécessaire, d'ici 3 heures...

@+


Arx Tarpeia Capitoli proxima...

En ligne

#3 18-02-2016 19:54:21

sabrine
Invité

Re : structures répétitives ( les boucles ) !

merci beaucoup !! j'ai besoin du pratique je pense !

#4 18-02-2016 19:56:17

sabrine
Invité

Re : structures répétitives ( les boucles ) !

ah oui merci beaucoup , c'est plus clair maintenant , j'ai besoin plus de pratique

Pied de page des forums