Algorithmique et Programmation C++ 2 - Cours
5 pages
Français

Algorithmique et Programmation C++ 2 - Cours

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
5 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

ƒƒƒƒƒƒƒƒƒProgrammation modulaire1Algorithmique et Programmation C++ 2IntroductionLors de la réalisation du premier projet technologique de Data-Mining, la plupart des groupesont utilisé un seul fichier source, considérant que pour un programme donné, un fichier sourcesuffisait. Mais cette technique a de nombreux inconvénients : Impossible de travailler à plusieurs sur un seul fichier source ; Réutilisabilité quasiment nulle et reste faible si on dispose des sources ; Inefficacité pour la compilation : il faut recompiler systématiquement tout le projet à chaquemodification ; Correction et maintenances difficiles.Modules et librairiesLes modulesL’objectif des modules est de structurer les sources : faire des composants logiciels autonomes indépendance des composants (dépendances explicites) séparation claire de l’interface et de l’implémentation. L’implémentation sera compilée, etl’interface servira aux développeurs pour utiliser l’implémentation dont les détails sontinutiles.Un module est un fichier d’implémentation, d’extension .cc, accompagné d’un ou plusieursfichiers d’en-tête (interface). C’est une unité de compilation, c’est-à-dire qu’il ne peut être compilépar morceaux.En C++, on confond interface et déclaration, mais ce n’est pas la même chose dans d’autreslangages. Ainsi, en C++, la déclaration d’une classe inclut les membres privés, alors que, commeleur nom l’indique, ils ne font pas partie de l’interface, puisqu’ils ne sont pas ...

Sujets

Informations

Publié par
Nombre de lectures 57
Langue Français

Extrait

