Mon premier programme

Avatar de Monsieur X
Description du chapitre et des ses objectifs :

Bravo pour tout ce que vous avez du apprendre avant d'en arriver là! Je suis conscient que ne pas pouvoir tester ce que l'on fait peut être très désagréable, mais à mon avis, le C demande tellement de rigueur qu'il vaut mieux en connaître les principes de base afin de bien comprendre le fonctionnement de son programme.
Ce chapitre va donc porter sur l'installation d'un l'IDE Code::Blocks ou Visual Express, l'environnement dans lequel vous allez travailler. Ceci sera suivit du code minimal, de son étude puis arrivera le premier dialogue avec la machine. Enfin vous allez pouvoir constater ce que vous faites.
Bonne lecture à tous!

Image de Partie

Accéder directement à une des parties du cours :

L'IDE

Question : Tu entends quoi par IDE?

Integrated Development Environment bien sur!

Question : Gné?

C'est un logiciel qui va s'occuper de la compilation de votre programme tout en vous proposant une jolie interface graphique pour éditer votre code et qui dispose généralement d'un débuggueur.

Question : Qu'est-ce que la compilation?

La compilation c'est le principe de passer vos lignes de code écrites (en C en l'occurence) dans un langage compréhensible pour l'ordinateur, en binaire. Rassurez-vous, cette opération est automatisé et il existe bien des logiciels qui s'occuperont de celà pour vous.

Question : Et le débuggueur?

C'est un outil qui permet, comme son nom l'indique, de vous aider à débugguer les programmes en suivant toutes les opérations effectuées par l'ordinateur lors de la lecture de votre code. Il demande une certaine pratique et habitude pour être utilisé à bon escient et de manière efficace. De plus, la lecture des résultats qu'il procure est différente d'un débuggueur à l'autre c'est pour j'ai choisit de ne pas détailler l'utilisation de l'un d'entre eux.


La vrai question est: quel IDE choisir?
Il en existe pas mal de nos jours, plus ou moins connus et dépendants de l'OS que vous utilisez. J'ai choisit pour mon cours de traiter surtout l'environnement Windows, si vous souhaitez développer sur une autre plateforme (Linux/Mac/BSD et j'en passe) n'hésitez pas à chercher par vous même.
2 IDE ont retenu mon attention: Code:Blocks et Visual Studio.

Le premier, entièrement en anglais dans sa version de base, est très performant, facile d'utilisation, ergonomique bref tout pour plaire. Il est disponible avec le compilateur mingw qui vient du monde Linux et tient de là son statut OpenSource (donc sa gratuité) et sa constante évolution. Son seul problème réside dans le fait qu'il a des problèmes de compatibilité avec Windows Vista.
Vous pouvez le télécharger à cette adresse: http://prdownloads.sourceforge.net/codeblocks/codeblocks-1.0rc2_mingw.exe?download
N'ayez pas peur du fait qu'il soit anglais, ce n'est pas un obstacle. C'est plutôt une aide pour s'habituer aux termes techniques que vous rencontrerez dans les documentations anglaises très nombreuses et riches en informations.

La seconde solution est l'outil de développement de Windows, 100% compatible pour sa plateforme, assez dur d'utilisation et à prendre en main mais entièrement en français. Il est très complet mais assez long à configurer. Une version gratuite est disponible un peu limité pour tout le monde mais permet de faire exactement la même chose qu'en mode complet. Seuls quelques outils de gestion de projet sont absents, pas une grande perte donc...
Une version complète gratuite est disponible pour tous les étudiants. Théoriquement destiné à faire du C++, il s'utilise très bien aussi pour du C.
Vous pourrez le télécharger sur cette page (version 2005): http://www.microsoft.com/express/2005/download/default.aspx#
Choisissez bien Visual C++ 2005 Express Edition en français et pensez à télécharger le Service Pack 1 (SP1) associé en bas de la page:
http://download.microsoft.com/download/7/7/3/7737290f-98e8-45bf-9075-85cc6ae34bf1/vs80sp1-kb926748-x86-intl.exe

Je laisse le soin aux étudiants de rechercher sur MSDN le moyen de télécharger gratuitement la version complète.

Configuration d'un projet de base

Nous y voila! Le premier programme. Mais tout d'abord apprennons les bases de votre IDE. Si vous avez opté pour Visual Studio, vous pouvez sauter la première partie destinée à Code::Blocks.


