Vous êtes sur la page 1sur 13

‫جامعة هواري بومدين للعلوم والتكنولوجيا‬

Université des Sciences et de la Technologie Houari Boumediene

Faculté d’Electronique et d’Informatique

Département de Télécommunications

TP d’initiation à la Programmation en C++

Master Réseaux et Télécommunications

2021-2022
TP1 : Maitrise du visual C++

Objectif : Cette première séance de TP opte pour la familiarisation avec un langage de


programmation C++. Nous abordons le Visual C++(2010 express pour les systèmes 32 bits et
2019 pour les systèmes à 64 bits), qui est une version gratuite du visual studio. Nous allons
apprendre à utiliser l’environnement pour développer des applications consoles et des
applications avec interface graphique.

1. Menu

Dans ce menu, on distingue principalement trois volets. Le volet fichier permet de créer, d’ouvrir ou
d’enregistrer un projet. Le volet Déboguer qui permet de faire la compilation et l’exécution du projet
pour générer le fichier .exe, et le volet Projet qui permet de configurer les propriétés du projet.

1
2. Créer un projet avec un seul fichier

Dans cette manipulation, nous allons développer un projet d’application console avec un seul fichier.

Travail demandé :

o Dans menu cliquer sur Fichier→Nouveau→Projet

2
o Dans le menu modèles installés, sélectionner Win32. Ensuite, sélectionner Application console
Win32. Vous pouvez choisir un nom du projet (par exemple : PremierTP), ainsi qu’un emplacement
pour le stocker. Le nom du fichier solution est choisi par défaut, mais vous pouvez le modifier.
Cliquer sur Ok et choisir projet vide pour terminer la création du projet. Vous obtenez l’interface
suivante :

o Cliquer à l’aide du bouton droit de la souris sur Fichiers sources dans l’explorateur de solutions.
Sélectionner ensuite, Ajouter→ Nouvel élément et sélectionner C++ File(.cpp) et donner un nom
arbitraire pour le fichier (par exemple « PremierTP »).

o Préparer le fichier source :

Le fichier source «PremierTP » va contenir les programmes développés. Puisque nous avons choisi de
travailler avec un projet vide, avant d’écrire n’importe quel programme, il faut appeler ou inclure les
librairies C++ qui contiennent les fonctionnalités pré-programmées du C++. Généralement, on doit
réaliser les étapes suivantes :

• Pour gérer les entrées/sorties (Input/output) dans le but d’afficher ou insérer des données, on
utilise la bibliothèque iostream. Elle est incluse dans le fichier source par :

#include <iostream>

C’est l’équivalent de la stdio utilisée dans le langage C. La iostream est composée de la classe
istream (pour les entrées) qui surcharge l’opérateur « >> », et la classe ostream (pour les sorties)

3
qui surcharge l’opérateur « << ». Similairement à cette librairie, on note la fstream qui contient
les classes d’entrée/sortie pour gérer la lecture et l’écriture des fichiers.

• La deuxième bibliothèque qu’on utilise très souvent, est celle qui permet de travailler avec des
chaines de caractères (Par exemple l’affichage des messages). Cette bibliothèque appelée string
est incluse comme suit :

#include <string>

On distingue aussi, la bibliothèque cmath pour les fonctions mathématiques, random pour
générer les distributions aléatoires, ainsi que les bibliothèques utilisées dans la POO telle que la
bibliothèque des conteneurs qui contient les classes array, vector, deque, etc.

• Par ailleurs, nous devons préciser au compilateur qu’on va utiliser l’espace des noms de la STL
(Standard Template Library) du C++: Je veux utiliser les déclarations et les définitions de
l’espace de nom std. Donc, on doit toujours mettre après les inclusions des librairies:

using namespace std ;

Autrement, on doit précéder chaque fonction du C++ par : « std :: » (Exemple : std ::cout).

• Aussi, le programme doit être inclus dans une fonction principale appelée main

