Docstoc

Les structures de donn�es et structures simples

Document Sample
Les structures de donn�es et structures simples Powered By Docstoc
					Chap I : Les Structures de données et les Structures Simples              Prof : Hichem Klouz

        Chap I : Les structures de données et structures simples
Objectifs :
A la fin de ce chapitre l’élève doit être capable d’identifier les différentes structures de
données ainsi que les opérateurs d’entrée/sortie afin de pouvoir résoudre un problème
spécifique.

   I-     Les constantes
   1- Activité : Donner des exemples de constantes ?
       Constantes                Valeurs
       Pi                        3.14
       g                         9.8
       q                         1.16E -19

  2- Définition :
  Une constante est une donnée qui reste inchangée tout au long d’un
  programme.
  Une constante est caractérisée par : - Un nom
                                       - Une valeur
  3- Déclaration :
Au niveau de l’algorithme                   Au niveau de Pascal

Tableau de déclaration des objets                     CONST
 objet           type             rôle                Nom_constante = valeur ;
 Nom_constante Constante=valeur rôle

Exemple : Déclaration de Pi

Tableau de déclaration des objets                     CONST
 objet     type        rôle                           Pi = 3.14 ;
 Pi        Pi = 3.14 rôle


   4- Application :
   Ecrire la spécification, l’algorithme et la traduction en pascal d’un
   programme qui permet de calculer le poids d’un objet de masse M.
   Spécification :
   Résultat : On veut afficher le poids
                                                                                                1
Chap I : Les Structures de données et les Structures Simples   Prof : Hichem Klouz

               Ecrire ( P )
   Traitement : P      gM
                 M = Données
   Algorithme :
         0) Début Poids
         1) Ecrire (" Donnez la masse de l’objet ")
         2) Lire (M)
          3) P      g M
          4) Ecrire (" Le poids de l’objet est : ", P)
          5) Fin Poids

         Tableau de déclaration des objets :
          Objets           Type                      Rôle
          P                Réel                      Poids
          g                Constante = 9.8
          M                Réel                      Masse

   Programme en Pascal :
   Program Poids ;
   uses wincrt ;
   Var
       P, M : Real ;
   Const
       g = 9.8 ;
   Begin
    Writeln(' Donnez la masse de l’objet ' ) ;
     Readln(M) ;
     P := gM ;
     Writeln(' Le poids de l’objet est : ' , P ) ;
   End.

   II-     Les variables
   1- Définition :
   Une variable est un objet pouvant prendre différentes valeurs lors de
   l’exécution d’un algorithme.

   Une variable est caractérisée par : - Un nom
                                                                                     2
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz

                                         - Une valeur
                                         - Un type
  2- Déclaration :
Au niveau de l’algorithme                 Au niveau de Pascal

Tableau de déclaration des objets         Var
 objet          type      rôle            Nom_Variable : Type ;
 Nom_variable Type        rôle

Exemple : Déclaration d’un rayon R

Tableau de déclaration des objets         Var
 objet     type        rôle               R : Real ;
 R         Réel        Rayon


   III- Les types standards
   Le type permet de déterminer :
        L’ensemble de valeurs que peut prendre une variable
        L’ensemble d’opérations qu’on peut appliquer sur cette variable
   Les types standards sont : les types numériques, le type booléen, le type
   caractère et le type chaîne de caractère.

 2- Les types numériques :
   2.1- Type entier
   Il y a des sous types du type entier.
Notation Algorithmique Notation en Pascal                  Domaine de valeurs
                                 Sous type non Signé
Octet                        Byte                          0..255
Mot                          Word                          0..65535
Mot long                     Longword                      0..4294967295
                                   Sous type Signé
Entier                       Integer                       -32768..32767
Entier court                 Shortint                      -128..127
Entier long                  Longint                       -2147483648..2147483647




                                                                                       3
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz

b- Déclaration :
Au niveau de l’algorithme                  Au niveau de Pascal

Tableau de déclaration des objets          Var
 objet          type      rôle             Nom_Variable : Integer ;
 Nom_variable entier      rôle


c- Les opérateurs :
Donnez les opérateurs qu’on peut appliquer sur le type entier ?
Opérateurs Arithmétiques Type de Résultat
             +                     Entier
             -                     Entier
                                  Entier
           DIV                     Entier
           MOD                     Entier
 Exemple :
