SlideShare une entreprise Scribd logo
1  sur  19
Bruno Delb                           http://www.brunodelb.com                        Date : 25/03/2001

                                                  Le langage C



                                                Sommaire

PRÉSENTATION..........................................................................................................3
  QUELLE EST L’HISTOIRE DU C ?...........................................................................................3
  COMMENT RÉALISER UN PROGRAMME C ?...............................................................................3
  QUELLE EST LA STRUCTURE D'UN PROGRAMME C ?....................................................................3
  QUELLE EST LA STRUCTURE D'UNE FONCTION C ?......................................................................4
    Syntaxe..................................................................................................................4
    Exemples................................................................................................................4
  QUELS SONT LES TYPES DE DONNÉES ?..................................................................................4
  QUELS SONT LES OPÉRATEURS ?..........................................................................................5
    Exemple.................................................................................................................5
LES COMMANDES........................................................................................................6
  QUELS SONT LES TYPES DE COMMANDE ?...............................................................................6
  QUELS SONT LES BOUCLES POSSIBLES ?................................................................................6
  QUELS RAPPORTS ENTRE FOR ET WHILE ?..............................................................................6
  QU’EST-CE QU’UN PRÉPROCESSEUR ?....................................................................................7
  QU’EST-CE QU’UNE FONCTION ?..........................................................................................7
  QU’EST-CE QU’UN POINTEUR ?............................................................................................7
    Quels sont les fichiers supportés par le C ?.................................................................8
LES ENTRÉES / SORTIES.............................................................................................9
  QUELLES SONT LES COMMANDES D'ENTRÉES / SORTIES ?............................................................9
  QUE FAIT PRINTF ?.........................................................................................................9
    OBJET....................................................................................................................9
    SYNTAXE................................................................................................................9
    PARAMETRES..........................................................................................................9
    EXEMPLE...............................................................................................................10
  QUE FAIT SCANF ?........................................................................................................10
    OBJET..................................................................................................................10
    EXEMPLE...............................................................................................................10
    PARAMETRES........................................................................................................10
    EXEMPLE...............................................................................................................11
  QUEL EST LE STYLE D'UN PROGRAMME C ?............................................................................11
LES DONNÉES...........................................................................................................12
  QU’EST-CE QU’UN IDENTIFICATEUR ?...................................................................................12
  COMMENT DÉCLARER DES DONNÉES ?..................................................................................12
  QUELS SONT LES TYPES ?................................................................................................12
  COMMENT INITIALISER DES DONNÉES ?................................................................................13
LES TYPES.................................................................................................................14
  QUEL EST LE DOMAINE DES TYPES ?....................................................................................14
  COMMENT CONVERTIR DE TYPE ?........................................................................................14
    Comment convertir de type par évaluation ?.............................................................14
    Comment convertir de type par casts ?....................................................................14
  QU’EST-CE QU’UN TABLEAU ?............................................................................................15
  QU’EST-CE QU’UNE CHAÎNE DE CARACTÈRES ?........................................................................15
    Comment traiter les chaînes ?.................................................................................15
  COMMENT DÉCLARER DE NOUVEAUX TYPES ?..........................................................................15


                                                             1
Bruno Delb                          http://www.brunodelb.com                     Date : 25/03/2001

                                                Le langage C

DE PASCAL À C..........................................................................................................17
  QUELS RAPPORTS ENTRE PASCAL ET C ?..............................................................................17
  QUELLES SONT LES ERREURS CLASSIQUES ?..........................................................................19




                                                           2
Bruno Delb                http://www.brunodelb.com      Date : 25/03/2001

                                  Le langage C




Présentation




  Quelle est l’histoire du C ?

       Le langage C est passé par plusieurs étapes :
             •   Langage BCPL
             •   Langage B
             •   Langage C
       Le langage BCPL a été développé au MIT puis à l'université de Cambridge.
       Le C se prête très bien à la programmation système. En effet, il est proche
       des caractéristiques machines. Par exemple, le système d'exploitation Unix a
       été écrit en C.


  Comment réaliser un programme C ?

             •   Ecriture du source à l'aide d'un éditeur
             •   Compilation du fichier source
             •   Linkage du ou des fichiers compilés


  Quelle est la structure d'un programme C ?

             •   Directives de Compilation
             •   Variables globales
             •   Fonction principale MAIN ()
             •   Fonctions externes




                                            3
Bruno Delb                       http://www.brunodelb.com   Date : 25/03/2001

                                      Le langage C




Quelle est la structure d'une fonction C ?

 Syntaxe
    Nom_de_la_fonction (arg1, arg2, ...)
    Déclaration des arguments;
    {
        Déclaration des variables locales;
        ..................................
        Commandes composant la fonction;
        ................................
    }


 Exemples
    main()
    { printf ('Le carré de deux est %d',carre(2));
    }
    carre(x)
    int x;
    { int y;
        y = x * x;
        return y;
    }



Quels sont les types de données ?


        Caractères   char c;
        Tableaux     int a[10];
                     char ligne[80];
                     char page[80][25];
        Réels        float x;
                     double y;
        Constantes   254 (entier)
                     02110 (octal)
                     0x05 (hexadécimal)
                     10.15 (réel)
                     'a' (caractère)
                     "exemple" (chaîne de caractères)
        Entiers      int nombre;




                                                4
Bruno Delb                       http://www.brunodelb.com   Date : 25/03/2001

                                       Le langage C




Quels sont les opérateurs ?


      Type            Liste
      arithmétiques   +,-,*,/,% (modulo)
      relationnels    <,<=,>,=>,!= (différent),== (égal)
      logiques        && (et),¦¦ (ou),! (non)

    Attention : = est un opérateur d'assignation et == un opérateur de relation.

 Exemple
    if ((x==0) && !(y==5)) z=3;




                                                5
Bruno Delb                    http://www.brunodelb.com      Date : 25/03/2001

                                     Le langage C




Les commandes




 Quels sont les types de commande ?

     Il y a deux types de commandes :
              •   les commandes non prédéfinies
                  Ce sont les fonctions définies dans le programme.
              •   les commandes prédéfinies
                  Elles sont intrinsèques au langage.
                  Exemple : if (), while (), ...
                  On distingue encore :
                          •   les commandes composées.
                              Exemple : { commande1; commande2; }
                          •   les commandes simples. Exemple : commande;


 Quels sont les boucles possibles ?

     On compare les boucles While et les boucles For.
     while (expression)
     {
         commandes;
     }

     expression = condition de boucle
     for (e1;e2;e3)
     {
         commandes;
     }

     e1 = condition initiale
     e2 = condition de boucle
     e3 = incrémentation


 Quels rapports entre For et While ?
     somme=0;             somme=0;
     i=0;                 for (i=0;i<=n;i=i+1)
     while (i<=n)                somme=somme+i;
     {

                                                 6
Bruno Delb                  http://www.brunodelb.com         Date : 25/03/2001

                                 Le langage C
    somme=somme+i;
    i=i+1;
    }



Qu’est-ce qu’un préprocesseur ?

    Le pré-processeur est le langage du compilateur.
    Son rôle est multiple :
             •   compilations conditionnelles
             •   détermination des fichiers à compiler
             •   définition de constantes
             •   définition de macros


Qu’est-ce qu’une fonction ?

    Les fonctions peuvent ête utilisées de façon :
             •   procédurale (exemple : fonction (arguments);),
             •   fonctionnelle : (exemple : val=fonction(args);).
    Les fonctions peuvent être récursives et peut transmettre les arguments par
    valeurs.


Qu’est-ce qu’un pointeur ?

    Un pointeur est l'adresse d'une variable.
    Ses fonctions sont :
             •   accès direct de la mémoire
             •   allocation dynamique de la mémoire
             •   transmission d'arguments par variables




                                            7
Bruno Delb                http://www.brunodelb.com   Date : 25/03/2001

                              Le langage C



Quels sont les fichiers supportés par le C ?
   Les fichiers supportés par le C sont :
         •   fichiers à accès séquentiel
         •   fichiers à accès direct
         •   fichiers à enregistrements bruts
         •   fichiers à enregistrements formatés




                                        8
Bruno Delb                       http://www.brunodelb.com                         Date : 25/03/2001

                                            Le langage C




