Programmazione I / Informatica generale Prova scritta 11 Giugno 2008



Documenti analoghi
Programmazione I Prova scritta - 10 gennaio h20min

Programmazione I Prova scritta - 18 febbraio h20min

Allocazione dinamica della memoria - riepilogo

Funzioni in C. Violetta Lonati

costruttori e distruttori

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Codifica: dal diagramma a blocchi al linguaggio C++

Le stringhe. Le stringhe

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Liberare la memoria allocata dinamicamente.

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Corso di Fondamenti di Informatica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Laboratorio di programmazione

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Inizializzazione, Assegnamento e Distruzione di Classi

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Prova Scritta del 19/07/10

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Introduzione al linguaggio C Gli array

Esame del 3 febbraio 2010

Concetto di Funzione e Procedura METODI in Java

I puntatori e l allocazione dinamica di memoria

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

INFORMATICA - I puntatori Roberta Gerboni

puntatori Lab. Calc. AA 2007/08 1

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Grammatica di base: Pointers

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Elementi di Architettura e Sistemi Operativi

Lab 11 Gestione file di testo"

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

La selezione binaria

Corso di Informatica

Introduzione alla programmazione in C

Sottoprogrammi: astrazione procedurale

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 13 Settembre COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio

INFORMATICA 1 L. Mezzalira

Arduino: Programmazione

Algoritmi di Ricerca. Esempi di programmi Java

Esempio: Array di struct

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Le variabili. Olga Scotti

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Laboratorio di Programmazione Gruppo III, Ml-ZZ. Alberto Finzi

GESTIONE INFORMATICA DEI DATI AZIENDALI


Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

RICERCA DI UN ELEMENTO

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Linguaggio C - Stringhe

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Breve riepilogo della puntata precedente:

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Fondamenti di Informatica 2

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

3. La sintassi di Java

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Compito di Fondamenti di Informatica

Programmazione in Java Parte I: Fondamenti

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

La struttura dati ad albero binario

FONDAMENTI di INFORMATICA L. Mezzalira

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Matematica in laboratorio

Corso di Laurea in Matematica

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Introduzione al Linguaggio C

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Utilizzo e scrittura di classi

Record in C: il costruttore struct.

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Appello di Informatica B

Visibilità dei Membri di una Classe

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Esercizio 1. Esercizio 2

Gestione dei File in C

Calcolare il massimo di una lista

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Lab 04 Istruzioni, cicli e array"

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

Testi di Esercizi e Quesiti 1

Politecnico di Torino

Gestione della memoria centrale

10 - Programmare con gli Array

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Esercizi su. Funzioni

Transcript:

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere la presenza delle direttive #include <iostream> #include <fstream> using namespace std ; Infine, quando si afferma che un programma o frammento di codice fornisce un certo risultato, è da intendersi che, in accordo alle regole del linguaggio, tale programma o frammento di codice fornisce quel risultato per qualsiasi esecuzione su qualsiasi macchina. PARTE 1 RISPOSTA SINGOLA - Ogni domanda ha una sola risposta VERA. Una risposta esatta fa acquisire il punteggio positivo riportato a fianco della domanda Una risposta errata fa perdere il punteggio negativo riportato a fianco della domanda Una risposta lasciata in bianco viene calcolata: 0 1. (3, -0.5) Dato il seguente programma: for (unsigned int i = 5 ; i >= 0 ; i--) cout<<i<<endl ; a) Esegue un ciclo infinito b) Stampa i numeri da 5 a 0 c) Stampa i numeri da 5 a 1 d) Nessuna delle altre risposte è corretta 2. (3, -0.5) Data la seguente funzione e supponendo che: 1) l'array a abbia dimensione maggiore o uguale di num_elem+1, sia correttamente allocato in memoria e sia utilizzato per rappresentare un vettore di num_elem interi nel momento in cui la funzione viene chiamata, 2) il valore di pos sia compreso tra 0 e num_elem-1, la funzione void fun(int a[], int &num_elem, const int pos, const int v) for (int i = num_elem ; i >= pos ; i--) a[i+1] = a[i] ; a[pos] = v ; num_elem++ ; a) inserisce correttamente il valore v nella posizione pos nel vettore rappresentato mediante l'array a b) sovrascrive tutti gli elementi di indice compreso tra pos e num_elem con il valore v c) contiene un errore di gestione della memoria d) nessuna delle altre risposte è vera

3. (4 pt, -0.5) Dato il seguente programma: int *a, num_elem ; void distruggi() delete [] a; num_elem = 0 ; void inserisci(int n) a[num_elem] = n ; num_elem++ ; void stampa() for (int i = 0 ; i < num_elem ; i++) cout<<a[i]<<" " ; a = new int[10] ; inserisci(1) ; stampa() ; distruggi() ; int *b = new int[5] ; b[0] = 3 ; inserisci(4) ; stampa() ; cout<<b[0]<<endl ; a) il programma stampa 1 4 3 b) nessuna delle altre risposte è vera c) il programma contiene un errore di memory leak d) il programma contiene un errore di gestione della memoria diverso dal memory leak 4. (3, -0.5) Dato il seguente programma: struct ts char s[10] ; int n ; ; ts a ; strcpy(a.s, "prova") ; // memorizzazione della stringa "prova" nel // campo a.s a.n = 10 ; ts b ; b = a ; cout<<b.s<<" "<<b.n ; a) l'istruzione di assegnamento b=a ; da luogo ad un errore a tempo di compilazione b) il programma contiene un errore di gestione della memoria c) il programma stampa prova 10 d) nessuna delle altre risposte è vera 5. (3, -0.5) Dato il seguente programma: int i = 10 ; char s[10] ; cin>>i ; cin>>s ; cout<<i<<" "<<s<<endl ; a) se l'utente inserisce da stdin 2 prova (c'è uno spazio tra il carattere 2 e la stringa prova) e poi preme INVIO, il programma stampa 2 prova b) se l'utente inserisce da stdin 2 prova (c'è uno spazio tra il carattere 2 e la stringa prova) e poi preme INVIO, il programma memorizza il valore 2 nella variabile i, e poi si blocca sull'istruzione cin>>s ; finché l'utente non inserisce dei nuovi caratteri e preme INVIO c) se l'utente inserisce da stdin 2 prova (c'è uno spazio tra il carattere 2 e la stringa prova) e poi preme INVIO, il cin va in stato di errore sull'istruzione cin>>i ; d) nessuna delle altre risposte è corretta

