1 of 19

/ )

( 1

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

CHAPITRE I

2 of 19

/ )

( 2

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

1) Exemple de quelques instructions du C

3 of 19

/ )

( 3

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

Bonjour

Je vais vous calculer 5 racines carrées

Donnez un nombre : 4

Le nombre 4.000000 a pour racine carrée : 2.000000

Donnez un nombre : 2

Le nombre 2.000000 a pour racine carrée : 1.414214

Donnez un nombre : -3

Le nombre -3.000000 ne possède pas de racine carrée

Donnez un nombre : 5.8

Le nombre 5.800000 a pour racine carrée : 2.408319

Donnez un nombre : 12.58

Le nombre 12.580000 a pour racine carrée : 3.546829

Travail terminé - Au revoir

1) Exemple de quelques instructions du C

4 of 19

/ )

( 4

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • « en-tête » (précise que ce qui sera décrit à sa suite)
  • Le programme principal (main)
  • Le programme (principal) vient à la suite de cet en-tête
  • Délimité par les accolades « { » et « } »
  • Les instructions situées entre ces accolades forment un « bloc »

1) Exemple de quelques instructions du C

5 of 19

/ )

( 5

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • « déclarations »
  • variable nommée i est de type int (entiers relatifs)
  • x et racx sont de type float (approximation de nombres réels)
  • les déclarations des types des variables sont obligatoires et doivent être regroupées au début du programme

1) Exemple de quelques instructions du C

6 of 19

/ )

( 6

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • printf est fonction prédéfinie (fournie avec le langage), reçoit comme argument "Bonjour\n«
  • Les guillemets servent à délimiter une « chaîne de caractères »
  • \n est conventionnelle : elle représente un caractère de fin de ligne

1) Exemple de quelques instructions du C

7 of 19

/ )

( 7

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • printf reçoit deux arguments
  • le premier argument se nomme un « format » ; il s’agit d’une sorte de guide qui précise comment afficher les informations qui sont fournies par les arguments suivants
  • NFOIS, prend la valeur 5
  • Le caractère « %d » donne le « code de format » la valeur reçue (5) est considéré comme un entier et l’afficher en décimal
  • Accorder le code de format au type de la valeur correspondante

1) Exemple de quelques instructions du C

8 of 19

/ )

( 8

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • Répéter le bloc (délimité par des accolades « { » et « } »)
  • Avant de commencer la répétition, (i = 0)
  • Avant chaque nouvelle exécution du bloc, examiner (i < NFOIS)
  • A la fin de chaque exécution du bloc, (i++) (i = i + 1)

1) Exemple de quelques instructions du C

9 of 19

/ )

( 9

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • La première instruction du bloc répété par l’instruction for affiche simplement (Donnez un nombre:)
  • scanf lit une information au clavier
  • Un premier argument exprimé sous forme d’une chaîne de caractères, ici : "%f" précise le format
  • scanf doit être en mesure de ranger la valeur qu’elle aura lue dans l’emplacement correspondant à cette variable (son adresse)
  • & est un opérateur signifiant (adresse de)

1) Exemple de quelques instructions du C

10 of 19

/ )

( 10

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

  • Instruction de choix basée sur la condition x < 0.0
  • Si vraie, on exécute l’instruction suivante
  • Si elle est fausse, on exécute l’instruction suivant le mot else
  • Notez qu’il existe un mot else mais pas de mot then

1) Exemple de quelques instructions du C

11 of 19

/ )

( 11

#include <stdio.h>

#include <math.h>

#define NFOIS 5

main()

{ int i ;

float x ;

float racx ;

printf ("Bonjour\n") ;

printf ("Je vais vous calculer %d racines carrées\n", NFOIS) ;

for (i=0 ; i<NFOIS ; i++)

{ printf ("Donnez un nombre : ") ;

scanf ("%f", &x) ;

if (x < 0.0)

printf ("Le nombre %f ne possède pas de racine carrée\n", x) ;

else

{ racx = sqrt (x) ;

printf ("Le nombre %f a pour racine carrée : %f\n", x, racx) ;

}

}

printf ("Travail terminé - Au revoir") ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

1) Exemple de quelques instructions du C

  • Directives prises en compte avant la compilation du programme
  • Une directive ne s’applique qu’à la partie du programme qui lui succède
  • En générale, il est préférable de les placer au début
  • Les deux premières directives demandent d’introduire des instructions situées dans les fichiers stdio.h et math.h
  • Ces fichiers contiennent les déclarations appropriées concernant des fonctions : stdio.h pour printf et scanf, math.h pour sqrt.
  • Fréquemment, ces déclarations permettront au compilateur d’effectuer des contrôles sur le nombre et le type des arguments que vous mentionnerez dans l’appel de votre fonction
  • La troisième directive demande simplement de remplacer systématiquement le symbole NFOIS par 5

12 of 19

/ )

