Κεφάλαιο 11

​1. Μπορείς να το κάνεις μόνο αν… (Εάν / εάν-αλλιώς (και αισθητήρες-τελεστές)

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

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

1.[] Παραδείγματα και επεξηγήσεις για ολες τις εντολές της παλέτας έλεγχος(Μπορείτε εύκολα να ξεχωρίσετε τις εντολές Εάν/εάν-αλλιώς)

2.[] Σε αυτό το σύνδεσμο περιλαμβάνεται το παράδειγμα Amazing Maze όπου μεταξύ των προγραμματιστικών εννοιών αναφέρονται και οι Conditional Statements για έλγχο υπό συνθήκη.

3.[] Εδώ οι χρήστες μπορούν να βρουν ένα βίντεο το οποίο αναλύει τη λειτουγία του ελέγχου υπό συνθήκη (if statement) στο Scratch μέσα από μια σειρά χαρακτηριστικών εφαρμογών.

4.[] Αυτός ο σύνδεσμος απ' το Harvard αναφέρεται στις εντολές συνθήκης (if και if-else statements) στο προγραμματιστικό εργαλείο του Scratch. Επιπλέον, γίνεται λόγος και για άλλα condition blocks όπως το when _condition_, κ.α.

5.[] Δείχνει πως χρησιμοποιούνται οι συνθήκες μέσα από ένα παράδειγμα που ένας καρχαρίας κηνυγάει την λεία του.

6.. [] Σε αυτό το σύνδεσμο υπάρχουν σχετικά άρθρα σχετικά με το Scratch, ένας ελληνικός οδηγός για το Scratch, καθώς και 2 σενάρια μαθήματος:1 για τις ακολουθιακές δομές, τις δομές επανάληψης και τους εμφωλευμένους βρόγχους

7.[] Σε αυτό το σύνδεσμο παρουσιάζονται κάποιες βασικές προγραμματιστικές αρχές μέσα από παραδείγματα στο Scratch. Οι ενότητες είναι: Εισαγωγή ( κίνηση της γάτας, πώς τρώει άλλα αντικείμενα, πώς αλλάζει ρούχα, πώς λέει κάποια λέξη), Εντολές ελέγχου ( φτιάχνουμε ένα ψάρι που κολυμπάει σε ένα δοχείο, μόλις ακουμπήσει το δοχείο τότε αλλάζει κατεύθυνση, επίσης μπορούμε να προσθέσουμε κουμπιά για να δημιουργεί το ψάρι μπουρπουλήθρες και να κάνει ήχο), Broadcastng μηνυμάτων (δημιουργία τριών sprites τα οποία αλλάζουν τα κοστούμια και τα backgrounds των άλλων sprites), δημιουργία ενός ολοκληρωμένου project. Για κάθε ενότητα, περιέχονται μαθήματα, φύλλα εργασίας και φύλλα με παραδείγματα.

8.[] Πρόκειται για ένα οδηγό για αρχάριους στο Scratch όπου συγκεκριμένα αναλύονται μέσα από παραδείγματα οι έννοιες της λίστας και της συνθήκης ελέγχου (If-else statements).

9.http://billkerr2.blogspot.com/2008/07/creating-piano-keyboard-using-scratch.html Ένα παράδειγμα για το πως μπορείς να χρησιμοποιήσεις την εντολή if και εμφωλευμένη για να δημιουργήσεις ένα πίανο στο scratch.

10.http://www.robodome.ca/scratch_taskcards/TASK%20CARDS%206.pdf Ένα παράδειγμα για το πως μπορείς να χρησιμοποιήσεις την if μέσα από ένα παιχνίδι που όταν η μια φιγούρα ακουμπάει την άλλη εξαφαν ίζεται.

//__11. Μπορείς να το κάνεις μόνο αν… (Εάν / εάν-αλλιώς και αισθητήρες-τελεστές)__// // Μαθησιακοί στόχοι // Να κατανοούν τη χρησιμότητα της υπο-συνθήκη εκτέλεσης εντολών Να μπορούν να αναγνωρίσουν παραδείγματα της υπο-συνθήκη εκτέλεσης εντολών σε προγράμματα καθημερινής χρήσης (π.χ. Facebook). Να κατανοούν τις διαφορετικές κατηγορίες συνθηκών που μπορούν να οριστούν στο Scratch Να είναι σε θέση να σχηματίζουν τις αναγκαίες συνθήκες σε διαφορετικά παραδείγματα Να κατανοούν και να αξιοποιούν τις εντολές ελέγχου Εάν / εάν-αλλιώς σε συνδυασμό με αισθητήρες-τελεστές. Να είναι σε θέση να συνθέτουν εμφωλευμένες εντολής ελέγχου Εάν / εάν-αλλιώς. Να ξεπεράσουν τις τυπικές μαθησιακές δυσκολίες που αντιμετωπίζονται με τις εντολές ελέγχου. Χαρακτηριστικά **Παλέτα αισθητήρες (Η παλέτα αυτή παρουσιάζεται για πρώτη φορά στο δικό σας κεφάλαιο)** Κατανόηση των εντολών υπο συνθήκη, ανάδειξη της αξίας τους, εφαρμογή στην καθημερινότητα. Ανάλυση των δυνατών συνθ ηκών του scratch από τις διαφορετικές παλέτες (με έμφαση στους αισθητήρες) Ασκήσεις μετατροπής λεκτικών περιγραφών σε συνθήκες Αξιοποίηση των εντολών **"Εάν"** και **"Εάν ... αλλιώς"** της παλέτας Έλεγχος. (Σχόλιο: Να μη διδαχθεί η εντολή **"τυχαία επιλογή από ... έως ..."**, διότι έχει επιλεγεί να διδαχθεί στο κεφάλαιο 15). //Παραδείγματα// Ο Κοντορεβιθούλης βρίσκει το δρόμο του (Γραμμική εξέλιξη του παραδείγματος " Ο Κοντορεβιθούλης πάει στο δάσος" από το κεφάλαιο 6 (Ο χαρακτήρας κινείται και αφήνει ίχνη και αν περάσει από μία θέση στην οποία έχει ξαναπεράσει (και έχει αφήσει το πετραδάκι) σταματά γιατί βρήκε το δρόμο του:) ) Ο ασταθής ανεμόμυλος ( Γραμμική εξέλιξη του παραδείγματος " Ο ανεμόμυλος" του κεφαλαίου 10 όπου Ο έλικας περιστρέφεται μόνο όταν έχ ει αέρα, δηλαδή όταν το σκηνικό (που μεταβάλλεται περιοδικά) είναι μπλε και όχι άλλο χρώμα, αλλιώς μένει ακίνητος μέχρι να γίνει πάλι το σκηνικό μπλε). Η γραμμική εξέλιξη είναι ένα από τα πολλά που μπορείτε να κάνετε. Θα μπορούσατε να βασιστείτε σε άλλα παραδείγματα και στη συνέχεια να προτείνετε στους μαθητές σας να βελτιώνουν προγράμματα που έχουν αναπτύξει σε προηγούμενα κεφάλαια.
 * (Σχόλιο: Το χρονόμετρο από τους Αισθητήρες θα διδαχθεί παρακάτω στο κεφάλαιο των μεταβλητών.) **

= = = = = =

__ΚΕΦΑΛΑΙΟ 11__
=Μπορείς να το κάνεις μόνο αν… (Εάν / Eάν-αλλιώς (και αισθητήρες-τελεστές)=

//**Σε αυτό το κεφάλαιο**//
-Επίδειξη των εντολών της παλέτας αισθητήρες. -Κατανόηση και εκμάθηση της εντολής Εάν -Κατανόηση και εκμάθηση της εντολής Εάν-αλλιώς -Κατανόηση των εμφωλευμένων Εάν/Εάν-αλλιώς

//«Αν εισβάλλω στη Λακωνία, θα ισοπεδώσω την πόλη της Σπάρτης» -// Βασιλιάς Φίλιππος Β' //«Αν.»// - //Σπάρτη//

"If i conquer Lakonia, i'll burn the city of Sparta to the ground" - King Phillipos B' "If." - Sparta

-//**11.2.1**// Η εντολή "Εάν..." -//**11.2.2**// Η εντολή "Εάν...Αλλιώς..."
 * 11.1** Εισαγωγή στον έλεγχο.
 * 11.2** Οι εντολές ελέγχου του scratch.
 * 11.3** Εμφωλευμένες εντολές "Εάν.../Εάν...Aλλιώς..."
 * 11.4** Παραδείγματα.

=11.1 Εισαγωγή στον έλεγχο.=

__Εντολές υπό συνθήκη στην καθημερινότητά μας.__
Ο κόσμος γύρω μας είναι γεμάτος επιλογές οι οποίες εξαρτώνται από διάφορες συνθήκες.Εάν έξω βρέχει παίρνουμε ομπρέλα.Εάν έχει ήλιο φοράμε καπέλο.Εάν είναι σαββατοκύριακο ξεκουραζόμαστε ,αλλιώς πάμε σχολείο.Στα προηγούμενα κεφάλαια είδαμε αυτή την αναγκαιότητα επιλογής των αποκρίσεων των αντικειμένων μας ανάλογα με τις μεταβολές που συμβαίνουν σε αυτό. Όταν ένα αντικείμενο θέλει να πάρει κάποια απόφαση ανάλογα με το τι συμβαίνει γύρω του τότε χρησιμοποιούμε τις εντολές Εάν... και Εάν ... Αλλιώς... Ας πάρουμε το παράδειγμα της εικόνας 10.2 στο 10ο κεφάλαιο.Είδαμε ότι ο οδηγός επαναλαμβάνει το γύρο της πίστας όσες φορές έχει οριστεί από τον αγώνα.Τι γίνεται όμως όταν του τελειώνουν τα καύσιμα;**Εάν** του τελειώνουν τα καύσιμα τότε ο οδηγός θα μπει στο pit stop(11.1.1) για ανεφοδιασμό. **Αλλιώς** ο οδηγός θα συνεχίσει να επαναλαμβάνει την πορεία του.

Εικόνα 11.1.1 Εάν τελειώνουν τα καύσιμα όπως στο κόκκινο όχημα μπαίνουμε στα pit stop για ανεφοδιασμό Αλλιώς συνεχίζουμε τη πορεία μας στη πίστα όπως τα πίσω οχήματα της εικόνας. (και σε word __**μόνο**__ για τα σχήματα του παραδείγματος 2,το κείμενο έχει αλλάξει)

Η καθημερινότητα μας θα ήταν πολύ μονότονη και με περιορισμένες δυνατότητες αν δεν είχαμε διαφορετικές επιλογές. Έτσι και τα προγράμματα μας θα ήταν πολύ μονότονα αν δεν είχαμε την δυνατότητα να επιλέξουμε διαφορετικά αποτελέσματα σύμφωνα με κάποιες προϋποθέσεις. Φαντάζομαι όλοι σας έχετε δώσει την απάντηση “Εάν βρέξει, δεν θα μπορέσουμε” στην ερώτηση “Θα πάμε μετά το σχολείο να παίξουμε;”. Στο συγκεκριμένο παράδειγμα η συνθήκη είναι στην λέξη **βρέξει**. Υπάρχουν δυο πιθανές περιπτώσεις. Είτε να βρέξει είτε να μην βρέξει. Βέβαια η επιλογή μας αν τελικά θα πάμε για παιχνίδι εξαρτάται από αυτήν την συνθήκη. Τα πιθανά αποτελέσματα είναι δυο να πάμε ή όχι. Αν ισχύει ότι βρέχει τότε δεν θα πάμε. Ενώ αντίστοιχα αν δεν ισχύει ότι βρέχει(δηλαδή δεν βρέχει) τότε θα πάμε. Η σύνταξη της εντολής Εάν στον προγραμματισμό είναι η ακόλουθη: Εάν ( συνθήκη) { Ενέργεια } Η συνθήκη μπορεί να αποτιμηθεί σε αληθής(δηλαδή να ισχύει) και σε ψευδής(δηλαδή να μην ισχύει). Σε περίπτωση που η συνθήκη είναι αληθής τότε θα εκτελεστεί η Ενέργεια ενώ αν είναι ψευδής δεν θα εκτελεστεί. Ας προχωρήσουμε σε ένα μικρό παράδειγμα για την καλύτερη κατανόηση. Είδαμε στο κεφάλαιο 10 ότι μπορούμε να ζωγραφίσουμε διάφορα διαφορετικά γεωμετρικά σχήματα. Δεν θα ήταν πιο ενδιαφέρον το σκίτσο μας να δημιουργεί τα σχήματα ανάλογα με το ποίο κουμπί θα πατήσουμε. Έτσι αν πατήσουμε το πλήκτρο πάνω βέλος να σχηματίζει ένα τετράγωνο και αν πατήσουμε το κάτω βέλος να σχηματίζει ένα τρίγωνο. Ας δούμε τώρα την εικόνα 11.1 και πως μπορούμε να το αναλύσουμε αυτό.
 * Παράδειγμα 1. **

ΠΡΟΤΑΣΗ ΣΥΝΘΗΚΗ ΕΝΕΡΓΕΙΑ || Πατήσω το πάνω βέλος. || Σχημάτισε ένα τετράγωνο. || || Πατήσω το κάτω βέλος. || Σχημάτισε ένα τρίγωνο. || //Εικόνα 11.1.2//
 * Πρόταση Α
 * Πρόταση Β

Σε περίπτωση που η συνθήκη είναι αληθής τότε θα εκτελεστεί και η αντίστοιχη ενέργεια. Ενώ αν είναι ψευδής τότε δεν θα εκτελεστεί. Δηλαδή αν πατήσω το πάνω βέλος(αληθής) θα σχηματιστεί ένα τετράγωνο, ενώ αν δεν πατήσω το πάνω βέλος(ψευδής) τότε δεν θα σχηματιστεί το τετράγωνο. Αντίστοιχα και για την δεύτερη πρόταση. Κατασκευάστε έναν αντίστοιχο πίνακα για δυο παρόμοιες προτάσεις που θα σκεφτείτε και πείτε πότε θα εκτελεστεί η αντίστοιχη ενέργεια. Ας δούμε τώρα ακόμα ένα παράδειγμα. Υποθέστε ότι ο καθηγητής των μαθηματικών σας ανακοινώνει ότι την Δευτέρα θα έχετε διαγώνισμα στην ύλη που έχετε καλύψει μέχρι τώρα. Πηγαίνετε σπίτι και το ανακοινώνετε στους γονείς σας. Εκείνοι με την σειρά τους σας λένε ότι θα πάτε για παιχνίδι μόνο αν σας εξετάσουν και δουν ότι είστε διαβασμένοι. Επίσης σας λένε ότι ,επειδή θεωρούν το μάθημα αυτό πολύ σημαντικό για την εξέλιξη σας ,αν γράψετε είκοσι θα σας αγοράσουν το πολυπόθητο παιχνίδι του υπολογιστή που τόσο καιρό ζητούσατε. Οπότε εσείς σκέφτεστε “Να η ευκαιρία μου!! Και επειδή όλοι ξέρουμε ότι το παιχνίδι δεν βγαίνει ποτέ από το μυαλό σας λέτε ότι αν αρχίσω το διάβασμα τώρα και τελειώσω νωρίς τότε θα έχω χρόνο και για παιχνίδι με τον φίλο μου “. Βέβαια υπάρχει και το ενδεχόμενο ο φίλος σας όταν τελειώσετε εσείς να διαβάζει ακόμα αλλά αυτό δεν σας ενοχλεί καθόλου καθώς αν διαβάζει ακόμα εσείς θα σερφάρετε στις αγαπημένες σας ιστοσελίδες στο ιντερνέτ. Όπως θα έχετε ήδη διαπιστώσει αυτή η ιστορία έχει αρκετές συνθήκες και πολλά διαφορετικά αποτελέσματα. Ας προσπαθήσουμε να τις εξάγουμε παρέα. Θα το κάνουμε αυτό με την βοήθεια του διαγράμματος ροής. Το διάγραμμα ροής απεικονίζει κάθε συνθήκη σε ένα ρόμβο και κάθε ενέργεια σε ένα ορθογώνιο. Με βέλη σχηματίζουμε τα διάφορα πιθανά μονοπάτια. Ξεκινώντας από την αρχή συναντάμε την πρώτη συνθήκη στο τέλος της τρίτης πρότασης. Ας δούμε το διάγραμμα ροής.
 * // Άσκηση 1. //**
 * Παράδειγμα 2. **

(σχήμα που δεν ξέρω πως να το εισάγω στο wiki.Υπαρχει στο word)

Η συνθήκη είναι //είστε διαβασμένοι// και η ενέργεια //θα πάω για παιχνίδι.// Συνεχίζοντας συναντάμε την δεύτερη στην πέμπτη σειρά.

(σχήμα που δεν ξέρω πως να το εισάγω στο wiki.Υπαρχει στο word)

Αυτή είναι //αν γράψω είκοσι// και η ενέργεια είναι η //θα μου πάρουν το παιχνίδι.// Η επόμενη είναι στην όγδοη σειρά.

(σχήμα που δεν ξέρω πως να το εισάγω στο wiki.Υπαρχει στο word)

Η συνθήκη είναι //τελειώσω νωρίς// και η ενέργεια η //θα παίξω με τον φίλο μου//. Η τελευταία βρίσκεται στην σειρά δέκα (σχήμα που δεν ξέρω πως να το εισάγω στο wiki.Υπαρχει στο word)

Η συνθήκη είναι η //διαβάζει ακόμα// και η ενέργεια η //θα σερφάρω.// // {ΙΔΕΑ // // Όταν μας δίνεται μια άσκηση και μας ζητηθεί να την υλοποιήσουμε στο //// Scratch //// καλό θα ήταν να την διαβάσουμε από την αρχή και κάθε φορά που συναντάμε μια συνθήκη να την σημειώνουμε μαζί με τις διάφορες ενέργειες που θα έχει σαν αποτέλεσμα. // // } // Στην παραπάνω ιστορία είδαμε όλες τις συνθήκες που περιέχονται. Υποθέστε ότι τελικά ήρθε η μέρα του διαγωνίσματος και την προηγούμενη μέρα τελικά συνέβησαν τα ακόλουθα. Ήσασταν διαβασμένοι όταν σας εξέτασαν οι γονείς σας, ο βαθμός σας ήταν δεκαοχτώ, τελειώσατε νωρίς το διάβασμα και ο φίλος σας όταν εσείς είχατε τελειώσει αυτός διάβαζε ακόμα. Ποία μονοπάτια θα ακολουθήσετε και ποιες ενέργειες εκτελέστηκαν? Ποιες όχι?
 * Άσκηση 2. **

Βέβαια σε μια εντολή Εάν μπορούμε να έχουμε και παραπάνω από μια συνθήκη. Για παράδειγμα για να πάρετε τον φίλο σας τηλέφωνο θα πρέπει να έχετε και χρόνο ομιλίας αλλά να είστε και σε ένα μέρος που θα έχετε καλό σήμα. Εδώ βλέπουμε ότι έχουμε δυο συνθήκες. Ποιες είναι αυτές? Τι θα γίνει αν δεν έχετε καθόλου σήμα? Τι θα γίνει αν δεν έχετε χρόνο ομιλίας? Τι θα γίνει αν έχετε και χρόνο ομιλίας αλλά και καλό σήμα. Τι θα γίνει αν έχετε καλό σήμα αλλά δεν έχετε χρόνο ομιλίας. Τι όταν έχετε χρόνο ομιλίας και δεν έχετε σήμα? Με αυτόν τον τρόπο μπορούμε να χρησιμοποιήσουμε τον τελεστή **και** ανάμεσα στις διάφορες συνθήκες. Όπως καταλάβατε για να εκτελεστεί η ενέργεια θα πρέπει να ισχύουν και οι δυο συνθήκες. Αν έστω και μια δεν ισχύει τότε δεν εκτελείται και η αντίστοιχη ενέργεια. Ας δούμε ακόμα ένα παράδειγμα. Έστω ότι θέλετε να δείτε κάποιες φωτογραφίες από ένα πρόσωπο στο facebook. Για να το καταφέρετε αυτό θα πρέπει να είστε φίλος με αυτό το πρόσωπο ή να έχει ένα δημόσιο προφίλ. Πάλι έχουμε δυο συνθήκες. Ας προσπαθήσουμε να απαντήσουμε σε κάποιες ερωτήσεις όπως και πριν. Τι θα γίνει αν είστε φίλος με το συγκεκριμένο πρόσωπο? Τι θα γίνει αν το πρόσωπο αυτό έχει δημόσιο προφίλ? Τι θα γίνει αν είστε φίλος του και έχει δημόσιο προφίλ? Τι θα γίνει αν είστε φίλος του και δεν έχει δημόσιο προφίλ? Τι αν έχει δημόσιο προφίλ αλλά δεν είστε φίλος του? Αντίστοιχα πλέον καταλαβαίνουμε και την λειτουργία του τελεστή **ή** ανάμεσα στις συνθήκες. Για να εκτελεστεί η ενέργεια θα πρέπει να ισχύει μία τουλάχιστον από τις συνθήκες. Για να μην εκτελεστεί θα πρέπει όλες οι συνθήκες να είναι ψευδής. // {ΣΗΜΕΙΩΣΗ // // Σε μια εντολή Εάν η παράθεση πολλών συνθηκών κάνει το πρόγραμμα πιο δύσκολο στην κατανόηση και πιο δύσκολο στην διόρθωση του όταν υπάρχει κάποιο λάθος. Καλό θα ήταν να προσπαθείτε να βάζετε όσο το δυνατόν λιγότερες συνθήκες. Βέβαια η παράθεση παραπάνω από μιας συνθήκης σε ορισμένες περιπτώσεις μπορεί να μας γλιτώσει από να επαναλαμβάνουμε κομμάτια εντολών. // // } //

Ας δούμε ένα παράδειγμα: Εάν (κάνω 70 απουσίες) ή (γράψω κάτω από την βάση){ Θα μείνω στην ίδια τάξη } Εξετάζοντας αυτήν την Εάν μπορείτε να απαντήσετε στις ερωτήσεις: -Αν κάνω 70 απουσίες θα μείνω στην ίδια τάξη? -Αν γράψω κάτω από την βάση θα μείνω στην ίδια τάξη? -Αν γράψω κάτω από την βάση και κάνω 70 απουσίες θα μείνω στην ίδια τάξη? -Αν δεν κάνω 70 απουσίες ούτε γράψω κάτω από την βάση θα μείνω στην ίδια τάξη? Συμπληρώστε τον παρακάτω πίνακα. Τοποθετήστε ΝΑΙ ή ΟΧΙ αν θα εκτελεστεί η ενέργεια σύμφωνα με το αν η συνθήκη 1(Σ1) και η συνθήκη 2(Σ2) είναι αληθής(Α) ή ψευδής(Ψ)
 * Παράδειγμα 3. **
 * Άσκηση 3. **
 * Σ1 || Σ2 || Σ1 ΚΑΙ Σ2 || Σ1 Ή Σ2 ||
 * Α || Α || ? || ? ||
 * Α || Ψ || ? || ? ||
 * Ψ || Α || ? || ? ||
 * Ψ || Ψ || ? || ? ||

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

=11.2 Οι εντολές ελέγχου του scratch.=

Ας ξεκινήσουμε με την σύνταξη της εντολής στο Scratch. Η εντολή βρίσκεται στην παλέτα Έλεγχος. Η σύνταξη της φαίνεται στη Εικόνα 11.2 Εικόνα 11.2.1

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

Ας δούμε τώρα ένα παράδειγμα και ας προσπαθήσουμε μέσα από αυτό να καταλάβουμε τις συνθήκες και τις ενέργειες που εξετάσαμε στην προηγούμενη ενότητα. Εικόνα 11.2.2 Ποία είναι η συνθήκη εδώ? Η συνθήκη είναι η "αγγίζει τα όρια" της οθόνης. Ποια η ενέργεια? Η ενέργεια είναι να σκεφτεί και μετά να γυρίσει πίσω. Πότε θα εκτελεστεί η ενέργεια? Όταν το σκίτσο μας ακουμπήσει το όριο της οθόνης.

__Αισθητήρες στο scratch__
Η παλέτα των αισθητήρων σε συνδυασμό με την εντολή Εάν δίνει αρκετές δυνατότητες στον προγραμματιστή επειδή μπορεί να κάνει τα αντικείμενα να αλληλεπιδρούν μεταξύ τους και έτσι "ανεβάζει" τα προγράμματα ένα επίπεδο. Ας γνωρίσουμε τώρα κάποιες βασικές εντολές από τους αισθητήρες καθώς και κάποιες πιθανές χρήσεις τους.

Το block. π.χ. Θέλουμε όποτε ο γάτος ακουμπά τoν κύριο στρείδι να τον χαιρετά και να αλλάζει κατεύθυνση:
 * [[image:px_agizei_to.gif]] || Αν αγγίξεις τον κύριο στρείδι

Τότε χαιρέτα και φύγε || Εικόνα 11.2.3

Το συγκεκριμένο block μπορεί να χρησιμοποιηθεί με τρεις διαφορετικούς τρόπους και σας δίνει τη δυνατότητα να ελέγχετε εάν η μορφή σας: Εικόνα 11.2.4
 * [[image:agizei_morfi.gif width="153" height="27"]] || αγγίζει άλλη μορφή ||
 * [[image:agizei_deiktis.gif]] || αγγίζει τον δείκτη του ποντικιού ||
 * [[image:agizei_oria.gif]] || αγγίζει τα όρια της οθόνης ||

Το block. π.χ.Θέλουμε με το που πατάμε το κενό να ακούγεται μια συγκεκριμένη νότα:
 * [[image:px_pati8ike_keno.gif]] || Αν ισχύει ότι πατήθηκε το κενό (space)

Τότε παίξε τη συγκεκριμένη νότα || Εικόνα 11.2.5

Στη θέση του πλήκτρου για το κενό μπορούμε να επιλέξουμε κάποιο από τα γράμματα (a-z),τους αριθμούς (0-9) καθώς και τα βελάκια. {Σημείωση: Το μπορεί να χρησιμοποιηθεί αντί του  όταν θέλουμε ,για παράδειγμα, να κρατήσουμε το πλήκτρο κενό συνεχόμενα πατημένο και όχι απλά να το πατήσουμε στιγμιαία.}

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

Το block. π.χ. Θέλουμε όποτε ο γάτος ακουμπάει στον κορμό ενός δέντρου να γυρνάει προς τα πίσω:
 * [[image:px_agizei_xrwma.gif]] || Αν αγγίξεις το συγκεκριμένο χρώμα

Τότε κάνε αυτές τις δύο ενέργειες || Εικόνα 11.2.6



Για να επιλέξουμε χρώμα:
 * 1) Ενεργοποιούμε το σταγονόμετρο κάνοντας κλικ στο τετράγωνο
 * 2) Επιλέγουμε το χρώμα που θέλουμε κάνοντας κλικ σε αυτό με το σταγονόμετρο.

