Κεφάλαιο+2

=2. Η πρώτη επαφή στο scratch και οι πρωταγωνιστές μας: Sprites=

include component="comments" page="Κεφάλαιο 2" limit="10"

__**Ομάδα Διαδικτυακών πόρων**__
===**Προτεινόμενοι σύνδεσμοι :**===

[|1.http://www.redware.com/scratch]

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

2.[] Οι χρήστες εισάγονται στις θεμελιώδεις αρχές του Scratch με τη βοήθεια ηλεκτρονικών εκπαιδευτικών βιβλίων, Scratch cards και αντίστοιχων video. Επιρόσθετα, δίνεται η δυνατότητα εύρεσης σχετικών πληροφοριών μέσω ερωτήσεων, θέματων που αφορούν την εκμάθησή του από καθηγητές όπως και πρoϊόντων σχετικών με το Scratch.

3.[] Ένας σύνδεσμος όπου οι μαθητές μπορούν να κατεβάσουν το εργαλείο Scratch.

4.[] Eικονογραφημένη περιγραφή για το που βρίσκω το Scratch, πώς το κατευάζω και πώς το εγκαθιστώ.

5.[] Παράδειγμα για το πώς δημιουργώ το πρώτο μου project στο Scratch, πώς κατασκευάζω script, ποιες βασικές επιλογές χρειάζομαι, πώς χρησιμοποιώ τη βοήθεια, πώς το αποθηκεύω κ.α.

6.[] Απλά παραδείγματα χρησιμοποιώντας τις παλέτες του Scratch

7.[] Σε αυτό τον σύνδεσμο και στο αρχείο ** [|**LACT01_INTRODUCTION.ZIP**] **οι χρήστες μπορούν να εξοικειωθούν με το περιβάλλον του Scratch μέσα από ένα απλό project που αναδεικνύει τις βασικές λειτουργίες.

8.[] Ένα βίντεο αρχικής παρουσίασης του scratch. Θα μπορούσε να παρουσιαστεί στους μαθητές σαν μια αρχική γνωριμία με το scratch. Οι μαθητές βλέπουν μέσα από αυτό το βίντεο, ότι οποιοσδήποτε (ακόμα και οι ίδιοι) μπορούν να δημιουργήσουν κάποια από τα γνωστά τους παιχνίδια, μέσω του Scratch, καθώς και άλλες ενδιαφέρουσες εφαρμογές.

9.[|http://en.wikibooks.org/wiki/Scratch] Εδώ γίνεται μια εισαγωγή στο Scratch, καθώς επίσης υπάρχουν διαθέσιμοι σύνδεσμοι που παραθέτουν α) την ορολογία του προγράμματος, β) μαθήματα εκμάθησής του και γ) παραδείγματα από έργα στο πρόγραμμα.

10.[] Θέλετε να διδάξετε το [|Scratch] στην τάξη και ψάχνετε να βρείτε από που να ξεκινήσετε; Τότε είναι σίγουρο ότι η παρακάτω παρουσίαση από την Jessica Chiang θα σας φανεί πολύ χρήσιμη. Περιέχει αναλυτική περιγραφή των θεματικών ενοτήτων (κίνηση, μουσική, sprites, σκήνη), καθώς και ανάλυση παιχνιδιών όπως το mini mario και το pong game.

11.[|http://pages.cs.wisc.edu/~dusseau/catapult.html] Ένας σύνδεσμος με ενδιφέρουσες δραστηριότητες στο Scratch. Μερικα από αυτά είναι το name glide (τα γράμματα του ονόματος μας στριφογυρίζουν στη σκηνή, αφήνοντας πίσω τους μια γραμμή)- (περιέχει κυρίως ενολές αλλαγής της σκηνής, κίνησης και τυχαιότητας), το catch those letters (προσπαθούμε να πιάσουμε τα γράμματα του ονόματος μας που κινούνται στη σκηνή)-(οι παραπάνω εντολές εμπλουτίζονται με εντολές αισθητήρων). Στη συνέχεια αναλύει σε τρεις ενότητες το παιχνίδι cathimg bananas (ένα αντικείμενο προσπαθεί να πιάσει άλλα αντικείμενα που κινούνται στη σκηνή)-(είναι ένα ολοκληρωμένο παιχνίδι, περιέχει σχεδόν όλες τις εντολές του Scratch και χρησιμοποιεί και μεταβλητές (μετρητές)), στην επόμενη ενότητα προσθέτονται επιπλέον εμπόδια και στη τελευταία περιγράφεται πως τεματίζουμε το παιχνίδι (χρησιμοποίηση και χρονομέτρου).

12.[] Ένα βίντεο που δείχνει πώς χρησιμοποιείται το Scratch στη τάξη ως εκπαιδευτικό υλικό στο Cardinal Forest Elementary School.

13..[] Αυτός ο σύνδεσμος ουσιαστικά παρουσιάζει το ίδιο υλικό από το Πανεπιστήμιο του Harvard και πραγματεύεται αρχικά την έννοια του προγραμματισμού, εισάγοντας τους χρήστες στις κύριες έννοιες. Έπειτα, γίνεται συσχέτιση των όσων αναφέρθηκαν με το νέο προγραμματιστικό περιβάλλον του Scratch παρουσιάζοντας τις βασικές δυνατότητες και τα πλεονεκτήματα αυτού του νέου εργαλείου.

2. Η πρώτη επαφή στο scratch και οι πρωταγωνιστές μας: sprites
// Μαθησιακοί στόχοι // Χαρακτηριστικά // Από πού μπορούμε να το κατεβάσουμε, πώς μπορούμε να εγκαταστήσουμε το scratch, ιστοσελίδα (FAQ, ομάδες συζητήσεων – forums). Παρουσίαση και επεξήγηση της έννοιας του αντικειμένου, των εντολών και των γεγονότων. Σύνδεση των εννοιών με την πραγματική ζωή. // Η φιλοσοφία του αντικειμενοστραφή προγραμματισμού. Αναγνώριση της φιλοσοφίας του αντικειμενοστραφή προγραμματισμού σε παραδείγματα του scratch. Παραδείγματα Επίδειξη έτοιμων παραδειγμάτων του scratch από το αρχείο > παραδείγματα και πώς τα τρέχουμε. Παρουσίαση ενός χαρακτήρα (πχ το super ρομπότ). Τι θα μπορούσε να κάνει; Αναλογίες με την πραγματική ζωή. (Δεν είναι αναγκαία η επίδειξη ενός τέτοιου αντικειμένου στο scratch. Απλά παραδείγματα είναι δυνατό να γίνουν κατανοητά λόγω της φυσικότητας της γλώσσας. Επιζητούμε οι μαθητές να καταλάβουν και όχι να μπορούν να αναπαράγουν - αυτό είναι ζητούμενο επόμενων κεφαλαίων.
 * 1) Να γνωρίζουν πού μπορούν να βρουν το πρόγραμμα
 * 2) Να είναι σε θέση να εγκαταστήσουν το πρόγραμμα από μόνοι τους
 * 3) // Να είναι σε θέση να τρέχουν και να χειρίζονται παραδείγματα του Scratch. //
 * 4) // Να κατανοούν την έννοια του αντικειμένου, των εντολών και των γεγονότων στην πραγματική ζωή. //
 * 5) // Να περιγράφουν την φιλοσοφία του αντικειμενοστραφή/γεγονοστραφή προγραμματισμού. //
 * 6) // Να αναγνωρίζουν αντικείμενα, εντολές και γεγονότα στο περιβάλλον του scratch //

