section v structure de contrôle itération tantque/fintantque pour/finpour repeter/jusquÀ...

27
Section Section V V Structure de contrôle Structure de contrôle Itération Itération TANTQUE/FINTANTQUE TANTQUE/FINTANTQUE POUR/FINPOUR POUR/FINPOUR REPETER/JUSQU’À REPETER/JUSQU’À Algorithmes et résolution de Algorithmes et résolution de problèmes problèmes 18279 FGE 18279 FGE

Upload: anne-mathis

Post on 04-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

SectionSection V V

Structure de contrôleStructure de contrôleItérationItération

TANTQUE/FINTANTQUETANTQUE/FINTANTQUEPOUR/FINPOURPOUR/FINPOUR

REPETER/JUSQU’ÀREPETER/JUSQU’À

Algorithmes et résolution de problèmesAlgorithmes et résolution de problèmes18279 FGE18279 FGE

Page 2: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

ContenuContenu

• IntroductionIntroduction• Structure TANTQUEStructure TANTQUE/FINTANTQUE/FINTANTQUE

– Dans l’organigramme– Dans le pseudo-code

• Exemples & exerciceExemples & exercice• Autres structures d’itérationAutres structures d’itération• Devoir #4Devoir #4

Page 3: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

IntroductionIntroduction• Les algorithmes présentés auparavant contenaient des Les algorithmes présentés auparavant contenaient des

structures de type :structures de type :

– Séquence simple d’opérations– Sélection d’opérations

• Souvent, certaines opérations à accomplir peuvent être Souvent, certaines opérations à accomplir peuvent être répétées dans un algorithmerépétées dans un algorithme

– Considérez le problème suivant :

Concevoir un algorithme qui doitConcevoir un algorithme qui doit

Accepter six(6) nombres Accepter six(6) nombres EtEt

Afficher la somme de ces nombresAfficher la somme de ces nombres

Page 4: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

• Six nombres sont lus dans des variables Six nombres sont lus dans des variables N1, N2, N3, N4, N5, N6N1, N2, N3, N4, N5, N6

• On accumule la somme de N1..N6 dans la On accumule la somme de N1..N6 dans la variable SOMMEvariable SOMME

• On écrit la valeur de SOMMEOn écrit la valeur de SOMME

Exemple #1Exemple #1

Début

Lire N1,N2, N3N4, N5, N6

Somme = N1+N2+N3+N4+N5+N6

EcrireSomme

Fin

DébutDébut

Lire N1, N2, N3, N4, N5, N6Lire N1, N2, N3, N4, N5, N6

Somme = N1+N2+N3+N4+N5+ N6Somme = N1+N2+N3+N4+N5+ N6

Ecrire SommeEcrire Somme

FinFin

Page 5: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

• Si on voudrait changer l’algorithme pour lire 100 Si on voudrait changer l’algorithme pour lire 100 nombres il faudrait ajouter à la solution nombres il faudrait ajouter à la solution précédenteprécédente– 94 nouvelles variables (N7, N8, N9, …N100)

• pour la lecture

– Inclure les nouvelles variables dans le calcul de la somme

• Ce n’est pas une approche désirable à prendreCe n’est pas une approche désirable à prendre• Certaines étapes pourraient être répétéesCertaines étapes pourraient être répétées

L’ITÉRATION!!!L’ITÉRATION!!!

Exemple #1 - Exemple #1 - SuiteSuite

Page 6: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure Structure TANTQUE-FINTANTQUETANTQUE-FINTANTQUEStructure Structure TANTQUE-FINTANTQUETANTQUE-FINTANTQUE

• Pour représenter une itération (répétition) Pour représenter une itération (répétition) dans l’organigrammedans l’organigramme

• On utilise le losange• On utilise le cercle

La condition estsatisfaite?

Oui

Non

Page 7: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

• Notes sur la structure conditionnelleNotes sur la structure conditionnelle– La condition doit être clairement

stipulée dans le symboleconditionnel

– Le flux sortant identifié avec Oui/Nonindique la fin de l’itération

– Le flux de l’itérationindiqué avec Non/Oui doit éventuellementrejoindre le cerclede convergence

