Algorithmique et Programmation

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
La Gestion de la Configuration
Séminaire Chefs de File Programme MED PRESAGE-CTE Marseille, le 26 mai 2010.
Algorithmique (suite)
Algorithmique Résume.
II- Les structures de contrôle à condition d’arrêt
Applications sur les algorithmes récurrents avec Les Matrices
C.
INTRODUCTION.
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Section VI Structures répétitives (suite)
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les bases de l’Algorithmique
Principes de programmation (suite)
Continuité Introduction Continuité Théorème des valeurs intermédiaires
Initiation à la programmation et algorithmique
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Partie 1 Etude de l'existant
Résumé présention excel
Introduction à l’algorithmique
Démarche de résolution de problèmes
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Auto Exterior Scoop SQP PROCESSUS 24 juillet 2006 Version validée V01.
Algorithmique et Programmation
Techniques de test Boulanger Jean-Louis.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Abder Alikacem Semaine 3 Bâtir un algorithme
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Manipulation de formulaires en Javascript
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Module 2 : Préparation de l'analyse des performances du serveur
8PRO107 Éléments de programmation
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programmation non procédurale Le projet ECOLE 2000
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Programmation linéaire en nombres entiers : les méthodes de troncature
Procédures et fonctions
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Le langage C Structures de données
Institut Supérieur des Sciences Appliquées et de Technologie Sousse
Décomposition et paramétrage des algorithmes
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Introduction au langage C Fonctions et Procédures
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.
Les types composés Les enregistrements.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Initiation à l’Algorithmique
Informatique et Sciences du Numérique
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Algorithmique Tableaux de données
La conception détaillée. Objectifs Décrire la solution opérationnelle - étude détaillée des phases informatiques du MOT (écrans, états, algorithmes, …),
Algorithmique Boucles et Itérations
Introduction à l’Informatique Licence SPI Mme Delmotte.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Les bases de l’Algorithmique
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Algorithmique - Lecture / Ecriture - M me DJEBOURI. D. Faculté de Médecine salle informatique Année universitaire
Transcription de la présentation:

Algorithmique et Programmation A. Alikacem

Méthodologie de construction de programmes

Problème Concevoir un algorithme permettant de calculer les valeurs minimum et maximum, ainsi que l’écart-type d’une série de notes. L’utilisateur doit spécifier le nombre de notes à saisir et leur moyenne (connue d’avance), puis doit entrer les différentes notes en question, et afficher les différentes valeurs statistiques souhaitées. Une fois conçu, implanter un programme C.

Pré-Analyse Problème Reconnaissance du problème Au besoin, décomposition du problème en sous-problèmes Formulation du problème (spécification, contraintes, etc.) Résolution des ambiguïtés Spécification des différents objectifs Préciser les données en jeu À la fin de cette étape, les objectifs devraient être clairement identifiés, ainsi que la nature des données qui seront manipulées. Toute information pouvant être utile pour la phase suivante doit être mentionnée

Pré-Analyse Objectif: Étant donnés une liste de notes et leurs moyennes, calculer l’écart-type ainsi que les notes minimum et maximum. Les données en questions correspondent à des entiers ou des réels?  les notes et la moyenne, ainsi que les différentes résultats correspondent à des nombres réels. Au fait, comment on calcul l’écart-type?

Analyse et Conception Pour chaque sous-problème identifié dans la tache 2.: Identification des besoins: en donner des noms appropriés, des types appropriés et une brève description de leur emploi Identification des tâches et des relations entre elles À ce niveau, on doit avoir les différents commentaires de spécification de chaque bloc qui sont conçus, ainsi que les différents étapes correspondant au corps du bloc. Reprendre les différentes étapes identifiées en 4.ii, et les décrire par des actions élémentaires et/ou des appels à d’autres blocs À la fin de cette étape, tous les blocs ont été conçus. Ces dernières doivent contenir: Des commentaires de spécifications Des assertions Idéalement, des commentaires généraux

Affichage de différents résultats Objectif Besoins n notes moyenne Algorithme Stat Affichage de différents résultats

Début d’analyse Bloc Principal (B1): Calcul de différentes statistiques { Objectif: Saisir des notes et une moyenne et afficher des stats } { Méthode: Utiliser la formule de calcul de l’écart-type } { Besoins: un entier n, des nombres réels, notes, correspondant aux notes ainsi qu’un nombre réel, moyenne, correspondant à la moyenne } { Connu: NOTE_MIN = 0, NOTE_MAX = 100 } { Entrée: Aucune } { Sortie: Aucune } { Résultats: Afficher les différentes statistiques souhaitées } { Hypothèses: n >= 2, notes et moyenne  [NOTE_MIN .. NOTE_MAX] } Début { Saisie de la variable n, nombre de notes à saisir } { Saisie de la moyenne } { Initialisation des différentes variables temporaires qui contiendront les résultats } { Saisie et Traitement des différentes notes } { Calcul de l’écart-type } { Affichage des résultats } { A: Les différentes statistiques ont été calculées et affichées } Fin

