La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Partagez cette publication

Cours « projet informatique »
B. Monsuez A. Truchet
Place du cours dans lenseignement Introduction à la programmation en C
1 e annéeAlgorithmique
Projet Matlab Projet informatique
Communications Numériques Système d’exploitation 2 e année
Projet informatique
Voie SIM Voie SMC
12 mars 2010
Voie SIS
B. Monsuez/A. Truchet
1
Intérêt d’enseigner l’art de réaliser un « projet informatique » Mise-en-pratique des connaissances acquises en informatique Permet d’acquérir une maîtrise des régles de programmation et des méthodes d’analyse des problèmes ainsi que de leur informatisation Nécessaire à ceux qui s’orientent vers l’ingéniérie d’étude (mécanique, électronique, systémique, chimie, …) Nécessaire à pour ceux qui s’orientent vers les mathématiques financières (implantation des modèles) Nécessaire à ceux qui se destinent aux technologies de l’information Nécessaire dans la suite du cursus et des stages (nombreux stages d’implantation PPL ou PFE)
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
La conception d’un programme informatique
Du problème au programme
2
Le cycle de conception descendant
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
Les différentes phases de la conception Le cycle de conception en V
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
3
Intérêt et importance d’une bonne compréhension de la méthodologie Développer n’est pas un « art » mais une technique Nécessité d’appréhender les différentes phases de la méthodologie Nécessité de savoir les mettre en œuvre Conséquence d’un bonne méthodologie Réduction des coûts Respect des performances Efficacité accrue Réutilisabilité Evolutivité
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
Les étapes pour réaliser un projet informatique 1. La modélisation fonctionnelle d’un problème Ce que le programmeur doit implanter comme fonctionnalité Les données en entrées Les données en sortie L’exploitation des données La nature du traitement des données La spécification de ces fonctionnalités (définition de manière non ambiguës des données, de l’exploitation et des transformations)
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
4
Les étapes pour réaliser un projet informatique 2. La modélisation opérationnelle Définir l’architecture Organiser de manière logique les diverses actions que le programme va devoir réaliser Définir et séparer ces divers blocs d’opérations logiques Détailler la conception Définir les représentations internes des données Définir les divers algorithmes employés pour effectuer les opérations logiques
Projet informatique
12 mars 2010 B. Monsuez/A. Truchet
Etude pratique « Les tours de Hanoi » Selon une légende très ancienne, il existe un temple où les moines sont chargés de veiller sur 64 disques sacrés. Les disques, qui sont tous de taille différente, forment une tour. Comme ils sont précieux et très fragiles, un disque ne peut être placé sur un disque plus petit . Hélas, le jour vient où quelques travaux dans le temple sont nécessaires et les disques doivent être déplacés. Ils sont très lourds et ne peuvent donc être transportés qu'un par un . De plus, il n'y a qu'un seul endroit assez sacré pour les stocker . Les moines commencent donc à déplacer les disques de la tour d'origine vers la nouvelle place et l'endroit intermédiaire, gardant toujours chacune des trois piles en ordre (le disque le plus large en bas, le moins large en haut).
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
5
Analyse fonctionnelle du problème (Expression du problème) Bouger tous les disques d’une pile vers un nouvel endroit en se servant d’une position auxiliaire en respectant les règles suivantes : On ne peut déplacer qu'un disque à la fois. On ne peut déplacer un disque qui se trouve sous un autre. Un disque ne peut être déposé sur un disque plus petit.
Projet informatique
12 mars 2010 B. Monsuez/A. Truchet
Analyse fonctionnelle (faisabilité du problème) Si n = 1 , un coup suffit ! Si n 2 : = On bouge le petit disque en position intermédiaire, puis le grand sur l'endroit final. Enfin, on pose le petit disque sur le grand. Finalement, on a déplacé la pile en 3 coups. Et si n est plus grand ? On suppose que l’on sait transférer une tour de n-1 disques de l’endroit initial ou intermédiaire vers la position initiale ou la position finale. On bouge les n-1 disques de la position courante vers la position intermédiaire On pose le plus grand disque (le nième) sur l’endroit final. On transfère les n-1 disques de la position intermédiaire vers l’endroit final.
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
6
Spécification fonctionnelle Entrées Le nombre de plateaux La position initiale La position finale Actions Déplacement individuel d’un plateau d’une position vers une autre Séquence de mouvement pour déplacer une tour d’une position vers une autre
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
Architecture du programme Transmet le nombre de plateaux et la position initiale
EntréesLogciaqluceulde
Transmet le nombre de plateaux et la position initiale Projet informatique
Logique d’affichage 12 mars 2010
Désigne les plateaux qu’il est nécessaire de déplacer d’une tour à une autre tour B. Monsuez/A. Truchet
7
Structuration et définition d’une architecture Organisation des blocs Programme par « cohérence fonctionnelle » Interactions Logique Entrées Animation
Transformation des Logique du calcul problèmes complexes Dépla ’une tour en un ensemble de cementdunplateauDévplearsceumneenatudtretourInitialisationdesdonnées problèmes simples
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
Les phases de test Le test unitaire et le test d’intégration Tester individuellement que chacune des fonctions compile Tester individuellement que chacune des fonctions s’exécutent correctement Si une fonction appelle une autre fonction, tester d’abord la fonction appelée puis la fonction appelante Tester que l’ensemble des unités de compilation compile et s’assemble Tester que l’ensemble des fonctions s’exécute correctement Projet informatique 12 mars 2010 B. Monsuez/A. Truchet
8
Les phases de test Valider le programme Exécuter l’ensemble des tests fonctionnels Vérifier que les résultats correspondent aux spécifications Vérifier que le programme est fiable (robuste dans son utilisation vis-à-vis du système et des entrées)
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
En résumé Bien procéder à l’analyse du problème Bien identifier les différents « blocs logiques et fonctionnels » Bien identifier les données manipulées Décomposer chacun des blocs logiques et fonctionnels en un ensemble de sous-tâches bien précises Sélectionner les algorithmes vous permettant de réaliser les sous-tâches Sélectionner les structures de données les mieux adaptées aux algorithmes que vous avez sélectionnés
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
9
Comment structurer un programme en C/C++
La programmation modulaire en C/C++
Intérêt de la programmation modulaire C permet de découper un programme en plusieurs parties nommées souventmodulesou unités de compilation . Cette programmation dite modulaire se justifie pour de multiples raisons : Un programme écrit d'un seul tenant devient difficile à comprendre Une écriture modulaire permet de scinder un programme en plusieur parties Chacune de ces parties peut, si nécessaire, être décomposée à son tour en modules plus élémentaires Le programme principal regroupe les instructions en décrivant les enchaînements entre les parties. la programmation modulaire permet d'éviter des séquences d'instructions répétitives (la notion d'argument permet de paramétrer certains modules). la programmation modulaire permet le partage d'outils communs qu'il suffit d'avoir écrits et mis au point une seule fois.
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
10
La fonction : la seule sorte de module existant en C En C , la fonction peut prendre des aspects différents, pouvant complètement dénaturer l'idée qu'on se fait d'une fonction dans un autre langage : la valeur d'une fonction peut très bien ne pas être utilisée ; Cela n'a d'intérêt que parce que de telles fonctions réalisent une action (ce qui, dans d'autres langages, serait réservé aux sous-programmes ou procédures) ; une fonction pourra ne fournir aucune valeur ; une fonction pourra modifier les valeurs de certains de ses arguments. en C plusieurs fonctions peuvent partager des informations, autrement que par passage d'arguments. Nous retrouverons la notion classique de variable globale .
Projet informatique
12 mars 2010 B. Monsuez/A. Truchet
La nécessité de déclarer les fonctions ?
// La fonction « aireRectangle » doit être mise n'importe où avant son utilisation // dans le code source double aireRectangle(double largeur, double hauteur) { return largeur * hauteur; } int main(int argc, char *argv[]) { std::cout << "Rectangle de largeur 5 et hauteur 10. Aire " << aireRectangle(5, 10) << "\n"; std::cout << "Rectangle de largeur 2.5 et hauteur 3.5. Aire " << aireRectangle(2.5, 3.5) << "\n"; std::cout << " Rectangle de largeur 4.2 et hauteur 9.7. Aire " << aireRectangle(4.2, 9.7) << "\n"; return 0; }
Projet informatique
12 mars 2010
B. Monsuez/A. Truchet
11