=Διάρθρωση κεφαλαίου=

2.1 Προμήθευση και Εγκατάσταση του Scratch
Βήμα, βήμα το από που μπορώ να προμηθευτώ το Scratch, πως το εγκαθιστώ με εκνευριστικά αναλυτικό τρόπο έτσι ώστε να μπορει να το εγκαταστήσει και το παιδί που πρώτη φορα κάθεται σε υπολογιστή, τρέξιμο των πρώτων παραδειγμάτων.

2.2 Αντικείμενα, Εντολές, Γεγονότα
Η πρώτη ουσιαστική εισαγωγή του μαθητή σε μερικές απο τις πιο σημαντικές έννοιες του προγραμματισμού. Καλή επεξήγηση, εικονογραφημένα παραδείγματα, άμεση αντιστοίχιση με πραγματική ζωή. Αναφέρουμε πραγματικα αντικείμενα με φυσική υπόσταση, κάνουμε μια προσπάθεια να τα παρουσιάσουμε απο μια πιο προγραμματιστική σκοπιά, δίνουμε τιμές στα διάφορα φυσικά τους χαρακτηριστικά, αρχίζει να γίνεται πιο σαφης η προγραμματιστική αντιστοίχιση. Επεξήγηση γεγονοστραφή συλλογισμού. Πόσο "ανενόχλητα" μπορεί να ενεργεί ένα αντικείμενο; Αλληλεπίδραση με άλλα αντικείμενα. Το κάθε αντικείμενο αντιλαμβάνεται τον υπόλοιπο κόσμο και τα υπόλοιπα αντικείμενα μέσω γεγονότων.

2.3 Αντικειμενοστραφής Προγραμματισμος
Μια πρώτη απόπειρα να μεταδώσουμε τη φιλοσοφία της αντικειμενοστράφιας στο προγραμματισμο. Επεξήγηση του τρόπου σκέψης, του τρόπου χειρισμού των αντικειμένων. Αποδόμηση προβλημάτων βάσει του αντικειμενοστραφή προγραμματισμου. Δημιουργια αντικειμένων, ανάθεση εργασιών σ' αυτα. Ενα αντικειμενο μπορει να μιλαει, να αλλάζει μορφές και να κινειται!