Το block. π.χ.Θέλουμε ο γάτος να μην μπορεί να πατάει στην λίμνη και όποτε την ακουμπάει να απομακρύνεται προς την άλλη κατεύθυνση: στο γαλάζιο(της λίμνης που έχουμε σχεδιάσει)
 * [[image:px_xrwma-xrwma.gif]] || Αν το κίτρινο(του γάτου) ακουμπήσει

Τότε νιαούρισε και φύγε || Εικόνα 11.2.7



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

__Παράδειγμα__
Έστω ότι έχετε σχεδιάσει μια πίστα που το σκίτσο σας ακολουθεί ένα δρόμο. Στην πίστα υπάρχουν κάποια κόκκινα εμπόδια. Ας δούμε τις εντολές: Εικόνα 11.2.8

Μπορείτε να συμπληρώσετε τα κενά? -Εάν_ τότε το σκίτσο μας κινείται προς τα αριστερά -Εάν_ τότε το σκίτσο μας κινείται προς τα κάτω. -Εάν πατηθεί το πλήκτρο πάνω βέλος τότε το σκίτσο μας κινείται προς - Εάν πατηθεί το πλήκτρο δεξί βέλος τότε το σκίτσο μας κινείται προς Μπορείτε να απαντήσετε στις ερωτήσεις? Μπορώ να κινήσω το σκίτσο με άλλα κουμπιά? Πως θα γίνει αυτό? Πότε θα εκτελεστεί η εντολή “πες Έχασα”? Αν δεν υπήρχε η συνθήκη Εάν αγγίζει το χρώμα κόκκινο τι θα γινόταν? Αν το σκίτσο ακουμπήσει το κόκκινο χρώμα θα μπορεί μετά να κινηθεί?

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

