INF121:
Algorithmique et Programmation Fonctionnelle
Cours 7 : Listes (suite et fin)
Année 2013 - 2014
Brefs rappels sur les listes
Une liste c’est :
Iune suite finie de valeurs de même type
Icontenant un nombre arbitraire d’éléments
Ifournis selon un ordre donné ([5, 8, 4] 6=[8, 5, 4])
Le type liste_de_t peut être défini par un type (union) récursif :
Ila constante Nil représente la liste vide
Ile constructeur Cons(e,l) représente l’ajout en tête de eàl
Cons (expr1,Cons (expr2, ...Cons (exprn,Nil) ...))
Un élément du type list_de_t est une valeur (comme une autre !)
On peut définir des listes d’entiers, booléens, réels, fonctions, etc.
1 / 10
Le type prédéfini pour les listes en Ocaml
OCaml fournit un constructeur de type list prédéfini
INil est noté [ ]
ICons est exprimé par un opérateur infixé ::
Exemple : Listes en notation OCaml
ICons (2, Nil) correspond à 2::[ ]
ICons (4,Cons (9, Nil)) correspond à 4::(9::[ ])
Quelques raccourcis de notation :
Iv1::(v2::...::(vn::[ ])) peut être noté v1::v2:: ...vn::[ ]
Iv1::v2::... vn::[ ] peut être noté [v1;v2;...;vn]
le type list_of_t devient t list
DEMO: les listes en notation Ocaml
2 / 10
Retour sur le pattern-matching
Rien ne bouge . . .
Même règles, même expressivité, mais une nouvelle syntaxe
ensembles de valeurs attendues filtre
liste vide []
liste non vide _::_,_::l,
e::l,e::_
liste à un seul élément e::[], _::[],
[_], [e]
liste non vide
dont le premier élément est 1 1::_
(dans le cas d’une liste d’entiers)
... ...
3 / 10
Retour sur les exercices du cours précédent
Avec ces nouvelles notations
Pour des listes d’entiers :
Isomme : renvoie la somme des éléments d’une liste
Iappartient : indique si un élément appartient à une liste
Idernier : renvoie le dernier élément d’une liste
Iminimum : renvoie le minimum d’une liste d’entiers
Ipairs : renvoie les entiers pairs d’une liste
Isupprime : supprime une/toutes les occurrences d’un élément
Iconcatene : concaténation de deux listes
Ipartition : partitionne une “liste de paires” en une “paire de listes”
Iest_croissante : indique si une liste est croissante
DEMO: Implémentation de certaines de ces fonctions
4 / 10
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !