La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Algorithmes et résolution de problèmes FGE

Présentations similaires


Présentation au sujet: "Algorithmes et résolution de problèmes FGE"— Transcription de la présentation:

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

2 Contenu Introduction Structure TANTQUE/FINTANTQUE Exemples & exercice
Dans l’organigramme Dans le pseudo-code Exemples & exercice Autres structures d’itération Devoir #4

3 Introduction Les algorithmes présentés auparavant contenaient des structures de type : Séquence simple d’opérations Sélection d’opérations Souvent, certaines opérations à accomplir peuvent être répétées dans un algorithme Considérez le problème suivant : Concevoir un algorithme qui doit Accepter six(6) nombres Et Afficher la somme de ces nombres

4 Exemple #1 Six nombres sont lus dans des variables N1, N2, N3, N4, N5, N6 On accumule la somme de N1..N6 dans la variable SOMME On écrit la valeur de SOMME Début Début Lire N1, N2, N3, N4, N5, N6 Somme = N1+N2+N3+N4+N5+ N6 Ecrire Somme Fin Lire N1,N2, N3 N4, N5, N6 Somme = N1+N2+N3+N4+N5+N6 Ecrire Somme Fin

5 Exemple #1 - Suite Si on voudrait changer l’algorithme pour lire 100 nombres il faudrait ajouter à la solution pré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 à prendre Certaines étapes pourraient être répétées L’ITÉRATION!!!

6 Structure TANTQUE-FINTANTQUE
Pour représenter une itération (répétition) dans l’organigramme La condition est satisfaite? Oui Non On utilise le losange On utilise le cercle

7 Structure TANTQUE-FINTANTQUE
Notes sur la structure conditionnelle La condition doit être clairement stipulée dans le symbole conditionnel Le flux sortant identifié avec Oui/Non indique la fin de l’itération Le flux de l’itération indiqué avec Non/Oui doit éventuellement rejoindre le cercle de convergence La condition Non (oui) Oui (Non) Itération

8 Exemple #1 – Nouvelle approche
Accum = 0 Ctr = 0 Début Ctr < 6 Lire Donnée Écrire Accum Fin Accum = Accum + Donnée Ctr = Ctr + 1 Itération Séquence Lire N1,N2, N3 N4, N5, N6 Somme = N1+N2+N3+N4+N5+N6 Ecrire Somme Fin Non Oui

9 Exemple #1 – Ordinogramme et Pseudocode
Début Pseudocode Accum = 0 Ctr = 0 Ordinogramme Début Accum = 0 Ctr = 0 TantQue Ctr < 6 Faire Lire Donnée Accum = Accum + Donnée Ctr = Ctr + 1 FinTantQue Écrire Accum Fin Ctr < 6 FinTantQue Écrire Accum TantQue Lire Donnée Fin Accum = Accum + Donnée Ctr = Ctr + 1

10 Exemple #2 – Rapport de paie
Spécifications : On doit produire un rapport listant tous les employés (10) ayant travaillé durant la semaine et leur paie Pour chaque employé, on doit déterminer si l’employé a des heures supplémentaires. Si l’employé n’a pas excédé 40 heures de travail, la paie est calculée en multipliant les heures par le taux. Si des heures supplémentaires existent, on doit calculer la paie en multipliant les heures supplémentaires par le taux à temps et demi (1.5) Le rapport doit écrire son nom, son numéro d’employé et sa paie totale

11 Exemple #2 – l’algorithme
Nous devons écrire l’algorithme produisant une ligne de rapport pour chaque employé Entrée Données à lire Nom de l’employé, son numéro, ses heures travaillées et son taux Processus Calculer la paie Calculer la paie basée sur le nombre d’heures Sortie Résultats Le rapport doit écrire son nom, son numéro d’employé et sa paie totale On répète l’algorithme pour tous les employés (10)

12 Exemple #2 – Les variables
Dé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ées Taux Taux horaire Variables intermédiaires Paie paie totale PaieReg paie régulière PaieSup paie supplémentaire Cmtr compteur d’employé

