Exercício - Use fluxos de controle em Go

Concluído

Pratique o que aprendeu neste módulo completando alguns exercícios de codificação. Esses exercícios não são complicados e você encontrará soluções na próxima unidade.

Tente resolver os exercícios por conta própria primeiro. Em seguida, compare os seus resultados com as soluções. Pode sempre rever o módulo se não se lembrar de um detalhe importante.

Escreva um programa FizzBuzz

Primeiro, escreva um programa que imprima números de 1 a 100, com as seguintes alterações:

  • Imprima Fizz se o número for divisível por 3.
  • Imprima Buzz se o número for divisível por 5.
  • Imprima FizzBuzz se o número for divisível por 3 e 5.
  • Imprima o número se nenhum dos casos anteriores corresponder.

Tente usar a switch instrução.

Encontre os primos

Escreva um programa para encontrar todos os números primos com menos de 20. Um número primo é qualquer número maior que 1 que pode ser dividido uniformemente apenas por si mesmo e 1. Ser "dividido uniformemente" significa que não há resto após a operação de divisão. Como a maioria das linguagens de programação, Go fornece uma maneira de verificar se uma operação de divisão produz um restante. Podemos usar o operador de módulo % (sinal de porcentagem).

Neste exercício, você atualizará uma função chamada findprimes para verificar se um número é primo. A função tem um argumento inteiro e retorna um booleano. A função testa se o número de entrada é um primo, verificando se há um restante. Se o número for um primo, a função retornará true.

Use o seguinte trecho de código como ponto de partida e substitua todas as instâncias de ?? pela sintaxe correta:

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 verifica os números de 1 a 20 e imprime o número se for primo. Modifique o exemplo conforme descrito.

  • main Na função, percorra todos os números para verificar. Saia do loop depois de verificar o último número.
  • Ligue para a findprimes função para verificar o número. Se a função retornar true, imprima o prime.
  • No loop, comece a findprimes partir de 2 e repita até que o contador seja maior ou igual ao number valor.
  • Verifique se o number é uniformemente divisível pelo valor do contador atual. Se estiver, saia do loop.
  • Quando o number é prime, retorne true, caso contrário, retorne false.
  • Dica: Certifique-se de lidar corretamente com o caso em que o número de entrada é 1.

Pergunte um número, entre em pânico se for negativo

Escreva um programa que peça um número a um utilizador. Use o seguinte trecho de código como ponto 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 pede um número e imprime-o. Modifique o código de exemplo para:

  • Peça continuamente um número inteiro. A condição de saída para o loop deve ser uma entrada de usuário que seja um número negativo.
  • Travar o programa quando o usuário insere um número negativo. Em seguida, imprima o erro de rastreamento de pilha.
  • Quando o número for 0, imprima 0 is neither negative nor positive. Continue a pedir um número.
  • Quando o número for positivo, imprima You entered: X (onde X está o número inserido). Continue a pedir um número.

Por enquanto, ignore a possibilidade de que o usuário possa inserir algo diferente de um número inteiro.