PARTE 2 (POSSIBILI) RISPOSTE MULTIPLE - Ogni domanda può avere una o più risposte CORRETTE. Ogni risposta esatta viene calcolata: +1 Ogni risposta errata viene calcolata: -0.5 Una risposta lasciata in bianco viene calcolata: 0 6. Dato il seguente programma: int i, a[3] = 0, 1, 0 ; cin>>i ; if (a[i]!= 0 && (i >= 0 && i < 3)) a[i] = 10 ; cout<<a[i] ; a) Se l'utente immette 1 su stdin il programma stampa 10 b) Il programma contiene un errore logico c) Il programma contiene un errore di accesso alla memoria d) Se l'utente immette 0 su stdin il programma stampa 0 7. Dato il seguente programma: void inizializza(int a[][3], int N) for(int i = 0 ; i < N ; i++) for(int j = 0 ; j < 3 ; j++) a[i][j] = 1 ; int c[2][3] ; inizializza(c, 2) ; // seguono istruzioni per la stampa della matrice... a) La matrice c è vuota, ossia i suoi elementi non hanno nessun valore, quando viene passata alla funzione inizializza, che poi provvederà a dare un valore a ciascun elemento b)in quanto all'accesso agli elementi della matrice a all'interno della funzione inizializza, conoscere il numero di colonne della matrice serve solo per evitare accessi fuori dalla matrice stessa c) In quanto all'accesso agli elementi della matrice a all'interno della funzione inizializza, conoscere il numero di righe della matrice serve solo per evitare accessi fuori dalla matrice stessa d)dopo l'invocazione della funzione inizializza, tutti gli elementi della matrice c contengono il valore 1

8. Dato il seguente programma: void scrivi(ofstream &f) f<<"prova" ; f.close() ; ofstream of("dati.txt") ; scrivi(of) ; ifstream is("dati.txt") ; char buf[256] ; is>>buf ; cout<<buf ; a) il programma stampa prova su stdout b)quando si riapre il file dati.txt in lettura all'interno della funzione main non è garantito che il suo contenuto sia stato aggiornato c) quando si riapre il file dati.txt in lettura, quest'ultimo contiene una sequenza di byte, ciascuno dei quali contiene a sua volta il codice di uno dei caratteri precedentemente scritti nel file stesso mediante la funzione scrivi d)anche se il parametro formale f della funzione scrivi muore in uscita dalla funzione stessa, l'invocazione della funzione f.close() nella funzione scrivi è comunque necessaria per provocare l'aggiornamento del file dati.txt PARTE 3 DOMANDE APERTE Una risposta esatta fa acquisire il punteggio positivo riportato a fianco della domanda Una risposta errata causa una penalità che dipende dalla gravità dell errore, ed al più uguale al punteggio negativo riportato a fianco della domanda Una risposta lasciata in bianco viene calcolata: 0 9. (4 pt.) Cosa scrive su stdout il seguente programma? void fun(char s[], int n, char c) for (int i = 0 ; s[i]!= '\0' ; i++) if (s[i] == c) if(s[i+1]!= '\0') s[i+1] = s[i]; else if (i!= 0) s[i] = s[i+1] ; char string[] = "ikea"; cout<<string<<endl ; fun(string, strlen(string), 'e'); cout<<string;

10. (5 pt.) Scrivere il corpo della seguente funzione int *fun(int a[], int N, int v) ; in cui il parametro N è assunto contenere il numero di elementi dell'array a, e che ritorna un array dinamico, anch'esso di dimensione N, contenente tutti gli elementi dell'array a di valore minore o uguale a v, seguiti da tutti gli elementi dell'array a di valore maggiore di v.

Programmazione I / Informatica generale Prova scritta - 11 Giugno 2008 Nome: Cognome: Matricola: Corso di Laurea: Indicare le risposte corrette apponendo una croce nella casella corrispondente. Per superare la prova bisogna aver raggiunto almeno 10 punti nelle domande a risposta singola/multipla, ed almeno 15 complessivamente. Avete due copie di questa pagina, usatene una per calcolare il voto da sole/soli durante la correzione e decidere se consegnare. Risposte Punti/ A B C D Penalità 1 3-0.5 2 3-0.5 3 4-0.5 4 3-0.5 5 3-0.5 6 7 8 Risposta alla domanda 9 (4 pt): Risposta alla domanda 10 (5 pt):

Programmazione I / Informatica generale Prova scritta - 11 Giugno 2008 Nome: Cognome: Matricola: Corso di Laurea: Indicare le risposte corrette apponendo una croce nella casella corrispondente. Per superare la prova bisogna aver raggiunto almeno 10 punti nelle domande a risposta singola/multipla, ed almeno 15 complessivamente. Avete due copie di questa pagina, usatene una per calcolare il voto da sole/soli durante la correzione e decidere se consegnare. Risposte Punti/ A B C D Penalità 1 3-0.5 2 3-0.5 3 4-0.5 4 3-0.5 5 3-0.5 6 7 8 Risposta alla domanda 9 (4 pt): Risposta alla domanda 10 (5 pt):