Université Paris 6 Licence d'informatique
|
Module de Programmation Année 1999-2000
|
Travaux dirigés n° 4
Exercice 1
Typez les expressions suivantes en construisant la déduction
correspondante. Les expressions sont indépendantes.
4 < 3;;
"debut " ^ "fin";;
4.0 * 6;;
string_of_int 34;;
4.0 >= 45.6;;
x = false;;
let y = 4 and z = "fin";;
Exercice 2
Typez la séquence d'expressions suivantes à partir de l'environnement
initial Env-Init.
let x = false;;
let y = (x = true);;
let z = if x = true then false else true;;
Exercice 3
1.
Typez la déclaration:
let f = function x -> x*x + 2;;
2.
Typez la déclaration suivante dans un environnement contenant la
liaison (x, int):
let f = function y -> x+y;;
3.
Typez la déclaration suivante :
let f = function x -> function y -> function z -> x*y+z;;
Ensuite, Typez f 1 2 3;;.
4.
Typez la déclaration suivante dans un environnement contenant la
liaison (x, int):
let f = function x -> if x = 0 then 1 else 2;;
Ensuite, typez f 0;;
5.
Typez la déclaration suivante dans un environnement contenant la
liaison (x, int):
let f1 = function y -> if x = 1 then 1 else 2;;
Ensuite, typez f1 2;;
6.
Comparer f1
à la fonction f2
suivante:
let f2 = if x = 1 then function y -> 1 else function y -> 2;;
Exercice 4
Le but de cet exercice est de réaliser une petite boite à outils
(ie. un ensemble de fonctions) pour manipuler des vecteurs
dans un espace en 3 dimensions.
1.
Définissez un type vecteur pour représenter un vecteur dans un espace à 3 dimensions.
2.
Écrivez et typez une fonction qui regarde si 2 vecteurs sont égaux.
3.
Écrivez et typez une fonction qui additionne 2 vecteurs.
4.
Écrivez et typez une fonction qui calcule le produit scalaire de deux
vecteurs.
5.
Écrivez et typez une fonction qui calcule le produit vectoriel de deux
vecteurs.
Exercice 5
Donnez les résultats du typage de chacune des phrases de la session
Caml suivantes. Ces phrases sont numérotées pour faciliter la
rédaction. La session débute dans l'environnement E = Env-Init.
(1) #let code = 1900;;
(2) # let g = let code = 10
in function y -> y + code;;
(3) #g 25;;
(4) # code;;
(5) # let k = function (f,x) -> f (g (x-1)) + 2;;
(6) # k (function z -> z + code, 3) ;;
Exercice 6
Soit la déclaration :
let double_applic = function (f,x) -> f(f (x+1)) ;;
1.
Typez cette déclaration.
2.
Que calcule (double_applic (succ,25))
?
3.
Typez cette application.
Exercice 7
Typez la session suivante :
let x = 1 and y = 2;;
let x = 0 and y = x-1;;
let h = function f -> function g -> function z -> f ((g (x+z))+y);;
h 10;;
let x = 1 and y = x+1;;
h 10;;
Exercice 8
Soit le programme suivant:
let a = 1;;
let k = function y -> y - a;;
let h = function u -> u + k(u);;
let f = function v -> h(v) + v;;
Typez la déclaration:
f 25;;
Exercice 9
Reprendre l'exercice 1 du TD3 et typez les expressions données.
Ce document a été traduit de LATEX par HEVEA.