Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es...

24
Fondamenti di Informatica T-1 Stringhe e Istruzioni di selezione Tutor: Angelo Feraudo [email protected] a.a. 2018/2019 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 24

Transcript of Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es...

Page 1: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

Fondamenti di Informatica T-1Stringhe e Istruzioni di selezione

Tutor:Angelo Feraudo

[email protected]

a.a. 2018/2019

Fondamenti di Informatica T-1 Angelo Feraudo 1 / 24

Page 2: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 3: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 4: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 5: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 6: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 7: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 8: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 9: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 10: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

SELEZIONE: if-else

Fondamenti di Informatica T-1 Angelo Feraudo 10 / 24

Page 11: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

SELEZIONE: if-els

Fondamenti di Informatica T-1 Angelo Feraudo 11 / 24

Page 12: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

Condizioni : espressioni booleane e operatori utili

Fondamenti di Informatica T-1 Angelo Feraudo 12 / 24

Page 13: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 14: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

IF/ELSE: Esempio pratico(1)

OUTPUT: true

Fondamenti di Informatica T-1 Angelo Feraudo 14 / 24

Page 15: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

IF/ELSE: Esempio pratico(2)

OUTPUT:

Fondamenti di Informatica T-1 Angelo Feraudo 15 / 24

Page 16: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 17: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

ESERCIZIO 1 (SOLUZIONE)

Fondamenti di Informatica T-1 Angelo Feraudo 17 / 24

Page 18: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 19: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

ESERCIZIO 2: Esempio output

• Output di operazione corretta

• Output di operazione NON corretta

Fondamenti di Informatica T-1 Angelo Feraudo 19 / 24

Page 20: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

ESERCIZIO 2 (SOLUZIONE (1))

Fondamenti di Informatica T-1 Angelo Feraudo 20 / 24

Page 21: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

ESERCIZIO 2 (SOLUZIONE (2))

Fondamenti di Informatica T-1 Angelo Feraudo 21 / 24

Page 22: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 23: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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

Page 24: Fondamenti di Informatica T-1 · 2019-03-18 · Creazione di una stringa in Java: I String es stringa1 = "Ciao"; I String es stringa2 = new String("Ciao"); N.B. es stringa1 e possibile

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