Μπορείτε να απαντήσετε στις παρακάτω ερωτήσεις? -Ποία είναι η πρώτη εντολή που θα εκτελεστεί? -Τι είδους μηνύματα πιστεύετε θα εμφανιστούν στην οθόνη αν το σκίτσο με το χρώμα πορτοκαλί είναι πάνω στο σκίτσο με το χρώμα γαλάζιο? -Πότε θα εμφανιστεί το μήνυμα “Με πατάς”? -Το μήνυμα “Πάω πιο δίπλα” θα εμφανιστεί? -Θα στρίψει 90 μοίρες και θα κινηθεί 100 βήματα? -Πότε θα εμφανιστεί το μήνυμα “ Ακόμα με πατάς ”?

Όπως καταλάβατε με τις εντολές συνθήκης μπορούμε πολύ εύκολα να αλλάξουμε την σειριακή εκτέλεση των εντολών. Εμείς μέχρι σήμερα έχουμε δει προγράμματα που η μια εντολή εκτελείται μετά την άλλη. Τώρα όμως αυτό αλλάζει. Μπορεί μια εντολή να μην εκτελεστεί καθόλου. Υπάρχουν αρκετά ερωτήματα που θέλουν απάντηση. Πως συνεχίζεται η εκτέλεση μετά την Εάν? Ποία είναι η σειρά εκτέλεσης των εντολών? Κάτω από ποιες συνθήκες εκτελείται μια εντολή? Τι γίνεται όταν μια συνθήκη είναι ψευδής? Τι όταν είναι αληθής? Ας προσπαθήσουμε να απαντήσουμε σε αυτά τα ερωτήματα με ένα ακόμα παράδειγμα αναλύοντας το αυτήν την φορά μαζί.

