Prova di Laboratorio di Programmazione

Documenti analoghi
Prova di Laboratorio di Programmazione

Fondamenti di Informatica T-1

Prova d Esame Compito A

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Fondamenti di Informatica T-1. Classi & vettori

Fondamenti di Informatica T1 Mappe

Laboratorio di Programmazione 1 [Java]

Lezione 3: File di input, File di output

Algoritmi di Ricerca. Esempi di programmi Java

Stringhe e allocazione dinamica della memoria

Definizione di metodi in Java

Programmazione 1 A.A. 2015/2016

Programmazione web lato client con JavaScript. Marco Camurri 1

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

<Nome Tabella>.<attributo>

Infor LN [GUIDA INFOR LN] [GUIDA INFOR LN] Baltur S.p.A. Rev /2013. Guida all utilizzo del Gestionale Infor LN per le Agenzie Baltur

WORD PROCESSING.

La stampa Unione con MS-Word

Problema: calcolare il massimo tra K numeri

La stampa Unione con MS-Word

Definizione di file. Directory e file File binari e file di testo

Come ordinare facilmente i dati in un foglio di calcolo Excel definendo chiavi e parametri.

Fondamenti di Informatica T-1. Classi e metodi astratti

Lab 1: Java Multithreading

Introduzione al Foglio Elettronico

Esercizio 1: archivio CD e DVD

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

Programmazione in Python per la bioinformatica

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Esempio su strutture dati dinamiche: ArrayList

Esercitazione 4: Trigger in DB2

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

Ordinare dati. Microsoft Access. Ordinare dati. Ordinare dati. Ordinare dati. Ordinare dati. Query (II), filtri. L ordinamento crescente:

Definizione di classi

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

14 - Metodi e Costruttori

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Grafici e Pagina web

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

File di script. I File di Script Corso 2D - R.Virili 1

La classe java.lang.object

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un negozio di libri online:

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

ListView. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Cosa sono le maschere

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Introduzione al Foglio Elettronico

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Modulo 2: Strutture fondamentali della programmazione Java

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

La Back Office Console consente di costruire lo scheletro degli schema.

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Transcript:

Prova di Laboratorio di Programmazione 29 gennaio 2015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo Lo scopo è realizzare un programma che permetta di svolgere alcune semplici operazioni relative ai prestiti in una biblioteca. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare altri metodi che si ritengono utili per svolgere l esercizio nel modo più corretto ed elegante, per esempio il metodo tostring() e i metodi di accesso ai campi, che sono necessari anche perché il codice esterno ad una classe non deve mai accedere direttamente ai campi della classe per ottenerne o modificarne il valore. Le operazioni di stampa vanno effettuate esclusivamente nella classe che definisce il metodo main(). Esercizio 1 Si implementino le seguenti classi. Classe Utente Un oggetto della classe Utente rappresenta un utente della biblioteca, ed è caratterizzato da: codice (intero); nome (stringa); cognome (stringa). Ogni utente è univocamente identificato dal suo codice, che è 0 per il primo utente inserito, 1 per il secondo e così via. Classe Libro Un oggetto della classe Libro rappresenta un libro, ed è caratterizzato da: codice (intero); autore (stringa); titolo (stringa). Ogni libro è univocamente identificato dal suo codice di inventario. La classe Libro implementa Comparable<Libro>, e il confronto avviene per ordine alfabetico di titolo. Nota: ci possono essere diverse copie dello stesso libro con codice d inventario diverso. In tal caso le diverse copie sono confrontate rispetto al numero di codice. Classe Prestito. Un oggetto della classe Prestito rappresenta il prestito di un libro. È basato sulla classe Date, che memorizza una data: per utilizzarla, dovete importare java.util.*. Un prestito è caratterizzato da: libro (un attributo di tipo Libro); giorno di inizio prestito (un istanza di Date); giorno fine prestito (un istanza di Date); utente (un attributo di tipo utente). 1

Per creare istanze di Date dovete utilizzare il costruttore Date(int,int,int) che prende tre interi: l anno a partire dal 1900, il numero del mese e il giorno del mese. Per esempio, Date d = new Date(115,1,1); crea un istanza di LocalDate che rappresenta il capodanno del 2015. Per utilizzare Date si deve importare java.util.* all inizio del programma. La classe Prestito implementa il metodo public boolean inprestito(date giorno), che restituisce vero se nel giorno specificato il libro era in prestito. Dal momento che Date implementa Comparable, per capire se nel giorno il libro era in prestito si possono fare confronti tra istanze di tale classe. 2

