Solutions : Exercices sur les flux de contrôle

Effectué

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.