__Παράδειγμα__
Έστω ότι το σκίτσο σας θέλει να φτάσει στην πράσινη μπάλα χωρίς όμως να ακουμπήσει στην κόκκινη. Το σκίτσο σας το κουνάτε με το ποντίκι. Κάθε φορά που τα καταφέρνετε πάτε στο επόμενο επίπεδο. Αν όχι ξεκινάτε από την αρχή. Εδώ είναι ο κώδικας: Εικόνα 11.2.10

{ΣΗΜΕΙΩΣΗ Η εντολή σταμάτα το σενάριο απλώς τερματίζει την λειτουργία του προγράμματος. }

Καταρχήν,το σώμα το εντολών θα εκτελείται για πάντα όπως μάθαμε και στο κεφάλαιο 10.Η πρώτη εντολή που θα εκτελεστεί θα είναι η “δείξε στο” και μετά η εντολή “κινήσου 10 βήματα”. Για να εκτελεστούν οι εντολές “πες Κέρδισα ” και “σταμάτησε το σενάριο” θα πρέπει η συνθήκη Εάν αγγίζει το χρώμα πράσινο να είναι αληθής. Έστω ότι ακόμα δεν έχετε φτάσει στην πράσινη μπάλα. Οι δυο αυτές εντολές δεν θα εκτελεστούν και το πρόγραμμα θα συνεχίσει. Η επόμενη εντολή που θα εκτελεστεί θα είναι η “πες Πρέπει να πάω στην πράσινη”. Αν και η συνθήκη Εάν αγγίζει το χρώμα κόκκινο είναι ψευδής τότε θα εκτελεστεί η επόμενη εντολή που είναι η “για πάντα”. Το πρόγραμμα συνεχίζει και ξαναεκτελεί τις δυο πρώτες εντολές. Έστω ότι τώρα έχετε ακουμπήσει την πράσινη μπάλα. Η συνθήκη είναι αληθής και για αυτό εκτελούνται οι εντολές “ πες Κέρδισα ” και “ σταμάτα το σενάριο ”. Κανονικά θα έπρεπε το πρόγραμμα να συνεχίσει αν δεν υπήρχε η εντολή σταμάτα το σενάριο δηλαδή να εκτελεστεί η εντολή “ πες Πρέπει να πάω στην πράσινη ” και μετά να ελέγξει την συνθήκη Εάν αγγίζει το χρώμα κόκκινο αλλά έτσι το πρόγραμμά μας δεν θα εκτελούσε την σωστή λειτουργία. Άραγε μπορείτε να σκεφτείτε γιατί? Άμα δεν είχατε ακουμπήσει την πράσινη μπάλα οι δυο αυτές εντολές δεν θα είχαν εκτελεστεί, όπως είπαμε. Θα συνέχιζε στην εντολή “ πες Πρέπει να πάω στην πράσινη ”. Αν ακουμπούσατε την κόκκινη μπάλα η συνθήκη θα ήταν αληθής και θα εκτελούνταν οι εντολές “πες Έχασα. Πάμε πάλι από την αρχή ” και “πήγαινε”. Μετά την εκτέλεση των δυο αυτών εντολών το πρόγραμμα θα συνέχιζε κανονικά. Δηλαδή θα πήγαινε στην επόμενη εντολή που είναι η “για πάντα”.

