• Non ci sono risultati.

Prova scritta del 25 giugno 2018 di Fondamenti di Programmazione / Fondamenti di Informatica I

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova scritta del 25 giugno 2018 di Fondamenti di Programmazione / Fondamenti di Informatica I"

Copied!
1
0
0

Testo completo

(1)

Prova scritta del 25 giugno 2018 di Fondamenti di Programmazione / Fondamenti di Informatica I Per studenti di Ing. Elettronica e Ing. Gestionale immatricolati negli anni accademici 2016-17 e precedenti DURATA DELLA PROVA: 2 ore

A pena di annullamento immediato della prova:

1) Non è possibile consultare libri o appunti (in qualunque forma) né utilizzare calcolatrici, telefoni cellulari, ecc.

2) Non è consentito comunicare (con qualunque mezzo) 3) Non è consentito uscire dall’aula

Lo studente è tenuto a scrivere, correggere, compilare ed eseguire su computer (a casa o in laboratorio) gli esercizi di programmazione prima della prova orale. Alla prova orale lo studente deve portare una memory pen USB contenente i sorgenti dei programmi corretti e le stampe dei relativi file.

Esercizio 1 (16 punti)

Un’immagine in bianco e nero (letteralmente, senza livelli di grigio) può essere rappresentata da righe di valori binari dove 1 rappresenta un punto nero e zero un punto bianco. Per visualizzarla sul terminale si può utilizzare un asterisco per i punti neri e uno spazio per i punti bianchi.

Ai fini del presente esercizio si consideri un’immagine codificata mediante righe di numeri interi decimali, compresi tra 0 e 255, i cui valori letti in binario rappresentano, un byte alla volta, i punti bianchi e neri. I numeri sono separati da punto e virgola e ogni riga è terminata da un punto. Si consideri per esempio il file seguente:

file immagine.dat:

255; 255; 255; 255.

170; 0; 170; 1.

255; 0; 255; 0.

valori binari rappresentati:

11111111111111111111111111111111 10101010000000000101010100000001 11111111000000001111111100000000

immagine rappresentata:

********************************

* * * * * * * * *

******** ********

Non è nota la lunghezza delle righe, ma hanno tutte la stessa lunghezza e sono sempre terminate dal punto.

Si scriva un programma in linguaggio C che riceva sulla riga di comando un file nel formato sopra riportato e stampi sul monitor l’immagine rappresentata da tale file. Si veda anche l’esempio a lato.

Suggerimento: può essere utile convertire il numero decimale in una stringa che rappresenti i valori binari del byte corrispondente, in modo da semplificare il successivo processo di visualizzazione del disegno. Per effettuare questa conversione si può utilizzare il seguente algoritmo:

Converti da numero (un byte) a stringa i = 7;

while (i >= 0) {

stringa[i] = codice ASCII del resto della divisione intera del numero per due;

numero = numero diviso 2 (divisione con troncamento);

decrementa i;

}

Questo algoritmo riempie completamente la stringa, anche con gli eventuali zeri iniziali.

NOTA: non dimenticarsi di terminare la stringa con '\0'.

Esercizio 2 (14 punti)

L’orario delle lezioni di un corso universitario è rappresentato in un file il cui formato può essere dedotto dall’esempio a lato, dove:

• i nomi dei corsi sono privi di spazi;

• il numero che segue il nome del corso rappresenta il numero di lezioni elencate nel seguito della riga;

• ogni lezione è rappresentata dall’abbreviazione del giorno e dall’intervallo orario, senza spazi (le ore sono sempre numeri interi).

Il numero massimo di corsi è 20, le lezioni si svolgono dal lunedì al venerdì, in orario compreso tra le ore 8 e le 18.

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file siffatto e stampi le eventuali sovrapposizioni di lezioni.

Relativamente all’esempio sopra riportato il programma dovrà stampare:

sovrapposizione di Fisica con Fondamenti_di_programmazione (LU ore 10) sovrapposizione di Analisi_matematica con Fisica (GI ore 15)

sovrapposizione di Analisi_matematica con Fisica (GI ore 16)

Suggerimento: si rappresentino i corsi in un vettore di stringhe e l’orario settimanale mediante una matrice di interi, uno per ogni ora di ogni giorno, che corrispondono all’indice del nome del corso che viene erogato in tale ora.

file cosa_apparira.dat:

6; 3; 0.

9; 4; 128.

6; 3; 0.

0; 32; 0.

0; 32; 0.

16; 0; 64.

6; 3; 0.

0; 248.

# decodifica cosa_apparira.dat ** **

* * * * ** **

* *

* * ** **

*****

Fondamenti_di_programmazione 3 LU 8-11 ME 10-12 VE 8-12 Fisica 2 LU 10-12 GI 15-18

Analisi_matematica 2 GI 14-17 VE 13-15

Riferimenti

Documenti correlati

Si scriva un programma in linguaggio C che riceva sulla linea di comando il nome di un file contenente le giocate come sopra descritto e stampi il punteggio dei due

Per fare questo, si vuole aggiungere al testo originale l’elenco dei sinonimi di ogni parola presente nel dizionario dei sinonimi sopra descritto, accodandoli

"Avatar": Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang, Michelle Rodriguez. "Everest": Josh Brolin, Jason Clarke, John Hawkes, Robin Wright,

Si scriva un programma che riceva sulla riga di comando il nome di un file siffatto e una destinazione e stampi i codici di tutti i treni che raggiungono tale destinazione in

Si scriva un programma in linguaggio C che riceva come argomenti sulla riga di comando il nome della località e una data e chiami la funzione descritta nell’esercizio

Successivamente, per ogni cifra del tentativo non ancora utilizzata si cerca lo stesso valore tra le cifre non ancora utilizzate del numero segreto e, se lo si trova,

Ogni elemento della matrice descrive una porzione quadrata di superficie (pari ad un numero di metri quadrati scritto nell’intestazione del file) mediante due

Domanda 1: Indicare che cosa viene visualizzato sullo schermo dall’esecuzione della seguente