5 DIV 2 = 2 (division entière)
5 MOD 2 = 1 (reste de la division)

         Les opérateurs relationnels
Notation Algorithmique Notation en Pascal
            <                          <
            >                          >
            ≥                         >=
                                     <=
                                     <>
            =                          =

   2.2- Type Réel
   Il y a des sous types du type réel.

Notation Algorithmique       Notation en Pascal            Domaine de valeurs
Réel                         Real                          2.9E-39..1.7E 38
Simple                       Single                        1.5E-45..3.4E 38
Double                       Double                        5.0E-324..1.7E 308
Etendu                       Extended                      3.6E-4951..1.1E 4932

                                                                                       4
Chap I : Les Structures de données et les Structures Simples    Prof : Hichem Klouz

 b- Déclaration :
Au niveau de l’algorithme                 Au niveau de Pascal

Tableau de déclaration des objets         Var
 objet          type      rôle            Nom_Variable : Real ;
 Nom_variable Réel        rôle


 c- Les opérateurs :
   Quels sont les opérateurs qu’on peut appliquer sur le type réel ?
       Les opérateurs relationnels sont les mêmes que pour le type entier
       Les opérateurs arithmétiques sont les mêmes que pour le type entier sauf
       les deux opérateurs DIV et MOD qui ne sont pas applicables pour le
       type réel.
 d- Application :
   Faire l’application du livre à la page 18.
e- Les fonctions arithmétiques :
 Voir tableau à la page 19.
 Ajoutez deux colonnes à ce tableau l’une pour indiquer le type du paramètre
 X et l’autre pour le type du résultat.
 Copiez le tableau des fonctions prédéfinies dans une fiche.
 Exemple :
 ABS (-5)=5              TRUNC (5.675)=5
 SQR (2.3)= 5.29          SQRT (4)=2

 3- Le type Booléen :
 a- Définition :
 Une variable de type booléen est une expression qui peut être soit vraie soit
 fausse.
 Valeur en algorithmique           Valeur en Pascal
           Vrai                         True
           Faux                         False

  b- Les opérateurs logiques :
   Quels sont les opérateurs logiques que vous connaissez ?




                                                                                      5
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz

                         Les opérateurs logiques
       Notation Algorithmique                   Notation en Pascal
       NON (Négation) → opérateur unaire        NOT
       ET (Conjonction) → opérateur binaire     AND
       OU (Disjonction) → opérateur binaire OR
       Ouex (Ouexclusif) → opérateur binaire XOR

          Si A = vrai NON (A)=Faux
          Pour le ET il faut que les deux opérandes soient vraies pour que le
          résultat soit vrai
          Pour le Ou il suffit d’avoir une seule opérande qui est vrai pour que le
          résultat soit vrai
          Pour le Ouex si les deux opérandes sont de valeurs différentes alors le
          résultat sera vrai sinon le résultat sera faux.



  c- Activité1 : Complétez les tables de vérités suivantes


Expression A      Expression B NON (A) A ET B                  A OU B      A Ouex B
     V                 V         F         V                      V            F
      F                V         V         F                      V            V
     V                 F         F         F                      V            V
      F                F         V         F                       F           F

  d- Activité2 : Faire l’activité 13 du livre à la page 21.
  On a : a=4, b=5, c=1 et d=0 on nous demande d’évaluer les expressions
   Suivantes :
  1) (a<b) et (c>=d) → Vrai         2) Non (a<b) ou (c≠b) → Vrai
  3) Non (a≠b²) ou (ac<d) → Faux
   e- Déclaration :
Au niveau de l’algorithme                Au niveau de Pascal

Tableau de déclaration des objets         Var
 objet          type       rôle           Nom_Variable : Boolean ;
 Nom_variable Booléen rôle

                                                                                       6
