Upload
ygraine-bourguignon
View
103
Download
0
Embed Size (px)
Citation preview
Section VI
Structures répétitives (suite)
Algorithmes et résolution de problèmes18279 FGE
Contenu
• Récapitulation– Structure TANTQUE– Structure POUR
• Structure RÉPÉTER-JUSQU’À– Pseudo-code et organigramme
• Exercice
• Devoir #5
Structure TANTQUE
• Permet de répéter une séquence d’opérations tant qu’une condition est satisfaite (i.e. vraie)
TANTQUE Condition FAIRE Séquence d'opérationsFINTANTQUE
NonCondition?
Séquenced’opérations
Oui
Structure TANTQUE (suite)
• Exemple : algorithme calculant la moyenne de 100 valeurs
Accum = 0Compte = 1TANTQUE Compte < 101 FAIRE LIRE Valeur Accum = Accum + Valeur Compte = Compte + 1FINTANTQUEMoyenne = Accum / 100ÉCRIRE Moyenne
Lire Valeur
Fin
Moyenne = Accum / 100
Non
Oui
Accum = Accum + Valeur
Accum = 0Compte = 1
Début
Compte < 101?
Compte = Compte + 1
Écrire Moyenne
Structure POUR
• Structure répétitive employant une variable compteur pour identifier le nombre d’itérations à effectuer
Pseudo-code
POUR Variable = Début JUSQU’À Fin FAIRE Séquence d'opérationsFINPOUR
Processus
Compteur = 1
Compteur > 10
Compteur +1
Non
Oui
Structure POUR (suite)
• Exemple : algorithme calculant la moyenne de 100 valeurs
• La variable Compte est automatiquement incrémentée (i.e. augmentée de 1) à chaque itération
Accum = 0POUR Compte = 1 JUSQU’À 100 FAIRE LIRE Valeur Accum = Accum + ValeurFINPOURMoyenne = Accum / 100ÉCRIRE Moyenne
Structure RÉPÉTER-JUSQU’À
• La structure répétitive TANTQUE ne peut faire d’itération si la condition est 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)• Dans certaines solutions, il est parfois requis
qu’une structure répétitive effectue au moins une itération
• Dans cet exemple, l’initialisation de la variable Nombre est essentielle afin qu’un itération soit effectuée par la boucle
Nombre = 0TANTQUE Nombre 0 FAIRE ÉCRIRE "Nombre positif?" LIRE NombreFINTANTQUE
Structure RÉPÉTER-JUSQU’À (suite)• La structure répétitive RÉPÉTER-JUSQU'À
répond à ce besoin en plaçant la condition d’itération à la fin de la boucle
• Au moins une itération est garantie afin que le flux d’exécution se rendre à la condition d’itération
RÉPÉTER ÉCRIRE "Nombre positif?" LIRE NombreJUSQU’À Nombre > 0
Structure RÉPÉTER-JUSQU’À (suite)• Formulation
• Notez que les itérations se poursuivent tant que la condition n’est pas satisfaite
RÉPÉTER Séquence d’opérationsJUSQU’À Condition
NonCondition?
Séquenced’opérations
Oui
Structure RÉPÉTER-JUSQU’À (suite)• La condition de la structure RÉPÉTER-
JUSQU’À est inversée par rapport à la structure 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)• En algorithmie, il n’y a pas de structure
RÉ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
Exercice #1
• Exercice : Écrivez un algorithme (pseudo-code et organigramme) qui identifie la valeur maximum parmi des valeurs non-négatives fournies par l’utilisateur– Si l'utilisateur entre un nombre négatif, affichez
une message d'erreur et ignorez celle-ci– Après chaque traitement d'une valeur, demander à
l'utilisateur s'il a terminé– Exploitez une structure RÉPÉTER-JUSQU'À
Exercice #1
• Solution : pseudo-code
Maximum = 0 \\ initialisationRÉPÉTER ÉCRIRE "Nombre non-négatif?" LIRE Nombre \\ Traiter le nombre lu SI Nombre < 0 ALORS ÉCRIRE "Erreur: nombre invalide" SINON SI Nombre > Maximum ALORS Maximum = Nombre FINSI \\ Doit-on traiter un autre nombre? ÉCRIRE Traiter un autre nombre (oui/non)?" LIRE ContinueJUSQU’À Continue = "non" \\ Afficher le maximum trouvéÉCRIRE "Nombre maximum =", Maximum
Exercice #1
• Solution : organigramme– On exploite le symbole
connecteur ( )
Début
Lire Nombre
Écrire "Nombre non-négatif?"
Maximum = 0
ABFin
Écrire "Nombre maximum=", Maximum
Non
Nombre < 0?Oui
A
Non
Nombre > Maximum?Oui
Écrire "Erreur: nombre invalide"
Maximum = Nombre
Lire Continue
Écrire "Traiter un autre nombre (oui/non)?"
Oui
B
Continue = "non"?Non
X
Quelle structure utiliser?
• Trois structures répétitives sont disponibles– Laquelle utiliser dans un algorithme?
• Voici quelques règles à considérer– Si le nombre d’itérations est déterminé par une
variable compteur incrémentée• 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
Questions quiz
• Qu'est ce qu'une itération?- Une exécution de la séquence d'opérations
dans une structure itérative
• Qu'est-ce qu'une variable d'accumulation?- Une variable servant à accumuler des valeurs
numériques
• Quel est le rôle du symbole d'initialisation?- Représente des opérations d'initialisation de
variables
Questions quiz (suite)
• Quelles sont les principales distinctions entre la structure TANTQUE et la structure RÉPÉTER-JUSQU'À?
- La position de la condition d'itération
- Inversion de la condition d'itération
• Une boucle peut-elle disposer de plus d'un point de sortie?
- Non, la seule sortie possible est via lacondition d'itération
Questions quiz (suite)
• Quel est un risque potentiel d'erreur lorsqu'on exploite des boucles imbriquées avec compteurs?
- Éviter que les deux boucles exploite la même
variable compteur
• Quelle structure répétitive n'a pas de représentation dans l'organigramme?
- POUR
Questions quiz (suite)
• Lequel des algorithmes suivants ne fonctionne pas, et pourquoi?– Afficher la somme des valeurs autres que 0 lues
Accum = 0TANTQUE Valeur 0 FAIRE Accum = Accum + Valeur LIRE ValeurFINTANTQUEÉCRIRE Accum
Accum = 0RÉPÉTER LIRE Valeur Accum = Accum + ValeurJUSQU'À Valeur 0 ÉCRIRE Accum
Aucune lecture de Valeur n'est effectuée avant de vérifier la condition d'itération
La condition d'itération doit être inversée, sinon la boucle cesse à la lecture d'une valeur autre que 0
Devoir #5
• Énoncé du devoir disponible sur ~jlemoe
• Concevoir un algorithme calculant votre moyenne pondérée cumulative
• Vous devez soumettre (Devoir6.ZIP)– Un fichier LARP– Un fichier Word – À remettre avant le prochain cours