Premier contact avec le C




        Il est maintenant temps d'apprendre à écrire un programme C. Il est possible que vous ne compreniez pas tout ce que nous ferons. C'est normal, le but de ce chapitre étant de nous "faire prendre contact".
Ce chapitre et les suivant partent de l'hypothèse que vous avez installé DJGPP correctement (rendez vous pour cela ici). De même pour rédiger un code source, il est neccéssaire d'avoir un éditeur de code source. Pour cela rendez vous ici pour l'éditeur emacs (préférable) ou ici pour l'IDE visual Studio ici. Les utilisateurs de Linux ou d'Unix ou de QNX pourrons directement installer gcc et les biblothèques C à l'aide de l'installeur de leur système.


Sommaire

1. Hello C
2. Analyse du code
3. Les fonctions
4. Entête et corps d'une fonction
5. La méthode Main
6. la présentation du code source
7. Les tokens
8. les commentaires
9. commentaires à l'aide de //
10. commentaires à l'aide de /* et */


Hello C

        Ouvrez votre éditeur de texte et saisissez le programme suivant en respectant la mise en forme et les majuscules :


#include <stdio.h>

void main()
{
    printf(" Bonjour de la part de C");
}


  Danger
En C, les majuscules et les minuscules sont considérées comme des caractères différents. Ainsi printf est différent de printF.

        Sauvegardez ce code source avec le nom bonjour.c dans un répertoire que nous nommerons intelligemment chapitre1 à l'intérieur du dossier que vous aurez créé spécialement pour vos sources C. Ouvrez une fenêtre MSDOS et tapez dans celle-ci :


gcc bonjour.c bonjour.exe

        Puis validez par la touche Entrée .
Si vous obtenez une erreur, c'est que le nom du fichier source que vous avez spécifié comporte des fautes ou ne se trouve pas dans le répertoire où vous avez appelé gcc. Cette commande a pour effet d'appeler le compilateur (gcc.exe) et de lui faire compiler notre fichier source. Un fichier bonjour.exe va alors être crée dans le même répertoire. Ce dernier contient le code machine obtenu à partir de notre source. Si nous appelons maintenant notre programme ainsi :


bonjour


  Remarque
il se peut qu'il y ai un warning à la compilation ne vous en préoccupez pas

        Au bout de une à deux secondes nous devrions alors avoir la sortie :


Bonjour de la part de C


  Danger
Si vous utilisez DJGPP n'oubliez pas d'appeler mdpexe.bat avant d'appeler la commande gcc en vous rendant dans le repertoire d'installation de djgpp (rendez vous dans la rubrique logiciel ou DJGPP est expliqué)



La sortie de notre programme

        Etudions maintenant le code source que nous venons d'écrire.


  Danger
Si le compilateur vous renvoie un autre message que celui énoncé ci-dessus en respectant les majuscules c'est que vous avez mal recopié le programme. Vérifiez bien votre source afin de détecter d'éventuels bugs...



il est important de bien ordonner le répertoire dans lequel on classe tous les programmes C


Analyse du code

        Le code que nous allons analyser est pratiquement incompréhensible pour nous à cet instant (bien que nous puissions deviner le rôle de certains bout de code). Nous allons maintenant tenter d'en expliquer la signification. Certains éléments, du fait de nos connaissances encore faibles sur un grand nombre de points, resteront encore obscurs à la fin de ce chapitre


Les fonctions


void main()  
{ 
   printf(" Bonjour de la part de C");
}


        La premières instructions qui se trouvent dans la partie de code ci-dessus créent une fonction qui se nomme Main.


Entête et corps d'une fonction

        Une fonction est un groupe d'instructions reliées logiquement auquel on attribue un nom.
Les fonctions sont créées en deux étapes. La première étape est l'entête de la fonction, la seconde étape est son contenu (corps).



déclaration d'une méthode dans un programme C

        Les fonctions prennent généralement des valeurs qui vont leur permettre d'effectuer un traitement et renvoient une valeur en retour comme résultat. Les paramètres que prend la fonction main sont placés entre les parenthèses ouvrantes et fermantes (nous reviendrons sur les paramètres bientôt). Ici main ne prend donc aucune valeur en entrée. Le mot clé void qui précède le nom de la fonction indique que celle-ci ne renverra aucune valeur.