Chap I : Les Structures de données et les Structures Simples    Prof : Hichem Klouz

   4- Le type Caractère :
   a- Présentation : Quelles sont les différentes catégories du type caractère ?
   On distingue plusieurs types de caractères
   1) Les chiffres ["0".."9"].
   2) Les lettres majuscules et minuscules de l’alphabet : ["A".."Z"] et ["a".."z"]
   3) Les symboles exemple : "+", " ?", "$", " !", ">", " " …
   4) Les caractères non imprimables exemple : le retour chariot, Echappe
    A chaque caractère correspond un code appelé le code ASCII qui est
   unique pour chaque caractère (voir Annexe p 229)
    Caractères               Code ASCII
     De "0" à "9"            De 48 à 57
    De "A" à "Z"             De 65 à 90
    De "a" à "z"             De 97 à 122
    L’espace                     32

    Une variable de type caractère ne peut contenir qu’un seul caractère

   b- Les opérateurs :
   Les opérateurs qu’on peut appliquer sur le type caractère sont les opérateurs
   relationnels : < , > , = , ≠ ,  , 
   Exemple :
    "A" < "C" car 65<67
    "A" < "a" car 65<97

   Remarque : Pour réaliser la concaténation de deux caractères on utilise
   l’opérateur "+"
    Exemple : "1" + "5" → "15"  le résultat n’est pas de type caractère
              "l" + "e" → "le"

  c- Déclaration :
Au niveau de l’algorithme                 Au niveau de Pascal

Tableau de déclaration des objets         Var
 objet          type       rôle           Nom_Variable : CHAR ;
 Nom_variable Caractère rôle


   d- Les fonctions prédéfinies :
                                                                                      7
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz

    Voir tableau à la page 23.
    Recopiez le tableau sur une fiche.
     CHR (ORD (UPCASE ("B")) + 2) → "D"
     ORD (PRED(CHR(48))) → 47

   5- Le type Chaîne de Caractère :
   a- Définition :
   Une chaîne de caractère est un regroupement de n caractères avec n varie de
   0 à 255. Si n est nulle on dit que la chaîne est vide.
   b- Les opérateurs :
   On peut réaliser la comparaison de deux chaînes de caractères est cela en
   utilisant les opérateurs relationnels.
    Exemple : On veut comparer ch1="Arbre" et Ch2="Arme"
                          Arbre
                                   Code ("b") < Code ("m") alors
                         Arme        ch1 < ch2
  On peut concaténer deux chaînes en utilisant l’opérateur "+"
  Remarque :
   Pour accéder au ième caractère d’une chaîne CH on utilise CH[i] avec
  1  i  Long(CH)
   CH←"science"
   1      2       3     4      5      6      7
   s      c       i     e      n      c      e

CH[1]                                 CH[6]

c- Déclaration :
Au niveau de l’algorithme                  Au niveau de Pascal

Tableau de déclaration des objets          Var
 objet          type       rôle            Nom_Variable : String ;
 Nom_variable Chaîne       rôle
Ou bien :
Tableau de déclaration des objets
 objet          type            rôle       Var
 Nom_variable Chaîne[Taille] rôle          Nom_Variable : String[Taille] ;

d- Les fonctions et les procédures prédéfinies :
                                                                                       8
Chap I : Les Structures de données et les Structures Simples        Prof : Hichem Klouz

Voir tableau à la page 26.
e- Application :
Série d’exercices

IV- Les structures simples
1- Définition :
Une structure simple se réduit à :
        Une entrée de données
        Une affectation
        Une sortie de données
2- L’opération d’entrée:
Une entrée est une opération de lecture de données.
La source de lecture par défaut est le clavier.


a- Déclaration :
Au niveau de l’algorithme                 Au niveau de Pascal
        Lire(Nom_variable)                Read(Nom_variable) ;
                                          Ou bien
                                          Readln(Nom_variable) ;
                                          lecture avec retour à la ligne.


3- L’opération d’affectation:
L’opération d’affectation est la seule opération qui permet de changer le
contenu d’une variable on la désigne par le symbole : ← .
La source de lecture par défaut est le clavier.
a- Déclaration :
Au niveau de l’algorithme                Au niveau de Pascal
Nom_variable ← Valeur                    Nom_variable := Valeur ;


