SlideShare une entreprise Scribd logo
1  sur  48
Introduction au Langage C


                Début du programme

                               Inclusion de la bibliothèque
 #include <stdio.h>
                               contenant la fonction printf

 void main()              Point d'entré du programme
 {
       printf("Bonjour!n");             première
                                        instruction
 }
               Fin du programme
                                                       2
Introduction au Langage C

   Définition d'une variable
     nom:
       Unique pour chaque variable
       Commence toujours par une lettre
       Différenciation minuscule-majuscule
     type:
       Conditionne le format de la variable en mémoire
       Peut être soit un type standard ou un type utilisateur
     valeur:
       Peut évoluer pendant l'exécution
       initialisation grâce à l'opérateur d'affectation

                                                                3
Introduction au Langage C

   Types de variable
     charcaractères                [..] signifie facultatif


     int entiers
     short [int] entiers courts
     long [int] entiers longs
     float nombres décimaux
     double nombres décimaux de précision
                   supérieure
     long double nombres décimaux encore plus
                   précis
     unsigned int entier non signé
                                                               4
Introduction au Langage C

   Déclaration d'une variable
     Type nom_de_la_variable [= valeur]
   Exemple:
     int nb;
     float pi = 3.14;
     char c = 'a';
     long i,j,k;
     double r = 6.2879821365;

                                          5
Introduction au Langage C

   Affichage de la valeur d'une variable
     en C
       printf("format de l'affichage", variables)
       Exemple
            int i =8;int j = 10;
            printf("i vaut: %d j vaut: %d n",i,j);

            float r = 6.28;
            printf("le rayon = %f n",r);
       Autres formats:
            %c caractère
            %lf double
            %s chaîne de caractères
            %e réel en notation scientifique
                                                      6
Introduction au Langage C

  Affichage de la valeur d'une variable
    en C++
      cout <<chaîne 1 <<variable 1<<chaîne 2 <<variable 2;
      Exemple
         int i =8;int j = 10;
         cout <<"i vaut:" << i <<"j vaut:"<<j <<'n';

         float r = 6.28;
         cout<<"le rayon = "<< r <<'n';


                                                        7
Introduction au Langage C

   Instructions de base
     opérateurs de base
       +,-,*, /  opérateurs arithmétique de base
       %  reste d'une division entière
       ==  test d'égalité
       != test de différence
       <, >, <=, >= test de comparaison
       !  négation
       ||  ou logique pour évaluer une expression
       &&  et logique pour évaluer une expression


                                                     8
Introduction au Langage C

   Instructions de base
     opérateurs de base
       a = 2+3                 valeur de a:   5
       r = 3%2                 valeur de a:   1
       a = (3==3)              valeur de a:   1
       a = (6==5)              valeur de a:   0
       a = (2!=3)              valeur de a:   1
       a = (6<=3)              valeur de a:   0
       a = !1                  valeur de a:   0
       a =((3==3) || (6<=3))   valeur de a:   1
       a =((3==3) && (6<=3))   valeur de a:   0


                                                  9
Introduction au Langage C

   Instructions de base
    boucle pour
     for(expr1;expr2;expr3)
     {
         instructions
     }
         expr1: évaluée 1 seule fois en début de boucle
         expr2: évaluée avant chaque itération. Si vrai alors
           les instructions de la boucle sont exécutées sinon
           la boucle est terminée
         expr3: évaluée à la fin de chaque itération


                                                            10
Introduction au Langage C

   Instructions de base
    boucle pour
      exemple
          // somme des 100 premiers entiers
          int i,s;
          s= 0
          for(i=0;i<=100;i = i+1)
          {
                   s = s+i; / / ou s+=i;
          }
          cout <<"s = "<<s<<'n';

                                              11
Introduction au Langage C
  Instructions de base
    boucle tant que
     while (expression)
     {
          instructions;
     }
     expression est évaluée avant chaque itération. Si le
         résultat est vrai alors les instructions sont exécutées
         sinon on sort de la boucle
    exemple

     i =0;
     n = 20;
     while (i<n)
     {
           i++;
     }
                                                                   12
Introduction au Langage C
   Instructions de base
     boucle répéter
      do
      {
           instructions;
      } while (expression)
      expression est évaluée après chaque itération. Si le
        résultat est vrai alors les instructions sont exécutées
        sinon on sort de la boucle
     exemple
      i =0;
      n = 20;
      do
      {
          i++;
      } while(i<n)
                                                              13
Introduction au Langage C
   Instructions de base
     instruction conditionnelle simple si alors
      if (expression)
      {
           instructions;
      }
      expression est évaluée après chaque itération. Si le
          résultat est vrai alors les instructions sont exécutées
          sinon on sort de la boucle.
     exemple
      int i =5;
      int n;
      if (i<=20)
      {
           n =0;
      }
                                                                14
Introduction au Langage C
   Instructions de base
     instruction conditionnelle simple si alors sinon
      if (expression)
      {
        instructions1;
      } sinon
      {
        instrutions2;
      }
      expression est évaluée après chaque itération. Si le
        résultat est vrai alors les instructions1 sont
        exécutées sinon on exécute l'ensemble instructions2
     exemple
      int i =5;int n;
      if (i<=20)
        n =0;
      else
        n=5;                                                  15