Introduction
1
Programmation modulaire
Algorithmique et Programmation C++ 2
Lors de la réalisation du premier projet technologique deData-Mining, la plupart des groupes ont utilisé un seul fichier source, considérant que pour un programme donné, un fichier source suffisait. Mais cette technique a de nombreux inconvénients : ƒImpossible de travailler à plusieurs sur un seul fichier source ; ƒsi on dispose des sources ;Réutilisabilité quasiment nulle et reste faible ƒInefficacité pour la compilation : il faut recompiler systématiquement tout le projet à chaque modification ; ƒCorrection et maintenances difficiles.
Modules et librairies
Les modules
Lobjectif des modules est destructurerles sources : ƒfaire des composants logiciels autonomes ƒindépendance des composants (dépendances explicites) ƒséparation claire de linterface et de limplémentation. Limplémentation sera compilée, et linterface servira aux développeurs pour utiliser limplémentation dont les détails sont inutiles.
Unmodule est un fichier dimplémentation, dextension.cc, accompagné dun ou plusieurs fichiers den-tête (interface). Cest une unité de compilation, cest-à-dire quil ne peut être compilé par morceaux.
En C++, on confond interface et déclaration, mais ce nest pas la même chose dans dautres langages. Ainsi, en C++, la déclaration dune classe inclut les membres privés, alors que, comme leur nom lindique, ils ne font pas partie de linterface, puisquils ne sont pas accessibles de lextérieur.
On distingue : linterface (fichiers.h ou.hh ce sont uniquement les déclarations, sans code, sans) : ƒ définitions de variables globales, sans création dobjet. Un fichier den-tête est seulement composé des déclarations de types, de classes, de macros, de déclarations de variables et de fonctions externes. ƒlimplémentation (fichiers.cc) : le code, sans oublier linclusion des fichiers den tête.
Exemple : Imaginons que nous travaillons avec un composant pour la manipulation des fichiers sons pour Unix, composé de 4 modules : _ -son io : entrée-sortie _ sp : traitements acoustiques -son d - son gui : interface graphique _ -son main : programme principal _
http://www.chez.com/jeyland/iup
1/5
Dépendances :
_ son gui.hh
son gui.cc _
Les librairies
Programmation modulaire
déclarations communes
son io.hh _
son io.cc _
son dec.h _
_ son main.cc
_ son dsp.hh
_ son dsp.cc
Leslibrairies un ensemble de modules. Dans une implémentation complète de regroupent C++, on trouve un certain nombre de librairies : ƒlibrairies C++ standard (libc) ; ƒlibrairies mathématiques ; ƒetc.
Il y a différents types de librairies : ƒles archives (fichiers.a) qui sont statiques ƒles librairies dynamiques dont le code est partagé entre les différents utilisateurs, et dont le code estréentrant, cest-à-dire exécutable simultanément par plusieurs utilisateurs.
Regroupement des modules : ar <commande> <nom librairie> <liste des modules> Création de la table des matières (optionnelle) : ranlib <nom librairie>
Les librairies sont utilisées en incluant les en-têtes des modules utilisés, ce qui provoque le linkage de la librairie.
Exemple : aCC son main.cc –lson _ Ceci provoque linclusion delibson.a
*.hh .cc *
.i *
*.s
*.o
EXECUTABLE
http://www.chez.com/jeyland/iup
Préprocesseur
Compilation
Assemblage
Edition de liens
ro
Du code source au ramme exécutable
2/5
Programmation modulaire
Quelques outils de développement dans un environnement Unix
Make
ƒGénération de commandes à partir de fichiers de dépendances. ƒCet outil nest pas spécifique à la compilation ƒGestion des mises à jour basée sur lheure système (synchronisation des serveurs, etc.)
Forme générale dun fichier de dépendance : <cible> : <liste de fichiers> <tab> <commande>
Exemple de Makefile :
_ _ _ _ son : son io.o son gui.o son dsp.o son main.cc aCC –o son son main.cc son gui.o son dsp.o son io.o _ _ _ _
On compilesonaprès avoir vérifié les mises à jour des dépendances, et si une des dépendances possède une date de dernière modification plus récente queson, alors le fichier est recompilé, en exécutant la ligne située juste en dessous.
_ _ _ _ son io.o : son io.h son io.cc son dec.h aCC –c son io.cc _ son gui.o : son gui.h son gui.cc son dex.h _ _ _ _ _ aCC –c son gui.cc _ _ _ _ son dsp.o : son dsp.h son dsp.cc son dec.h _ aCC –c son dsp.cc
Utilisation de la commande Make : make –f <nom de fichier>
Si on tapemaketout court, cela revient a tapermake –f makefile.
Déclaration et initialisation : <id>=<valeur> Utilisation (évaluation) : $(<id>)
Exemple :
Sous Unix : CC=aCC OPTS=-or
Sous Linux : CC=g++ OPTS=-04 –m pentiumpro
Partie commune : _ _ _ _ son : son io.o son gui.o son dsp.o son main.cc _ _ _ _ $(CC) $(OPTS) son main.cc son gui.o son io.o son dsp.o
Remarque :Makelangage C et à une plate-forme de type Unix.nest pas forcément associé au On peut lutiliser par exemple pour compiler des programmes Java sur nimporte quelle type de plate-forme, notamment sous Linux.
http://www.chez.com/jeyland/iup
3/5
Le Debugger
Programmation modulaire
Sur un projet, la partie correction des bugs peut prendre du temps. Undebugger permet daccélérer grâce à ses fonctionnalités : ƒaide à la correction du programme ƒmode pas à pas ƒtrace du contenu des variables ƒretour arrière : revenir en arrière dans lexécution nest pas toujours possible ƒinterruption de lexécution par des breakpoints, qui peuvent être en fonction de la valeur dune expression (pas à pas dans une passage donné dune itération, par exemple) ƒanalyse des fichiers core (segmentation fault) pour retrouver létat du programme au moment du plantage
Le Debugger sutilise en compilant avec loption–g:aCC –g –o exemple exemple.c
Le Profiler
Cest un outil qui permet danalyser les performances dun programme : ƒtemps consommé par les différentes fonctions, ƒnombre dappels.
Principe : ƒinclusion de traces dans le code compilé, ƒproduction automatique dun rapport.
Utilisation :
aCC –G –o exemple exemple.cc g++ -p –o exemple exemple.cc
Exécution : ƒanalyse à posteriori ; ƒdépendante des paramètres du programme (entrés par lutilisateur parfois) ; ƒproduction du rapportgmon.out
Pour la mise en forme du rapport, utiliser par exempleGprof.
Exemple :
gmon.out > exemple.gprof
Importantoptimisations du code que lon fera, elles seront toujours: Quelque soient les fortement négligeables par rapport aux optimisations algorithmiques qui pourront être effectuées.
Gestionnaire de versions
Legestionnaire de versionspermet de : ƒconserver et restituer les différentes versions des composants, ƒmaintenir lhistorique des modifications, ƒgérer les conflits daccès ƒdistribuer les versions (avec un accès éventuellement sécurisé)
Citons par exemple des outils tels que :rCS,cVS, ouSCCS.
http://www.chez.com/jeyland/iup
4/5
Outils de configuration
Programmation modulaire
autoconfla configuration de lordinateur sur à peu près nimporte quelle: Recherche plateforme.
automakeA partir du fichier de configuration, crée un makefile:
Principe : ƒau contexte de compilation et dexécution,adaptation ƒgénération automatique de fichiers de configuration et de makefiles.
Divers
ƒ
ƒ ƒ ƒ
Documentation (àde lanalyse des sources et des commentaires) partir  génération : automatique enlatex, enhtml, ensgml, citonsdoc++,doxygen++sous C etidlsous C++ ; Mise en page du code:lclint(formatte les codes C++) ; Générateurs dinterfaces(comme sousVisual Basic) ; Outils de modélisation(génère le code en fonction du schéma de dépendance).
http://www.chez.com/jeyland/iup
5/5
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents