Ejercicio: uso de flujos de control en Go
Practique lo que ha aprendido en este módulo; para ello, lleve a cabo algunos ejercicios de codificación. Estos desafíos no son complicados y encontrará las soluciones en la siguiente unidad.
Primero, intente resolver los ejercicios por su cuenta. Luego, compare los resultados con las soluciones. Siempre puede repasar el módulo si no recuerda un detalle importante.
Escritura de un programa de FizzBuzz
En primer lugar, escriba un programa que imprima los números del 1 al 100, con los cambios siguientes:
- Imprimir
Fizz
si el número es divisible por 3. - Imprimir
Buzz
si el número es divisible por 5. - Imprimir
FizzBuzz
si el número es divisible por 3 y por 5. - Imprimir el número si ninguno de los casos anteriores coincide.
Pruebe a usar la instrucción switch
.
Buscar los números primos
Escriba un programa para buscar todos los números primos inferiores a 20. Un número primo es cualquier número mayor que 1 que se puede dividir uniformemente solo por sí mismo y por 1. "Dividirse uniformemente" significa que no hay resto después de la operación de división. Al igual que la mayoría de los lenguajes de programación, Go proporciona una manera de comprobar si una operación de división genera un resto. Podemos usar el operador de módulo %
(signo de porcentaje).
En este ejercicio, actualizará una función llamada findprimes
para comprobar si un número es primo. La función tiene un argumento entero y devuelve un valor booleano. La función comprueba si el número de entrada es primo comprobando si hay un resto. Si el número es un número primo, la función devuelve true.
Use el siguiente fragmento de código como punto de partida y reemplace todas las instancias de ??
con la sintaxis correcta:
package main
import "fmt"
func findprimes(number int) bool {
for i := 2; i ?? number; i ?? {
if number ?? i == ?? {
return false
}
}
if number ?? {
return true
} else {
return false
}
}
func main() {
fmt.Println("Prime numbers less than 20:")
for number := ??; number ?? 20; number++ {
if ?? {
fmt.Printf("%v ", number)
}
}
}
Este programa comprueba los números del 1 al 20 e imprime el número si es un número primo. Modifique el ejemplo como se describe.
- En la función
main
, recorra en bucle todos los números para comprobarlos. Salga del bucle después de comprobar el último número. - Llame a la función
findprimes
para comprobar el número. Si la función devuelve true, imprima el número primo. - En el bucle de
findprimes
, comience desde 2 y repita hasta que el contador sea mayor o igual que el valor denumber
. - Compruebe si el valor de
number
es divisible uniformemente por el valor del contador actual. Si es así, salga del bucle. - Cuando el valor de
number
sea primo, devuelva true; de lo contrario, devuelva false. - Sugerencia: asegúrese de controlar correctamente el caso en el que el número de entrada sea 1.
Pedir un número, emitir una alerta de pánico si es negativo
Escriba un programa que pida a un usuario un número. Use el siguiente fragmento de código como punto de partida:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Este programa solicita un número y lo imprime. Modifique el código de ejemplo para que:
- Se pida continuamente un número entero. La condición de salida del bucle deba ser una entrada de usuario que sea un número negativo.
- Se bloquee el programa cuando el usuario escriba un número negativo. Después, se imprima el error de seguimiento de la pila.
- Cuando el número sea 0, se imprima
0 is neither negative nor positive
. Siga pidiendo un número. - Cuando el número sea positivo, se imprima
You entered: X
(dondeX
sea el número escrito). Siga pidiendo un número.
Por ahora, omita la posibilidad de que el usuario pueda escribir algo diferente a un número entero.