**2.1 Εγκατάσταση του Scratch**
Μετά την πρώτη μας επαφή με το περιβάλλον του **Scratch** από το προηγούμενο κεφάλαιο σίγουρα θα θέλετε να μάθετε πως θα το αποκτήσετε και εσείς στον προσωπικό σας υπολογιστή. Ας δούμε μαζί, λοιπόν, βήμα βήμα τον τρόπο για να το "κατεβάσουμε" και να το εγκαταστήσουμε, με τη βοήθεια εικόνων που θα σας δώσουν μια ολοκληρωμένη άποψη για το τι ακριβώς χρειάζεται να κάνετε. Το απλούστερο είναι να το αναζητήσουμε στην αρχική σελίδα του **Scratch** στο διαδίκτυο.

Ανοίγουμε λοιπόν τον **Internet Explorer** και στη μπάρα διευθύνσεων πληκτρολογούμε "http://scratch.mit.edu/".



Πατάμε το κουμπί //Enter// στο πληκτρολόγιο μας και αμέσως εμφανίζεται ο ιστοτόπος των δημιουργών του **Scratch**. Όπως μπορείτε να δείτε και μόνοι σας, στον ιστοχώρο αυτό μπορείτε εύκολα να βρείτε πολυάριθμα παραδείγματα που έχουν δημιουργηθεί από έμπειρους χρήστες του λογισμικού, να τα τρέξετε για να διαπιστώσετε σε πρώτο βαθμό τον τρόπο λειτουργίας του, καθώς και να βρείτε πληροφορίες για όποια ερωτήματα σας δημιουργηθούν καθ' όλη τη διάρκεια της χρήσης του. Στη συνέχεια κάνουμε κλικ πάνω στην επιλογή "Download Scratch". Ήδη έχουμε ολοκληρώσει το 1ο βήμα.



Έπειτα μας ζητείται η συμπλήρωση μιας προαιρετικής φόρμας με κάποια προσωπικά μας στοιχεία. Η φόρμα βοηθάει τους δημιουργούς του προγράμματος να γνωρίζουν τη διάδοση του **Scratch**. Αν δε θέλουμε κάτι τέτοιο - καλό είναι να αποφεύγουμε να παρέχουμε προσωπικά μας δεδομένα οπουδήποτε στο διαδίκτυο - μπορούμε να την προσπεράσουμε πατώντας στην ένδειξη "Συνεχίστε στο κατέβασμα του Scratch".



Στη σελίδα που μας εμφανίζεται επιλέγουμε να κατεβάσουμε το πρόγραμμα "ScratchInstaller1.4.exe//",// το οποίο βρίσκεται κάτω από την επιγραφή "Scratch Installer for Windows" (εφόσον βέβαια έχετε εγκατεστημένο στον υπολογιστή σας το αντίστοιχο λειτουργικό σύστημα της **Microsoft**).



Έπειτα πατάμε "Εκτέλεση"



και περιμένουμε μέχρι ο υπολογιστής μας να τελειώσει με το κατέβασμα του προγράμματος.



Μόλις ολοκληρωθεί αυτό το "ScratchInstaller1.4.exe" εκτελείται αυτόματα από τον υπολογιστή μας. Τότε ξεκινάει ο οδηγός εγκατάστασης του **Scratch** και το μόνο που μας μένει πλέον είναι να ακολουθήσουμε τα 3 βήματά του. Αρχικά επιλέγουμε να πατήσουμε το κουμπί "Next >".



Στο επόμενο παράθυρο του οδηγού που εμφανίζεται, μας δίνεται επιπλέον η δυνατότητα να επιλέξουμε (μέσω του κουμπιού "Browse...") το φάκελο του υπολογιστή μας, στον οποίο θα αποθηκευτεί αυτόματα ο αντίστοιχος φάκελος του **Scratch**. Πάντως καλό θα ήταν να αφήσουμε τον προεπιλεγμένο φάκελο ("Program Files"). Μετά από αυτό κάνουμε κλικ πάλι στο κουμπί "Next >" για να συνεχίσουμε την εγκατάσταση.



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



Το **Scratch** εγκαθίσταται στον υπολογιστή μας και σε πολύ λίγο είναι απολύτως έτοιμο για χρήση.



Μόλις η εγκατάσταση ολοκληρωθεί με επιτυχία πατάμε ξανά το κουμπί "Next >"



και τελειώνουμε πατώντας την ένδειξη "Finish".



