---------- Lezione 09 ---------- Ciascun esercizio dovrà essere caricato su upload. Istruzioni per lettura "finta" da file: go run nomeProgramma.go < nomeFile Negli esempi di esecuzione proposti, sono stati usati i seguenti file di testo: --------- file_uno: --------- "Raphél maì amèche zabì almi", cominciò a gridar la fiera bocca, cui non si convenia più dolci salmi. E ’l duca mio ver lui: "Anima sciocca, tienti col corno, e con quel ti disfoga quand’ira o altra passion ti tocca!" --------- file_due: --------- il gatto è sul tavolo I programmi devono gestire testi di lunghezza arbitraria (come numero di righe o di parole) ------------------------------- ESERCIZIO 1: stampaAlternata.go ------------------------------- Dato un testo in input, estrai e stampa prima le righe pari e poi le dispari. La prima riga è la riga uno. Esempio: go run stampaAlternata.go < file_uno cominciò a gridar la fiera bocca, E ’l duca mio ver lui: «Anima sciocca, quand’ira o altra passion ti tocca! "Raphél maì amèche zabì almi", cui non si convenia più dolci salmi. tienti col corno, e con quel ti disfoga ------------------------------ ESERCIZIO 2: contaAccentate.go ------------------------------ Dato un testo in input, conta quante lettere accentate ci sono (à, è, é, ì, ò, ù). Suggerimento: utilizzare (Scanner.Split(bufio.ScanRunes)) Esempio: go run contaAccentate.go < file_uno Accenti trovati: 6 ---------------------------------- ESERCIZIO 3: contaPunteggiatura.go ---------------------------------- Dato un testo in input, conta quante volte ciascun carattere di punteggiatura (. , ; : ! ? " ') viene ripetuto. Suggerimento: utilizzare (Scanner.Split(bufio.ScanBytes)) Esempio: go run contaPunteggiatura.go < file_uno map[":4 ,:4 .:1 ::1 !:1] ---------------------------------- ESERCIZIO 4: parolaPresente.go ---------------------------------- Verifica se una data parola (già codificata all'interno del codice) è presente (come parola o anche come sottostringa di una parola) nel testo fornito in input. Nel caso in cui lo sia, stampa in che posizione si trova la parola (o la sua sovrastringa), altrimenti stampa "not found". La prima parola si trova in posizione 1. Suggerimento: (Scanner.Split(bufio.ScanWords) Esempio: //parola : duca go run parolaPresente.go < file_uno found at 21 //parola : cammino go run parolaPresente.go < file_uno not found //parola: corno go run parolaPresente.go < file_uno found at 29 ----------------------------- ESERCIZIO 5: stampaInversa.go ----------------------------- Dato un testo in input, stamparlo invertendo l'ordine delle parole (stampando l'ultima per prima, la penultima per seconda, ecc) Suggerimento: utilizza (myScanner.Split(bufio.ScanWords)) Esempio: go run stampaInversa.go < file_due tavolo sul è gatto il -------------------------------- ESERCIZIO 6: lineePariDispari.go -------------------------------- Estrai da un testo le righe che contengono un numero pari di rune e quelle che contengono un numero dispari e stampale (prima tutte le pari e poi tutte le dispari) Esempio: go run lineePariDispari.go < file_uno Linee pari: [tienti col corno, e con quel ti disfoga quand’ira o altra passion ti tocca!"] Linee dispari: ["Raphél maì amèche zabì almi", cominciò a gridar la fiera bocca, cui non si convenia più dolci salmi. E ’l duca mio ver lui: "Anima sciocca, ] ----------------------------- ESERCIZIO 7: parolaInLinea.go ----------------------------- Estrai da un testo ogni riga che contiene una certa parola (simil grep) e stampala Esempio: //parola : ti go run parolaInLinea.go < file_uno [tienti col corno, e con quel ti disfoga quand’ira o altra passion ti tocca!"] Potete provare il seguente comando: <> e vedere che il risultato è (praticamente) lo stesso