Code::Blocks


Une fois le programme lancé, vous devriez arriver sur cet écran: Image utilisateur
Commencez par créer un nouveau projet: File/New Project .
Une pop-up va s'ouvrir, cliquez sur console application, dans file(s) options choisissez C et cochez la case: Do not create any files comme sur l'image: Image utilisateur
Une fois fait, choisissez un nom pour votre projet et choisissez son emplacemnt sur votre disque dur.

Vous devriez vous retrouver avec un joli écran blanc. Ajoutons maintenant un premier fichierp our écrire notre code: File/New File . De cette manière, vous pourrez ajouter des nouveaux éléments à votre projet à chaque fois. Choisissez un nom pour votre fichier principal et terminez le par l'extension .c qui désigne les fichier source C. Par habitude, le fichier principal s'appelle main.c. Une fois validé, quand la fenêtre Add file to project apparaît, choisissez bien entendu oui.

On onglet a du s'ouvrir portant le nom de main.c et vous pouvez y entrer du texte. C'est ici que l'on commencera à écrire notre programme.
Sur votre gauche vous pouvez apercevoir le Default workspace, cette fenêtre vous permettra de naviguer parmis les fichiers présents dans votre projet. Tout en bas se trouve la boîte de dialogue, c'est la que s'afficheront vos erreurs lors de la compilation et autre messages du logiciel! Vous pouvez maintenant passer à l'étape suivante et ignorer l'installation de Visual Studio .

Visual Studio

Une fois le logiciel lancé, commencez par créer un projet: Fichier/Nouveau/Projet. Vous devriez obtenir une petite pop-up qui ressemble à celle-ci:
Image utilisateur

Selectionnez Application console Win32 ,et donnez un nom à votre projet, par exemple: MonProgramme. (original non?) Choisissez l'emplacement du dossier de votre projet dans la ligne correspondante. Moi j'ai créé un répertoire pour tous mes tests, vous pouvez faire de même si vous voulez . Si vous cochez créer un répertoire pour la solution, un dossier va être créé contenant tout votre projet.

Quand vous avez bien choisit, validez en cliquant sur OK, ce qui aura pour effet d'ouvrir une nouvelle fenêtre:
Image utilisateur

Cliquez sur suivant, vous devriez tomber sur quelquechose qui ressemble à ça:
Image utilisateur

Là vérifiez que vous avez les mêmes options de cochées (vous devriez n'avoir qu'à cocher projet vide).


Vous voila avec votre premier projet. Si tout s'est correctement passé, vous devriez obtenir un espace de travail qui ressemble à cela, avec peut-être une page de démarrage à la place de ce qu'il y en gris sur mon exemple (que vous pouvez fermer sans craintes en cliquant sur la croix se son onglet):
Image utilisateur

Expliquons rapidement l'interface:
En haut se trouve la barre d'outils.
La fenêtre nommée explorateur de solutions sert à naviguer rapidement parmis les objets de votre projet. En gras se trouve le nom de votre projet (ou solution si vous aimez les termes de Visual-C++)
En bas se trouve la Sortie: c'est la que sortiront les informations au moment de compiler. Ces informations seront généralement les erreurs que vous avez commises. J'expliquerai plus tard en détail son utilisation.
Et enfin en gris en plein au milieu, c'est là que vous allez écrire votre code. Bon pour le moment on ne peut pas, remédions à cela:
Faites un click droit sur le nom de votre projet (écrit en gras), allez dans Ajouter/Nouvel Elément...
Voici la nouvelle fenêtre qui devrait s'afficher:
Image utilisateur

Choisissez fichier C++.
Question : Heu, il n'y a pas fichier C?

En fait, Visual ne fait pas la différence entre un projet C et un projet C++. Donc on va devoir passer sur ce point...

Donnez un nom à votre fichier. Par habitude, le nom du fichier principal se nomme main.c, vous comprendrez tout à l'heure pourquoi. On va garder cette règle.


Vous voila maintenant avec un joli endroit pour taper votre code!

Le code minimal

