Solutions : Exercices sur les flux de contrôle
Examinons les solutions possibles pour chacun des exercices.
Écrire un programme FizzBuzz
Une solution pour l’exercice d’utilisation de l’instruction switch
peut se présenter comme suit :
package main
import (
"fmt"
"strconv"
)
func fizzbuzz(num int) string {
switch {
case num%15 == 0:
return "FizzBuzz"
case num%3 == 0:
return "Fizz"
case num%5 == 0:
return "Buzz"
}
return strconv.Itoa(num)
}
func main() {
for num := 1; num <= 100; num++ {
fmt.Println(fizzbuzz(num))
}
}
Pour le cas FizzBuzz
, vous multipliez 3 par 5, car les résultats sont divisibles par 3 et 5. Vous pouvez également inclure une condition AND
pour vérifier si un nombre est divisible par 3 et 5.
Trouver les nombres premiers
Une solution à l’exercice consistant à rechercher les nombres premiers inférieurs à 20 peut se présenter comme suit :
package main
import "fmt"
func findprimes(number int) bool {
for i := 2; i < number; i++ {
if number % i == 0 {
return false
}
}
if number > 1 {
return true
} else {
return false
}
}
func main() {
fmt.Println("Prime numbers less than 20:")
for number := 1; number <= 20; number++ {
if findprimes(number) {
fmt.Printf("%v ", number)
}
}
}
Dans la fonction main
, nous effectuons une boucle de 1 à 20 et appelons la fonction findprimes
pour vérifier le nombre actuel. Dans la fonction findprimes
, nous démarrons la boucle for
à 2 et répétons jusqu’à ce que la valeur du compteur soit supérieure à la valeur number
. Si number
est uniformément divisible par le compteur, number
n’est pas un nombre premier. Si nous terminons la boucle sans quitter, le nombre est soit 1, soit un nombre premier.
Voici le format :
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Demander un nombre, mettre en état d’alerte si celui-ci est négatif
La solution à l’exercice pour essayer un appel panic
peut se présenter comme suit :
package main
import "fmt"
func main() {
val := 0
for {
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
switch {
case val < 0:
panic("You entered a negative number!")
case val == 0:
fmt.Println("0 is neither negative nor positive")
default:
fmt.Println("You entered:", val)
}
}
}
N’oubliez pas que l’idée est d’effectuer une boucle infinie et une instruction switch
.