Sei sulla pagina 1di 1

Canale 2

Compito di Fondamenti di Informatica


07 febbraio 2015

1. [3 punti] Eseguire le seguenti conversioni, indicando sempre i passaggi intermedi.

(a) Convertire in notazione complemento a due su 8 bit i seguenti numeri in base dieci: +127; −97.
(b) Convertire il numero frazionario −2 85 nella rappresentazione in virgola mobile (floating point) ad
8 bit studiata nel corso.

2. [3 punti] Con riferimento al sistema operativo di un moderno computer, definire la nozione di


processo. Descrivere la tecnica denominata commutazione di processo e la nozione di time slice.

3. [4 punti] Descrivere in italiano e senza riportare il codice sorgente l’algoritmo denominato selection
sort. Qual’è il tempo di esecuzione di questo algoritmo nel caso peggiore, in notazione O-grande ed in
dipendenza della dimensione dell’array in ingresso? Motivare la risposta.

4. [5 punti] Implementare un metodo public static int[] split(int[] unArray){...} che resti-
tuisce un array ottenuto spostando a sinistra tutti i numeri pari presenti in unArray, e spostando a
destra tutti i numeri dispari, mantenendo l’ordine relativo degli elementi. Ad esempio, assegnato l’array
[4, 13, 18, 7, 5, 8] il metodo dovrà restituire l’array [4, 18, 8, 13, 7, 5], dove l’ordine rel-
ativo degli elementi è rimasto invariato.

5. [18 punti] Una agenzia turistica desidera gestire elettronicamente i propri viaggi organizzati. As-
sumere la classe Viaggio avente la variabile d’istanza città (String), e la classe Pullman, avente le
tre variabili d’istanza numPersone (int), maxPersone (int) e unViaggio (riferimento a Viaggio). As-
sumere per tali classi gli usuali metodi di costruzione, accesso e modifica senza sviluppare il codice
relativo. La classe AgenziaTuristica è cosı̀ definita:

public class AgenziaTuristica {


private final int MAX_PERSONE = 45;
private ArrayList<Viaggio> viaggi;
private ArrayList<Pullman> mezzi;
public AgenziaTuristica(){...};
public void aggiungiViaggio(String unaCitta){...};
public ArrayList<Pullman> CercaPullmanViaggio(String unaCitta){...};
public Pullman CercaPullmanNonPieno(String unaCitta){...};
public void prenotaViaggio(String unaCitta, int unNumPersone){...};
public void partenza(String unaCitta){...};
public Viaggio statistica(){...};
};

Non possono esistere nel sistema più viaggi aventi la stessa città. Ciascun oggetto Pullman deve sempre
avere un riferimento al viaggio per cui è stato prenotato, e deve trasportare un numero di persone non
superiore a MAX PERSONE. L’idea della classe AgenziaTuristica è di iscrivere persone ad un viaggio
occupando tutti i posti liberi disponibili prima di prenotare un nuovo pullman.
Il metodo aggiungiViaggio inserisce un nuovo viaggio nel sistema, e crea un nuovo pullman con zero
persone e numero massimo di persone MAX PERSONE. Il metodo CercaPullmanViaggio restituisce una
lista con tutti i pullman associati al viaggio specificato dal parametro. Il metodo CercaPullmanNonPieno
considera tutti i pullman associati al viaggio specificato, e restituisce quello che non ha ancora rag-
giunto il numero massimo di persone MAX PERSONE (restituire null se tutti i pullman sono pieni). Il
metodo prenotaViaggio iscrive un numero di persone al viaggio specificato dal parametro; rifiutare
iscrizioni per un numero di persone superiore a MAX PERSONE. Le persone iscritte devono essere inserite
nel pullman associato al viaggio che ha ancora posti liberi; se tale pullman non ha un numero suffi-
ciente di posti liberi, aggiungere un nuovo pullman al sistema, avente il numero massimo di persone
MAX PERSONE, e contenente le persone in eccedenza. Il metodo partenza rimuove dal sistema il viaggio
specificato dal parametro, assieme a tutti i pullman ad esso associati. Infine, il metodo statistica
restituisce il viaggio con maggior numero di persone iscritte; risolvere arbitrariamente i casi di parità.

Potrebbero piacerti anche