Ejercicio: uso de flujos de control en Go

Completado

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 de number.
  • 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 (donde X 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.