La condition

Oui (Non)

Non (oui)

ItérationItération

Structure Structure TANTQUE-FINTANTQUETANTQUE-FINTANTQUEStructure Structure TANTQUE-FINTANTQUETANTQUE-FINTANTQUE

Page 8: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Exemple #1 – Nouvelle approcheExemple #1 – Nouvelle approche

Lire N1,N2, N3N4, N5, N6

Somme = N1+N2+N3+N4+N5+N6

EcrireSomme

Fin

SéquenceSéquenceAccum = 0

Ctr = 0

Début

Ctr < 6

LireDonnée

ÉcrireAccum

Fin

Accum = Accum + Donnée

Ctr = Ctr + 1

ItérationItération

Non

Oui

Page 9: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Exemple #1 – Exemple #1 – Ordinogramme et PseudocodeOrdinogramme et Pseudocode

Accum = 0Ctr = 0

Début

Ctr < 6

LireDonnée

ÉcrireAccum

Fin

Accum = Accum + Donnée

Ctr = Ctr + 1

OrdinogrammeOrdinogramme

PseudocodePseudocode

DébutDébut

Accum = 0Accum = 0

Ctr = 0Ctr = 0

TantQue Ctr < 6 FaireTantQue Ctr < 6 Faire

Lire DonnéeLire Donnée

Accum = Accum + DonnéeAccum = Accum + Donnée

Ctr = Ctr + 1Ctr = Ctr + 1

FinTantQueFinTantQue

Écrire AccumÉcrire Accum

FinFin

TantQue

FinTantQue

Page 10: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Exemple #2 – Exemple #2 – Rapport de paieRapport de paie

• Spécifications :Spécifications : On doit produire un rapport listant tous les employés On doit produire un rapport listant tous les employés

(10) ayant travaillé durant la semaine et leur paie(10) ayant travaillé durant la semaine et leur paie Pour chaque employé, on doit déterminer si l’employé a Pour chaque employé, on doit déterminer si l’employé a

des heures supplémentaires.des heures supplémentaires. Si l’employé n’a pas excédé 40 heures de travail, la paie Si l’employé n’a pas excédé 40 heures de travail, la paie

est calculée en multipliant les heures par le taux.est calculée en multipliant les heures par le taux. Si des heures supplémentaires existent, on doit calculer la Si des heures supplémentaires existent, on doit calculer la

paie en multipliant les heures supplémentaires par le taux paie en multipliant les heures supplémentaires par le taux à temps et demi (1.5)à temps et demi (1.5)

Le rapport doit écrire son nom, son numéro d’employé Le rapport doit écrire son nom, son numéro d’employé et sa paie totaleet sa paie totale

Page 11: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Nous devons écrire l’algorithme produisant une Nous devons écrire l’algorithme produisant une ligne deligne de

rapport pour chaque employérapport pour chaque employé

• EntréeEntrée Données à lireDonnées à lire Nom de l’employé, son numéro, ses heures travaillées Nom de l’employé, son numéro, ses heures travaillées

et son tauxet son taux

• ProcessusProcessus Calculer la paieCalculer la paie– Calculer la paie basée sur le nombre d’heuresCalculer la paie basée sur le nombre d’heures

• SortieSortie RésultatsRésultats Le rapport doit écrire son nom, son numéro d’employé Le rapport doit écrire son nom, son numéro d’employé

et sa paie totaleet sa paie totale

On répète l’algorithme pour tous les employés (10)On répète l’algorithme pour tous les employés (10)

Exemple #2 – Exemple #2 – l’algorithmel’algorithme

Page 12: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Exemple #2 – Les variablesExemple #2 – Les variables

• Définition des variables de données d’entréeDéfinition des variables de données d’entrée– Nom nom de l’employé– Numero numéro de l’employé– Heures nombre d’heures

travailléesTaux Taux horaire

• Variables intermédiaires Variables intermédiaires – Paie paie totale– PaieReg paie régulière– PaieSup paie supplémentaire– Cmtr compteur d’employé

Page 13: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

L’oL’ordinogrammerdinogrammedu rapport de paiedu rapport de paie