b- Application :
Quelles sont les valeurs des variables a, b, c après l’exécution de ces
instructions :
     1) a ← 3
     2) b ← -7
     3) c ← (a+b)3
                                                                                          9
  Chap I : Les Structures de données et les Structures Simples    Prof : Hichem Klouz

      4) a ← c + 4
      5) a ← a - 1

   N° d’instruction                a                    b                  c
          1                        3
          2                        3                    -7
          3                        3                    -7                -12
          4                       -8                    -7                -12
          5                       -9                    -7                -12

  4- L’opération de sortie:
  Une sortie est une opération d’affichage ou d’écriture de données.
  La destination d’écriture par défaut est l’écran.

  a- Déclaration :
Type d’affichage         Au niveau de l’algorithme       Au niveau de Pascal
Affichage d’un           Ecrire("texte")                 Write('texte')
texte                    Ecrire(nom_variable)            Write(nom_variable) ou
Affichage du                                             Writeln(nom_variable)
contenu d’une
variable
Affichage d’un           Ecrire("texte",nom_variable) Write('texte',nom_variable) ou
texte+le contenu                                      Writeln('texte',nom_variable)
d’une variable

  5- Application:
  Ecrire un algorithme et un programme en Pascal qui permet de décomposer un
  entier N en chiffre c'est-à-dire en centaine, en dizaine et en unité.
  Exemple : si N= 135 le programme m’affichera " 135 est composé de 1 3 5 "
     Spécification :
     Résultat : On veut afficher les centaines C, les dizaines D et les unités U
                Ecrire (N , "est composé de ", C, " ", D," ",U )
     Traitement : Pour trouver les centaines C, les dizaines D et les unités U de
                  L’entier N on va utiliser les opérateurs arithmétiques MOD et
                  DIV
                     C      N DIV 100
                     D      (N MOD 100) DIV 10

                                                                                    10
Chap I : Les Structures de données et les Structures Simples   Prof : Hichem Klouz


                 U      N MOD 10

                N = Données
    Algorithme :
        0) Début Décomposition
        1) Ecrire (" Donnez un entier ")
        2) Lire (N)
         3) C        N DIV 100
         4) D        (N MOD 100) DIV 10
         5) U      N MOD 10
         6) Ecrire (N, "est composé de ", C, " ", D," ",U )
         7) Fin Décomposition
        Tableau de déclaration des objets :
        Objets              Type                 Rôle
        C                   Entier               Centaine
        U                   Entier               Unité
        N                   Entier               Nombre
        D                   Entier               Dizaine

   Programme en Pascal :
   Program Decomposition ;
   uses wincrt ;
   Var
      N,C,D, U : Integer ;
   Begin
    Writeln(' Donnez un entier ' ) ;
     Readln(N) ;
     C:= N DIV 100 ;
     D:= (N MOD 100) DIV 10 ;
     U:= N MOD 10 ;
     Writeln( N, 'est composé de ', C, ' ', D, ' ',U) ;
   End.
V- Les types énumérés
1- Présentation :
Un type énuméré est un type dont les variables associées n'auront qu'un nombre
très limité de valeur. La définition d'un type énuméré consiste à déclarer une
liste de valeurs possibles (256 au maximum) associées à un type, c'est-à-dire
                                                                                 11
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz

qu'une variable de type énuméré aura l'une et une seule de ces valeurs et pas
une autre.
Exemple :
Semaine = (dim, lun , mar , mer , jeu , ven , sam)

2- Déclaration :
Au niveau de l’algorithme                  Au niveau de Pascal

Tableau de déclaration des objets          Var
 objet          type       rôle            Nom_variable : (Val1,Val2,Val3 ...) ;
 Nom_variable Liste de rôle
                valeurs                    Ou bien :
                                           Type
                                           Nom_type = (Val1,Val2,Val3 ...) ;
                                           Var
                                           Nom_variable : Nom_type ;

3- Application :
Donnez la déclaration algorithmique et celle au niveau de Pascal du type
énuméré appelé Sens comportant les 4 sens de direction qui sont : haut, bas,
gauche et droite.
Au niveau de l’algorithme :


Tableau de déclaration des objets
 objet     type                             rôle
 Sens      haut, bas, droite, gauche        direction

Au niveau de Pascal :
Var
  Sens : (haut, bas, droite, gauche) ;

Ou bien :
Type
  Type_sens = (haut, bas, droite, gauche) ;
Var
   Sens : Type_sens;


                                                                                   12
