couleur, 1 diapo sur 1 page

publicité
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
Téléchargement