Conception de l’algorithme Bloc Principal (B1): Calcul de différentes statistiques { Commentaires de spécification} Début { Saisie de la variable n, nombre de notes à saisir } Afficher "Entrez le nombre de notes à saisir " Demander n { A: n >= 2 } { Saisie de la moyenne } Afficher "Entrez la moyenne "   Demander moyenne { A: moyenne  [NOTE_MIN .. NOTE_MAX] } { Initialisation des différentes variables temporaires qui contiendront les résultats } Min  NOTE_MAX { Min contiendra la valeur minimum } Max  NOTE_MIN { Max contiendra la valeur maximum } Somme  0 { Somme permet de calculer la somme utilisée dans le calcul de l’écart type } …

Conception de l’algorithme { Saisie et Traitement des différentes notes } Répéter i  [ 1 .. n ] Début { Saisir une note } Afficher "Entrez la ", i, "ème note : " Demander Note { A : note  [NOTE_MIN .. NOTE_MAX] }   Calcul du carré de (note - moy) (Bloc B2) { A : Carré contient le résultat de ( note – moy )2 } Somme  Somme + Carré { Cumul des notes } Si ( Note > Max ) Alors { Mise à jour de la valeur maximum } Max  Note Fin Si ( Note < Min ) Alors { Mise à jour de la valeur minimum } Min  Note …

Conception de l’algorithme { Calcul de la variance } Variance  Somme / ( n – 1 ) { Calcul de l’écart-type } Calcul de la racine carré de la variance (Bloc B3) { A : EcarType contient la racine carré de la variance, soit l’écart type } { Affichage des résultats } Afficher " La valeur minimum est : ", Min Afficher " La valeur maximum est : ", Max Afficher " L’écart type est : ", EcarType { A: Les différentes statistiques ont été calculées et affichées } Fin

Implantation En utilisant un langage de programmation approprié, traduire chaque bloc conçu dans la phase précédente (mis à part le bloc principal, il n’est pas nécessaire de traduire et de reproduire les différents commentaires de spécification). À ce niveau, certains choix d’implantation peuvent être fait. De plus: Transformer les entrées du bloc en paramètres de fonction. Si le bloc admet plusieurs sorties, il est alors nécessaire d’ajouter des paramètres à la fonction qui correspondront à des pointeurs. Si le bloc admet des pré-conditions, ajouter un paramètre, codeErr, à la fonction associée permettant de traiter le cas où les pré-conditions ne sont pas vérifiées au moment de l’exécution de la fonction. Toutes les variables manipulées doivent être déclarées, au début de la fonction, avec un type approprié et un commentaire précisant son rôle dans la fonction. Ré-écrire tous les commentaires de type Assertion dans la fonction. Créer un fichier .h dans lequel on met le prototype de chaque fonction définie ainsi que son interface: ce dernier est composé des pré-conditions, post-conditions et de la valeur retournée. À ce niveau, on doit avoir avoir: Un fichier Principal.c contenant la traduction du bloc principal en fonction main(), avec tous les commentaires de spécification et les commentaires généraux. Aussi, ne pas oublier d’inclure le fichier Interface.h (#include « Interface.h"). Un fichier Interface.h contenant les différents prototypes de fonctions accompagnés par leur interface. Un fichier Fonctions.c contenant la définition des différentes fonctions en jeu.

Tests et Vérification Grâce à un main bidon, il est possible de tester chaque fonction d’une manière individuelle. Encore une fois, le choix des données à tester doit être judicieux. Et à chaque fois, on vérifie que la post-condition de la fonction traitée est bien vérifiée. Une fois les fonctions individuelles testées, on peut alors compiler et faire l’édition de lien de tout notre programme, établir un jeu d’essai adéquat (cas désirables et cas indésirables) et tester le tout. Lors des tests, s’il y a des problèmes (bogues) qui sont détectés, il faut alors revenir à une étape précédente de notre méthodologie pour identifier clairement la source du problème et la corriger. Plus on le recul en arrière est grand, plus les bogues seront coûteux. Lorsque tout a été vérifié correctement, on est censé avoir en main 2 dossiers: Une documentation du problème et de sa résolution, à travers tous les algorithmes qui sont très bien documentés. Une implantation en C de la solution du problème: dans ce cas, le code n’est pas aussi documenté que les algorithmes, mais on garde l’essentiel (commentaires généraux, Interface des fonctions, etc.). De cette manière, la partie codée en C constitue le programme informatique, et la partie algorithmique correspond à sa documentation détaillée.

En résumé! La méthodologie de développement se compose de 4 grandes phases: Analyse et conception des blocs algorithmiques. Codification des blocs (en C). Test et vérification du programme réalisé. Correction, au besoin, du programme.