Soluciones: ejercicios sobre el flujo de control
Echemos un vistazo a las posibles soluciones para cada uno de los ejercicios.
Escritura de un programa de FizzBuzz
Una solución para el ejercicio sobre el uso de la instrucción switch
podría ser algo parecido a esto:
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))
}
}
En el caso de FizzBuzz
, se multiplica 3 por 5 porque los resultados son divisibles por 3 y por 5. También puede incluir una condición AND
para comprobar si un número es divisible por 3 y por 5.
Buscar los números primos
Una solución para el ejercicio sobre encontrar los números primos inferiores a 20 podría ser algo parecido a esto:
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)
}
}
}
En la función main
, se recorre en bucle del 1 a 20 y se llama a la función findprimes
para comprobar el número actual. En la función findprimes
, se inicia el bucle for
en 2 y se repite hasta que el contador sea mayor que el valor de number
. Si el valor de number
se puede dividir uniformemente por el contador, el valor de number
no es un número primo. Si completamos el bucle sin salir, el número es 1 o es primo.
Este es el resultado:
Prime numbers less than 20:
2 3 5 7 11 13 17 19
Pedir un número, emitir una alerta de pánico si es negativo
La solución del ejercicio para probar una llamada a panic
podría ser algo parecido a esto:
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)
}
}
}
Recuerde que la idea es practicar un bucle infinito y una instrucción switch
.