Esame di Fondamenti di Informatica II Secondo Modulo
A.A. 1999/00 - Esempio compito d'esame - prima parte
Problema 1 Sia GestoreProcessi un tipo astratto specificato come segue:
- TipoAstratto
GestoreProcessi
- Commento
- gestisce in una coda di priorità n processi numerati da 0 ad n-1
- Sorte
- GP (sorta per il dominio di interesse),
- Funzioni
-
- Crea
:
(Intero) ==> GP
precondizioni e postcondizioni per
Crea(n) = g
pre: n>0
post: g è il gestore di processi per n processi, con coda di priorità vuota
-
InCoda
:
(GP,Intero,Intero) ==> GP
precondizioni e postcondizioni per
InCoda(g,p,k) = g'
pre: p in { 0..n-1 } e p non è già in coda
post: g' è ottenuto da g inserendo il processo p in coda con priorità k
-
OutCoda
:
(GP,Intero) ==> GP
precondizioni e postcondizioni per
OutCoda(g,p) = g'
pre: p è in coda
post: g' è ottenuto da g eliminando il processo p dalla coda di priorità
-
Massimo
:
(GP) ==> Intero
precondizioni e postcondizioni per
Massimo(g)=p
pre:
g non è vuota
post: p è il processo con massima priorità (uno qualsiasi dei processi di massima priorità se più di uno)
-
AggiornaPriorita
:
(GP,Intero,Intero) ==> GP
precondizioni e postcondizioni per
AggiornaPriorita(g,p,k) = g'
pre: p è in coda
post: g' è ottenuto da g ponendo la priorità del processo p a k
-
CodaVuota
:
(GP) ==> Boolean
precondizioni e postcondizioni per
CodaVuota(g)=b
pre: nessuna
post: b=true se la coda di g è vuota, b=false altrimenti
-
- FineTipoAstratto
Domanda 1 Scrivere una classe C++ GestoreProcessi (file .h e file .cpp) che
realizzi il tipo astratto
GestoreProcessi, in modo da rendere tutte le operazioni del tipo astratto il più efficienti possibili. Qualora si faccia uso di strutture dati note (quali Heap, AlberiRicerca, TavoleHash) si riporti solo la definizione della classe (file .h) e il codice delle funzioni che sono state sostanzialmente modificate per adattare la struttura al caso sotto esame. Per le altre funzioni riportare solo una breve descrizione delle modifiche apportate.
Domanda 2 Calcolare per ogni funzione della classe GestoreProcessi il costo computazionale.