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

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Algorithmique (suite)
Introduction à l’Algorithmique
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
EXERCICE 2.1 : APRES AVOIR DEMANDE LA SAISIE DUN NOMBRE POSITIF (ERREUR DE SAISIE A TRAITER). AFFICHER LE DECOMPTE EN PARTANT DE CE NOMBRE JUSQUÀ ARRIVER.
DECLARATION DE VARIABLES
Algorithmique Résume.
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Exercices Algorithmiques
C.
Projet Combien? Ma première machine : la machine Construction Ensemble G. Tisseau, J. Duma, H. Giroire, F. Le Calvez, M. Urtasun.
GENERALITES SUR LES MOUVEMENTS VIBRATOIRES.
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
Algorithmique Formation filée de mathématiques 9 décembre 2010.
Point sur la migration STAR - Elyx.
Faire demande en ligne aux universités de lOntario Demande en ligne OUAC 101 pour les élèves du secondaire en Ontario
Petite introduction au logiciel de traitement statistique SPSS
Courbes elliptiques.
Les traitements à plat Cette partie du cours abordera les traitements élémentaires d’une enquête. Les analyses uni-variées, ou tris à plat, sont en fait.
Formation sur le fonctionnement du Centre des médias dans le cadre du premier cours en Littérature Mode demploi pour lexercice pratique.
F.A.Q. Application Millenium 3 Virtual Display
Bienvenue sur le Wiki de domaines de compétences! Accédez au wiki sur la barre de navigation en appuyant sur longlet « Wiki de compéten- ces ».
Création des pièces d'un puzzle avec Photoshop
AIDE WALLPASS-VNC Note : Les photos décran peuvent différer selon les versions et les systèmes. Vous pouvez quitter ce PPS par la touche « Echap » ou «
DIBA p r o g i c i e l. DIBA est un progiciel dédié à la gestion: des compagnies dassurance. des cabinets de courtage Il est entièrement paramétrable.
Processworks / 3DQuikForm Présentation Denis AUGUSTE Lycée de Lorgues.
Section VIII Modularité Partie II
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Section VI Structures répétitives (suite)
Automatisme Les Systèmes automatisés I - Introduction => Les Systèmes Automatisés Simples ou complexes, les systèmes automatisés sont partout dans notre.
Les bases de l’Algorithmique
Introduction à la programmation (420-PK2-SL) cours 3 Gestion des applications Technologie de linformation (LEA.BW)
La Kessamo « » (Caisse à mots)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Section IV Structures conditionnelles
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
Récursivité.
Introduction à l’algorithmique
Section XI Traitement de fichiers
Algorithmique et Programmation
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
La programmation objet Illustration de la POO en Pascal
Programmation fonctionnelle Le langage LISP
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Algorithmes et résolution de problèmes FGE
Introduction à l’algorithmique
Procédures et fonctions
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
LANGAGE PASCAL Introduction rapide….
Introduction à la programmation (420-PK2-SL) cours 3 Gestion des applications Technologie de l’information (LEA.BW)
Déclaration des données constantes Déclaration des données variables
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Décomposition et paramétrage des algorithmes
Les tests.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
La programmation.
La Kessamo « » (Caisse à mots)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
Organisation des données Introduction à la programmation Traitements simples Affectation Parcours Définition du tableau Les Tableaux Mise en situation.
Introduction à la récursivité
Démarche de résolution
Introduction à la programmation (420-PK2-SL) cours 6 Gestion des applications Technologie de l’information (LEA.BW)
Scripts et fonctions Instructions de contrôle
Tour rapide d’un premier programme SPARC v9
Algorithmique Tableaux de données
Diffusion Nationale TOULOUSE -Mai 2006 STSWEB Rattacher Services et ARE Gestion individuelle des services et ARE.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Introduction à l’Informatique Licence SPI Mme Delmotte.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
Seconde 8 Module 12 M. FELT 08/12/ Module 12: Algorithmique #3  Objectif:  Instruction conditionnelle 2.
Transcription de la présentation:

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

Contenu Introduction Modules –Simples Exemples Exercice Devoir #6

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

Exercice Étant données les équations de conversion de températures suivantes : C = ( F – 32) * 5/9 F = C 9/ É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

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

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?

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)