Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esempi pratici programmazione Java, Esercizi di Elementi di Informatica

Esempi pratici molto utili per la programmazione a oggetti Java di base

Tipologia: Esercizi

2020/2021

Caricato il 11/05/2021

marcogi98
marcogi98 🇮🇹

4.5

(4)

7 documenti

1 / 14

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Esercizio su Sottoclassi (ereditarietà,downcasting, upcasting, binding,overriding)
public class Test {
public static void main(String[] args) {
Persona p = new Persona("pippo","Franco",
"[email protected]","11/10/2001");
System.out.println("eta: " + p.getEta());
//UPCASTING
Persona s = new
Studente("pippo2","Franco2","[email protected]","11/10/2001","informatica","83913
4");
Persona l = new
Lavoratore("pippo2","Franco2","[email protected]","11/10/2001",12000,"839134");
// Classe a = new Qualcosa()
// Si può fare perchè Qualcosa è sottoclasse di Classe
//BINDING DINAMICO
p.presentati();
s.presentati();
l.presentati();
//DOWNCASTING
boolean eFurioCorsos = ((Studente)s).fuoriCorso();
boolean eRicco = ((Lavoratore)l).ricco();
System.out.println(eFurioCorsos + " " + eRicco);
}
}
public class Studente extends Persona{
private String corso;
private String matricola;
public Studente(String nome, String cognome, String email, String
compleanno, String corso, String matricola) {
super(nome, cognome, email, compleanno);
this.corso = corso;
this.matricola = matricola;
}
@Override
public void presentati() {
super.presentati();
System.out.println("sono uno studente del corso di " + corso);
}
public boolean fuoriCorso(){
int eta = super.getEta();
return eta > 30;
}
}
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Anteprima parziale del testo

Scarica Esempi pratici programmazione Java e più Esercizi in PDF di Elementi di Informatica solo su Docsity!

Esercizio su Sottoclassi (ereditarietà,downcasting, upcasting, binding,overriding)

public class Test { public static void main(String[] args) { Persona p = new Persona("pippo","Franco", "[email protected]","11/10/2001"); System. out .println("eta: " + p.getEta()); //UPCASTING Persona s = new Studente("pippo2","Franco2","[email protected]","11/10/2001","informatica"," 4"); Persona l = new Lavoratore("pippo2","Franco2","[email protected]","11/10/2001", 12000 ,"839134"); // Classe a = new Qualcosa() // Si può fare perchè Qualcosa è sottoclasse di Classe //BINDING DINAMICO p.presentati(); s.presentati(); l.presentati(); //DOWNCASTING boolean eFurioCorsos = ((Studente)s).fuoriCorso(); boolean eRicco = ((Lavoratore)l).ricco(); System. out .println(eFurioCorsos + " " + eRicco); } } public class Studente extends Persona{ private String corso; private String matricola; public Studente(String nome, String cognome, String email, String compleanno, String corso, String matricola) { super(nome, cognome, email, compleanno); this.corso = corso; this.matricola = matricola; } @Override public void presentati() { super.presentati(); System. out .println("sono uno studente del corso di " + corso); } public boolean fuoriCorso(){ int eta = super.getEta(); return eta > 30 ; } }

public class Lavoratore extends Persona{ private int redditoAnnuale; private String professione; public Lavoratore(String nome, String cognome, String email, String compleanno, int redditoAnnuale, String professione) { super(nome, cognome, email, compleanno); this.redditoAnnuale = redditoAnnuale; this.professione = professione; } @Override public void presentati() { super.presentati(); System. out .println("sono un " + professione + " e guadagno "

  • redditoAnnuale + " annui"); } public boolean ricco(){ return (redditoAnnuale/ 12 ) > 10000 ; } } public class Persona { protected String nome; protected String cognome; protected String email; protected String compleanno; public Persona(String nome, String cognome, String email, String compleanno) { this.nome = nome; this.cognome = cognome; this.email = email; this.compleanno = compleanno; } public void presentati() { System. out .println("Salve mi chiamo " + nome + " " + cognome + " e sono nato il " + compleanno); } public int getEta() { String dataCorrente = this.getDataCorrente(); int eta = this.calcolaDifferenza(dataCorrente, compleanno); return eta; } private String getDataCorrente() { Format formatter = new SimpleDateFormat("dd/MM/yyyy"); String today = formatter.format(new Date()); return today; } private int calcolaDifferenza(String d1, String d2) { int eta = Integer. parseInt (d1.substring( 6 , 10 )) - Integer. parseInt (d2.substring( 6 , 10 )); // differenza di anno

public class ArrayUtils { // stampare a schermo l’array (es l’array deve essere stampato in questo modo [1, 2, 3, 4, 5 ecc..]) public static void print(int[] array) { System. out .print("["); for (int i = 0 ; i < array.length; i++) { System. out .print(array[i]); if (i < array.length - 1 ) { System. out .print(", "); } } System. out .println("]"); } // restituire la somma degli elementi dell’array passato public static int sum(int[] array){ int somma = 0 ; for(int i = 0 ; i < array.length; i++){ somma += array[i]; } return somma; } // trovarne la media public static double average(int[] array){ int somma = 0 ; for(int i = 0 ; i < array.length; i++){ somma += array[i]; } return (double)somma/array.length; } // trovare i valori di massimo e di minimo (deve essere realizzato in un unico metodo) public static int[] maxMin(int[] array){ int[] maxMin = new int[ 2 ]; int max = array[ 0 ]; int min = array[ 0 ]; for(int i = 1 ; i < array.length; i++){ if(max < array[i]){ max = array[i]; } else if(min > array[i]){ min = array[i]; } } maxMin[ 0 ] = max; maxMin[ 1 ] = min; return maxMin; } // restituire l’array inverso (es se prima si ha [1, 2, 3, 4], in output devo avere [4, 3, 2, 1]) public static int[] reverse(int[] array){ int[] reversedArray = new int[array.length]; for(int i = array.length - 1 , j = 0 ; i >= 0 ; i--, j++){ reversedArray[j] = array[i];

return reversedArray; } // rimuovere un elemento in una certa posizione passata anch’essa come parametro (restituire il nuovo array con l’elemento eliminato). public static int[] remove(int[] array, int pos){ int[] newArray = new int[array.length - 1 ]; int i = 0 , j = 0 ; while(i < array.length){ if(i != pos){ newArray[j] = array[i]; j++; } i++; } return newArray; } }

Esercizio Array di oggetti

public class TestAnagrafe { public static void main(String[] args) { Anagrafe anagrafe = new Anagrafe( 3 ); Persona p = new Persona("pippo","franco","[email protected]","11/11/1999"); Persona p1 = new Persona("pippa","franca","[email protected]","11/11/1999"); Persona p2 = new Persona("pluto","plutino","[email protected]","11/11/1999"); anagrafe.registraPersona(p); anagrafe.registraPersona(p1); anagrafe.registraPersona(); anagrafe.mostraAnagrafe(); } } public class Persona { protected String nome; protected String cognome; protected String email; protected String compleanno; public Persona(String nome, String cognome, String email, String compleanno) { this.nome = nome; this.cognome = cognome; this.email = email; this.compleanno = compleanno; } public void presentati() { System. out .println("Salve mi chiamo " + nome + " " + cognome +

private int capienza; private int personeRegistrate; public Anagrafe(int capienza) { if(capienza > 0 ) { this.capienza = capienza; this.personeRegistrate = 0 ; this.persone = new Persona[capienza]; }else{ System. exit ( 0 ); } } public void registraPersona(Persona p) { this.inserisciDentroArray(p); } public void registraPersona(){ Persona p = this.generaPersona(); this.inserisciDentroArray(p); } public void mostraAnagrafe(){ for(int i = 0 ; i < persone.length && persone[i] != null; i++){ persone[i].presentati(); } } private void inserisciDentroArray(Persona p){ if (personeRegistrate < capienza) { persone[personeRegistrate] = p; personeRegistrate++; } else { System. out .println("Capienza massima raggiunta, impossibile registrare altre persone"); } } private Persona generaPersona() { Scanner scanner = new Scanner(System. in ); System. out .println("inserisci nome: "); String nome = scanner.nextLine(); System. out .println("inserisci cognome: "); String cognome = scanner.nextLine(); System. out .println("inserisci email: "); String email = scanner.nextLine(); System. out .println("inserisci data di nascita: "); String compleanno = scanner.nextLine(); System. out .println("studente, lavoratore o persona ?"); String tipo = scanner.nextLine(); if (tipo.equals("studente")) { System. out .println("inserisci corso"); String corso = scanner.nextLine(); System. out .println("inserisci matricola"); String matricola = scanner.nextLine(); return new Studente(nome, cognome, email, compleanno, corso,

matricola); } else if (tipo.equals("lavoratore")) { System. out .println("inserisci professione"); String professione = scanner.nextLine(); System. out .println("inserisci reddito annuale "); int reddito = scanner.nextInt(); return new Lavoratore(nome, cognome, email, compleanno, reddito, professione); } else { return new Persona(nome, cognome, email, compleanno); } } } public class Lavoratore extends Persona{ private int redditoAnnuale; private String professione; public Lavoratore(String nome, String cognome, String email, String compleanno, int redditoAnnuale, String professione) { super(nome, cognome, email, compleanno); this.redditoAnnuale = redditoAnnuale; this.professione = professione; } @Override public void presentati() { super.presentati(); System. out .println("sono un " + professione + " e guadagno "

  • redditoAnnuale + " annui"); } public boolean ricco(){ return (redditoAnnuale/ 12 ) > 10000 ; } public boolean ricco2(){ double redditoMensile = redditoAnnuale/ 12 ; if(redditoMensile > 10000 ){ return true; }else{ return false; } } } public class Studente extends Persona{ private String corso; private String matricola; public Studente(String nome, String cognome, String email, String compleanno, String corso, String matricola) { super(nome, cognome, email, compleanno); this.corso = corso; this.matricola = matricola; }

public void print(){ for(int i = 0 ; i < matrice.length; i++){ for(int j = 0 ; j < matrice[i].length; j++){ System. out .print(matrice[i][j] + " "); } System. out .println(); } } public int[] getRiga(int riga){ return matrice[riga]; } public int[] getColonna(int colonna){ int[] arrayColonna = new int[matrice.length]; for(int i = 0 ; i < matrice.length; i++){ arrayColonna[i] = matrice[i][colonna]; } return arrayColonna; } public void printDiagonale(){ if(matrice.length == matrice[ 0 ].length){ for(int i = 0 , j = 0 ; i < matrice.length; i++, j++){ System. out .print(matrice[i][j] + " "); } } } public void printDiagonalePremium(){ if(matrice.length == matrice[ 0 ].length){ for(int i = 0 , j = 0 ; i < matrice.length; i++, j++){ for(int k = 0 ; k < i; k++){ System. out .print(" "); } System. out .println(matrice[i][j]); } } } public void setRandomValues(){ Random random = new Random(); for(int i = 0 ; i < matrice.length; i++){ for(int j = 0 ; j < matrice[i].length; j++){ matrice[i][j] = random.nextInt( 10 ); } } } }

Esercizio ricorsione

public class Ricorsione { //elevazione a esponenza private static long exp(int base, int esponente){ if(esponente == 0 ) { return 0 ; }else if(esponente == 1 ){

return base; }else{ return base * exp (base, esponente - 1 ); } } //somma I numeri disperi da 1 a n private static int sommDispari(int n){ if(n == 1 ){ return 1 ; }else if(n % 2 == 0 ){ return sommDispari (n - 1 ); }else{ return n + sommDispari (n - 1 ); } } //controlla se un numero e’ primo private static boolean ePrimo(int n){ return controllaDivisori (n, 2 ); } private static boolean controllaDivisori(int n, int divisore){ if(divisore == n){ return true; }else{ return (n % divisore != 0 ) && controllaDivisori (n, divisore + 1 ); //IDEA: mi basta trovare un solo divisore di n compreso tra 2 e n - 1 // per far si che tutta la rispsota sia false ( T && T && F ) = F } } public static void main(String[] args) { System. out .println( exp ( 2 , 10 )); System. out .println( expVeloce ( 2 , 10 )); System. out .println( sommDispari ( 7 )); System. out .println( ePrimo ( 3 )); } }

Ordinamento array

public class Ordinamento { // Questa classe contiene 4 dei metodi principali per ordinare un array: // in ordine: 1) BubbleSort // 2) SelectionSort // 3) QuickSort // 4) MergeSort // public static void bubbleSort(int[] array) { int n = array.length; int temp = 0 ; for (int i = 0 ; i < n; i++) { for (int j = 1 ; j < (n - i); j++) { if (array[j - 1 ] > array[j]) { //scambio degli elementi temp = array[j - 1 ]; array[j - 1 ] = array[j]; array[j] = temp;

if (l < r) { // Trova l'indice che divide l'array a meta int m = (l + r) / 2 ; // Ordina la prima e la seconda metà sort (arr, l, m); sort (arr, m + 1 , r); // Fa il merge delle metà ordinate merge (arr, l, m, r); } } private static void merge(int arr[], int l, int m, int r) { // Trova le lunghezze dei due sottoarray da unire int n1 = m - l + 1 ; int n2 = r - m; /* Crea degli array temporanei / int L[] = new int[n1]; int R[] = new int[n2]; /Copia i dati negli array temporanei/ for (int i = 0 ; i < n1; ++i) L[i] = arr[l + i]; for (int j = 0 ; j < n2; ++j) R[j] = arr[m + 1 + j]; / Merge degli array temporanei*/ int i = 0 , j = 0 ; int k = l; while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } while (i < n1) { arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j]; j++; k++; } } }

ArrayList

public class Test { public static void main(String[] args) { MioArrayList mioArrayList = new MioArrayList(); mioArrayList.add( 10 ); mioArrayList.add( 9 ); mioArrayList.add( 8 ); mioArrayList.add( 1 ); mioArrayList.print(); mioArrayList.remove( 0 ); mioArrayList.print(); System. out .println(mioArrayList.size()); } }