Track
/
Go
Go
/
Esercizi
/
Osservatore di uccelli
Osservatore di uccelli

Osservatore di uccelli

Esercizio di apprendimento

Introduzione

Sintassi generale

Il ciclo for è una delle istruzioni più usate per eseguire più volte la stessa logica. In Go è composto dalla parola chiave for, da un'intestazione e da un blocco di codice che contiene il corpo del ciclo racchiuso tra parentesi graffe. L'intestazione è composta da 3 componenti separati da punto e virgola (;): init, condition e post.

for init; condition; post {
  // loop body - code that is executed repeatedly as long as the condition is true
}
  • La componente init è del codice che viene eseguito una sola volta prima che il ciclo inizi.
  • La componente condition deve essere un'espressione che restituisce un valore booleano e stabilisce quando il ciclo deve fermarsi. Il codice all'interno del ciclo viene eseguito finché questa condizione è vera. Non appena l'espressione diventa falsa, il ciclo non esegue più nessuna iterazione.
  • La componente post è del codice che viene eseguito alla fine di ogni iterazione.

Nota: a differenza di altri linguaggi, non ci sono parentesi tonde (()) attorno alle tre componenti dell'intestazione. Anzi, inserirle è un errore di compilazione. Le parentesi graffe ({ }) attorno al corpo del ciclo, invece, sono sempre obbligatorie.

Cicli for: un esempio

Di solito la componente init inizializza una variabile contatore, la condizione controlla se il ciclo deve continuare o fermarsi e la componente post incrementa il contatore alla fine di ogni ripetizione.

for i := 1; i < 10; i++ {
  fmt.Println(i)
}

Questo ciclo stampa i numeri da 1 a 9 (compreso 9). L'ampiezza del passo si definisce spesso con un'istruzione di incremento o decremento, come mostra l'esempio qui sopra.

Istruzioni

Sei un appassionato di birdwatching che tiene traccia di quanti uccelli hanno visitato il tuo giardino. Di solito usi un conteggio su un quaderno per contare gli uccelli, ma per lavorare meglio con i tuoi dati hai digitalizzato i conteggi degli uccelli delle ultime settimane.

1. Determina il numero totale di uccelli che hai contato finora

Iniziamo ad analizzare i dati con una visione d'insieme. Scopri quanti uccelli hai contato in totale da quando hai iniziato a tenere i tuoi registri.

Implementa una funzione TotalBirdCount che accetta uno slice di int contenente il conteggio degli uccelli per ogni giorno. Deve restituire il numero totale di uccelli che hai contato.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34

2. Calcola il numero di uccelli in visita in una settimana specifica

Ora che hai un'idea generale dei tuoi conteggi, vuoi fare un'analisi più dettagliata.

Implementa una funzione BirdsInWeek che accetta uno slice con i conteggi degli uccelli per giorno e un numero di settimana.

Restituisce il numero totale di uccelli che hai contato in quella determinata settimana. Puoi assumere che le settimane siano sempre registrate per intero.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12

3. Correggi un errore di conteggio

Ti sei reso conto che per tutto il tempo in cui cercavi di tenere traccia degli uccelli, ce n'era uno nascosto in un angolo lontano del giardino.

Hai capito che questo uccello passava sempre un giorno sì e uno no nel tuo giardino.

Non sai esattamente dove fosse negli altri giorni, ma di sicuro non nel tuo giardino.

Il tuo intuito da birdwatcher ti dice anche che l'uccello era nel tuo giardino il primo giorno che hai registrato nel tuo array.

Date queste nuove informazioni, scrivi una funzione FixBirdCountLog che prende come argomento uno slice con gli uccelli contati per giorno e restituisce lo slice dopo aver corretto l'errore di conteggio.

birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Go Exercism

Vuoi iniziare Osservatore di uccelli?

Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti166 esercizi e il mentoring di persone reali, tutto gratis.