31.07.2015 Views

Juin 2005

Juin 2005

Juin 2005

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Université Henri Poincaré Nancy 1Faculté des SciencesDEUG Science MiaslÉpreuve d'InformatiqueDate: ie 2 juillet <strong>2005</strong>Horaire: 9h-llhSession de rattrapage <strong>2005</strong>Durée du sujet: 2 heuresRédacteur: M. Grandbastien(tel: 03 83 68 41 14 )Documents et Calculatrices non autorisésLes exercices sont indépendants et peuvent être résolus dans un ordre arbitraireAttention: Il est demandé la plus grande rigueur dans l'expression des fonctions Ocaml, enparticulier le strict respect des règles de typage. Toute expression incorrectement typée sera considéréecomme fausse. Si vous voulez exprimer un algorithme, faites le en français, si vous utilisez des nomsde variables autres que ceux de l'énoncé} définissez-les avant usage.1. - ( 3 points) Quand dit-on qu'un programme est équivalent à un autre, est meilleur qu'unautre? Donnez comme exemple 2 versions différentes d'une fonction qui calcule un entier x àla puissance n.2. - (3 points) Indiquer la ou les valeurs calculées par Ocaml lorsqu'on soumet les expressionssuivantes:(a) let a=O;;let b=2;;let f = function x -> let b=2*a in a*x + b;;f b;;(b) let rec f l = match l with[] -> []1t: :q -> if t=O then f q else t :: (f q) ;;f [2 ; 0 ; 1 ; 2 ; 0 ; OJ ;;(c) let x= "Ocaml" in (let x=5 in x+l) + String.length x ;;3. (3 points) Dans chacun des trois cas suivants, donnez le type calculé par Ocaml ou bien expliquezpourquoi l'expression n'est pas typable.(a) function f ->function g ->function n ->(b) function z -> function h(c) let bizarre bl b2 = bl or4. (3 points)f(2*n) e . g(1.5*. float_oLint(n)) "-> 1:: [h(fst z)];;b2Il(a) Écrire une fonction Ocaml mois de profil int - > string qui à un entier m donné associele libellé du mois correspondant. Lorsque m ne représente pas un mois de l'année, c'est àdire n'est pas compris entre 1 et 12, retourner un message d'erreur. Exemple: mois 10renverra "octobre".(b) Écrire une fonction jour de profil int - > string qui à un entier donné j associe le libellédu jour de la semaine correspondant et retourne un message d'erreur si j n'est pas comprisentre 1 et 7. Exemple: jour 1 renverra "lundi".1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!