Λαζάνια

Λαζάνια

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

Εισαγωγή

Αυτή η άσκηση θα σου μάθει τα θεμελιώδη δομικά στοιχεία της Ruby. Καλύπτει πολύ έδαφος, αλλά μην ανησυχείς αν σου φανεί υπερβολικό, θα εμβαθύνουμε σε όλα πολύ περισσότερο καθώς προχωράμε στη διαδρομή.

Ένα από τα βασικά πράγματα που πρέπει να καταλάβεις για τη Ruby είναι ότι είναι μια αντικειμενοστρεφής γλώσσα και ότι τα πάντα στη Ruby είναι αντικείμενα. Αριθμοί, συμβολοσειρές, πίνακες: όλα τους είναι αντικείμενα.

Μεταβλητές και Σταθερές

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

Οι μεταβλητές γράφονται πάντα σε snake case. Μια μεταβλητή μπορεί να αναφέρεται σε διαφορετικά αντικείμενα κατά τη διάρκεια της ζωής της. Για παράδειγμα, η my_first_variable μπορεί να οριστεί και να επαναοριστεί πολλές φορές με τον τελεστή =:

my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new

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

MY_FIRST_CONSTANT = 10

# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"

Κλάσεις

Η Ruby οργανώνεται σε κλάσεις. Οι κλάσεις ορίζονται με τη λέξη-κλειδί class ακολουθούμενη από το όνομα της κλάσης. Τα αντικείμενα δημιουργούνται συνήθως με στιγμιοποίηση κλάσεων μέσω της μεθόδου .new. Για παράδειγμα:

# Define the class
class Calculator
  #...
end

# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new

Μέθοδοι

Οι μονάδες λειτουργικότητας ενσωματώνονται σε μεθόδους, παρόμοιες με τις συναρτήσεις σε άλλες γλώσσες.

Μια μέθοδος μπορεί να οριστεί με ορίσματα θέσης, ορίσματα με λέξεις-κλειδιά (που ορίζονται και καλούνται με τη σύνταξη :), ή να μην έχει καθόλου ορίσματα.

Οι μέθοδοι είτε επιστρέφουν σιωπηρά το αποτέλεσμα της τελευταίας εντολής που αξιολογήθηκε, είτε μπορούν να επιστρέψουν ρητά ένα αντικείμενο με τη λέξη-κλειδί return.

class Calculator

  # Positional arguments
  def add(num1, num2)
    return num1 + num2 # Explicit return
  end

  # Keyword arguments
  def multiply(num1:, num2:)
    num1 * num2 # Implicit return
  end
end

Οι μέθοδοι καλούνται με τη σύνταξη .:

calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)

Οδηγίες

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

Έχεις τέσσερις εργασίες, όλες σχετικές με τον χρόνο που χρειάζεται για να μαγειρέψεις τα λαζάνια.

1. Όρισε τον αναμενόμενο χρόνο ψησίματος σε λεπτά

Όρισε τη σταθερά Lasagna::EXPECTED_MINUTES_IN_OVEN, η οποία επιστρέφει πόσα λεπτά πρέπει να μείνουν τα λαζάνια στον φούρνο. Σύμφωνα με το βιβλίο μαγειρικής, ο αναμενόμενος χρόνος ψησίματος σε λεπτά είναι 40:

Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40

2. Υπολόγισε τον υπόλοιπο χρόνο ψησίματος σε λεπτά

Όρισε τη μέθοδο Lasagna#remaining_minutes_in_oven, η οποία παίρνει ως παράμετρο τα πραγματικά λεπτά που τα λαζάνια βρίσκονται ήδη στον φούρνο και επιστρέφει πόσα λεπτά πρέπει να μείνουν ακόμη τα λαζάνια στον φούρνο, με βάση τον αναμενόμενο χρόνο ψησίματος σε λεπτά από την προηγούμενη εργασία.

lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10

3. Υπολόγισε τον χρόνο προετοιμασίας σε λεπτά

Όρισε τη μέθοδο Lasagna#preparation_time_in_minutes, η οποία παίρνει ως παράμετρο τον αριθμό των στρώσεων που πρόσθεσες στα λαζάνια και επιστρέφει πόσα λεπτά χρειάστηκες για να τα προετοιμάσεις, υποθέτοντας ότι κάθε στρώση σου παίρνει 2 λεπτά.

lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4

4. Υπολόγισε τον συνολικό χρόνο εργασίας σε λεπτά

Όρισε τη μέθοδο Lasagna#total_time_in_minutes, η οποία παίρνει δύο ονομαστικές παραμέτρους: η παράμετρος number_of_layers είναι ο αριθμός των στρώσεων που πρόσθεσες στα λαζάνια και η παράμετρος actual_minutes_in_oven είναι ο αριθμός των λεπτών που τα λαζάνια βρίσκονται στον φούρνο. Η συνάρτηση πρέπει να επιστρέφει πόσα λεπτά συνολικά έχεις αφιερώσει στο μαγείρεμα των λαζανιών, δηλαδή το άθροισμα του χρόνου προετοιμασίας σε λεπτά και του χρόνου σε λεπτά που τα λαζάνια έχουν περάσει στον φούρνο μέχρι στιγμής.

lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Ruby Exercism

Έτοιμος να ξεκινήσεις την άσκηση Λαζάνια;

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