Int main ( ) void main ( )


{ {
Mettre votre programme Mettre votre programme

Return 0 ; }
}
Le main renvoie un résultat de type int
Le main ne renvoie aucun résultat

« main » se trouve obligatoirement dans tous les programmes. L'exécution d'un programme entraîne
automatiquement l'appel de cette fonction. En résumé, notre fichier source « .cpp » doit avoir la forme
suivante :

4
Remarque :
Parfois, le compilateur vous demande d’introduire la bibliothèque stdafx pour gérer les en-têtes pré-
compilées. Alors, il suffit de rajouter l’instruction suivante avant toutes les inclusions : #include
"stdafx.h".

o Comme premier programme, on va afficher une phrase sur la console en utilisant la fonction cout.
Mettre l’instruction suivante à l’intérieur de la fonction main déboguer et exécuter (appuyer sur
ctrl+F5):

cout << "tapez votre phrase" << endl;

Remarques :
• cout : Envoie la chaine de caractère entre << et << à la console.
• endl : Indique la fin d’une ligne. Elle peut être remplacée par « \n ».
• Lors du débogage, l’erreur suivante risque de se manifester : Error 'LINK : fatal error LNK1123:
failure during conversion to COFF. Pour la corriger, il faut suivre les étapes suivantes :
✓ Dans le menu projet aller à propriétés du projet.
✓ Sélectionner Editeur de liens → général et mettre l’option « activation des liens
incrémentiels » à non.
✓ Cliquer sur appliquer et refaire la compilation du projet.

3. Projet avec plusieurs fichiers

Pour développer des applications contenant plusieurs classes et fonctions, il est utile de distribuer les
différentes parties du programme sur plusieurs fichiers. On fait recours à deux types de fichiers les
« .cpp » qui sont des fichiers sources et les fichiers en-tête « .h ». Ces derniers, peuvent contenir des
parties du programme ou des fonctions globales qui seront appelées par les différents fichiers sources.
Le fichier en-tête doit être inclus dans les fichiers sources à l’aide de : #include NomFichier.h.

5
Travail demandé :

Dans cette partie, nous allons faire une démonstration d’une application qui affiche l’heure en deux
formats (military et standard). Le projet contient 3 fichiers dont 2 fichiers sources (timeDemo.cpp et
Time.cpp) et 1 fichier en-tête (Time.h).

a) Pour entamer le projet, on passe par les étapes suivantes :


o Cliquer sur Fichier→Nouveau→Projet et sélectionner Application console Win32.
o Entrer le nom du projet par exemple (heure).
o Cliquer sur OK. Dans les paramètres de l’application, choisir : Application console et projet
vide. Enfin, cliquer sur terminer.

b) Dans l’explorateur de solutions, cliquer avec le bouton droit sur le menu Fichiers d’en-tête et
cliquer sur Ajouter→Nouvel élément. Choisir Fichier d’en-tête (.h) et donner lui comme nom
« Time.h». Insérer le code suivant :

Time.h

c) Toujours dans l’explorateur de solutions, mais cette fois-ci cliquer avec le bouton droit sur le menu
Fichiers sources et cliquer sur Ajouter→Nouvel élément. Créer un fichier source « Time.cpp » et
insérer le code ci-dessous.

6
d) Refaire la même procédure pour créer un deuxième fichier source et insérer dedans le code de
timeDemo.cpp.
e) Déboguer et exécuter pour vérifier le résultat affiché sur la console.

Time.cpp

timeDemo.cpp

7
4. Manipulation de fichiers

Dans cette partie, nous abordons la lecture et l’écriture des fichiers de données. Pour cela, nous avons
besoin d’inclure la librairie fstream et nous allons utiliser principalement les instructions suivantes :
fopen, fwrite, fread, fseek, ftell et fclose. Pour ouvrir un fichier en lecture ou en écriture, on doit
commencer par désigner un pointeur de type FILE (FILE *P ) suivi de l’instruction fopen qui indique le
chemin (ou juste le nom du fichier s’il est placé dans le même répertoire que le projet) et qui spécifie si
l’ouverture se fait pour une lecture ou une écriture. Dans l’instruction suivante on veut ouvrir un fichier
binaire « b » en lecture « r ».