__Τελεστές στο Scratch__
Παραπάνω είπαμε πως οι τελεστές χρησιμοποιούνται ως συνθήκες στις εντολές ελέγχου. Ας δούμε λοιπόν πως εκφράζουμε το «και» ,το «=» και το «ή» σαν εντολές μέσα στο Scratch με απλά παραδείγματα. Στην παλέτα τελεστές θα βρούμε όλες τις παραπάνω εντολές οι οποίες θα χρησιμοποιηθούν στα παραδείγματα του κεφαλαίου Εικόνα 11.2.11

Την εντολή «και» τη χρησιμοποιούμε όταν σε μια Εάν θέλουμε να ελέγξουμε αν ισχύουν δύο διαφορετικές συνθήκες ταυτόχρονα. Έτσι έχουμε το παράδειγμα με τον Γατίδη που δε θέλουν να το πατάνε Εικόνα 11.2.12

Με το παραπάνω κώδικα όσο το ποντίκι μας είναι επάνω στον Γατίδη ΚΑΙ πατάμε κλικ τότε ο Γατίδης θα αντιδρά Την εντολή «=» τη χρησιμοποιούμε όταν θέλουμε να πούμε ότι όταν το αριστερό μέρος του ίσον είναι ίδιο με το δεξιά τότε η συνθήκη αυτή είναι αληθής. Να προσέξουμε ότι αυτό δεν έχει σχέση με την μαθηματική ισότητα, δηλαδή το «=» στον έλεγχο κοιτά μόνο ΑΝ είναι ίδια τα δύο μέλη του και δεν τα αλλάζει .Έτσι στο παράδειγμα ρωτάμε τι όργανο θέλουμε να ακούσουμε και ανάλογα με την απάντηση (με τι είναι ίση) τότε ακούμε και το ανάλογο Εικόνα 11.2.13

Την εντολή «ή» τη χρησιμοποιούμε όταν θα κάνουμε κάτι εάν ισχύει μια συνθήκη ή μια διαφορετική συνθήκη. Εάν μία από τις δύο συνθήκες ισχύει ή και οι δύο ισχύουν τότε οι εντολές της εάν εκτελούνται. Στο παράδειγμα βλέπουμε πως η νυχτερίδα αλλάζει κατεύθυνση αν ακουμπά τα όρια της οθόνης ή αν την ακουμπάμε με το δείκτη του ποντικιού. Εικόνα 11.2.14

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

Τώρα μπορούμε να συνδυάσουμε τελεστές και αισθητήρες σε ένα παράδειγμα. Έστω ότι έχουμε ένα ελικόπτερο που θέλει να πετάξει. Υπάρχει μια πλατφόρμα από την οποία απογειώνεται και προσγειώνεται. Το ελικόπτερο το κινούμε με τα πλήκτρα,αλλά δεν μπορούμε να πάμε κάτω όταν αυτό είναι στην πλατφόρμα. Ας δούμε πως μπορούμε να το καταφέρουμε αυτό: Εικόνα 11.2.15

Μπορείτε να πείτε το χρώμα της παλέτας και κυρίως γιατί είπατε αυτό? Όπως βλέπετε έχουμε τον τελεστή και στην πρώτη συνθήκη. Οπότε θα πρέπει να είναι και οι δυο συνθήκες αληθής για να εκτελεστεί η εντολή “άλλαξε y”. Πότε είναι αληθής η πρώτη συνθήκη? Πότε η δεύτερη? Άμα η πλατφόρμα μας ήταν κίτρινη και το ελικόπτερο δεν μπορούσε να πάει προς τα πίσω τι θα αλλάζατε? Δημιουργήστε το ακόλουθο παιχνίδι. Έχεις ένα ελικόπτερο και θέλεις να το απογειώσεις από την πλατφόρμα με το χρώμα κόκκινο και να το προσγειώσεις στην πλατφόρμα με το χρώμα κίτρινο. Βέβαια στον δρόμο υπάρχουν διάφορα εμπόδια που αν τα ακουμπήσεις χάνεις. (Για προχωρημένους: Κάντε το ελικόπτερο όταν δεν πατάς το πλήκτρο πάνω να πέφτει)
 * Άσκηση 4.**

