Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Informatica Recupero debito quarto anno Terzo incontro.
PHP.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Oggetti e dati primitivi
Approfondimento delle classi
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di informatica T-A Esercitazione 8 : Un tema d'esame AA 2012/2013 Tutor : Domenico Di Carlo.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
LIP: 8 Marzo 2005 Vettori. Abbiamo visto L’uso di Vector come alternativa all’uso di arrays Rivediamo l’esercizio dell’altra volta.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
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.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Fondamenti di informatica T-A Esercitazione 9 : Un tema d'esame AA 2012/2013 Tutor : Domenico Di Carlo.
Fondamenti di informatica T-A Esercitazione 2 : Linguaggio Java, basi e controllo del flusso AA 2012/2013 Tutor : Domenico Di Carlo.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
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.
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Esercizi sui dati strutturati 13 Tipi di dati strutturati.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Fondamenti di informatica T-A Esercitazione 5 : Stringhe ed array AA 2012/2013 Tutor : Domenico Di Carlo

String La classe String : ▫ Rappresenta una sequenza di caratteri. ▫ Ha una classe ad hoc, vista la sua importanza. ▫ Permette la concatenazione tramite l’operatore ‘+’ (…che abbiamo visto utilizzando System.out.print(“val: ” + s.getValue)) ▫ Ha moltissimi metodi di utilità, ne vedremo alcuni ma è caldamente consigliato dare uno sguardo alla documentazione : ▫ Si può instanziarne un oggetto in due differenti modi :  String s1 = new String(“Stringa uno”);  String s2 = “Stringa due”; Fondamenti di informatica A-K - Domenico Di Carlo

Immutabilità Le stringhe sono costanti ed immutabili, questo vuol dire che il loro valore non può essere modificato dopo essere state create. Infatti tutti i metodi che effettuano delle modifiche (trim(), concat(), etc) non modificano l'oggetto su cui è invocato il metodo ma creano e ritornano una nuova stringa. Fondamenti di informatica A-K - Domenico Di Carlo

Immutabilità, esempio Fondamenti di informatica A-K - Domenico Di Carlo Agendo in questo modo invece, andiamo a cambiare la variabile reference e quindi non a modificare la stringa ma a crearne un’altra lasciando in balìa del garbage collector la prima Questo vuol dire che in memoria, oltre alla stringa cui si riferisce a, verrà creato un nuovo oggetto tramite il metodo replace. Questa stringa non avrà, però, alcuna variabile reference associata.

Alcuni metodi visti in pratica Fondamenti di informatica A-K - Domenico Di Carlo

