Διαδρομές
/
JavaScript
JavaScript
/
Ασκήσεις
/
Χρεώσεις ελεύθερου επαγγελματία
Χρεώσεις ελεύθερου επαγγελματία

Χρεώσεις ελεύθερου επαγγελματία

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

Εισαγωγή

Αριθμοί

Πολλές γλώσσες προγραμματισμού έχουν ειδικούς αριθμητικούς τύπους για να αναπαριστούν διαφορετικά είδη αριθμών, αλλά η JavaScript έχει μόνο δύο:

  • number: ένας αριθμητικός τύπος δεδομένων στη μορφή κινητής υποδιαστολής διπλής ακρίβειας 64 bit (IEEE 754). Παραδείγματα είναι τα -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 και 500000.
  • bigint: ένας αριθμητικός τύπος δεδομένων που μπορεί να αναπαραστήσει ακέραιους στη μορφή αυθαίρετης ακρίβειας. Παραδείγματα είναι τα -12n, 0n, 4n και 9007199254740991n.

Αν χρειάζεσαι αυθαίρετη ακρίβεια ή δουλεύεις με εξαιρετικά μεγάλους αριθμούς, χρησιμοποίησε τον τύπο bigint. Διαφορετικά, ο τύπος number είναι μάλλον η καλύτερη επιλογή.

Στρογγυλοποίηση

Υπάρχει ένα ενσωματωμένο καθολικό αντικείμενο που ονομάζεται Math και παρέχει διάφορες συναρτήσεις στρογγυλοποίησης. Για παράδειγμα, μπορείς να στρογγυλοποιήσεις προς τα κάτω (floor) ή προς τα πάνω (ceil) δεκαδικούς αριθμούς στους κοντινότερους ακέραιους.

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

Αριθμητικοί τελεστές

Η JavaScript παρέχει 6 διαφορετικούς τελεστές για να κάνεις βασικές αριθμητικές πράξεις με αριθμούς.

  • +: Ο τελεστής πρόσθεσης χρησιμοποιείται για να βρεις το άθροισμα αριθμών.
  • -: Ο τελεστής αφαίρεσης χρησιμοποιείται για να βρεις τη διαφορά δύο αριθμών
  • *: Ο τελεστής πολλαπλασιασμού χρησιμοποιείται για να βρεις το γινόμενο δύο αριθμών.
  • /: Ο τελεστής διαίρεσης χρησιμοποιείται για να διαιρέσεις δύο αριθμούς.
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %: Ο τελεστής υπολοίπου χρησιμοποιείται για να βρεις το υπόλοιπο μιας διαίρεσης.

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **: Ο τελεστής ύψωσης σε δύναμη χρησιμοποιείται για να υψώσεις έναν αριθμό σε μια δύναμη.

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

Σειρά πράξεων

Όταν χρησιμοποιείς πολλούς τελεστές σε μία γραμμή, η JavaScript ακολουθεί μια σειρά προτεραιότητας, όπως φαίνεται σε αυτόν τον πίνακα προτεραιότητας. Για να το απλοποιήσουμε στο πλαίσιο μας, η JavaScript χρησιμοποιεί τον κανόνα PEDMAS (Παρενθέσεις, Εκθέτες, Διαίρεση/Πολλαπλασιασμός, Πρόσθεση/Αφαίρεση) που έχουμε μάθει στα μαθήματα στοιχειωδών μαθηματικών.

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

Συντομευμένοι τελεστές ανάθεσης

Οι συντομευμένοι τελεστές ανάθεσης είναι ένας συντομότερος τρόπος να γράψεις κώδικα που εκτελεί αριθμητικές πράξεις σε μια μεταβλητή και αναθέτει τη νέα τιμή στην ίδια μεταβλητή. Για παράδειγμα, θεώρησε δύο μεταβλητές x και y. Τότε, το x += y είναι το ίδιο με το x = x + y. Συχνά, αυτό χρησιμοποιείται με έναν αριθμό αντί για μια μεταβλητή y. Και οι 5 υπόλοιπες πράξεις μπορούν επίσης να γίνουν με παρόμοιο τρόπο.

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