Chap I : Les Structures de données et les Structures Simples        Prof : Hichem Klouz

4- Les fonctions prédéfinies :
Voir Tableau à la page 37.
Les fonctions prédéfinies sur les types énumérés sont:
Fonction                            Rôle
 succ ( expr_type_enumere )         fournit le successeur de la valeur donnée par
                                    expr_type_enumere (erreur si cette expression
                                    désigne la dernière valeur énumérée)
pred ( expr_type_ enumere )       fournit le successeur de la valeur donnée par
                                  expr_type_enumere (erreur si cette expression
                                  désigne la dernière valeur énumérée)
ord ( expr_type_ enumere )        fournit le numéro d'ordre de la valeur donnée par
                                  expr_type_enumere

Remarque
 Les valeurs d’un type énuméré sont ordonnées selon leur ordre de déclaration
Exemple : haut<bas<droite<gauche
 Pour chaque valeur du type énuméré on fait correspondre un numéro d’ordre

Exemple : haut porte le numéro 0
          bas porte le numéro 1
          droite porte le numéro 2
          gauche porte le numéro 3
  Les opérations possibles (en plus de l'affectation et du passage en
  paramètre) sur les valeurs d'un type énuméré sont:
 = ≠ ≥  < >

Exemple : Succ (haut) donne bas
          Pred (haut) donne erreur
          Ord(bas) donne 1


VI- Les tableaux
1- Les tableaux à une dimension:
   a- Définition :
   Un tableau appelé aussi vecteur, est une structure de données qui permet le
   regroupement d’un nombre fini d’éléments de même type selon une structure
   bien définie.
   b- Déclaration :
Au niveau de l’algorithme                  Au niveau de Pascal

                                                                                      13
Chap I : Les Structures de données et les Structures Simples         Prof : Hichem Klouz

Tableau de déclaration des objets                 Var
 objet         type             rôle              Nom_tableau : Array[Binf..Bsup] OF
 Nom_tableau Tableau de         rôle              Type_elements ;
               Taille
               Type_elements

Ou bien
Tableau de déclaration de nouveaux                Type
types :                                           Nom_type = Array[Binf..Bsup] OF
                 Type                             Type_elements ;
 Nom_type = Tableau de taille et de               VAR
 type_éléments                                    Nom_tableau : Nom_type ;

Tableau de déclaration des objets
 objet         type        rôle
 Nom_tableau Nom_type rôle


Binf et Bsup représentent respectivement les indices de la première et de la
dernière case du tableau à définir .Ces indices peuvent être de type entier ou
caractère.
Exemple :
Moy : Array[1..5] OF Real ;
Moy est un tableau de 5 éléments de type réels.
Remarque
L’accès à un élément du tableau est direct, c'est-à-dire pour accéder au ième
élément du tableau il suffit de donner le nom du tableau et l’indice i.( Binf ≤ i
≤ Bsup)
Syntaxe (en pascal):
   Nom_tableau [ indice ] := valeur ;

Exercice :
Soit la séquence d’affectations suivantes :
1) A[1]  20                              5)   B[2]  B[1] mod A[1]
2) A[2]  10                              6)   B[3]  A[2] *2 + 2
3) B[1]  A[1] + A[2]                     7)   A[4]  (A[2] div 60) mod 60
4) A[3]  B[1] div 2                      8)   A[5]  A[2] div A[1]

                                                                                       14
Chap I : Les Structures de données et les Structures Simples     Prof : Hichem Klouz


1°) Soit A et B deux tableaux d’entiers, de types respectifs VECT1 et VECT2 déclarer A
et B
2°) Quel est le contenu de chaque élément des deux tableaux A et B ?
Réponse:
  1°)
  a - déclaration en Algorithmique :
Tableau de déclaration de nouveaux types :
                                         TYPES
VECT1 = tableau de 5 entiers
VECT2 = tableau de 3 entiers
T.D.O :
             Objet                       Type/nature                   Rôle
              A                            VECT1                      Tableau
              B                            VECT2                      Tableau

   b- déclaration en Pascal :
         TYPE
         VECT1 = ARRAY[1..5] OF INTEGER ;
         VECT2 = ARRAY[1..3] OF INTEGER ;
          VAR
         A : VECT1 ;
         B : VECT2 ;

   2°)

         A    20     10        15        0        0

         B     30         10        22

