section viii modularité partie ii algorithmes et résolution de problèmes 18279 fge

27
Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Upload: claude-legrand

Post on 03-Apr-2015

110 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Section VIIIModularitéPartie II

Algorithmes et résolution de problèmes18279 FGE

Page 2: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Contenu

• Révision (modules simples)

• Modules– Avec paramètres– Avec valeur de retour

• Exemples

• Exercices– Dont un à remettre

• Devoir #7

Page 3: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision - modules

• 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 4: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision – 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 5: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision – 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 6: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision – 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 7: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision – modules simples

(suite)• Exemple

Heures > 40?OuiNon

Paie = Heures * Taux

Sup = Taux * 1.5 * (Heures - 40)

Paie = Reg + Sup

Entrer

Écrire Nom,Numéro, Paie

Retourner

Reg = Taux * 40

Lire Nom,Numéro, Heures,Taux

ModuleTraiterEmployé

Compte 10?

Oui

Non

TraiterEmployé

Compte = Compte + 1

Début

Fin

Compte = 1

Page 8: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Révision – 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 Reg = Taux * 40 Sup = Taux * 1.5 * (Heures-40) Paie = Reg + Sup SINON Paie = Heures * Taux FINSI ÉCRIRE Nom, Numéro, PaieRETOURNER

Page 9: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres

• Les paramètres permettent à un module auxiliaire de recevoir des valeurs directement du module appelant

• Module appelant : énumère entre parenthèses les valeurs transmises dans l'opération d'appel