13 L’ordinogramme du rapport de paie

14 L’ordinogramme du rapport de paie
Partie d’algorithme dans l’itération

15 Pseudocode de l’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 Pseudocode de l’exemple #2

16 Structure POUR pour l’ordinogramme
Structure répétitive TANTQUE employant une variable compteur pour identifier le nombre d’itérations à effectuer Syntaxe alternative, plus simple On indique explicitement l’incrémentation de la variable compteur Incrémentation : augmenter de 1

17 Structure POUR en pseudo-code
Structure répétitive TANTQUE employant une variable compteur pour identifier le nombre 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 Variable = 1 TANTQUE Variable < 100 FAIRE ... Variable = Variable + 1 FINTANTQUE POUR Variable = 1 JUSQU’À 100 FAIRE ... FINPOUR

18 Structure POUR (suite)
Exemple : identifier la valeur maximum parmi des valeurs positives fournies par l’utilisateur ÉCRIRE "Combien de valeurs?"  LIRE Nombre Maximum = 0 POUR Compte = 1 JUSQU’À Nombre FAIRE ÉCRIRE "Valeur #", Compte, "?" LIRE Valeur SI Valeur > Maximum ALORS Maximum = Valeur FINSI FINPOUR ÉCRIRE Maximum Exemple d’exécution Nombre de valeurs? 4 Valeur #1? 18 Valeur #2? 32 Valeur #3? 11 Valeur #4? 26 Valeur maximum = 32

19 Structure POUR (suite)
La valeur initiale et/ou la valeur terminale de la variable compteur n’ont pas à être des constantes Par contre la variable compteur et la valeur terminale ne doivent pas être modifiées pendant l’itération LIRE Départ, Fin POUR Compte = Départ JUSQU’À Fin FAIRE ÉCRIRE "Compte = ", Compte FINPOUR LIRE Départ, Fin POUR Compte = Départ JUSQU’À Fin FAIRE LIRE Compte Fin = Fin - 1 FINPOUR

20 Structure RÉPÉTER-JUSQU’À
La structure répétitive TANTQUE peut ne pas faire d’itération si la condition est fausse avant la première itération ÉCRIRE "Nombre positif?"  LIRE Nombre TANTQUE Nombre  0 FAIRE ÉCRIRE "Le nombre doit être positif" FINTANTQUE ÉCRIRE "Log(", Nombre, ")=", Log(Nombre) Exemple d’exécution Nombre positif? 100 Log(100) = 2

21 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 = 0 TANTQUE Nombre  0 FAIRE ÉCRIRE "Nombre positif?" LIRE Nombre FINTANTQUE

22 Structure RÉPÉTER-JUSQU’À (suite)
La structure répétitive 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 Nombre JUSQU’À Nombre > 0

23 Structure RÉPÉTER-JUSQU’À (suite)
Formulation Notez que les itérations se poursuivent tant que la condition n’est pas satisfaite Non Condition? Séquence d’opérations Oui RÉPÉTER Séquence d’opérations JUSQU’À Condition

24 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 = 0 TANTQUE Nombre  0 FAIRE ÉCRIRE "Nombre positif?" LIRE Nombre FINTANTQUE RÉPÉTER ÉCRIRE "Nombre positif?" LIRE Nombre JUSQU’À Nombre > 0

25 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 Nombre JUSQU’À Nombre > 0 RÉPÉTER ÉCRIRE "Nombre positif?" LIRE Nombre TANTQUE Nombre  0

26 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 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

27 Exercice #1 (à remettre)
Proposez un algorithme calculant la factorielle d’un nombre entier positif fourni 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 factorielle Factorielle(6) = 1 x 2 x 3 x 4 x 5 x 6 = 720 Écrivez le pseudo-code et l’organigramme Vous devez me remettre votre solution


Télécharger ppt "Algorithmes et résolution de problèmes FGE"

Présentations similaires


Annonces Google