Esercizi.

Slides:



Advertisements
Presentazioni simili
Alcune Classi Standard Object, Vettori. Esercizio dellultima volta Superclasse Persona Sottoclasse Libro.
Advertisements

LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Le gerarchie di tipi.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
PolyFun. Dare implementazione,funzione di astrazione, invarianti della rappresentazione. Provare che i metodi apply e bind preservano gli invarianti.
Esempio: Tombola! Parte seconda.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Selezione (=scelta) con “if-else”
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
void binario(int n); …………………
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Esercizi.
Stack Già visto l’altra volta senza gestione eccezioni, le prime tre slide servono solo come ripasso, dalla quarta argomento nuovo class Stack { int data[];
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
1 Un esempio con iteratore: le liste ordinate di interi.
Argomenti della lezione
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Eccezioni Metodi parziali Eccezioni: Usi e Metodi parziali Eccezioni: rimuovere i requires Eccezioni: rimuovere i requires Eccezioni: definizione, sollevamento,
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Primo Compitino Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
1 Gerarchie e polimorfismo: liste. 2 Generalizzare le liste di interi  List 4 lista di oggetti –non modificabile 4 vorremo poi definire un sottotipo.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 31 Marzo 2004). Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Esercizio 3. Testo Dare rappresentazione e realizzazione dei metodi della seguente classe QueueWithPriority. Nella risposta, non riportare i commenti.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Esercitazione. Problema Vogliamo definire in modo gerachico un tipo di dato che definisce Tabelle multi-dimensionali con un numero di righe variabili.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
Esercitazione sull’ ordinamento 20 maggio 2003
1 Un esempio con iteratore: le liste ordinate di interi.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
LIP: 18 Aprile 2008 Interfacce. Rappresentazione Lista val next vuota Lista vuota: any true Lista non vuota: any true 154 false 24 false.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Maurizio Cozzetto, Francesco Sarasini
Java: concetti e costrutti base
Esercizi.
Unità didattica 1: Introduzione al linguaggio Java
CICLO DO – WHILE LINGUAGGIO C.
iterazione o ricorsione nel pensare per OGGETTI
Sommario cos’è un tipo di dato astratto astrazione tramite specifica:
Elementi di programmazione concorrente in Java: i threads
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Eccezioni – Precisazioni e approfondimenti
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
La struttura dei primi programma in C
comprensione e modifica di codice
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
concetti ed applicazioni
Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Dalla programmazione tradizionale al paradigma OO
Ricerca 01/08/2019 package.
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Ese 3 (del 3 Aprile 2003).
Transcript della presentazione:

Esercizi

Osservazione sulle eccezioni