2- Les tableaux à deux dimensions:
a- Activité1 :
Ecrire u programme qui permet de saisir 3 entiers puis d’afficher ces entiers
avec leurs carrés dans une même structure.
Exemple :
L’utilisateur saisit : 2 5 1
On veut afficher :             1     2        3
                          1   2      5       1
                          2   4      25      1



                                                                                    15
Chap I : Les Structures de données et les Structures Simples    Prof : Hichem Klouz

Complexité : Avec la structure tableau à une dimension, il est difficile de
repérer une case
En utilisant n° de ligne et n° de colonne
Solution : Déclarer un tableau à deux dimensions
Au niveau de l’algorithme :
Tableau de déclaration des objets
objet           type                    rôle
     Tab        Tableau de 3 lignes et rôle
                3 colonnes d’entiers

Au niveau de Pascal :
Var
Tab: Array[1..3,1..3] OF Integer ;
 b- Déclaration :
Au niveau de l’algorithme                     Au niveau de Pascal
Tableau de déclaration des objets
 objet         type              rôle         Var
 Nom_tableau Tableau de          rôle         Nom_tableau : Array[Binf1..Bsup1,
               Taille                         Binf2..Bsup2] OF Type_elements ;
               Type_elements

Ou bien
Tableau de déclaration de nouveaux types :    Type
                    Type                      Nom_type = Array[Binf1..Bsup1,
 Nom_type = Tableau de taille et de           Binf2..Bsup2] OF Type_elements ;
 type_éléments                                VAR
Tableau de déclaration des objets             Nom_tableau : Nom_type ;
 objet          type        rôle
 Nom_tableau Nom_type Rôle


c- Application :
 Faire l’activité1 :
Spécification :
Résultat : Affichage du tableau à deux dimensions Tab
Traitement : on veut calculer le carré des entiers donnés par l’utilisateur
             Et on va les sauvegarder dans la deuxième ligne de Tab
            Tab[2][1]← Tab[1][1] Tab[1][1]
            Tab[2][2]← Tab[1][2] Tab[1][2]
            Tab[2][3]← Tab[1][3] Tab[1][3]
                                                                                  16
Chap I : Les Structures de données et les Structures Simples   Prof : Hichem Klouz


            Tab[1][1]= Donnée
            Tab[1][2]= Donnée
            Tab[1][3]= Donnée

Algorithme :
        0) Début Matrice
        1) Ecrire (" Donnez un entier ")
        2) Lire (Tab[1][1])
        3) Ecrire (" Donnez un entier ")
        4) Lire (Tab[1][2])
        5) Ecrire (" Donnez un entier ")
        6) Lire (Tab[1][3])
        7) Tab[2][1]← Tab[1][1] Tab[1][1]
        8) Tab[2][2]← Tab[1][2] Tab[1][2]
        9) Tab[2][3]← Tab[1][3] Tab[1][3]
       10) Ecrire (Tab[1][1], Tab[1][2], Tab[1][3])
       11) Ecrire (Tab[2][1], Tab[2][2], Tab[2][3])
       12) Fin Matrice


Tableau de déclaration des objets
objet         type                                      rôle
     Tab      Tableau de 6 entiers                      rôle


Pascal :
Program Matrice;
uses wincrt;
Var Tab : Array[1..3,1..3] OF integer;
begin
writeln(' Donnez un entier ');
readln(Tab[1][1]);
 writeln(' Donnez un entier ');
readln(Tab[1][2]);
writeln(' Donnez un entier ');
readln(Tab[1][3]);
Tab[2][1]:=Tab[1][1]*Tab[1][1];

                                                                                 17
Chap I : Les Structures de données et les Structures Simples   Prof : Hichem Klouz

Tab[2][2]:= Tab[1][2]* Tab[1][2];
Tab[2][3]:= Tab[1][3]* Tab[1][3];
writeln(Tab[1][1], Tab[1][2], Tab[1][3]);
writeln(Tab[2][1], Tab[2][2], Tab[2][3]);
end.




                                                                                 18

				
DOCUMENT INFO
Stats:
views:24
posted:1/26/2013
language:
pages:18