( 12

#include <stdio.h>

main()

{

char op ;

int n1, n2 ;

printf ("opération souhaitée (+ ou *) ? ") ;

scanf ("%c", &op) ;

printf ("donnez 2 nombres entiers : ") ;

scanf ("%d %d", &n1, &n2) ;

if (op == '+')

printf ("leur somme est : %d ", n1+n2) ;

else

printf ("leur produit est : %d ", n1*n2) ;

}

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

1) Exemple de quelques instructions du C

  • La variable op est de type caractère (char)
  • L ’instruction scanf ("%c", &op) permet de lire un caractère au clavier, getchar()
  • %c correspondant au type char (n’oubliez pas le & devant op)
  • La relation d’égalité se traduit par le signe ==
  • ’+’ représente une constante caractère

13 of 19

/ )

( 13

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

2) Quelques règles d’écriture

    • Les identificateurs

      • Servent à désigner les différents « objets » manipulés par le programme (variables, fonctions, etc.)
      • Ils sont formés d’une suite de caractères choisis parmi les lettres ou les chiffres, le premier d’entre eux étant nécessairement une lettre
      • Le caractère souligné (_) est considéré comme une lettre. Il peut donc apparaître au début d’un identificateur.
      • Voici quelques identificateurs corrects : lg_lig valeur_5 _total _89
      • les majuscules et les minuscules sont autorisées mais ne sont pas équivalentes (ligne et Ligne) désignent deux objets différents.
      • Pour la longueur des identificateurs, la norme ANSI prévoit 31 caractères

14 of 19

/ )

( 14

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

2) Quelques règles d’écriture

    • Les mots-clés

      • Certains « mots-clés » sont réservés par le langage à un usage particulier et ne peuvent pas être utilisés comme identificateurs

auto

default

float

register

struct

volatile

break

do

for

return

switch

while

case

double

goto

short

typedef

char

else

if

signed

union

const

enum

int

sizeof

unsigned

continue

extern

long

static

void

15 of 19

/ )

( 15

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

2) Quelques règles d’écriture

    • Les séparateurs

      • Deux identificateurs successifs entre lesquels la syntaxe n’impose aucun signe particulier (tel que : , = ; * ( ) [ ] { }) doivent être séparés soit par un espace, soit par une fin de ligne
      • En revanche, dès que la syntaxe impose un séparateur quelconque, il n’est alors pas nécessaire de prévoir d’espaces supplémentaires

int x,y //ok

intx,y //NO

int n,compte,total,p //ok

int n, compte, total, p //ok

16 of 19

/ )

( 16

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

2) Quelques règles d’écriture

    • Les commentaires

      • Formés de caractères quelconques placés entre les symboles /* et */

/* programme de calcul de racines carrées */

/* commentaire fantaisiste &ç§{<>} ?%!!!!!! */

/* commentaire s’étendant

sur plusieurs lignes

de programme source */

/* ============================================

* commentaire quelque peu esthétique *

* et encadré, pouvant servir, *

* par exemple, d’en-tête de programme *

============================================ */

// formule de politesse

17 of 19

/ )

( 17

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

3) Création d’un programme en langage C

    • L’édition du programme

      • La saisie qui consiste à créer tout ou partie du texte d’un programme qu’on nomme « programme source »
      • Ce texte sera conservé dans un fichier que l’on nommera « fichier source ».
      • Ce fichier est caractérisé par ce qu’on appelle une « extension », les fichiers source porteront l’extension « .c »

18 of 19

/ )

( 18

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

3) Création d’un programme en langage C

    • La compilation

      • Elle consiste à traduire le programme source (ou le contenu d’un fichier source) en langage machine, en faisant appel à un programme nommé compilateur
      • L’opération de compilation comporte en fait deux étapes :
        • Traitement par le préprocesseur : ce dernier exécute simplement les directives qui le concernent
        • La compilation c’est-à-dire traduction en langage machine du texte en langage C fourni par le préprocesseur.
        • Le résultat de la compilation porte le nom de module objet.

19 of 19

/ )

( 19

Langage C

I. II. III. IV. V. VI. VII. VIII. IX.

Généralités sur le C

3) Création d’un programme en langage C

    • L’édition de liens

      • Le module objet créé par le compilateur n’est pas directement exécutable
      • Il lui manque les différents modules objet correspondant aux fonctions prédéfinies (comme printf, scanf, sqrt).
      • Le rôle de l’éditeur de liens est de rechercher dans la bibliothèque standard les modules objet nécessaires
      • Le résultat de l’édition de liens est ce que l’on nomme un programme exécutable, c’est-à-dire un ensemble autonome d’instructions en langage machine