Soluções - Exercícios de fluxo de controlo
Vamos ver possíveis soluções para cada um dos exercícios.
Escreva um programa FizzBuzz
Uma solução para o exercício de usar a switch
instrução poderia ser algo assim:
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))
}
}
Para o FizzBuzz
caso, você multiplica 3 por 5 porque os resultados são divisíveis por 3 e 5. Você também pode incluir uma AND
condição para verificar se um número é divisível por 3 e 5.
Encontre os primos
Uma solução para o exercício de encontrar os números primos inferiores a 20 poderia ser algo assim:
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)
}
}
}
Na função, fazemos um main
loop de 1 a 20 e chamamos a findprimes
função para verificar o número atual. findprimes
Na função, iniciamos o for
loop em 2 e repetimos até que o contador seja maior do que o number
valor. Se o number
é uniformemente divisível pelo contador, o number
não é prime. Se completarmos o loop sem sair, o número é 1 ou é primo.
Eis o resultado:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Pergunte um número, entre em pânico se for negativo
A solução para o exercício de tentar uma panic
chamada poderia ser algo assim:
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)
}
}
}
Lembre-se, a ideia é praticar um loop infinito e uma switch
declaração.