Ο οδηγός εγκατάστασης θα δημιουργήσει ένα εικονίδιο του **Scratch** (η λεγόμενη //συντόμευση//) στην επιφάνεια εργασίας σας, έτσι ώστε η πρόσβαση στο πρόγραμμα να είναι πιο εύκολη. Εξ’ άλλου με το που πατήσουμε το κουμπί "Finish", το **Scratch** ανοίγει αυτόματα και πλέον είστε σε θέση να έχετε μια πρώτη επαφή μαζί του και να πειραματιστείτε με τις πολυάριθμες δυνατότητες του.

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



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

Ας πάρουμε όμως μαζί μια πρώτη γεύση από τις δυνατότητες του. Αρχικά ανοίγουμε το **Scratch** πατώντας διπλό κλικ πάνω στο εικονίδιο του στην επιφάνεια εργασίας.



Αφού ανοίξει το παράθυρο του προγράμματος το καλύτερο που έχουμε να κάνουμε, για να καταλάβετε τι θα μπορείτε να δημιουργήσετε στο τέλος αυτού του βιβλίου, είναι να τρέξουμε τα έτοιμα παραδείγματα που μας παρέχει το λογισμικό και να έχουμε μια πρώτη επαφή με το περιβάλλον εργασίας του. Για να το πετύχουμε αυτό πατάμε στο κουμπί "Αρχείο" και στη συνέχεια "Άνοιγμα".



Στο παράθυρο που εμφανίζεται στην οθόνη μας («Άνοιξε Έργο») πατάμε στην ένδειξη "Παραδείγματα".



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



και ας εκτελέσουμε μαζί το παράδειγμα //PacMan//. Αφού έχουμε εισέλθει στον φάκελο //Games// πατάμε διπλό κλικ στην επιγραφή "PacMan".



Το **Scratch** ξεκινάει την εκτέλεση του προγράμματος και εμφανίζει στην οθόνη πάνω δεξιά το περιβάλλον του παιχνιδιού.



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



Ας δούμε άλλο ένα παράδειγμα από μια διαφορετική κατηγορία αυτή τη φορά. Ακολουθώντας τα ίδια βήματα που περιγράψαμε παραπάνω (Αρχείο -> Άνοιγμα -> Παραδείγματα), επιλέγουμε την κατηγορία "Music and Dance"



και εκτελούμε το παράδειγμα //BreakDance//.



Πατάμε την πράσινη σημαιούλα και ο χορός ξεκινά...



Ο χαρακτήρας του παραδείγματος αρχίζει και κινείται στο ρυθμό της μουσικής που ακούγεται από το **Scratch.**



Από πάνω του ακριβώς υπάρχουν 5 εικονίδια. Πατώντας σε κάθε ένα από αυτά ο "Rapper" μας (ονόματι //B boy//) κάνει και από μια διαφορετική χορευτική φιγούρα. Για παράδειγμα, αν πατήσουμε το εικονίδιο της γυναίκας τραγουδίστριας (δηλαδή το μεσαίο) το αποτέλεσμα θα είναι άκρως εντυπωσιακό και διασκεδαστικό, όπως θα φανεί και στην αμέσως επόμενη εικόνα.



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

Με παρόμοιο τρόπο μπορούμε να τρέξουμε και όλα τα υπόλοιπα παραδείγματα από κάθε μια κατηγόρια. Και το παιχνίδι ξεκινά… Καλή μας διασκέδαση!!!

**2.2 Αντικείμενα, Εντολές, Γεγονότα**
Όπως αναφέραμε και στο κεφάλαιο 1, ο προγραμματισμός αποτελεί ένα τρόπο επίλυσης προβλημάτων κατά τον οποίο συνθέτουμε μια ακολουθία εντολών με σκοπό την επίτευξη συγκεκριμένων στόχων. Ας ξεκινήσουμε λοιπόν με την μελέτη των βασικών του στοιχείων. Το πρώτο στοιχείο του προγραμματισμού στο **Scratch** που θα μας απασχολήσει καθ' όλη τη διάρκεια του βιβλίου είναι τα αντικείμενα (**sprites**). Αν ρίξουμε μια ματιά γύρω μας, θα παρατηρήσουμε ότι το περιβάλλον μας αποτελείται από αντικείμενα, τα οποία μπορούμε εύκολα να αντιληφθούμε. Σαν παραδείγματα αντικειμένων μπορούμε να αναφέρουμε ένα αυτοκίνητο, μια μπάλα μπάσκετ ή έναν άνθρωπο (Εικόνα 2.2.1). Κάθε αντικείμενο προσδιορίζεται και από κάποια συμπεριφορά άλλοτε απλή και άλλοτε πολύπλοκη, η οποία αλλάζει και προσαρμόζεται ανάλογα με τις καταστάσεις. Αν αφήσουμε από τα χέρια μας μια μπάλα αυτή πέφτει στο έδαφος και αναπηδά. Παρομοίως ένα αυτοκίνητο έχει ανάλογη συμπεριφορά με τα πετάλια που θα πατήσει ο οδηγός, με το γκάζι επιταχύνει ενώ με το φρένο σταματά. Όμως τι σχέση έχουν όλα αυτά με τον προγραμματισμό στο **Scratch**?



Ας υποθέσουμε ότι είμαστε κατασκευαστές ηλεκτρονικών παιχνιδιών και θέλουμε να φτιάξουμε ένα ράλι που να φαίνεται όσο πιο αληθινό γίνεται, δε έχουμε παρά να επηρεαστούμε από τον πραγματικό κόσμο της Formula και να το σχεδιάσουμε. Όμως δεν αρκεί να το σχεδιάσουμε, βλέπετε τα αντικείμενα από μόνα τους στο **Scratch** δεν είναι καθόλου έξυπνα, δεν έχουν δική τους βούληση, αλλά ούτε και υπακούνε σε φυσικούς νόμους, όπως η μπάλα που πέφτει λόγω του νόμου της βαρύτητας. Σε αυτό το σημείο αναλαμβάνει δράση ο προγραμματιστής δίνοντας ζωή στα αντικείμενα (Εικόνα 2.2.2). Πως όμως πρόκειται να το καταφέρει αυτό? Αρκεί να γράψει ένα σύνολο από εντολές που θα καθορίζουν την συμπεριφορά που θα ήθελε να έχουν τα αντικείμενα του. Έτσι απλά καταφέραμε να φέρουμε τον πραγματικό κόσμο στον υπολογιστή μας, μέσα από την φιλοσοφία των αντικειμένων. Ώρα λοιπόν να συμπεριφερθούμε σαν προγραμματιστές.



Ίσως όλοι γνωρίζουμε το γνωστό παιχνίδι **Pong**. Μπορούμε να το δούμε στα έτοιμα παραδείγματα του **Scratch** αφού ακολουθήσουμε τη διαδικασία ανοίγματος παραδειγμάτων που περιγράψαμε στη προηγούμενη ενότητα (**Παραδείγματα/Pong**). Προτού όμως μπούμε στο κόσμο του **Scratch** ας μάθουμε πως ορίζεται αυτό το παιχνίδι και ποιος είναι ο στόχος του.

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




 * Αντικείμενα:** Μπάρα, Μπάλα.

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



Η μπάλα (Εικόνα 2.2.5) τώρα, κινείται σε όλη την οθόνη συμπεριφερόμενη όπως την μπάλα στο φλίπερ που δεν σταματά ποτέ εκτός και αν πέσει στο κενό (Εικόνα 2.2.6), ενώ όταν έρθει σε επαφή με τη μπάρα (Εικόνα 2.2.7) η με τα τοιχώματα της οθόνης (Εικόνα 2.2.8) αναπηδάει και αλλάζει κατεύθυνση, όπως κινούνται οι μπάλες σε ένα μπιλιάρδο. Όμως τι γίνεται με τις εντολές? Το μόνο που μπορούμε να κάνουμε αυτή την στιγμή είναι απλά να τις δούμε αφού η ανάλυση τους αποτελεί την ουσία του προγραμματισμού και αντικείμενο πολλών επόμενων κεφαλαίων. Μπορούμε να κάνουμε το εξής trick.









Ας υποθέσουμε ότι διαγράφουμε τις εντολές που υπάρχουν σε αυτό το έτοιμο παράδειγμα. Αυτό επιτυγχάνεται πατώντας δεξί κλικ -> διαγραφή στη πρώτη εντολή κάθε ομάδας εντολών που βλέπουμε. Τι παρατηρούμε??

Τα αντικείμενα μας έχουν μετατραπεί σε ακίνητες φιγούρες χωρίς καμία λειτουργία και καμία συμπεριφορά.

Συνεπώς τι ήταν αυτό που έδινε ζωή στα αντικείμενα μας, δηλαδή όριζε συμπεριφορές??

Μήπως αυτό το σύνολο από γαλάζια, πορτοκαλί και πράσινα τουβλάκια δηλαδή οι εντολές (Εικόνα 2.2.9 και Εικόνα 2.2.10). Άρα μήπως όταν λέμε προγραμματιστής εννοούμε "δημιουργός αντικειμένων με συμπεριφορά"?





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




 * Μπάρα**
 * Γεγονότα**: Κίνηση του ποντικιού.


 * Μπάλα**
 * Γεγονότα:** "Κανένα" αφού η μπάλα κινείται από μόνη της.

Ώρα για φαντασία...

Αφού μελετήσαμε τα πρώτα βασικά στοιχεία, μήπως θα μπορούσαμε να επεκτείνουμε το παράδειγμα του **Pong** εμπλουτίζοντας το με νέα αντικείμενα η αλλάζοντας τα γεγονότα. Σε πρώτη φάση θα μπορούσαμε να κάνουμε ποιο δύσκολο το στόχο του παιχνιδιού προσθέτοντας αντικείμενα στην οθόνη που να αλλάζουν πιο συχνά την κατεύθυνση της μπάλας (Εικόνα 2.2.12) η ακόμα και να προσθέσουμε επιπλέον μπάλες (Εικόνα 2.2.13). Θα μπορούσαμε επίσης να αλλάξουμε και τη φιλοσοφία του παιχνιδιού προσθέτοντας τετράγωνα τουβλάκια, υποβάλλοντας έτσι τον χρήστη εκτός να διατηρήσει την μπάλα μέσα στην οθόνη να εξαφανίσει και όλα τα τουβλάκια (Εικόνα 2.2.14). Όμως μην ξεχνάμε ότι θα πρέπει να καθορίσουμε την συμπεριφορά των νέων μας αντικειμένων. Δηλαδή κάθε φορά που η μπάλα θα χτυπάει τα τουβλάκια αυτά θα πρέπει να εξαφανίζονται η ακόμα θα μπορούσαμε να τα κάνουμε να κινούνται από μόνα τους οριζόντια όπως η μπάρα. Τέλος η χρήση του ποντικιού για την κίνηση της μπάρας θα ήταν πιο βολικό να την αντικαταστήσουμε από τα πλήκτρα-βελάκια δεξιά και αριστερά για την κίνηση της μπάρας αντίστοιχα.








 * Ορισμοί - Λέξεις Κλειδιά**

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

**2.3 Αντικειμενοστραφής Προγραμματισμος**
Σε αυτήν την ενότητα θα ασχοληθούμε με τον αντικειμενοστραφή προγραμματισμό. Μήπως μπορούμε να καταλάβουμε την προέλευση αυτής της λέξης γνωρίζοντας, ότι στην προηγούμενη ενότητα διδαχθήκατε την έννοια του αντικειμένου? Χωρίς να δυσκολευτούμε ιδιαίτερα μπορούμε να καταλάβουμε ότι ο τρόπος με τον οποίο προγραμματίζουμε έχει σαν βάση τα αντικείμενα που συμμετέχουν στην εφαρμογή μας, με σκοπό να τους αποδώσουμε συγκεκριμένες συμπεριφορές που θα επιφέρουν την λύση κάποιου προβλήματος (πρόβλημα μπορεί να είναι και η δημιουργία ενός παιχνιδιού). Με αυτόν τον τρόπο, προσαρμόζουμε την γλώσσα προγραμματισμού στις ανάγκες του προβλήματος που επιλύουμε και όχι το πρόβλημα στις ανάγκες της γλώσσας. Έτσι, από τα παραπάνω αντιλαμβανόμαστε ότι ένα από τα μεγάλα πλεονεκτήματα της αντικειμενοστρέφιας στον προγραμματισμό είναι ότι μας επιτρέπει να αντιμετωπίσουμε το πρόβλημα με τον ίδιο τρόπο που θα κάναμε και στο πραγματικό κόσμο. Όταν θέλουμε να προγραμματίσουμε με αντικειμενοστρέφεια, πρέπει να μπορούμε να αναγνωρίσουμε όλα τα αντικείμενα σχετικά με το πρόβλημα και το πώς αυτά σχετίζονται μεταξύ τους. Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να περιγράψουμε ένα παιχνίδι αγώνα αυτοκινήτων (Εικόνα 2.3.1).



Αναγνωρίζουμε αρχικά το αυτοκίνητο που χειριζόμαστε εμείς ως αντικείμενο. Είναι όμως το μοναδικό αντικείμενο; Φυσικά και όχι! Το αυτοκίνητό μας δεν θα αγωνίζεται μόνο του! Θα έχει ως ανταγωνιστές του άλλα αυτοκίνητα, άρα έχουμε επιπλέον αντικείμενα. Και πάλι όμως δεν τελειώσαμε! Ως αντικείμενο μπορούμε ακόμα να αναγνωρίσουμε ένα εμπόδιο που θα συναντήσουμε μπροστά μας και θα μας αναγκάσει να κάνουμε έναν ελιγμό ή πιθανά λάδια στο δρόμο που θα κάνουν το αυτοκίνητό μας να γ λιστρήσει (Εικόνα 2.3.2).

Ακόμη, αντικείμενο μπορούμε να θεωρήσουμε και τη γραμμή λήξης του αγώνα. Ανάμεσα στα αντικείμενα αυτά υπάρχουν διάφορες σχέσεις. Όπως αναφέρθηκε, όταν ένα αυτοκίνητο πατήσει πάνω σε λάδια, τότε πιθανά θα γλιστρήσει, αλλάζοντας κατεύθυνση. Ή αν περάσει πρώτο από τα άλλα αντικείμενα τη γραμμή τερματισμού θα είναι ο νικητής του αγώνα! Ακόμα, με κάποιον τρόπο πρέπει να ελέγχουμε και την κίνηση του αυτοκινήτου μας. Πότε θα ελαττώσει ταχύτητα το αυτοκίνητο; Προφανώς όταν πατήσουμε το φρένο. Ακόμη, για να αλλάξει κατεύθυνση χρειάζεται να στρίψουμε το τιμόνι. Το πάτημα του φρένου και το στρίψιμο του τιμονιού αντιστοιχούν σε γεγονότα όπως μάθαμε στην ενότητα 2.2.

Ας εξετάσουμε τώρα το παράδειγμα στο **Scratch** που τρέξαμε στην πρώτη ενότητα του κεφαλαίου, το παιχνίδι Pacman. Σ’ αυτό το παράδειγμα έχουμε δύο αντικείμενα. Το ένα προφανώς είναι ο πακμαν (Εικόνα 2.3.3 ). Στο παράδειγμά μας παρατηρούμε ότι μπορεί να κινείται και να αλλάζει μορφή (καθώς ανοιγοκλείνει το «στόμα» του)! Το δεύτερο αντικείμενο που έχουμε είναι ο λαβύρινθος στον οποίο κινείται ο πακμαν (Εικόνα 2.3.4). Ο λαβύρινθος βλέπουμε ότι αλλάζει μορφή συμβολίζοντας έτσι την αλλαγή της πίστας όταν ο πακμαν «φάει» την κόκκινη κουκίδα (Εικόνα 2.3.5)!

Παρατηρούμε λοιπόν ότι το παιχνίδι για να «τρέξει» χρησιμοποιεί δύο αντικείμενα που αλληλεπιδρούν μεταξύ τους! Ο πακμαν μπορεί να κινηθεί μέσα στο λαβύρινθο (αποφεύγοντας τους τοίχους) και ο λαβύρινθος αλλάζει μορφή όταν ο πακμαν κινηθεί πάνω στην κόκκινη κουκίδα που έχει ο λαβύρινθος!

Την κίνησή του πακμαν την ελέγχουμε μέσω του πληκτρολογίου. Το πάτημα από το αριστερό βελάκι στο πληκτρολόγιο «αντιστοιχεί» σε κίνηση του πακμαν προς τα αριστερά, του δεξιού σε κίνηση προς τα δεξιά και αντίστοιχα για πάνω και κάτω. Το πάτημα ενός από τα βελάκια στο πληκτρολόγιο, αντιστοιχεί σε ένα γεγονός, το οποίο όταν συμβαίνει αλλάζει την ροή του παιχνιδιού, καθώς αλλάζει την κατεύθυνση στην οποία κινείται ο πακμαν. Συνοψίζοντας, σε αυτό το κεφάλαιο είδαμε πως μπορούμε να εγκαταστήσουμε το λογισμικό - πρόγραμμα του **Scratch** και να περιηγηθούμε σε μια σειρά έτοιμων παραδειγμάτων που έχει. Στη συνεχεία γνωρίσαμε τις πρώτες μας προγραμματιστικές έννοιες όσον αφορά τον αντικειμενοστραφή προγραμματισμού όπως τα αντικείμενα, τις εντολές και τα γεγονότα τις οποίες σε πρώτη φάση τις συνδέσαμε με τον πραγματικό κόσμο ενω μετέπειτα τις εξετάσαμε μέσα στον προγραμματισμό. Συνεχίζοντας στο ίδιο μοτίβο, στο υπόλοιπο του κεφαλαίου ασχοληθήκαμε με τη λειτουργιά και την χρησιμότητά αυτών των εννοιών μέσα από επιπλέον παραδείγματα του **Scratch**.

Ένα από τα μεγάλα πλεονεκτήματα της αντικειμενοστρέφιας στον προγραμματισμό είναι ότι μας επιτρέπει να μοντελοποιήσουμε εύκολα τον πραγματικό κόσμο.
 * Σημείωση** **1**

Κάθε αντικείμενο μπορεί να μιλάει, να αλλάζει μορφές και να κινείται! **ΕΡΩΤΗΣΕΙΣ**
 * Σημείωση 2**
 * 1) Στο παρακάτω σχήμα αντιστοιχίστε τις έννοιες:

2) Δώστε παραδείγματα αντικειμένων που συμμετέχουν σε προβλήματα της καθημερινότητας σας. 3) Περιγράψτε τις συμπεριφορές των αντικειμένων του προηγούμενου ερωτήματος. 4) Δώστε 5 εντολές που δέχεστε από τους γονείς σας οι οποίες διαμορφώνουν κάποια συμπεριφορά σας. 5) Αναφέρετε 3 επεκτάσεις που θα μπορούσατε να κάνετε στο παιχνίδι του Pacman οι οποίες θα έκαναν το παιχνίδι πιο δύσκολο και πιο ενδιαφέρον. 6) Στις επεκτάσεις του προηγούμενου ερωτήματος, καταγράψτε όλα τα καινούρια αντικείμενα που θα λάβουν μέρος, μαζί με τις συμπεριφορές που θα έχουν. 7) Εάν στο παράδειγμα του Pacman, ο λαβύρινθος αποτελούσε σκηνικό αντί για αντικείμενο, πως θα έπρεπε να τροποποιηθεί ο κώδικας μας για να συνεχίσουμε να μπορούμε να παίξουμε κανονικά το παιχνίδι. (Βοήθεια: Τι ακριβώς θα έπρεπε να γίνει με τη κόκκινη κουκκίδα?) 8) ** Αναλύστε με βάση τον αντικειμενοστραφή προγραμματισμό, το πρόβλημα δυο παιδιών που θέλουν κάνουν τραμπάλα. **

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ**

