Université Paris 6
Licence d'informatique
Module de Programmation
Année 2000-2001


Contrôle continu - 30 novembre 2000


Les seuls documents autorisés sont les documents manuscrits et les documents distribués en cours, TDs et TPs. La durée de l'épreuve est de 2h.





Exercice 1 (12 points)

Vous pouvez utiliser toutes les fonctions vues en cours ou appartenant aux bibliothèques décrites dans le manuel de référence de Caml. Vous pouvez utiliser autant de fonctions intermédiaires que vous le souhaitez.


L'unité centrale d'un ordinateur comprend une carte-mère et de la mémoire. La carte-mère peut gérer un certain nombre de périphériques. Les périphériques considérés ici sont les claviers, les écrans et les disques durs. La mémoire est décrite par le nombre de barrettes et la capacité de ces barrettes (on supposera qu'elles sont toutes de même capacité). Une machine comprend une unité centrale et des périphériques.


1. (Types) Définissez le type machine. Pour cela vous pouvez définir tous les types intermédiaires que vous souhaitez. Donnez un exemple d'élément de ce type.


2. (Machine complète) Pour chaque périphérique, on note son type, son prix, la quantité en stock ainsi que le seuil en dessous duquel il faut en commander au fabricant.


3. (Type) Définissez le type info_périphérique qui représente cette information. Comment représentez-vous le stock?


4. (Prix) Un administrateur de parc de machines achète un lot de périphériques pour remplacer du matériel défaillant.


5. (Mise à jour)
6. (Commande) Écrire une fonction périphériques_à_commander qui compose la commande après mise à jour du stock s.
Exercice 2 (8 points)

Typer les expressions suivantes:
    let a = 42;;
    let f = function x -> function y -> if x > a then a*x+y else -x;;

    let rec max_list = function l -> 
      if l = [] then 0 else max (hd l) (max_list (tl l));;

    let v = max_list [5; 4; 2; 2];;

    let g = function f -> function x -> (hd (f x))::(tl x);; 
sachant que hd, tl et max ont pour types hd: 'a list -> 'a, tl: 'a list -> 'a list et max: 'a -> 'a -> 'a.
Ce document a été traduit de LATEX par HEVEA.