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

Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE.

Présentations similaires


Présentation au sujet: "Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE."— Transcription de la présentation:

1 Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE

2 Contenu Introduction Modules –Simples Exemples Exercice Devoir #6

3 Introduction Un algorithme solutionnant un problème complexe est, conséquemment, complexe lui aussi Exemple –Devoir #5 : calcul de la moyenne pondérée cumulative –Le pseudo-code est long et présente une indentation prononcée À cause des structures imbriquées –L'organigramme se propage sur plusieurs pages

4 Introduction (suite) Solution (pseudo-code) \\ Lire le nombre de cours à traiter ÉCRIRE "Combien de cours?" LIRE NombreCours \\ Initialisation TotalHeures = 0 TotalNotes = 0 \\ Traiter chaque cours POUR NoCours = 1 JUSQU'À NombreCours FAIRE \\ Lire les données du cours ÉCRIRE "Note du cours #", NoCours LIRE Note ÉCRIRE "Nombre d'heures du cours #", NoCours LIRE Heures \\ Convertir la note alphabétique en valeur \\ numérique correspondante SI Note = "A+" OU Note = "a+" ALORS Valeur = 4 SINON SI Note = "A" OU Note = "a" ALORS Valeur = 4 SINON SI Note = "A-" OU Note = "a-" ALORS Valeur = 3.7 SINON SI Note = "B+" OU Note = "b+" ALORS Valeur = 3.3 SINON SI Note = "B" OU Note = "b" ALORS Valeur = 3 SINON SI Note = "B-" OU Note = "b-" ALORS Valeur = 2.7 SINON SI Note = "C+" OU Note = "c+" ALORS Valeur = 2.3 SINON SI Note = "C" OU Note = "c" ALORS Valeur = 2 SINON SI Note = "C-" OU Note = "c-" ALORS Valeur = 1.7 SINON SI Note = "D+" OU Note = "d+" ALORS Valeur = 1.3 SINON SI Note = "D" OU Note = "d" ALORS Valeur = 1 SINON SI Note = "D-" OU Note = "d-" ALORS Valeur = 1 SINON SI Note = "EC" OU Note = "ec" ALORS Valeur = 0 SINON ÉCRIRE "ERREUR: note invalide" Valeur = -1 FINSI \\ Si la note fut convertie, mettre à jour les \\ sommations SI Valeur >= 0 ALORS TotalNotes = TotalNotes + Valeur * Heures TotalHeures = TotalHeures + Heures FINSI FINPOUR \\ Calculer et afficher la MPC Moyenne = TotalNotes / TotalHeures ÉCRIRE "Moyenne pondérée cumulative = ", Moyenne

5 Introduction (suite) Cette complexité apparente peut être atténuée à l'aide d'une technique appelée la modularité –Consiste à diviser le problème en sous- problèmes –Solutionner chaque sous-problème individuellement Un algorithme pour chaque sous-problème –Faire appel à ces algorithmes pour solutionner le problème original

6 Introduction (suite) Définition de module –Algorithme solutionnant une partie du problème original Exemple –Algorithme convertissant une note alphabétique (avec ou sans signe) en valeur numérique \\ Module ConvertirNote LIRE Note SI Note = "A+" OU Note = "a+" ALORS Valeur = 4 SINON SI Note = "A" OU Note = "a" ALORS Valeur = 4 SINON SI Note = "A-" OU Note = "a-" ALORS Valeur = 3.7 SINON SI Note = "B+" OU Note = "b+" ALORS Valeur = 3.3 SINON SI Note = "B" OU Note = "b" ALORS Valeur = 3 SINON SI Note = "B-" OU Note = "b-" ALORS Valeur = 2.7 SINON SI Note = "C+" OU Note = "c+" ALORS Valeur = 2.3 SINON SI Note = "C" OU Note = "c" ALORS Valeur = 2 SINON SI Note = "C-" OU Note = "c-" ALORS Valeur = 1.7 SINON SI Note = "D+" OU Note = "d+" ALORS Valeur = 1.3 SINON SI Note = "D" OU Note = "d" ALORS Valeur = 1 SINON SI Note = "D-" OU Note = "d-" ALORS Valeur = 1 SINON SI Note = "EC" OU Note = "ec" ALORS Valeur = 0 SINON ÉCRIRE "ERREUR: note invalide" Valeur = -1 FINSI ÉCRIRE Valeur