1) Στο έτοιμο παράδειγμα του Scratch, το ράλι, περιγράψτε ποια είναι τα αντικείμενα και ποια τα γεγονότα? Να προσδιορίσετε τη συμπεριφορά των αντικειμένων.. 2) Περιηγηθείτε σε όλα τα έτοιμα παραδείγματα του Scratch και προσπαθήστε να σκεφτείτε ένα πρόβλημα από τη δική σας καθημερινότητα, που θα μπορούσε να μεταφερθεί στο Scratch. Καταγράψτε αναλυτικά αντικείμενα, συμπεριφορές και γεγονότα. 3) Έστω ότι θέλουμε να προγραμματίσουμε το παιχνίδι του σκακιού στο Scratch. Κατονομάστε όλα τα αντικείμενα που θα λάβουν μέρος στο παιχνίδι, το σκηνικό στο οποίο θα διαδραματιστεί το παιχνίδι, και πως θα αλληλεπιδράσουν όλα αυτά μεταξύ τους.

**Περίληψη κεφαλαίου / VodCast κεφάλαιο 2** Γεια σας! Σήμερα θα μιλήσουμε για το κεφάλαιο 2 με σκοπό ν' αποκτήσουμε την πρώτη επαφή με το Scratch και την έννοια της αντικειμενοστράφιας στο προγραμματισμό.
 * Καλωσόρισμα**

