Preparazione allo Scritto di Programmazione

Размер: px
Начинать показ со страницы:

Download "Preparazione allo Scritto di Programmazione"

Транскрипт

1 Preparazione allo Scritto di Programmazione Informatica / Comunicazione Digitale A.A. 2013/ Una riga di testo è detta numerica se e solo se contiene più cifre che caratteri di altro genere. Ad esempio, le righe di testo 2 May Jan trentini a Tre5nto 44 sono numeriche, mentre le righe non lo sono. 2 maggio gennaio trentini a Trento 44 (a) Scrivete il metodo statico public static boolean isnumerica( String s ) che restituisce true se e solo se s è una riga di testo numerica. Suggerimento. Utili per analizzare i caratteri di s potrebbero essere i metodi statici della classe Character. (b) Usate il metodo statico al punto (a) nella scrittura di un programma che realizzi quanto segue (per tale programma, è sufficiente il corpo del main; supponete inoltre di avere già due variabili in e out per realizzare, rispettivamente, input e output): (1) acquisisca dall utente un brano il cui inserimento viene terminato dalla stringa nulla, (2) salvi in un array N di tipo e dimensione opportuni le righe del brano che sono numeriche; se il brano non contiene righe numeriche, il programma deve interrompersi emettendo un opportuno messaggio, (3) stampi le righe in N ordinate alfabeticamente. Suggerimento. Per il punto (1), utile per memorizzare il brano potrebbe essere la classe generica Sequenza. Per quanto riguarda il punto (3), ricordate che la classe String implementa l interfaccia Comparable proprio nel senso desiderato, e che la classe GestioneArray offre il metodo statico ordina che ordina array di Comparable passati come argomento. Svolgimento alla pagina successiva 1

