Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali, Nucleare,
Chimica, Ambiente e Territorio
Appello del 26 gennaio 1998
Esercizio 1 (18 punti)

Nel file 'SEGMENTI.DAT' sono memorizzate alcune coppie di punti di un piano cartesiano. In particolare, ogni punto è descritto da una coppia di numeri interi positivi ed ogni record del file contiene due coppie corrispondenti ad altrettanti punti. Pertanto ogni record del file rappresenta un segmento sul piano cartesiano. Si vogliono estrarre dal file, e memorizzare in una lista, rappresentata mediante record e puntatori, tutti e soli i segmenti che non sono paralleli né all'asse delle ascisse né all'asse delle ordinate.

1. Fornire le opportune dichiarazioni dei tipi di dati per rappresentare il file e la lista.

2. Scrivere una procedura o finzione che legga il file e restituisca la lista costituita da tutti i segmenti che non sono paralleli né all'asse delle ascisse né all'asse delle ordinate.

3. Scrivere una procedura o funzione che, ricevendo come parametro di input la lista dei segmenti costruita come al punto precedente, fornisca la misura e le coordinate dei punti estremi del segmento più lungo.

Si ricorda che se gli estremi del segmento sono i punti di coordinate
la lunghezza del segmento è pari a
Ad esempio, se il file 'SEGMENTI.DAT' è costituito dai seguenti record che rappresentano quattro segmenti:

poiché il primo ed il secondo record rappresentano segmenti paralleli, rispettivamente, all'asse delle ascisse ed a quello delle ordinate, nella lista di cui al punto 2) saranno inseriti soltanto i seguenti record:

Il segmento più lungo tra quelli presenti nella lista ha coordinate (2,1), (6,4) e lunghezza 5.
 
 
 
 

Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali, Nucleare,
Chimica, Ambiente e Territorio
Appello del 26 gennaio 1998
Esercizio 2 (4 punti)
Descrivere le caratteristiche dei sistemi operativi ed illustrare le modalità di gestione dei processi.

Esercizio 3 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo in ingresso due matrici quadrate di ordine N di interi, verifichi che l'una sia la trasposta dell'altra.
Fomire le dichiarazioni da inserire nel programma principale.

Esercizio 4 (4 punti)
Siano date le seguenti dichiarazioni di dato e di procedura:

type vett=array[1..3] of char;

procedure P(V:vett; I:integer);
begin
    if I<>3 then P(V, I+1);
    write(V[I])
end;

Sia V il seguente array:     [R  L  M]

Il candidato indichi e motivi l'effetto di ciascuno dei seguenti frammenti di programma:

1)
        I:=1;
        P(V,I);

2)
        I:=3;
        P(V,I);
3)
        I:=1;
        while I<>3 do begin
                        P(V,I);
                        I:=I+1
                      end;