Rechercher
Vous pouvez entrer une phrase pour rechercher sur tout le site.
Accueil
- Page d'accueil du site
- Assistance technique
- Forums aux questions
- Les astuces du jour
- Mieux vous connaître
- Les dernières news
- La FaQ
- Le FTP
Hardware
- Le moniteur
- L'unité centrale
- La carte mère
- Le microprocesseur
- La mémoire vive
- La carte graphique
- Le lecteur de DVD-Rom
- Le graveur
- L'imprimante
- Top produits
- Le matériel du jour
- Comparateur de prix
Software
Pas à pas
- Monter son PC
- Formater un disque dur
- Installer Windows XP
- Console de récupération
- La cryptographie
- Dicoinfo
- La Programmation
- Les réseaux
- Outlook Express
- La FaQ
Internet
Le site
- Historique du site
- Mentions légales
- Technologies du site
- Plan du Site
- Certificats Digitaux
- Communiqués
- Revue de presse
Contacts
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.



