Trilhas
/
Go
Go
/
Exercícios
/
Compra de veículo
Compra de veículo

Compra de veículo

Exercício de aprendizagem

Introdução

Comparação

Em Go, números podem ser comparados usando os seguintes operadores relacionais e de igualdade.

Comparação Operador
igual ==
diferente !=
menor <
menor ou igual <=
maior >
maior ou igual >=

O resultado da comparação é sempre um valor Boolean, ou seja, true ou false.

a := 3

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

Os operadores de comparação acima também podem ser usados para comparar strings. Nesse caso, aplica-se uma ordem lexicográfica (de dicionário). Por exemplo:

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

Condicionais

As condicionais em Go são parecidas com as condicionais de outras linguagens. O tipo subjacente de qualquer operação condicional é o tipo bool, que pode ter o valor true ou false. As condicionais costumam ser usadas como mecanismos de controle de fluxo para verificar diversas condições.

Para verificar um caso específico, pode-se usar uma condicional if, que executa seu código se a condição subjacente for true, assim:

var value string

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

Em cenários com mais de um caso, várias condicionais if podem ser encadeadas usando as instruções else if e else.

var number int
result := "This number is "

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

As condicionais if também podem incluir uma instrução curta de inicialização, que pode ser usada para inicializar uma ou mais variáveis para a condicional if. Por exemplo:

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

Observação: quaisquer variáveis criadas na instrução de inicialização saem do escopo após o fim da condicional if.

Instruções

Neste exercício, você vai escrever um pouco de código para ajudar a se preparar para comprar um veículo.

Você tem três tarefas: uma para determinar se você precisa de uma carteira de motorista, uma para ajudar a escolher entre dois veículos e uma para estimar o preço aceitável de um veículo usado.

1. Descubra se você vai precisar de carteira de motorista

Alguns tipos de veículo exigem carteira de motorista para serem conduzidos. Considere que apenas os tipos "car" e "truck" exigem carteira; todo o resto pode ser conduzido sem carteira.

Implemente a função NeedsLicense(kind) que recebe o tipo de veículo e retorna um booleano indicando se você precisa de carteira para aquele tipo de veículo.

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

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

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

2. Escolha entre dois veículos em potencial para comprar

Você avalia suas opções de veículos disponíveis. Você consegue reduzi-las a duas opções, mas precisa de ajuda para tomar a decisão final. Para isso, implemente a função ChooseVehicle(option1, option2) que recebe dois veículos como argumentos e retorna uma decisão que inclui a opção que vem primeiro em ordem lexicográfica.

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. Calcule uma estimativa para o preço de um veículo usado

Agora que você tomou uma decisão, você quer garantir que vai pagar um preço justo na concessionária. Como você está interessado em comprar um veículo usado, o preço depende de quantos anos o veículo tem. Para uma estimativa aproximada, considere que, se o veículo tiver menos de 3 anos, ele custa 80% do preço original que tinha quando era novo. Se tiver pelo menos 10 anos, custa 50%. Se o veículo tiver pelo menos 3 anos mas menos de 10 anos, custa 70% do preço original.

Implemente a função CalculateResellPrice(originalPrice, age) que aplica essa lógica usando if, else if e else (existem outras formas, se você quiser praticar). Ela recebe o preço original e a idade do veículo como argumentos e retorna o preço estimado na concessionária.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

Observação: o valor de retorno é um float64.

Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Compra de veículo?

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