COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: Rappresentare i numeri 37 e 90 (in base 10) in notazione binaria in complemento a due con 8 bit. Eseguire la somma algebrica dei numeri così ottenuti e commentare il risultato dicendo se si è verificato o meno un overflow. Esercizio 2: Mostrando i passaggi fondamentali (che devono includere la scomposizione del numero in forma normalizzata e il calcolo dell esponente) rappresentare il numero decimale 11.25 secondo lo standard IEEE 754 a 32 bit. 1
Esercizio 3: Dimostrare tramite una tabella di verità la seguente equivalenza fra espressioni booleane A or (A and B or B) = A or B Esercizio 4: Si consideri il seguente codice per codificare i simboli A, B e C con 5 bit: A à 01000 B à 11111 C à 10000 a) Quanti errori è in grado di rilevare il codice in generale? E quanti è in grado di correggere? b) Si supponga di ricevere la sequenza 00111. Assumendo che siano stati commessi al più 2 errori, è possibile decodificare con sicurezza il simbolo trasmesso? Giustificare la risposta, anche in relazione ai risultati del punto (a). 2
Domanda 1: Si descrivano i componenti della CPU (Central Processing Unit) e le rispettive funzioni. Domanda 2: Descrivere le due modalità per il passaggio dei parametri alle procedure, nell ambito dei linguaggi di programmazione che rispettano il paradigma imperativo. 3
Esercizio sulla comprensione del linguaggio C: Dato il seguente frammento di programma C int b; int i, j; int V[10][2]; main() { b = 2; for(i = 0; i < 10; i++) { for(j = 0; j < 2; j++) { V[i][j] = b; b = b + 2; } } } a) scrivere lo schema a blocchi corrispondente; b) mostrare i valori finali di tutti gli elementi della matrice V. 4
COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Esercizio 1 sulla programmazione in C: [5 punti] Scrivere un programma C che: 1) richiede all'utente di inserire una successione di 4 numeri interi diversi di cui due pari e due dispari; in caso di inserimento di numeri uguali o di inserimento di un numero dispari quando richiesto un numero pari o viceversa, il programma deve segnalare l errore e permettere l inserimento di un valore corretto; 2) calcola la somma dei valori pari inseriti; 3) calcola la somma dei valori dispari inseriti; 4) stampa (a video) la somma maggiore. Esempio: Inserire 2 numeri pari diversi: 6 24 Inserire 2 numeri dispari diversi: 3 33 Stampa (se esiste come nell esempio): la somma maggiore è: 36 Stampa (se le somme sono uguali): la due somme sono uguali 5
Esercizio 2 sulla programmazione in C: [6 punti] Scrivere un programma C che consenta di creare un array di 10 elementi, ciascuno dei quali contenente i dati relativi ad un prestito bibliotecario, avente una struttura composta dai seguenti campi: codicelibro, contenente il codice del libro; titolo, contenente il titolo del libro; autore, contenente l autore del libro; datariconsegna, contenente la data di riconsegna (come stringa aaaammgg ); codiceutente, contenente il codice dell utente che ha richiesto il libro (es. A321). Il programma deve poi stampare (a video) il seguente menù: [1] Inserimento prestiti [2] Ricerca prestito [3] Stampa prestito [0] Esci All inserimento del valore 1 da tastiera, da parte dell utente, il programma principale richiama una funzione denominata inserimentoprestiti che, per ogni elemento dell array, acquisisce da tastiera: nel campo codicelibro, il codice del libro; nel campo titolo, il titolo del libro; nel campo autore, l autore del libro; nel campo datariconsegna, la data di riconsegna (come stringa aaaammgg ); nel campo codiceutente, il codice dell utente che ha richeisto il libro (es. A321). Terminato l inserimento dei valori per tutti i 10 elementi dell array, il programma deve nuovamente visualizzare il menù iniziale. All inserimento del valore 2 da tastiera, da parte dell utente, il programma deve stampare (a video) il messaggio Funzione al momento non disponibile e poi stampare (a video) nuovamente il menù iniziale. All inserimento del valore 3 da tastiera, da parte dell utente, il programma principale richiama una funzione denominata stampaprestito che deve stampare (a video) il messaggio Funzione al momento non disponibile e poi stampare (a video) nuovamente il menù iniziale. All inserimento del valore 0 da tastiera, da parte dell utente, il programma principale termina il suo funzionamento. All inserimento di un qualsiasi altro valore da tastiera, da parte dell utente, il programma deve stampare (a video) il messaggio Valore errato: i valori consentiti sono 1, 2, 3 o 0 e successivamente stampare (a video) nuovamente il menù iniziale. La funzione inserimentoprestiti deve essere dichiarata nel seguente modo: void inserimentoprestiti() poiché non restituisce valori e non ha parametri formali in ingresso. 6