Μετά την πρώτη μας επαφή με το περιβάλλον του Scratch από το προηγούμενο κεφάλαιο σίγουρα θα επιχειρήσουμε να το αποκτήσουμε στον προσωπικό μας υπολογιστή αφού το Scratch αποτελεί το νέο εργαλείο για γρήγορη και εύκολη εκμάθηση του προγραμματισμού. Παρόλα αυτά, το πρώτο “εμπόδιο” που θα συναντήσετε σε αυτήν σας την προσπάθεια, αποτελεί το μέρος από το οποίο θα μπορείτε να το προμηθευτείτε, καθώς και τα βήματα που θα πρέπει να ακολουθήσετε για να το εγκαταστήσετε με επιτυχία στον υπολογιστή σας. Σε αυτήν την υποενότητα έχετε τη δυνατότητα να παρακολουθήσετε με τη βοήθεια εικόνων, όλα όσα χρειάζονται για να αποκτήσετε το συγκεκριμένο λογισμικό. Εξ’ άλλου, θα έχετε μία πρώτη επαφή με τον τρόπο λειτουργίας του Scratch, μέσω του απευθείας τρεξίματος ορισμένων εξαιρετικά διασκεδαστικών παραδειγμάτων, μπορώντας να δείτε ,τι θα είστε σε θέση να πετύχετε, στο εγγύς μέλλον.
 * Εισαγωγή**

