Διαδρομές
/
Go
Go
/
Ασκήσεις
/
Τα υπέροχα λαζάνια του Gopher
Τα υπέροχα λαζάνια του Gopher

Τα υπέροχα λαζάνια του Gopher

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

Εισαγωγή

Go είναι μια στατικά τυποποιημένη, μεταγλωττιζόμενη γλώσσα προγραμματισμού. Αυτή η άσκηση εισάγει τρία σημαντικά χαρακτηριστικά της γλώσσας: Πακέτα, Συναρτήσεις και Μεταβλητές.

Πακέτα

Οι εφαρμογές Go οργανώνονται σε πακέτα. Ένα πακέτο είναι μια συλλογή αρχείων πηγαίου κώδικα που βρίσκονται στον ίδιο κατάλογο. Όλα τα αρχεία πηγαίου κώδικα σε έναν κατάλογο πρέπει να μοιράζονται το ίδιο όνομα πακέτου. Όταν ένα πακέτο εισάγεται, μόνο οντότητες (συναρτήσεις, τύποι, μεταβλητές, σταθερές) των οποίων τα ονόματα αρχίζουν με κεφαλαίο γράμμα μπορούν να χρησιμοποιηθούν / να είναι προσβάσιμες. Ο προτεινόμενος τρόπος ονοματοδοσίας στη Go είναι τα αναγνωριστικά να ονομάζονται με camelCase, εκτός από εκείνα που προορίζονται να είναι προσβάσιμα από άλλα πακέτα, τα οποία θα πρέπει να είναι PascalCase.

package lasagna

Μεταβλητές

Η Go είναι στατικά τυποποιημένη, που σημαίνει ότι όλες οι μεταβλητές πρέπει να έχουν καθορισμένο τύπο κατά τη μεταγλώττιση.

Οι μεταβλητές μπορούν να οριστούν δηλώνοντας ρητά έναν τύπο:

var explicit int // Explicitly typed

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

implicit := 10   // Implicitly typed as an int

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

count := 1 // Assign initial value
count = 2  // Update to new value

count = false // This throws a compiler error due to assigning a non `int` type

Σταθερές

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

Οι σταθερές ορίζονται χρησιμοποιώντας τη λέξη-κλειδί const και μπορούν να είναι αριθμοί, χαρακτήρες, συμβολοσειρές ή Boolean:

const Age = 21 // Defines a numeric constant 'Age' with the value of 21

Συναρτήσεις

Οι συναρτήσεις της Go δέχονται μηδέν ή περισσότερες παραμέτρους. Οι παράμετροι πρέπει να έχουν ρητά δηλωμένο τύπο, δεν υπάρχει εξαγωγή τύπου.

Οι συναρτήσεις επιστρέφουν τιμές χρησιμοποιώντας τη λέξη-κλειδί return.

Καλείς μια συνάρτηση καθορίζοντας το όνομα της συνάρτησης και περνώντας ορίσματα για κάθε μία από τις παραμέτρους της.

Σημείωσε ότι η Go υποστηρίζει δύο τύπους σχολίων. Τα σχόλια μίας γραμμής προηγούνται από // και τα σχόλια πολλών γραμμών εισάγονται μεταξύ /* και */.

package greeting

// Hello is a public function.
func Hello (name string) string {
    return hi(name)
}

// hi is a private function.
func hi (name string) string {
    return "hi " + name
}

Οδηγίες

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

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

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

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

OvenTime
// => 40

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

Όρισε τη συνάρτηση RemainingOvenTime() που παίρνει ως παράμετρο τα πραγματικά λεπτά παραμονής των λαζανιών στον φούρνο και επιστρέφει πόσα λεπτά πρέπει ακόμα να παραμείνουν τα λαζάνια στον φούρνο, με βάση τον αναμενόμενο χρόνο ψησίματος σε λεπτά από την προηγούμενη εργασία.

func RemainingOvenTime(actual int) int {
    // TODO
}

RemainingOvenTime(30)
// => 10

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

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

func PreparationTime(numberOfLayers int) int {
    // TODO
}

PreparationTime(2)
// => 4

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

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

func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
    // TODO
}

ElapsedTime(3, 20)
// => 26
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τα υπέροχα λαζάνια του Gopher;

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