INSA Toulouse 1A Algorithme ADA Cours 2-3

May 25, 2018 | Author: purplera1n | Category: Data Type, Mathematical Logic, Physics & Mathematics, Mathematics, Mathematical Concepts


Comments



Description

Règles de typage R ÈGLE « Tableau »Après une définition Algorithmique UV2 Cours 3 Didier Le Botlan INSA [email protected] type Des_Foos is array (Integer range <>) 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) ; Compléter : 2nd semestre 2009–2010 Des_Foos : Premier_Tableau : http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html Des_Foos Integer bloc 2 / 15 Premier_Tableau(5) : Premier_Tableau(2) := 120 : 1 / 15 Vision ensembliste nb_mots : integer ; taux_imposition : float ; integer et float sont des types de données. Un type représente un ensemble de valeurs On trouve donc des similitudes entre les types et les ensembles : Sous-ensemble ↔ Sous-type Ensemble fini ↔ Type énuméré Produit cartésien ↔ article (record) Produit cartésien homogène ↔ Type tableau Mais toutes les opérations ensemblistes n’existent pas (en Ada) sur les types. 3 / 15 4 / 15 Un type représente un ensemble de valeurs, par exemple : Un intervalle d’entiers Un intervalle de réels Un ensemble énuméré de valeurs Exemples d’ensembles énumérés 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 entités particulières : {Bouton_Gauche, Bouton_Droit, Bouton_Milieu, Molette} Type énuméré : déclaration L’exemple du poly Définition : Déclaration d’un type énuméré type Un_Jour is (Lun, Mar, Mer, Jeu, Ven, Sam, Dim) ; Cette procédure affiche son argument de type Un_Jour_Semaine On suppose que l’acteur Txt est défini. procedure Afficher_Jour (Jour : begin case Jour is when Lun => when Mar | Mer | Jeu => when Ven => when Sam | Dim => end case ; end Afficher_Jour ; Un_Jour_Semaine) is Se place avant le begin, avec les déclarations. Après cette déclaration, Lun, Mar, . . . , sont reconnus comme des valeurs. Txt . Put Txt . Put Txt . Put Txt . Put ( "Lundi, jour difficile" ) ; ( "Milieu de la semaine" ) ; ( "Vendredi" ) ; ( "Week end" ) ; 5 / 15 6 / 15 Caractéristiques d’un type Les attributs Un type représente un ensemble de valeurs. Pour les valeurs de base (entier, flottants, ...), les seuls ensembles représentables sont les intervalles. Les attributs permettent d’obtenir des informations sur un type donné, par exemple les bornes de l’intervalle. Grand : Integer := Integer’LAST ; ’FIRST ’LAST ’RANGE ’SUCC(x) ’PRED(x) ’VAL(x) ’POS(x) premier élément de l’intervalle dernier élément représente l’intervalle élément successeur de x élément prédécesseur de x l’élément numéro x de l’ensemble la position de l’élément x Le plus grand entier Ada Gra nd 2147483647 7 / 15 8 / 15 Sous-ensemble Un Type Article Un article (record) est un regroupement de plusieurs types. Un type est un ensemble de valeurs. Un sous-type permet de distinguer un sous-ensemble. Sous-type d’un type énuméré subtype Un_Jour_Ouvrable is Un_Jour range Lun . . Ven ; Déclaration de type Attributs À placer avant le begin type Une_Duree is record Heures : Natural ; Minutes : Integer range 0 .. 59 ; Secondes : Float range 0.0 .. 59.99 ; end record ; Foo : Une_Duree ; Sous-type entier subtype Une_Heure is Integer range 0 . . 23 ; o Fo Sous-type réel subtype Un_Voltage is Float range -3.5 . . 3.5 ; = ... Heures Minutes = . . . Secondes = . . . 9 / 15 10 / 15 Représentation graphique Une_Duree Composition de structures Foo : Natural . Heures 1 Integer range 0..59 Il est possible de composer les structures, réalisant ainsi des structures de données plus complexes. Un type pour ITunes type Un_Avis is (Trop_Bon, Bon, Moyen, Bof) ; type Une_Musique is record Titre : String(1..20) ; 20 caractères Duree : Une_Duree ; Annee : Integer ; Artiste : String(1..20) ; 20 caractères Avis : Un_Avis ; end record ; . Minutes 12 Float range 0.0..59.99 . Secondes 45.0 11 / 15 12 / 15 Représentation graphique Une_Musique Utilisation String(1..20) . . Titre ... Une_Duree Integer L’initialisation se fait en respectant l’ordre des champs ou en nommant les champs (comme d’habitude) : Chanson : Une_Musique := (Titre => "Brothers in Arms ", Duree => (0, 3, 10.0) , 3 min 10.0 Annee => 1984 , Artiste => "Dire Straits ", Avis => Bon) ; Duree . . Heures 1 0..59 Minutes 12 0.0..59.99 Integer . . . Annee 2006 String(1..20) . Secondes 45.0 Artiste ... Un_Avis L’accès aux champs se fait par notation pointée (comme d’habitude aussi) : Chanson.Annee := 1985 ; Brothers in Arms date de 1985 Chanson.Duree.Minutes := 5 ; Il dure 5 min 10 ! Chanson.Avis := Trop_Bon ; Et c’est plus que bon. Avis Bof 13 / 15 14 / 15 Un tableau d’articles Déclaration type Une_Collection is array (Integer range <>) of Une_Musique ; Collection_Rock : Une_Collection(1..8000) ; Collection_Tecktonik : Une_Collection(1..1000) ; Accès Collection_Rock (31).Titre := "Where the streets have no name" ; Collection_Rock (31).Duree := (0, 5, 37.0) ; 5 min 37 En fait, 5 min 38 Collection_Rock (31).Duree.Secondes := 38.0 ; Collection_Rock (31).Artiste := "U2 "; Quelles sont les règles de typage utilisées ? 15 / 15
Copyright © 2024 DOKUMEN.SITE Inc.