Κυριακή 5 Δεκεμβρίου 2021

Κάρελ το Ρομπότ (Δημιουργός Κόσμου - Μέρος Πρώτο)

Για έκδοση 10 αναθεώρηση 43 και πάνω.

Ανέβηκε στο Github η αρχική έκδοση του προγράμματος δημιουργίας του κόσμου του Κάρελ.

Η φόρμα προσαρμόζεται στο μόνιτορ. Φτιάχνονται μερικοί στόχοι με έναν ωραίο τρόπο ώστε να μπορούν να "δουλευτούν" μετά. Όταν πατάμε ένα στόχο (τα μπλε κουτάκια) αλλάζει χρώμα φόντου και κείμενο και αν κουνήσουμε το ποντίκι ακυρώνει το πάτημα! Αυτό γίνεται προγραμματιστικά.

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

Στις επιλογές Προσανατολισμός και Σκοπός του Κάρελ, υπάρχει αναπτυσσόμενη λίστα. Όλο το σκηνικό εδώ έχει γίνει στην κονσόλα που δεν χρησιμοποιούμε γεγονότα, όπως στις φόρμες. Όμως έχουν ήδη φτιαχτεί χρήσιμα εργαλεία. Όπως για παράδειγμα η Επιλογή (η εντολή για να επιλέξουμε από αναπτυσσόμενη λίστα) μπορεί είτε να δουλεύει περιμένοντας να επιλέξουμε, είτε ασύγχρονα, δηλαδή το πρόγραμμα μπορεί να ελέγχει αν έχει γίνει κάποια επιλογή ή αν έχει ακυρωθεί η επιλογή και να κλείσει την λίστα. Οπότε με το που περνάει ο δείκτης πάνω από επιλογές αμέσως το διαβάζουμε και ενημερώνουμε την κονσόλα πίσω από την λίστα.

Στην επιλογή Χρωματισμός ανοίγει η φόρμα της Μ2000 για επιλογή χρώματος, και αν πράγματι επιλέξουμε χρώμα τότε αλλάζει το χρώμα στο ρομπότ, στην μικρή εικόνα δίπλα.

Δουλεύουν επιπλέον οι στόχοι ΣΗΜΕΙΩΣΕΙΣ (ανοίγει ένα διορθωτή στο αριστερό μέρος δίπλα από τους στόχους, ενώ τους θολώνει πρώτα), και η Βοήθεια, αν και έχουν μπει μόνο δυο σελίδες δοκιμαστικά με "μπλα μπλα".

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

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

Ως σκοποί οι επιλογές είναι:

  1. Ο Κάρελ ψάχνει ένα Μπίμπερ
  2. Ο Κάρελ μαζεύει όλα τα Μπίμπερ
  3. Ο Κάρελ βάζει Μπίμπερ σε θέσεις
  4. Ο Κάρελ πάει στη Περίμετρο (απόδραση από λαβύρινθο)
  5. Άλλο

Στο άλλο ο "επόπτης" ή καθηγητής ή δάσκαλος, θα βάζει σε σημειώσεις το τι ζητάει.

Τα μπίμπερ στη περίπτωση (3) λέμε στο πρόγραμμα που πρέπει να είναι και όταν ξεκινάει δεν υπάρχει τίποτα και τερματίζει επιτυχώς το πρόγραμμα εκτέλεσης του προγράμματος Κάρελ, ή του παιχνιδιού Κάρελ όταν ο δει ότι συμπληρώθηκαν οι θέσεις. Στις (1) και (2) περιπτώσεις το πρόγραμμα τερματίζει ανάλογα, στη πρώτη όταν ο Κάρελ φθάσει σε ένα Μπίμπερ, ενώ στη δεύτερη όταν μαζέψει ένα ή περισσότερα (όσα έχουμε βάλει). Στην (4) ο Κάρελ μπορεί να σημαδεύει με δικά του Μπίμπερ, ώστε να αποκλείει περιοχές που έχει εξετάσει. Μάλιστα μπορεί να βάζει περισσότερα από ένα, ώστε να μετράει και όλας (το μέτρημα δεν γίνεται σε μεταβλητή αλλά με μετάθεση σε φωλιασμένες δομές ροής). Αυτό αποτελεί και το πιο δύσκολο κομμάτι. Πιθανόν δεν το βγάζει ούτε μαθητής του Λυκείου! Για αποπλοποίηση η έξοδος από το λαβύρινθο λογαριάζεται ηη οποιαδήποτε θέση στη περίμετρο.

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