7 Introduction (suite) Exemple (suite) –Le module principal peut faire appel au module ConvertirNote pour solutionner le problème \\ Lire le nombre de cours à traiter ÉCRIRE "Combien de cours?" LIRE NombreCours \\ Initialisation TotalHeures = 0 TotalNotes = 0 \\ Traiter chaque cours POUR NoCours = 1 JUSQU'À NombreCours FAIRE \\ Lire et convertir la note ÉCRIRE "Note du cours #", NoCours EXÉCUTER ConvertirNote ÉCRIRE "Nombre d'heures du cours #", NoCours LIRE Heures \\ Si la note fut convertie, mettre à jour les \\ sommations SI Valeur >= 0 ALORS TotalNotes = TotalNotes + Valeur * Heures TotalHeures = TotalHeures + Heures FINSI FINPOUR \\ Calculer et afficher la MPC Moyenne = TotalNotes / TotalHeures ÉCRIRE "Moyenne pondérée cumulative = ", Moyenne

8 Modules Un algorithme complexe peut être divisé en modules Structure générale d'un algorithme modulaire –Algorithme divisé en modules –Un module peut faire appel à d'autres modules –Le module principal est le chef d'orchestre Module principal Module AModule BModule C Module DModule E

9 Modules (suite) Le module principal –C'est le point de départ du flux d'exécution –C'est aussi à la fin du module principal que le flux d'exécution se termine –Dans l'organigramme, c'est le seul module ayant les symboles Début et Fin Début Fin......

10 Modules (suite) Le module principal (suite) –Pour distinguer le module principal des autres modules dans les pseudo-codes, on ajoute aussi les étiquettes Début et Fin à ce module \\ Module principal DÉBUT Compte = 0 TANTQUE Compte < 10 FAIRE EXÉCUTER TraiterEmployé Compte = Compte + 1 FINTANTQUE FIN

11 Modules (suite) Les modules auxiliaires –Ce sont les modules exploités directement ou indirectement par le module principal Module principal Module AModule BModule C Module DModule E Modules auxiliaires

12 Modules (suite) Les modules auxiliaires (suite) –Pour les distinguer du module principal, les modules auxiliaires commencent par Entrer : indique que le flux d'exécution entre dans le module et se terminent par Retourner : indique que le flux d'exécution retourne au module de provenance du flux Entrer Retourner...... \\ Module auxiliaire ENTRER. RETOURNER

13 Modules (suite) Appel d'un module –Consiste à transférer le flux d'exécution à un module auxiliaire –Organigramme: symbole d'appel de module Indique le transfert du flux d'exécution vers le module spécifié Nom_du_module

14 Modules (suite) Appel d'un module (suite) –Pseudo-code: l'opération EXÉCUTER indique le transfert du flux d'exécution vers le module auxiliaire spécifié \\ pseudo-code. EXÉCUTER Nom_du_module.

15 Modules (suite) Appel d'un module (suite) –Une fois l'exécution du module auxiliaire terminé, le flux d'exécution revient à l'opération suivant l'appel D'où le symbole (ou le mot-clé) RETOURNER à la fin du module auxiliaire \\ Module Module_A ENTRER ÉCRIRE "Module_A" RETOURNER \\ Module principal DÉBUT ÉCRIRE "Allo" EXÉCUTER Module_A ÉCRIRE "Bye" FIN 1 2 3 4 5

16 Modules (suite) Retour du flux d'exécution –Dans un module auxiliaire, on n'indique pas à quel module est retourné le flux d'exécution –Car le flux peut provenir de divers autres modules \\ Module Module_B ENTRER ÉCRIRE "Module_B" RETOURNER Module_A \\ Module Module_A ENTRER ÉCRIRE "Module_A" EXÉCUTER Module_B RETOURNER \\ Module Module_C ENTRER ÉCRIRE "Module_C" EXÉCUTER Module_B RETOURNER