Alcuni esempi Scrivere un programma che concateni due stringhe s1 ed s2 e rimpiazzi tutte le ‘i’ contenute nella stringa risultante s3 = s1+s2 con delle ‘Z’ :  public static void main(String[] args) { String s1 = "L'esame di informatica"; String s2 = " è il mio preferito!!!"; String s3 = s1.concat(s2); System.out.println("La stringa s3 prima del rimpiazzamento è : " + s3); s3 = s3.replace('i', ‘Z'); System.out.println("La stringa s3 dopo il rimpiazzamento è : " + s3); } Scrivere un programma che data una stringa di almeno 2 caratteri, s1s2 costruisca la stringa s2s1, cioè speculare rispetto al carattere medio. Esempio : Ciao -> aoCi. informatica -> maticainfor :  public static void main(String [] args) { java.util.Scanner sc = new java.util.Scanner(System.in); System.out.println("Inserisci una stringa"); String parola = sc.nextLine(); int lunghezza, m; lunghezza = parola.length(); m = lunghezza/2; System.out.print(parola.substring(m,lunghezza)); System.out.print(parola.substring(0,m)); } Fondamenti di informatica A-K - Domenico Di Carlo

Tassonomia La classe Object è la superclasse, diretta o indiretta, di ogni classe e definisce lo stato ed il comportamento base che ciascun oggetto deve avere e cioè l’abilità di :  confrontarsi con un altro oggetto  convertirsi in una stringa … etc etc etc Fondamenti di informatica A-K - Domenico Di Carlo

toString E’quindi evidente che è sempre opportuno ridefinire i comportamenti dei metodi della classe Object per adattarli al caso specifico. Il metodo : public String toString() ritorna una rappresentazione testuale dell’oggetto del tipo che, in molte occasioni, non ci dice nulla di significativo. Potremmo ad esempio ridefinire il metodo toString nella classe Contatore :  public class Contatore { int valore; [costruttori] [altri metodi] public String toString() { return ““ + valore; } Fondamenti di informatica A-K - Domenico Di Carlo

Equals E’importante sapere inoltre che due stringhe non si comparano tramite l’operatore ‘==‘ come visto, ad esempio, per gli interi. Il codice :  String s1 = “Ciao mamma“; String s2 = “Ciao mamma“; if ( s1 == s2 ) System.out.println(“Le due stringhe sono uguali.“); Non funziona come atteso perché l’operatore ‘==‘ controlla se le variabili referenziano lo stesso oggetto (cioè se è puntata la stessa area di memoria), non se il valore della stringa è lo stesso. Se vogliamo sapere se due stringhe sono uguali dobbiamo usare il metodo  public boolean equals(String s); Ad esempio potremmo aggiungere il seguente codice all’interno della classe Contatore per confrontare se due contatori sono uguali : public boolean equals (Contatore c) { if (value == c.getValue()) return true; return false; } Fondamenti di informatica A-K - Domenico Di Carlo

Array Gli array sono dei contenitori che ospitano un numero prestabilito di oggetti dello stesso tipo : Il codice che segue, ad esempio, crea un array capace di contenere al più 10 numeri interi  int[] arrayInteri; arrayInteri = new int[10]; La dimensione dell’array è definita all’atto della inizializzazione (con la new) e memorizzata nell’attributo length. Ad esempio l’array ‘arrayInteri’ appena creato può contenere non più di 10 elementi ! Non si può estendere dinamicamente un array (bisogna ricrearlo). Per fare questo esistono delle classi apposite che vedremo più avanti nel corso. Fondamenti di informatica A-K - Domenico Di Carlo

Array di oggetti E’possibile definire array di qualsiasi tipo di oggetto (purché sia lo stesso oggetto). Possiamo creare un array di interi, di stringhe, di classi Persona, di classi Contatore (basta con sti contatori, non ne posso più) :  public class TestArrayContatore { public static void main(String args[]){ Contatore[] contatori = new Contatore[3]; contatori[0].inc (); } Il codice appena visto non funziona, lancia un NullPointerException perché sta tentando di accedere ad un oggetto non ancora inizializzato. Per farlo funzionare bisogna inizializzare ogni singolo contatore con una new!!  Contatore[] contatori = new Contatore[3]; for(int i=0; i<contatori.length; i++) contatori[i] = new Contatore(); contatori[0].inc(); Fondamenti di informatica A-K - Domenico Di Carlo

Una migliore visione degli array Fondamenti di informatica A-K - Domenico Di Carlo

Esercizio 1 Realizzare una applicazione java (classe Esercitazione 51) che: ▫ Contenga un array di stringhe che modellino dei libri, del tipo :  String[] libri = new String[7]; libri[0] = "Camere Separate"; … libri[3] = new String("Un libro a caso"); … libri[6] = "La Divina Commedia"; ▫ Chieda all’utente un titolo di libro ▫ Verifichi se il libro è presente nell’elenco (utilizzare la equals) ▫ In caso affermativo, stampi a video la posizione (indice dell’array) in cui è il titolo stato trovato ▫ In caso negativo, stampi “Libro non trovato” Fondamenti di informatica A-K - Domenico Di Carlo

Esercizio 2 e 3 Dato un array di N interi inizializzato in modo tale da contenere in ogni indice l’intero corrispondete : ▫ arrayInteri[0] = 0; … ▫ arrayInteri[4] = 4; … ▫ arrayInteri[N] = N; scrivere un algoritmo (classe Esercitazione 52) per sommare tutti gli elementi ad indici multipli di 3. Dato un array di N caratteri scrivere un algoritmo (classe Esercitazione 53) per verificare se l’ordine dei caratteri determina una sequenza palindroma (cioè che non cambia se letta al contrario; ad esempio ‘anna’ è palindroma, ‘mamma’ non è palindroma). Fondamenti di informatica A-K - Domenico Di Carlo

Esercizio 4 Un libro è identificato dal suo titolo e dal suo autore. Definire la classe Libro che: ▫ Possieda due campi di tipo stringa che identifichino autore e titolo ▫ Possieda un costruttore con parametri, definito opportunamente ▫ Presenti metodi che permettono di accedere ai campi interni ▫ Presenti il metodo “toString” che fornisca una descrizione del libro ▫ Presenti il metodo “equals” che verifichi se il libro sia uguale a quello passato come parametro (l’uguaglianza va verificata sul titolo). Nota bene : è possibile utilizzare equals all’interno del metodo equals, in quanto i campi interni sono già delle stringhe. Definire un’altra classe che (Esercitazione 54) ▫ Chieda all’utente il nome di un autore ▫ Se ci sono, stampi a video tutti i libri scritti da quell’autore Fondamenti di informatica A-K - Domenico Di Carlo

Esercizio 5 Si estendano le funzionalità della classe Libro (definita nell’Esercizio4) aggiungendo il seguente metodo statico: ▫ public static int conta(Libro lib, Libro[] bib); che restituisca il numero di libri in biblioteca che sono uguali a “lib” (si utilizzi il metodo equals definito in precedenza). Si realizzi poi una applicazione (Esercitazione55) che: ▫ chieda all’utente un titolo ed un autore di libro ▫ controlli quante copie ne sono presenti in biblioteca ▫ se ve ne è almeno una, informi l’utente che il libro è presente ▫ in caso contrario, lo informi della sua assenza. Fondamenti di informatica A-K - Domenico Di Carlo

Esercizio 6, difficilissimo quasi impossibile Realizzare una classe Studente composta da :  Un array di 5 interi che modellino 5 voti dello studente  Tre stringhe rappresentati il nome, cognome e numero di matricola  I metodi : ▫ public int[] getVoti() ◦ che permetta di ritornare i voti conseguiti dallo studente ▫ public String getNome(), public String getCognome(), public String getMatricola() ▫ public boolean inserisciVoto(int voto) ◦ che permetta di di popolare l’array dei voti con dei numeri compresi tra 18 e 30 ▫ public double calcolaVotoDiPartenza(int annoDiLaurea) ◦ che calcoli il voto di partenza per la laurea triennale in 110esimi. Il calcolo deve essere effettuato tenendo conto degli anni impiegati per conseguire la laurea. Se ci si è laureati in tempo, il voto di laurea deve essere moltiplicato per , se ci si è impiegato 4 anni deve essere moltiplicato per In ogni altro caso deve essere semplicemente essere x = media*110/30; Realizzare un’altra classe (Esercitazione56) che :  istanzi uno studente tramite apposito costruttore  chieda all’utente di inserire i voti dello studente  chieda all’utente gli anni necessari al conseguimento della laurea  calcoli il voto di partenza della laurea espresso in 110esimi Fondamenti di informatica A-K - Domenico Di Carlo