Ας προσπαθήσουμε να κατασκευάσουμε το παιχνίδι που μια μπάλα αναπηδά και πρέπει να την αποκρούσεις με μια μπάρα ώστε να μην ακουμπήσει την περιοχή κάτω από την μπάρα. Έστω το χρώμα της μπάρας είναι μαύρο, της μπάλας κόκκινο και η περιοχή κάτω από την μπάρα είναι κίτρινη. Ποία θα είναι η συνθήκη που η μπάλα θα αναπηδά στην μπάρα? Ποία η συνθήκη που θα σημαίνει ότι έχουμε χάσει? Μπορείτε να γράψετε όλες τις συνθήκες που θα περιέχει το πρόγραμμα? Ας υποθέσουμε ότι θέλουμε να κάνουμε ένα παιχνίδι που θα παίζεται από δυο παίχτες. Ο ένας παίχτης θα έχει το σκίτσο καρχαρία και ο άλλος το σκίτσο μικρό ψάρι. Υπάρχουν επίσης δυο ακόμα σκίτσα. Το ένα είναι το δόλωμα από ένα καλάμι ενός ψαρά και το άλλο η φωλιά του μικρού ψαριού. Υποθέστε ότι το χρώμα του καρχαρία είναι μπλε, του μικρού ψαριού κόκκινο, της φωλιάς μωβ και του δολώματος καφέ. Ο καρχαρίας προσπαθεί να πιάσει το μικρό ψάρι χωρίς όμως να ακουμπήσει το δόλωμα και το μικρό ψάρι να πάει στην φωλιά του. Ας δούμε τις εντολές: Εικόνα 11.2.16

Εικόνα 11.2.17

Ο πρώτος κώδικας (Εικόνα 11.2.16) είναι για τον καρχαρία και ο δεύτερος(Εικόνα 11.2.17) για το μικρό ψάρι. Όπως βλέπουμε ο καρχαρίας αν αγγίξει το μικρό ψάρι λέει “Σε έπιασα” ενώ αν αγγίξει το δόλωμα λέει “ΠΦΦΦΦ”. Το μικρό ψάρι αν αγγίξει την φωλιά του λέει “Την γλίτωσα”. Πώς θα άλλαζε ο κώδικας αν είχαμε και ένα ακόμα ψάρι με χρώμα κίτρινο που δεν θα έπρεπε να ακουμπήσει το μικρό ψάρι? Έστω ότι θέλαμε να κάνουμε το καρχαρία να κουνιέται πιο γρήγορα. Πως θα γινόταν αυτό? Τι θα άλλαζε να βγάζαμε την δεύτερη συνθήκη από τον καρχαρία? Πώς θα μπορούσαμε να βάλουμε έναν ήχο όταν ο καρχαρίας πιάσει το ψάρι?

**11.2.2 Η εντολή "Εάν...Αλλιώς.."**
Στις προηγούμενες ενότητες του κεφαλαίου αναλύσαμε την εντολή "Εάν..." και γιατί είναι χρήσιμη για την λήψη αποφάσεων ανάλογα με το τι συμβαίνει στο περιβάλλον μας.Είδαμε ότι στην ερώτηση «Θα πάμε μετά το σχολείο να παίξουμε;» απαντήσαμε «Εάν δε βρέξει θα παίξουμε». Για να ολοκληρώσουμε όμως την απάντηση πιο σωστό θα ήταν να πούμε «Εάν δε βρέξει θα παίξουμε Αλλιώς δε θα μπορέσουμε να παίξουμε έξω».Με τον ίδιο τρόπο λειτουργεί η εντολή "Εάν... Αλλιώς..." στον προγραμματισμο.Εάν η συνθήκη ισχύει θα κάνουμε ότι υπάρχει στην πρόταση Εάν, αλλιώς αν η συνθήκη δεν ισχύει θα κάνουμε ότι λέει στο βρόγχο Αλλιώς.


 * Η εντολή Εαν… αλλιώς… στο** **Scratch**

Στο Scratch η εντολή Εάν... Αλλιώς βρίσκεται στον έλεγχο όπως και η εντολή "Εάν..." Και είναι η παρακάτω:

Εικόνα 11.2.18 Η "Εάν Αλλίως" στο Scratch

Όπως φαίνεται και από το σχήμα σε σχέση με την Εάν έχει και έναν επιπλέον χώρο για εντολές κάτω από το Αλλιώς στην περίπτωση που η συνθήκη του Εάν... δεν είναι αληθής. Εικόνα 11.2.19

Oops!! – Μαθησιακή δυσκολία:Όπως και στην "Εάν..." έτσι και στην "Εάν... Αλλιώς..." πρέπει να συνειδητοποιήσουμε ότι μετά το τέλος του ελέγχου και των εντολών που θα πραγματοποιηθούν μέσα στην Εάν... ή στην Αλλιώς... το πρόγραμμα συνεχίζει με τις εντολές που γίνονται πιο κάτω όπως φαίνεται στο σχήμα 11.2.19.Για παράδειγμα στον διάλογο «Θα πάμε μετά το σχολείο να παίξουμε;» «Εάν δε βρέξει θα παίξουμε Αλλιώς δε θα μπορέσουμε να παίξουμε έξω» μετά αφού προγραμματίσαμε τι θα κάνουμε ανάλογα αν βρέξει ή δε βρέξει δε θα καθίσουμε ακίνητοι και θα κοιταζόμαστε (θα ήταν παράξενο)αλλά θα συνεχίσουμε το διάλογο σε άλλο θέμα της αρεσκείας μας.


 * Μια εφαρμογή της εντολής Εάν… αλλιώς… στο** **Scratch**

Στην ενότητα αυτή έχουμε τη τιμή να παρουσιάσουμε τον ninja I-fel-se-kun.Έχοντας μάθει την τέχνη της κατασκοπείας και της μυστικότητας όταν πάμε να τον περιεργαστούμε εξαφανίζεται.Με λίγα λόγια ο ninja εξαφανίζεται κάθε φορά που το ποντίκι περνά από πάνω του.

Εικόνα 11.2.20 O Ninja I-fel-se-kun εκπαιδευμένος για τις χειρότερες αποστολές

Πώς θα μπορούσαμε να δώσουμε στον ninja την παραπάνω ικανότητα στο Scratch χρησιμοποιώντας την "Εάν… αλλιώς…"; Θα το δούμε αυτό βήμα-βήμα: Πρώτα ας εισάγουμε την "Εάν… αλλιώς…" στο πρόγραμμα του ninja Εικόνα 11.2.21 Εισαγωγή της εντολής "Εάν… αλλιώς…" από τον έλεγχο Τι θέλουμε να ελέγχουμε; Εάν το ποντίκι ακουμπά τον ninja.Αν τον ακουμπά ο ninja εξαφανίζεται αλλιώς εμφανίζεται. Άρα η συνθήκη της εάν είναι στους αισθητήρες με το όνομα «αγγίζει το».

Εικόνα 11.2.22 Εισαγωγή της εντολής "αγγίζει το" από τους αισθητήρες

Όπως έχουμε ήδη δει η εντολή αισθητήρα μας δίνει 2 δυνατότητες: Εάν ο ninja αγγίζει το δείκτη του ποντικιού ή αγγίζει τα όρια της οθόνης. Εμείς για το σκοπό που το θέλουμε θα προτιμήσουμε το πρώτο. Στη συνέχεια θα βάλουμε της εντολές στην Εάν... και στην Αλλιώς... .Εάν ο ninja αγγίζει το δείκτη του ποντικιού θέλουμε να εξαφανίζεται.Η εξαφάνιση του ninja μπορεί να επιτευχθεί με την εντολή "απόκρυψη" από την παλέτα "όψεις".

Εικόνα 11.2.23 Εισαγωγή της εντολής "απόκρυψη" από τις όψεις

Εάν τώρα ο ninja δεν αγγίζει το δείκτη του ποντικιού θα γίνουν οι εντολές της Αλλιώς... .Η εντολή που θα βάλουμε θα είναι «εμφάνισε» από τις «όψεις» επίσης.

Εικόνα 11.2.24 Εισαγωγή της εντολής "εμφάνισε" από τις όψεις