Σ' αυτή την ενότητα θα γνωρίσουμε τις πρώτες βασικές έννοιες του προγραμματισμού με πρώτη και καλύτερη τα αντικείμενα. Μέσα από τη καθημερινότητα και αναλύοντας μερικά απλά παραδείγματα του Scratch, θα αντιληφθούμε τα αντικείμενα και τις συμπεριφορές που έχουν καθώς και το τρόπο που αλληλεπιδρούν με τον χρήστη. Συγκεκριμένα παρατηρούμε ότι τα αντικείμενα μας στο προγραμματισμό, δεν είναι τίποτα παραπάνω από τους πρωταγωνιστές που θα συναντάγαμε σε ένα παιχνίδι, μια θεατρική παράσταση, και σε οποιαδήποτε άλλη κατάσταση της καθημερινότητα μας. Ως επέκταση της δημιουργίας των πρωταγωνιστών θα γνωρίσουμε τη δεύτερη σημαντική έννοια, τις εντολές, Θα χρησιμοποιήσουμε τις εντολές για να δώσουμε στα αντικείμενα/πρωταγωνιστές τις συμπεριφορές που εμείς θέλουμε να έχουνε. Τέλος μεγάλη σημασία έχει να καταλάβουμε ότι η δημιουργία ενός αντικειμένου και ο καθορισμός των συμπεριφορών του δεν αρκούν και αυτό, γιατί θέλουμε να δώσουμε τη δυνατότητα να τα χειριζόμαστε και ως χρήστες. Πως χειριζόμαστε ένα αυτοκινητάκι κατά τη διάρκεια εκτέλεσης ενός παιχνιδιού Ράλι? Μα πως αλλιώς, μέσω του πληκτρολογίου ή του ποντικιού. Συνεπώς εδώ γνωρίζουμε και μια τρίτη σημαντική έννοια, που είναι τα γεγονότα και ο γεγονοστραφής προγραμματισμός.
 * Ενότητα 2**

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

Το συγκεκριμένο κεφάλαιο πρόκειται για εισαγωγικό και θα μπορούσε να παραληφθεί από τους μαθητές όπως και το προηγούμενο κεφάλαιο. Βαθμό δυσκολίας στο κεφάλαιό μας θα δώσουμε 2 σε κλίμακα 1-5.

Ήταν το κεφάλαιο 1. Ελπίζουμε το παρόν υλικό να σας βοήθησε σημαντικά στον τρόπο διδασκαλίας του. Στο επόμενο κεφάλαιο θα εξερευνήσουμε αναλυτικά το περιβάλλον εργασίας του Scratch και τις βασικές περιοχές από τις οποίες αποτελείται. Καλή συνέχεια στα επόμενα κεφάλαια.