Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Département de Télécommunications
2021-2022
TP1 : Maitrise du visual C++
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é :
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 »).
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:
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
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):
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.
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).
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 ».
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[ ][ ] ;
Pour sauvegarder par exemple une base de données (Matrice ou vecteur) dans un fichier « base », on
doit appeler fopen pour écriture par :
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.
➢ 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é :
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.
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 :
➢ Ouvrir le Visual C++ et créer un nouveau projet console. Aller au menu Propriétés du projet.
Dans configuration sélectionner Debug :
➢ 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
➢ 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 :
https://microsoft-visual-cpp-express.soft32.com/thank-you/
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