Διαδρομές
/
Go
Go
/
Ασκήσεις
/
Ρομπότ πάρτι
Ρομπότ πάρτι

Ρομπότ πάρτι

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

Εισαγωγή

Πακέτα

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

package greeting

Η Go παρέχει μια εκτενή πρότυπη βιβλιοθήκη πακέτων που μπορείς να χρησιμοποιήσεις στο πρόγραμμά σου με τη λέξη-κλειδί import. Τα πακέτα της πρότυπης βιβλιοθήκης εισάγονται με το όνομά τους.

package greeting

import "fmt"

Στη συνέχεια, αναφέρεσαι σε ένα εισαγόμενο πακέτο με το όνομά του:

world := "World"
fmt.Sprintf("Hello %s", world)

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

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

Μορφοποίηση συμβολοσειρών

Η Go παρέχει ένα ενσωματωμένο πακέτο που ονομάζεται fmt (πακέτο μορφοποίησης), το οποίο προσφέρει μια ποικιλία συναρτήσεων για να χειρίζεσαι τη μορφή της εισόδου και της εξόδου. Η πιο συχνά χρησιμοποιούμενη συνάρτηση είναι η Sprintf, η οποία χρησιμοποιεί ρήματα όπως %s για να ενσωματώσει τιμές σε μια συμβολοσειρά και επιστρέφει αυτήν τη συμβολοσειρά.

import "fmt"

food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco

Στη Go, οι τιμές κινητής υποδιαστολής μορφοποιούνται βολικά με τα ρήματα της Sprintf: %g (συμπαγής αναπαράσταση), %e (εκθέτης) ή %f (χωρίς εκθέτη). Και τα τρία ρήματα επιτρέπουν τον έλεγχο του πλάτους και της αριθμητικής θέσης του πεδίου.

import "fmt"

number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32

Μπορείς να βρεις μια πλήρη λίστα με τα διαθέσιμα ρήματα στην τεκμηρίωση του πακέτου μορφοποίησης.

Το fmt περιέχει και άλλες συναρτήσεις για εργασία με συμβολοσειρές, όπως η Println, που απλώς εκτυπώνει στην κονσόλα τα ορίσματα που δέχεται, και η Printf, που μορφοποιεί την είσοδο με τον ίδιο τρόπο όπως η Sprintf πριν την εκτυπώσει.

Οδηγίες

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

1. Καλωσόρισε έναν νέο καλεσμένο στο πάρτι

Υλοποίησε τη συνάρτηση Welcome ώστε να επιστρέφει ένα μήνυμα υποδοχής με το όνομα που δίνεται:

Welcome("Christiane")
// => Welcome to my party, Christiane!

2. Καλωσόρισε έναν νέο καλεσμένο στο πάρτι που έχει γενέθλια σήμερα

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

HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!

3. Δώσε οδηγίες

Υλοποίησε τη συνάρτηση AssignTable ώστε να δίνει οδηγίες. Πρέπει να δέχεται 5 παραμέτρους.

  • Το όνομα του νέου καλεσμένου που θα χαιρετήσεις (string)
  • Ο αριθμός του τραπεζιού (int)
  • Το όνομα του διπλανού (string)
  • Η κατεύθυνση για να βρεις το τραπέζι (string)
  • Η απόσταση από το τραπέζι (float64)

Η ακριβής μορφή του αποτελέσματος φαίνεται στο παρακάτω παράδειγμα.

Το ρομπότ δίνει τον αριθμό του τραπεζιού σε μορφή 3 ψηφίων. Αν ο αριθμός έχει λιγότερα από 3 ψηφία, παίρνει επιπλέον μηδενικά μπροστά για να φτάσει τα 3 ψηφία (π.χ. το 3 γίνεται 003). Το ρομπότ αναφέρει επίσης την απόσταση του τραπεζιού. Ευτυχώς μόνο με ακρίβεια που περιορίζεται σε 1 δεκαδικό ψηφίο.

AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ρομπότ πάρτι;

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