Page 14: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

L’ordinogramme du rapport de paieL’ordinogramme du rapport de paie

Partie d’algorithme

dans l’itération

Page 15: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Pseudocode dePseudocode del’exemple #2l’exemple #2

Début

Cmtr = 0

TantQue Cmtr < 10 Faire

Read Nom, Nemp, Hrs, Taux

SI Hrs > 40 Alors

PaieReg = 40 * Taux

PaieSup = (Hrs-40) * (1.5*Taux)

Paie = PaieReg + PaieSup

Sinon

Paie = Hrs * Taux

FinSi

Ecrire Nom, Nemp, Paie

FinTantQue

Fin

Page 16: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure POUR Structure POUR pour l’ordinogrammepour l’ordinogramme

• Structure répétitive Structure répétitive TANTQUE employant une TANTQUE employant une variable compteur pour variable compteur pour identifier le nombre identifier le nombre d’itérations à effectuerd’itérations à effectuer

– Syntaxe alternative, plus simple

– On indique explicitement l’incrémentation de la variable compteur

• Incrémentation : augmenter de 1

Processus

Compteur = 1

Compteur > 10

Compteur +1

Non

Oui

Page 17: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure POUR Structure POUR en pseudo-codeen pseudo-code

• Structure répétitive TANTQUE employant Structure répétitive TANTQUE employant une variable compteur pour identifier le une variable compteur pour identifier le nombre d’itérations à effectuernombre d’itérations à effectuer– Syntaxe alternative, plus simple

– On n’indique pas explicitement l’incrémentation de la variable compteur

• Incrémentation : augmenter de 1

POUR Variable = 1 JUSQU’À 100 FAIRE ... ... ...FINPOUR

Variable = 1TANTQUE Variable < 100 FAIRE ... ... Variable = Variable + 1FINTANTQUE

Page 18: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure POUR (suite)Structure POUR (suite)

• ExempleExemple : identifier la valeur maximum : identifier la valeur maximum parmi des valeurs positives fournies par parmi des valeurs positives fournies par l’utilisateurl’utilisateurÉCRIRE "Combien de valeurs?" LIRE NombreMaximum = 0POUR Compte = 1 JUSQU’À Nombre FAIRE ÉCRIRE "Valeur #", Compte, "?" LIRE Valeur SI Valeur > Maximum ALORS Maximum = Valeur FINSIFINPOURÉCRIRE Maximum

Exemple d’exécution

Nombre de valeurs? 4Valeur #1? 18Valeur #2? 32Valeur #3? 11Valeur #4? 26Valeur maximum = 32

Page 19: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure POUR (suite)Structure POUR (suite)

• La valeur initiale et/ou la valeur terminale de La valeur initiale et/ou la valeur terminale de la variable compteur n’ont pas à être des la variable compteur n’ont pas à être des constantesconstantes

• Par contre la variable compteur et la valeur Par contre la variable compteur et la valeur terminale terminale ne doivent pas être modifiéesne doivent pas être modifiées pendant l’itérationpendant l’itération

LIRE Départ, FinPOUR Compte = Départ JUSQU’À Fin FAIRE ÉCRIRE "Compte = ", CompteFINPOUR

LIRE Départ, FinPOUR Compte = Départ JUSQU’À Fin FAIRE LIRE Compte Fin = Fin - 1FINPOUR

Page 20: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’ÀStructure RÉPÉTER-JUSQU’À

• La structure répétitive TANTQUE peut La structure répétitive TANTQUE peut ne pas faire d’itération si la condition ne pas faire d’itération si la condition est fausse avant la première itérationest fausse avant la première itération

ÉCRIRE "Nombre positif?" LIRE NombreTANTQUE Nombre 0 FAIRE ÉCRIRE "Le nombre doit être positif" LIRE NombreFINTANTQUEÉCRIRE "Log(", Nombre, ")=", Log(Nombre)

Exemple d’exécution

Nombre positif? 100Log(100) = 2

Page 21: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’À (suite)Structure RÉPÉTER-JUSQU’À (suite)