Οδηγίες

Σε αυτή την άσκηση θα γράψεις κώδικα που θα βοηθήσει έναν ελεύθερο επαγγελματία να επικοινωνεί με τους πελάτες του για τις τιμές ορισμένων έργων. Θα γράψεις μερικές βοηθητικές συναρτήσεις για να υπολογίζεις γρήγορα το κόστος για τους πελάτες.

Note

Η μεταβλητή ratePerHour και η συνάρτηση dayRate έχουν σχέση με χρήματα. Οι μονάδες μέτρησης είναι χρήματα ανά μονάδα χρόνου: ώρες και ημέρες αντίστοιχα.

1. Υπολόγισε την ημερήσια χρέωση με βάση την ωριαία χρέωση

Ένας πελάτης επικοινωνεί με τον ελεύθερο επαγγελματία για να ρωτήσει τις χρεώσεις του. Ο ελεύθερος επαγγελματίας εξηγεί ότι δουλεύει 8 ώρες την ημέρα. Ωστόσο, ο ελεύθερος επαγγελματίας γνωρίζει μόνο την ωριαία χρέωσή του για το έργο. Βοήθησέ τον να υπολογίσει μια ημερήσια χρέωση με βάση την ωριαία χρέωση.

dayRate(89);
// => 712

Η ημερήσια χρέωση δεν χρειάζεται να στρογγυλοποιηθεί ούτε να μετατραπεί σε "σταθερή" ακρίβεια.

2. Υπολόγισε τον αριθμό των εργάσιμων ημερών με δεδομένο έναν σταθερό προϋπολογισμό

Μια άλλη μέρα, ένας υπεύθυνος έργου προτείνει στον ελεύθερο επαγγελματία να δουλέψει σε ένα έργο με σταθερό προϋπολογισμό. Με δεδομένο τον σταθερό προϋπολογισμό και την ωριαία χρέωση του ελεύθερου επαγγελματία, βοήθησέ τον να υπολογίσει πόσες ημέρες θα δουλέψει μέχρι να εξαντληθεί ο προϋπολογισμός. Το αποτέλεσμα πρέπει να στρογγυλοποιηθεί προς τα κάτω στον πλησιέστερο ακέραιο αριθμό.

daysInBudget(20000, 89);
// => 28

3. Υπολόγισε τη χρέωση με έκπτωση για μεγάλα έργα

Συχνά, οι πελάτες του ελεύθερου επαγγελματία τον προσλαμβάνουν για έργα που διαρκούν πολλούς μήνες. Σε αυτές τις περιπτώσεις, ο ελεύθερος επαγγελματίας αποφασίζει να προσφέρει έκπτωση για κάθε πλήρη μήνα, και οι υπόλοιπες ημέρες χρεώνονται με την ημερήσια χρέωση. Η εξαιρετική σου ισορροπία μεταξύ επαγγελματικής και προσωπικής ζωής σημαίνει ότι δουλεύεις μόνο 22 ημέρες σε κάθε ημερολογιακό μήνα, οπότε κάθε μήνας έχει 22 ημέρες με χρέωση. Βοήθησέ τον να υπολογίσει το κόστος του για τέτοια έργα, με δεδομένη την ωριαία χρέωση, τον αριθμό των ημερών με χρέωση που περιέχει το έργο και ένα μηνιαίο ποσοστό έκπτωσης. Η έκπτωση περνιέται πάντα ως αριθμός, όπου το 42% γίνεται 0.42. Το αποτέλεσμα πρέπει να στρογγυλοποιηθεί προς τα πάνω στον πλησιέστερο ακέραιο αριθμό.

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
JavaScript Exercism

Έτοιμος να ξεκινήσεις την άσκηση Χρεώσεις ελεύθερου επαγγελματία;

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