Εισαγωγή

Κατά το εισαγωγικό σεμινάριο για τα νέα προγραμματιστικά περιβάλλοντα για παιδιά που διοργανώθηκε την Τρίτη, 21.02.2012 από το Σχολικό μας Σύμβουλο κ. Πανσελληνά Γεώργιο, έγινε η πρώτη “εξ’ επαφής” γνωριμία με το περιβάλλον BYOB (Build Your Own Blocks). Το περιβάλλον απευθύνεται κυρίως σε παιδιά Γυμνασίου, ακόμα και Α΄ Λυκείου και κρίνεται ιδιαίτερα ευχάριστο και εύχρηστο, αν και σε παλαιότερα μηχανήματα θα δυσκολευτεί ο “προγραμματιστής”, καθότι κολλάει και γίνεται αργό. Χωρίς πολλά πολλά μπορούν άμεσα να κατασκευαστούν απλά προγράμματα μετακινώντας απλά “τουβλάκια” (blocks) και τοποθετώντας τα με την κατάλληλη σειρά. Αυτό διευκολύνει και το ιδιαίτερο σχήμα των “τούβλων” που έχουν τη μορφή puzzle και βοηθάει να καταλάβει κανείς ποιο ταιριάζει που.

 

Μετά την εισαγωγή μας ανατέθηκε μία εργασία, όπου και γεννήθηκε η ιδέα για το ακόλουθο σενάριο, παρατηρώντας και “παίζοντας” απλά με τα “τουβλάκια”. Το σενάριο διαπραγματεύεται την κατασκευή ενός σύμπαντος αποτελούμενο από άστρα και πλανήτες. Όπως περιγράφεται (αλλά και σε διάφορες παραλλαγές του) μπορεί να αξιοποιηθεί για να επιτευχθούν τα παρακάτω :

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

 

Οι εφαρμογές που μπορεί να έχει το σενάριο αυτό, καθώς και οι διάφορες παραλλαγές του, είναι :

  • δημιουργία βάσης (πίστα) για κάποιο παιχνίδι,
  • screen saver,
  • κατασκευή “κληρωτίδας” για να επιλέγονται τυχαία π.χ. οι επιμελητές μιας τάξης, οι νικητές των δώρων μιας εκδήλωσης της τάξης ή του σχολείου,
  • κ.ά.

 

Σε πρώτο στάδιο επιλέχθηκαν τα σκηνικά (ένα απλό μαύρο φόντο) και το sprite (μορφή) που θα χρησιμοποιούνταν κατά τη σχεδίαση. Εκεί μπορεί να μπει στο παιχνίδι και η φαντασία των “μελλοντικών προγραμματιστών”, δημιουργώντας με τα απλά εργαλεία που διαθέτει το προγραμματιστικό περιβάλλον κάτι κατάλληλο (π.χ. για το σενάριο αυτό θα μπορούσε να σχεδιαστεί ένα διαστημόπλοιο ή το “χέρι του Θεού” που δημιουργεί το σύμπαν κλπ.). Στη συνέχεια κατασκευάστηκε το πρόγραμμα χρησιμοποιώντας τα “τουβλάκια” που βρίσκονταν “καθ’ οδόν” και πήρε την τελική του μορφή μετά από μία πιο διεξοδική έρευνα ως προς τις δυνατότητες του προγραμματιστικού περιβάλλοντος. Συνολικός χρόνος : περίπου 2 ώρες.

 

Περιγραφή

Όλα ξεκινάνε με το πάτημα του space, όπου και καθαρίζεται ο καμβάς και μετακινείται το sprite στο κέντρο του κοιτάζοντας προς τα δεξιά. Μετά από ένα σύντομο μήνυμα ζητείται η παρέμβαση του χρήστη για να δηλώσει τον αριθμό των αστεριών και πλανητών που επιθυμεί να σχεδιαστούν, φυσικά με επιτρεπόμενες τιμές και έλεγχο δεδομένων (βλ. Εικόνα 1). Διαπιστώθηκε ότι το προγραμματιστικό περιβάλλον προσφέρει δύο δομές repeat until, η μία με τον έλεγχο της συνθήκης να γίνεται στην αρχή (???) και η άλλη στο τέλος, όπως και μας είναι γνωστό και μας φαίνεται προφανής. Η πρώτη, λοιπόν, που ελέγχει τον αριθμό των αστεριών, απαιτεί αρχικοποίηση της μεταβλητής στην αρχή, διαφορετικά δεν μπαίνει στην επανάληψη και δεν ζητάει τιμή όταν το πρόγραμμα ξανατρέξει (δηλαδή αν ήδη έχει εκτελεστεί μία φορά και ξαναεκτελείται) διότι κρατάει την παλαιά τιμή της μεταβλητής. Απαιτεί λοιπόν μία επιπλέον προσοχή και είναι λίγο δυσνόητο γιατί να υπάρχει μία τέτοια δομή.

 

Εικόνα 1 : Κώδικας μέρος Α΄

Εικόνα 1 : Κώδικας μέρος Α΄

 

