Anteprima
Vedrai una selezione di 3 pagine su 9
Prova d'esame Informatica svolta Pag. 1 Prova d'esame Informatica svolta Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Prova d'esame Informatica svolta Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Corso di Laurea in Ingegneria Gestionale

Prof. Florian Daniel

Prof. Alessandro Margara

Prof. Gerardo Pelosio

Informatica A – a.a. 2016/2017 – 2 Appello – 30/06/2017

Cognome ____________________________ Matricola o Cod. Persona _______________

Nome _______________________________ Firma ________________________

Istruzioni

  • Non separate questi fogli. Scrivete la soluzione solo sui fogli distribuiti, utilizzando il retro delle pagine in caso di necessità. Cancellate le parti di brutta (o ripudiate) con un tratto di penna.
  • Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.
  • È possibile scrivere a matita e non occorre ricalcare al momento della consegna.
  • È vietato utilizzare calcolatrici e qualunque dispositivo elettronico. Chi tenti di farlo vedrà annullata la sua prova.
  • È ammessa la consultazione di libri e appunti, purché con pacata discrezione e senza disturbare.

Qualsiasi tentativo di comunicare con altri studenti comporta l'espulsione dall'aula.

  • Non è possibile lasciare l'aula conservando il tema della prova in corso.
  • È possibile ritirarsi senza penalità.
  • Tempo a disposizione: 2h 30m

Valore indicativo degli esercizi, voti parziali e voto finale:

Esercizio 1 (3 punti) ____________

Esercizio 2 (6 punti) ____________

Esercizio 3 (16 punti) ____________

Esercizio 4 (8 punti) ____________

Totale (33 punti) ____________

Voto finale __________

Esercizio 1 - Algebra di Boole e Codifica delle Informazioni (3 punti)

Si costruisca la tabella di verità della seguente espressione booleana (1 punto)

(a) not (A and B) or C and (C or not(B and A))

(A · B) + C · (C + (B · A))

con altra notazione

Soluzione not ( A and B) or C and ( C or not ( B and A ))

1 0 0 0 1 0 0 0 1 1 0 0 0

1 0 0 0 1 1 1 1 1 1 0 0 0

1 0 0 1 1 0 0 0 1 1 1 0 0

1 0 0 1 1 1 1 1 1 1 1 0 0

1 1 0 0 1 0 0 0 1 1 0 0 1

1 1 0 0 1 1 1 1 1 1 0 0 1

è lo stesso e il risultato è corretto. A-B (2) 0010100 c2 Si genera riporto oltre la posizione del bit più significativo. Non si verifica overflow: il segno degli addendi è lo stesso e il risultato è corretto.
è discorde.= =A+B 55 + (-37) 18 che è compreso nell’intervallo I .dec dec dec n=A 20 = 0110111hex c2= =-B not(1011011 )+1 0100101c2 c2=A+(-B) 1011100 c2Non si genera riporto oltre la posizione del bit più significativo.Si verifica overflow: addendi positivi con risultato negativo; il risultato eccede il potere dirappresentazione di 7 bit.= =A-B 55 - (-37) 92dec dec dec Se si continua sul retro di qualche foglio, indicare qualeInformatica A – a.a. 2016/2017 – 2o Appello – 30/06/2017 Esercizio n. 1 -- foglio 2 di 9Esercizio 2 – Analisi del codice (6 punti)#include <stdio.h> int main() {#include <stdlib.h>#include <string.h> char word[] = "MinMax";int len = strlen(word);int go (char *a, char *b) {char *temp = b; char *res = (char*) malloc (if (*a < 'a') { sizeof(char)*len + 1);*b++ = *a;*a = '_'; for (int i=0; i<len; i++)} *(res + i) = '\0';a++; int n = go (word, res);if (*a
== '\0')return 0; printf("%s %s %d\n", word, res, n);return count(b,temp) + go(a,b);} return 0;}int count (char *a, char *b) {return a-b;}(a) Si disegnino lo stack dei "record di attivazione" e la memoria allocata dal programma nello heapnell'istante precedente al momento in cui la funzione esegue l'istruzione indicata dallareturn 0g()freccia. Si rappresentino tutte le variabili adottando le solite convenzioni (vettori: blocchi contigui;puntatori: frecce; valori indefiniti: punti interrogativi). Si ricorda che nella codifica ASCII dei caratteri icatteri maiuscoli corrispondono ai numeri decimali 65-90 e quelli minuscoli ai numeri decimali 97-122.Soluzione a b tempgo(...) a b tempgo(...) a b tempgo(...) a b tempgo(...) a b tempgo(...) a b tempgo(...) word _ i n _ a x \0res M M \0 \0 \0 \0 \0main() x 0 Se si continua sul retro di qualche foglio, indicare qualeInformatica A – a.a. 2016/2017 – 2o Appello – 30/06/2017 Esercizio n.