Stack Già visto l’altra volta senza gestione eccezioni, le prime tre slide servono solo come ripasso, dalla quarta argomento nuovo class Stack { int data[]; int first; int max; Stack(int dimensione) { data=new int[dimensione]; first=0; max=dimensione; } Stack() { this(10); }

int pop() { if (first > 0) { first--; return data[first]; } return -10000; // Bisogna restituire qualcosa void push(int i) { if (first < max) { data[first] = i; first++;

//main di test public static void main(String args[]) { Stack s=new Stack(5); System.out.println("Inserisco 1"); s.push(1); System.out.println("Inserisco 7"); s.push(7); System.out.println("Estraggo un elemento: "+s.pop()); }

Stack con eccezione class OutOfDataException extends Exception { String errormessage; public OutOfDataException(String s) { super(s); errormessage = s; } public OutOfDataException() { super(); errormessage = "OutOfDataException"; public String toString() { return errormessage; }

class StackConEccezione extends Stack { StackConEccezione(int dimensione) { super(dimensione); } StackConEccezione() { super(); void pushConEccezione(int i) throws OutOfDataException { if (first < max) { data[first] = i; first++; else throw new OutOfDataException();

public static void main(String args[]) { StackConEccezione s=new StackConEccezione(2); System.out.println("Inserisco 1"); try { s.pushConEccezione(1); } catch(OutOfDataException e) {System.out.println(e); } System.out.println("Inserisco 7"); try { s.pushConEccezione(7); } System.out.println("Inserisco 9"); try { s.pushConEccezione(9); } System.out.println("Estraggo un elemento: "+s.pop()); }

L’ESECUZIONE DA Inserisco 1 Inserisco 7 Inserisco 9 OutOfDataException Estraggo un elemento: 7 Estraggo un elemento: 1

Eccezioni class EccPiccolo extends Exception { public EccPiccolo(String s) {super(s);} } class EccGrande extends Exception { public EccGrande(String s) {super(s);} class EccGrandeGrande extends EccGrande { public EccGrandeGrande(String s) {super(s);}

public class Eccezioni { static void m1() throws EccPiccolo { System.out.println("Entro in m1"); if (Math.random() < 0.4) throw new EccPiccolo("m1"); System.out.println("Esco da m1"); } static void m2() throws EccPiccolo, EccGrande{ System.out.println("Entro in m2"); double x = Math.random(); if (x < 0.4) throw new EccPiccolo("m2"); if (x > 0.6) throw new EccGrande("m2"); System.out.println("Esco da m2");

static void m3() throws EccGrande, EccGrandeGrande { System.out.println("Entro in m3"); double x = Math.random(); if (x > 0.7) throw new EccGrandeGrande("m3"); if (x > 0.6) throw new EccGrande("m3"); System.out.println("Esco da m3"); } static void m4() throws EccPiccolo { System.out.println("Entro in m4"); m1(); System.out.println("Esco da m4");

public static void main (String[] args) throws EccGrandeGrande { while (true) { try { m1(); m2(); m3(); m4(); } catch (EccPiccolo e) { System.out.println(" Piccolo: " + e); } catch (EccGrandeGrande e) { System.out.println(" GrandeGrande: " + e); throw new EccGrandeGrande(""); } catch (EccGrande e) { System.out.println(" Grande: " + e); }

Vettori di interi package javaapplication1; import java.util.*; public class Vettore { Vector elementi; /** Creates a new instance of Vettore */ public Vettore() { elementi=new Vector(); }

public class IllegalOperationException extends Exception { IllegalOperationException(){super();} } public class UnSummableException extends Exception { UnSummableException(){super();} public class NotValidAddException extends Exception { NotValidAddException(){super();}

void aggiungiElemento(Object o) throws NotValidAddException { if(o instanceof Integer) elementi.addElement(o); else throw new NotValidAddException(); }

public Vector somma(Vector v) throws Exception { Vector result=new Vector(); if(elementi.size()!=v.size()) throw new UnSummableException(); else { Enumeration e1=v.elements(); for(Enumeration e=elementi.elements(); e.hasMoreElements();) { int elem1=((Integer)e.nextElement()).intValue(); int elem2=((Integer)e1.nextElement()).intValue(); result.addElement(new Integer(elem1+elem2)); } return result;

matrice public class matrice { Vector elementi; public int dim; /** Creates a new instance of Vettore */ public matrice(int dim) { elementi=new Vector(); this.dim=dim }

void aggiungiElemento(Object o) throws NotValidAddException { if((o instanceof Vettore)&&((Vettore)o).size()==dim) elementi.addElement(o); else throw new NotValidAddException(); }

public Vettore somma(Vettore v) throws Exception { Vettore result=new Vector(); if(elementi.size()!=v.size()) throw new UnSummableException(); else if(elementi.dim!=v.dim) else { .... } return result;

Esercizio: CodaIllimitata CodaIllimitata può contenere oggetti di qualsiasi tipo. Inserito il primo elemento però tutti i successivi devono essere dello stesso tipo del primo Usare un’interfaccia Accodabile che definisce il metodo confrontaClasse

public class OggettoNonValido extends Exception { private static final long serialVersionUID = 1L; OggettoNonValido() { super(); }

Oggetti Accodabili package esercitazioneI; public interface Accodabile { public boolean confrontaClasse(Object o); }

public class CodaIllimitata { private Vector c; CodaIllimitata() { c = new Vector(); }

public void insert (Object x) throws OggettoNonValido{ Accodabile a; try { a = (Accodabile)x; } catch (Exception e){ System.out.println("Oggetto non accodabile"); throw new OggettoNonValido(); if (!c.isEmpty() && !a.confrontaClasse(c.firstElement())){ System.out.println("Oggetto del tipo sbagliato"); c.addElement(x); System.out.println("Oggetto inserito");

public static void main(String[] args) { CodaIllimitata ci = new CodaIllimitata(); try { StringaAccodabile el = new StringaAccodabile("Primo elemento"); ci.insert(el); } catch (OggettoNonValido e) { e.printStackTrace(); } StringaAccodabile el2 = new StringaAccodabile("Secondo elemento"); InteroAccodabile el3 = new InteroAccodabile(5); ci.insert(el3); } catch (OggettoNonValido e2) { // TODO Auto-generated catch block e2.printStackTrace();

public class InteroAccodabile implements Accodabile{ private int intero; InteroAccodabile(int i){ intero=i; } public boolean confrontaClasse(Object o) { if (o.getClass()==InteroAccodabile.class){ return true; else{ return false;

public class StringaAccodabile implements Accodabile{ private String s; StringaAccodabile(String s){ this.s=s; } public boolean confrontaClasse(Object o){ if (o.getClass() != StringaAccodabile.class){ return false; else { return true;

StringBuffer vs String /* Questo programma vuol testare la differenza tra la costruzione di stringhe con la calsse String e con la classe StringBuffer. Viene costruita una stringa di un certo numero di caratteri (specificato dalla variabile numCar) aggiungendo via via alla stringa il carattere 'a' in coda. La stessa cosa viene fatta con un oggetto di StringBuffer. Vengono confrontati i tempi per l'esecuzione delle due operazioni. */

public class ProvaStringBuffer { public static void main(String[] a) { int numCar = 25000; String stringA = ""; long t1 = System.currentTimeMillis(); System.out.println("Costruisco una stringa della classe String:"); for (int i = 1; i <= numCar; i++) stringA += 'a'; int tempoTot = (int)(System.currentTimeMillis() - t1); System.out.println("Tempo con String: " + tempoTot + " millisecondi"); StringBuffer stringB = new StringBuffer(); t1 = System.currentTimeMillis(); System.out.println("Costruisco una stringa della classe StringBuffer:"); stringB.append('a'); tempoTot = (int)(System.currentTimeMillis() - t1); System.out.println("Tempo con StringBuffer: " + tempoTot + " millisecondi"); }

Esercizio Scrivi un programma in linguaggio Java che legga da tastiera una frase e una parola, queste devono essere passate ad un metodo statico che restituisce il numero di occorrenze della parola nella frase.

import java.io.*; class frase {  public static void main (String args []) throws IOException {  InputStreamReader input=new InputStreamReader(System.in); BufferedReader h= new BufferedReader(input);  String st,s1,s2;  System.out.print("frase:");  st=h.readLine();  System.out.print("sottostringa da cercare:");  s1=h.readLine();  System.out.println(occorrenze(st,s1));  }//fine main  static int occorrenze(String st,String s1){  int sum=0,i=0,x;  do{        x=st.indexOf(s1,i);  if(x!=-1){ sum++; i=x+1; }  }while(x!=-1);  return sum;  }//fine occorrenze  }// fine classe 

Esercizio Realizza un programma che dato un vettore di 20 numeri interi compresi fra 1 e 99 generato casualmente (privo di elementi che si ripetono) lo passi ad una funzione assieme ad un intero che deve essere cercato nel vettore. Usare possibilmente l'algoritmo della ricerca binaria. La funzione deve restituire la posizione nel vettore dell'elemento cercato, se l'elemento non esiste deve restituire -1

class ricercaBinaria{ static final int n=20; public static void main (String[] args){ int i,j,d; int T[] = new int[n]; //caricamento random senza ripetizioni for(i=0;i < n;i++) if(i==0) T[i]=(1 + (int) (Math.random() * 99)); else do{ d=0; for(j=0;j < i;j++) if(T[i]==T[j])d=1; }while(d==1); //cerco il numero 12 System.out.println(binaria(T,12)); //stampa a video System.out.print(T[i]+" "); }//fine main

static int binaria(int T[],int num){ int i,j,x,alto=n-1,basso=0,pos=-1; //ordinamento for(i=0;i < n-1;i++) for(j=i+1;j < n;j++) if(T[j] < T[i]){//scambio x=T[j]; T[j]=T[i]; T[i]=x; } // fine if e ordinamento //ricerca binaria do{ i=(alto+basso)/2; if(T[i]==num) pos=i; else{ if(T[i] < num) basso=i+1; else alto=i-1; } //fine else }while(alto > basso && pos==-1); return pos; }//fine binaria }//fine class