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)
-
Écrire une fonction
a_écran
qui retourne true si
une liste de périphériques comporte un écran, et false sinon.
- Écrire une fonction
liste_complète
qui retourne
true si une liste de périphériques comporte un écran, un
clavier et un disque dur, et false sinon.
- Écrire une fonction compatibilité qui vérifie que
le nombre de périphériques de la machine n'excède pas le nombre de
périphériques que la carte-mère peut gérer.
- Écrire une fonction
mémoire_totale
qui la quantité de
mémoire d'une machine.
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.
-
Écrire une fonction
info_périph
qui fournit les
informations concernant une périphérique de type t dans le
stock s.
- Écrire une fonction
prix_périph
qui trouve le prix d'un
périphérique de nom t dans le stock s.
- Compte tenu de la description du stock s, écrire une
fonction
prix_lot
qui évalue le prix à payer à la
caisse pour un lot de périphériques l.
5. (Mise à jour)
-
Écrire une fonction
mise_à_jour_périph
qui retire une
quantité q d'une périphérique de type t du stock.
- Écrire une fonction
mise_à_jour_lot
qui met le
stock à jour après passage en caisse d'un lot.
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.