Vous devez sans doute avoir au moment de la compilation de votre programme une erreur du type :


bonjour.c: In function `main':
bonjour.c:7: warning: return type of `main' is not `int'

        en effet le compilateur nous indique qu'il est d'usage de faire renvoyer par la fonction main une valeur. Le code source ci-dessous :


#include <stdio.h>

int main()
{
    printf(" Bonjour de la part de C");

   return 0;
}

        ne génère plus de warning à la compilation car nous indiquons que la fonction main renvoie un entier (mot clé int) et nous lui faisons retourner la valeur 0 par l'intermédiaire de l'instruction :


return 0;

        cette instruction peut encore vous sembler obscure, ne vous en inquietez pas.


La méthode Main

        Un programme peut contenir un nombre illimité de méthodes. Mais il devra obligatoirement y avoir une méthode dont le nom sera main. C'est par les instructions que contient cette méthode que débutera notre programme. Ce dernier a toujours besoin d'un point de départ pour débuter son traitement.


  Danger
codeurs C# : La fonction principale d'un programme est main et non pas Main

        Généralement cette fonction contient les appels à d'autres fonctions du programme qui vnt effectuer un traitement.
Si nous avions créé un fichier source sans la fonction main :


#include <stdio.h>

int fonction()
{
    printf(" Bonjour de la part de C");

   return 0;
}

        Le compilateur nous aurait renvoyé l'erreur :



sans la fonction main avec laquelle débuter le programme, le compilateur génère une erreur

        Voyons maintenant l'unique instruction de main.


   printf(" Bonjour de la part de C"); 


        Le corps de amin est un appel à une à une autre fonction à laquelle on donne un paramètre. La fonction appelée est printf. Cette dernière prend un paramètre de type chaîne de caractères (ici " Bonjour de la part de C#") et l'affiche sur la sortie standard (console MSDOS pour Windows, terminal xterm pour Unix et compatible etc.). Cette chaîne de caractères (placée entre les parenthèses) est différenciée par le compilateur des autres instructions parce qu'elle est délimitée par des guillemets.
Le point virgule qui termine l'instruction de notre programme peut être comparée à un sorte de ponctuation. A l'instar du point qui termine les phrases en Français, le point virgule termine les intructions en C.
La méthode printf est au départ inconnue du compilateur nous devons donc lui spécifier où elle se trouve définie afin qu'il comprenne son fonctionnement et apprenne à l'utiliser. C'est l'instrution :


#include <stdio.h>

        Cette ligne fait partie de ce qu'on appelle le préprocesseur du programme, comme toute directive commençant par le caractère #.
