Διαδρομές
/
Swift
Swift
/
Ασκήσεις
/
Μπελαλίδικη αγορά οχήματος
Μπελαλίδικη αγορά οχήματος

Μπελαλίδικη αγορά οχήματος

Άσκηση εκμάθησης

Εισαγωγή

Τελεστές σύγκρισης

Οι τελεστές σύγκρισης συγκρίνουν δύο τιμές του ίδιου τύπου και επιστρέφουν μια τιμή Bool (true ή false). Αν προσπαθήσεις να συγκρίνεις τιμές διαφορετικών τύπων, ο μεταγλωττιστής παράγει ένα σφάλμα.

Οι βασικοί τελεστές σύγκρισης στη Swift είναι:

Τελεστής Περιγραφή Παράδειγμα
== ίσο με 1 == 1 (true)
!= όχι ίσο με 1 != 2 (true)
< μικρότερο από 4 < 5 (true)
<= μικρότερο ή ίσο με 4 <= 4 (true)
> μεγαλύτερο από 3 > 1 (true)
>= μεγαλύτερο ή ίσο με 2 >= 2 (true)

Εντολές if και else

Μια εντολή υπό συνθήκη εκτελεί κώδικα με βάση το αν μια συνθήκη αξιολογείται σε true ή false. Η πιο συνηθισμένη εντολή υπό συνθήκη είναι η εντολή if, η οποία εκτελεί ένα μπλοκ κώδικα μόνο όταν η συνθήκη της είναι true. Για να γράψεις μια εντολή if, χρησιμοποιείς τη λέξη-κλειδί if, ακολουθούμενη από τη συνθήκη και το μπλοκ κώδικα μέσα σε άγκιστρα:

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

Μπορείς να συνδυάσεις το if με μια ρήτρα else, ώστε να εκτελέσεις εναλλακτικό κώδικα όταν η συνθήκη είναι 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"

Για να ελέγξεις πολλαπλές συνθήκες διαδοχικά, αλυσίδωσε τις εντολές μεταξύ τους με το else if. Μια εντολή if δεν απαιτεί κλάδο else, αλλά μπορείς να συμπεριλάβεις έναν, για να χειριστείς τις περιπτώσεις όπου καμία συνθήκη δεν ταιριάζει:

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

Στη σύγχρονη Swift, οι εντολές if μπορούν επίσης να χρησιμοποιηθούν ως εκφράσεις που παράγουν μια τιμή. Κάθε κλάδος αξιολογείται σε μια τιμή, κάτι που κάνει εύκολη την ανάθεση αποτελεσμάτων υπό συνθήκη:

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

print(architecture)
// Prints "x86_32"

Τριαδικός τελεστής

Ο τριαδικός τελεστής υπό συνθήκη είναι ένας σύντομος τρόπος να γράψεις μια έκφραση if-else. Αξιολογεί μια συνθήκη και επιστρέφει μία από δύο τιμές, ανάλογα με το αν η συνθήκη είναι true ή false.

Ο τελεστής χρησιμοποιεί τρία μέρη: condition ? trueExpression : falseExpression. Αν το condition αξιολογηθεί σε true, τότε αξιολογείται και επιστρέφεται το trueExpression· διαφορετικά, αξιολογείται και επιστρέφεται το falseExpression.

Ο τριαδικός τελεστής είναι ιδανικός για απλές επιλογές σε μία γραμμή:

let showFahrenheit = true
let temperatureInCelsius = 30

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

Το παραπάνω παράδειγμα είναι μια συμπαγής ισοδύναμη εκδοχή του παρακάτω κώδικα:

let showFahrenheit = true
let temperatureInCelsius = 30

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

Οδηγίες

Σε αυτή την άσκηση, θα γράψεις λίγο κώδικα για να σε βοηθήσει να προετοιμαστείς για την αγορά ενός οχήματος.

Έχεις τρεις εργασίες: μία για να υπολογίσεις αν μπορείς να ανταπεξέλθεις στις μηνιαίες δόσεις ενός αυτοκινήτου, μία για να καθορίσεις ποιο δίπλωμα οδήγησης θα χρειαστείς και μία για να εκτιμήσεις την αποδεκτή τιμή για ένα μεταχειρισμένο όχημα.

1. Υπολόγισε αν μπορείς ή όχι να ανταπεξέλθεις στις μηνιαίες δόσεις για ένα δεδομένο αυτοκίνητο

