Rechercher

Vous pouvez entrer une phrase pour rechercher sur tout le site.

Accueil

Hardware

Software

Pas à pas

Internet

Le site

Contacts


Serveur dédié chez OVH

Partenaires

Les bases de la programmation - page 3

3. Un langage compilé de haut niveau: le C; la compilation

Le C.
  Le C (ainsi que le C++ qui est une extension du C) est un langage de haut niveau. Cela signifie que en C vous disposez de très nombreuses structures logiques. Vous pouvez faire en C des choses beaucoup plus complexes qu'en assembleur.
Une des particularités du C est le typage. En informatique, on associe à chaque type de ressource un type. Comme types, il y a les entiers (int), les entiers long (long int), les flottants (float), les flottants en précision double (double), les booléens (vrai ou faux) (bool), les caractères (char), rien (void) ...
Et avant d'utiliser une variable (une sorte de tiroir) en C, vous devez la déclarer (afin que la place en mémoire lui soit réservée ...). Cela signifie que pour chaque variable, vous indiquez dans votre code source de quel type elle sera, et après vous ne pouvez plus changer ce type.
De la même façon, on déclare aussi le type de ce que renvoie les fonctions. Par exemple int a signifie que vous allez utiliser une variable nommée a, et qu'elle contiendra un entier.

Les possibilités offertes par le C sont très nombreuses, et il est de plus puissant et performant. Par exemple, le noyau Linux, qui pourtant interagit directement avec le processeur, est écrit a environ 90% en C, et seulement a 10% en assembleur. L'assembleur n'est utilisé que pour les parties critiques du noyau qui doivent être très rapide. Le C dispose aussi d'une part d'une librairie standard, qui offre de nombreuses fonctions usuelles, mais il permet aussi d'utiliser facilement des bibliothèques externes.

La compilation.
  Le code source que l'on écrit en C n'est pas exécutable. Il faut auparavant le transformer en langage machine. On dispose pour cela d'un compilateur. Cet outil va tout d'abord transformer le code source en code objet: c'est un code hybride, qui ne contient pas de liens. C'est a dire que dans le code source, à chaque fois qu'il y avait un appel version une fonction (que celle ci soit extérieure ou propre au programme), il y aura un signe spécial dans le code objet.
On utilise ensuite un éditeur de lien, qui va rassembler le code objet des différentes parties du programme, et qui va remplacer les appels aux fonctions internes par leur adresse mémoire. Mais il reste encore les appels aux fonctions extérieures au programme: sous Windows, on met un "lien dynamique", sous Linux, on place un "symbole". En fait, lorsque un programme sera chargé en mémoire, sous Windows le noyau associera ces liens dynamiques aux fonctions des bibliothèques de liens dynamiques (DLL), et sous Linux, le noyau résoudra les symboles, et associera aux fonctions.

Un exemple en C.
  Voici un petit exemple d'un programme en C (sous linux).

/***
 * Fonction my_putchar : affiche le caractère c
 *
 * Paramètre: un caractère
 * Retour: rien (type void)
 */
void my_putchar (char c) /* Déclaration de la fonction */
{
    write  (1, &c, 1); /* Appel à la fonction write qui écrit un caractère */
}

/***
 * Fonction my_putstr : affiche la chaîne de caractères str
 *
 * Paramètre: un pointeur (adresse mémoire) d'une chaîne de caractères
 * Retour: rien (type void)
 */
void my_putstr(char *str) /* Déclaration de la fonction  */
{
    while (*str != 0) /* Boucle qui s'exécute jusqu'a que *str
                    (la case mémoire ayant pour adresse str)
                    contienne un \0 (plus de caractère) */
    {
        my_putchar(*str); /* envoi de la lettre situé à l'adresse
                             str à la fonction my_putchar */
        str++; /* Incrémentation de str pour pointer sur le caractère suivant */
    }
}

/***
 * Fonction main : Fonction principale, appelée automatiquement en premier
 *
 * Paramètre: Rien
 * Retour: un entier (code d'erreur)
 */
int main () /* Déclaration de la fonction */
{
  my_putstr ("World-informatique.com"); /* envoi de la chaîne à afficher à my_putstr */
  my_putchar ('\n'); /* envoi du caractère \n (retour chariot ou entrée)
                     à la fonction my_putchar */
}

Lors de l'exécution d'un programme, c'est la fonction main qui est la première appelée. La compilation et l'exécution de ce programme se font par :

	$ cc -o exemple_wi exemple_wi.c
	$ ./exemple_wi
	World_informatique.com
	$
	

Les lignes commençant par un $ étant celles ou l'on a entré quelque chose, la troisième étant le résultat de l'exécution du programme.

 

Suite page 4
Retour page 2

Valid XHTML 1.1! Valide CSS!

Hit-Parade

Mesurez votre audience

Copyright © 2000 - 2008 World-Informatique.com. Tous droits réservés.
Hébergement offert par OVH