Pour créer un programme en C, il y a un règle fondamentale. Il faut TOUJOURS qu'il y ai une fonction nommé main, c'est ce qui remplace notre ancien calculer. Cette fonction à aussi une syntaxe spécifique. Lors de l'execution de votre programme, l'ordinateur va DIRECTEMENT aller chercher la fonction main et à partir de là va executer toutes les instructions écrites et donc appeler toutes les fonctions que vous avez appelé etc. Donc toutes les instructions que j'écrivais avant dans la fonction calculer seront dorénavant dans le main.

Information : Je répète: une fonction ne peut être déclarée dans une autre fonction, le main est une fonction classique. On va donc déclarer et initialiser nos fonctions hors du main et avant le main pour qu'il sache qu'elles existent (comme pour des variables). Vous pouvez bien sur vous passer du prototype si vous déclarez vos fonctions avant le main.

En effet, le compilateur allant directement chercher la fonction main, il va "mettre en mémoire" tout ce qui a été déclaré sur son chemin jusqu'au main.
Voyons maintenant le code minimal:
  1. #include <stdlib.h>
  2.  
  3. int main(void)
  4. {
  5.       return 0;
  6. }


Question : Heu tu ne ne nous a pas parlé de 2 trucs à ce que je vois?

Effectivement, mais vous allez vite comprendre:
  1. #include <stdlib.h>

Est ce que l'on appelle une directive préprocesseur. Outre le nom barbare, cette directive sert à inclure plein de fonctions prédéfies et prêtes à l'emploi indispensables pour programmer. Il faudra inclure stdlib dans chacun de vos programmes (ou pas pour peu que vous sachiez ce que vous faites ) J'en reparlerai plus tard.

Question : Et c'est quoi void?

void comme son nom l'indique signifie vide, qu'il n'y a pas d'argument. C'est un type un peu spécial qui se relève parfois utile comme dans le cas présent.

Comme vous pouvez le constater, main est une fonction classique: elle à un type de retour et elle retourne une valeur.
Question : A quoi elle sert cette valeur?

Et bien si le programme se termine correctement, il renverra 0, en cas d'erreur on a l'habitude de renvoyer 1. Cela n'est utile qu'à votre système d'exploitation actuellement.

Essayons maintenant de compiler le programme. Si vous êtes sur Visual Studio, allez dans la barre d'outils: Générer/Générer la solution. Pour les utilisateurs de Code::Blocks, dans la barre d'outils: Build/Build.
Si la compilation s'est effectuée correctement, vous devriez voir apparaître dans la sortie pour Visual Studio:
Code dos - Numéro de ligne
  1. - 0 erreur(s), 0 avertissement(s)
  2. ========== Génération : 1 a réussi, 0 a échoué, 0 mis à jour, 0 a été ignoré ==========


Pour Code::Blocks:
Code dos - Numéro de ligne
  1. Process terminated with status 0 (0 minutes, 0 seconds)
  2. 0 errors, 0 warnings

Si vous avez la ligne: warning: no newline at end of file
Suivit à la fin de:
Code dos - Numéro de ligne
  1. 0 errors, 1 warnings
Il suffit d'ajouter une nouvelle ligne à la fin de votre code pour faire disparaître l'avertissement.


Pour executez le programme, allez dans Déboguer/Executer sans débogage pour Visual Studio, et Build/Run pour son homologue (notez que vous pouvez trouver des raccourcis dans la boîte à outils en haut avec tous les icones, la flêche permettant de Run votre programme par exemple).

Victoire! Votre premier programme s'est lancé!

Question : Ma fenêtre est toute noire et tout ce qu'il y a d'écrit c'est: "Appuyez sur une touche pour continuer..."

Chouette non? Non? Ha bon... Si vous n'êtes pas familier avec ceci, ça s'appelle la console. C'est une interface basique pour communiquer avec l'ordinateur en affichant du texte, ou pour lui en envoyer. Vos programmes utiliseront cette interface bien longtemps avant l'étude d'une interface graphique, donc familiarisez vous avec.

Afficher du texte

Je vois que avez envie d'afficher des choses sur cette magnifique console! Votre rêve va s'exaucer.
Reprennons le code de base:

  1. #include <stdlib.h>
  2.  
  3. int main(void)
  4. {
  5.     return 0;
  6. }


J'avais précisé que la première ligne permettait d'inclure des fonctions de base. Et bien celle d'affichage n'en fait partie, elle se trouve dans stdio.h que vous devez inclure de la même façon que stdlib.h avec la ligne #include <stdio.h> (attention à ne pas mettre de ";" à la fin, ce n'est pas une instruction) . Elle se nomme printf. Apprennons à l'utiliser avec le célèbre "Hello World".

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.     printf("Hello World");
  7.     return 0;
  8. }


