Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali,
Nucleare, Chimica, Ambiente e Territorio
Appello del 16-6-1997
PRIMA PARTE
Esercizio 1 (18 punti)
Le note musicali possono essere rappresentate mediante un array di sette componenti booleane, in cui la prima componente corrisponde al DO, la seconda al RE, e così via. Una nota X è perciò rappresentata da un array la cui componente corrispondente alla nota X ha valore TRUE e tutte le altre componenti hanno valore FALSE. Il bemolle di una nota X (X diverso da DO), corrispondente alla componente i-esima dell’array (i diverso da 1), si ottiene assegnando il valore TRUE anche alla componente (i-1)-esima. Il diesis di una nota X (X diverso da SI), corrispondente alla componente i-esima dell’array (i diverso da 7), si ottiene assegnando il valore TRUE anche alla componente (i+1)-esima. Un accordo elementare può quindi essere rappresentato da una nota, nella rappresentazione mediante array, e da un carattere: ‘+’ (per maggiore), ‘-’ (per minore). Infine, una armonia è una sequenza di accordi elementari.
Ad esempio, i seguenti array rappresentano le note accanto indicate:
1. Sulla base delle precedenti definizioni, fornire le opportune dichiarazioni dei tipi di dati Pascal per rappresentare le note, gli accordi e, mediante record e puntatori, le armonie.
2. Scrivere una funzione o procedura Pascal che, ricevendo come parametro di input una armonia rappresentata mediante record e puntatori, riconosca se nell’armonia è presente almeno un giro armonico del LA+ (cioè una sequenza costituita, nell’ordine, dai seguenti accordi elementari: LA+, FAdiesis -, SI-, MI+).
3. Scrivere una procedura che, ricevendo come parametro di input una armonia, vi aggiunga, dopo ogni DO+, un SOL+.

Fondamenti di Informatica
Aeronautica, Meccanica, Elettrica, Materiali,
Nucleare, Chimica, Ambiente e Territorio
Appello del 16-6-1997
SECONDA PARTE
Esercizio 2 (4 punti)
Descrivere, avvalendosi anche di esempi, la codifica binaria dell’informazione numerica, con particolare riferimento alla rappresentazione dei numeri reali in virgola fissa ed in virgola mobile.
Esercizio 3 (4 punti)
Scrivere un sottoprogramma Fortran che, ricevendo in ingresso una matrice quadrata di ordine N calcoli il prodotto della somma degli elementi della diagonale principale per la somma degli elementi della diagonale secondaria. Fornire le dichiarazioni da inserire nel programma principale.
Esercizio 4 (4 punti)
Che cosa stampa il seguente programma quando riceve in input le ultime tre cifre del numero di matricola del candidato? Motivare la risposta.
Si ricorda che il tipo BOOLEAN in Pascal è un tipo ordinale, con FALSE < TRUE.
Download testo in formato Word.