Οι αντιπρόσωποι αυτοκινήτων στην πόλη σου προσφέρουν όλοι μια πενταετή προσφορά με 0% τόκο, την οποία θα ήθελες να εκμεταλλευτείς. Αλλά δεν είσαι σίγουρος αν μπορείς να ανταπεξέλθεις στις μηνιαίες δόσεις για το αυτοκίνητο που θέλεις.

Η μηνιαία δόση είναι η συνολική τιμή του αυτοκινήτου διαιρεμένη με τον αριθμό των μηνών της πενταετίας.

Υλοποίησε τη συνάρτηση canIBuy(vehicle:price:monthlyBudget:) που δέχεται τα παρακάτω ορίσματα:

  • vehicle - Το όνομα του οχήματος που θέλεις να αγοράσεις.
  • price - Η τιμή του οχήματος που θέλεις να αγοράσεις.
  • monthlyBudget - Το χρηματικό ποσό που μπορείς να πληρώνεις κάθε μήνα.

Η συνάρτηση θα πρέπει να επιστρέφει το παρακάτω μήνυμα ανάλογα με τις ακόλουθες συνθήκες:

  • Αν η μηνιαία δόση του οχήματος είναι μικρότερη ή ίση με τον μηνιαίο προϋπολογισμό, επέστρεψε το μήνυμα "Yes! I'm getting a <vehicle>".
  • Αν η μηνιαία δόση του οχήματος υπερβαίνει τον μηνιαίο προϋπολογισμό σου έως και 10% (συμπεριλαμβανομένου), επέστρεψε το μήνυμα "I'll have to be frugal if I want a <vehicle>".
  • Αν η μηνιαία δόση του οχήματος υπερβαίνει τον μηνιαίο προϋπολογισμό σου κατά περισσότερο από 10%, επέστρεψε το μήνυμα "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"

2. Καθόρισε τον τύπο του διπλώματος οδήγησης που θα χρειαστείς

Έχεις αποφασίσει να αγοράσεις ένα μεταχειρισμένο όχημα και πρέπει να καθορίσεις τι τύπο διπλώματος οδήγησης θα χρειαστείς για να το οδηγήσεις.

Υλοποίησε τη συνάρτηση licenseType(numberOfWheels:) που δέχεται το όρισμα numberOfWheels, το οποίο είναι ο αριθμός των τροχών του οχήματος που θέλεις να αγοράσεις.

Η συνάρτηση θα πρέπει να επιστρέφει το παρακάτω μήνυμα ανάλογα με τις ακόλουθες συνθήκες:

  • Αν ο αριθμός των τροχών είναι 2 ή 3, επέστρεψε το μήνυμα "You will need a motorcycle license for your vehicle".
  • Αν ο αριθμός των τροχών είναι 4 ή 6, επέστρεψε το μήνυμα "You will need an automobile license for your vehicle".
  • Αν ο αριθμός των τροχών είναι 18, επέστρεψε το μήνυμα "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"

3. Υπολόγισε μια εκτίμηση για την τιμή ενός μεταχειρισμένου οχήματος

Τώρα που πήρες την απόφασή σου, θέλεις να βεβαιωθείς ότι θα πάρεις μια δίκαιη τιμή στην αντιπροσωπεία. Εφόσον ενδιαφέρεσαι να αγοράσεις ένα μεταχειρισμένο όχημα, η τιμή εξαρτάται από το πόσο παλιό είναι το όχημα. Για μια πρόχειρη εκτίμηση, υπόθεσε ότι αν το όχημα είναι λιγότερο από 3 ετών, κοστίζει το 80% της αρχικής τιμής που είχε όταν ήταν ολοκαίνουργιο. Αν είναι τουλάχιστον 10 ετών, κοστίζει το 50%. Αν το όχημα είναι τουλάχιστον 3 ετών αλλά όχι μεγαλύτερο από 10 ετών, κοστίζει το 70% της αρχικής τιμής.

Υλοποίησε τη συνάρτηση calculateResellPrice(originalPrice:yearsOld:) που δέχεται τα ορίσματα originalPrice, το οποίο περιέχει την αρχική τιμή του οχήματος, και yearsOld, το οποίο περιέχει την ηλικία του οχήματος σε χρόνια. Η συνάρτηση θα πρέπει να επιστρέφει την τιμή μεταπώλησης του οχήματος.

calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Swift Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μπελαλίδικη αγορά οχήματος;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Swift με 35 έννοιες116 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.