2 -- foglio 3 di 9(b) Si mostri la linea stampata a video dal programma.

Soluzione

Il programma stampa a video due stringhe e un valore intero:

_in_ax MM 2

Il primo valore di tipo stringa è quello della variabile automatica ] dichiarata e inizializzata nel word[cui le lettere maiuscole sono state sostituite con il carattere main()in '_'; resil secondo valore di tipo stringa è quello della variabile dinamica indirizzata dalla variabile puntatore ed è uguale alla sequenza di lettere maiuscole estratte ordinatamente da sinistra a destra dalla variabile word[]; il valore di tipo intero è uguale al numero di lettere maiuscole trovate.

Se si continua sul retro di qualche foglio, indicare quale

Informatica A – a.a. 2016/2017 – 2o Appello – 30/06/2017 Esercizio n. 2 -- foglio 4 di 9

Esercizio 3 – Sintesi del codice (16 punti)

Si consideri un programma per la gestione delle aule in un'università.

L'occupazione delle aule


<html>
<head>
<title>Esercizio Aule Libere</title>
</head>
<body>
<h1>Esercizio Aule Libere</h1>
<p>
La disponibilità delle aule è modellizzata come il numero di persone presenti nella stanza a una certa ora.
Si suppone che ci siano in tutto 20 aule (numerate da 0 a 19) e che ciascuna di esse sia disponibile a tutte le
ore del giorno (anch'esse numerate da 0 a 23).
</p>
<p>
(a) Date le seguenti macro e la definizione di tipo NUM_AULE, NUM_ORE, occupazione_aule:
</p>
<pre>
<code>
#define NUM_AULE 20
#define NUM_ORE 24
typedef unsigned int occupazione_aule[NUM_AULE][NUM_ORE];
</code>
</pre>
<p>
scrivere in C la funzione aule_libere(occupazione_aule occ, unsigned int ora) che calcola il numero di aule libere
(cioè quelle con occupazione pari a zero) a una determinata ora a partire dalla matrice di occupazione delle aule,
occ, e dall'ora, ora, passati come parametri.
</p>
<p>
N.B.: dalla definizione del "tipo di dato" sopra riportata, si evince che nel referenziare le celle della matrice il
numero di riga identificherà un'aula, mentre il numero di colonna identificherà un'ora del giorno.
</p>
</body>
</html>

punti)Soluzione:int aule_libere(occupazione_aule occ, int ora) {int i, libere = 0;for (i = 0; i < NUM_AULE; i++) {if (occ[i][ora] == 0) {libere++;}}return libere;}

Se si continua sul retro di qualche foglio, indicare qualeInformatica A – a.a. 2016/2017 – 2o Appello – 30/06/2017 Esercizio n. 3 -- foglio 5 di 9

(b) Scrivere in C la funzioneunsigned int aula_piu_affollata(occupazione_aule occ);che calcola l’aula più affollata, cioé l’aula con il più alto numero medio di persone per ora. (4 punti)

Soluzione:unsigned int aula_piu_affollata(occupazione_aule occ) {int i, j, somma, risultato = 0;float numeroMedioPersonePerOra, maxMedia = 0.0;for (i = 0; i < NUM_AULE; i++) {somma = 0;for (j = 0; j < NUM_ORE; j++) {somma += occ[i][j]; // calcolo num. totale di persone nell’aula i}numeroMedioPersonePerOra = ((float) somma) / NUM_ORE;if (numeroMedioPersonePerOra > maxMedia) {maxMedia = numeroMedioPersonePerOra;risultato =

i;}}return risultato;} Se si continua sul retro di qualche foglio, indicare quale
Informatica A – a.a. 2016/2017 – 2o Appello – 30/06/2017 Esercizio n. 3 -- foglio 6 di 9
Dettagli
Publisher
A.A. 2019-2020
9 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher osokriky di informazioni apprese con la frequenza delle lezioni di fondamenti di informatica e programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Daniel Florian.