Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali, Nucleare,
Chimica, Ambiente e Territorio (vecchio programma)
Appello del 15-2-1999

Esercizio 1 (18 punti)

Il ricevimento clienti di un albergo e' gestito in modo da memorizzare le prenotazioni in un file di record, PRENOT.DAT, in cui ogni record contiene le seguenti informazioni: codice della prenotazione, cognome e nome del cliente, tipo di camera (S o D), tipo di trattamento (P, M, o C), tariffa giornaliera, data di arrivo, data di partenza. Quando il cliente arriva in albergo tutte le informazioni relative alla sua prenotazione contenute nel file PRENOT.DAT vengono riportate in un nuovo record aggiunto ad una lista PRES, realizzata con record e puntatori. Quando il cliente parte il suo record viene eliminato dalla lista PRES, le informazioni in esso contenute vengono inserite in un nuovo record nel file ARCHIVIO.DAT (i record di ARCHIVIO.DAT hanno la stessa struttura di quelli di PRENOT.DAT).

1. Scrivere le dichiarazioni di tipo necessarie per i sottoprogrammi 2 e 3 seguenti.

2. Scrivere una procedura o funzione Pascal che, ricevendo in ingresso la data corrente (nel formato giorno, mese, anno), il file PRENOT.DAT, e la lista PRES, stampi le informazioni relative ai clienti previsti e non arrivati (cioe' quelli la cui prenotazione e' presente nel file PRENOT.DAT con data di arrivo = data odierna e che non sono nella lista PRES).

3. Scrivere una procedura o funzione Pascal che, ricevendo in ingresso il file ARCHIVIO.DAT e la lista PRES, crei una nuova lista VIP, contenente i nominativi dei clienti al momento presenti in albergo (e cioe' contenuti nella lista PRES) che hanno soggiornato in albergo per tre o piu' volte. N.B.: 1) ogni cliente deve comparire soltanto una volta nella lista VIP; 2) ogni record della lista VIP contiene le seguenti informazioni: nome e cognome del cliente, numero di volte che ha soggiornato nell'albergo (inclusa quella in corso).
 

Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali, Nucleare,
Chimica, Ambiente e Territorio
Appello del 15-2-1999
Esercizio 2 (4 punti)
Illustrare le principali metodologie di progetto dei programmi.

Esercizio 3 (4 punti)
Scrivere un sottoprogramma Fortran che ricevendo in ingresso una matrice A(n¥n) ad elementi interi, costruisca la matrice trasposta (cioe' la matrice che si ottiene scambiando le righe con le colonne).

Esercizio 4 (4 punti)
Dato il seguente programma Pascal, dire cosa stampa se viene eseguito con le ultime due cifre del proprio numero di matricola come dati di ingresso. Motivare la risposta.

program Prova;
type
punt = ^rec;
rec = record
info: integer;
next: punt
end;
var
p, app: punt;
i, k: integer;
procedure Costruisci (var q: punt; k: integer);
begin
if k <> 0 then
begin
new(q);
q^.info := k;
q^.next := nil;
Costruisci(q^.next, k - 1)
end
end;
procedure Pippo (l: punt);
var
q: punt;
begin
q := l;
while q <> nil do
begin
q^.info := q^.info + i;
i := i + 1;
q := q^.next
end;
l^.next^.next := q;
l := nil
end;

begin
writeln('inserisci un numero di due cifre');
read(k);
Costruisci(p, k);
i := 2;
Pippo(p);
app := p;
while app <> nil do
begin
write(app^.info);
app := app^.next
end; readln; end.
 

Download testo in formato Word.