Με αυτό ολοκληρώσαμε τον έλεγχο Εάν ο ninja αγγίζει τον δείκτη του ποντικιού «απόκρυψη» Αλλιώς «εμφάνισε». Όταν θα τρέξουμε το πρόγραμμα θα γίνει ο έλεγχος Εάν... Αλλιώς... και μετά;;; Μετά το πρόγραμμα θα τελειώσει.Ο έλεγχος θα έχει εκτελεστεί ΜΙΑ φορά και μετά θα σταματήσει.Εμείς όμως θέλουμε ο έλεγχος να τρέχει για πάντα και να σταματήσει όταν θα θέλουμε εμείς.Έτσι εδώ εισάγουμε την εντολή "για πάντα»" από την παλέτα "έλεγχος" που μάθαμε στο προηγούμενο κεφάλαιο.

Εικόνα 11.2.25 Εισαγωγή της εντολής «για πάντα» από τον «έλεγχο»

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


 * H** **εντολή "Εάν… αλλιώς…" από εντολές "Εάν..." στο** **Scratch**

Μια καλή ερώτηση θα ήταν εάν μπορούμε να υλοποιήσουμε την Εάν… αλλιώς… από εντολές Εάν...; Για να δούμε αυτό αν γίνεται στην προηγούμενη εφαρμογή μας.Για να κάνουμε τον έλεγχο θα χρησιμοποιήσουμε ξανά την εντολή "αγγίζει το" όμως θα αντικαταστήσουμε την "Εάν... Αλλιώς" με μια "Εάν..." Επειδή δεν υπάρχει στην "Εάν..." πεδίο Αλλιώς... ας βάλουμε μόνο την απόκρυψη. Εικόνα 11.2.26 πρώτη προσπάθεια

Άμα τρέξουμε τον κώδικα στον ninja θα δούμε ότι όταν θα περάσει μια φορά ο δείκτης του ποντικιού από πανω θα χαθεί δια παντός.Αυτό είναι λογικό εάν τρεξουμε τον κώδικα στο μυαλό μας αφού εάν ακουμπήσει ο δείκτης του ποντικιού τον ninja μια φορά θα εκτελεστεί η εντολή απόκρυψη, και οπώς ξέρουμε από προηγούμενο κεφάλαιο εάν δεν εκτελεστεί η εντολή εμφάνισε ο ninja δε θα ξαναεμφανιστεί.Τι θα μπορούσαμε λοιπόν να κάνουμε; Εάν μετά το τέλος της Εάν... προσθέταμε την εντολή "εμφάνισε" κάπως έτσι... Εικόνα 11.2.27 Δεύτερη προσπάθεια

Άμα τρέξουμε τον κώδικα στον ninja θα δούμε αυτή τη φορά ότι ο ninja δεν εξαφανίζεται όταν δεν τον ακουμπάει ο δείκτης του ποντικιού, αλλά όταν τον ακουμπάει βλέπουμε τον ninja να αναβοσβήνει!!!Για να καταλάβουμε γιατι συμβαίνει αυτό ας κοιτάξουμε τον κώδικα. Έτσι βλέπουμε ότι όταν το ποντίκι είναι πάνω στον ninja εκτελείται η εντολή «απόκρυψη» και αμέσως μετά η Εάν.. τελειώνει και εκτελείται η εντολή «εμφάνισε», και αυτό γίνεται για πάντα όσο ο δείκτης του ποντικιού είναι επάνω στον ninja και επειδή οι υπολογιστές είναι πολύ γρήγοροι αυτή η επανάληψη γίνεται πολύ γρήγορα για να μπορέσουμε να την παρακολουθήσουμε. Τι θα κάνουμε λοιπόν; Ας δούμε ξανά πώς λειτουργεί η "Εάν... Αλλιώς...". Εάν η συνθήκη της ισχύει εκτελούνται οι εντολές κάτω από την Εάν... ενώ αν δεν ισχύει τότε εκτελούνται οι εντολές της Αλλιώς... (11.3.2) Έτσι, η Εάν... Αλλιώς πρέπει να υλοποιηθεί με δύο Εάν.Μια εάν ισχύει η συνθήκη και μία εάν δεν ισχύει.Ας δούμε λοιπόν στο πρόγραμμά μας.Την πρώτη Εάν.. την έχουμε καλά.Στη δεύτερη Εάν θέλουμε να πούμε εάν ο δείκτης του ποντικιού ΔΕΝ ακουμπάει τότε εμφάνισε.Αλλά πως θα το πούμε αυτό το δεν; Η λύση είναι η εντολή «όχι» από τη παλέτα «τελεστές».

Εικόνα 11.2.28 Η εντολή "όχι" Όπως φαίνεται και στην εικόνα εισάγουμε για το πρόγραμμα του ninja την εντολή «αγγίζει το δείκτης ποντικιού» μέσα στην όχι

Εικόνα 11.2.29 Εισάγοντας την εντολή «αγγίζει το δείκτης ποντικιού» στην εντολή "όχι"

Και μετά βάζουμε τη συνθήκη αυτή μέσα στην υποδοχή συνθήκης της δεύτερης Εάν... Μέσα στην Εάν αυτή θα βάλουμε την εντολή «εμφάνισε».

Εικόνα 11.2.30 Η δεύτερη Εάν...

Και μετά την βάζουμε κάτω από την πρώτη Εάν... μέσα στην εντολή Για «πάντα... επανέλαβε» Εικόνα 11.2.31 Η τελική προσπάθεια

Τώρα πλέον ο ninja λειτουργεί όπως και στην Εάν... Αλλιώς... Γιατί λοιπόν να έχουμε την Εάν... Αλλιώς... αφού μπορούμε να την κάνουμε με δύο Εάν;;; Η απάντηση είναι ότι ο υπολογιστής αφού ελέγχει μία φορά τη συνθήκη μετά πρέπει να την ελέγχει και δεύτερη φορά στην δεύτερη Εάν... που σημαίνει περισσότερη δουλειά για τον υπολογιστή και όταν τα προγράμματα είναι πολύ μεγάλα όσο πιο πολλές εντολές εκτελούνται τόσο πιο αργά θα τρέχει το πρόγραμμα.Με την Εάν... Αλλιώς... ο υπολογιστής αποφεύγει τον δεύτερο έλεγχο γλιτώνοντας έτσι χρόνο.

11.3 Εμφωλευμένες εντολές "Εάν.../Εάν...αλλιώς..."
Ενώ οι εντολές " Εάν.../Εάν... Αλλιώς..." είναι πολύ ισχυρές γιατί διευκολύνουν την υπό συνθήκη εκτέλεση είναι περιορισμένες στην ανάλυση μιας μοναδικής συνθήκης την φορά.Έχουμε τη δυνατότητα να ελέγχουμε περισσότερες από μία συνθήκες εμφωλεύοντας ένα block ελέγχου μέσα σε ένα άλλο όπως στο παράδειγμα παρακάτω:

Εικόνα 11.3.1

Εδώ, ένα block "Εάν..." έχει ενσωματωθεί σε ένα άλλο block "Εάν..." για περαιτέρω ανάλυση της τιμής της μεταβλητής counter.Όσο η τιμή βρίσκεται ανάμεσα στο 10 και το 20 εμφανίζεται το μήνυμα "Εντός ορίων!". Στις εμφωλευμένες "Εάν..." πρέπει να είσαστε ιδιαίτερα προσεκτικοί στις συνθήκες.Όσο πιο εξωτερική είναι μία "Εάν..." τόσο πιο ευρύτερη πρέπει να είναι η συνθήκη της και να περιλαμβάνει τις συνθήκες των εμφωλευμένων σε αυτήν.Επίσης,μπορεί να είναι αναγκαίο, να εμφωλεύσετε εντολές σε περισσότερα επίπεδα.__Όμως__ όσο "βαθύτερα" πηγαίνετε τόσο πιο δύσκολα θα γίνονται τα προγράμματά σας τόσο στην κατανόηση όσο και στη συντήρησή τους.Για αυτό οι εμφωλευμένες πρέπει να χρησιμοποιούνται με μέτρο και να αν είναι δυνατόν να αποφεύγονται. Για παράδειγμα,το παρακάτω block εντολών : Εικόνα 11.3.2

