INSA Toulouse 1A Algorithme ADA Cours 2-3

Embed Size (px)

Citation preview

  • 8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-3

    1/4

    Algorithmique UV2

    Cours 3

    Didier Le Botlan

    [email protected]

    2nd semestre 20092010

    http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html

    1 / 15

    Rgles de typage

    RGLE Tableau

    Aprs une dfinitiontype Des_Foos is array (Integerrange ) of

    o est un type quelconque,

    si e : Des_Foos et e : Integer alors e(e) :

    type Des_Foos is array (Integer range ) of Integer ;Premier_Tableau : Des_Foos(1..200) ;

    Complter :

    Des_Foos :

    Premier_Tableau : Des_Foos

    Premier_Tableau(5) : Integer

    Premier_Tableau(2) := 120 : bloc

    2 / 15

    Vision ensembliste

    nb_mots : integer ;taux_imposition : float ;

    integer et float sont des types de donnes.

    Un type reprsente un ensemble de valeurs

    On trouve donc des similitudes entre les types et les ensembles :Sous-ensemble Sous-type

    Ensemble fini Type numr

    Produit cartsien article (record)

    Produit cartsien homogne Type tableau

    Mais toutes les oprations ensemblistes nexistent pas (en Ada) sur lestypes.

    3 / 15

    Un type reprsente un ensemble de valeurs, par exemple :

    Un intervalle dentiers

    Un intervalle de rels

    Un ensemble numr de valeurs

    Exemples densembles numrs

    Les jours de la semaine : {Lun, Mar, Mer, Jeu, Ven, Sam, Dim}

    Des notes de musique : {Do, Re, Mi, Fa, Sol, La, Si}

    De la logique floue : {Oui, Non, Peut_Etre}

    Des entits particulires :{Bouton_Gauche, Bouton_Droit, Bouton_Milieu, Molette}

    4 / 15

    http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.htmlhttp://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html
  • 8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-3

    2/4

    Type numr : dclaration

    Dfinition : Dclaration dun type numr

    type Un_Jour is (Lun, Mar, Mer, Jeu, Ven, Sam, Dim) ;

    Se place avant le begin, avec les dclarations.

    Aprs cette dclaration, Lun, Mar, . . . , sont reconnus comme desvaleurs.

    5 / 15

    Lexemple du poly

    Cette procdure affiche son argument de type Un_Jour_SemaineOn suppose que lacteurTxt est dfini.

    procedure Affiche r_Jour (Jour : Un_Jour_Semaine) is

    begin

    case Jour is

    when Lun => Txt . Put ("Lundi, jour difficile") ;

    when Mar | Mer | Jeu => Txt.Put ("Milieu de la semaine") ;

    when Ven => Txt . Put ("Vendredi") ;

    when Sam | Dim => Txt . Put ("Week end") ;

    end case ;

    end Afficher_Jour ;

    6 / 15

    Caractristiques dun type

    Un type reprsente un ensemble de valeurs.

    Pour les valeurs de base (entier, flottants, ...), les seuls ensemblesreprsentables sont les intervalles.

    Les attributs permettent dobtenir des informations sur un type

    donn, par exemple les bornes de lintervalle.Grand : Integer := IntegerLAST ; Le plus grand entier Ada

    2147483647

    Grand

    7 / 15

    Les attributs

    FIRST premier lment de lintervalleLAST dernier lmentRANGE reprsente lintervalle

    SUCC(x) lment successeur de xPRED(x) lment prdcesseur de x

    VAL(x) llment numro x de lensemblePOS(x) la position de llment x

    8 / 15

  • 8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-3

    3/4

    Sous-ensemble

    Un type est un ensemble de valeurs.Un sous-type permet de distinguer un sous-ensemble.

    Sous-type dun type numr

    subtype Un_Jour_Ouvrable is Un_Jour range Lun . . Ven ;

    Sous-type entier

    subtype Une_Heure is Integer range 0 . . 23 ;

    Sous-type rel

    subtype Un_Voltage is Float range -3.5 . . 3.5 ;

    9 / 15

    Un Type Article

    Un article (record) est un regroupement de plusieurs types.

    Dclaration de type

    placer avant le begintype Une_Duree is record

    Heures : Natural;

    Minutes : Integer range 0 .. 59;

    Secondes : Float range 0.0 .. 59.99 ;

    end record ;

    Attributs

    Foo : Une_Duree ;Heures =

    . . .

    Minutes =. . .

    Secondes =. . .

    Foo

    10 / 15

    Reprsentation graphique

    Foo :

    Une_Duree

    1

    Natural

    . Heures

    12

    Integer range

    0..59

    . Minutes

    45.0

    Float range

    0.0..59.99

    . Secondes

    11 / 15

    Composition de structures

    Il est possible de composer les structures, ralisant ainsi desstructures de donnes plus complexes.

    Un type pour ITunes

    type Un_Avis is (Trop_Bon, Bon, Moyen, Bof) ;

    type Une_Musique is recordTitre : String(1..20); 20 caractresDuree : Une_Duree;

    Annee : Integer;

    Artiste : String(1..20) ; 20 caractresAvis : Un_Avis;

    end record ;

    12 / 15

  • 8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 2-3

    4/4

    Reprsentation graphique

    Une_Musique

    . . .

    String(1..20)

    . Titre

    Une_Duree

    . Duree

    2006

    Integer

    . Annee

    . . .

    String(1..20)

    . Artiste

    Bof

    Un_Avis

    . Avis

    1

    Integer

    . Heures

    12

    0..59

    . Minutes

    45.0

    0.0..59.99

    . Secondes

    13 / 15

    Utilisation

    Linitialisation se fait en respectant lordre des champs ou ennommant les champs (comme dhabitude) :

    Chanson : Une_Musique := (Titre => "Brothers in Arms ",

    Duree => (0, 3, 10.0) , 3 min 10.0Annee => 1984 ,

    Artiste => "Dire Straits " ,

    Avis => Bon) ;

    Laccs aux champs se fait par notation pointe (comme dhabitudeaussi) :

    Chanson.Annee := 1985 ; Brothers in Arms date de 1985Chanson.Duree.Minutes := 5; Il dure 5 min 10 !Chanson.Avis := Trop_Bon ; Et cest plus que bon.

    14 / 15

    Un tableau darticles

    Dclaration

    type Une_Collection is array (Integer range ) of Une_Musique ;

    Collection_Rock : Une_Collection(1..8000) ;

    Collection_Tecktonik : Une_Collection(1..1000);

    Accs

    Collection_Rock (31).Titre := "Where the streets have no name" ;

    Collection_Rock (31).Duree := (0, 5, 37.0) ; 5 min 37

    Collection_Rock (31).Duree.Secondes := 38.0 ; En fait, 5 min 38

    Collection_Rock (31).Artiste := "U2 ";

    Quelles sont les rgles de typage utilises ?

    15 / 15