17 Modules (suite) Un module auxiliaire peut avoir les caractéristiques suivantes –Il peut recevoir des valeurs en provenance du module appelant Ce sont des paramètres –Il peut retourner un résultat au module appelant C'est une valeur de retour –Les modules sans paramètres ni valeur de retour sont dits modules simples

18 Modules simples Module dans sa plus simple expression –Débute par DÉBUT (pour le module principal) ou ENTRER (pour les modules auxiliaires) –Terminé par FIN (pour le module principal) ou RETOURNER (pour les modules auxiliaires) Pour les modules auxiliaires –Appelés à l'aide du symbole (pour l'organigramme) ou de l'opération EXÉCUTER (pour le pseudo-code) –Accompagnés d'un commentaire pour identifier le nom du module auxiliaire

19 Modules simples (suite) Exemple Heures > 40? OuiNon Paie = Heures * Taux SupPaie = Taux * (Heures - 40) Paie = RegPaie + SupPaie Entrer Écrire Nom,Numéro, Paie Retourner RegPaie = Taux * 40 Lire Nom,Numéro, Heures,Taux Module TraiterEmployé Compte 10? Oui Non TraiterEmployé Compte = Compte + 1 Début Fin Compte = 1

20 Modules simples (suite) Exemple (suite) \\ Module principal DÉBUT Compte = 1 TANTQUE Compte 10 FAIRE EXÉCUTER TraiterEmployé Compte = Compte + 1 FINTANTQUE FIN \\ Module TraiterEmployé ENTRER LIRE Nom, Numéro, Heures Taux SI Heure > 40 ALORS RegPaie = Taux * 40 SupPaie = Taux * (Heures-40) Paie = RegPaie + SupPaie SINON Paie = Heures * Taux FINSI ÉCRIRE Nom, Numéro, Paie RETOURNER

21 Exercice Étant données les équations de conversion de températures suivantes : C = ( F – 32) * 5/9 F = C 9/5 + 32 Écrivez un algorithme, composé de trois modules, pouvant convertir une température d'une échelle à l'autre, au choix de l'utilisateur –Un module auxiliaire affiche en C une température lue en F –Un module auxiliaire affiche en F une température lue en C –Un module principal affiche un menu demandant quelle type de conversion à effectuer, et appelle le module auxiliaire correspondant

22 Exercice (suite) Modules auxiliaires \\ Module CelÀFahr ENTRER ÉCRIRE "En Celsius?" LIRE Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahr, "Fahrenheit" RETOURNER Module CelÀFahr Entrer Retourner Écrire TempFahr TempFahr = (Celsius * 9/5) + 32 Écrire Celsius \\ Module FahrÀCel ENTRER ÉCRIRE "En Fahrenheit?" LIRE Fahr TempCel = (Fahr - 32) * 5/9 ÉCRIRE TempCel, "Celsius" RETOURNER Module FahrÀCel Entrer Retourner Écrire TempCel TempCel = (Fahr – 32) * 5/9 Écrire Fahr

23 Exercice (suite) Module principal \\ Module principal DÉBUT ÉCRIRE "1 – Celsius à Fahrenheit" ÉCRIRE "2 – Fahrenheit à Celsius" LIRE Code SI Code = 1 ALORS EXÉCUTER CelÀFahr SINON SI Code = 2 ALORS EXÉCUTER FahrÀCel FINSI FIN Oui Non Début Lire Code Fin CelÀFahr Écrire "1 – Celsius à Fahrenheit Code = 1? Écrire "2 – Fahrenheit à Celsius Oui Non CelÀFahr Code = 2?

24 Devoir #6 Énoncé du devoir disponible sur mon site WEB (~jlemoe) Calcul de taxe sur véhicule Vous devez soumettre –Un fichier LARP (la solution) –Un fichier Visio (l'organigramme) –Un fichier Word (page titre) À remettre avant le prochain cours (voir détails dans le devoir)


Télécharger ppt "Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE."

Présentations similaires


Annonces Google