Introduction au Langage C
  Instructions de base
    instruction conditionnelle multiple
     switch (expression)
     {
       case valeur1:
             instructions1;break;
       case valeur2:
             instructions2;break;
       .
       .
       .
       case valeur3:
             instruction3;break;
       default:
             instruction4;break;
     }
     expression est évaluée. Si le résultat vaut valeur1, alors
       instruction1 est exécutée et on quitte le switch, sinon
       si expression vaut valeur2, ……, sinon on va dans
       default pour exécuter instruction4.                     16
Introduction au Langage C
  Instructions de base
    instruction conditionnelle multiple
      exemple

     int c='a';
     switch (c)
     {
       case 'a':
             file();break;
       case 'b':
             save();break;
       case 'q':
             quitter();break;
       default:
             beep();break;
     }

                                          17
Introduction au Langage C
  Instructions de base
    l'instruction break
      permet d'interrompre prématurément une
      boucle et de se brancher vers la première
      instruction n'appartenant pas à la boucle
      exemple:
       int i;int n=20;
       for (i=0;i<10;i++)          Quand n vaut
       {                            31 alors la
         if (n==31) break;          boucle est
                                   interrompue
         n=n+2;
       }
       cout <<n<<'n';

                                                  18
Introduction au Langage C

   Les Pointeurs
     Deux manières d'utiliser une variable
       Par son nom adressage direct
          compilateur réserve de la mémoire pour la variable
          exemple:
            int x =17;




                                                          19
Introduction au Langage C
   Les Pointeurs
       Par son adresse adressage indirect
          une variable de type pointeur contient l'adresse
          d'une autre variable
          Le lien entre pointeur et la variable pointée est
          géré par le programmeur
          exemple:
            int x =17;              px pointe
            int * px = &x;            vers x




                                                              20
Introduction au Langage C
     Les Pointeurs
        déclaration d'un pointeur
          type * nom_du_pointeur
        exemples
          char *buffer;
          int *pf;
          float *ppi;


   C'est au programmeur d'initialiser le pointeur

                                                21
Introduction au Langage C
            Les Pointeurs
                initialisation d'un pointeur
                   Il faut lui fournir l'adresse d'une variable existant en
                   mémoire
                   Il doit pointer vers une zone mémoire réservée par le
                   compilateur comme étant une variable
                utilisation de l'opérateur d'adressage &
                 int f;              création du
                 int *pf,*pg;       lien entre le
                                   pointeur et la
                 pf = &f;              variable               allocation
                                                              dynamique
                                                            d'une variable
                 pg =(int*)malloc(sizeof(int));              de type int
  création du    .
lien entre pg
  et l'espace    .                 libération de
   mémoire       free(gf);            l'espace
    réservé                            réservé                               22
Introduction au Langage C

   Les tableaux statiques à 1 dimension
     définition
       Ensemble de variables de même type, de
       même nom caractérisées par un index.
     déclaration
       type nom_tableau[dimension]
     exemples:
       char buffer[80];                doit être
                                          une
       int mat[10];                    constante


                                                   23
Introduction au Langage C

       Les tableaux statiques à 1 dimension
          accès aux éléments du tableau
            Nom_tableau[indice]
          exemples:
            buffer[5] = 'c';
            mat[6] = 10;
 le premier élément commence à l'indice 0 !!
 Les valeurs ne sont pas initialisées !!
 Les débordements ne sont pas vérifiés
                                                24
Introduction au Langage C

   Les tableaux statiques à 2 dimensions et
   plus
     définition
       Il s'agit d'un tableau de tableaux
     déclaration
       type nom_tableau[dim1][dim2]…[dimn]
     exemples:
       char buffer[20][80];
       int mat[6][10];
       char livres[100][60][80];

                                              25
Introduction au Langage C

   Les tableaux statiques à 2 dimensions
   et plus
     accès aux éléments
       nom_tableau[ind1][ind2]…[indn]
     exemples:
       livre[30][15][20] = 'c';
       mat[5][6] =13;
       cout << mat[5][6]<<'n';

                                        26
Introduction au Langage C

   Lien entre le nom d'un tableau à 1
   dimension et les pointeurs
     Nom du tableau = adresse du premier élément
     du tableau
        nom_tableau[i] peut s'écrire *(nom_tableau+i)
     exemples:
      char buffer[80];
      *buffer = 'C';         accès au premier caractère
      *(buffer + 5) = 'V';   accès au 6 ème caractère



                                                          27
Introduction au Langage C

   Lien entre le nom d'un tableau à 2
   dimension et les pointeurs
     un tableau 2d est un tableau de tableau de
     dimension 1
       On peut donc dire que le nom d'un tableau 2d est
       l'adresse d'un tableau d'adresse de tableaux de
       dimension 1
       On dit aussi qu'il s'agit d'un pointeur de pointeur
     exemple:
      int TAB[6][7];
      int **p;       déclaration d'un pointeur de pointeur
      p = TAB;       initialisation du pointeur de pointeur

                                                              28
Introduction au Langage C

         Lien entre le nom d'un tableau à 2
         dimension et les pointeurs
                            TAB



                                          tableaux d'entiers

                                  0   1      2    3   4        5   6

                        0

                        1
tableaux de pointeurs
  vers des tableaux     2
      d'entiers
                        3

                        4

                        5

                                                                       29
Introduction au Langage C

   Initialisation dynamique d'un tableau
     Tableau une dimension
       int * t;
       t = (int*)malloc(20*sizeof(int));     fonction de
                                                calcul
                                             automatique
                                             de la taille
    nom du                                   d'un entier
    tableau                                    en octet
                 fonction
                                  nombre
               d'allocation
                                d'éléments
              dynamique de
                                  dans le
               la mémoire
                                  tableau

                                                            30
