COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: Rappresentare i numeri 43 e 81 (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, ricavare il valore decimale del seguente numero in virgola mobile rappresentato secondo lo standard IEEE 754 a 32 bit: 0 10000001 10110000000000000000000 1
Esercizio 3: Scrivere la tabella di verità della seguente espressione booleana: (A and C) or (A and not(b)) or C Esercizio 4: Sapendo che certi dati da elaborare sono rappresentati attraverso un codice di parità pari a 9 bit, dire quali dei seguenti dati ha sicuramente subito un errore durante la sua trasmissione o memorizzazione: a) 100011000 b) 011111000 c) 111000001 d) 101111111 Commentare la risposta fornita. 2
Domanda aperta 1: Descrivere la gerarchia di memoria di un calcolatore moderno e i vantaggi che essa porta con sé. Domanda aperta 2: Con riferimento alle tecniche di compressione, si descriva cosa si intende per compressione lossy e compressione lossless, indicando possibilmente a quali tipi di dati si possono applicare. 3
Domanda sulla programmazione in C: Dato il seguente programma C, mostrarne l esecuzione passo-passo e indicare quale sarà il valore finale della variabile y stampato dal programma. #include <stdio.h> int mio_sottoprogramma(int n) int a; a = n - 2; return a; main() int i,j,y; int B[3][2]; y = 100; for (i=0; i<3; i++) for (j=0; j<2; j++) B[i][j] = mio_sottoprogramma(y); y = y 1; printf("il valore di y e' %d\n", y); system("pause"); 4
COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Esercizio 1 sulla programmazione in C: [5 punti] Scrivere un programma C che richiede all utente di inserire due sequenze di 5 numeri interi diversi all interno di ogni sequenza e compresi fra 1 e 99. Il programma memorizza tali numeri in due array di 5 elementi. Al termine dell acquisizione, il programma individua i numeri che compaiono solo in una delle due sequenze; stampa i numeri e stampa la loro somma. Esempio: Inserire la prima sequenza di 5 numeri interi: 1 27 10 3 41 Inserire la seconda sequenza di 5 numeri interi: 10 15 1 16 18 Stampa: I numeri che compaiono in una sola sequenza sono: 27 3 41 15 16 18 La somma è: 120 5
Esercizio 2 sulla programmazione in C: [6 punti] Scrivere un programma C che consenta di creare un array di 10 elementi, ciascuno contenente i dati relativi ai dati dei telefoni in dotazione alle segreterie dell Università, avente una struttura composta dai seguenti campi: numero, contenente il numero di telefono; tipo, contenente il tipo di telefono; cognome, contenente il cognome del dipendente associato al telefono; nome, contenente il nome del dipendente associato al telefono; costomensile, contenente il costo mensile della bolletta, dovuto all utilizzo del telefono; costoscontato, contenente il costo mensile della bolletta, scontato. Per ogni elemento dell array, il programma deve acquisire da tastiera: nel campo numero, il numero di telefono (es. 3285498765); nel campo tipo, il tipo di telefono (es. può contenere cellulare o fisso ); nel campo cognome, il cognome del dipendente associato al telefono (es. Rossi); nel campo nome, il nome del dipendente (es. Paolo); nel campo costomensile, il costo mensile della bolletta (es. 200). Il programma deve inoltre calcolare, per ogni telefono il costo scontato del 20% per i telefoni che hanno un costo mensile superiore ai 250 euro e assegnare tale valore al campo costoscontato del relativo elemento dell array. Il programma infine deve stampare (a video) i dati relativi a numero tipo costoscontato dei telefoni che hanno un costo mensile superiore a 250 e quindi hanno un costo scontato del 20%. 6