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'état du rayon « légumes » d'un supermarché est tenu à jour par l'ordinateur central d'après les informations fournies par les caisses.

Chaque légume est représenté par son nom, la quantité présente en rayon, le seuil à partir duquel il faut réapprovisionner le rayon, ainsi que son prix. La quantité peut être soit un nombre de pièces (par exemple pour les céleris), soit un nombre de kilos (par exemple pour les carottes). Selon les saisons les légumes varient et sont plus ou moins nombreux.


1. (Types) Définissez le type légume. Pour cela vous pouvez définir tous les types intermédiaires que vous souhaitez. Indiquez la représentation des tomates, à 5,50 francs le kilo, avec 20 kilos en rayon et un seuil de commande de 5 kilos.


2. (Quantités)
3. (Panier) Une ménagère achète des légumes pour son pot au feu: quelques carottes, des pommes de terre, une botte de poireaux, un oignon, un bouquet d'herbes. Par quelle structure de données représentez-vous le panier de cette ménagère?


4. (Prix)
5. (Mise à jour)
6. (Commande) Écrire une fonction légumes_à_commander qui compose la commande après mise à jour du stock du rayon r.
Exercice 2 (8 points)

Typer les expressions suivantes:
    let f = function x -> function y -> let z = x * y in x + z;; 

    let rec p = function x -> function n -> 
      if n = 0 then 1 else (p x (n-1))*x;;

    let h = p (f 4 2);;

    let filter = function f -> function p -> function x -> 
      if p x then f x else x;; 
sachant que hd et tl ont pour types hd: 'a list -> 'a et tl: 'a list -> 'a list.


Ce document a été traduit de LATEX par HEVEA.