Exercício - Use fluxos de controle em Go
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 aonumber
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
(ondeX
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.