Upload
purplera1n
View
217
Download
0
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
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.html8/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