Programmation fonctionnelle
Langage Caml
Licence 1ère année année 2016 - 2017
Recueil
de
documents de travail
Pr. Nicole VINCENT
Table des matières
cours n° 1 ................................................................................. 4
TD1 .......................................................................................... 5
cours n° 2 ................................................................................. 7
TD2 .......................................................................................... 8
cours n° 3 ................................................................................. 9
TD3 .......................................................................................... 10
cours n° 4 ................................................................................. 11
TD4 .......................................................................................... 12
cours n° 5 ................................................................................. 13
TD5 .......................................................................................... 14
cours n° 6 ................................................................................. 15
TD6 .......................................................................................... 16
cours n° 7 ................................................................................. 17
TD7 .......................................................................................... 18
cours n° 8 ................................................................................. 19
TD8 .......................................................................................... 20
cours n° 9 ................................................................................. 21
TD9 .......................................................................................... 22
cours n° 10 ............................................................................... 23
TD10 ........................................................................................ 24
cours n° 11 ............................................................................... 25
TD11 ........................................................................................ 26
cours n° 12 ............................................................................... 27
TD12 ........................................................................................ 28
Licence 1 Année 2016 - 2017
UE Informatique
Programmation fonctionnelle
3
Programme du semestre
Cours n° 1
Cours : les principes généraux des types
Cours n° 2
Cours : la définition d'une fonction – n-uplet
TD et TP 1 : analyse des types
Cours n° 3
Cours : fonction argument et résultat
TD et TP 2 : construction de fonctions
Cours n° 4
Cours : fonctions et filtrage – gestion des erreurs
TD et TP 3 : fonctions
Cours n° 5
Cours : les listes
TD et TP 4 : les listes
Cours n° 6
Cours : les foncions récursives
TD et TP 5 : fonctions récursives
Cours n° 7
Cours : les fonctions récursives terminales
TD et TP 6 : fonctions récursives
Cours n° 8
Cours : types énumérés - somme
TD et TP 7 : Révisions
Cours n° 9
Cours : enregistrements
TD et TP 8: fonctions récursives
Cours n° 10
Cours : types structurés
TD et TP 9: types énumérés
Cours n° 11
Cours : modélisation de données, les polynômes
TD et TP 10: enregistrements
Cours n° 12
Cours : révisions
TD et TP 11 : révisions
Semaine
n° 13
TD12 : révisions
TP12 : CC3
Licence 1 Année 2016 - 2017
UE Informatique
Programmation fonctionnelle
4
Cours n°1
Le but est ici de comprendre la notion de type
les types classiques : int (5), float (5.), bool (true , false) , char (`a`), string ("Caml")
les opérateurs associés aux entiers : + , - , * , / , mod , abs
les opérateurs associés aux réels : +. , -. , *. , /. , ** , sqrt
les opérateurs de comparaison : = , <> , < , > , <= , >=
les changements de types : type1_of_type2
le type fonction : fun (x -> x + 1)
le type unit : ()
l’affectation : let x = 3
conditionnelle
if (condition) then expression1 else expression2
expression1 et expression2 sont des expressions d’un même type, celui pris par
l’expression globale
quelques fonctions de base :
min , max
print_int , print_float , print_string , print_newline
un programme est une suite d’expressions
Le langage est interprété.
Une expression est calculée après les symboles ;;
Exemple :
crire une valeur par une expression dépendant d’un entier x et dont la valeur est un booléen
indiquant si l'entier est pair ou non
# let x = 24 ;;
val x : int = 24
# let a = x mod 2 = 0 ;;
val a : bool = true
Licence 1 Année 2016 - 2017
UE Informatique
Programmation fonctionnelle
5
Travail à réaliser – TD1
Exercice 1
Pour chacune des expressions suivantes, indiquer son type et sa valeur. Si l'expression est mal
écrite on devra proposer une écriture exacte
3 + 6 ;;
3 +. 6 ;;
3 + 6. ;;
3 +. 6. ;;
3. +. 6. <= 9 ;;
x = 3 + 4 ;;
“a” > ‘b’ ;;
let x = “bonjour” ;;
let x = 2 = 1 ;;
let x = ‘c’ in x = ‘a’ ;;
let x = ‘c’ = “a” ;;
not 'z' > 'a' && 2 = 2 ;;
char_of_int (int_of_char ‘c’ + 2 ) ;;
int_of_string "142" + -73 ;;
let b = true in if b then "oui" else "non" ;;
let p=true and q=true in if p & q then false else true ;;
x = 2 ;; 3 + 4 ;;
( ) ; 3 + 4 ;;
Exercice 2
Calculer :
- la racine carrée de 4
- la puissance 3 de 5 : 53
- le minimum entre 3 et 10
- le minimum entre 3 et 1.5
- le minimum entre 1/2 et 1/3
Remarque : il existe une fonction qui permet de calculer le minimum entre deux nombres de
même type : min x y
Exercice 3
Ecrire une expression dont la valeur est égale à la somme des n premiers entiers positifs.
L’expression est : !
!
!(!+1)
Exercice 4
1°/Ecrire une expression dont la valeur est égale à 75 pour cent d’une valeur réelle qui sera
notée x.
2°/ Ecrire une expression dont la valeur est égale à a pour cent d’une valeur réelle qui sera
notée x.
3°/ Ecrire une suite d’expressions permettant en utilisant l’expression de la seconde question
et dont la valeur est égale à 65% de 120.
1 / 28 100%
Study collections
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 !