Compilez... Executez... Et voici qu'apparaît écrit:
Code dos - Numéro de ligne
  1. Hello WorldAppuyez sur une touche pour continuer...

Tout d'abord, on a inclut d'autres fonctions de base. stdio.h contient les fonctions d'entrée et sortie de données (d'où son nom: standard input ouput en anglais)
Regardons de près la syntaxe de cette fonction:
On l'appelle sans rien récupérer dans mon exemple. Vous pouvez donc très bien appeler des fonction sans récupérer quelquechose dans une variable. Une fonction qui s'utilise comme ça n'a donc pas de valeur issue du traitement de ses arguments en retour ou la valeur renvoyée n'est pas utile au programmeur.

Information : Cette fonction retourne un entier qui sert à savoir si tout s'est correctement déroulé. Dans notre cas on va s'en passer.


Lorsque l'on veut afficher quelquechose, il faut toujours que le premier argument soit une chaine de texte. Une chaine de caractères est toujours délimitée par 2 guillements à ses extrémités.

Question : Son premier argument? Il peut en y avoir plusieurs?

Oui c'est un type de fonction spécial qui peut avoir un nombre indéfinit d'arguments. Ne vous attardez pas sur ce point. Le but de la manoeuvre est surtout de vous apprendre à l'utiliser .

Question : Bon maintenant, il serait sympa d'avoir un retour à la ligne après ce printf.
Tout à fait d'accord! Pour cela printf utilise une syntaxe précise. En effet, un saut de ligne est symbolisé par le caractère '\n'

Remplacez donc printf("Hello World"); par printf("Hello World\n"); et constatez le joli résultat

Question : Il y en a d'autre des choses comme ça à savoir?

Oui énormément! Mais heuresement il existe une documentation complète sur les fonctions de base. Si vous êtes sous UNIX, tapez man 3 <nom_fonction> dans votre console pour obtenir l'aide de la fonction désirée. Sinon, sur Google, recherchez man <nom_fonction> et vous devriez trouver en premier résultat le manuel de la fonction correspondante.

Question : Oula c'est en anglais!
Et oui, pratiquement toute la documentation de programmation sur internet est en anglais, vous devriez donc vous y mettre. Cependant pour les fonctions de base, il existe généralement une traduction française.
Information :

Si vous ne comprennez pas le manuel dans un premier temps, ne vous en faites pas. Je vais vous expliciter les fonctions de base et leur utilisation "basique".



Si vous avez compris, vous pouvez vous essayer à ecrire un petit texte et à l'afficher correctement.
Essayez par exemple d'écrire:
Citation Quelqu'un :
Merci pour ce magnifique tutorial!


Je n'arrive pas à arrêter de le lire.

