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.
- program cosa_stampa;
- var b:boolean;
- ......c,d,n:integer;
- function f(a:integer):integer;
- begin
- ...readln(a);
- ...f:=(a*n) mod 2
- end;
- begin
- ...readln(n);
- ...c:=f(n);
- ...d:=f(n);
- ...for b:=((n*c)=n) to ((n*d)<>n)
do writeln(n)
- end.
Si ricorda che il tipo BOOLEAN in Pascal è un tipo ordinale,
con FALSE < TRUE.
Download testo in formato Word.