Tracks
/
Go
Go
/
Ejercicios
/
Compra de un vehículo
Compra de un vehículo

Compra de un vehículo

Ejercicio de aprendizaje

Introducción

Comparación

En Go, los números se pueden comparar con los siguientes operadores relacionales y de igualdad.

Comparación Operador
igual ==
distinto !=
menor <
menor o igual <=
mayor >
mayor o igual >=

El resultado de la comparación siempre es un valor booleano, es decir, true o false.

a := 3

a != 4 // true
a > 5  // false

Los operadores de comparación anteriores también se pueden usar para comparar strings. En ese caso se aplica un orden lexicográfico (de diccionario). Por ejemplo:

	"apple" < "banana"  // true
	"apple" > "banana"  // false

Condicionales

Los condicionales en Go son similares a los condicionales de otros lenguajes. El tipo subyacente de cualquier operación condicional es el tipo bool, que puede tener el valor true o false. Los condicionales se usan a menudo como mecanismos de control de flujo para comprobar distintas condiciones.

Para comprobar un caso en particular se puede usar una sentencia if, que ejecuta su código si la condición subyacente es true, así:

var value string

if value == "val" {
    return "was val"
}

En escenarios con más de un caso, se pueden encadenar varias sentencias if usando las sentencias else if y else.

var number int
result := "This number is "

if number > 0 {
    result += "positive"
} else if number < 0 {
    result += "negative"
} else {
    result += "zero"
}

Las sentencias if también pueden incluir una sentencia corta de inicialización que se puede usar para inicializar una o más variables para la sentencia if. Por ejemplo:

num := 7
if v := 2 * num; v > 10 {
    fmt.Println(v)
} else {
    fmt.Println(num)
}
// Output: 14

Nota: las variables que se crean en la sentencia de inicialización salen del ámbito al terminar la sentencia if.

Instrucciones

En este ejercicio vas a escribir algo de código para ayudarte a prepararte para comprar un vehículo.

Tienes tres tareas: una para determinar si necesitas una licencia, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo usado.

1. Determina si vas a necesitar una licencia de conducir

Algunos tipos de vehículos requieren una licencia de conducir para manejarlos. Supón que solo los tipos "car" y "truck" requieren licencia; todo lo demás se puede manejar sin licencia.

Implementa la función NeedsLicense(kind), que recibe el tipo de vehículo y devuelve un valor Boolean que indica si necesitas una licencia para ese tipo de vehículo.

needLicense := NeedsLicense("car")
// => true

needLicense = NeedsLicense("bike")
// => false

needLicense = NeedsLicense("truck")
// => true

2. Elige entre dos vehículos posibles para comprar

Evalúa tus opciones de vehículos disponibles. Logras reducirlas a dos opciones, pero necesitas ayuda para tomar la decisión final. Para eso, implementa la función ChooseVehicle(option1, option2), que recibe dos vehículos como argumentos y devuelve una decisión que incluye la opción que aparece primero en orden lexicográfico.

vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

3. Calcula una estimación del precio de un vehículo usado

Ahora que tomaste una decisión, quieres asegurarte de obtener un precio justo en la concesionaria. Como te interesa comprar un vehículo usado, el precio depende de la antigüedad del vehículo. Para una estimación aproximada, supón que si el vehículo tiene menos de 3 años, cuesta el 80% del precio original que tenía cuando era nuevo. Si tiene al menos 10 años, cuesta el 50%. Si el vehículo tiene al menos 3 años pero menos de 10, cuesta el 70% del precio original.

Implementa la función CalculateResellPrice(originalPrice, age), que aplica esta lógica usando if, else if y else (hay otras formas si quieres practicar). Recibe el precio original y la antigüedad del vehículo como argumentos y devuelve el precio estimado en la concesionaria.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

Nota: el valor devuelto es un float64.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Go Exercism

¿Todo listo para empezar Compra de un vehículo?

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