Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE



Похожие документы
Funzioni in C. Violetta Lonati

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};

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

Le stringhe. Le stringhe

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

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

Prova di Laboratorio di Programmazione

Codifica: dal diagramma a blocchi al linguaggio C++

Prova Scritta del 19/07/10

INFORMATICA - I puntatori Roberta Gerboni

Breve riepilogo della puntata precedente:

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

Introduzione al Linguaggio C

Fondamenti di Informatica 2

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

Introduzione alla programmazione in C

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

Concetto di Funzione e Procedura METODI in Java

Le variabili. Olga Scotti

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

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

RICERCA DI UN ELEMENTO

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

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

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

Alcune regole di base per scrivere un programma in linguaggio C

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

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Calcolare il massimo di una lista

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Grammatica di base: Pointers

Richiesta pagina PHP (es: index.php)

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Introduzione al linguaggio C Gli array

RISOLUTORE AUTOMATICO PER SUDOKU

Visibilità dei Membri di una Classe

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

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:


Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Convertitori numerici in Excel

Esercizi di programmazione in C

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

LA MISURAZIONE DEL CARATTERE

puntatori Lab. Calc. AA 2007/08 1

La struttura dati ad albero binario

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

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

Linguaggio C. Fondamenti. Struttura di un programma.

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

Gestione delle stringhe in C

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Fasi di creazione di un programma

Esempio: Array di struct

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Studente: SANTORO MC. Matricola : 528

Basi di dati 9 febbraio 2010 Compito A

PROGRAMMA SVOLTO NELLA SESSIONE N.

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Corso di Fondamenti di Informatica

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Laboratorio di programmazione

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

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

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

File di testo e file binari Directory

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Caratteri e stringhe Esercizi risolti

Lab 04 Istruzioni, cicli e array"

Algoritmi e strutture dati. Codici di Huffman

Esame del 3 febbraio 2010

Allocazione dinamica della memoria - riepilogo

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Record in C: il costruttore struct.

Matematica in laboratorio

Primi programmi in C

Matematica 1 - Corso di Laurea in Ingegneria Meccanica

Algoritmi di Ricerca. Esempi di programmi Java

Soluzione dell esercizio del 2 Febbraio 2004

Gestione dei File in C

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

SPECIFICHE E LIMITI DI EXCEL

Dispense di Informatica per l ITG Valadier

IPC System V. Code di messaggi

Транскрипт:

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte... non dovete "scrivere" gli "a capo", ma solo passare alla riga successiva Esercizio 2 su foglio protocollo (ordinatamente!) 1

Matematica - SMID : Programmazione Febbraio 2009 Esercizio 1 Comprensione codice (punti 9 in prima approssimazione) (Versione C++; a richiesta si può avere la versione in C) Consideriamo il seguente codice (che non è un buon esempio di codice!) #include <iostream> using namespace std; const int MAX = 15 ; int k = 5; int ppp( int j ) ; void qqq( float & x, float y ); void rrr( char str [], int & j ); int main() { char sstt [ MAX+1 ] = "73520" ; float a = 1.0; float b = 2.0; k = 3 ; cout << "main 1: " << k << " " << ppp(k) << '\n' ; qqq(a, b) ; cout << "main 2: " << a << " " << b << '\n' ; rrr (sstt, k); cout << "main 3: " << sstt << " $$$ " << k << '\n' ; return (0) ; int ppp( int j ) { return (k + j) ; void qqq( float & x, float y) { x = y; y = 1/y + x; cout << "qqq: " << x << " " << y << '\n' ; void rrr( char str[], int & j) { int k ; j = 0; for (k=0 ; str[k]!= '\0' ; k++) j = 10 * j + (str[k] - '0') ; cout << "rrr: " << str ; cout << " ### " ; cout << j << '\n' ; Sul foglio risposte scrivete tutto l'output del programma, però senza stare a contare gli spazi bianchi...; non confondete maiuscole e minuscole; per i float, scrivete solo le cifre decimali necessarie. 2