P=fopen( "C:/Users/LISIC/Desktop/matrice", "rb");

La lecture du fichier est effectuée par fread en spécifiant le tableau ou la matrice dans laquelle on va
mettre le contenu du fichier. On veut lire dans une matrice float telle que : float Tab[ ][ ] ;

La lecture se fait par :

fread (&Tab,1,lSize, P);


lSize: taille du fichier.

Pour sauvegarder par exemple une base de données (Matrice ou vecteur) dans un fichier « base », on
doit appeler fopen pour écriture par :

P=fopen( "C:/Users/LISIC/Desktop/base", "wb" );

On appelle ensuite l’instruction fwrite par :

fwrite (base , sizeof(float), sizeof(base), P);

sizeof indique la taille de l’opérande en octets.

Remarques :

➢ Lors de la lecture d’un fichier, il est important de connaitre sa taille. Nous utilisons souvent les
instructions fseek et ftell pour récupérer cette taille. On met les instructions suivantes avant l’appel
de fread.

// Récupérer la taille du fichier et la mettre dans lSize:


fseek (P , 0 , SEEK_END);
lSize = ftell (P);
// Remettre le pointeur au début du fichier:
fseek(P, 0, SEEK_SET); // on peut utiliser :rewind (P);

➢ La taille et le type du fichier sont nécessaires pour déclarer le tableau (matrice ou vecteur) dans lequel
on stocke le contenu lu. Si on dispose d’une connaissance sur le fichier, on peut déclarer le tableau

8
avant la lecture. Sinon, on récupère lSize (la taille du fichier) et on utilise une allocation dynamique
de la mémoire par l’instruction malloc.
➢ Une fois la lecture ou l’écriture terminée, on doit libérer l’espace mémoire occupé par le pointeur P.
pour cela on utilise fclose(P).

Travail demandé :

On veut apprendre à utiliser les instructions de lecture et d’écriture d’un fichier.

1) Ouvrir un nouveau projet à un seul fichier (Fichier.cpp) et inclure les directives.


2) Créer une matrice (mat) de type entier et la remplir par la somme des indices de ligne et de colonne.
Afficher le contenu de mat.
3) Enregistrer mat dans un fichier appelé matrice.
4) Modifier le programme pour faire la lecture du fichier enregistré. Vérifier la lecture en affichant le
contenu de la matrice lue.

5. Intégration des bibliothèques

Les applications avancées telles que le traitement d’images nécessitent l’utilisation des méthodes de très
grande complexité comme le filtrage, les transformations et les algorithmes de classification. Ces
méthodes sont regroupées dans des bibliothèques publiques qu’on doit associer au Visual C++.
Actuellement, la bibliothèque OPENCV est la plus utilisée. Voici les étapes à suivre pour configurer la
version 2.2 (OpenCV-2.2.0-win32-vs2010) de cette bibliothèque qui s’adapte au visual C++2010.

➢ Installer OpenCV sur votre système et choisir de l’ajouter au system PATH :

9
➢ Vérifier que la OpenCV a été bien rajoutée au système. Sinon, on l’ajoute manuellement
comme suit : Aller à Panneau de configuration\Système et sécurité\Système et sélectionner
Paramètres système avancés. Cliquer sur Variables d’environnement :

• Dans variables utilisateur, cliquer sur nouvelle et ajouter le répertoire OpenCV comme
suit :

• Aller à Variables système et sélectionner PATH. Cliquer sur modifier et ajouter à la


fin : C:\OpenCV2.2\bin

