1 / 27

Section VIII Modularité Partie II

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. Début. Fin. Révision - modules. Le module principal

jaeger
Download Presentation

Section VIII Modularité Partie II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Section VIIIModularitéPartie II Algorithmes et résolution de problèmes 18279 FGE

  2. Contenu • Révision (modules simples) • Modules • Avec paramètres • Avec valeur de retour • Exemples • Exercices • Dont un à remettre • Devoir #7

  3. Début . . . Fin 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 moduleayant les symboles Début et Fin

  4. Module principal Module A Module B Module C Module D Module E Révision – modules (suite) • Les modules auxiliaires • Ce sont les modules exploités directement ou indirectement par le module principal Modules auxiliaires

  5. Entrer . . . Retourner 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 retourneau module de provenance duflux \\ Module auxiliaire ENTRER . . . RETOURNER

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

  7. Entrer ModuleTraiterEmployé Début Lire Nom,Numéro, Heures,Taux Compte = 1 Heures > 40? Non Oui Paie = Heures * Taux Reg = Taux * 40 Compte  10? Non Sup = Taux * 1.5 * (Heures - 40) Oui TraiterEmployé Paie = Reg + Sup Compte = Compte + 1 Écrire Nom,Numéro, Paie Fin Retourner Révision – modules simples (suite) • Exemple

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

  9. 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) \\ Appel de module EXÉCUTER Nom_du_module(V1, V2, V3, …) Nom_du_module(V1, V2, V3, …)

  10. 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 \\ Module appelé ENTRER V1, V2, V3, … Entrer V1, V2, V3, …

  11. 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 0C à 20C converties en F • Module auxiliaire : reçoit la température en C via un paramètre et affiche la température équivalente en F.

  12. Début TempCel = 0 TempCel  20? Non Oui Farhrenheit(TempCel) TempCel = TempCel + 1 Fin Modules avec paramètres (suite) • Exemple (suite) • Module principal \\ Module principal DÉBUT POUR TempCel = 0 JUSQU'À 20 FAIRE EXÉCUTER Fahrenheit(TempCel) FINPOUR FIN

  13. Entrer Celsius TempFahr = (Celsius * 9/5) + 32 Écrire TempFahr Retourner Modules avec paramètres (suite) • Exemple (suite) • Module auxiliaire \\ Module auxiliaire Fahrenheit ENTRER Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahr RETOURNER

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

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

  16. Modules avec paramètres (suite) • Rappel (suite) Arguments(valeurs) \\ Module principal DÉBUT EXÉCUTER AfficheDonnées("Gustave", 2021234, 75) FIN \\ Module auxiliaire AfficheDonnées ENTRER Nom, Numéro, Note ÉCRIRE Nom, Numéro, Note RETOURNER Paramètres (variables)

  17. Modules avec valeur de retour • Les exemples de modules auxiliaires vus à date affichent leurs résultats à l'écran \\ 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 \\ Module Fahrenheit ENTRER Celsius TempFahr = (Celsius * 9/5) + 32 ÉCRIRE TempFahr RETOURNER \\ Module AfficheDonnées ENTRER Nom, Numéro, Note ÉCRIRE Nom, Numéro, Note RETOURNER

  18. 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 + 1 FIN

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

  20. 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 trois ENTRER Nombre1, Nombre2, Nombre3 Res = Nombre1 SI Nombre2 > Res ALORS Res = Nombre2 FINSI SI Nombre3 > Res ALORS Res = Nombre3 FINSI RETOURNER Res Valeur de retour

  21. 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 principal DÉBUT LIRE X, Y, Z M =EXÉCUTER MaximumDeTrois(X, Y, Z) ÉCRIRE "Maximum =", M ÉCRIREEXÉCUTER MaximumDeTrois(X*17, 133, Z%2) FIN M = MaximumDeTrois(X, Y, Z)

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

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

  24. Exercice #1 (suite) • Solution • Module LireOpérateur \\ Module auxiliaire LireOpérateur ENTRER 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

  25. Exercice #1 (suite) • Solution (suite) • Module Calculer Module principal \\ Module auxiliaire Calculer ENTRER 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 FINSI RETOURNER Res \\ Module principal DÉBUT \\ Lire données ÉCRIRE "Deux valeurs?" LIRE N1, N2 Op = LireOpérateur \\ Afficher le résultat Res = Calculer(Op, N1, N2) ÉCRIRE "=", Res FIN

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

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

More Related