Αφού το πρόγραμμα λάβει τα απαιτούμενα δεδομένα από το χρήστη προχωράει στη δημιουργία των αστεριών. Μια απλή επανάληψη εξασφαλίζει των αριθμό των αστεριών, ενώ σε αυτό το σημείο εισάγεται η συνάρτηση παραγωγής τυχαίων αριθμών για να σχεδιαστούν τα άστρα τυχαία στον καμβά. Προσοχή απαιτείται κατά την “οριοθέτηση” της συνάρτησης, αφού δε θέλουμε τα άστρα να ξεφύγουν από τα όρια του καμβά. Αυτό μπορεί να αφεθεί αρχικά για να το διαπιστώσουν οι μαθητές και να αποφασίσουν εν τέλει τα όρια που θα θέσουν. Για να μη σχεδιάζονται τα άστρα όλα με την ίδια “κλίση” είναι πιο όμορφο και φαίνεται και πιο ρεαλιστικό να ξαναχρησιμοποιηθεί η συνάρτηση παραγωγής τυχαίων αριθμών προσδιορίζοντας την κατεύθυνση που θα κοιτάει το sprite, και άρα την “κλίση” του κάθε άστρου. Το άστρο σχεδιάζεται χρησιμοποιώντας μία διαδικασία (star) θέτοντας το χρώμα και ακολουθώντας απλά τη γεωμετρία του σχήματος (βλ. Εικόνα 2).

 

Εικόνα 2 : Διαδικασία σχεδίασης άστρουΕικόνα 2 : Διαδικασία σχεδίασης άστρου

 

Οι συναρτήσεις παραγωγής τυχαίων αριθμών μπορεί να μας δώσουν φυσικά και αριθμούς που έχουμε ξαναπάρει ή αριθμούς οι οποίοι προσδιορίζουν ένα σημείο “δίπλα” σ’ ένα ήδη σχεδιασμένο άστρο. Το αποτέλεσμα θα είναι να ζωγραφίζεται το ένα άστρο πάνω στο άλλο και οπτικά δεν δίνει και το καλύτερο αποτέλεσμα. Εδώ μπαίνει στο παιχνίδι η συνάρτηση test_star(x,y) η οποία πριν σχεδιαστεί το οποιοδήποτε άστρο “δοκιμάζει” το τυχαίο σημείο ώστε να μην πέσει το ένα άστρο πάνω στο άλλο. Επιστρέφει 0 ή 1 (ψευδές, αληθές με άλλα λόγια) και ο έλεγχος που κάνει είναι πολύ απλός. “Σχεδιάζει”, χωρίς να είναι το στυλό κάτω, το άστρο με αρχή το τυχαίο σημείο και αν συναντήσει το (κίτρινο) χρώμα που έχουν τ’ αστέρια σημαίνει ότι δεν μπορεί να σχεδιαστεί σ’ εκείνο το σημείο το νέο άστρο αφού πέφτει πάνω σ’ ένα ήδη υπάρχον (βλ. Εικόνα 3).

 

Εικόνα 3 : Συνάρτηση δοκιμής τυχαίου σημείουΕικόνα 3 : Συνάρτηση δοκιμής τυχαίου σημείου

 

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

 

Η σχεδίαση του πλανήτη γίνεται εφικτή με μία αναδρομική διαδικασία (βλ. Εικόνα 5). Η διαδικασία αυτή σχεδιάζει έναν κύκλο με ακτίνα που προσδιόρισε ο χρήστης (ουσιαστικά προσεγγίζει τον κύκλο με ένα πολύγωνο). Η λογική από κει και πέρα είναι η εξής απλή : εάν σχεδιάσουμε ομόκεντρους κύκλους μειώνοντας την ακτίνα κάθε φορά κατά ένα βήμα ουσιαστικά γεμίζουμε τον πλανήτη με χρώμα. Αντί να το πετύχουμε επαναληπτικά, κρατάμε τη διαδικασία απλή και την καλούμε αναδρομικά μέχρι να πετύχουμε το σκοπό μας. Το αποτέλεσμα βέβαια δε γεμίζει 100% τον πλανήτη αφού, όπως προαναφέρθηκε, ο πλανήτης δεν είναι κύκλος αλλά πολύγωνο, οπότε σχεδιάζοντας τους εσωτερικούς ομόκεντρους κύκλους κάποια εικονοστοιχεία δε θα προσπελαστούν και δε θα χρωματιστούν. Εξ’ άλλου δεν είναι αυτός ο σκοπός μας εδώ, αλλά η εισαγωγή στην αναδρομή.

 

Εικόνα 4 : Κώδικας μέρος Β΄Εικόνα 4 : Κώδικας μέρος Β΄

 

Εικόνα 5 : Σχεδίαση πλανήτη και γέμισμα αναδρομικά

Εικόνα 5 : Σχεδίαση πλανήτη και γέμισμα αναδρομικά

 

Αποτέλεσμα

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

 

Εικόνα 6 : Αποτέλεσμα εκτέλεσηςΕικόνα 6 : Αποτέλεσμα εκτέλεσης

 

Εικόνα 7 : Αποτέλεσμα εκτέλεσηςΕικόνα 7 : Αποτέλεσμα εκτέλεσης

 

   

Καλώς Ορίσατε  

Αγαπητές συναδέλφισσες, αγαπητοί συνάδελφοι,

Σας καλωσορίζω στο δικτυακό τόπο που φιλοδοξεί να συγκεντρώσει τη δημιουργικότητα αλλά και την ανάγκη μας για επικοινωνία και συνεργασία.

 Ο σκοπός του είναι...

 Γιώργος Πανσεληνάς

Σχολικός Σύμβουλος Πληροφορικής Αν. Κρήτης

   

Εκδηλώσεις  

DigiFest2022 Heraklion

   

Βιβλία  

ef plir

   

Junior Code Academy  

Logo JCA

   

Περιοχή Χρηστών