Υπορουτίνες
Υπορουτίνες
Οι υπορουτίνες αποτελούν τμήματα κώδικα που καλούνται με κάποιο τρόπο να εκτελεστούν. Στο Edscratch εκτελούνται όταν εμφανίζεται ένα συγκεκριμένο συμβάν.Για να συμβεί αυτό θα πρέπει να χρησιμοποιήσετε ένα μπλοκ από την κατηγορία Συμβάντα στην αρχή οποιασδήποτε υπορουτίνας. Στον προγραμματισμό, ένα συμβάν είναι κάτι που συμβαίνει εκτός του κώδικα του προγράμματος και επηρεάζει τον τρόπο με τον οποίο εκτελείται το πρόγραμμα. Ένα συμβάν μπορεί να είναι ένα κουμπί που πατιέται ή πληροφορίες που μεταδίδονται από έναν διαφορετικό αισθητήρα. Ας δούμε τα μπλοκ στην κατηγορία «Γεγονότα» ή "Συμβάντα" του EdScratch (Δεν είναι και λίγα! Σε αυτήν την ενότητα θα ασχοληθούμε με τα πρώτα 7). Τι παρατηρείτε για το σχήμα αυτών των μπλοκ; Πράγματι, είναι όλα "μπλοκ εκκίνησης", με την έννοια ότι δεν έχουν δυνατότητα σύνδεση με προηγούμενη ακολουθία και ούτε μπορούν να ενσωματωθούν εντός δομών επανάληψης που γνωρίσαμε. Προκειμένου να τα οργανώσουμε στη μνήμη μας είναι σκόπιμο να τα διαχωρίσουμε βάση των χαρακτηριστικών τους. Ενεργοποίηση Κουμπιού
Η πρώτη ομάδα αφορά γεγονότα διακοπής που περιγράφουν την ενεργοποίηση κάποιου από τα κουμπιά του Edison. Σε αυτήν την ομάδα περιλαμβάνουμε και το μπλοκ εκκίνησης "start", παρόλο που δεν αποτελεί συμβάν διακοπής αλλά όπως έχουμε μάθει είναι το "συμβάν εκκίνησης". Δεδομένου λοιπόν ότι το πρώτο μπλοκ ενεργοποιεί το κύριο πρόγραμμα που εκκινείται με το τρίγωνο κουμπί από την πρώτη στιγμή, μας μένουν το τετράγωνο κουμπί, και το κυκλικό. Θα παρατηρήσετε ότι το τετράγωνο κουμπί δεν περιλαμβάνεται στα συμβάντα διακοπής. Σε δεύτερη ανάγνωση αυτό ήταν αναμενόμενο καθώς η λειτουργία του είναι " προ-εγκατεστημένη και μόνιμη". Αποτελεί ενέργεια που αφορά τo χρονικό διάστημα που ήδη κάποιο πρόγραμμα τρέχει στο Edison, και λειτουργεί ως ο μόνιμος "οριστικός διακόπτης" της εκτέλεσης του προγράμματος. Οποιαδήποτε στιγμή σε οποιεσδήποτε συνθήκες και σε οποιοδήποτε τρέχον πρόγραμμα, τερματίζει την εκτέλεσή του. Μας περισεύουν λοιπόν το κυκλικό κουμπί που μπορεί να διακόψει ένα κύριο πρόγραμμα εκτελώντας μια υπορουτίνα, αλλά και το τρίγωνο, που χρησιμοποιήθηκε μεν για την εκκίνηση του κύριου προγράμματος, αλλά πλέον έχει τη δυνατότητα να επιφορτιστεί και με δεύτερο ρόλο. Παραδείγματα
Είδαμε νωρίτερα το: Είναι σημαντικό να αναφέρουμε ότι τα συμβάντα είναι μοναδικά. Δηλαδή αν εισάγουμε το μπλοκ συμβάντος κυκλικού κουμπιού, αυτό εξαφανίζεται από την παλέτα των εργαλείων. Επίσης, με δεξί κλικ επάνω του στο περιβάλλον προγραμματισμού, δεν εμφανίζεται Dublicate παρά μόνο Delete. Φυσικά, αυτό συμβαίνει γιατί θα πρέπει το Edison να ξέρει ποια υπορουτίνα να ενεργοποιήσει και αν υπάρχουν δύο, με το ίδιο συμβάν, δε θα είναι δυνατόν να το κάνει. Δεν υπάρχει καμία διαφορά στη χρήση του συμβάντος με το τρίγωνο κουμπί, το οποίο συμπληρώνει την παραπάνω έλλειψη. Εάν θέλουμε δηλαδή δεύτερη υπορουτίνα, χρησιμοποιούμε αυτό το συμβάν διαχωρίζοντας τες. Έτσι ανάλογα με την επιλογή κουμπιού διακόπτουμε το κυρίως πρόγραμμα σταματώντας το για 1 ή 3 δευτερόλεπτα. Στην συνέχεια το Edison επιστρέφει στο κύριο πρόγραμμα και συνεχίζει να το εκτελεί. Ανίχνευση Εμποδίου-Αισθητήρες
Υπάρχουν 4 μπλόκ διακοπής, που περιλαμβάνουν την ανίχνευση εμποδίου. Είναι σημαντικά διαφορετική κατηγορία, (ίσως και όχι) καθώς εκτός από το να εκτελέσουμε εμείς μια ενέργεια, η υπορουτίνα μπορεί να ενεργοποιηθεί αυτόματα από την ανίχνευση κάποιου άλλου συμβάντος στο περιβάλλον. Άλλωστε μέσα από παρόμοια γεγονότα όπου αντιδρά χωρίς τη δική μας δράση, απολαμβάνουμε περισσότερο την αίσθηση του "ρομπότ" στην κατασκευή μας. Χρησιμοποιώντας τα παραπάνω μπλοκ μπορούμε να προγραμματίσουμε το Edison έτσι ώστε η ανίχνευση ενός εμποδίου αριστερά, δεξιά, μπροστά ή οπουδήποτε αλλού, να επιβάλει τη διακοπή του κύριου προγράμματος και την εκτέλεση μίας υπορουτίνας. Έτσι για παράδειγμα χρησιμοποιώντας αντίστοιχες υπορουτίνες μπορούμε να δώσουμε διαφορετικές οδηγίες μετακίνησης στο Edison ώστε να αποφύγει τα εμπόδια ανάλογα με την κατεύθυνση που θα τα ανιχνεύσει. Ωστόσο, για να γίνει η ανίχνευση του εμποδίου θα πρέπει να ειδοποιήσουμε το Edison ότι υπάρχει αυτό το ενδεχόμενο. Κάτι σαν,..... "Kράτα τα μάτια σου ανοικτά". Αυτή η διαδικασία όμως απαιτεί την ενεργοποίηση εξαρτημάτων του. Στην επόμενη παράγραφο θα μιλήσουμε για τους αισθητήρες και θα ολοκληρώσουμε τη χρήση του obstacle detection.