Chapitre suivantIndex des CoursChapitre 1

INTRODUCTION AU LANGAGE C

 

Objectifs
• S’initier au langage C

Eléments de contenu

• Historique du langage C

• Initiation au langage C

I-HISTORIQUE DU LANGAGE C

Le langage C a été conçu 1972 par Denis Ritchie avec un objectif précis: Ecrire un système d’exploitation (UNIX). A cet effet, il s’est inspiré du langage B (créé par K Thompson) qu’il a haussé ail niveau de langage évolué, notamment on l’enrichissant de structures et de types, et ceci tout en lui conservant ses aptitudes de programmation de bas niveau.

En 1978, Kernigham et Ritchie, couramment appelés K&R, ont fait apparaître un ouvrage “The C programming langage” qui constitue en quelque sorte un standard fixant les définitions et Les caractéristiques du langage. Toutefois le langage C a légèrement évolué à travers les différentes versions de compilateurs proposés depuis cette date.

Actuellement, il existe une norme pour le langage C (la norme ANSI). Les éditeurs de compilateurs, tout en  respectant cette norme, apportent quelques extensions pour enrichir

Langage notamment sous forme de bibliothèques de fonctions.

Il-INITIATION AU LANGAGE C

II.1 Premier exemple en C

Cet exemple de programme accompagné (à sa droite) de ce que fournit son exécution montre la structure générale d’un programme écrit en langage C.

main()

{

    printf (”bonjour”) ;                                                                                                                                             bonjour

}

La première ligne

main()

est une sorte “d’en-tête”. Elle précise que ce qui sera décrit à sa suite est en fait le programme “principal” (main on anglais). Lorsque nous aborderons l’écriture de fonctions en C, nous verrons que celles-ci possèdent également un tel en-tête ainsi, en C, le programme principal apparaît comme une fonction dont le nom (main) est imposé.

Le programme principal proprement dit vient à la suite de cet en-tête. Il est délimité par les accolades { et } Ici, il est constitué d’une seule instruction

printf (”bonjour”) ;

Les guillemets (nommés aussi “double quotes”) servent à délimiter une chaîne de caractères. Ici, cette instruction affiche simplement bonjour.

Il faut noter le point-virgule “;“ qui termine cette instruction. Il est obligatoire. En effet, en langage C, toute instruction dite simple doit être suivi d’un  point-virgule.

N= 10 ;

est une instruction d’affectation. Ici, elle place simplement la valeur 10 dans la variable n. On dit aussi qu’elle affecte a valeur 10 à la variable n.

La troisième instruction

Printf (” la valeur de n est % d”,n”) ; 

Ressemble  à celle rencontrées dans les exemple précédents. En fait, pour bien comprendre son fonctionnement, il faut savoir qu’en réalité pria/f est une fonction à laquelle on fournit un certain nombre d’arguments. Le premier (l’entre eux est toujours un format, c’est à dite une sorte de guide qui précise comment afficher les informations qui sont mentionnées dans les arguments suivants (lorsqu’ils existent). Ces arguments sont toujours séparés nu des virgules.

Ici donc, nous voyons que l’on transmet à la fonction printf deux arguments. Plus précisément, on lui demande d’afficher suivant le format

”la valeur de n est %d”

la valeur le la variable n.

Ces formats ressemblent à ceux des précédents programmes. Toutefois, on constate la présence d’un caractère %. Celui-ci signifie que ce qui arrive a sa suite est non pas du texte à afficher tel quel, mais un “code de format’. Ce code de format précise qu’il faut considérer a valeur reçue on argument suivant (donc ici celle de n )comme un entier et l’afficher en décimal.

il   peut paraître surprenant d’avoir à spécifier à nouveau dans ce code format que n est de type entier alors qu’on a déjà fournit une telle information au niveau de la déclaration de cette variable. Nous aurons l’occasion de revenir sur ce phénomène dont l’explication réside essentiellement dans le fait que printf est une fonction, autrement dit, les instructions correspondantes seront incorporées non pas à la compilation mais lors de l’édition des liens.

Remarque :

En C, il est possible d’attribuer une” valeur initiale” à une variable lors de sa déclaration. Ainsi, le programme précédent pourrait également s’écrire :

main()

{

int= 10 ;

Printf (” la valeur de n est % d”,n”) ; 

{

L’instruction

; int n=10 ;

réserve un emplacement pour une variable nommée n, mais de plus, elle y range la valeur 10.

II.2  Le type caractère et le code format %c
Examinons le programme suivant : *

Main()

{

char x:

     x= ‘e’                                                                                             La lettre est e

printf (“La lettre  est %c”, x,);

La déclaration :

char x;

Précise que x est une variable de type “caractère’. Celle-ci pourra consigne une constante caractère au même titre que 10 désigne une constante entière. Elle ne doit pas être confondue avec la notation “e” qui désigne une chaîne de caractères (constante) ne contenant qu’un seul caractère.

Le code format %c permet d’afficher une variable de type caractère quelle qu’elpar :

x=’\n’

nous obtiendrons comme résultat un changement de ligne.

Remarque :

En langage C, il rmet d’afficher un seul caractère.

Ainsi, le programme précédent pourrait également s’écrire :

main ()

{

char x;

     x= ‘e’ ;                                                                                           La lettre est e
     printf(”La lettre "
,x);

}

L’instruction putchar demande simplement d’afficher la valeur du caractère contenu dans la variable x. putchar possède donc un argument qui lui sera transmis ors de son appel

II.3 Lecture d’information au clavier

De même que nous pouvons utiliser putchar et printf pour afficher des information à l’écran, nous pouvons utiliser getchar et scanf pour lire des informations au clavier.         

a) Pour lire un caractère :getchar

Examinons l’exemple suivant :

main ()

{

char x;

       printf(”donnez un caractère: ”);                                                    donnez un caractère: a
       x=getchar();                                                                                  Merci pour a

printf(”Merci pour %c”, x);

putchar(x);

}

Contrairement à putchar, , getchar ne possède aucun d’argument. Les parenthèses  son toutefois obligatoires (même si elles ne contiennent rien). getchar fournit une valeur de retour (on dit aussi un résultat) de type caractère .Celle-ci sera affectée, dans notre exemple à la variable x.

b) Pour lire des informations  de type quelconque: scanf

Voyons ce programme:

main ()

{

int n,p;:

printf (”donnez deux nombres: ”);                                           donnez deux nombres : 5 8
scanf (%d%d, &n, &p,);                                                           leur scanne est : 13
  pAn/f (leur somme est s %dÇ n±p);

{

Vous constatez que de manière semblable à printf, la fonction scanf possède en argument un format exprimé sous forme d’une chaîne de caractères, ici:

%d%d

  ce qui correspond à deux valeurs entières.

Nous trouvons à sa suite une liste d’arguments précisant dans quelles variables on souhaite placer ces valeurs. Vous vous  attendiez peut être à une liste de variables de la forme

n,p

Or, on s’aperçoit que cette liste est différente. En fait, la fonction scanf reçoit en argument les adresses des variables (ces adresse sont ici &n et &p) dans lesquelles on va ranger les valeurs lues au clavier. Nous verrons plus tard que & est un opérateur qui signifie
”adresse de”.

index des coursChapitre suivant

Révisé le :23-Sep-2007| ©2007 www.technologuepro.com