Operadores de comparação comparam dois valores do mesmo tipo e retornam um valor Bool (true ou false).
Se você tentar comparar valores de tipos diferentes, o compilador gera um erro.
Os operadores de comparação padrão em Swift são:
| Operador | Descrição | Exemplo |
|---|---|---|
== |
Igual a |
1 == 1 (true) |
!= |
Diferente de |
1 != 2 (true) |
< |
Menor que |
4 < 5 (true) |
<= |
Menor ou igual a |
4 <= 4 (true) |
> |
Maior que |
3 > 1 (true) |
>= |
Maior ou igual a |
2 >= 2 (true) |
Uma instrução condicional executa código com base em se uma condição é avaliada como true ou false.
A mais comum é a condicional, que executa um bloco de código somente quando sua condição é true.
Escreva uma condicional usando a palavra-chave if, seguida da condição e do bloco de código entre chaves:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Você pode combinar um if com uma cláusula else para executar um código alternativo quando a condição for false:
let precipitationInMM = 0.5
if precipitationInMM > 0.5 {
print("You will need an umbrella")
} else {
print("You will not need an umbrella")
}
// Prints "You will not need an umbrella"
Para testar múltiplas condições em sequência, encadeie instruções usando else if.
Uma condicional não exige um bloco else, mas você pode incluir um para lidar com casos em que nenhuma das condições corresponde:
let favoriteFruit = "Apple"
if favoriteFruit == "Banana" {
print("Your favorite fruit is a banana")
} else if favoriteFruit == "Orange" {
print("Your favorite fruit is an orange")
} else if favoriteFruit == "Apple" {
print("Your favorite fruit is an apple")
} else {
print("Your favorite fruit is not a banana, orange, or apple")
}
// Prints "Your favorite fruit is an apple"
No Swift moderno, condicionais também podem ser usadas como expressões que produzem um valor. Cada bloco é avaliado como um valor, facilitando a atribuição condicional de resultados:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
O operador condicional ternário é uma forma concisa de escrever uma expressão if-else.
Ele avalia uma condição e retorna um de dois valores dependendo se essa condição é true ou false.
O operador usa três partes: condition ? trueExpression : falseExpression.
Se condition for avaliada como true, trueExpression é avaliada e retornada; caso contrário, falseExpression é avaliada e retornada.
O operador ternário é ideal para escolhas simples, de uma linha:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
O exemplo acima é um equivalente compacto de:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
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ê consegue arcar com as parcelas mensais, uma para descobrir de qual habilitação você vai precisar e uma para estimar o preço aceitável de um veículo usado.
As concessionárias da sua cidade estão todas com uma promoção de cinco anos com 0% de juros, da qual você gostaria de aproveitar. Mas você não tem certeza se consegue arcar com as parcelas mensais do carro que quer.
A parcela mensal é o preço total do carro dividido pelo número de meses do período de cinco anos.
Implemente a função canIBuy(vehicle:price:monthlyBudget:), que recebe os seguintes argumentos:
vehicle - O nome do veículo que você quer comprar.price - O preço do veículo que você quer comprar.monthlyBudget - A quantia de dinheiro que você pode pagar a cada mês.A função deve retornar a seguinte mensagem de acordo com as seguintes condições:
"Yes! I'm getting a <vehicle>"."I'll have to be frugal if I want a <vehicle>"."Darn! No <vehicle> for me".canIBuy(vehicle: "1974 Ford Pinto", price: 516.32, monthlyBudget: 100.00)
// returns "Yes! I'm getting a 1974 Ford Pinto"
canIBuy(vehicle: "2011 Bugatti Veyron", price: 2_250_880.00, monthlyBudget: 10000.00)
// returns "Darn! No 2011 Bugatti Veyron for me"
canIBuy(vehicle: "2020 Indian FTR 1200", price: 12_500, monthlyBudget: 200)
// returns "I'll have to be frugal if I want a 2020 Indian FTR 1200"
Você decidiu comprar um veículo usado e precisa determinar de qual tipo de habilitação você vai precisar para conduzi-lo.
Implemente a função licenseType(numberOfWheels:), que recebe o argumento numberOfWheels, o número de rodas do veículo que você quer comprar.
A função deve retornar a seguinte mensagem de acordo com as seguintes condições:
"You will need a motorcycle license for your vehicle"."You will need an automobile license for your vehicle"."You will need a commercial trucking license for your vehicle"."We do not issue licenses for those types of vehicles".licenseType(numberOfWheels: 2)
// returns "You will need a motorcycle license for your vehicle"
licenseType(numberOfWheels: 6)
// returns "You will need an automobile license for your vehicle"
licenseType(numberOfWheels: 18)
// returns "You will need a commercial trucking license for your vehicle"
licenseType(numberOfWheels: 0)
// returns "We do not issue licenses for those types of vehicles"
Agora que você tomou sua decisão, quer garantir um preço justo na concessionária. Como você quer 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 de quando era zero. Se tiver pelo menos 10 anos, custa 50%. Se o veículo tiver pelo menos 3 anos, mas não mais de 10 anos, custa 70% do preço original.
Implemente a função calculateResellPrice(originalPrice:yearsOld:), que recebe os argumentos originalPrice, que guarda o preço original do veículo, e yearsOld, que guarda a idade do veículo em anos.
A função deve retornar o preço de revenda do veículo.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Crie sua conta no Exercism para aprender e dominar Swift com 35 conceitos116 exercícios e mentoria humana de verdade, tudo de graça.