Rutas
/
Go
Go
/
Ejercicios
/
Las espléndidas lasañas de Gopher
Las espléndidas lasañas de Gopher

Las espléndidas lasañas de Gopher

Ejercicio de aprendizaje

Introducción

Go es un lenguaje de programación compilado y de tipado estático. Este ejercicio presenta tres características fundamentales del lenguaje: los paquetes, las funciones y las variables.

Paquetes

Las aplicaciones de Go se organizan en paquetes. Un paquete es un conjunto de archivos fuente que se encuentran en el mismo directorio. Todos los archivos fuente de un directorio deben compartir el mismo nombre de paquete. Cuando se importa un paquete, solo se pueden usar o consultar las entidades (funciones, tipos, variables, constantes) cuyos nombres empiecen por mayúscula. El estilo recomendado para nombrar en Go es escribir los identificadores en camelCase, salvo los que deban ser accesibles desde otros paquetes, que deben escribirse en PascalCase.

package lasagna

Variables

Go tiene tipado estático, lo que significa que todas las variables deben tener un tipo definido en tiempo de compilación.

Las variables se pueden definir especificando un tipo de forma explícita:

var explicit int // Explicitly typed

También puedes usar un inicializador, y el compilador asignará a la variable un tipo que coincida con el del inicializador.

implicit := 10   // Implicitly typed as an int

Una vez declaradas, se pueden asignar valores a las variables con el operador =. Una vez declarada, el tipo de una variable no puede cambiar nunca.

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

Las constantes contienen un dato igual que las variables, pero su valor no puede cambiar durante la ejecución del programa.

Las constantes se definen con la palabra clave const y pueden ser números, caracteres, strings o valores booleanos:

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

Funciones

Las funciones de Go aceptan cero o más parámetros. Los parámetros deben tener un tipo explícito; no hay inferencia de tipos.

Los valores se devuelven desde las funciones con la palabra clave return.

Una función se invoca indicando el nombre de la función y pasando argumentos para cada uno de sus parámetros.

Ten en cuenta que Go admite dos tipos de comentarios. Los comentarios de una sola línea van precedidos de //, y los comentarios multilínea se insertan entre /* y */.

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
}

Instrucciones

En este ejercicio vas a escribir algo de código para ayudarte a cocinar una lasaña espectacular siguiendo tu libro de cocina favorito.

Tienes cuatro tareas, todas relacionadas con el tiempo que se tarda en cocinar la lasaña.

1. Define el tiempo esperado en el horno en minutos

Define la constante OvenTime con cuántos minutos debe estar la lasaña en el horno. Según el libro de cocina, el tiempo esperado en el horno en minutos es 40:

OvenTime
// => 40

2. Calcula el tiempo restante en el horno en minutos

Define la función RemainingOvenTime() que toma como parámetro los minutos reales que la lasaña ha estado en el horno y devuelve cuántos minutos tiene que seguir estando la lasaña en el horno, según el tiempo esperado en el horno en minutos de la tarea anterior.

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

RemainingOvenTime(30)
// => 10

3. Calcula el tiempo de preparación en minutos

Define la función PreparationTime que toma como parámetro el número de capas que añadiste a la lasaña y devuelve cuántos minutos pasaste preparando la lasaña, suponiendo que cada capa te lleva 2 minutos de preparación.

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

PreparationTime(2)
// => 4

4. Calcula el tiempo de trabajo transcurrido en minutos

Define la función ElapsedTime que toma dos parámetros: el primer parámetro es el número de capas que añadiste a la lasaña, y el segundo parámetro es el número de minutos que la lasaña ha estado en el horno. La función debe devolver cuántos minutos en total has trabajado en cocinar la lasaña, que es la suma del tiempo de preparación en minutos y el tiempo en minutos que la lasaña ha estado en el horno en ese momento.

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

ElapsedTime(3, 20)
// => 26
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Las espléndidas lasañas de Gopher?

Regístrate en Exercism para aprender y dominar Go con 35 conceptos167 ejercicios y mentoría humana real, todo gratis.