Chapitre suivantIndex des CoursChapitre précedentChapitre 4

Les structures repetitives

 

1.1. Introduction

Dans les problèmes quotidiens, on ne traite pas uniquement des séquences d'actions, sous ou sans conditions, mais il peut être fréquent d'être obligé d'exécuter un traitement (séquence d'actions), plusieurs fois. En effet, pour saisir les N notes d'un étudiant et calculer sa moyenne, on est amené à saisir N variables, puis faire la somme et ensuite diviser la somme par N. Cette solution nécessite la réservation de l'espace par la déclaration des variables, et une série de séquences d'écriture/lecture. Ce problème est résolu à l'aide des structures répétitives. Celles ci permettent de donner un ordre de répétition d'une action ou d'une séquence d'actions une ou plusieurs fois.

1.2. La boucle POUR

Cette structure exprime la répétition d'un traitement un nombre de fois.          

Syntaxe

POUR Vc DE Vi A Vf [PAS Vp] FAIRE

            <Traitement>

FINFAIRE

Où       Vc est une variable entière, qui compte le nombre de répétition du <Traitement>,

            Vi la valeur initiale à laquelle Vc est initialisé,

            Vf la valeur finale à laquelle se termine Vc,

            Vp la valeur du pas, c'est la valeur qu'on rajoute à Vc à chaque fin de traitement.

Remarque

1.      La boucle POUR est utilisée lorsqu'on connaît le nombre de répétition du <Traitement> d'avance.

2.      La valeur du pas peut être positive ou négative et par conséquent, il faut; au départ de la boucle; que Vi <= Vf ou Vi >= Vf selon la positivité ou la négativité de cette valeur.

3.      La valeur du pas est égale à 1 par défaut.

Les étapes d'exécution de la boucle POUR

1)      Initialisation de Vc par la valeur de Vi (comme si on avait Vc¬Vi)

2)      Test si Vi dépasse (±) Vf (du côté supérieur ou inférieur, selon la positivité ou la négativité du pas).                                                                                                                Si oui, alors la boucle s'arrête et l'exécution se poursuit après le FINFAIRE                   Sinon,

·                    Exécution du <Traitement>,

·                    Incrémentation ou décrémentation de Vc par la valeur du pas,

·                    Retour à l'étape 2.

Application

Ecrire l'algorithme qui permet de saisir les moyennes des N étudiants de la classe Informatique et de calculer la moyenne générale de la classe.

Résolution

Sans les boucles, on est obligé de déclarer N variables, et d'écrire N actions LIRE.

LIRE(note)

S¬ S + MOY

LIRE(MOY)

S¬ S + MOY

…..

LIRE(MOY)

S¬ S + MOY

La boucle POUR donne l'ordre à la machine d'itérer les deux actions        N fois.

Donc le compteur varie de 1 jusqu'à N avec un pas de 1.

ALGORITHME MOYENNE

VAR i, N : entier

            MOY, MC : réel

DEBUT

ECRIRE("Donner le nombre d'étudiants")

LIRE(N)

SI (N > 0) ALORS

S ¬ 0 {Initialisation de S}

POUR i DE 1 A N FAIRE {Le pas égale 1 par défaut}

            ECRIRE("Donner la moyenne de l'étudiant n°", i)

            LIRE(MOY)

            S ¬ S + MOY {on rajoute la moyenne du iième étudiant à la somme}

            FIN FAIRE   

            MC ¬ S / N

            ECRIRE("La moyenne de la classe est : ", MC)

SINON

            ECRIRE("Erreur dans le nombre d'étudiants")

FINSI

FIN

Remarque Juste Avant le FIN FAIRE, le changement de la valeur de i se fait automatiquement.

Application 1

Ecrire l'algorithme qui permet d'afficher tous les nombres pairs qui existent entre 1 et 10.

1ière solution

POUR i de 2 à 10 pas 2 Faire

            ECRIRE(i)

FINFAIRE

2ième solution

POUR i de 2 à 10 Faire

SI (i mod 2 = 0) ALORS

            ECRIRE(i)

FINSI

FINFAIRE

3ième solution

POUR i de 1 à 5 Faire

            ECRIRE(2*i)

FINFAIRE

