Kurzusok
/
Swift
Swift
/
Feladatok
/
Bosszantó járművásárlás
Bosszantó járművásárlás

Bosszantó járművásárlás

Tanulófeladat

Bevezetés

Összehasonlító operátorok

Az összehasonlító operátorok két azonos típusú értéket hasonlítanak össze, és egy Bool értéket (true vagy false) adnak vissza. Ha különböző típusú értékeket próbálsz összehasonlítani, a fordító hibát jelez.

A Swift szabványos összehasonlító operátorai:

Operátor Leírás Példa
== egyenlő 1 == 1 (igaz)
!= nem egyenlő 1 != 2 (igaz)
< kisebb, mint 4 < 5 (igaz)
<= kisebb vagy egyenlő 4 <= 4 (igaz)
> nagyobb, mint 3 > 1 (igaz)
>= nagyobb vagy egyenlő 2 >= 2 (igaz)

If és else elágazások

A feltételes utasítás attól függően futtat kódot, hogy egy feltétel true vagy false értékre értékelődik-e ki. A leggyakoribb feltételes utasítás az elágazás, amely csak akkor futtat egy kódblokkot, ha a feltétel true. Egy if elágazást az if kulcsszóval írsz le, utána a feltétel, majd a kapcsos zárójelbe zárt kódblokk következik:

let wheelCount = 4
if wheelCount == 4 {
    print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"

Az if párosítható egy else ággal, hogy alternatív kódot futtass, amikor a feltétel 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"

Több feltétel egymás utáni ellenőrzéséhez láncold össze az elágazásokat else if segítségével. Az if elágazáshoz nem kötelező else ág, de hozzáadhatsz egyet, hogy kezeld azokat az eseteket, amikor egyik feltétel sem teljesül:

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"

If-kifejezés

A modern Swiftben az if elágazások olyan kifejezésként is használhatók, amelyek értéket állítanak elő. Minden ág egy értékre értékelődik ki, így könnyen rendelhetsz értéket feltételesen:

let cpuBits = 32
let architecture = if cpuBits == 64 {
    "x86_64"
} else {
    "x86_32"
}

print(architecture)
// Prints "x86_32"

Ternáris operátor

A ternáris feltételes operátor egy if-else kifejezés tömör rövidítése. Kiértékel egy feltételt, és két érték közül az egyiket adja vissza attól függően, hogy a feltétel true vagy false.

Az operátor három részből áll: condition ? trueExpression : falseExpression. Ha a condition true értékre értékelődik ki, akkor a trueExpression értékelődik ki és kerül visszaadásra, ellenkező esetben pedig a falseExpression.

A ternáris operátor ideális egyszerű, egysoros választásokhoz:

let showFahrenheit = true
let temperatureInCelsius = 30

let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86

A fenti példa tömör megfelelője az alábbi kódnak:

let showFahrenheit = true
let temperatureInCelsius = 30

let temperature = if showFahrenheit {
    temperatureInCelsius * 9 / 5 + 32
} else {
    temperatureInCelsius
}

Utasítások

Ebben a feladatban kódot írsz majd, hogy felkészülj egy jármű megvásárlására.

Három részfeladat vár rád: az első segít eldönteni, hogy megengedheted-e magadnak a választott járművet, a második, hogy meghatározd, milyen jogosítványra lesz szükséged, a harmadik pedig, hogy megbecsüld egy használt jármű elfogadható árát.

1. Számítsd ki, hogy megengedheted-e magadnak egy adott autó havi törlesztőrészleteit

A városod autókereskedései mind ötéves, 0%-os kamatú akciót kínálnak, amit szeretnél kihasználni. De nem vagy biztos benne, hogy megengedheted-e magadnak a kiszemelt autó havi törlesztőrészleteit.

A havi törlesztőrészlet az autó teljes ára osztva az ötéves időszak hónapjainak számával.

Valósítsd meg a canIBuy(vehicle:price:monthlyBudget:) függvényt, amely a következő argumentumokat veszi át:

  • vehicle - A megvásárolni kívánt jármű neve.
  • price - A megvásárolni kívánt jármű ára.
  • monthlyBudget - Az az összeg, amit havonta megengedhetsz magadnak.

A függvény az alábbi feltételek alapján a következő üzenetet adja vissza:

  • Ha a jármű havi törlesztőrészlete kisebb vagy egyenlő, mint a havi kereted, add vissza a "Yes! I'm getting a <vehicle>" üzenetet.
  • Ha a jármű havi törlesztőrészlete legfeljebb 10%-kal (a 10%-ot is beleértve) meghaladja a havi keretedet, add vissza a "I'll have to be frugal if I want a <vehicle>" üzenetet.
  • Ha a jármű havi törlesztőrészlete több mint 10%-kal meghaladja a havi keretedet, add vissza a "Darn! No <vehicle> for me" üzenetet.
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"

2. Határozd meg, milyen típusú jogosítványra lesz szükséged

Úgy döntöttél, hogy használt járművet veszel, és meg kell határoznod, milyen típusú jogosítvány kell a vezetéséhez.

Valósítsd meg a licenseType(numberOfWheels:) függvényt, amely a numberOfWheels argumentumot veszi át, ami a megvásárolni kívánt jármű kerekeinek száma.

A függvény az alábbi feltételek alapján a következő üzenetet adja vissza:

  • Ha a kerekek száma 2 vagy 3, add vissza a "You will need a motorcycle license for your vehicle" üzenetet.
  • Ha a kerekek száma 4 vagy 6, add vissza a "You will need an automobile license for your vehicle" üzenetet.
  • Ha a kerekek száma 18, add vissza a "You will need a commercial trucking license for your vehicle" üzenetet.
  • Ha a szám bármely más szám, add vissza a "We do not issue licenses for those types of vehicles" üzenetet.
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"

3. Számítsd ki egy használt jármű árának becslését

Most, hogy meghoztad a döntésedet, szeretnéd biztosítani, hogy tisztességes árat kapj a kereskedésben. Mivel használt járművet szeretnél venni, az ár attól függ, milyen idős a jármű. Durva becsléshez tételezd fel, hogy ha a jármű kevesebb mint 3 éves, az eredeti, vadonatúj kori árának 80%-ába kerül. Ha legalább 10 éves, 50%-ba kerül. Ha a jármű legalább 3 éves, de nem idősebb 10 évnél, az eredeti ár 70%-ába kerül.

Valósítsd meg a calculateResellPrice(originalPrice:yearsOld:) függvényt, amely az originalPrice és a yearsOld argumentumokat veszi át; előbbi a jármű eredeti árát, utóbbi a jármű korát tárolja években. A függvény a jármű viszonteladási árát adja vissza.

calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Swift Exercism

Készen állsz elkezdeni a(z) Bosszantó járművásárlás feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Swift nyelvet 35 fogalom116 feladat segítségével, valódi emberi mentorálással, mindez ingyen.