Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE.
Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ...
-
Upload
anne-mathis -
Category
Documents
-
view
105 -
download
1
Transcript of Section V Structure de contrôle Itération TANTQUE/FINTANTQUE POUR/FINPOUR REPETER/JUSQUÀ...
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
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
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
• 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
• 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
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
• 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
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
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
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
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
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é
L’oL’ordinogrammerdinogrammedu rapport de paiedu rapport de paie
L’ordinogramme du rapport de paieL’ordinogramme du rapport de paie
Partie d’algorithme
dans l’itération
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
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
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
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
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
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
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
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
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
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
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
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
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