On inclut ici la bibliothèque stdio.h ( "STanDart Input Ouput" : gestion des sorties vers l'écran et les entrées au clavier). On peut dire qu'il est inséré dans votre code source.
Pourquoi inclure un fichier ?
Imaginez-vous quelqu'un, qui possède un esprit totalement vierge, incapable de s'exprimer, mais qui sait lire : vous lui donnez alors un livre qui a pour titre " j'apprend à parler ". Lorsque cette personne l'aura lu, elle pourra communiquer avec vous. Ici c'est la même chose : stdio.h est un fichier qui contient différentes définitions qui ont pour but d'apprendre à votre programme des fonctions, directives ou opérateurs, afin que vous puissiez les utiliser dans votre programme sans avoir de messages d'erreur.

        Maintenant que nous comprenons a peu près correctement notre programme, essayons de le rendre plus lisible.


la présentation du code source

        Ecrire un programme lisible et bien documenté est très important. C'est un élément primordial dans la recherche de bug. Cela permet en outre d'élaborer des programmes bien conçus et de donner une chance à d'autres programmeurs de comprendre votre travail.


Les tokens

        Lorsqu'on écrit un texte dans une langue, il faut le faire avec les symboles qui sont admis par cette langue pour la formation de phrases et de mots. Cette liste de symboles est le jeu de caractères de ce langage. En C le jeu de caractères suivant est admis :



Les différents caractères utilisables dans un code source C

        En assemblant ces caractères d'une certaine manière, il nous est possible de créer des tokens (éléments lexicaux de base) qui seront séparés par les caractères d'espacements (espace, tabulation, retour chariot, ou saut de page).


#include <stdio.h>

void main()
{
    printf(" Bonjour de la part de C");
}

        dans le programme, main, include, return, sont des tokens.


  Question
Mot clé : Un mot clé est un nom prédéfini que le programmeur n'a pas le droit d'utiliser dans son programme pour ses propres données.

        Notre chaîne de caractères "Bonjour de la part de C'' est un token. Tout comme la ponctuation , soit les points, les points virgules, mais aussi les parenthèses ou les accolades.
Un token ne peut pas être divisés en plusieurs éléments séparés par des espacements. Notre fonction principale Main ne peut pas s'écrire ainsi :


m a in

        Par contre il est possible d'espacer à volonté les tokens :


#include <stdio.h>

void



 main()



{




    printf(" Bonjour de la part de C");







}


        ou encore :


#include <stdio.h>
void main(){    printf(" Bonjour de la part de C");}

        Dans les deux cas ci-dessus le programme s'avère illisible.


les commentaires

        Pour faciliter la compréhension d'un fichier source lors d'une relecture, le langage C# permet l'utilisation de commentaires. Les commentaires peuvent êtres insérés en n'importe quel endroit d'un fichier source où les caractères d'espacement sont autorisés sauf dans les chaînes de caractères.
C permet deux syntaxes, les commentaires peuvent être introduits par l'utilisation d'un // ou délimités par les symboles /* et */.
Lors de la compilation, les commentaires seront évidemment enlevés du fichier exécutable généré.


commentaires à l'aide de //

        Ces commentaires sont indiqués au C en les faisant précéder des deux barres obliques //


//voilà un commentaire..

        Le compilateur en lisant le symbole // ignorera tous les caractères suivants jusqu'à la fin de la ligne. Il est ainsi possible de faire :


#include <stdio.h>        //inclusion de stdio

        les commentaires introduits avec l'aide de // sont donc utilisés pour de brèves explications à l'intérieur d'une ligne. Ils commencent généralement par un verbe à l'infinitif


//afficher le texte
printf("atchoum ");


        Si nous voulons mettre des commentaires sur plusieurs lignes d'affilée, rajouter des // à chaque fois peut s'avérer être une opération fastidieuse... Il vaut mieux dans ce cas utiliser le second moyen :


commentaires à l'aide de /* et */

        Il est possible une fois encore d'introduire un commentaire dans votre source en le délimitant par /* et */. Tous caractères se trouvant entre ces deux bornes est ignoré par le compilateur.


/*
voici un 
commentaire sur
plusieurs lignes ...
*/
/** voici un commentaire */ erroné*/
/*par contre celui là  est // autorisé*/


        Ces commentaires sont généralement utilisés pour la présentation d'un fichier source ou d'un membre d'une classe. Voici comment notre programme aurait pu concilier harmonieusement les deux commentaires :


//bonjour.c
/**************************************************/
/*                                                */
/*    premier programme d'apprentissage du C      */
/*                                                */
/*  Valentin BILLOTTE - " Le langage C   " 2001   */
/*                                                */
/**************************************************/

//utiliser stdio
#include <stdio.h>

/**
 * foction principale du programme
 */
void main()
{
    //afficher un message de bienvenue
    printf(" Bonjour de la part de C");
}

//fin bonjour.c


        Dans cette version, notre programme peut être compris par quelqu'un qui n'a jamais fait du C.


  Astuce
Pour l'impression : afin de nous permettre de reconnaître du premier coup d'oeil un source après une impression, il nous suffit comme dans le code ci-dessus de mettre en commentaire à la première ligne : //bonjour.c


[ Précédent | Index | Suivant ]



par Valentin BILLOTTE
vbillotte@programmationworld.com
http://www.programmationworld.com
Dernière mise à jour: