Vous êtes sur la page 1sur 4

LO43 - TP1

1
1.1

Introduction
Quelques informations sur le langage C++

Fichier dent ete (header les) Extension : *.h, *.hpp D eclaration : des class (attributes, m ethodes), des noms de fonctions, noms de variables, noms de constantes Exemple de chier dent ete (calculatrice.h) : class calculatrice { public: calculatrice() {}; ~calculatrice() {}; int addition(int a, int b); } Le chier peut egalement contenir des d enitions de m ethodes et de fonctions (recommand e seulement pour petite fonction/m ethodes) Les m ethodes de la classe d enies dans le corps de la classe sont les m ethodes inline. Fichier source (source les) Extension : *.c *.cc, *.cpp D enir les methodes, fonctions dont le nom est d eni dans le chier dent ete Contiennent des r ef erences aux chiers dent ete : #include "..." Exemple de chier source (calculator.cc) : #include "calculatrice.h" int calculatrice::addition(int a, int b) { return a+b; } Contiennent une fonction main(...), dont le programme d ebute son exploitation (un chier pour le programme). La compilation et le linkage La compilation : le compilateur compile chaque chier source (.c, .cc .cpp), cest-` a-dire quil cr ee un chier binaire (.o) par chier source. Exemple :

g++ -c fichier.cpp -I/chemin chier.cpp - chier source chier.cc, qui sera compil e (cr ee chier chier.o) -L/chemin - ajouter le rpertoire /chemin la liste des rpertoires o aller chercher les shier dent ete

Le linkage : Cette phase, constitue la phase nale pour obtenir un ex ecutable. Le compilateur agrge chaque chier .o avec les eventuels chiers binaires des librairies qui sont utilis ees (chiers .a et .so sous linux, chiers .dll et .lib sous windows). Exemple : g++ -o programme programme.o binaires1.o . . . binairesN.o -L/chemin -lsunmath programme.o - chier binaire de chier source programme.cc contiennent fonction main(...) binaires1.o - chier binaire de chier source binaires1.cc -L/chemin - ajouter le rpertoire /chemin la liste des rpertoires o aller chercher les librairies -lsunmath - librairie sunmath Makele Makele est un chier pour le programme make. Le programme make analyse un chier Makele et des r` egles sur cette base que les chiers source doivent compiler. Il permettre de gagner de temps dans la cr eation du programme, car ` a la suite de modications dans le chier source uniquement les chiers qui sont d ependant de ce chier sont compil e. Makele se compose dun ensemble de r` egles. R` egles consistent g en eralement de cible, des r` egles de d ependance et des commandes. On peux aussi d enir de variable utilises dans le r` egles. Pour pour ex ecuter Makele tape make. Exemple : # Cest un commentaire # Le variable qui indique le compilateur CXX=g++ # Le variable avec les rpertoires ou ce trouve fichiers dentetes INCLUDE_DIRS=-I/usr/include # Le variable avec les rpertoires ou ce trouve librairies LIB_DIRS=-L/usr/lib # Le variable avec les options de compilation CXXFLAGS= $(INCLUDE_DIRS) -c # Le variable avec les options de linkage LDFLAGS= $(LIB_DIRS) 2

# Le variable qui contient les librairies avec lesquelles on va # effectue ledition de liens LIBS=-lm # Le cible: # <nome_de_cible>: <dependance> # <commandes> # Le cible qui va cree le executable tp: programme.o func1.o func2.o $(CXX) $(LIB_DIRS) -o main programme.o func1.o func2.o $(LIBS) # Le cible qui supprime tout les fichiers interm\ediaires. clean: rm -f func1.o func2.o programme

# Les regles de dependance # <nome_de_regle>: <dependance> # <commandes> programme.o: programme.c func3.h $(CXX) $(CXXFLAGS) programme.c func1.o: func1.c $(CXX) $(CXXFLAGS) func1.c func2.o: func2.c $(CXX) $(CXXFLAGS) func2.c

1.2

Les Resources
C++ FAQ LITE : http ://jlecomte.ifrance.com/c++/c++-faq-lite/index-fr.html Introduction ` a Makele : http ://gl.developpez.com/tutoriel/outil/makele/ gnu make : http ://www.gnu.org/software/autoconf/manual/make/index.html Manuel de gcc : man gcc

2
2.1

Excercises
Helloworld

1) Ecrire un programme qui lance une m ethode ache de classe HelloW achant sur un ecran HelloW - hello world !. 3

HelloW.hpp : d eclaration de la classe HelloW HelloW.cpp : impl ementation de la classe HelloW ClientHW.cpp : programme de test (contient la m ethode main) Compilation et linkage avec gcc 2) Ajoute les classes HelloA, HelloB avec les methodes ache qui ache sur un ecran HelloA - hello world ! et HelloB - hello world !. Pour chaque classe une chier dent ete et chier source. Compilation avec un chier makele.

2.2

Type Abstrait Vecteur

Lobjet du TP est de construire le type vecteur et de le tester avec un programme client. 1) Compilation : rapatrier dans votre r epertoire de travail une copie du dossier cpp tp1 qui contient un squelette de programme et un makele : Vecteur.h : interface du TAD Vecteur.cc : impl ementation Client.cc : programme de test du TAD (contient le main) Makele : permet la compilation et l edition de liens du programme Apr` es avoir copier les chiers, tester le compilation en utilisant Makele. 2) Construction du TAD Compl eter les chiers Vecteur.h et Vecteur.cc avec les op erateurs demand es. Proc eder par etapes en v eriant la syntaxe (compilation) au fur et a mesure. Pour les di erents constructeurs/destructeur on d enira des compteurs statiques pour calculer le nombre de passages dans chacun deux. 3) Programme client Compl eter le programme client avec des exemples dutilisation du TAD