Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es...
Transcript of Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es...
Fondamenti di Informatica T-1Stringhe e Istruzioni di selezione
Tutor:Angelo Feraudo
a.a. 2018/2019
Fondamenti di Informatica T-1 Angelo Feraudo 1 / 24
STRINGHE: Definizione e creazione
• La Stringa e un tipo di dato che rappresenta una sequenzaordinata di caratteri
• Le stringhe in Java sono oggetti, istanze della classe String
• Creazione di una stringa in Java:
I String es stringa1 = "Ciao";
I String es stringa2 = new String("Ciao");
N.B. es stringa1 e possibile in quanto il compilatore crea unavariabile di tipo String ogni volta che incontra una sequenzaracchiusa fra doppi apici
Fondamenti di Informatica T-1 Angelo Feraudo 2 / 24
STRINGHE: Operazioni(1)
package: java.lang.String
• Prendiamo come esempio la seguente stringaI String saluto = ”Ciao”;
• ConcatenazioneI saluto = saluto + ” a tutti!”;
ora la stringa e diventata: ”Ciao a tutti!”
• Calcolo della lunghezza: length()I int lunghezza = saluto.length();
La lunghezza della nostra stringa in questo caso e 13
(N.B. CONTA GLI SPAZI TRA LE PAROLE E LAPUNTEGGIATURA!)
Fondamenti di Informatica T-1 Angelo Feraudo 3 / 24
ATTENZIONE!
• La posizione di un carattere in una stringa si conta a partireda 0 e non da 1
Fondamenti di Informatica T-1 Angelo Feraudo 4 / 24
STRINGHE: Operazioni (2)
• Riprendiamo come esempio la stringaI String saluto = ”Ciao a tutti!”;
• Indice della prima occorrenza di una data sottostringa:indexOf()
I int prima occorrenza = saluto.indexOf(”tutti”);la prima occorrenza di ”tutti” e 7.N.B. Per contare a partire dall’ultimo carattere dellastringa, posso usare lastIndexOf()
• Estrazione dell’ i-esimo carattere: charAt()I char prima lettera = saluto.charAt(0);
l’indice del primo carattere e 0 → prima lettera = ’C’
Fondamenti di Informatica T-1 Angelo Feraudo 5 / 24
STRINGHE: Operazioni (3)
• Estrazione di una sottostringa dati due indici: substring()es: int iniziale = 7;
int finale = 12;I String sottostringa = saluto.substring(iniziale, finale);→ sottostringa = ”tutti”
N.B.L’indice finale 12 e escluso nella selezione dei caratteri.
• Trasformazione maiuscole-minuscole: toUpperCase() etoLowerCase()
I String saluto maiuscolo = saluto.toUpperCase();→ saluto maiuscolo = ”CIAO A TUTTI!”
• Sostituzione di una sottostringa ad ogni occorrenza:replaceAll()
I String nuovo saluto = saluto.replaceAll(”a”,”AAA”);→ nuovo saluto = ”ciAAAo AAA tutti!”Utilissima per eliminare gli spazi bianchi. Come?
Fondamenti di Informatica T-1 Angelo Feraudo 6 / 24
STRINGHE: OPERAZIONI(4)
• Confronto tra stringhe• int compareTo(String anotherString)• int compareToIgnoreCase(String anotherString)→ comparazione lessicografica
• boolean equals(String anotherString)• boolean equalsIgnoreCase(String anotherString)→ comparazione semplice
Altre operazioni sono disponibili al seguente link:https://docs.oracle.com/javase/10/docs/api/java/lang/
String.html
Fondamenti di Informatica T-1 Angelo Feraudo 7 / 24
STRINGHE: Lettura
• Metodo next() della classe Scanner:Scanner tastiera = new Scanner(System.in);String s1 = tastiera.next();s1 e il contenuto della console fino al primo spazio bianco
• Metodo nextLine() della classe Scanner:String s2 = tastiera.nextLine();s2 e un’intera riga della consoleN.B. nextLine() ha un comportamento anomalo se precedutoda una lettura (ad es. next() o nextInt() o nextDouble()...):tali metodi non ”consumano” l’ENTER al termine dell’input equindi una successiva nextLine() perderebbel’acquisizione dell’input raccogliendo una stringa vuota.
Fondamenti di Informatica T-1 Angelo Feraudo 8 / 24
SELEZIONE
• Permette di differenziare il flusso di controllo a secondache sia verificata o meno una condizione
• Il flusso di controllo si ramifica in due (o piu) sequenze diistruzioni alternative
Fondamenti di Informatica T-1 Angelo Feraudo 9 / 24
SELEZIONE: if-else
Fondamenti di Informatica T-1 Angelo Feraudo 10 / 24
SELEZIONE: if-els
Fondamenti di Informatica T-1 Angelo Feraudo 11 / 24
Condizioni : espressioni booleane e operatori utili
Fondamenti di Informatica T-1 Angelo Feraudo 12 / 24
OPERATORI LOGICI e COMPARATIVI
• Uguale → ==;
• Diverso → !=;
• Maggiore → >;
• Maggiore Uguale → >=;
• Minore → <;
• Minore Uguale → <=;
• NOT logico → !;
• AND logico → &&;
• OR logico → ||;• Resto → a%b (Perche questo operatore aritmetico?);
Fondamenti di Informatica T-1 Angelo Feraudo 13 / 24
IF/ELSE: Esempio pratico(1)
OUTPUT: true
Fondamenti di Informatica T-1 Angelo Feraudo 14 / 24
IF/ELSE: Esempio pratico(2)
OUTPUT:
Fondamenti di Informatica T-1 Angelo Feraudo 15 / 24
ESERCIZIO 1 (SVOLTO)
Scrivere un programma che chieda all’utente di inserire un mesedell’anno (sottoforma di stringa) e restituisca in output la stagionecorrispondente.
• Usare if-else
Fondamenti di Informatica T-1 Angelo Feraudo 16 / 24
ESERCIZIO 1 (SOLUZIONE)
Fondamenti di Informatica T-1 Angelo Feraudo 17 / 24
ESERCIZIO 2
Scrivere un programma che chieda all’utente di scegliereun’operazione e inserire i due operandi.Una volta acquisiti questi dati, il programma deve calcolare emostrare a video il risultato.Le operazioni possibili sono addizione, sottrazione, moltiplicazionee divisione.
• Attenzione al maiuscolo!
• Attenzione al divisore (!=0)
• Gli operandi devono essere numeri reali
Fondamenti di Informatica T-1 Angelo Feraudo 18 / 24
ESERCIZIO 2: Esempio output
• Output di operazione corretta
• Output di operazione NON corretta
Fondamenti di Informatica T-1 Angelo Feraudo 19 / 24
ESERCIZIO 2 (SOLUZIONE (1))
Fondamenti di Informatica T-1 Angelo Feraudo 20 / 24
ESERCIZIO 2 (SOLUZIONE (2))
Fondamenti di Informatica T-1 Angelo Feraudo 21 / 24
ESERCIZIO 3
• Una libreria utilizza un sistema di catalogazione usando, perogni libro, dei codici strutturati nel seguente modo:
I Le prime due lettere, in maiuscolo, sono le prime due letteredel nome dell’autore
I L’anno di pubblicazione (da acquisire come INTERO),separato da un trattino dalle precedenti lettere
I Le prime tre lettere del titolo del libro, in maiuscolo,separate da un trattino dall’anno di pubblicazione
I La prima e l’ultima lettera del nome della casa editrice(in minuscolo e tra parentesi tonde)
• Scrivere un programma che, inseriti da input il nomedell’autore, l’anno di pubblicazione e il nome della casaeditrice, stampi a video il corrispondente codice.
Fondamenti di Informatica T-1 Angelo Feraudo 22 / 24
ESERCIZIO 3 (CONTINUA)
Supponiamo che i libri siano catalogati per periodo letterario.Esistono diversi periodi letterari, per semplicita ne useremo 4:
• periodo 0 → range anno di pubblicazione: 1850 - 1900(inclusi)
• periodo 1 → range anno di pubblicazione: 1900 - 1950(esclusi)
• periodo 2 → range anno di pubblicazione: 1950 - 2000(inclusi)
• periodo 3 → range anno di pubblicazione: 2000 - 2050(esclusi)
Si stampi inoltre a video il periodo letterario relativo all’anno dipubblicazione del libro.
Fondamenti di Informatica T-1 Angelo Feraudo 23 / 24
ESERCIZIO 3 (ESEMPI e SUGGERIMENTI)
• Esempio di output:
• Le lettere del nome dell’autore, il titolo del libro e il nomedella casa editrice NON devono contenere spazi al fine digenerare il codice. Dovremo eliminarli prima di estrarre icaratteri utili.
Fondamenti di Informatica T-1 Angelo Feraudo 24 / 24