Top Banner
Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE
24

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

Apr 03, 2015

Download

Documents

Clément Gobert
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Section VII Programmation modulaire Algorithmes et résolution de problèmes 18279 FGE.

Section VII

Programmation modulaire

Algorithmes et résolution de problèmes18279 FGE

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

Contenu

• Introduction

• Modules– Simples

• Exemples

• Exercice

• Devoir #6

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

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

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

Introduction (suite)• Solution (pseudo-code)

\\ Lire le nombre de cours à traiterÉCRIRE "Combien de cours?"LIRE NombreCours

\\ InitialisationTotalHeures = 0TotalNotes = 0

\\ Traiter chaque coursPOUR 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 FINSIFINPOUR

\\ Calculer et afficher la MPCMoyenne = TotalNotes / TotalHeuresÉCRIRE "Moyenne pondérée cumulative = ", Moyenne

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

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

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

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 ConvertirNoteLIRE NoteSI Note = "A+" OU Note = "a+" ALORS Valeur = 4SINON SI Note = "A" OU Note = "a" ALORS Valeur = 4SINON SI Note = "A-" OU Note = "a-" ALORS Valeur = 3.7SINON SI Note = "B+" OU Note = "b+" ALORS Valeur = 3.3SINON SI Note = "B" OU Note = "b" ALORS Valeur = 3SINON SI Note = "B-" OU Note = "b-" ALORS Valeur = 2.7SINON SI Note = "C+" OU Note = "c+" ALORS Valeur = 2.3SINON SI Note = "C" OU Note = "c" ALORS Valeur = 2SINON SI Note = "C-" OU Note = "c-" ALORS Valeur = 1.7SINON SI Note = "D+" OU Note = "d+" ALORS Valeur = 1.3SINON SI Note = "D" OU Note = "d" ALORS Valeur = 1SINON SI Note = "D-" OU Note = "d-" ALORS Valeur = 1SINON SI Note = "EC" OU Note = "ec" ALORS Valeur = 0SINON ÉCRIRE "ERREUR: note invalide" Valeur = -1FINSIÉCRIRE Valeur

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

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

\\ InitialisationTotalHeures = 0TotalNotes = 0

\\ Traiter chaque coursPOUR 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 FINSIFINPOUR

\\ Calculer et afficher la MPCMoyenne = TotalNotes / TotalHeuresÉCRIRE "Moyenne pondérée cumulative = ", Moyenne

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

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 A Module B Module C

Module D Module E

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

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

.

.

.

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

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 principalDÉBUT Compte = 0 TANTQUE Compte < 10 FAIRE EXÉCUTER TraiterEmployé Compte = Compte + 1 FINTANTQUEFIN

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

Modules (suite)

• Les modules auxiliaires– Ce sont les modules exploités directement ou

indirectement par le module principal

Module principal

Module A Module B Module C

Module D Module E

Modules auxiliaires

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

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 duflux

Entrer

Retourner

.

.

.

\\ Module auxiliaireENTRER . . .RETOURNER

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

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

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

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

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

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_AENTRER ÉCRIRE "Module_A"RETOURNER

\\ Module principalDÉBUT ÉCRIRE "Allo" EXÉCUTER Module_A ÉCRIRE "Bye"FIN

12

3

45

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

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_BENTRER ÉCRIRE "Module_B"RETOURNER Module_A

\\ Module Module_AENTRER ÉCRIRE "Module_A" EXÉCUTER Module_BRETOURNER

\\ Module Module_CENTRER ÉCRIRE "Module_C" EXÉCUTER Module_BRETOURNER

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

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

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

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

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

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

ModuleTraiterEmployé

Compte 10?

Oui

Non

TraiterEmployé

Compte = Compte + 1

Début

Fin

Compte = 1

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

Modules simples (suite)

• Exemple (suite)

\\ Module principalDÉBUT Compte = 1 TANTQUE Compte 10 FAIRE EXÉCUTER TraiterEmployé Compte = Compte + 1 FINTANTQUEFIN

\\ 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, PaieRETOURNER

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

Exercice

• Étant données les équations de conversion de températures suivantes :

C = (F – 32) * 5/9F = 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

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

Exercice (suite)• Modules auxiliaires

\\ Module CelÀFahrENTRER ÉCRIRE "En Celsius?" LIRE Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahr, "Fahrenheit"RETOURNER

Module CelÀFahrEntrer

Retourner

Écrire TempFahr

TempFahr = (Celsius * 9/5) + 32

Écrire Celsius

\\ Module FahrÀCelENTRER É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

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

Exercice (suite)

• Module principal

\\ Module principalDÉ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 FINSIFIN

Oui

Non

Début

Lire Code

Fin

CelÀFahr

Écrire "1 – Celsius à Fahrenheit

Code = 1?

Écrire "2 – Fahrenheit à Celsius

Oui

NonCelÀFahr

Code = 2?

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

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)