Scrivere un programma Prog1 che legge da standard input una sequenza di righe con i seguenti formati: U,nome,cognome L,autore,titolo,codice P,codice libro,codice utente,data inizio,data fine D,data Le righe U,nome,cognome richiedono la creazione di un utente con i dati indicati. Il codice utente deve essere assegnato progressivamente a partire da zero. Le righe L,autore,titolo,codice libro richiedono la creazione di un libro di cui vengono specificati titolo, autore e codice. Le righe P,codice libro,codice utente,data inizio,data fine richiedono la creazione di un prestito con i dati indicati. Le righe D,data richiedono di stampare la lista ordinata dei libri in prestito nella data fornita. I libri vanno stampati secondo l ordinamento definito per la classe Libro. Le date sono inserite nel formato giorno, mese, anno separati da una barra. Per stampare una data nello stesso formato, avete bisogno di un istanza di DateFormat. Assumendo che abbiate aggiunto import java.text.* all inizio del programma, potete usare DateFormat f = DateFormat.getDateInstance(DateFormat.SHORT); String dataformattata = f.format(d); dove d è un istanza di Date. Non è necessario fare controlli sulla correttezza dell input. Non vanno fatte assunzioni sul numero di linee in input. L input va letto da standard input. Per testare il programma, consigliamo di utilizzare la redirezione fornita dalla shell (si veda l esempio sotto). Esempio Il file in1.txt contiene le linee seguenti U,Sebastiano,Vigna U,Elena,Casiraghi U,Corrado,Monti L,Robert Heinlein,Stranger in a strange land,1234 L,George Perec,La vita: istruzioni per l uso,1111 L,Italo Calvino,Se una notte d inverno un viaggiatore,4242 P,4242,2,3/1/2015,17/1/25 P,1111,1,13/1/2015,20/2/2015 P,1234,0,1/1/2015,14/2/2015 P,1111,2,21/2/2015,27/2/2015 D,10/1/2015 D,22/2/2015 java Esercizio1 < in1.txt In data 10/1/15 i libri in prestito sono: Robert Heinlein, "Stranger in a strange land" (1234) In data 22/2/15 i libri in prestito sono: 3

Esercizio 2 Si aggiunga al programma la classe seguente. Classe Biblioteca. Un oggetto della classe Biblioteca rappresenta una biblioteca contenente utenti, libri e prestiti. La classe Biblioteca definisce il metodo public ArrayList<Libro> inventario(date data), che restituisce l inventario del libri presenti alla data specificata secondo l ordine alfabetico rispetto al titolo. Inoltre, definisce il metodo public ArrayList<Libro> inprestito(date data, Utente utente), che restituisce la lista degli libri in prestito all utente specificato alla data specificata. Scrivere un programma Prog2 che crea un istanza della classe Biblioteca e quindi legge da standard input una sequenza di linee con il formato dell esercizio precedente, più una nuova possibile riga I,data L,codice utente,data Le righe I,data richiedono di richiamare il metodo di inventario() sulla data specificata, stampando quindi i libri presenti in biblioteca in tal data, uno per riga. Le righe L,codice utente,data richiedono di richiamare il metodo inprestito() per l utente e la data specificati, stampando quindi i libri che l utente ha in prestito in tal data, uno per riga. Non è necessario fare controlli sulla correttezza dell input. Non vanno fatte assunzioni sul numero di linee in input. L input va letto da standard input. Per testare il programma, consigliamo di utilizzare la redirezione fornita da shell (si veda l esempio sotto). Esempio Il file in2.txt contiene le linee seguenti U,Sebastiano,Vigna U,Elena,Casiraghi U,Corrado,Monti L,Robert Heinlein,Stranger in a strange land,1234 L,George Perec,La vita: istruzioni per l uso,1111 L,Italo Calvino,Se una notte d inverno un viaggiatore,4242 P,4242,2,3/1/2015,17/1/25 P,1111,1,13/1/2015,14/2/2015 P,1234,0,1/1/2015,14/2/2015 P,1111,2,15/1/2015,27/2/2015 I,22/2/2015 L,2,16/1/2015 In data 22/2/15 l inventario è costituito da: Robert Heinlein, "Stranger in a strange land" (1234) In data 16/1/15 l utente Corrado Monti ha in prestito i seguenti libri: 4

Istruzioni per la consegna Consegnare soltanto i file seguenti (non i file.class): Utente.java Libro.java Prestito.java Biblioteca.java Prog1.java Prog2.java come un unico file compresso creato col comando > zip provalab Utente.java Libro.java Prestito.java Biblioteca.java Prog1.java Prog2.jav Eseguire l upload del file all indirizzo upload.di.unimi.it. Non consegnate file che non compilano. 5