Trilhas
/
Go
Go
/
Exercícios
/
A lasanha maravilhosa do Gopher
A lasanha maravilhosa do Gopher

A lasanha maravilhosa do Gopher

Exercício de aprendizagem

Introdução

Go é uma linguagem de programação compilada e de tipagem estática. Este exercício apresenta três recursos importantes da linguagem: pacotes, funções e variáveis.

Pacotes

Aplicações Go são organizadas em pacotes. Um pacote é uma coleção de arquivos-fonte localizados no mesmo diretório. Todos os arquivos-fonte em um diretório devem compartilhar o mesmo nome de pacote. Quando um pacote é importado, apenas entidades (funções, tipos, variáveis, constantes) cujos nomes começam com letra maiúscula podem ser usadas / acessadas. O estilo recomendado de nomenclatura em Go é que os identificadores sejam nomeados usando camelCase, exceto aqueles que devem ser acessíveis entre pacotes, que devem usar PascalCase.

package lasagna

Variáveis

Go tem tipagem estática, o que significa que todas as variáveis devem ter um tipo definido em tempo de compilação.

Variáveis podem ser definidas especificando explicitamente um tipo:

var explicit int // Explicitly typed

Você também pode usar um inicializador, e o compilador atribuirá à variável o tipo que corresponde ao tipo do inicializador.

implicit := 10   // Implicitly typed as an int

Uma vez declaradas, as variáveis podem receber valores usando o operador =. Uma vez declarada, o tipo de uma variável nunca pode mudar.

count := 1 // Assign initial value
count = 2  // Update to new value

count = false // This throws a compiler error due to assigning a non `int` type

Constantes

Constantes guardam um dado, assim como as variáveis, mas seu valor não pode mudar durante a execução do programa.

Constantes são definidas usando a palavra-chave const e podem ser números, caracteres, strings ou valores Boolean:

const Age = 21 // Defines a numeric constant 'Age' with the value of 21

Funções

As funções Go aceitam zero ou mais parâmetros. Os parâmetros devem ser tipados explicitamente, não há inferência de tipo.

Os valores são retornados de funções usando a palavra-chave return.

Uma função é invocada especificando o nome da função e passando argumentos para cada um dos parâmetros da função.

Repare que Go suporta dois tipos de comentários. Comentários de uma única linha são precedidos por // e comentários de várias linhas são inseridos entre /* e */.

package greeting

// Hello is a public function.
func Hello (name string) string {
    return hi(name)
}

// hi is a private function.
func hi (name string) string {
    return "hi " + name
}

Instruções

Neste exercício você vai escrever um pouco de código para ajudar a preparar uma lasanha incrível do seu livro de receitas favorito.

Você tem quatro tarefas, todas relacionadas ao tempo gasto no preparo da lasanha.

1. Defina o tempo esperado no forno, em minutos

Defina a constante OvenTime com quantos minutos a lasanha deve ficar no forno. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40:

OvenTime
// => 40

2. Calcule o tempo restante no forno, em minutos

Defina a função RemainingOvenTime() que recebe como parâmetro os minutos que a lasanha já passou no forno e retorna quantos minutos a lasanha ainda precisa ficar no forno, com base no tempo esperado no forno, em minutos, da tarefa anterior.

func RemainingOvenTime(actual int) int {
    // TODO
}

RemainingOvenTime(30)
// => 10

3. Calcule o tempo de preparo, em minutos

Defina a função PreparationTime que recebe como parâmetro o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, considerando que cada camada leva 2 minutos para preparar.

func PreparationTime(numberOfLayers int) int {
    // TODO
}

PreparationTime(2)
// => 4

4. Calcule o tempo total de trabalho, em minutos

Defina a função ElapsedTime que recebe dois parâmetros: o primeiro parâmetro é o número de camadas que você adicionou à lasanha, e o segundo parâmetro é o número de minutos que a lasanha está no forno. A função deve retornar quantos minutos no total você trabalhou no preparo da lasanha, ou seja, a soma do tempo de preparo, em minutos, com o tempo, em minutos, que a lasanha passou no forno até o momento.

func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
    // TODO
}

ElapsedTime(3, 20)
// => 26
Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar A lasanha maravilhosa do Gopher?

Crie sua conta no Exercism para aprender e dominar Go com 35 conceitos167 exercícios e mentoria humana de verdade, tudo de graça.