• Dans certaines solutions, il est parfois Dans certaines solutions, il est parfois requis qu’une structure répétitive requis qu’une structure répétitive effectue au moins une itérationeffectue au moins une itération

• Dans cet exemple, l’initialisation de la Dans cet exemple, l’initialisation de la variable Nombre est essentielle afin variable Nombre est essentielle afin qu’un itération soit effectuée par la qu’un itération soit effectuée par la boucleboucle

Nombre = 0TANTQUE Nombre 0 FAIRE ÉCRIRE "Nombre positif?" LIRE NombreFINTANTQUE

Page 22: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’À (suite)Structure RÉPÉTER-JUSQU’À (suite)

• La structure répétitive répond à ce La structure répétitive répond à ce besoin en plaçant la condition besoin en plaçant la condition d’itération à la fin de la boucled’itération à la fin de la boucle

• Au moins uAu moins une itération est garantiene itération est garantie afin afin que le flux d’exécution se rendre à la que le flux d’exécution se rendre à la condition d’itération condition d’itération

RÉPÉTER ÉCRIRE "Nombre positif?" LIRE NombreJUSQU’À Nombre > 0

Page 23: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’À (suite)Structure RÉPÉTER-JUSQU’À (suite)

• FormulationFormulation

• Notez que les Notez que les itérations se itérations se poursuivent poursuivent tant que tant que la condition n’est pas la condition n’est pas satisfaitesatisfaite

RÉPÉTER Séquence d’opérationsJUSQU’À Condition

NonCondition?

Séquenced’opérations

Oui

Page 24: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’À (suite)Structure RÉPÉTER-JUSQU’À (suite)

• La condition de la structure RÉPÉTER-La condition de la structure RÉPÉTER-JUSQU’À est inversée par rapport à la JUSQU’À est inversée par rapport à la structure TANTQUE équivalentestructure TANTQUE équivalente

Nombre = 0TANTQUE Nombre 0 FAIRE ÉCRIRE "Nombre positif?" LIRE NombreFINTANTQUE

RÉPÉTER ÉCRIRE "Nombre positif?" LIRE NombreJUSQU’À Nombre > 0

Page 25: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Structure RÉPÉTER-JUSQU’À (suite)Structure RÉPÉTER-JUSQU’À (suite)

• En algorithmie, il n’y a pas de structure En algorithmie, il n’y a pas de structure RÉPÉTER-TANTQUERÉPÉTER-TANTQUE– C’est-à-dire répéter tant que la condition est

vraie– On utilise plutôt une structure RÉPÉTER-

JUSQU’À avec une condition négative

RÉPÉTER ÉCRIRE "Nombre positif?" LIRE NombreTANTQUE Nombre 0

RÉPÉTER ÉCRIRE "Nombre positif?" LIRE NombreJUSQU’À Nombre > 0

Page 26: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Quelle structure utiliser?Quelle structure utiliser?

• Trois structures répétitives sont Trois structures répétitives sont disponiblesdisponibles– Laquelle utiliser dans un algorithme?

• Voici quelques règles à considérerVoici quelques règles à considérer– Si le nombre d’itérations est déterminé par

une variable compteur• Utiliser la structure POUR

– Si au moins une itération est requise• Utiliser la structure RÉPÉTER-JUSQU’À

– Dans les autres circonstances• Utiliser la structure TANTQUE

Page 27: Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ Algorithmes et résolution de problèmes 18279 FGE

Exercice #1 (à remettre)Exercice #1 (à remettre)

• Proposez un algorithme calculant la Proposez un algorithme calculant la factorielle d’un nombre entier positif factorielle d’un nombre entier positif fourni par l’utilisateurfourni par l’utilisateur– Votre algorithme doit redemander le

nombre jusqu’à ce qu’une valeur de 0 (zéro) soit fournie

• Exemple de calcul de la factorielleExemple de calcul de la factorielle– Factorielle(6) = 1 x 2 x 3 x 4 x 5 x 6 = 720

• Écrivez le pseudo-code et l’organigrammeÉcrivez le pseudo-code et l’organigramme

• Vous devez me remettre votre solutionVous devez me remettre votre solution