Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLauncelot Guichard Modifié depuis plus de 10 années
1
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Résolution structurée des problèmes
2
Hiver 2010JGA Beaulieu Synopsis Processus de résolution des problèmes Exemple Exercice
3
Hiver 2010JGA Beaulieu Processus de résolution des problèmes C est un langage structuré qui se porte bien au processus structuré de résolution des problèmes Une méthode en 6 étapes est présentée Peut être utilisée pour les problèmes en ingénierie ou en science Suppose quun ordinateur sera utilisé pour résoudre les problèmes
4
Hiver 2010JGA Beaulieu Design structuré 1.Énoncé le problème clairement (besoins) 2.Décrivez linformation des entrées sorties 3.Travailler le problème à la main (calculatrice) 4.Développez une solution (algorithme) 5.Convertissez lalgorithme en code 6.Testez le programme avec des données variées Exceptions et conditions frontières
5
Hiver 2010JGA Beaulieu Problème exemple Nous allons maintenant utilisé la méthode sur un problème Exemple: Calculez la distance entre deux points sur un plan
6
Hiver 2010JGA Beaulieu 1 - Énoncé le problème clairement (besoins) Nous devons capturer les besoins du programme Que doit faire le programme? Cest très important pcq notre développement en entier est basé sur cette description. On ne doit pas seulement régurgiter lénoncé de problème, on doit penser au contexte 1.Étant donné 2 points dans un plan calculer la distance en ligne droite (Euclidienne) et afficher cette distance.
7
Hiver 2010JGA Beaulieu 2. Décrivez linformation des entrées sorties Décrivez en détails les valeurs données (entrées) et les valeurs calculées (sorties) Décrives le type, grandeur et unités de ces valeurs E.g. entier positifs, réels, [-3,-2,-1,0,1,2,3] 2.Pour notre problème donné: a.Entrées sont deux points Euclidiens (x1, y1) et (x2, y2) où chaque coordonnée peut être un nombre réel b.La sortie est la distance (d) qui est aussi un nombre réel
8
Hiver 2010JGA Beaulieu 3. Travailler le problème à la main Travailler le problème à la main utilisant des diagrammes et un ensemble de données simple. Vous pourriez avoir à consulter des références Trouvez des équations ou algorithmes (Wikipedia, Shaum) 3.Considérez deux points : p1 = (1,5) et p 2 = (4,7)
9
Hiver 2010JGA Beaulieu 3. Travailler le problème à la main Vous pouvez faire plus dun exemple pour vous convaincre que vous comprenez les complexités du problème Ex: en utilisant des points non entiers ou des valeurs négatives. p1 = (-1.5,5.275) et p2 = (5.25,-3.775) p1 = (0,5) et p2 = (-3,0)
10
Hiver 2010JGA Beaulieu 4. Développez une solution Un algorithme est une solution par étape. Décrivez la solution pour un lecteur ( autre que vous ) Ceci demande souvent de décomposer le problème en plus petits problèmes ( on revient à ça bientôt ) Approche structurel Des algorithmes peuvent déjà exister … recherche 4.Décomposition du problème 1.Obtenir les valeurs dentrée (x,y) des 2 points 2.Calcul la longueur de chaque côté 3.Calcul lhypoténuse (distance) 4.Retourne ou affiche la distance
11
Hiver 2010JGA Beaulieu 5. Convertissez lalgorithme en code Si la décomposition du problème est complète, elle nous donne tout ce que lon a de besoin Entrées et leurs types Sorties et leurs types Procédure pour calculer les sorties à partir des entrées Format de la sortie Ensuite implémentation du code en C
12
Hiver 2010JGA Beaulieu /******************************************************************************* * * File: distanceexample.c * * Author: Dr. Don McGaughey * * Description: Given two points in a plane, this program will give the * Euclidean distance between them and output it to the console * * Revision History: Created September 2008 * *******************************************************************************/ #include int main(void) { /* declare and initialize variables */ //p1 = (1,5) and p2 = (4,7) double x1=1, y1=5, x2=4, y2=7; double side1, side2, distance; /* Compute the lengths of the sides */ side1 = x2-x1; side2 = y2-y1; /*Compute the distance */ distance = sqrt(side1*side1 + side2*side2); /* Print Distance */ printf("The distance between (%5.2f,%5.2f) and (%5.2f,%5.2f) is %5.2f\n", x1,y1,x2,y2,distance); /* Exit Program */ getchar(); return(0); }
13
Hiver 2010JGA Beaulieu 5. Notes sur le code Lentête de documentation est requise La bibliothèque de math est utilisée (pas besoin de réinventer la roue) Pour changer les points, le code doit être recompilé Arguments de ligne de commande ou entrée par fichier…
14
Hiver 2010JGA Beaulieu 6. Tests Même si le code compile ( la syntaxe est bonne ), il peut y avoir des erreurs ( sémantique est mauvaise ) Exécutez le code sur des cas connues (oracles) pour obtenir les bons résultats Il est en général impossible de vérifier touts les cas avec votre programme Élaborez de bons tests avec cas frontières et exceptions
15
Hiver 2010JGA Beaulieu 6. Tests Pour nos trois cas de test:
16
Hiver 2010JGA Beaulieu Cest maintenant votre tour!!! Je prend un prêt pour un quelques mois à un taux dintérêt. Jai besoin dun programme pour calculer le montant des mes taux mensuels Utilisez la méthode que nous venons de voir pour dessiner le code qui implémente le calculateur des paiments
17
Hiver 2010JGA Beaulieu Solution (1/4) 1.Étant donné une valeur de courrante, un taux dintérêt, et un nombre de périodes, calculez lannuité équivalant 2.Entrées et sorties Entrées Valeur du prêt (P) est un nombre réel Lintérêt mensuel (i) est un nombre réel Nombre de périodes (n) est un nombre entier Sorties: Annuité équivalent (A) est un nombre réel 3.Exemple à la main P = $10,000, i = 1%, n = 60 mois
18
Hiver 2010JGA Beaulieu Solution (2/4) 4.Développement de lalgorithme Ceci peut vous demander de retourner à vos notes de IGF 293 1.Donnez ou entrez la valeur courante, le taux dintérêt, et le nombre de périodes 2.Calcul la valeur du facteur [P/A, i, n] 3.Calcul lannuité équivalent 4.Afficher lAnnuité
19
Hiver 2010JGA Beaulieu Solution (3/4) /**************************************************************************** * File: paymentCalculator.c * * Author: Prof Sylvain P. Leblanc * * Description: Given a present value, an interest rate and a number of periods, * this program calculates the equivalent annuity * * Revision History: Created 22 December 2009 * ****************************************************************************/ #include int main(void) { /* declare and initialize variables */ //p = 10000, i = 0.01 and n = 60 double p=10000, i=0.01; int n=60; double factor, a; /* Compute the value of factor [P/A,i,n] */ factor = i*pow(1+i,n)/(pow(1+i,n)-1); /*Compute the equivalent annuity */ a=p*factor; /* Print the annuity */ printf("The annuity equivalent to a present value of $%5.2f, an interest " "rate of %2.2f, and a number of period of %2d is $%5.2f\n", p,i,n,a); /* Exit Program */ getchar(); return(0); } 5 – Convertis lalgorithme en code
20
Hiver 2010JGA Beaulieu Solution (4/4) 6.Tests P = $10,000, i = 1%, n = 60 P = $10,000, i = 99%, n = 60 P = $10,000, i = 0%, n = 60 On a un problème.!!!
21
Hiver 2010JGA Beaulieu Quiz Time Which of the following is NOT part of the design methodology? a.Problem statement b.Testing c.Celebratory beer d.Input and output You are to calculate the current in a resistor (R=V/I). Give a example of tests you should perform on this code.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.