2 (a) Metodo statico public static boolean isnumerica( String s ) { int d = 0; for ( int i = 0; i < s.length(); i++ ) { if ( Character.isDigit( s.charat( i ) ) ) d++; return d > s.length()/2; (b) Programma principale Vector<String> B = new Vector<String>(); String s; int k; out.println("inserisci il brano:"); while ( ( s = in.readline() ).length() > 0 ) { B.add( s ); if ( isnumerica( s ) ) k++; if ( k == 0 ) out.println( "Non sono state inserite stringhe numeriche" ); else { String[] N = new String[ k ]; k = 0; for ( String x : B ) if ( isnumerica( x ) ) N[ k++ ] = x; GestrioneArray.ordina( N ); for ( String x : N ) out.println( x ); 2

3 2. Attenzione!! Per questo esercizio è richiesta la scrittura completa del codice del programma. Scrivete il programma FigurePiane che faccia utilizzo della gerarchia di figure geometriche Figura, Rettangolo, Quadrato, Cerchio ampiamente descritta a lezione, sul libro di testo ed utilizzata in numerosi esercizi. Tale programma deve leggere dall utente m figure tra rettangoli, quadrati e cerchi, dove m viene acquisito A LINEA DI COMANDO. Successivamente, il programma deve stampare: i rettangoli che possono essere inscritti nel primo cerchio inserito, i quadrati la cui area è pari a quella del primo cerchio inserito Attenzione! Prima di stampare tali elenchi e nel caso non siano stati inseriti cerchi, il programma deve avvisare opportunamente ed interrompersi. Svolgimento import prog.io.*; import prog.utili.*; class FigurePiane { public static void main( String[] args ) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); int m = Integer.parseInt( args[0] ); Figura[] F = new Figura[m]; char r; Cerchio pr = null; for ( int i = 0; i < m; i++ ) { do { r = in.readchar( "Rettangolo (r), Quadrato (q), Cerchio (c):" ); while ( r!= r && r!= q && r!= c ); switch ( r ) { case r : F[i] = new Rettangolo(in.readDouble("Base:"), in.readdouble("altezza:")); break; case q : F[i] = new Quadrato(in.readDouble("Lato:")); break; case c : F[i] = new Cerchio(in.readDouble("Raggio:")); if ( pr == null ) pr = (Cerchio) F[i]; break; if ( pr!= null ) { for ( int i = 0; i < m; i++ ) if ( F[i] instanceof Rettangolo ) { Rettangolo t = (Rettangolo) F[i]; double d = Math.sqrt(t.getBase()*t.getBase() + t.getaltezza()*t.getaltezza()); if ( d == 2*pr.getRaggio() ) out.println( t ); for ( int i = 0; i < m; i++ ) if ( F[i] instanceof Quadrato && F[i].getArea() == pr.getarea() ) out.println( F[i] ); else out.println( "Non sono stati inseriti cerchi" ); 3

4 3. Realizzate una gerarchia di classi per la rappresentazione di mobili. Tale gerarchia è costituita da una classe astratta Mobile e da due classi concrete Guardaroba e Scaffale, figlie di Mobile. classi concrete Gli oggetti della classe concreta Guadaroba sono denotati da un codice, un nome, un numero di ante e da un prezzo per anta; i primi due parametri sono di tipo String, mentre gli altri due di tipo int. Oltre al costruttore, tale classe deve possedere i metodi getcodice(), getnome(), getnumeroante(), getprezzoperanta(), tostring() dall ovvio significato. In aggiunta, dovete implementare il metodo getprezzototale() che restituisce il prezzo totale del guadaroba ottenuto moltiplicando il prezzo per anta per il numero di ante. Gli oggetti della classe concreta Scaffale sono denotati da un codice, un colore, un numero di scaffali e un prezzo per scaffale; i primi due parametri sono di tipo String, mentre gli altri due di tipo int. Oltre al costruttore, tale classe deve possedere i metodi getcodice(), getcolore(), getnumeroscaffali() ed i metodi getprezzoperscaffale(), tostring() dall ovvio significato. In aggiunta, dovete implementare il metodo getprezzototale() che restituisce il prezzo totale dello scaffale ottenuto moltiplicando il prezzo per scaffale per il numero di scaffali aumentato di due. classe astratta La classe astratta Mobile deve avere il metodo astratto getprezzototale() ed il metodo concreto haprezzototalemaggioredi(mobile m) che restituisce true se il mobile che invoca il metodo ha prezzo totale superiore a quello del mobile m, false altrimenti. Svolgimento alla pagina successiva 4

5 class Guardaroba { private String codice, nome; private int nante, pante; public Guardaroba( String c, String n, int na, int pa ) { codice = c; nome = n; nante = na; pante = pa; public String getcodice() { return codice; // in modo analogo si realizzano gli altri metodi get public String tostring() { return codice+" "nome+" "+nante+" "+pante; public int getprezzototale() { return nante * pante; class Scaffale { private String codice, colore; private int nscaff, pscaff; public Scaffale( String c, String n, int na, int pa ) { codice = c; colore = n; nante = na; pante = pa; public String getcodice() { return codice; // in modo analogo si realizzano gli altri metodi get public String tostring() { return codice+" "colore+" "+nscaff+" "+pscaff; public int getprezzototale() { return ( nscaff + 2 ) * pscaff; abstract class Mobile { public abstract int getprezzototale(); public boolean haprezzototalemaggioredi( Mobile m ) { return getprezzototale() > m.getprezzototale() ; 5

6 4. Sfruttando la gerarchia all esercizio precedente, scrivete un programma (è sufficiente il corpo del main) che operi come segue: legga un intero positivo che rappresenta la dimensione di un array M entro cui inserire mobili, riempia tale array con guardaroba o scaffali chiesti all utente, tra tutti gli scaffali rossi, stampi quelli dal prezzo totale più elevato. Svolgimento Mobile[] M = new Mobile[in.readInt("Quanti: ")]; int t, annomin = -1; String a, b, c, d; for ( int i = 0; i < M.length; i++ ) { a = in.readline( "Codice:" ); if ( in.readsino( "Guardaroba? (s/n) " ) ) M[i] = new Guardaroba( a, in.readline("nome:"), in.readint("num. ante:"), in.readint("pr. anta:") ); else M[i] = new Scaffale( a, in.readline("colore:"), in.readint("num. scaffali:"), in.readint("pr. scaffale:") ); int pos = -1; for ( int i = 0; i < M.length; i++ ) if (M[i] instanceof Scaffale && (pos == -1 M[i].haPrezzoTotaleMaggioreDi(M[pos]))) pos = i; if ( pos == -1 ) out.println( "Non sono stati inseriti scaffali" ); else out.println( M[pos] ); 6

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

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

Подробнее

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Подробнее

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007 Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento

Подробнее

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 Alcune Soluzioni ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int[][] a = new int[n][n]; for (int i

Подробнее

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

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Подробнее

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Подробнее

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Подробнее

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Подробнее

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Подробнее

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Подробнее

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Подробнее

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Подробнее

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Подробнее

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione

Подробнее

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Подробнее

E17 Esercizi sugli Array in Java

E17 Esercizi sugli Array in Java E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Подробнее

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Подробнее

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Подробнее

ESERCIZIO 1 (FILE DI TESTO)

ESERCIZIO 1 (FILE DI TESTO) ESERCIZIO 1 (FILE DI TESTO) Scrivere su un file di testo righe inserite da console, fino a quando non viene inserita la linea vuota. Passare il nome del file come parametro al programma. Bisogna incapsulare

Подробнее

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Подробнее

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Подробнее

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

Подробнее

5 - Istruzioni condizionali

5 - Istruzioni condizionali 5 - Istruzioni condizionali Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Подробнее

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso; Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso

Подробнее

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Подробнее

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi statici. Dichiarazione e chiamata di metodi statici Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Подробнее

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Подробнее

ESERCIZIO 1 ESERCIZIO 1

ESERCIZIO 1 ESERCIZIO 1 Si crei un progetto Java che mappi un semplice sistema medico. Il progetto deve contenere tre classi: una per i pazienti, una per le patologie e una per il main. Inoltre si definiscano le seguenti eccezioni:

Подробнее

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002. INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002 Esercizio 4) import fiji.io.simplereader; class Programma{ public static

Подробнее