Programmation C++ Utilisation De Qtcreator Pour La Gestion De Projet TD 0

Programmation C++ Utilisation De Qtcreator Pour La Gestion De Projet TD 0

Programmation C++ Utilisation de QtCreator pour la gestion de projet TD 0 R. Pacanowski September 28, 2015 1 Motivation Ecrire dans un fichier hello_word.cpp, un programme qui affiche «Hello World !»dans la console. Pour ouvrir, une console cherchez l’utilitaire nommé "Terminal" ou "Konsole". Pour écrire le programme utiliser un éditeur de texte simple tel que Kate, Gedit ou encore Sublime (s’il est disponible). N’oubliez pas d’inclure (#include <...>) les en-têtes cstdlib et iostream, qui font partie de la bibliothèque standard du C++. 1.1 Compilation Dans un premier temps, nous ferons la compilation à la main. Nous utiliserons le compilateur GNU pour cela, qui fait partie de la GNU compiler collec- tion (gcc). Bien que le programme gcc permette de compiler des fichiers C++, il n’inclut pas automatiquement la bibliothèque standard du C++. Pour cela, il faut utiliser le programme g++ La commande pour compiler notre hello world est donc g++ -Wall -Werror -Wold-style-cast hello_world.cpp -o hello_world où hello_world.cpp est le fichier à compiler et hello_world est le nom du programme à générer. L’option -Wall active tous les warnings et l’option Werror transforme les warnings en erreurs, ce qui a pour effet d’interrompre la compilation en cas de warnings Exécutez hello_world pour tester : ./hello_world Cet exercice est terminé lorsque votre code compile sans aucun warning et que son execution est correcte. Tous les warnings peuvent être éliminés par de simples modifications du code. Il est important de le faire, car si on laisse traîner des warnings inoffensifs, on finit par ne plus voir les warnings pertinents, ce qui les rends totalement inutile ! 2 QtCreator En pratique utiliser la ligne de commande pour compiler les gros projets devient rapidement ingérable à cause du nombre élevé de fichiers. Dès lors, on a recours à des systèmes (e.g., CMake, Make, Scons, ) de compilation. De plus, pour augmenter la productivité des éditeurs qui intégrent la compilation, le debugging et la réalisation d’interface graphiques sont disponibles. Dans le cadre de ces TDs ainsi que pour votre module de projet en C++, nous avons choisi d’utliser QtCreator. 1 QtCreator un outil de développement qui intégre de nombreuses fonctionnalités et permet de choisir, le système de gestion de compilation ainsi que le compilateur qui sera utilisé conjointement. De plus, il est gratuit et est disponible sur les principales plateformes (Windows, MacOS X, Linux). La Figure 1 vous présente l’interface graphique de QtCreator lorsque vous le lancer. Figure 1 – QtCreator à l’ouverture • 1 - Onglets principaux du programme. Edit pour taper le code, Debug pour le débugguer, Projects pour changer les options de compilation et d’exécution et enfin Analyse pour lancer la détection de fuites mémoires. • 2 - Permet de choisir entre la compilation en mode release ou debug. • 3 - Permet d’éxécuter le code en release (Ctrl+R). • 4 - Permet d’éxécuter le code en debug (F5). • 5 - Permet de seulement compiler le code (Ctrl+B). • 6 - Barre de recherche de fichiers ou d’expressions régulières. • 7 - Séléction des sorties : – 1 - Issues : Affiche et permet de sélectionner rapidement les erreurs et les aver- tissements de la dernière compilation. – 2 - Search Results : Affiche le résultat de la barre de recherche. – 3 - Application Output : Affiche tous std::cout/std::cerr du programme. – 4 - Compile Output : Affiche la sortie du programme de compilation. 3 Projets Dans QtCreator il est possible de gérer facilement de gros projets. Pour cela, il y a deux solutions QMake et Cmake. 2 3.1 Projet QMake Gestionnaire natif de Qt, il est complètement integré à QtCreator. Pour créer un projet QMake : "File", "New", "Qt gui Application" . A la fin de la configuration, toutes les informations relatives aux fichiers sources, aux librairies et aux options de compilation sont présentes dans le fichier nom_du_projet.pro. 3.2 Projet CMake CMake est également un outil de gestion de projet. Il présente l’avantage de ne pas être dépendant de Qt et de fonctionner sur un grand nombre de systèmes d’exploitations. QtCreator gère également très bien les projets CMake : "File" "New" "Non-Qt Project" "C++ Project (CMake Compilation)" . A la fin de la configuration, toutes les informations relatives au projet sont stockées dans le fichier CMakeLists.txt. 4 Conventions de codage Afin de produire du code propre et lisible, il est nécessaire de fixer un certain nombre de règles de style. Ces règles forment un standard de codage qui facilite la lecture, l’écriture et le partage du code, tout particulièrement lorsque plusieurs personnes travaillent sur un même projet. Les conventions de codage que vous devez suivre sont disponibles à l’URL suivante : manao.inria. fr/perso/~pac/teaching/cpp/conventions-codage.pdf Exercice 4.1 Projet QtCreator avec CMake 1. Créer un projet QtCreator (nommez le Hello) de type Non-Qt Project avec CMake. 2. Familiarisez vous avec les différents boutons (compilation et execution du programme) 3. Modifiez votre code afin que la fonction main renvoie EXIT_SUCCESS plutôt que 0 4. Modifiez votre code afin que la fonction main puisse recevoir des arguments 5. Executez votre programme depuis la ligne de commande (terminal). Pour ce faire ouvrez un terminal et rendez vous dans le répertoire où l’executable est créé. Ce répertoire est indiqué dans les propriétés de votre projet QtCreator. 6. Modifiez votre programme afin qu’il affiche tous ses argument sur la sortie standard. 7. À quoi correspond l’argument 0 ? 8. Complétez le programme afin qu’il calcule et affiche la moyenne des nombres passés en paramètres au programmes. Pour commencer vous utiliserez la fonction std::atof afin de convertir une chaîne de caractère en nombre. 9. Si le programme est appelé sans argument ou si un argument est invalide, affichez un message d’erreur et retournez EXIT_FAILURE. A présent pour chaque exercice pour créerez un projet QtCreator. Pour chaque exercice il y aura une fonction main qui illustre le fonctionnement de ce qui est demandé. Exercice 4.2 Edition dynamique de lien A partir du résultat de votre exercice précédent 3 1. Sous Linux, à l’aide de la commande ldd -v donnez la liste des bibliothèques dynamiques (dynamic library qui sont liées à votre progamme 2. Modifiez votre programme précéent afin que la moyenne soit calculée par une fonction qui prendra les arguments adéquats représentant un tableau de flottants. 3. Modifiez votre programme afin que la fonction qui calcule la moyenne soit programmée dans deux fichiers séparés (un fichier en-tête calcul.hpp et un fichier d’implémentation calcul.cpp) Exercice 4.3 Autour des tableaux ATTENTION de bien spécifier les bons types pour les arguments des fonctions et procédures lorsque ceux-ci ne vous sont pas donnés. 1. Déclarez un tableau de 1000 000 de floats sur la pile dans votre fonction main. Utilisez la syntaxe float tab[1000000];. 2. Si ce n’est pas déja fait créer les fichiers calcul.hpp et calcul.cpp 3. Ecrivez une procédure (void initRandom(...)) qui assigne une valeur aléatoire comprise entre 0 et 1 à chaque élément de ce tableau en utilisant la fonction std::rand(). 4. Ecrivez une procédure void display(...) |qui affiche les N premiers éléments de votre tableau. N sera passé en argument ainsi que le «tableau». 5. Testez votre fonction display() en l’utilisant dans la fonction main. 6. Modifiez votre programme principal afin qu’il utilise la fonction std::srand(...). Vous passerez à cette dernière une valeur de votre choix. A quoi sert cette fonction d’après la documentation ? 7. Ajoutez aux fichiers calcul.hpp et calcul.cpp une fonction qui retourne la variance des valeurs contenues dans le tableau. 8. Ajoutez aux fichiers calcul.hpp et calcul.cpp une fonction qui retourne le maximum des valeurs contenues dans le tableau. 9. Ajoutez aux fichiers calcul.hpp et calcul.cpp une fonction qui retourne le minimum des valeurs contenues dans le tableau. 10. Ajoutez aux fichiers calcul.hpp et calcul.cpp une fonction qui retourne la somme des valeurs contenues dans le tableau. 11. Ré-écrivez votre fonction qui renvoie la moyenne afin qu’elle utilise la fonction qui calcule la somme. 12. Ré-écrivez votre fonction qui renvoie la variance afin qu’elle utilise celle qui calcule la moyenne. 13. Ecrivez une fonction qui renvoie l’écart-type des valeurs contenues dans votre tableau. Quelle fonction doit-elle ré-utiliser ? 14. Ecrivez dans un fichier test_calcul.hpp et test_calcul.cpp une fonction de test pour chacune des fonctions écrites aux questions précédentes. 15. Essayez de trouver la taille de tableau à partir de laquelle votre programme ne fonctionnera plus. Dans votre compte-rendu intermédiaire vous essaierez de donner une justification à cette valeur obtenue. 4 4.1 Travail à la maison avec QtCreator Quelque soit la plateforme (Windows, MacOS, Unix) la solution la plus simple afin d’installer Qt et QtCreator est d’aller sur la page d’installation Qt : http://qt-project.org/downloads et de cliquer sur "Download Here". Télécharger la version "Community"de Qt qui est gratuite. 4.2 Travail à la maison sans QtCreator Sous Ubuntu/Debian: Pour installer Qmake : Installation sous ubuntu/debian : sudo apt−get install qt5−qmake Compilation et Exécution : mkdir b u il d cd bu i ld qmake [Emplacement du fichier .pro] make ./[Nom du fichier executable] Pour installer CMake: sudo apt−get install cmake Compilation et Exécution : mkdir b u il d cd bu i ld cmake [Emplacement du fichier CMakeLists.txt] make ./[Nom du fichier executable] 5 Autres outils Cette section vous présente d’autres outils liés à la progammation en C++, il n’est pas nécessaire d’y jetter un oeil en séance mais ils vous seront FORTEMENT utiles pour votre projet.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us