25/01/17 1 C) Modélisation de l'information C.1) C.2) C.3) C.4) C.5) Nommer et définir un nouveau type Type synonyme Type énuméré Type produit Type somme inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 2 C) Modélisation de l'information C.5) Type somme Ex : modélisation complète du jeu de cartes DÉF MATH D'UN ENSEMBLE déf carte = petite U honneur ? petite, honneur : sous-ensemble de Carte OK en prog objet avec notion de sous-type NON en prog fonctionnelle + typage statique inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 3 C) Modélisation de l'information Problème : Soit c une carte : c ∈ carte, par ex (Dame,♥) ou (7,♣) Si c quelconque, c ∈ petite ou c ∈ honneur ? A-t-on c:petite ou c:honneur ? /!\ rappel : le type d'une expression est unique ! Comment programmer avec c si son type est inconnu !!! Solution prog fonctionnelle : ajout d'information grâce à des constructeurs permettent de savoir de quel type on part inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 4 C) Modélisation de l'information a) Constructeur avec argument soit x : t', C(x) : t argument valeur construite C : constructeur de type t' → t ● t' : type de l'argument ● t : type de la valeur construite NB : 1ère lettre des noms des constructeurs : majuscule (comme les constantes symboliques constructeur de valeurs de types énumérés du cours précédent) inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 5 C) Modélisation de l'information Ex : on veut réunir ℤ et ℝ (en CAML : types ≠ avec op. associées ≠) en un seul type : nombre SPÉC MATH Profils Sémant. Ex. valeurs construites constructeurs de nombres Entier : ℤ → nombre constructeurs Réel : ℝ → nombre Entier(e) : nombre correspondant à e Réel(r) : nombre correspondant à r Entier(-1) Réel(2.5) inf201 : algorithmique et programmation fonctionnelle arguments chap. 1 : expression fonctionnelle 25/01/17 6 C) Modélisation de l'information ● Soit n1 = Entier(-1) n1 ∈ nombre, mais n1 provient de l'entier -1 {Entier(e) | e ∈ ℤ} : ensemble de nombres provenant d'entiers ● Soit n2 = Réel(2.5) n2 ∈ nombre, mais n2 provient du réel 2.5 {Reel(r) | r ∈ ℝ} : ensemble de nombres provenant de réels ● {Entier(e) | e ∈ ℤ} U {Reel(r) | r ∈ ℝ} : ensemble de nombres inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 7 C) Modélisation de l'information union DÉF MATH D'UN ENSEMBLE déf nombre = {Entier(e) | e ∈ ℤ} U {Reel(r) | r ∈ ℝ} IMPLÉMENTATION INFO D'UN TYPE type nombre = type somme somme Entier of int | Réel of float constructeurs inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 8 C) Modélisation de l'information Exo : Q) Étendre les nombres avec les complexes. .../... correction au tableau inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 9 C) Modélisation de l'information a) Constructeur avec argument b) Constructeur constant pas d'argument C : t valeur construite C : constante symbolique de type t t : type de la valeur construite inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 10 C) Modélisation de l'information Ex : déjà vu ! DÉFINITIONS MATH D'ENSEMBLES déf enseigne = { ♠, ♣, ♥, ♦ } déf mois = { Jan, Fév, ..., Déc } constructeurs constants IMPLANTATIONS INFO type enseigne = Pique|Trèfle|Coeur|Carreau type mois = Jan|Fév|...|Nov|Déc ESSAIS : # Carreau ;; - enseigne = Carreau inf201 : algorithmique et programmation fonctionnelle # Avr ;; - mois = Avr chap. 1 : expression fonctionnelle 25/01/17 11 C) Modélisation de l'information b) Constructeur constant c) Manipulation des types somme On pratique une analyse pas cas par filtrage Ex : définition (spécif + implantation) de l'addition sur les nombres. .../... correction au tableau inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 12 C) Modélisation de l'information DM : étendre l'addition aux complexes inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 13 C) Modélisation de l'information d) Ex récapitulatif : modélisation d'un jeu de 54 cartes Q0) Rappeler la définition des enseignes sous forme d'un type somme à constructeurs constants (type énuméré). Q1) Modéliser les valeurs basses des cartes (2, 3, ..., 10) sous forme d'un type intervalle. En déduire une modélisation des petites (ex : 4 de trèfle). Quelle est la nature de ce type ? Q2) Modéliser les valeurs hautes des cartes (valet, ..., as). Quelle est la nature de ce type ? En déduire une modélisation des honneurs (ex : roi de coeur). Nature de ce type ? inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 14 C) Modélisation de l'information Q3) Modéliser toutes les cartes (en incluant deux jokers, un rouge et un noir). Nature de ce type ? Q4) Définir (spécif + réal) le squelette d'une fonction f quelconque, de type carte → α ; appliquer ce squelette une fonction donnant la valeur d'une carte .../... correction au tableau inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 15 C) Modélisation de l'information On souhaite définir une fonction appelée comparerCartes capable de comparer deux cartes indépendamment de leur enseigne. Le résultat de la comparaison est : plus faible (ex : 2 de coeur plus faible que 5 de pique), égales ou plus forte. Q5) Modéliser le résultat d'une comparaison de deux cartes. Q6) Définir (spécif + réalisation) la fonction comparerCartes, ainsi que toute fonction(s) auxilliaire(s) si besoin. inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle 25/01/17 16 C) Modélisation de l'information inf201 : algorithmique et programmation fonctionnelle chap. 1 : expression fonctionnelle