Application 2

Ecrire l'algorithme qui permet d'afficher tous les nombres impairs entre 50 et 100 dans l'ordre décroissant.

POUR i de 99 à 50 PAS (-2) FAIRE

            ECRIRE(i)

FIN FAIRE

La valeur finale peut être 50 ou 51 car le test de sortie est i < Vf (49 < 50 ou à 51)

1.3. La boucle Répéter … Jusqu'à

Syntaxe

Répéter

            <Traitement>

Jusqu'à (condition d'arrêt)

Cet ordre d'itération permet de répéter le <Traitement> une ou plusieurs fois et de s'arrêter sur une condition. En effet, lorsque la condition est vérifiée, la boucle s'arrête, si non elle ré-exécute le <Traitement>.

Remarques

1.      Dans cette boucle, le traitement est exécuté au moins une fois avant l'évaluation de la condition d'arrêt.

2.      Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.

Les étapes d'exécution de la boucle Répéter

1)      Exécution du <Traitement>

2)      Test de la valeur de la <condition d'arrêt>

Si elle est vérifiée Alors la boucle s'arrête

Sinon Retour à l'étape 1.

Application

Ecrire un algorithme qui saisit un nombre pair et qui détermine combien de fois il est divisible par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2).

ALGORITHME PAIR-NBDIV2

VAR N, N2 : entier

DEBUT

{Saisie d'un entier qui doit être pair}

Répéter

            ECRIRE("Donner un entier pair")

            LIRE(N)

Jusqu'à (N MOD 2 = 0) {condition pour que N soit pair}

{Détermination du nombre de division par 2}

N2 ¬ 0

NB ¬ N

Répéter

            NB ¬ NB div 2

            N2 ¬ N2 +1

Jusqu'à (NB MOD 2 <> 0) {On s'arrête lorsque NB n'est plus divisible par 2}

ECRIRE(N, "est divisible par 2", N2,"fois")

FIN

1.4. La boucle TANT QUE

Syntaxe

TANT QUE (condition d'exécution)

FAIRE

            <Traitement>

FIN FAIRE

Cet ordre d'itération permet de répéter le <Traitement> zéro ou plusieurs fois et de s'arrêter lorsque la condition d'exécution n'est plus vérifiée. En effet, lorsque la condition d'exécution est vérifiée, le <Traitement> est exécuté, si non elle s'arrête.

Les étapes d'exécution de la boucle Répéter

1)      Test de la valeur de la <condition d'exécution>

2)      Si elle est vérifiée Alors                                                                                                     

Exécution du <Traitement>                                                                 

    Retour à l'étape 1.

Sinon Arrêt de la boucle.

Remarques

1.      Dans cette boucle, le traitement peut ne pas être exécuté aucune fois, c'est lorsque la condition d'exécution est à faux dés le départ.

2.      Les paramètres de la condition doivent être initialisés par lecture ou par affectation avant la boucle.

3.      Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.

Application

Ecrire un algorithme qui saisit un nombre pair et qui détermine combien de fois il est divisible par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2).

ALGORITHME PAIR-NBDIV2

VAR N, N2 : entier

DEBUT

{Saisie d'un entier qui doit être pair}

Répéter

            ECRIRE("Donner un entier pair")

            LIRE(N)

Jusqu'à (N MOD 2 = 0) {condition pour que N soit pair}

{Détermination du nombre de division par 2}

N2 ¬ 0

NB ¬ N

TANT QUE (NB MOD 2 = 0)

FAIRE

            NB ¬ NB div 2

            N2 ¬ N2 +1

FIN FAIRE {On s'arrête lorsque NB n'est plus divisible par 2}

ECRIRE(N, "est divisible par 2", N2,"fois")

FIN

Ä  La condition d'arrêt avec la boucle Répéter est l'inverse de la condition d'exécution de la boucle TANTQUE.

Remarque

Le Traitement d'une boucle peut contenir lui aussi une autre boucle. On l'appelle dans ce cas des boucles imbriquées.

Chapitre précedentIndex des CoursChapitre suivant

Tags: cours, algorithme, informatique, programmation, formation, structures, répétitives

Révisé le :23-Sep-2010| ©2010 www.technologuepro.com