➢ Ouvrir le Visual C++ et créer un nouveau projet console. Aller au menu Propriétés du projet.
Dans configuration sélectionner Debug :

➢ Dans VC++ directories, ajouter C:\OpenCV2.2\include dans Répertoires Include et ajouter


cliquer sur appliquer. Ajouter C:\OpenCV2.2\lib dans Répertoires de bibliothèques.

➢ Dans le menu C/C++, dans Autres Répertoires Include ajouter C:\OpenCV2.2\include.

➢ Dans le menu Editeur de liens, sélectionner Général. Dans Répertoire de Bibliothèques


supplémentaires ajouter : C:\OpenCV2.2\lib et C:\OpenCV2.2\bin.

➢ Sélectionner ensuite entrée et ajouter les fichiers suivants dans Dépendances supplémentaires :

C:\OpenCV2.2\lib\opencv_video220d.lib

C:\OpenCV2.2\lib\opencv_video220.lib

C:\OpenCV2.2\lib\opencv_ts220.lib

C:\OpenCV2.2\lib\opencv_objdetect220d.lib

10
C:\OpenCV2.2\lib\opencv_objdetect220.lib

C:\OpenCV2.2\lib\opencv_imgproc220.lib

C:\OpenCV2.2\lib\opencv_ml220d.lib

C:\OpenCV2.2\lib\opencv_imgproc220d.lib

C:\OpenCV2.2\lib\opencv_ml220.lib

C:\OpenCV2.2\lib\opencv_legacy220d.lib

C:\OpenCV2.2\lib\opencv_legacy220.lib

C:\OpenCV2.2\lib\opencv_highgui220d.lib

C:\OpenCV2.2\lib\opencv_gpu220d.lib

C:\OpenCV2.2\lib\opencv_gpu220.lib

C:\OpenCV2.2\lib\opencv_flann220d.lib

C:\OpenCV2.2\lib\opencv_flann220.lib

C:\OpenCV2.2\lib\opencv_ffmpeg220d.lib

C:\OpenCV2.2\lib\opencv_ffmpeg220.lib

C:\OpenCV2.2\lib\opencv_features2d220d.lib

C:\OpenCV2.2\lib\opencv_features2d220.lib

C:\OpenCV2.2\lib\opencv_core220d.lib

C:\OpenCV2.2\lib\opencv_core220.lib

C:\OpenCV2.2\lib\opencv_contrib220d.lib

C:\OpenCV2.2\lib\opencv_contrib220.lib

C:\OpenCV2.2\lib\opencv_calib3d220d.lib

C:\OpenCV2.2\lib\opencv_calib3d220.lib

N.B : A chaque étape il faut cliquer sur appliquer.

➢ Revenir à configuration et choisir Release. Refaire les mêmes étapes effectuées pour Debug.

➢ Maintenant, on peut utiliser la OpenCV dans le Projet. Inclure par exemple, les directives
suivantes :

#include<opencv\cv.h>
#include <opencv\cxcore.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;

11
Travail demandé : A remettre à la fin du semestre

Réaliser un projet dans lequel vous associez la bibliothèque OpenCV. Réaliser un programme qui
effectue la lecture d’une image de votre choix. Appliquer un ou deux traitements de la bibliothèque
image processing (imgproc). Choisir les fonctions de Image Filtering ou Feature Detection. Remettre
un dossier contenant le projet réalisé et un rapport expliquant la théorie des fonctions abordées.

Liens de téléchargement :

o Visual Studio C++ 2010 express (ordinateurs 32 et 64 bits):

https://microsoft-visual-cpp-express.soft32.com/thank-you/

o Visual Studio C++ 2019 (ordinateurs 64 bits):

https://visualstudio.microsoft.com/fr/thank-you-downloading-visual-
studio/?sku=Community&rel=16#

o OpenCV2.2 :

http://csci.biola.edu/OpenCV/Tutorial1/Tutorial%20One.htm

12

Vous aimerez peut-être aussi