(Je précise que ce texte n'est pas de moi )

Vous avez trouvé? Voici des solutions:

Secret (cliquez pour afficher)
  1. int main(void)
  2. {
  3.     printf("Merci pour ce magnifique tutorial!\n");
  4.     printf("\n");
  5.     printf("\n");
  6.     printf("Je n'arrive pas à arrêter de le lire.\n");
  7.     return 0;
  8. }



  1. int main(void)
  2. {
  3.     printf("Merci pour ce magnifique tutorial!\n\n\nJe n'arrive pas à arrêter de le lire.\n");
  4.     return 0;
  5. }


Remarquez donc que vous pouvez mettre le '\n' n'importe où dans votre phrase.

Afficher le contenu des variables

Voila quelquechose qui dorénavant va bien vous servir! Expliquons rapidement le fonctionnement de l'affichage du contenu de variable par printf. Comme je vous l'ai dit (et comme il l'est écrit dans sa page de manuel), printf demande un formatage spécial du texte pour envoyer ce qu'on l'on souhaite à l'écran (on retiendra l'exemple de '\n&#039 . Je vous rafraîchis rapidement la mémoire aussi, printf accepte un nombre variable de paramètres. Le premier contient le format de l'affichage, les suivants contiendront le nom d'une ou plusieurs variables ou encore de valeurs fixes.

Pour que la fonction sache à quel moment de son texte doit afficher le contenu de la variable, il suffit de mettre dans la chaine de caractères (le premier argument) un '%' suivit d'un caractère spécifique donnant le type de la variable. On dirait pas comme ça, mais c'est en réalitée assez simple. Voici un exemple: (ce code doit être contenu dans le main, j'espère maintenant que vous avez compris son fonctionnement)

  1. int maVariable = 10;
  2. printf("Alors la variable au dessus vaut %d\n", maVariable);


Comme vous pouvez le constater, pour afficher un entier, on utilise un 'd' après le '%' pour signaler qu'on attend à cette position un type int. La fonction va donc chercher la variable correspondante dans les arguments suivant sa position.

Question : Suivant sa position?

Et oui, vous pouvez très bien afficher plusieurs variables! Voici un autre exemple:

  1. int a = 10;
  2. long b = 452;
  3. printf("a vaut %d et b vaut %ld\n", a, b);


Remarquez ici que j'ai utilisé %ld pour afficher un long.

Information : Après le '%' c'est un L et un D minuscule, pas le chiffre 1.


Attention : Pour les nombres décimaux (float ou double, on utilise respectivement les formateurs %f et %f


Si vous souhaitez en apprendre plus sur l'utilisation précise de printf, je vous recommande d'aller voir son manuel.
(Je rappelle qu'une recherche man printf sur google suffit à trouver les résultats appropriés. Apprennez à vous de vous servir de cet outil! )


Maintenant un petit exercice rapide: à l'aide la fonction moyenne que nous avons créé aurapavant, affichez la moyenne des nombres [2, 17.5, 16]. Il faut que dans votre programme, on ai qu'a remplacer les chiffres [2, 17.5, 16] pour faire la moyenne de 3 nouveaux nombres choisis par l'utilisateur.
Je rappèle la fonction moyenne:
  1. float moyenne(float a, float b, float c)
  2. {
  3.     float tmp = a + b + c;
  4.     tmp /= 3.0;
  5.     return tmp;
  6. }


Essayez de votre côté, si vous êtes arrivés à un bon résultat bravo! Voici un corrigé:

<secret>
  1. #include <stdlib.h>
  2.  
  3. float moyenne(float a, float b, float c)
  4. {
  5.     float tmp = a + b + c;
  6.     tmp /= 3.0;
  7.     return tmp;
  8. }
  9.  
  10. int main(void)
  11. {
  12.     float x = 2;
  13.     float y = 17.5;
  14.     float z = 16;
  15.     float resultat = moyenne( x, y ,z);
  16.     printf("La moyenne de %lf ,%lf et %lf vaut %lf\n", x , y , z , resultat);
  17.     return 0;
  18. }


Notez que la ligne du printf aurait pu prendre en argument:
Secret (cliquez pour afficher)
  1. printf("La moyenne de %lf ,%lf et %lf vaut %lf\n", x , y , z , moyenne( x, y ,z));


J'espère que vous êtes à l'aise avec toutes ces notions, si ce n'est pas le cas n'hésitez pas à relire le cours. Le forum est là pour toutes vos questions à condition de chercher un minimum par vous-même .

Récupérer une saisie basique

Maintenant que l'on affiche à peu près ce que l'on veut, voyons comment récupérer des données entrées par l'utilisateur.
Il existe une fonction un peu similaire à printf qui se nomme scanf qui est contenu dans stdio.h. De plus ses formateurs sont identiques (%d pour un entier, %f pour un float ...)

Par contre son utilisation est un peu différente. En effet, cette fonction va modifier directement les variables passées en paramètre.

Question : Avant ça ne le faisait pas?

Image utilisateur
Non! Rappellez-vous du cours sur les fonctions. Les fonctions sont hermétiques, on leur envoit seulement une valeur qui sera copiée dans ses arguments.


Si vous essayez donc de modifier les variables de votre fonction, cela ne va en aucun cas modifier les variables de la fonction parente qui envoie les valeurs.

Question : Comment palier à ça?

Et bien en modifiant directement une variable à partir de son adresse mémoire. Si cela ne vous est pas parlant pour le moment, ne vous en faites pas, nous le verrons que bien plus tard. Pour le moment, nous verrons seulement comment utiliser scanf.

Pour utiliser scanf efficacement et éviter certains problèmes liés à son utilisation souvent difficile, voici un exemple que vous pourrez reprendre facilement:
  1. int maVariable;
  2. scanf("%d", &amp;maVariable);


Que remarque-t'on?
Premièrement, on ne fait que mettre un seul formateur dans le premier argument (qui comme printf est une chaîne de caractères).
Deuxièmement, on colle devant le nom de la variable un '&' qui signifie qu'on va manipuler l'adresse mémoire comme je vous l'ai expliqué.

Attention : N'oubliez pas le '&' devant le nom de la variable!

C'est une erreur fréquente, si vous obtenez des résultats étranges, cela vient peut-être de là!

Vous avez compris? Voyons cela dans un petit exemple qui demande votre âge.
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.     int age;
  7.     printf("Quel est votre age? ");
  8.     scanf("%d", age);
  9.     printf("\nVous avez %d ans.\n",age);
  10.     return 0;
  11. }


Question : Hey! Mon compilateur me met des warnings et quand je lance le code ça plante!

Et alors? Qu'est-ce qu'on regarde? Et oui, je n'ai pas mis le '&' devant age! On corrige cela maintenant

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.     int age;
  7.     printf("Quel est votre age? ");
  8.     scanf("%d", &amp;age);
  9.     printf("\nVous avez %d ans.\n",age);
  10.     return 0;
  11. }


Et voilà le travail! A vous les programmes interactifs!

Notes utiles

Maintenant que vous savez faire toutes ces choses, il y a quelques détails à régler. Tout d'abord ce que l'on appelle les commentaires! Rien de tel qu'un code commenté. Les commentaires servent à pouvoir relire efficacement un code, c'est encore plus pratique si c'est quelqu'un d'autre qui lit votre code. Vous pourrez ainsi expliquer à certains endroits le fonctionnement de vos fonctions par exemple, ou même encore dire ce qu'il faut corriger à votre code. Attention, tout ce qui est commenté ne sera pas executé par votre programme:

Pour mettre un commentaire, il y a 2 méthodes:

  • -Mettre // devant une ligne de commentaire
  • -Mettre /* au début d'un bloc de commentaire et finir ce bloc par */


Un petit exemple pour illustrer tout cela:
  1. //déclaration d'une variable
  2. int variable; // la fin de cette ligne est commentée
  3.  
  4. /* tout ce qui suit est commenté:
  5. int variable = 10;
  6. printf(%d",variable);
  7. fin du commentaire*/


Question : Mais qu'est-ce que je dois commenter?

Très bonne question, il n'y a pas de règles spécifiques. Mettre en commentaire une ligne peut vous aider pour débuguer. Dans le cas général, on met un commentaire pour expliquer les fonctionnements critiques de votre programme.

Attention : Il est très mal vu, inutile, énervant de voir un commentaire qui paraphrase votre code. Je rappelle que le code est là uniquement pour aider à la compréhension, l'exemple que je vous ai donné en haut est donc une chose à ne pas faire!



Dernier point, j'aimerais revenir sur le type void. Comme vous vous en souvennez sans doute, cela signifie vide. L'utilisation première que l'on a vu était dans la fonction main qui n'attendait aucun argument. Mais ce type peut aussi être utilisé sur le retour d'une fonction. Vous pouvez donc très bien avoir des fonctions qui ne retournent rien.
Par exemple, vous pouvez faire une fonction qui affiche rapidement une variable avec un retour à la ligne:
  1. void afficherInt(int var)
  2. {
  3.     printf("%d\n",var);
  4. }


Information : Il n'est pas obligatoire de mettre un return à des fonctions qui retournent un void; cependant, si vous en avez l'utilitée, vous pouvez mettre l'instruction return; qui se comprend assez facilement et qui comme d'habitude va mettre fin à la lecture de la fonction.


Vous pouvez maintenant porter le titre de programmeur! Votre premier programme fait, je pense que les autres suivront rapidement, on y prend vite goût à ce truc La suite ne vous laissera pas de tout repos, vous allez rapidement prendre le contrôle total de votre programme et, à voir, de votre ordinateur.

Chapitre précédent - Sommaire - Chapitre suivant

Nos rédacteurs et membres sont pour la plupart ouverts à des remarques constructives et servir à alerter le rédacteur du cours, des fautes éventuelles ou de propositions et nouvelles perspectives de cours etc ...
Pour ce faire cliquez ici

Postez vous aussi un commentaire à cette partie via le lien que voici