Ο στόχος ΕΛΕΓΧΟΣ θα εκτελεί το παιχνίδι, άμεσα. Όμως το σκεπτικό είναι να υπάρχουν δυο προγράμματα, ένα να παίζει ως παιχνίδι το Κάρελ και ένα να βάζουμε κώδικα της γλώσσας Κάρελ. Αν και υπάρχουν παραλλαγές της Κάρελ γλώσσας με αντικείμενα, δήθεν, το σκεπτικό της γλώσσας δεν είναι να "ζαλίζει" τα παιδιά. Κάπου διάβασα ότι βοηθάει στην κατανόηση των υποπρογραμμάτων. Τίποτα από αυτά δεν έχουν νόημα γιατί όταν κάποιος δεν κατανοεί την αναγκαιότητα του Χ δεν μπορεί να καταλάβει τι είναι το Χ. Εδώ υπάρχουν εντολές και τα "υποπρογράμματα" ομαδοποιούν εντολές για να μην της γράφουμε ξανά και πήξουμε! Δηλαδή το υποπρόγραμμα είναι απλά μια ομαδοποίηση εντολών. Ασφαλώς όταν μια ομάδα εντολών εκτέλείται πολλές φορές τότε έχει ένα νόημα διαφορετικό από τις επιμέρους εντολές που την απαρτίζουν. Αυτή τη υπέρθεση ιδέας πάνω σε ομάδα εντολών οι χρήστες την δέχονται φυσικά, ως μια ευκολία και όχι μια τεχνολογική επέκταση με μυστήριο τίτλο "υποπρογράμματα".

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

Να γιατί βλέπουμε "χαζά" προγράμματα του στυλ "τα μπιμπερ είναι αγρός και ο Κάρελ πρέπει να θερίσει". Κάνουν για παιδιά δημοτικού αλλά στο γυμνάσιο και λύκειο, το Κάρελ μπορεί να γίνει πολύ απαιτητικό, αν θέλουμε. Ο προγραμματισμός βέβαια είναι κουραστικός (εξαιρώ τον εαυτό μου αφού μπορώ να δουλεύω είκοσι ώρες την μέρα), αλλά είναι μια σοβαρή πνευματική άσκηση, για ανάπτυξη ικανοτήτων με πρώτη τη συγκέντρωση. Αν δεν συγκεντρωθεί κάποιος στο πρόβλημα που θέλει να λύσει με τη Κάρελ γλώσσα, θα πελαγώσει. Πρέπει να βρίσκει τι δεν πάει καλά και να το διορθώνει. Δηλαδή δεν γίνεται με την πρώτη να βρει τη σωστή λύση (ούτε ο Αϊσταϊν να ήταν).


Τέλος σκέφτομαι να εξελληνίσω τη γλώσσα! Ο εκτελεστής δουλεύει, τον έχω ανεβάσει εδώ. Είχα γράψει τον Λεκτικό και Συντακτικό Αναλυτή και μετά τον έγραψα στα Ελληνικά (κράτησα τις μεταβλητές ως είχαν στα αγγλικά) και έβαλα και την εκτέλεση του AST (Abstract syntax tree, με προβληματίζει που στο Wikipedia δεν υπάρχει ελληνική ανάρτηση, τι στο καλό κάνουν οι καθηγητές πανεπιστημίου, στη θέση τους θα είχα βάλει σαν άσκηση στους φοιτητές να συμπληρώσουν θέματα πληροφορικής σε όλα τα παρόμοια, να μην ξεφτιλιζόμαστε).

Οπότε είμαι σε σκέψεις. Ώρα για Netflix.

ΓΚ.


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.