Parcours
/
Go
Go
/
Exercices
/
Observateur d'oiseaux
Observateur d'oiseaux

Observateur d'oiseaux

Exercice d'apprentissage

Introduction

Syntaxe générale

La boucle for est l'une des instructions les plus couramment utilisées pour exécuter une logique de manière répétée. En Go, elle se compose du mot-clé for, d'un en-tête et d'un bloc de code qui contient le corps de la boucle entouré d'accolades. L'en-tête se compose de 3 composants séparés par des points-virgules ; : init, condition et post.

for init; condition; post {
  // loop body - code that is executed repeatedly as long as the condition is true
}
  • Le composant init est du code qui s'exécute une seule fois avant le début de la boucle.
  • Le composant condition doit être une expression qui s'évalue en un booléen et qui contrôle le moment où la boucle doit s'arrêter. Le code à l'intérieur de la boucle s'exécute tant que cette condition est vraie. Dès que cette expression est fausse, plus aucune itération de la boucle ne s'exécute.
  • Le composant post est du code qui s'exécute à la fin de chaque itération.

Remarque : Contrairement à d'autres langages, il n'y a pas de parenthèses () autour des trois composants de l'en-tête. En fait, insérer de telles parenthèses est une erreur de compilation. Cependant, les accolades { } qui entourent le corps de la boucle sont toujours obligatoires.

Boucles for - un exemple

Le composant init initialise généralement une variable compteur, le composant condition vérifie si la boucle doit continuer ou s'arrêter et le composant post incrémente généralement le compteur à la fin de chaque répétition.

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

Cette boucle affiche les nombres de 1 à 9 (9 compris). Définir le pas se fait souvent à l'aide d'une instruction d'incrémentation ou de décrémentation, comme le montre l'exemple ci-dessus.

Instructions

Tu es un observateur d'oiseaux passionné et tu gardes une trace du nombre d'oiseaux qui ont visité ton jardin. D'habitude, tu tiens un décompte dans un carnet pour compter les oiseaux, mais pour mieux exploiter tes données, tu as numérisé les comptages d'oiseaux des dernières semaines.

1. Détermine le nombre total d'oiseaux que tu as comptés jusqu'ici

Commençons par analyser les données pour en avoir une vue d'ensemble. Découvre combien d'oiseaux tu as comptés au total depuis que tu as commencé à tenir tes relevés.

Implémente une fonction TotalBirdCount qui accepte un slice d'int contenant le nombre d'oiseaux comptés par jour. Elle doit renvoyer le nombre total d'oiseaux que tu as comptés.

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

2. Calcule le nombre d'oiseaux visiteurs d'une semaine précise

Maintenant que tu as une idée générale de tes comptages d'oiseaux, tu veux faire une analyse plus fine.

Implémente une fonction BirdsInWeek qui accepte un slice contenant le nombre d'oiseaux comptés par jour et un numéro de semaine.

Elle renvoie le nombre total d'oiseaux que tu as comptés dans cette semaine précise. Tu peux considérer que les semaines sont toujours suivies en entier.

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

3. Corrige une erreur de comptage

Tu t'es rendu compte que pendant tout le temps où tu essayais de suivre les oiseaux, un oiseau se cachait dans un coin éloigné du jardin.

Tu as compris que cet oiseau passait toujours un jour sur deux dans ton jardin.

Tu ne sais pas exactement où il était entre ces jours-là, mais en tout cas pas dans ton jardin.

Ton intuition d'observateur d'oiseaux te dit aussi que l'oiseau était dans ton jardin le premier jour que tu as répertorié dans ta liste.

Avec ces nouvelles informations, écris une fonction FixBirdCountLog qui prend en argument un slice contenant le nombre d'oiseaux comptés par jour et qui renvoie le slice après avoir corrigé l'erreur de comptage.

birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Go Exercism

Prêt à commencer Observateur d'oiseaux ?

Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.