où V1, V2, V3, … sont des valeurs (d'expressions et/ou variables)

Nom_du_module(V1, V2, V3, …)

\\ Appel de moduleEXÉCUTER Nom_du_module(V1, V2, V3, …)

Page 10: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Module appelé : reçoit les valeurs

transmises via des variables énumérées dans l'opération d'entrée

où V1, V2, V3, … sont des variables

Entrer V1, V2, V3, …

\\ Module appeléENTRER V1, V2, V3, …

Page 11: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Exemple

– Algorithme transformant une séquence de températures Celsius en températures Fahrenheit équivalentes

– Module principal : boucle affichant les températures de 0C à 20C converties en F

– Module auxiliaire : reçoit la température en C via un paramètre et affiche la température équivalente en F.

Page 12: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Exemple (suite)

– Module principal

\\ Module principalDÉBUT POUR TempCel = 0 JUSQU'À 20 FAIRE EXÉCUTER Fahrenheit(TempCel) FINPOURFIN

TempCel 20?

Oui

Non

Farhrenheit(TempCel)

TempCel = TempCel + 1

Début

Fin

TempCel = 0

Page 13: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Exemple (suite)

– Module auxiliaire

\\ Module auxiliaire FahrenheitENTRER Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahrRETOURNER

Entrer Celsius

Retourner

Écrire TempFahr

TempFahr = (Celsius * 9/5) + 32

Page 14: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Un module auxiliaire peut accepter

plusieurs paramètres– Le module appelant doit fournir le nombre

adéquat de valeurs lors de l'appel

• À se rappeler– Le module appelant fourni des valeurs au

module appelé (entre parenthèses)– Le module appelé reçoit ces valeurs dans des

variables

Page 15: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Paramètre : variable apparaissant à l'entrée

d'un module et destinée à recevoir une valeur fournie lors de l'appel

• Argument : valeur fournie lors de l'appel d'un module et destinée à être reçue dans un paramètre

• Lors de l'appel d'un module, les arguments sont copiés dans les paramètres

Page 16: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec paramètres (suite)• Rappel (suite)

\\ Module principalDÉBUT EXÉCUTER AfficheDonnées("Gustave", 2021234, 75)FIN

\\ Module auxiliaire AfficheDonnéesENTRER Nom, Numéro, Note ÉCRIRE Nom, Numéro, NoteRETOURNER

Arguments(valeurs)

Paramètres(variables)

Page 17: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec valeur de retour• Les exemples de modules auxiliaires vus à

date affichent leurs résultats à l'écran

\\ Module AfficheDonnéesENTRER Nom, Numéro, Note ÉCRIRE Nom, Numéro, NoteRETOURNER

\\ Module FahrenheitENTRER Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahrRETOURNER

\\ 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 18: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec valeur de retour (suite)• Il est possible pour un module auxiliaire de

retourner un résultat au module appelant– Retourner un résultat ne signifie pas l'afficher,

mais plutôt le remettre au module appelant qui pourra en disposer comme bon lui semble

• Analogie– Lorsqu'on demande la valeur

d'une variable, cette valeur n'est pas affichée à l'écran

DÉBUT LIRE X Y = X + 1FIN

Page 19: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec valeur de retour (suite)• Les module auxiliaires ne retournant pas un résultat

sont communément appelés des procédures ou sous-routines

• Ces modules sont terminés par RETOURNER• Les module auxiliaires retournant un résultat sont

communément appelés des fonctions• Le résultat à retourné est indiquer à droite de

l'identificateur RETOURNER

• Le résultat retourné est appelé la valeur de retour du module

Page 20: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec valeur de retour (suite)• Exemple

– Module auxiliaire retournant le plus grand de trois nombres fournis en paramètres\\ Module auxiliaire MaximumDeTrois\\ Reçoit trois valeurs comme paramètres\\ Retourne la plus grande des troisENTRER Nombre1, Nombre2, Nombre3 Res = Nombre1 SI Nombre2 > Res ALORS Res = Nombre2 FINSI SI Nombre3 > Res ALORS Res = Nombre3 FINSIRETOURNER Res Valeur de retour

Page 21: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Modules avec valeur de retour (suite)• Le module appelant peut récupérer la valeur de

retour comme on obtient la valeur d'une variable

• Dans le pseudo-code, le mot-clé EXÉCUTER peut être omis lors de l'appel à une fonction (i.e. un module avec valeur de retour)

\\ Module principalDÉBUT LIRE X, Y, Z M = EXÉCUTER MaximumDeTrois(X, Y, Z) ÉCRIRE "Maximum =", M ÉCRIRE EXÉCUTER MaximumDeTrois(X*17, 133, Z%2)FIN

M = MaximumDeTrois(X, Y, Z)

Page 22: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Exercice #1

• Écrivez un algorithme (pseudo-codes) appliquant un opérateur arithmétique à deux valeurs– Un premier module doit demander à l'utilisateur

d'entrer un opérateur parmi + (addition), (soustraction), (multiplication) ou / (division)

• Le module doit valider l'entrée. Si elle est invalide, un message d'erreur doit être affiché puis la lecture refaite. Ce processus itère jusqu'à ce qu'un opérateur valide soit entré

• Le module doit retourner l'opérateur entré par l'utilisateur

Page 23: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Exercice #1 (suite)

• Suite du problème à résoudre– Écrivez un second module auxiliaire acceptant en

paramètre• Un opérateur arithmétique

• Deux valeurs

Le module doit appliquer l'opérateur aux valeurs et retourner le résultat

– Finalement, écrivez un module principal exploitant ces modules auxiliaires pour lire un opérateur et deux valeurs, puis afficher le résultat obtenu en appliquant l'opérateur aux deux valeurs

Page 24: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Exercice #1 (suite)

• Solution– Module LireOpérateur

\\ Module auxiliaire LireOpérateurENTRER RÉPÉTER ÉCRIRE "Opérateur (+,-,x ou /) ? " LIRE Op SI Op != '+' ET Op != '-' ET Op != 'x' ET Op != '/' ALORS ÉCRIRE "*** Opérateur invalide!" FINSI JUSQU'À Op = '+' OU Op = '-' OU Op = 'x' OU Op = '/' RETOURNER Op

Page 25: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Exercice #1 (suite)

• Solution (suite)– Module Calculer Module principal

\\ Module auxiliaire CalculerENTRER Op, V1, V2 SI Op = '+' ALORS Res = V1 + V2 SINON SI Op = '-' ALORS Res = V1 - V2 SINON SI Op = 'x' ALORS Res = V1 * V2 SINON SI Op = '/' ALORS Res = V1 / V2 FINSIRETOURNER Res

\\ Module principalDÉBUT \\ Lire données ÉCRIRE "Deux valeurs?" LIRE N1, N2 Op = LireOpérateur

\\ Afficher le résultat Res = Calculer(Op, N1, N2) ÉCRIRE "=", ResFIN

Page 26: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Devoir #7

• Énoncé du devoir disponible sur WebCT

• Jeu de craps modulaire (jeu de casino, avec deux dés)

• Vous devez soumettre– Un fichier LARP (le pseudo-code)– Un fichier Word (page titre)

• À remettre avant le prochain cours

Page 27: Section VIII Modularité Partie II Algorithmes et résolution de problèmes 18279 FGE

Exercice #2

• Écrivez le pseudo-code du module suivant– Le nom du module est Puissance– Accepte comme paramètres deux entiers x et p– Calcule et retourne le résultat xp (i.e. x à la puissance p)

• Écrivez aussi l'organigramme d'un module principal exploitant le module Puissance afin de calculer nn+1 pour un entier n lu

• Vous devez remettre à l'enseignant vos algorithmes