Μάθημα 2 If δηλώσεις Εισαγωγή στις συνθήκες. Στην εισαγωγική δραστηριότητα κάναμε το BBC micro:bit να δείχνει αυτόματα το μήνυμα 'Hello- World!'. Αυτός ο κώδικας εκτελείται αμέσως όταν ενεργοποιηθεί το BBC micro:bit. Αυτό σημαίνει ότι εκτελείται χωρίς καμία απαίτηση-συνθήκη (άνευ-όρων). Μπορούμε να προσθέσουμε μία προϋπόθεση για την λειτουργία του κώδικά μας: Μία αριθμομηχανή περιμένει για την είσοδο αριθμών από τον χρήστη καθώς και της σχετικής πράξης πριν από την έξοδο του αποτελέσματος. Ένα παιχνίδι περιμένει να πατήσει ο χρήστης ένα κουμπί την κατάλληλη χρονική στιγμή πριν του εμφανίσει το σκορ. Σε ένα quiz ο χρήστης να επιλέξει τη σωστή επιλογή, και αν είναι λάθος το quiz να το πει στον χρήστη. Στον προγραμματισμό χρησιμοποιούμε την εντολή if: if(εάν) αυτή η συνθήκη ικανοποιείται (είναι αλήθεια), κάνε κάτι. Ας προσθέσουμε μία εντολή if στον κώδικα που είχαμε πριν: Το BBC micro:bit θα περιμένει να πατήσει ο χρήστης ένα κουμπί πριν δείξει μία εικόνα: Αν πατήθηκε το κουμπί Α δείξε την εικόνα ή εμφάνισε το μήνυμα. Γράψε τον κώδικα. Πηγαίνετε στη διεύθυνση: https://www.microbit.co.uk και πατήστε create code στην κορυφή της ιστοσελίδας. Πατήστε New Project κάτω από την κεφαλίδα Microsoft Block Editor. Μπορείτε να γράψετε κώδικα για το BBC microbit χρησιμοποιώντας ποικίλους συντάκτες κώδικα. Εμείς θα χρησιμοποιήσουμε το Microsoft Block Editor. Πατήστε create code Επιλέξτε New Project Πληκτρολόγησε if στην πάνω δεξιά γωνία για το όνομα του αρχείου του κώδικα που θα φτιάξεις. Θα εμφανιστεί μία οθόνη σαν την παρακάτω: 1
Για να κάνει οτιδήποτε το microbit σας πρέπει να το προγραμματίσετε. Γράφουμε κώδικα σύροντας πλακίδια. Αυτά τα πλακίδια σχηματίζουν μία δομή παζλ, που κάνει το micro:bit να κάνει πράγματα. Τα πλακίδια αυτά είναι ομαδοποιημένα σε κατηγορίες. Πάτησε στην κατηγορία if και σύρε το if/do πλακίδιο. Σύρε το showstring πλακίδιο από την κατηγορία Basics στο do τμήμα του πλακιδίου. Γράψε μέσα σε αυτό το μήνυμα Hello. Το κείμενο που εισάγω στο show string πλακίδιοεντολή, λέγεται όρισμα. Άλλαξε το κείμενο αυτό σε Hello World, τι παρατηρείς; Πάτησε στην κατηγορία input και σύρε το button is pressed πλακίδιο, σύνδεσέ το στο άνοιγμα παζλ του if πλακιδίου. Αυτό είναι το κριτήριό μας, η συνθήκη μας: εάν το κουμπί Α πατιέται. Μπορούμε να αλλάξουμε ποιο κουμπί εισόδου(α ή Β) πατώντας στο βέλος δίπλα στο Α. Προσπάθησε να εκτελέσεις αυτόν τον κώδικα και στη συνέχεια πάτησε το κουμπί Α. Το BBC micro:bit περιμένει για το κουμπί Α (το αριστερό κουμπί) να πατηθεί. Γιατί δεν δουλεύει; Γιατί ο κώδικας εκτελείται πολύ γρήγορα και το πρόγραμμα τερματίζει πριν μποέσουμε να πατήσουμε το κουμπί! Χρειάζεται να συνεχίσουμε να ελέγχουμε κατά πόσο πατήθηκε το κουμπί Α. Πάμε στην κατηγορία Basic και σύρουμε το πλακίδιο forever, και προσαρτούμε όλο τον κώδικά μας μέσα σε αυτό. Προσθέτουμε το τελευταίο αυτό πλακίδιο για να βεβαιώσουμε ότι το BBC micro:bit πάντα περιμένει να μας δείξει αυτό το μήνυμα, όχι μία φορά μόνο. Ο κώδικας εκτελεί το βμλοκ if μόνο όταν πατηθεί το κουμπί Α. Ο κώδικάς μας πρέπει να δείχνει όπως παρακάτω: Δοκιμάστε και το παρακάτω: 2
Παρακάτω φαίνεται το πρόγραμμά μας ως διάγραμμα ροής: Παρακολούθησέ το και θα δεις ότι εξακολουθεί να εκτελείται ο βρόχος ανεξάρτητα από το αν πατιέται το κουμπί. Η απόφαση είναι μέσα στον βρόχο. Η δομή forever και η δομή if καλούνται και οι δύο δομές ελέγχου, γιατί ελέγχουν την ροή του προγράμματος μας. Τα διαγράμματα ροής τις δείχνουν σε σχήμα ρόμβου με δύο διακλαδώσεις. Συνδέοντας το υλικό Για να δοκιμάσετε το κώδικά σας σε ένα πραγματικό BBC micro:bit, θα χρειαστείτε ένα BBC micro:bit και ένα micro-usb σε usb για την υποδοχή usb του υπολογιστή σας. Το micro-usb σε usb καλώδιο έρχεται μαζί με το micro:bit σας, συνδέστε τη μικρότερη άκρη του στη μικρή θύρα του microbit και την άλλη στη θύρα usb του υπολογιστή σας. Συνδέοντας το υλικό Ο υπολογιστής σας θα πρέπει να αναγνωρίσει το BBC micro:bit ως οδηγό συσκευής. Πήγαινε στο παράθυρο του φυλλομετρητή και πάτησε το κουμπί compile για να μετατρέψει ο Microsoft Editor τον κώδικά σας σε κώδικα κατανοητό από το BBC micro: bit. Στη συνέχεια αυτός ο κώδικας θα κατεβεί και θα αποθηκευτεί στον υπολογιστή σας. Τέλος μεταφέρετε το.hex αρχείο που δημιουργήθηκε από τον Microsoft Block Editor στον BBC micro:bit οδηγό συσκευής. Το LED κατάστασης στην κάτω πλευρά του micro:bit θα αναβοσβήσει καθώς θα αντιγράφεται ο κώδικας στο micro: bit. Άσκηση για το σπίτι Περισσότερες if δηλώσεις. Τώρα μπορείς να προσθέσεις επιπρόσθετες συνθήκες στην εντολή if. Παρακάτω παρουσιάζονται μερικές ιδέες: Άλλαξε το κουμπί που πρέπει να πατηθεί ώστε να είναι το κουμπί Β. 3
Πρόσθεσε ακόμα μία εντολή if μέσα στην τρέχουσα, και καντην ώστε και τα δύο τα κουμπιά να πρέπει να πατηθούν για να εμφανιστεί το μήνυμα. Δημιούργησε ένα mini quiz που ζητά να πατηθεί ένα κουμπί το οποίο αντιπροσωπεύει μία απάντηση. Αποφάσεις με δύο επιλογές (Else) Τι θα συμβεί αν ο χρήστης δεν πατήσει ένα κουμπί; Τι θα συμβεί αν ο χρήστης πατήσει το λάθος κουμπί; Αυτό μπορούμε να το ονομάσουμε else (αλλιώς), γιατί αν τα κριτήρια στη δήλωση if δεν ικανοποιούνται οι αντίστοιχες εντολές δεν εκτελούνται και κάτι άλλο γίνεται. Για παράδειγμα αν πρέπει να πατήσουμε το κουμπί Α και δεν το κάνουμε το BBC micro:bit να μας εμφανίζει μήνυμα να πατήσουμε το κουμπί Α. Απομακρύνετε τα πλακίδια button is pressed και show string από το πλακίδιο if και κάντε δεξί κλικ και πατήστε Delete. Πατήστε στην κατηγορία if και σύρετε ένα else if πλακίδιο. Συνδέστε τα πλακίδια button is pressed και show string στις σωστές θέσεις. Θέλουμε το μήνυμα Press A να κυλάει κατά μήκος του BBC micro:bit. Πως θα το πετύχουμε; Κάντε δεξί κλικ στο πλακίδιο show string, και επιλέξτε διπλασιασμός. Σύρετε αυτό το πλακίδιο στο else τμήμα και αντικατέστησε το Hello Wold με Press A! Ο κώδικας σου τώρα πρέπει να φαίνεται όπως παρακάτω: Εικόνα 1 Δοκίμασε και το παρακάτω: Εικόνα 2 4
Ανακεφαλαίωση: Το πλακίδιο για πάντα (forever), επιβεβαιώνει ότι ο κώδικας μας τρέχει για πάντα. Το BBC micro:bit ελέγχει αν ο χρήστης πάτησε το αριστερό κουμπί, αν δεν το πάτησε το Press A! μήνυμα θα κυλήσει κατά μήκος της σκηνής. Να περιγράψεις εδώ τι συμβαίνει με το κώδικα της εικόνας 2.......... Έλεγξε τον κώδικά σου στον εξομοιωτή ή προσάρτησε το BBC micro:bit στον Η/Υ και πάτησε compile για να στείλεις τον κώδικά σου στο BBC micro:bit. Άσκηση εμπέδωσης Χαμόγελασε για την κάμερα! Γράψε ένα πρόγραμμα όπου δείχνει ένα ευτυχισμένο πρόσωπο (Image.HAPPY ) όταν πατιέται το κουμπί Α και τραβιέται η φωτογραφία και ένα λυπημένο (Image.SAD ) πρόσωπο όταν αφήνουμε το κουμπί Α, όταν δεν πατιέται δηλαδή το κουμπί Α. Αποφάσεις με πολλαπλές επιλογές. Οι αποφάσεις με πολλαπλές επιλογές χρειάζεται να ρωτήσουν περισσότερες από μία ερωτήσεις. Το παρακάτω διάγραμμα ροής καλύπετει 3 επιλογές: 1. Πατιέται το κουμπί Α 2. Πατιέται το κουμπί Β 3. Κανένα κουμπί δεν πατιέται Αν η απάντηση στην ερώτηση Πατιέται το κουμπί Α; είναο όχι, χρειάζεται να ρωτήσουμε μία άλλη ερώτηση, Πατιέται το κουμπί Β; 5
Μπορούμε να προσθέσουμε ένα else if για να φτιάξουμε την έξτρα απόφαση στο διάγραμμα ροής. Δίνουμε μία επιπρόσθετη συνθήκη στην else if. Η σειρά είναι σημαντική! Τι περιμένεις να συμβεί όταν πατήσεις και τα δύο κουμπιά ταυτόχρονα; Μάντεψε πριν το προσπαθήσεις. Το πρόγραμμα ελέγχει κάθε εντολή από την κορυφή στο τέλος και εκτελεί μόνο την πρώτη εντολή αν η απάντηση είναι ΝΑΙ. Αυτό το πρόγραμμα ελέγχει κατά πόσο το κουμπί Α πατιέται πριν ελέγξει το κουμπί Β, έτσι όταν πατήσουμε και τα δύο κουμπιά ταυτόχρονα, θα δείξει μία πάπια. 6
Το "and" block και το or block. Μπορούμε να πάρουμε μία απλή απόφαση βασιζόμενη σε πολλάπλές ερωτήσεις χρησιμοποιώντας τον λογικό τελεστή and για να τις ενώσουμε. Το παρακάτω παράδειγμα δείχνει την εικόνα μόνο όταν πατηθούν και τα δύο κουμπιά. Δοκίμασε στο παραπάνω παράδειγμα να βάλεις τον τελεστή or αντί για τον τελεστή and. Εκτέλεσε το πρόγραμμα σου μερικές φορές. Τι παρατηρείς; Συζήτησε την παρατήρήσ σου με τον διπλανό σου. Στη συνέχεια συζητείστε με την διπλανή σας ομάδα και ορίστε εκπρόσωπο να παρουσιάσει την άποψη της ομάδας στην ολομέλεια............. Tο παρακάτω πρόγραμμα δείχνει μία διαφορετική εικόνα με το πάτημα κάθε κομπιού, και επίσης καθαρίζει την οθόνη αν κανένα κουμπί δεν πατηθεί. 7
Η σειρά είναι σημαντική ακόμα περισσότερο! Τι θα συμβεί αν αλλάξεις την σειρά των εντολών ώστε να ελέγξεις κατά πόσο και τα δύο κουμπιά πατιούνται μετά τον έλεγχο ότι πατιέται το κουμπί Α; Το πρόγραμμα θα δείχνει μία πάπια ακόμα και όταν και τα δύο κουμπιά πατιούνται. Πρακτικές εφαρμογές: 1. Εκκολαπτήρια αυγών: Τα αυγά κότας χρειάζονται περίπου 21 μέρες για να εκκολαφθούν, αλλά πρέπει να τα διατηρήσεις στη σωστή θερμοκρασία όλο αυτό το διάστημα. Η θερμοκρασία δεν πρέπει να υπερβαίνει τους 38 ο C και δεν πρέπει να είναι μικρότερη από 37 ο C. Πολλά εκκολαπτήρια αυγών χρησιμοποιούν ενσωματωμένες συσκευές για να ελέγχουν τη θερμοκρασία. Μία τέτοια θα φτιάξουμε και εμείς με το micro:bit μιας και έχει ενσωματωμένο αισθητήρα θερμοκρασίας. Αν η θερμοκρασία είναι μικρότερη από 37 ο C ή μεγαλύτερη από 38 ο C, θα παίζει τη νότα C (για 4 χρόνους) σε βρόχο σαν συναγερμό. Σε αντίθετη περίπτωση αν η θερμοκρασία είναι ασφαλής θα σταματήσει να παίζει τον κώδωνα του κινδύνου και θα εμφανίζει ένα χαρούμενο πρόσωπο (Image.HAPPY). 2. ATV controller Ας χτίσουμε έναν ελεγκτή για ένα όχημα γερανού που μπορεί να κινηθεί σε όλα τα εδάφη το οποίο χρησιμοποιεί ερπύστριες αντί για τροχούς. Όταν πατιούνται και τα δύο κουμπιά, κινείται μπροστά. Όταν πατιέται το κουμπί Α, στρίβει αριστερά. Όταν πατιέται το κουμπί Β, στρίβει δεξιά. Διαφορετικά το όχημα δεν μετακινείται. Γράψε ένα πρόγραμμα που σχεδιάζει ένα βέλος στην οθόνη το οποίο να δείχνει την κατεύθυνηση. Η οθόνη πρέπει να είναι κενή όταν το όχημα δε μετακινείται. Εικόνα 3: Caterpillar D9T - Wikipedia CC BY-SA 2.0. 3. Ο διακόπτης του νεκρού άντρα: Ο διακόπτης του νεκρού άντρα είναι μία συσκευή ασφαλείας για οχήματα που τα χειρίζονται άνθρωποι όπως τα τραίνα. Η ιδέα είναι ότι το τραίνο δεν θα μετακινηθεί εκτός και αν ο οδηγός κρατά πατημένο το πετάλι και θα σταματήσει αν ο οδηγός είναι ανίκανος για οποιονδήποτε λόγο. Ο κώδικας για τον διακόπτη του νεκρού άντρα θα πρέπει να κάνει τα παρακάτω: Όταν το εξωτερικό κουμπί C που συνδέεται στο Pin1 (το πετάλι του ποδιού) κρατιέται πατημένο, μπορούμε να πατήσουμε το κουμπί A για να επιταχύνουμε, και το κουμπί Β για να φρενάρουμε. Όταν το πετάλι του ποδιού δεν είναι πατημένο, το τραίνο θα πρέπει να φρενάρει απότομα.αν το τραίνο φρενάρει, δείξε το βέλος που δείχνει στο νότο, αν επιταχύνει δείξε το βέλος που δείχνει στο βορρά, διαφορετικά η οθόνη να είναι κενή (train dead man's switch) 4. Σύστημα συναγερμού Να γραφεί πρόγραμμα που να διαβάζει τον κωδικό συναγερμού (1 εώς 50) και να τυπώνει ανάλογο 8
μήνυμα σχετικό με τη ζώνη που τον προκάλεσε. Στη Ζώνη 1 ανήκουν οι κωδικοί 1 εώς και 10, στη Ζώνη 2 οι 11 εώς και 20, και στη Ζώνη 3 οι μεγαλύτεροι του 20. Εκκολαπτήρια αυγών Λύση1 (χωρίς ήχο) Λύση2 Με ήχο (συναγερμός) Μέχρι τώρα φτιάξαμε έναν επαρκή συναγερμό για το εκκολαπτήριο των αυγών μας. Αλλά τι θα συμβεί αν ο κείμενο δεν είναι αρκετό για να μας ειδοποιήσει; Προσθέτοντας ένα κουδούνι θα μπορείτε να ακούσετε το micro:bit ακόμα και αν είσαστε σε άλλον χώρο. Στην κατηγορία pins επιλέγουμε την digital write. Αν θέσουμε την digital write τιμή 1 σε κάποιο pin το ανοίγουμε δηλαδή το ορίζουμε στα 3Volt. Αν θέσουμε την digital write ενός pin στην τιμή 0, το γειώνουμε. Τροποποιήστε τον κώδικά σας ώστε να γίνει όπως παρακάτω. 9
Ποιο είναι όμως το πλεονέκτημα να ενεργοποιήσουμε ένα pin αν δεν είναι συνδεδεμένο σε κάτι; Θα χρησιμοποιήσουμε έναν buzzer. Σύνδεσε τη μία crocodile clip του καλωδίου σου στο pin 0 του micro:bit και την άλλη στη μία άκρη του buzzer. Σύνδεσε το ένα crocodile clip ενός δεύτερου καλωδίου στη γείωση του micro:bit και την άλλη στην άλλη άκρη του buzzer. Φόρτωσε τον κώδικά σου και δοκίμασέ τον. Μία παραλλαγή Δοκίμασε μία άλλη έξοδο όπως ένα LED σε ένα διαφορετικό pin για παράδειγμα P1. Ο κώδικας για την ενεργοποίηση του LED είναι ο ίδιος όπως ο κώδικας ενεργοποίησης του buzzer. Μια σημαντική διαφορά όμως είναι ότι όταν συνδέεις με καλώδιο ένα LED στο BBC micro:bit ίσως να απαιτείται μία αντίσταση για την προστασία του LED. Επίσης πρέπει να λάβουμε υπόψη ότι το 10
μακρύ πόδι του LED είναι θετικό και χρειάζεται να συνδεθεί στο pin που ενεργοποιείς (3Volt), και το κοντό πόδι χρειάζεται να συνδεθεί στη γείωση. Πηγές: Προγραμματισμός Υπολογιστών, ιδακτικό υλικό μαθητή, Γ ΕΠΑ.Λ. Τομέας Πληροφορικής https://www.microbit.co.uk/blocks/book/if-statements https://www.kitronik.co.uk/blog/microbit-alarm-kitronik-university/ https://groklearning.com/learn/microbit-crash-course/1/0/ 11