Percursos
/
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, os números podem ser comparados com 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 semelhantes às 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 são frequentemente usadas como mecanismos de controlo de fluxo para verificar várias condições.

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

var value string

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

Em situações com mais do que um caso, podem encadear-se várias condicionais if com as cláusulas 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 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. Por exemplo:

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

Nota: quaisquer variáveis criadas na instrução de inicialização saem do âmbito após o fim da condicional.

Instruções

Neste exercício, vais escrever algum código para te ajudar a preparar-te para comprar um veículo.

Tens três tarefas: uma para determinar se precisas de carta de condução, outra para te ajudar a escolher entre dois veículos e outra para estimar o preço aceitável de um veículo usado.

1. Determinar se vais precisar de carta de condução

Alguns tipos de veículos exigem carta de condução para serem conduzidos. Assume que apenas os tipos "car" e "truck" exigem carta; todos os outros podem ser conduzidos sem carta.

Implementa a função NeedsLicense(kind), que recebe o tipo de veículo e devolve um Boolean que indica se precisas de carta para esse tipo de veículo.

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

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

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

2. Escolher entre dois veículos potenciais para comprar

Avalias as tuas opções de veículos disponíveis. Consegues reduzi-las a duas opções, mas precisas de ajuda para tomar a decisão final. Para isso, implementa a função ChooseVehicle(option1, option2), que recebe dois veículos como argumentos e devolve uma decisão que inclui a opção que vem primeiro por 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. Calcular uma estimativa para o preço de um veículo usado

Agora que tomaste uma decisão, queres garantir que consegues um preço justo no stand. Como estás interessado em comprar um veículo usado, o preço depende da idade do veículo. Para uma estimativa aproximada, assume que, se o veículo tiver menos de 3 anos, 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.

Implementa a função CalculateResellPrice(originalPrice, age), que aplica esta lógica usando if, else if e else (há outras formas, se quiseres praticar). Recebe o preço original e a idade do veículo como argumentos e devolve o preço estimado no stand.

CalculateResellPrice(1000, 1)
// => 800

CalculateResellPrice(1000, 5)
// => 700

CalculateResellPrice(1000, 15)
// => 500

Nota que o valor devolvido é um float64.

Editar via GitHub A ligação abre numa nova janela ou separador
Go Exercism

Estás pronto para começar Compra de veículo?

Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.