Διαδρομές
/
Ruby
Ruby
/
Ασκήσεις
/
Γραμμή συναρμολόγησης
Γραμμή συναρμολόγησης

Γραμμή συναρμολόγησης

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

Εισαγωγή

Αριθμοί

Οι δύο πιο συνηθισμένοι τύποι αριθμών στη Ruby είναι:

  • Ακέραιοι: αριθμοί χωρίς ψηφία μετά το δεκαδικό διαχωριστικό (ακέραιοι αριθμοί). Παραδείγματα είναι τα -6, 0, 1, 25, 976 και 500000.
  • Αριθμοί κινητής υποδιαστολής: αριθμοί με ένα ή περισσότερα ψηφία μετά το δεκαδικό διαχωριστικό. Παραδείγματα είναι τα -2.4, 0.1, 3.14, 16.984025 και 1024.0.

Υλοποιούνται μέσω των κλάσεων Integer και Float.

Αυτές οι κλάσεις έχουν μεθόδους που μετατρέπουν τιμές από τη μία στην άλλη. Οι αριθμοί Integer είναι ακριβείς ως προς την ακέραια μονάδα, ενώ το Float έχει ακρίβεια κλασματική ως προς έναν ακέραιο αριθμό:

  • Integer#to_f: Μετατρέπει σε νέο float
  • Float#ceil: Στρογγυλοποιεί προς τα πάνω στον πλησιέστερο ακέραιο
  • Float#floor: Στρογγυλοποιεί προς τα κάτω στον πλησιέστερο ακέραιο
  • Float#round: Στρογγυλοποιεί στον πλησιέστερο ακέραιο
  • Float#to_i: Αποκόπτει στον πλησιέστερο ακέραιο

Συνθήκες

Η Ruby έχει αυτό που ονομάζεται εκφράσεις ελέγχου ροής. Χρησιμοποιούνται για να ελέγχουν τον τρόπο με τον οποίο θα εκτελεστεί το πρόγραμμα και παίρνουν μια τιμή αληθή ή ψευδή. Υπάρχουν τελεστές που μπορούν να χρησιμοποιηθούν για να δημιουργήσουν αληθείς ή ψευδείς τιμές, γνωστοί ως τελεστές σύγκρισης.

Υπάρχουν δύο βασικές εκφράσεις ελέγχου που καθορίζουν ποιος κώδικας θα εκτελεστεί και ποιος όχι. Δηλαδή, ποιος συγκεκριμένος κλάδος θα εκτελεστεί.

Αυτές οι δύο είναι: η έκφραση if και η έκφραση unless.

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

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

Μέθοδος Περιγραφή Παράδειγμα
< μικρότερο από 4 < 5
<= μικρότερο ή ίσο με 4 <= 4
> μεγαλύτερο από 3 > 1
>= μεγαλύτερο ή ίσο με 2 >= 2

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

Μέθοδος Περιγραφή Παράδειγμα
== ίσο 4 == 4
!= άνισο 5 != 4

Η εντολή if

Η εντολή if χρησιμοποιείται για να ελέγξει αν μια δεδομένη συνθήκη είναι "αληθής" ή "ψευδής". Αν η συνθήκη είναι αληθής, τότε ο κώδικας μέσα στην εντολή if θα εκτελεστεί. Μια εντολή if τελειώνει με τη λέξη-κλειδί end.

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

Η εντολή unless

Η εντολή unless λειτουργεί πολύ παρόμοια με την εντολή if, αλλά θα εκτελέσει τον κώδικα μέσα στην εντολή unless αν η συνθήκη είναι ψευδής.

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

Η εντολή else

Η εντολή else μπορεί να χρησιμοποιηθεί σε συνδυασμό με την εντολή if. Η εντολή else θα εκτελεστεί αν ο κλάδος if δεν εκτελεστεί.

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

Εντολές "διαδοχικών if"

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

value = 1
if value != 1
  "1 is not equal to 1"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"

Οδηγίες

Σε αυτή την άσκηση θα γράψεις κώδικα για να αναλύσεις την παραγωγή μιας γραμμής συναρμολόγησης σε ένα εργοστάσιο αυτοκινήτων. Η ταχύτητα της γραμμής συναρμολόγησης μπορεί να κυμαίνεται από 0 (εκτός λειτουργίας) έως 10 (μέγιστη).

Στην πιο αργή ταχύτητά της (1), παράγονται 221 αυτοκίνητα κάθε ώρα. Η παραγωγή αυξάνεται γραμμικά με την ταχύτητα. Έτσι, με την ταχύτητα στο 4, θα πρέπει να παράγει 4 * 221 = 884 αυτοκίνητα την ώρα. Ωστόσο, οι υψηλότερες ταχύτητες αυξάνουν την πιθανότητα να παραχθούν ελαττωματικά αυτοκίνητα, τα οποία μετά πρέπει να απορριφθούν. Ο παρακάτω πίνακας δείχνει πώς η ταχύτητα επηρεάζει το ποσοστό επιτυχίας:

  • Από 1 έως 4: 100% ποσοστό επιτυχίας.
  • Από 5 έως 8: 90% ποσοστό επιτυχίας.
  • 9: 80% ποσοστό επιτυχίας.
  • 10: 77% ποσοστό επιτυχίας.

Έχεις δύο εργασίες.

1. Υπολόγισε τον ρυθμό παραγωγής ανά ώρα

Υλοποίησε τη μέθοδο AssemblyLine#production_rate_per_hour για να υπολογίσεις τον ρυθμό παραγωγής της γραμμής συναρμολόγησης ανά ώρα, λαμβάνοντας υπόψη το ποσοστό επιτυχίας της. Σημείωσε ότι η τιμή που επιστρέφεται είναι ένα στιγμιότυπο της Float.

AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4

2. Υπολόγισε τον αριθμό των λειτουργικών προϊόντων που παράγονται ανά λεπτό

Υλοποίησε τη μέθοδο AssemblyLine#working_items_per_minute για να υπολογίσεις πόσα ολοκληρωμένα, λειτουργικά αυτοκίνητα παράγονται ανά λεπτό. Σημείωσε ότι η τιμή που επιστρέφεται είναι ένα στιγμιότυπο της Integer.

AssemblyLine.new(6).working_items_per_minute
#=> 19
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Ruby Exercism

Έτοιμος να ξεκινήσεις την άσκηση Γραμμή συναρμολόγησης;

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