Esercizio 2 Progetto di algoritmo (punti 24 in prima approssimazione) Si tratta di progettare un algoritmo che simula (in modo semplificato ed artificiale) la gestione del prestito in una biblioteca. L'enfasi è sul progetto piú che sui dettagli. I dati sono contenuti in due file. File file_libri: i libri sono al piu' MAXlibri (costante nota); per ogni libro, le info sono: - autore, una stringa di lunghezza massima CORTA (costante nota, ad es. 20); - titolo, una stringa di lunghezza massima LUNGA (costante nota, ad es. 80). File file_lettori: i lettori sono al piu' MAXlettori (costante nota); per ogni lettore, le info sono solo un nome, stringa di lunghezza massima CORTA (come sopra); Supponiamo che i dati nei file siano corretti e che non esistano ripetizioni (due libri uguali, due lettori uguali,...). Non si può supporre che libri e lettori compaiano nel file in un qualche ordine. Lo schema (del funzionamento) dell'algoritmo è il seguente: 1) Inizializzazione... 2) Leggi i dati dai file e memorizzali... 3) Ciclo: 3.1) messaggio: biblioteca aperta... 3.2) il lettore si identifica con il nome; il programma controlla; se il lettore non risulta, allora scrive messaggio e riprende il ciclo; altrimenti: 3.3) il lettore fornisce una stringa str 3.4) il programma cerca i libri con titolo che contiene str (vedere oltre); ne memorizza al piu' 10 (i primi che trova); se no ne trova, stampa un messaggio opportuno e riprende il ciclo; altrimenti li stampa nel modo seguente: 1. autore titolo disponibile/in-prestito 2. autore titolo disponibile/in-prestito... 3.5) il lettore risponde con: prendo libro k oppure restituisco libro k 3.6) il programma controlla: nel caso prendo: che il libro sia disponibile e che il lettore non abbia superato il numero massimo di libri in prestito: MAXprestiti (costante nota) nel caso restituisco: che il libro sia tra quelli in prestito al lettore se ok, allora il programma aggiorna i dati... altrimenti scrive un messaggio e riprende il ciclo 3

Il ciclo termina quando: tutti i libri sono in prestito, oppure tutti i lettori hanno MAXprestiti libri in prestito. Note. All'inizio, nessun libro è in prestito. Ogni lettore può avere in prestito in ogni momento al piú MAXprestiti libri. Al punto 3.4 non serve precisare cosa si intende con titolo contiene str; infatti non dovete scrivere codice per questo controllo (vedi domanda c). Specifiche sull'algoritmo: L'algoritmo deve seguire (grosso modo) la struttura delineata sopra. Una parte significativa del ciclo deve essere realizzata tramite procedure o funzioni. Non si devono usare "variabili globali": il passaggio di dati tra "main", procedure e funzioni deve avvenire tramite i parametri e il risultato delle funzioni. Per tutto quello che non è precisato nel testo, siete liberi di decidere voi, ma dovete dichiarare le scelte fatte. Domande a) Precisate come sono codificate le informazioni nei file. b) Precisate le strutture dati usate nell'algoritmo; precisando quali informazioni vengono memorizzate e come. Se non trovo la risposta ad a) e b) non correggo il resto. c) Scrivete, usando lo pseudo-codice utilizzato nelle dispense (oppure il C, ma non ve lo consiglio), l'algoritmo, commentando quando necessario. Non perdete tempo a dettagliare: apertura file, formato nelle istruzioni di input / output,... ed altri aspetti di poco conto. Precisate bene, al contrario: la struttura, il ruolo delle variabili principali, i parametri delle procedure / funzioni... Per lavorare con le stringhe: lettura: fate come se non ci fossero spazi o altri separatori; uguaglianza tra stringhe e controllo s1 contiene s2 : supponete di avere delle procedure/funzioni apposite; non dovete scrivere il codice, dovete solo precisare i prototipi e dire cosa fanno. 4

#include <stdio.h> #define MAX 15 int k = 5; int ppp( int j ) ; void qqq( float * x, float y ); void rrr( char str [], int * j ); int main() { char sstt [ MAX+1 ] = "73520" ; float a = 1.0; float b = 2.0; k = 3 ; printf( "main 1: %d %d \n", k, ppp(k) ) ; qqq(&a, b) ; printf( "main 2: %f %f \n", a, b ) ; rrr (sstt, &k); printf( "main 3: %s $$$ %d \n", sstt, k ) ; return (0) ; int ppp( int j ) { return (k + j) ; void qqq( float * x, float y) { *x = y; y = 1/y + *x; printf( "qqq: %f %f \n", *x, y ) ; void rrr( char str[], int * j) { int k ; *j = 0; for (k=0 ; str[k]!= '\0' ; k++) *j = 10*(*j) + (str[k]-'0') ; printf( "rrr: %s", str ) ; printf( " ### " ); printf( "%d \n", *j) ; 5