31/01/08
part. 1 : types, expressions et fonctions
1
inf121 : algorithmique et programmation fonctionnelle
1ère partie
TYPES, EXPRESSIONS ET
FONCTIONS
31/01/08
part. 1 : types, expressions et fonctions
2
inf121 : algorithmique et programmation fonctionnelle
A) Le fonctionnel, un style d'expression
Langage de programmation C
int max(int x, int y) {
if (x>y) return x ; else return y ;
}
int saisie(void) {
int val; scanf("%i",&val);
return val;
}
int main(void) {
int valeur=saisie(), maxi=-1;
while (valeur != -1) {
maxi = max(valeur, maxi) ;
valeur = saisie();
}
printf("%i",maxi);
return 0;
}
Expression actionnelle
Langage de programmation Ocaml
Expression fonctionnelle
let (max : int * int -> int) = function
(x,y) -> if x>y then x else y
;;
let (maxseqNV : int list -> int) = function
[x] -> x
| x::xs -> max(x, maxseqNV(xs))
;;
let (maxseq : int list -> int) = function
l -> if l=[] then -1 else maxseqNV(l)
;;
31/01/08
part. 1 : types, expressions et fonctions
3
inf121 : algorithmique et programmation fonctionnelle
A) Le fonctionnel, un style d'expression
Langage de programmation : C
int max(int x, int y) {
if (x>y) return x ; else return y ;
}
int saisie(void) {
int val; scanf("%i",&val);
return val;
}
int main(void) {
int valeur=saisie(), maxi=-1;
while (valeur != -1) {
maxi = max(valeur, maxi) ;
valeur = saisie();
}
printf("%i",maxi);
return 0;
}
Expression actionnelle
Langage de programmation : Ocaml
Expression fonctionnelle
let (max : int * int -> int) = function
(x,y) -> if x>y then x else y
;;
let rec (maxseqNV : int list -> int) = function
[x] -> x
| x::xs -> max(x, maxseqNV(xs))
;;
let (maxseq : int list -> int) = function
l -> if l=[] then -1 else maxseqNV(l)
;;
itération
affectation
ACTIONS
ETATS
TYPES
EXPRESSIONS
récursivi
type
31/01/08
part. 1 : types, expressions et fonctions
4
inf121 : algorithmique et programmation fonctionnelle
exemple introductif : moyenne olympique
MOYENNE OLYMPIQUE
SPÉCIFICATION
Profil
Sémantique
Ex et prop
moyol : x x x
moyol (x,y,z,t) est la moyenne des 2
nombres restant en excluant la plus
petite et plus grande valeur de x, y, z, t
(a) moyol (10,2,8,24) = 9
(b) a , moyol (a,a,a,a) = a
(c) moyol (1,3,5 2) = 2.5
+
SPÉCIFIER AVANT de chercher une solution !
31/01/08
part. 1 : types, expressions et fonctions
5
inf121 : algorithmique et programmation fonctionnelle
exemple introductif : moyenne olympique
MOYENNE OLYMPIQUE
RÉALISATION
Algorithme
Tests
Implantation
sommer les 4 valeurs
+
soustraire le maximum
max4
soustraire le minimum
min4
diviser par 2
-
ex (a) et (c)
moyol (12,12,12,12) = 12
(* /!\ conditions utilisation moyol (x,y,z,t) :
x, y, z, t >= 0 *)
let (moyol : int * int * int * int -> float) =
function
(x,y,z,t) -> float_of_int (x+y+z+t-max4(x,y,z,t)-
min4(x,y,z,t)) /. 2.0
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 !