Les entrées / sorties




  Quelles sont les commandes d'entrées / sorties ?

       La directive de compilation #include <stdio.h> est nécessaire pour pouvoir
       utiliser les entrées/sorties.
          Commande                                  Description
          c=getchar();                              Saisie d'un caractère.
          putchar(c);                               Affichage d'un caractère.
          printf ("Valeur de x : %d",x);            Affichage d'une chaîne formatée.
          scanf (%d",x);                            Saisie d'un chaîne formatée.




  Que fait PrintF ?

   OBJET
       La fonction printf permet l'affichage à l'écran.

   SYNTAXE
       printf ("chaîne de contrôle",arg1,arg2,...);


   PARAMETRES
       La chaîne de contrôle est une chaîne de caractère contenant des % donnant
       l'emplacement et le type des arguments arg1, arg2, ... ainsi que des
       caractères spéciaux prédéfinies affichant retours de chariot, tabulations, etc
       ...


          Types de données           Description
          %c                         caractère
          %s                         chaîne de caractères
          %f                         virgule flottante
          %d                         entier de base 10
          %o                         entier de base 8
          %x                         entier de base 16
          %e                         réel avec exponentielle
          %u                         entier non signé
          Caractères spéciaux              Description
          n                               nouvelle ligne

          t                               tabulation

          0                               caractère nul

          b                               retour arrière


                                                        9
Bruno Delb                      http://www.brunodelb.com      Date : 25/03/2001

                                     Le langage C

        r                         retour chariot

        f                         page suivante

                                 antislash


 EXEMPLE
    main()
    {
        int i,puiss;
        i=1;
        puiss=1;
        while (i<=10) {
            printf ("Deux à la puissance %d : %dn",i,puiss);
            i=i+1;
        }
    }



Que fait ScanF ?

 OBJET
    La fonction scanf permet une saisie à l'écran.

 EXEMPLE
    scanf ("chaîne de contrôle",&arg1,&arg2, ...);


 PARAMETRES
    La chaîne de contrôle est une chaîne de caractère contenant des % donnant
    l'emplacement et le type des arguments arg1, arg2, ... (types de données)
    ainsi que des caractères spéciaux prédéfinies affichant retours de chariot,
    tabulations, etc ...
    Attention : Les & sont obligatoires dans un scanf.




                                               10
Bruno Delb                       http://www.brunodelb.com          Date : 25/03/2001

                                      Le langage C



 EXEMPLE
    main ()
    {
        int i,puiss,n
        puiss=1;
        printf("Combien de puissances de deux ?");
        scanf("%d",&n);
        while (i<=n) {
            puiss=puiss*2;
            printf("Deux puissance %d : %dn",i,puiss);
            i=i+1;
        }
    }



Quel est le style d'un programme C ?

    Le style d'un programme est créé par :
               •     le placement des tabulations (touche TAB)
               •     le placement des accolades ({, })
               •     le choix des noms de variables
               •     les commentaires (/* et */)
               •     le placement des espaces dans les expressions
    Il est aussi conseillé d'écrire :
               •     les constantes en majuscules,
               •     les variables et les fonctions en minuscules.




                                               11
Bruno Delb                    http://www.brunodelb.com        Date : 25/03/2001

                                     Le langage C




Les données




 Qu’est-ce qu’un identificateur ?

     Un nom de variable est un identificateur.
     Or un identificateur est une séquence de lettres ou de chiffres qui commence
     par une lettre. Les espaces interdits et les minuscules et les majuscules sont
     différenciées.
     Exemple :     int num,NUM,no_1,No_1.



 Comment déclarer des données ?
     fonction (args)
     Déclaration des args;
     {
         Déclarations;
     }

     Le format est            :   Classe_de_stockage         Extension_de_type        Type
     Nom1,Nom2,...
     Exemple : static unsigned int compteur,somme;


 Quels sont les types ?

     Les types sont :
              •   Int
              •   Char
              •   Float
              •   Double
              •   Tableaux
              •   Constantes




                                              12
Bruno Delb                         http://www.brunodelb.com                       Date : 25/03/2001

                                         Le langage C

    Les extensions de type sont :


      Type         Description
      Unsigned     Variables non signée, extension de ses limites.
      Long         Force le stockage sur 32 bits, applicable uniquement sur les entiers.
      Short        Force le stockage sur 16 bits, applicable uniquement pour les entiers.
      Auto         Stockage local à la fonction courante, utilisation facultative
      Register     Stockage local, dans un registre du microprocesseur si possible
      Extern       Variable déclarée hors de la fonction; utile si utilisation de plusieurs modules
      Static       Rend globale une variable déclarée dans une fonction




Comment initialiser des données ?

    Les variables peuvent être initialisées lors de la déclaration.
    Exemple :
    int i=0,j=1;
    int a[5]={1,2,4,5,32);
    char message [30]="Veuillez appuyer sur une touche";
    char tab[2][3]={"unn","deux"};

    Les variables globales sont automatiquement initialisées à zéro. Pour les
    variables locales, les tableaux ne peuvent pas être initialisés de cette façon.




                                                   13
Bruno Delb                       http://www.brunodelb.com        Date : 25/03/2001

                                        Le langage C




Les types




  Quel est le domaine des types ?
        Types et ext.      Stockage       Valeurs
        char               8 bits         128 à 127
        int                16/32 bits     (cf types suivants)
        short              16 bits        -32768 à 32767
        long               32 bits        -2147483648 à 2147483647
        unsigned char      8 bits         0 à 255
        unsigned short     16 bits        0 à 65535
        unsigned long      32 bits        0 à 4294967295
        float              32 bits        3.4E-38 à 3.4E+38
        double             64 bits        1.7E-308 à 1.7E+308




  Comment convertir de type ?

   Comment convertir de type par évaluation ?
      Le langage C permet une conversion automatique des données dans les
      évaluations d'expressions.
      Exemple :
      int x;               x est de type double
      double y;   x ajouté à y
      x=x+y;               x tronqué en entier


   Comment convertir de type par casts ?
      La syntaxe est : (type)expression
      Ce type de conversion est utilisé essentiellement dans les fonctions.
      Exemple :
      double x;
      int n;
      x=sqrt((double)n);




                                                    14
Bruno Delb                   http://www.brunodelb.com                   Date : 25/03/2001

                                     Le langage C




Qu’est-ce qu’un tableau ?

    Les tableaux sont déclarés comme suit :          type nom[l][m]...;

    Les énumérations sont utilisées pour nommer les éléments d'une liste
    d'indices.
    Exemple :
    enum color (bleu,blanc,rouge);
    double teinte[3];          bleu   blanc rouge
    teinte[bleu]=0.5;          teinte : ¦ 0.5 ¦ 0.6 ¦ 0.7 ¦
    teinte[blanc]=0.6;
    teinte[rouge]=0.7;

    Type quelconque de donnée, tableaux statique.
    []... = dimensions du tableau, indiçage à partir de zéro.


Qu’est-ce qu’une chaîne de caractères ?

    Une chaîne de caractères est un tableau de caractères.
    Attention : La fin d'une chaîne correspond au caractère NULL (0). Il faut
    donc prévoir des tableaux d'au moins un caractère de plus que les chaînes.
    Exemple                                                                :
    Pour la représentation en mémoire de char mot[6]="bonjour", on aurait en
    mémoire :
    mot [0] [1] [2] [3] [4] [5] [6] [7]
    mot : ¦ b ¦ o ¦ n ¦ j ¦ o ¦ u ¦ r ¦ 0 ¦

 Comment traiter les chaînes ?
    Les fonctions str ... :
    Attention :
    chaine1=chaine2;           est                            INCORRECT                       !
    if (chaine1==chaine2)...

    Pour faire une telle affectation, il faut utiliser une fonction de traitement de
    chaînes.
    Exemple :
    strcpy (chaine_destin,chaine_source);
    if (strcmp(ch1,ch2)==0) printf("Chaînes identique");



Comment déclarer de nouveaux types ?

    Déclarer un nouveau type consiste à donner un nouveau nom à un type
    prédéfini.
    Ceci est fait par la commande typedef :
    typedef type_prédéfini nouveau_nom_de_type;

                                            15
Bruno Delb                  http://www.brunodelb.com                Date : 25/03/2001

                               Le langage C

 Exemple :
 typedef int LOGIQUE;      /* simulation de booléen */
 LOGIQUE Réponse,Trouvé;
 typedef double vecteur[2]; /* Simplification des déclarations */
 vecteur inc;
 inc[0]=12; inc[1]=128;




                                        16
Bruno Delb                       http://www.brunodelb.com               Date : 25/03/2001

                                        Le langage C




De Pascal à C




  Quels rapports entre Pascal et C ?

      On distingue :
                •   les caractères spéciaux
                •   les instructions
                •   les directives
      Cependant, certains ordres n'ont pas été traduits.


         C                                       Pascal
         "                                       '
         {                                       BEGIN
         }                                       END;
         <tab>                                   <2 espaces>
         /                                       DIV
         %                                       MOD
         ~                                       XOR
         !                                       NOT
         >>                                      SHR
         <<                                      SHL
         ()                                      <rien>
         &&                                      AND
         ||                                      OR
         comment start                           {
         comment end                             }
         ==                                      =
         !=                                      <>
         =                                       :=
         printf                                  writeln
         scanf                                   readln
         while                                   WHILE
         /*...*/                                 {...}
         static id = valeur                      id = valeur
         id type                                 type id
         char                                    boolean
         int                                     integer
         exit()                                  halt
         double                                  real
         typedef struct { LISTE-MEMBRE } ID      id = record LISTE-MEMBRE end
         typedef enum {...} ID                   ID = (...)


                                                 17
Bruno Delb                       http://www.brunodelb.com                    Date : 25/03/2001

                                       Le langage C

    TYPEDEF type ID [RANGE]                   ID = array [RANGE] of TYPE
    TYPE-DEFINI *ID                           ID = ^TYPE-DEFINI
    TYPEDEF char ID [N]                       ID = string [N]
    FILE *ID                                  int ID
    ID = text                                 ID = text
    for (VAR = FIRST; VAR <= LAST; VAR+ for VAR :=              FIRST   to   LAST   do
    +) STATEMENT                        STATEMENT
    for (VAR = FIRST; VAR >= LAST; for VAR := FIRST downto LAST do
    VAR--) STATEMENT               statement
    while (COND) ordre                        while COND do ordre
    do { ORDRES } while (!COND)               repeat ORDRES until COND
    if (COND) ORDRE; else ORDRE               if COND then ORDRE else ORDRE
    switch (VALUE) { case V: ORDRE; case VALUE of V: ORDRE; V,U: ORDRE;
    break; case V: case U: ORDRE; break; else ORDRE end
    default: ORDRE; }
    inset (VAL, setof (A, B, C, -1))          VAL in [A,B,C]
    arcv                                      paramcount
    argv[n]                                   paramstr(n)
    *VAR                                      VAR^
    VAR->MEMBRE                               VAR^.MEMBER
    return                                    exit
    VAR = malloc (sizeof (*VAR))              new (VAR)
    null                                      nil
    0xhhhh                                    $hhhh
    printf("%d%nd%n.md",VAR, VAR, VAR) write(VAR,VAR:n,VAR:n:m)
    fprintf(FILE,"%d%d%dn", VAR, VAR, writeln(FILE,VAR,VAR,VAR)
    VAR)
    scanf("%d%nd%d",&VAR,               &VAR, read(VAR,VAR,VAR)
    &VAR)
    fscanf(FILE,"%d%d%dn",             &VAR, readln(FILE,VAR,VAR,VAR)
    &VAR, &VAR)
    strcpy(VAR, "string")                     VAR := "string"
    strcpy(VAR, concat(VAR1, "string"))       VAR := VAR1 + "string"
    (strcmp(VAR,"string") == 0                VAR == "string"
    (strcmp(VAR,"string") < 0)                VAR < "string"
    (strcmp("string",VAR) >= 0)               "string" >= VAR
    return expr                               FUN_NAME := expr
    {$B+/-}                                   #pragma standard_io(ON/OFF)
    {$C+/-}                                   #pragma control_c_check (ON/OFF)
    {$D+/-}                                   #pragma device_check(ON/OFF)
    {$Fn}                                     #pragma max_files(n)
    {$Gn}                                     #pragma input_file_buffer(n)
    {$I name}                                 #include "name"
    {$I+/-}                                   #pragma io_error_check (ON/OFF)
    {$K+/-}                                   #pragma stack_check(ON/OFF)
    {$Pn}                                     #pragma output_file_buffer (n)
    {$R+/-}                                   #pragma range_check(ON/OFF)
    {$U+/-}                                   #pragma user_interrupt (ON/OFF)
    {$V+/-}                                   #pragma param_type_check (ON/OFF)

 Les listes de paramètres formels des fonctions/procédures sont traduites en
 déclaration de procédure séparée et déclaratios de variable de paramètre,
 comme dans le cas ci-dessous :

                                              18
Bruno Delb                 http://www.brunodelb.com               Date : 25/03/2001

                                 Le langage C

                       C                                   Pascal
                       TYPE3 NAME (V1,V2) TYPE1 V1; TYPE2 function NAME(V1: TYPE1; V2: TYPE2):
                       V2;                                TYPE3

    Les procédures sont traduites en fonctions avec les types VOID en types de
    retour. La syntaxe littérale d'un caractère spécial, comme ^C ou #nn, est
    traduit en 'ooo', où ooo est la notation octale pour le code ASCII.
    Des listes de paramètres vides sont ajoutées aux appels de fonction et de
    procédure, où elles sont nécessaires en C et pas en Pascal.
    Ne sont pas traduits :
          •   Les procédures ou fonctions imbriquées qui ne peuvent pas être
              codées en C.
          •   Les paramètres VAR doivent être manuellement recodés.
          •   Les procédures d'accès au fichier doivent être codées (RESET,
              ASSIGN, CLOSE, ...).
          •   Les portées dans la forme VAL..VAL ne sont pas traduites en ordres
              CASE.
          •   Les déclarations de type pointeur FORWARD sont traduits, mais ne
              seront pas compilés en C. Elles doivent être recodées
              manuellement.
          •   Les types d'enregistrement variant doivent être retraduits en
              UNIONS, mais ne le sont pas.
          •   Les opérateurs AND et OR sont toujours traduits en opérateurs
              logiques && et ||.
          •   La "precidence" de l'opérateur C diffère de celui du Pascal, et les
              différences ne sont pas traduites.
          •   L'ordre WITH n'est pas traduit.
          •   Les tableaux MEM [] et PORT [] ne sont pas traduits. Ils doivent
              être retranscris en appels de fonction.
          •   Les variables absolues ne sont pas traduites (et ne peuvent
              probablement pas l'être).


Quelles sont les erreurs classiques ?

    Oubli d'un point virgule. Exemple : printf("Bonjour");
    Oubli du & dans un scanf. Exemple : scanf("%d",valeur);
    Présence de caractère dans la chaîne de contrôle d'un scanf. Exemple : scanf
    (Entrez un nombre : %d",valeur);
    Ajout superflu d'un point virgule.
    Oubli d'une accolade.
    Oubli de la déclaration d'une variable.
    Oubli de l'insertion de stdio.h.


                                         19

Contenu connexe

Tendances

Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Fahad Golra
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage CFahad Golra
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage CFahad Golra
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Seance 2 - Programmation en langage C
Seance 2 - Programmation en langage CSeance 2 - Programmation en langage C
Seance 2 - Programmation en langage CFahad Golra
 

Tendances (20)

Cours langage c
Cours langage cCours langage c
Cours langage c
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage C
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Seance 2 - Programmation en langage C
Seance 2 - Programmation en langage CSeance 2 - Programmation en langage C
Seance 2 - Programmation en langage C
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 

Similaire à Le langage C

Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Le langage C.pdf
Le langage C.pdfLe langage C.pdf
Le langage C.pdfNoamHaythem
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdfAboubacarDiarra10
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1Beligh HAMDI
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxLagloireSouamounou
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 

Similaire à Le langage C (20)

Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
langage C++
langage C++langage C++
langage C++
 
Le langage C.pdf
Le langage C.pdfLe langage C.pdf
Le langage C.pdf
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Langage c
Langage cLangage c
Langage c
 
Langage de Programmation.pdf
Langage de Programmation.pdfLangage de Programmation.pdf
Langage de Programmation.pdf
 
Compilation
CompilationCompilation
Compilation
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Php seance1
Php seance1Php seance1
Php seance1
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptxESGAE_C#_2021-2024 Cours Avancé (('.pptx
ESGAE_C#_2021-2024 Cours Avancé (('.pptx
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
Cours.langage c
Cours.langage cCours.langage c
Cours.langage c
 
Introduction à Uml
Introduction à UmlIntroduction à Uml
Introduction à Uml
 

Plus de Bruno Delb

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Bruno Delb
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Bruno Delb
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Bruno Delb
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Bruno Delb
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Bruno Delb
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Bruno Delb
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Bruno Delb
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Bruno Delb
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Bruno Delb
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Bruno Delb
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Bruno Delb
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Bruno Delb
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Bruno Delb
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Bruno Delb
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Bruno Delb
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Bruno Delb
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Bruno Delb
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Bruno Delb
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Bruno Delb
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Bruno Delb
 

Plus de Bruno Delb (20)

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)
 

Le langage C

  • 1. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Sommaire PRÉSENTATION..........................................................................................................3 QUELLE EST L’HISTOIRE DU C ?...........................................................................................3 COMMENT RÉALISER UN PROGRAMME C ?...............................................................................3 QUELLE EST LA STRUCTURE D'UN PROGRAMME C ?....................................................................3 QUELLE EST LA STRUCTURE D'UNE FONCTION C ?......................................................................4 Syntaxe..................................................................................................................4 Exemples................................................................................................................4 QUELS SONT LES TYPES DE DONNÉES ?..................................................................................4 QUELS SONT LES OPÉRATEURS ?..........................................................................................5 Exemple.................................................................................................................5 LES COMMANDES........................................................................................................6 QUELS SONT LES TYPES DE COMMANDE ?...............................................................................6 QUELS SONT LES BOUCLES POSSIBLES ?................................................................................6 QUELS RAPPORTS ENTRE FOR ET WHILE ?..............................................................................6 QU’EST-CE QU’UN PRÉPROCESSEUR ?....................................................................................7 QU’EST-CE QU’UNE FONCTION ?..........................................................................................7 QU’EST-CE QU’UN POINTEUR ?............................................................................................7 Quels sont les fichiers supportés par le C ?.................................................................8 LES ENTRÉES / SORTIES.............................................................................................9 QUELLES SONT LES COMMANDES D'ENTRÉES / SORTIES ?............................................................9 QUE FAIT PRINTF ?.........................................................................................................9 OBJET....................................................................................................................9 SYNTAXE................................................................................................................9 PARAMETRES..........................................................................................................9 EXEMPLE...............................................................................................................10 QUE FAIT SCANF ?........................................................................................................10 OBJET..................................................................................................................10 EXEMPLE...............................................................................................................10 PARAMETRES........................................................................................................10 EXEMPLE...............................................................................................................11 QUEL EST LE STYLE D'UN PROGRAMME C ?............................................................................11 LES DONNÉES...........................................................................................................12 QU’EST-CE QU’UN IDENTIFICATEUR ?...................................................................................12 COMMENT DÉCLARER DES DONNÉES ?..................................................................................12 QUELS SONT LES TYPES ?................................................................................................12 COMMENT INITIALISER DES DONNÉES ?................................................................................13 LES TYPES.................................................................................................................14 QUEL EST LE DOMAINE DES TYPES ?....................................................................................14 COMMENT CONVERTIR DE TYPE ?........................................................................................14 Comment convertir de type par évaluation ?.............................................................14 Comment convertir de type par casts ?....................................................................14 QU’EST-CE QU’UN TABLEAU ?............................................................................................15 QU’EST-CE QU’UNE CHAÎNE DE CARACTÈRES ?........................................................................15 Comment traiter les chaînes ?.................................................................................15 COMMENT DÉCLARER DE NOUVEAUX TYPES ?..........................................................................15 1
  • 2. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C DE PASCAL À C..........................................................................................................17 QUELS RAPPORTS ENTRE PASCAL ET C ?..............................................................................17 QUELLES SONT LES ERREURS CLASSIQUES ?..........................................................................19 2
  • 3. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Présentation Quelle est l’histoire du C ? Le langage C est passé par plusieurs étapes : • Langage BCPL • Langage B • Langage C Le langage BCPL a été développé au MIT puis à l'université de Cambridge. Le C se prête très bien à la programmation système. En effet, il est proche des caractéristiques machines. Par exemple, le système d'exploitation Unix a été écrit en C. Comment réaliser un programme C ? • Ecriture du source à l'aide d'un éditeur • Compilation du fichier source • Linkage du ou des fichiers compilés Quelle est la structure d'un programme C ? • Directives de Compilation • Variables globales • Fonction principale MAIN () • Fonctions externes 3
  • 4. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Quelle est la structure d'une fonction C ? Syntaxe Nom_de_la_fonction (arg1, arg2, ...) Déclaration des arguments; { Déclaration des variables locales; .................................. Commandes composant la fonction; ................................ } Exemples main() { printf ('Le carré de deux est %d',carre(2)); } carre(x) int x; { int y; y = x * x; return y; } Quels sont les types de données ? Caractères char c; Tableaux int a[10]; char ligne[80]; char page[80][25]; Réels float x; double y; Constantes 254 (entier) 02110 (octal) 0x05 (hexadécimal) 10.15 (réel) 'a' (caractère) "exemple" (chaîne de caractères) Entiers int nombre; 4
  • 5. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Quels sont les opérateurs ? Type Liste arithmétiques +,-,*,/,% (modulo) relationnels <,<=,>,=>,!= (différent),== (égal) logiques && (et),¦¦ (ou),! (non) Attention : = est un opérateur d'assignation et == un opérateur de relation. Exemple if ((x==0) && !(y==5)) z=3; 5
  • 6. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Les commandes Quels sont les types de commande ? Il y a deux types de commandes : • les commandes non prédéfinies Ce sont les fonctions définies dans le programme. • les commandes prédéfinies Elles sont intrinsèques au langage. Exemple : if (), while (), ... On distingue encore : • les commandes composées. Exemple : { commande1; commande2; } • les commandes simples. Exemple : commande; Quels sont les boucles possibles ? On compare les boucles While et les boucles For. while (expression) { commandes; } expression = condition de boucle for (e1;e2;e3) { commandes; } e1 = condition initiale e2 = condition de boucle e3 = incrémentation Quels rapports entre For et While ? somme=0; somme=0; i=0; for (i=0;i<=n;i=i+1) while (i<=n) somme=somme+i; { 6
  • 7. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C somme=somme+i; i=i+1; } Qu’est-ce qu’un préprocesseur ? Le pré-processeur est le langage du compilateur. Son rôle est multiple : • compilations conditionnelles • détermination des fichiers à compiler • définition de constantes • définition de macros Qu’est-ce qu’une fonction ? Les fonctions peuvent ête utilisées de façon : • procédurale (exemple : fonction (arguments);), • fonctionnelle : (exemple : val=fonction(args);). Les fonctions peuvent être récursives et peut transmettre les arguments par valeurs. Qu’est-ce qu’un pointeur ? Un pointeur est l'adresse d'une variable. Ses fonctions sont : • accès direct de la mémoire • allocation dynamique de la mémoire • transmission d'arguments par variables 7
  • 8. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Quels sont les fichiers supportés par le C ? Les fichiers supportés par le C sont : • fichiers à accès séquentiel • fichiers à accès direct • fichiers à enregistrements bruts • fichiers à enregistrements formatés 8
  • 9. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Les entrées / sorties Quelles sont les commandes d'entrées / sorties ? La directive de compilation #include <stdio.h> est nécessaire pour pouvoir utiliser les entrées/sorties. Commande Description c=getchar(); Saisie d'un caractère. putchar(c); Affichage d'un caractère. printf ("Valeur de x : %d",x); Affichage d'une chaîne formatée. scanf (%d",x); Saisie d'un chaîne formatée. Que fait PrintF ? OBJET La fonction printf permet l'affichage à l'écran. SYNTAXE printf ("chaîne de contrôle",arg1,arg2,...); PARAMETRES La chaîne de contrôle est une chaîne de caractère contenant des % donnant l'emplacement et le type des arguments arg1, arg2, ... ainsi que des caractères spéciaux prédéfinies affichant retours de chariot, tabulations, etc ... Types de données Description %c caractère %s chaîne de caractères %f virgule flottante %d entier de base 10 %o entier de base 8 %x entier de base 16 %e réel avec exponentielle %u entier non signé Caractères spéciaux Description n nouvelle ligne t tabulation 0 caractère nul b retour arrière 9
  • 10. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C r retour chariot f page suivante antislash EXEMPLE main() { int i,puiss; i=1; puiss=1; while (i<=10) { printf ("Deux à la puissance %d : %dn",i,puiss); i=i+1; } } Que fait ScanF ? OBJET La fonction scanf permet une saisie à l'écran. EXEMPLE scanf ("chaîne de contrôle",&arg1,&arg2, ...); PARAMETRES La chaîne de contrôle est une chaîne de caractère contenant des % donnant l'emplacement et le type des arguments arg1, arg2, ... (types de données) ainsi que des caractères spéciaux prédéfinies affichant retours de chariot, tabulations, etc ... Attention : Les & sont obligatoires dans un scanf. 10
  • 11. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C EXEMPLE main () { int i,puiss,n puiss=1; printf("Combien de puissances de deux ?"); scanf("%d",&n); while (i<=n) { puiss=puiss*2; printf("Deux puissance %d : %dn",i,puiss); i=i+1; } } Quel est le style d'un programme C ? Le style d'un programme est créé par : • le placement des tabulations (touche TAB) • le placement des accolades ({, }) • le choix des noms de variables • les commentaires (/* et */) • le placement des espaces dans les expressions Il est aussi conseillé d'écrire : • les constantes en majuscules, • les variables et les fonctions en minuscules. 11
  • 12. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Les données Qu’est-ce qu’un identificateur ? Un nom de variable est un identificateur. Or un identificateur est une séquence de lettres ou de chiffres qui commence par une lettre. Les espaces interdits et les minuscules et les majuscules sont différenciées. Exemple : int num,NUM,no_1,No_1. Comment déclarer des données ? fonction (args) Déclaration des args; { Déclarations; } Le format est : Classe_de_stockage Extension_de_type Type Nom1,Nom2,... Exemple : static unsigned int compteur,somme; Quels sont les types ? Les types sont : • Int • Char • Float • Double • Tableaux • Constantes 12
  • 13. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Les extensions de type sont : Type Description Unsigned Variables non signée, extension de ses limites. Long Force le stockage sur 32 bits, applicable uniquement sur les entiers. Short Force le stockage sur 16 bits, applicable uniquement pour les entiers. Auto Stockage local à la fonction courante, utilisation facultative Register Stockage local, dans un registre du microprocesseur si possible Extern Variable déclarée hors de la fonction; utile si utilisation de plusieurs modules Static Rend globale une variable déclarée dans une fonction Comment initialiser des données ? Les variables peuvent être initialisées lors de la déclaration. Exemple : int i=0,j=1; int a[5]={1,2,4,5,32); char message [30]="Veuillez appuyer sur une touche"; char tab[2][3]={"unn","deux"}; Les variables globales sont automatiquement initialisées à zéro. Pour les variables locales, les tableaux ne peuvent pas être initialisés de cette façon. 13
  • 14. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Les types Quel est le domaine des types ? Types et ext. Stockage Valeurs char 8 bits 128 à 127 int 16/32 bits (cf types suivants) short 16 bits -32768 à 32767 long 32 bits -2147483648 à 2147483647 unsigned char 8 bits 0 à 255 unsigned short 16 bits 0 à 65535 unsigned long 32 bits 0 à 4294967295 float 32 bits 3.4E-38 à 3.4E+38 double 64 bits 1.7E-308 à 1.7E+308 Comment convertir de type ? Comment convertir de type par évaluation ? Le langage C permet une conversion automatique des données dans les évaluations d'expressions. Exemple : int x; x est de type double double y; x ajouté à y x=x+y; x tronqué en entier Comment convertir de type par casts ? La syntaxe est : (type)expression Ce type de conversion est utilisé essentiellement dans les fonctions. Exemple : double x; int n; x=sqrt((double)n); 14
  • 15. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Qu’est-ce qu’un tableau ? Les tableaux sont déclarés comme suit : type nom[l][m]...; Les énumérations sont utilisées pour nommer les éléments d'une liste d'indices. Exemple : enum color (bleu,blanc,rouge); double teinte[3]; bleu blanc rouge teinte[bleu]=0.5; teinte : ¦ 0.5 ¦ 0.6 ¦ 0.7 ¦ teinte[blanc]=0.6; teinte[rouge]=0.7; Type quelconque de donnée, tableaux statique. []... = dimensions du tableau, indiçage à partir de zéro. Qu’est-ce qu’une chaîne de caractères ? Une chaîne de caractères est un tableau de caractères. Attention : La fin d'une chaîne correspond au caractère NULL (0). Il faut donc prévoir des tableaux d'au moins un caractère de plus que les chaînes. Exemple : Pour la représentation en mémoire de char mot[6]="bonjour", on aurait en mémoire : mot [0] [1] [2] [3] [4] [5] [6] [7] mot : ¦ b ¦ o ¦ n ¦ j ¦ o ¦ u ¦ r ¦ 0 ¦ Comment traiter les chaînes ? Les fonctions str ... : Attention : chaine1=chaine2; est INCORRECT ! if (chaine1==chaine2)... Pour faire une telle affectation, il faut utiliser une fonction de traitement de chaînes. Exemple : strcpy (chaine_destin,chaine_source); if (strcmp(ch1,ch2)==0) printf("Chaînes identique"); Comment déclarer de nouveaux types ? Déclarer un nouveau type consiste à donner un nouveau nom à un type prédéfini. Ceci est fait par la commande typedef : typedef type_prédéfini nouveau_nom_de_type; 15
  • 16. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C Exemple : typedef int LOGIQUE; /* simulation de booléen */ LOGIQUE Réponse,Trouvé; typedef double vecteur[2]; /* Simplification des déclarations */ vecteur inc; inc[0]=12; inc[1]=128; 16
  • 17. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C De Pascal à C Quels rapports entre Pascal et C ? On distingue : • les caractères spéciaux • les instructions • les directives Cependant, certains ordres n'ont pas été traduits. C Pascal " ' { BEGIN } END; <tab> <2 espaces> / DIV % MOD ~ XOR ! NOT >> SHR << SHL () <rien> && AND || OR comment start { comment end } == = != <> = := printf writeln scanf readln while WHILE /*...*/ {...} static id = valeur id = valeur id type type id char boolean int integer exit() halt double real typedef struct { LISTE-MEMBRE } ID id = record LISTE-MEMBRE end typedef enum {...} ID ID = (...) 17
  • 18. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C TYPEDEF type ID [RANGE] ID = array [RANGE] of TYPE TYPE-DEFINI *ID ID = ^TYPE-DEFINI TYPEDEF char ID [N] ID = string [N] FILE *ID int ID ID = text ID = text for (VAR = FIRST; VAR <= LAST; VAR+ for VAR := FIRST to LAST do +) STATEMENT STATEMENT for (VAR = FIRST; VAR >= LAST; for VAR := FIRST downto LAST do VAR--) STATEMENT statement while (COND) ordre while COND do ordre do { ORDRES } while (!COND) repeat ORDRES until COND if (COND) ORDRE; else ORDRE if COND then ORDRE else ORDRE switch (VALUE) { case V: ORDRE; case VALUE of V: ORDRE; V,U: ORDRE; break; case V: case U: ORDRE; break; else ORDRE end default: ORDRE; } inset (VAL, setof (A, B, C, -1)) VAL in [A,B,C] arcv paramcount argv[n] paramstr(n) *VAR VAR^ VAR->MEMBRE VAR^.MEMBER return exit VAR = malloc (sizeof (*VAR)) new (VAR) null nil 0xhhhh $hhhh printf("%d%nd%n.md",VAR, VAR, VAR) write(VAR,VAR:n,VAR:n:m) fprintf(FILE,"%d%d%dn", VAR, VAR, writeln(FILE,VAR,VAR,VAR) VAR) scanf("%d%nd%d",&VAR, &VAR, read(VAR,VAR,VAR) &VAR) fscanf(FILE,"%d%d%dn", &VAR, readln(FILE,VAR,VAR,VAR) &VAR, &VAR) strcpy(VAR, "string") VAR := "string" strcpy(VAR, concat(VAR1, "string")) VAR := VAR1 + "string" (strcmp(VAR,"string") == 0 VAR == "string" (strcmp(VAR,"string") < 0) VAR < "string" (strcmp("string",VAR) >= 0) "string" >= VAR return expr FUN_NAME := expr {$B+/-} #pragma standard_io(ON/OFF) {$C+/-} #pragma control_c_check (ON/OFF) {$D+/-} #pragma device_check(ON/OFF) {$Fn} #pragma max_files(n) {$Gn} #pragma input_file_buffer(n) {$I name} #include "name" {$I+/-} #pragma io_error_check (ON/OFF) {$K+/-} #pragma stack_check(ON/OFF) {$Pn} #pragma output_file_buffer (n) {$R+/-} #pragma range_check(ON/OFF) {$U+/-} #pragma user_interrupt (ON/OFF) {$V+/-} #pragma param_type_check (ON/OFF) Les listes de paramètres formels des fonctions/procédures sont traduites en déclaration de procédure séparée et déclaratios de variable de paramètre, comme dans le cas ci-dessous : 18
  • 19. Bruno Delb http://www.brunodelb.com Date : 25/03/2001 Le langage C C Pascal TYPE3 NAME (V1,V2) TYPE1 V1; TYPE2 function NAME(V1: TYPE1; V2: TYPE2): V2; TYPE3 Les procédures sont traduites en fonctions avec les types VOID en types de retour. La syntaxe littérale d'un caractère spécial, comme ^C ou #nn, est traduit en 'ooo', où ooo est la notation octale pour le code ASCII. Des listes de paramètres vides sont ajoutées aux appels de fonction et de procédure, où elles sont nécessaires en C et pas en Pascal. Ne sont pas traduits : • Les procédures ou fonctions imbriquées qui ne peuvent pas être codées en C. • Les paramètres VAR doivent être manuellement recodés. • Les procédures d'accès au fichier doivent être codées (RESET, ASSIGN, CLOSE, ...). • Les portées dans la forme VAL..VAL ne sont pas traduites en ordres CASE. • Les déclarations de type pointeur FORWARD sont traduits, mais ne seront pas compilés en C. Elles doivent être recodées manuellement. • Les types d'enregistrement variant doivent être retraduits en UNIONS, mais ne le sont pas. • Les opérateurs AND et OR sont toujours traduits en opérateurs logiques && et ||. • La "precidence" de l'opérateur C diffère de celui du Pascal, et les différences ne sont pas traduites. • L'ordre WITH n'est pas traduit. • Les tableaux MEM [] et PORT [] ne sont pas traduits. Ils doivent être retranscris en appels de fonction. • Les variables absolues ne sont pas traduites (et ne peuvent probablement pas l'être). Quelles sont les erreurs classiques ? Oubli d'un point virgule. Exemple : printf("Bonjour"); Oubli du & dans un scanf. Exemple : scanf("%d",valeur); Présence de caractère dans la chaîne de contrôle d'un scanf. Exemple : scanf (Entrez un nombre : %d",valeur); Ajout superflu d'un point virgule. Oubli d'une accolade. Oubli de la déclaration d'une variable. Oubli de l'insertion de stdio.h. 19