Introduction au Langage C

   Initialisation dynamique d'un tableau
     Tableau à deux dimensions n*m
       déclaration dynamique du tableau de n
       pointeurs et des n tableaux à une dimension
       de m éléments
       quelques lignes de code sont nécessaires




                                                     31
Introduction au Langage C

  Initialisation dynamique d'un tableau
    Tableau à deux dimensions n*m

     int **TAB,l;
     TAB = (int**)malloc(n*sizeof(int*));
     for (l=0;l<n;l++)
     {
       TAB[l] = (int*)malloc(m*sizeof(int));
     }

     //désallocation:

      for (l=0;l<n;l++)
            free(TAB[l]);
      free(TAB);
                                               32
Introduction au Langage C

  Les structures de données
    intérêt
      Rassembler des données hétérogènes
      caractérisant une entité pour en faire un
      type utilisateur.
      exemple:
         point dans l'espace 3 entiers
         nœud d'un arbre binaire 2 adresses vers les
         fils, 3 entiers pour les données du nœud
         noms et références des pièces mécaniques
         constituant une voiture
         600 tableaux de caractères + 600 entiers pour
         la référence
                                                          33
Introduction au Langage C

  Les structures de données
    déclaration
    struct nom_structure
    {
       type1 nomchamps1;
       type2 nomchamps2;
       .
       .
       .
       typeN nomchampsN;
    };
                              34
Introduction au Langage C

  Les structures de données
    exemple et utilisation
     struct pt
     {
        int x;
        int y;
        int z;
        char nom;
     };
     main()
     {
       struct pt p;
     }                        35
Introduction au Langage C

  Les structures de données
    simplification de l'écriture    typedef struct pt
     struct pt
     {                              {
        int x;        Notations              int x;
        int y;       équivalentes            int y;
        int z;                               int z;
                                             char nom;
        char nom;                   } point;
     };
     typedef struct pt point;
     main()
     {
       point p;
     }                                              36
Introduction au Langage C

  Les structures de données
    accès aux données
      Deux cas de figure
         On dispose du nom de la variable
             Accès par: NomVariable.NomChamps

         exemple
           main()
           {
                    point p1;
                    p1.x = 8; p1.y = 9; p1.z = 10;
                    cout <<p1.x<<p1.y<<p1.z<<'n';
           }                                         37
Introduction au Langage C

  Les structures de données
    accès aux données
      Deux cas de figure
         On dispose de l'adresse de la variable (pointeur)
             Accès par: NomVariable->NomChamps

         exemple
           main()
           {
                    point *pp1, p1;
                    pp1 = &p1;
                    pp1->x = 8; pp1->y = 9; pp1->z = 10;
                    cout <<pp1->x<<pp1->y<<pp1->z<<'n';
           }
                                                             38
Introduction au Langage C

  Les fonctions
    définition
       Ensemble d'instructions pouvant être
       appelés de manière répétitive par un nom
    déclaration
     type arg_ret nom_f( type arg1,type arg2, …type argn)
     {
       ensemble instructions
     }
     - arg_ret est l'argument renvoyé par la fonction (instruction
       return
     - nom_f est le nom de la fonction
     - arg1 …argn sont les arguments envoyés à la fonction
                                                                     39
Introduction au Langage C

  Les fonctions
    règles d'utilisation
      L'ordre, le type et le nombre des arguments
      doivent être respectés lors de l'appel de la
      fonction
      L'appel d'une fonction doit être située après
      sa déclaration ou celle de son prototype
      (voir exemple transp suivant)
      Si la fonction ne renvoie rien alors préciser
      le type void

                                                  40
Introduction au Langage C
                              Prototype de
  Les fonctions                la fonction
                                   min
    exemple:
    int min(int a, int b);
                                  Programme
    void main()                    principal
    {
      cout <<min(a,b)<<'';
    }
    int min(int a, int b)
                                   Fonction min
    {                               et son bloc
        if (a <b) return a;        d'instruction
        else return b;                   s

    }                                              41
Introduction au Langage C

  Les fonctions
    Les paramètres se passent par valeur
      Recopie en mémoire des paramètres dans
      des paramètres temporaires.
        Toute modification des paramètres dans la
        fonction est sans effet sur les paramètres
        originelles
        Quand on quitte la fonction, les paramètres
        temporaires sont effacés de la mémoire
        Recopie dans le sous programme appelant de la
        valeur du paramètre retourné par la fonction
        return.
                                                        42
Introduction au Langage C

  Les fonctions
    exemple:

     void permutter(int a, int b)
     {                                    Aucune
       int temp;                        action sur
       temp = a;                      les paramètres
       a = b;
       b= temp;                            x et y
     }
     void main()
     {
       int x=3;int y =5;
       permutter(x,y);
       cout << "x="<<x<<" y="<<y<<'n';   x=3 y=5
     }
                                                       43
Introduction au Langage C

  Les fonctions
    Passage d'arguments par adresse
      On passe non pas la valeur de la variable
      mais son adresse
      Il est donc possible par les pointeurs de
      modifier le contenu de l'adresse, donc la
      variable originelle
      Permet de modifier plusieurs arguments à
      la fois dans une fonction
      Permet de passer des tableaux en
      argument
                                                  44