Είναι δυνατόν να αναπαρασταθεί και έτσι: Εικόνα 11.3.3

Ωστόσο η αναπαράσταση με εμφωλευμένες "Εάν..." περισσότερο το περιπλέκει παρά το απλουστεύει.

__Δραστηριότητα 1__
Ας δούμε άλλο ένα παράδειγμα χρησιμοποιώντας τις εντολές Εάν και Εάν… Αλλιώς. Έχοντας τη δυνατότητα επιλογής ανάλογα με το τι συμβαίνει γύρω μας πλέον μπορούμε να φτιάξουμε παιχνίδια όπως οδήγηση αυτοκινήτου. Πρώτα ας αρχίσουμε φτιάχνοντας τη πίστα που θέλουμε. Όπως έχει διδαχθεί στα προηγούμενα κεφάλαια για τη κατασκευή σκηνικών έχουμε τη πίστα:

Εικόνα 11.4.1 Η πίστα μας Μετά εισάγουμε ένα αντικείμενο που θα αντιπροσωπεύει το αμάξι.

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

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

Έτσι λοιπόν δημιουργήσαμε ένα απλό παιχνίδι οδήγησης αυτοκινήτου(11.4.8). Μαθαίνοντας νέες εντολές στα επόμενα κεφάλαια θα δούμε πως μπορούμε να επεκτείνουμε το παιχνίδι αυτό σε παιχνίδι ράλι κάνοντας το ακόμα πιο συναρπαστικό. Εικόνα 11.4.5 Το παράδειγμα στη τελική του μορφή

__Δραστηριότητα 2__
Ο σύλλογος των καθηγητών του σχολείου σας, πρότεινε στο 15μελες σας μια εκδρομή σε έναν εθνικό δρυμό. Συζητάμε στη τάξη τις προϋποθέσεις συμμετοχής σε αυτήν την εκδρομή.

__Σχόλια για την υλοποίηση της δραστηριότητας:__ Στόχος είναι οι μαθητές να οικοδομήσουν τις βασικές έννοιες αυτού του κεφαλαίου και ποιο συγκεκριμένα τον όρο συνθήκη, καθώς διδάσκονται τις εντολές εάν... και εάν...-αλλιώς... Ο εκπαιδευτικός συντονίζει τη συζήτηση καταγράφοντας στον πίνακα τις προϋποθέσεις-συνθήκες που βρίσκουν οι μαθητές και έπειτα τις εισάγει στις εντολές εάν/εάν-αλλιώς όπως φαίνεται στα σχήματα παρακάτω. Εάν ( βρέχει ){ δεν πάω εκδρομή } πάω εκδρομή //σχήμα 1//

Εάν ( βρέχει ){ δεν πάω εκδρομή } Αλλιώς { πάω εκδρομή } //σχήμα 2//

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

Εάν ( βρέχει ){ δεν πάω εκδρομή } Αλλιώς { Εάν ( έχω την άδεια του κηδεμόνα ){ πάω εκδρομή } Αλλιώς { δεν πάω εκδρομή } } //σχήμα 3//

Εφαρμογή στο scratch
Ας δούμε τώρα μία εφαρμογή της παραπάνω δραστηριότητας στο scratch. Έχουμε τον κ.Γατίδη σε ένα κενό σκηνικό να ρωτάει τι καιρό θα έχει την ημέρα που θα πάμε εκδρομή. Η ερώτηση γίνεται από την παλέτα Αισθητήρες με την εντολή: ρώτησε...και περίμενε. Μια πολύ χρήσιμη εντολή μιας που μας δίνει τη δυνατότητα να επικοινωνούμε με τα στοιχεία (sprite, σκηνικά) των προγραμμάτων που συγγράφουμε σε συνδυασμό με την εντολή απάντηση. Έτσι, και χρησιμοποιώντας και την εντολή της ισότητας από την παλέτα Τελεστές, ο κ.Γατίδης αντιδρά ανάλογα με τη πρόγνωση του καιρού από μέρους μας.

Εικόνα 11.4.6

//Μπορείτε να σκεφτείτε γιατί δε χρησιμοποιούμε την εαν-αλλιως στο παραπάνω παράδειγμα;//

Αλλά σαν πολύ μονότονο δεν είναι το σκηνικό; Τι θα λέγατε να βλέπαμε να υλοποιούνται οι σκέψεις του κ.Γατίδη; Κρατώντας το σενάριο λοιπόν για τον κ.Γατίδη ως έχει, θα χρειαστεί απλά να εισάγουμε δύο διαφορετικά υπόβαθρα στο σκηνικό μας, ένα για την εκδρομή (woods-and-bench) και ένα για το σχολείο (school1).

[[image:ypoba8ra.GIF width="300" height="312"]]
Εικόνα 11.4.7

Έπειτα, μπορούμε να γράψουμε το σενάριο του σκηνικού χρησιμοποιώντας, λίγο ή πολύ, το σενάριο του κ.Γατίδη με τις απαραίτητες αλλαγές. Το ενδιαφέρον εδώ, είναι πως χρησιμοποιούμε την εντολή απάντηση από την εντολή ρώτησε...και περίμενε που κάνει στο σενάριο του ο κ.Γατίδης χωρίς έτσι, να χρειάζεται η επανάληψή της από το σενάριο του σκηνικού.

[[image:skiniko.GIF]]
Εικόνα 11.4.8

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

Εικόνα 11.4.9

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

Εικόνα 11.4.10

__**Ερωτήσεις**__ 1) Σ-Λ - Σαν Ενέργεια σε μια Εάν μπορούμε να έχουμε μια άλλη Εάν. - Σε μια Εάν μπορούμε να έχουμε 2 συνθήκες. - 2)Πότε θα εκτελεστεί η πρώτη Ενέργεια στην Εάν..αλλιώς και πότε η δεύτερη? 3)Τι θα γίνει αν από μια συνθήκη αλλάξουμε τον τελεστή **και** στον τελεστή **ή**? 4)Μετατρέψτε τις παρακάτω Εάν σε μία Εάν..αλλιώς Εάν //αγγίζει// { //Παίξε ήχο// //}// Εάν //όχι αγγίζει// { //Πες «ησυχία»// //}// //5)//Αντίστοιχα με την 3 μετατρέψτε την παρακάτω Εάν σε μια εμφωλευμένη Εάν Εάν //πατήθηκε πλήκτρο// **και** //αγγίζει το χρώμα//{ //Πες «Γεια σου»// }

//6)//Αναλύστε πώς θα αλλάξει το πρόγραμμα της Εικόνας 11.2.10 αν οι μπάλες που πρέπει να αποφύγει γίνουν κίτρινες και αυτή που θέλουμε να φτάσουμε γίνει μαύρη. 7)Συνθέστε ένα παιχνίδι χρησιμοποιώντας ως σκελετό τις παρακάτω Εάν. Εάν //πατήθηκε το πλήκτρο// { //Άλλαξε χ κατά// Αλλιώς { //Άλλαξε χ κατά// } Και

Εάν //αγγίζει το χρώμα// **ή** //αγγίζει το//{

Εάν τ//ο χρώμα αγγίζει το χρώμα// { //Πες «Κέρδισα»// } 8)Υποθέστε ότι δεν υπήρχε η εντολή Εάν …αλλιώς. Κρίνετε κατά πόσο και σε τι θα επηρέαζε τα προγράμματα σας.

Τα προγράμματα του κεφαλαίου: ninja i-fel-se-kun οδήγηση νυχτερίδα