Personal tools
You are here: Home C & C++ Introduction au C++ Squelette d'un programme C++
Log in


Forgot your password?
New user?
 

Squelette d'un programme C++

by Benjamin Poulain last modified Jun 09, 2010 03:47 PM

Une introduction à la structure générale d'un programme C++. La structure présenté ici est la même que pour un programme C, il s'agit de montrer à quoi ressemble un programme en C ou en C++ et d'introduire quelques concepts de leur structure.

Voici un programme C++ simplifié à l'extrême qui est composé d'un seul fichier contenant le code de fonctions. Ce programme ressemble à la commande date de unix, qui donne la date et l'heure du système:

// Inclusion des en-têtes
#include <time.h>
#include <iostream>

// Définition des espaces de noms à utiliser
using namespace std;

/* Fonction qui retourne une chaîne de caractère représentant
l'heure et la date dans un format standard */

char* complete_time()
{
time_t epoch = time(NULL);
return ctime(&epoch);
}

// Point d'entrée du programme
int main(int argc, char **argv, char **envp)
{
// affiche l'heure dans un format standard
cout << complete_time() << endl;
return 0;
}

Ne vous inquiétez pas si vous ne comprenez pas tout, nous allons voir les grandes parties de la structure du programme. Vous pouvez compiler le programme avec GCC comme vu dans l'introduction à la compilation. Si vous sauvez le code dans un fichier mydate.cpp, vous pouvez le compiler à l'aide de la commande suivante:

g++ -Wall -g -O0 -o mydate mydate.cpp

Vous pouvez ensuite l'exécuter:

./mydate
Wed Feb 21 13:34:17 2007

Nous allons maintenant voir comment est structuré ce code et retirer un peu de magie de tout ça.

Le point d'entrée du programme

Le point d'entrée d'un programme est l'endroit ou un programme commence. En C et C++, un programme commence son exécution par la fonction main. La forme complète de la fonction main se présente comme ceci (c'est sa signature):

int main(int argc, char **argv, char **envp)

Les fonctions n'ont pas encore été introduite donc n'ayez pas d'inquiétude sur la forme exacte :). Retenez que le programme commence par main et renvoie un nombre entier (le int avant le main).

Les arguments de la fonction (ici argc, argv et envp) permettent de recevoir les paramètres de la ligne de commande et les variables d'environnement. Dans un premier temps on ne vas pas les utiliser et vous pouvez taper remplacer la signature précédente par:

int main()

Je continuerais à utiliser la signature longue avec les trois arguments mais vous pouvez la remplacer par int main().

Les fonctions

Un programme C++ se découpe en fonctions et en classes. La fonction est l'unité de découpe la plus simple et c'est la seule qui existe en C (les classes en C ne font pas partie du langage, contrairement à C++).

Une fonction est un ensemble de ligne de code regroupé pour effectuer une tache particulière. Cette ensemble de ligne de code peut être exécuté à partir d'autres lignes de code (ou même de lui même dans le cas de la récursivité, on en parleras plus tard).

Les fonctions ont deux buts principaux, elles permettent d'éviter la duplication de code (le copier-coller est généralement une mauvaise pratique de programmation), et permettent de clarifier le code. Nous verrons ces deux points en détails au fur et à mesure dans le chapitre sur les fonctions.

Une fonction se présente sous la forme suivante:

type_de_retour nom_de_la_fonction(type1 argument1, type2 arguments2, [...])

La forme exacte à peu d'importance mais vous pouvez déjà voir l'importance des fonctions en programmation en relisant le programme présenté en début de page. En effet, sur un programme de quelques lignes, on peut voir 4 utilisations de fonction: complete_time(), time(), ctime() et main().

Les en-têtes

Le petit programme présenté en début de page commence par deux lignes qui débutent par le caractère dièse.

#include <time.h>
#include <iostream>

Ces lignes permettent au compilateur de retrouver comment vous devez utiliser les fonctions dans le programmes. Dans la liste des fonctions que le programme utilise (complete_time(), time(), ctime() et main()) nous n'avons écrit que main() et complete_time(), les autres fonction (time() et ctime()) sont déclarées dans le fichier time.h. De même, pour l'objet cout qui est définit dans le fichier iostream. Les fichiers time.h et iostream sont appelés fichier d'en tête ou header, ces fichiers sont regroupés dans le répertoire /usr/include sous Unix (Linux, MacOS X, Solaris, etc).

Trouver les fonctions adaptés pour résoudre des problèmes et les headers qui les définissent est parfois difficile dans un premier temps. Avec l'expérience et les moteurs de recherche le problème disparait rapidement.

Document Actions