Introduction au Langage C

  Les fonctions
    exemple:

     void permutter(int *pa, int *pb)
     {                                  Action sur
       int temp;
       temp = *pa;                    les paramètres
       *pa = *pb;                          x et y
       *pb= temp;
     }
     void main()
     {
       int x=3;int y =5;
       permutter(&x,&y);
       cout << "x="<<x<<" y="<<y<<'n';   x=5 y=3
     }
                                                       45
Introduction au Langage C

  Les Fichiers
    Les fichiers sont soit:
      binaires (un float sera stocké comme il est codé en mémoire
      , d'où gain de place mais incompatibilité entre logiciels)
      formaté ASCII (un float binaire sera transformé en
      décimal puis on écrira le caractère correspondant à chaque
      chiffre).


    Pour accéder aux données, on le fait
    soit:
      De manière séquentielle (on accède au contenu dans l'ordre
      du stockage)
      Par un accès direct (on peut directement accéder à
      n'importe quel endroit du fichier)                       46
Introduction au Langage C
  Les Fichiers
    Les Fonctions
       Prototypées dans stdio.h, io.h, fcntl.h
       Ouverture d’un fichier
           handle = open(char *nomfic, int mode);
                nomfic: pointeur vers une chaîne de caractère contenant le
                chemin, le nom du fichier et l’extension du fichier
                 mode: variable entière dont chaque bit possède une signification
                particulière. Utilisation de constantes prédéfinies

                         O_RDONLY       Ouverture pour lecture seule
                         O_WRONLY       Ouverture pour écriture seule
                         O_RDWR         Ouverture pour lecture et écriture
                         O_APPEND       Ajout des données à la fin du fichier
                         O_CREAT        Crée le fichier s’il n’existe pas
                         O_BINARY       Ouvre le fichier en mode Binaire
                (Stockage de l’info comme elle est stockée dans la mémoire de
                l’ordinateur)
                         O_TEXT       Ouvre le fichier en mode Texte. (On
                mémorise le code ASCII de chaque nombre ou caractère)

                                                                                47
Introduction au Langage C
  Les Fichiers

    Les Fonctions
       Écriture dans un fichier
           int write(int handle, void *bloc, unsigned taille);
                Handle: numéro entier caractérisant le fichier (renvoyé lors de
                l’ouverture du fichier avec la fonction open)
                Bloc: pointeur vers le bloc de données
                Taille: taille en octet de ce bloc

       Lecture dans un fichier (idem écriture avec fonction
       read)
           int read(int handle, void *bloc, unsigned taille);

       Fermeture d’un fichier
           int close(int handle)


                                                                                  48
Introduction au Langage C
  Les Fichiers
    Exemple
     // inclusion des entêtes des fonctions
     #include <io.h>
     #include <fcntl.h>
     #include <string.h>
     main()
     {
         int handle; // numéro caractérisant le fichier
       char string[40]; // tableau de caractères
       int length; // Variable mémorisant la taille du bloc de données
       int x=40; // entier x valant 40
       int y=102; // entier y valant 102
       // ouverture du fichier Monfichier.txt avec création s'il n'existe pas
       // Fichier ouvert en écriture en mode texte
         handle = open("c:Monfichi.txt",O_CREAT |O_RDWR |O_APPEND);
       // Fonction (idem à printf) qui écrit un message formaté dans un tableau
       // de caractères (printf l'écrit vers l'écran)
       length=sprintf(string,"valeur de x=%d valeur de y=%d n",x,y);
       // Ecriture de la chaîne de caractères dans le fichier
       write(handle,string,length);
       // Fermeture du fichier
       close(handle);
     }
                                                                                  49

Contenu connexe

Tendances

Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
exercices en C
exercices en Cexercices en C
exercices en 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
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
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
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++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
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage CFahad Golra
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz Darouichi
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 

Tendances (20)

Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Cours de c
Cours de cCours de c
Cours de c
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
exercices en C
exercices en Cexercices en C
exercices en C
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
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
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
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
 
Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
Cours c#
Cours c#Cours c#
Cours c#
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 

En vedette

5 Tips for Cultivating Emotional Intelligence in the Workplace
5 Tips for Cultivating Emotional Intelligence in the Workplace5 Tips for Cultivating Emotional Intelligence in the Workplace
5 Tips for Cultivating Emotional Intelligence in the WorkplaceChristina Aldan
 
Emotional Intelligence changing human resource functionality
Emotional Intelligence changing human resource functionalityEmotional Intelligence changing human resource functionality
Emotional Intelligence changing human resource functionalitySheetal Wagh
 
The Art of the “One Person Band”
The Art of the “One Person Band”The Art of the “One Person Band”
The Art of the “One Person Band”Eric L. Epps
 
Introduction to Digital Signal Processing
Introduction to Digital Signal ProcessingIntroduction to Digital Signal Processing
Introduction to Digital Signal Processingop205
 
Four ways data is improving healthcare operations
Four ways data is improving healthcare operationsFour ways data is improving healthcare operations
Four ways data is improving healthcare operationsTableau Software
 
Implémentation optimale de filtres linéaires en arithmétique virgule fixe
Implémentation optimale de filtres linéaires en arithmétique virgule fixeImplémentation optimale de filtres linéaires en arithmétique virgule fixe
Implémentation optimale de filtres linéaires en arithmétique virgule fixeBenoit Lopez
 
Trabajos
TrabajosTrabajos
TrabajosFUGDA
 
Article cc newsletter mai 2014
Article cc newsletter mai 2014Article cc newsletter mai 2014
Article cc newsletter mai 2014VisionduMonde
 
30 años de viaje...
30 años de viaje...30 años de viaje...
30 años de viaje...50nia
 
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricas
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricasCurso técnico de cálculo, diseño y simulación de plantas solares termoeléctricas
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricasCenproexFormacion
 
Técnico en contaminación por residuos sólidos urbanos, industriales y especiales
Técnico en contaminación por residuos sólidos urbanos, industriales y especialesTécnico en contaminación por residuos sólidos urbanos, industriales y especiales
Técnico en contaminación por residuos sólidos urbanos, industriales y especialesCenproexFormacion
 
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. BizitegiBizitegi Bizitegi
 
La camargue avec manitas
La camargue avec manitasLa camargue avec manitas
La camargue avec manitasDominique Pongi
 

En vedette (20)

Chapitre3 prog dsplf3
Chapitre3 prog dsplf3Chapitre3 prog dsplf3
Chapitre3 prog dsplf3
 
Chap2 dsp
Chap2 dspChap2 dsp
Chap2 dsp
 
Chap1 dsp
Chap1 dspChap1 dsp
Chap1 dsp
 
Algorithm et structure de donnée
Algorithm et structure de donnéeAlgorithm et structure de donnée
Algorithm et structure de donnée
 
5 Tips for Cultivating Emotional Intelligence in the Workplace
5 Tips for Cultivating Emotional Intelligence in the Workplace5 Tips for Cultivating Emotional Intelligence in the Workplace
5 Tips for Cultivating Emotional Intelligence in the Workplace
 
Emotional Intelligence changing human resource functionality
Emotional Intelligence changing human resource functionalityEmotional Intelligence changing human resource functionality
Emotional Intelligence changing human resource functionality
 
The Art of the “One Person Band”
The Art of the “One Person Band”The Art of the “One Person Band”
The Art of the “One Person Band”
 
Introduction to Digital Signal Processing
Introduction to Digital Signal ProcessingIntroduction to Digital Signal Processing
Introduction to Digital Signal Processing
 
Four ways data is improving healthcare operations
Four ways data is improving healthcare operationsFour ways data is improving healthcare operations
Four ways data is improving healthcare operations
 
Implémentation optimale de filtres linéaires en arithmétique virgule fixe
Implémentation optimale de filtres linéaires en arithmétique virgule fixeImplémentation optimale de filtres linéaires en arithmétique virgule fixe
Implémentation optimale de filtres linéaires en arithmétique virgule fixe
 
Trabajos
TrabajosTrabajos
Trabajos
 
Article cc newsletter mai 2014
Article cc newsletter mai 2014Article cc newsletter mai 2014
Article cc newsletter mai 2014
 
30 años de viaje...
30 años de viaje...30 años de viaje...
30 años de viaje...
 
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricas
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricasCurso técnico de cálculo, diseño y simulación de plantas solares termoeléctricas
Curso técnico de cálculo, diseño y simulación de plantas solares termoeléctricas
 
Herramientas del wb 2.0
Herramientas del wb 2.0Herramientas del wb 2.0
Herramientas del wb 2.0
 
Técnico en contaminación por residuos sólidos urbanos, industriales y especiales
Técnico en contaminación por residuos sólidos urbanos, industriales y especialesTécnico en contaminación por residuos sólidos urbanos, industriales y especiales
Técnico en contaminación por residuos sólidos urbanos, industriales y especiales
 
Si seulement 0
Si seulement 0Si seulement 0
Si seulement 0
 
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi
2012 La Cronicidad en los servicios de drogodependencias. Nuevos retos. Bizitegi
 
La camargue avec manitas
La camargue avec manitasLa camargue avec manitas
La camargue avec manitas
 
Herramienta informaticas
Herramienta informaticasHerramienta informaticas
Herramienta informaticas
 

Similaire à Chapitre2 prog dsplf3

Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmiquenicodeff
 
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
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationkamalomari2
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Laurent BUNIET
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSSAyoubElmrabet6
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfFadouaBouafifSamoud
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptxValdy Ngouabira
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
Chapitre 7 - Les instructions de contrôle.pdf
Chapitre 7 - Les instructions de contrôle.pdfChapitre 7 - Les instructions de contrôle.pdf
Chapitre 7 - Les instructions de contrôle.pdfShiniGami0o0
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithmemustapha4
 

Similaire à Chapitre2 prog dsplf3 (20)

Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
langage C++
langage C++langage C++
langage C++
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmique
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
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
 
cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'application
 
Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5Cours de C++, en français, 2002 - Cours 1.5
Cours de C++, en français, 2002 - Cours 1.5
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdf
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptx
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
Chapitre 7 - Les instructions de contrôle.pdf
Chapitre 7 - Les instructions de contrôle.pdfChapitre 7 - Les instructions de contrôle.pdf
Chapitre 7 - Les instructions de contrôle.pdf
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Récursivité
RécursivitéRécursivité
Récursivité
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithme
 
Exercices : Algorithmes et Langage C
Exercices : Algorithmes et Langage CExercices : Algorithmes et Langage C
Exercices : Algorithmes et Langage C
 

Chapitre2 prog dsplf3

  • 1. Introduction au Langage C Début du programme Inclusion de la bibliothèque #include <stdio.h> contenant la fonction printf void main() Point d'entré du programme { printf("Bonjour!n"); première instruction } Fin du programme 2
  • 2. Introduction au Langage C Définition d'une variable nom: Unique pour chaque variable Commence toujours par une lettre Différenciation minuscule-majuscule type: Conditionne le format de la variable en mémoire Peut être soit un type standard ou un type utilisateur valeur: Peut évoluer pendant l'exécution initialisation grâce à l'opérateur d'affectation 3
  • 3. Introduction au Langage C Types de variable charcaractères [..] signifie facultatif int entiers short [int] entiers courts long [int] entiers longs float nombres décimaux double nombres décimaux de précision supérieure long double nombres décimaux encore plus précis unsigned int entier non signé 4
  • 4. Introduction au Langage C Déclaration d'une variable Type nom_de_la_variable [= valeur] Exemple: int nb; float pi = 3.14; char c = 'a'; long i,j,k; double r = 6.2879821365; 5
  • 5. Introduction au Langage C Affichage de la valeur d'une variable en C printf("format de l'affichage", variables) Exemple int i =8;int j = 10; printf("i vaut: %d j vaut: %d n",i,j); float r = 6.28; printf("le rayon = %f n",r); Autres formats: %c caractère %lf double %s chaîne de caractères %e réel en notation scientifique 6
  • 6. Introduction au Langage C Affichage de la valeur d'une variable en C++ cout <<chaîne 1 <<variable 1<<chaîne 2 <<variable 2; Exemple int i =8;int j = 10; cout <<"i vaut:" << i <<"j vaut:"<<j <<'n'; float r = 6.28; cout<<"le rayon = "<< r <<'n'; 7
  • 7. Introduction au Langage C Instructions de base opérateurs de base +,-,*, /  opérateurs arithmétique de base %  reste d'une division entière ==  test d'égalité != test de différence <, >, <=, >= test de comparaison !  négation ||  ou logique pour évaluer une expression &&  et logique pour évaluer une expression 8
  • 8. Introduction au Langage C Instructions de base opérateurs de base a = 2+3 valeur de a: 5 r = 3%2 valeur de a: 1 a = (3==3) valeur de a: 1 a = (6==5) valeur de a: 0 a = (2!=3) valeur de a: 1 a = (6<=3) valeur de a: 0 a = !1 valeur de a: 0 a =((3==3) || (6<=3)) valeur de a: 1 a =((3==3) && (6<=3)) valeur de a: 0 9
  • 9. Introduction au Langage C Instructions de base boucle pour for(expr1;expr2;expr3) { instructions } expr1: évaluée 1 seule fois en début de boucle expr2: évaluée avant chaque itération. Si vrai alors les instructions de la boucle sont exécutées sinon la boucle est terminée expr3: évaluée à la fin de chaque itération 10
  • 10. Introduction au Langage C Instructions de base boucle pour exemple // somme des 100 premiers entiers int i,s; s= 0 for(i=0;i<=100;i = i+1) { s = s+i; / / ou s+=i; } cout <<"s = "<<s<<'n'; 11
  • 11. Introduction au Langage C Instructions de base boucle tant que while (expression) { instructions; } expression est évaluée avant chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; while (i<n) { i++; } 12
  • 12. Introduction au Langage C Instructions de base boucle répéter do { instructions; } while (expression) expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle exemple i =0; n = 20; do { i++; } while(i<n) 13
  • 13. Introduction au Langage C Instructions de base instruction conditionnelle simple si alors if (expression) { instructions; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions sont exécutées sinon on sort de la boucle. exemple int i =5; int n; if (i<=20) { n =0; } 14
  • 14. Introduction au Langage C Instructions de base instruction conditionnelle simple si alors sinon if (expression) { instructions1; } sinon { instrutions2; } expression est évaluée après chaque itération. Si le résultat est vrai alors les instructions1 sont exécutées sinon on exécute l'ensemble instructions2 exemple int i =5;int n; if (i<=20) n =0; else n=5; 15
  • 15. Introduction au Langage C Instructions de base instruction conditionnelle multiple switch (expression) { case valeur1: instructions1;break; case valeur2: instructions2;break; . . . case valeur3: instruction3;break; default: instruction4;break; } expression est évaluée. Si le résultat vaut valeur1, alors instruction1 est exécutée et on quitte le switch, sinon si expression vaut valeur2, ……, sinon on va dans default pour exécuter instruction4. 16
  • 16. Introduction au Langage C Instructions de base instruction conditionnelle multiple exemple int c='a'; switch (c) { case 'a': file();break; case 'b': save();break; case 'q': quitter();break; default: beep();break; } 17
  • 17. Introduction au Langage C Instructions de base l'instruction break permet d'interrompre prématurément une boucle et de se brancher vers la première instruction n'appartenant pas à la boucle exemple: int i;int n=20; for (i=0;i<10;i++) Quand n vaut { 31 alors la if (n==31) break; boucle est interrompue n=n+2; } cout <<n<<'n'; 18
  • 18. Introduction au Langage C Les Pointeurs Deux manières d'utiliser une variable Par son nom adressage direct compilateur réserve de la mémoire pour la variable exemple: int x =17; 19
  • 19. Introduction au Langage C Les Pointeurs Par son adresse adressage indirect une variable de type pointeur contient l'adresse d'une autre variable Le lien entre pointeur et la variable pointée est géré par le programmeur exemple: int x =17; px pointe int * px = &x; vers x 20
  • 20. Introduction au Langage C Les Pointeurs déclaration d'un pointeur type * nom_du_pointeur exemples char *buffer; int *pf; float *ppi;  C'est au programmeur d'initialiser le pointeur 21
  • 21. Introduction au Langage C Les Pointeurs initialisation d'un pointeur Il faut lui fournir l'adresse d'une variable existant en mémoire Il doit pointer vers une zone mémoire réservée par le compilateur comme étant une variable utilisation de l'opérateur d'adressage & int f; création du int *pf,*pg; lien entre le pointeur et la pf = &f; variable allocation dynamique d'une variable pg =(int*)malloc(sizeof(int)); de type int création du . lien entre pg et l'espace . libération de mémoire free(gf); l'espace réservé réservé 22
  • 22. Introduction au Langage C Les tableaux statiques à 1 dimension définition Ensemble de variables de même type, de même nom caractérisées par un index. déclaration type nom_tableau[dimension] exemples: char buffer[80]; doit être une int mat[10]; constante 23
  • 23. Introduction au Langage C Les tableaux statiques à 1 dimension accès aux éléments du tableau Nom_tableau[indice] exemples: buffer[5] = 'c'; mat[6] = 10;  le premier élément commence à l'indice 0 !!  Les valeurs ne sont pas initialisées !!  Les débordements ne sont pas vérifiés 24
  • 24. Introduction au Langage C Les tableaux statiques à 2 dimensions et plus définition Il s'agit d'un tableau de tableaux déclaration type nom_tableau[dim1][dim2]…[dimn] exemples: char buffer[20][80]; int mat[6][10]; char livres[100][60][80]; 25
  • 25. Introduction au Langage C Les tableaux statiques à 2 dimensions et plus accès aux éléments nom_tableau[ind1][ind2]…[indn] exemples: livre[30][15][20] = 'c'; mat[5][6] =13; cout << mat[5][6]<<'n'; 26
  • 26. Introduction au Langage C Lien entre le nom d'un tableau à 1 dimension et les pointeurs Nom du tableau = adresse du premier élément du tableau nom_tableau[i] peut s'écrire *(nom_tableau+i) exemples: char buffer[80]; *buffer = 'C'; accès au premier caractère *(buffer + 5) = 'V'; accès au 6 ème caractère 27
  • 27. Introduction au Langage C Lien entre le nom d'un tableau à 2 dimension et les pointeurs un tableau 2d est un tableau de tableau de dimension 1 On peut donc dire que le nom d'un tableau 2d est l'adresse d'un tableau d'adresse de tableaux de dimension 1 On dit aussi qu'il s'agit d'un pointeur de pointeur exemple: int TAB[6][7]; int **p; déclaration d'un pointeur de pointeur p = TAB; initialisation du pointeur de pointeur 28
  • 28. Introduction au Langage C Lien entre le nom d'un tableau à 2 dimension et les pointeurs TAB tableaux d'entiers 0 1 2 3 4 5 6 0 1 tableaux de pointeurs vers des tableaux 2 d'entiers 3 4 5 29
  • 29. Introduction au Langage C Initialisation dynamique d'un tableau Tableau une dimension int * t; t = (int*)malloc(20*sizeof(int)); fonction de calcul automatique de la taille nom du d'un entier tableau en octet fonction nombre d'allocation d'éléments dynamique de dans le la mémoire tableau 30
  • 30. Introduction au Langage C Initialisation dynamique d'un tableau Tableau à deux dimensions n*m déclaration dynamique du tableau de n pointeurs et des n tableaux à une dimension de m éléments quelques lignes de code sont nécessaires 31
  • 31. Introduction au Langage C Initialisation dynamique d'un tableau Tableau à deux dimensions n*m int **TAB,l; TAB = (int**)malloc(n*sizeof(int*)); for (l=0;l<n;l++) { TAB[l] = (int*)malloc(m*sizeof(int)); } //désallocation: for (l=0;l<n;l++) free(TAB[l]); free(TAB); 32
  • 32. Introduction au Langage C Les structures de données intérêt Rassembler des données hétérogènes caractérisant une entité pour en faire un type utilisateur. exemple: point dans l'espace 3 entiers nœud d'un arbre binaire 2 adresses vers les fils, 3 entiers pour les données du nœud noms et références des pièces mécaniques constituant une voiture 600 tableaux de caractères + 600 entiers pour la référence 33
  • 33. Introduction au Langage C Les structures de données déclaration struct nom_structure { type1 nomchamps1; type2 nomchamps2; . . . typeN nomchampsN; }; 34
  • 34. Introduction au Langage C Les structures de données exemple et utilisation struct pt { int x; int y; int z; char nom; }; main() { struct pt p; } 35
  • 35. Introduction au Langage C Les structures de données simplification de l'écriture typedef struct pt struct pt { { int x; Notations int x; int y; équivalentes int y; int z; int z; char nom; char nom; } point; }; typedef struct pt point; main() { point p; } 36
  • 36. Introduction au Langage C Les structures de données accès aux données Deux cas de figure On dispose du nom de la variable Accès par: NomVariable.NomChamps exemple main() { point p1; p1.x = 8; p1.y = 9; p1.z = 10; cout <<p1.x<<p1.y<<p1.z<<'n'; } 37
  • 37. Introduction au Langage C Les structures de données accès aux données Deux cas de figure On dispose de l'adresse de la variable (pointeur) Accès par: NomVariable->NomChamps exemple main() { point *pp1, p1; pp1 = &p1; pp1->x = 8; pp1->y = 9; pp1->z = 10; cout <<pp1->x<<pp1->y<<pp1->z<<'n'; } 38
  • 38. Introduction au Langage C Les fonctions définition Ensemble d'instructions pouvant être appelés de manière répétitive par un nom déclaration type arg_ret nom_f( type arg1,type arg2, …type argn) { ensemble instructions } - arg_ret est l'argument renvoyé par la fonction (instruction return - nom_f est le nom de la fonction - arg1 …argn sont les arguments envoyés à la fonction 39
  • 39. Introduction au Langage C Les fonctions règles d'utilisation L'ordre, le type et le nombre des arguments doivent être respectés lors de l'appel de la fonction L'appel d'une fonction doit être située après sa déclaration ou celle de son prototype (voir exemple transp suivant) Si la fonction ne renvoie rien alors préciser le type void 40
  • 40. Introduction au Langage C Prototype de Les fonctions la fonction min exemple: int min(int a, int b); Programme void main() principal { cout <<min(a,b)<<''; } int min(int a, int b) Fonction min { et son bloc if (a <b) return a; d'instruction else return b; s } 41
  • 41. Introduction au Langage C Les fonctions Les paramètres se passent par valeur Recopie en mémoire des paramètres dans des paramètres temporaires. Toute modification des paramètres dans la fonction est sans effet sur les paramètres originelles Quand on quitte la fonction, les paramètres temporaires sont effacés de la mémoire Recopie dans le sous programme appelant de la valeur du paramètre retourné par la fonction return. 42
  • 42. Introduction au Langage C Les fonctions exemple: void permutter(int a, int b) { Aucune int temp; action sur temp = a; les paramètres a = b; b= temp; x et y } void main() { int x=3;int y =5; permutter(x,y); cout << "x="<<x<<" y="<<y<<'n'; x=3 y=5 } 43
  • 43. Introduction au Langage C Les fonctions Passage d'arguments par adresse On passe non pas la valeur de la variable mais son adresse Il est donc possible par les pointeurs de modifier le contenu de l'adresse, donc la variable originelle Permet de modifier plusieurs arguments à la fois dans une fonction Permet de passer des tableaux en argument 44
  • 44. Introduction au Langage C Les fonctions exemple: void permutter(int *pa, int *pb) { Action sur int temp; temp = *pa; les paramètres *pa = *pb; x et y *pb= temp; } void main() { int x=3;int y =5; permutter(&x,&y); cout << "x="<<x<<" y="<<y<<'n'; x=5 y=3 } 45
  • 45. Introduction au Langage C Les Fichiers Les fichiers sont soit: binaires (un float sera stocké comme il est codé en mémoire , d'où gain de place mais incompatibilité entre logiciels) formaté ASCII (un float binaire sera transformé en décimal puis on écrira le caractère correspondant à chaque chiffre). Pour accéder aux données, on le fait soit: De manière séquentielle (on accède au contenu dans l'ordre du stockage) Par un accès direct (on peut directement accéder à n'importe quel endroit du fichier) 46
  • 46. Introduction au Langage C Les Fichiers Les Fonctions Prototypées dans stdio.h, io.h, fcntl.h Ouverture d’un fichier handle = open(char *nomfic, int mode); nomfic: pointeur vers une chaîne de caractère contenant le chemin, le nom du fichier et l’extension du fichier mode: variable entière dont chaque bit possède une signification particulière. Utilisation de constantes prédéfinies O_RDONLY Ouverture pour lecture seule O_WRONLY Ouverture pour écriture seule O_RDWR Ouverture pour lecture et écriture O_APPEND Ajout des données à la fin du fichier O_CREAT Crée le fichier s’il n’existe pas O_BINARY Ouvre le fichier en mode Binaire (Stockage de l’info comme elle est stockée dans la mémoire de l’ordinateur) O_TEXT Ouvre le fichier en mode Texte. (On mémorise le code ASCII de chaque nombre ou caractère) 47
  • 47. Introduction au Langage C Les Fichiers Les Fonctions Écriture dans un fichier int write(int handle, void *bloc, unsigned taille); Handle: numéro entier caractérisant le fichier (renvoyé lors de l’ouverture du fichier avec la fonction open) Bloc: pointeur vers le bloc de données Taille: taille en octet de ce bloc Lecture dans un fichier (idem écriture avec fonction read) int read(int handle, void *bloc, unsigned taille); Fermeture d’un fichier int close(int handle) 48
  • 48. Introduction au Langage C Les Fichiers Exemple // inclusion des entêtes des fonctions #include <io.h> #include <fcntl.h> #include <string.h> main() { int handle; // numéro caractérisant le fichier char string[40]; // tableau de caractères int length; // Variable mémorisant la taille du bloc de données int x=40; // entier x valant 40 int y=102; // entier y valant 102 // ouverture du fichier Monfichier.txt avec création s'il n'existe pas // Fichier ouvert en écriture en mode texte handle = open("c:Monfichi.txt",O_CREAT |O_RDWR |O_APPEND); // Fonction (idem à printf) qui écrit un message formaté dans un tableau // de caractères (printf l'écrit vers l'écran) length=sprintf(string,"valeur de x=%d valeur de y=%d n",x,y); // Ecriture de la chaîne de caractères dans le fichier write(handle,string,length); // Fermeture du fichier close(handle); } 49