LEGO® Education > Σχέδια Μαθήματος > ΣΧΕΔΙΟ ΕΝΟΤΗΤΑΣ:

Παιχνίδι μαντεψιάς

Διερευνήστε τη χρήση δηλώσεων υπό όρους με βρόχους.

}

45 λεπτά

Τάξεις Ε’ Δημοτικού- Α’ Γυμνασίου

Ενδιάμεσο επίπεδο

Ερωτήσεις προς διερεύνηση

  • Γιατί ένας προγραμματιστής θα συνδύαζε μια υπό συνθήκη εντολή if/elif/else με έναν βρόχο;

Προετοιμασία ( Prepare )

  •  Βεβαιωθείτε ότι οι κόμβοι SPIKE Prime είναι φορτισμένοι, ειδικά αν η σύνδεση γίνεται μέσω Bluetooth.
  • Βεβαιωθείτε ότι οι μαθητές έχουν κατασκευάσει το μοντέλο Kiki, το σκυλί, το οποίο χρησιμοποιήθηκε στο μάθημα Μάντεψε ποιο χρώμα.

(Ομαδική συζήτηση, 5 λεπτά)

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

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

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

Συμμετοχή ( Engage )

      (Ομαδική συζήτηση, 5 λεπτά)

      Επανεξετάστε το μοντέλο για την παροχή ανατροφοδότησης με τους μαθητές.

      Εξηγήστε στους μαθητές τις ακόλουθες κατευθυντήριες γραμμές για την παροχή ανατροφοδότησης. Εξετάστε το ενδεχόμενο να αναρτήσετε τις κατευθυντήριες γραμμές για αναφορά από τους μαθητές.

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

      Ανακάλυψη ( Explore )

      (Μικρές ομάδες, 20 λεπτά)

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

      Καθοδηγήστε τους μαθητές να ανοίξουν το αποθηκευμένο πρόγραμμά τους για το μάθημα Μάντεψε ποιο χρώμα. Οι μαθητές θα πρέπει να συνδέσουν τον κόμβο τους. Σκεφτείτε να αφήσετε τους μαθητές να εκτελέσουν το πρόγραμμα μία φορά για να θυμηθούν πώς λειτουργεί.

      Χρήση βρόχου με δήλωση if/elif/else

      Ζητήστε από τους μαθητές να σκεφτούν πώς θα μπορούσαν να τροποποιήσουν το πρόγραμμα που χρησιμοποιήθηκε στο μάθημα Μάντεψε ποιο χρώμα ώστε να επαναλάβουν τη συνθήκη που επιτρέπει στο πρόγραμμα να αναγνωρίζει περισσότερα από ένα χρώματα. Οι μαθητές θα πρέπει να αναγνωρίσουν ότι ένας βρόχος while θα επιτρέψει στον αισθητήρα χρώματος να συνεχίσει να αντιδρά στο χρώμα που διαβάζεται σύμφωνα με τις συνθήκες που έχουν τεθεί.

      Ζητήστε από τους μαθητές να επικαιροποιήσουν το διάγραμμα ροής από το μάθημα Μάντεψε ποιο χρώμα ή να δημιουργήσουν ένα νέο διάγραμμα ροής για να δείξουν πώς πρέπει να λειτουργεί το πρόγραμμα.

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

      Δείγμα προγράμματος:

      από spike import PrimeHub, App, ColorSensor

      hub = PrimeHub()

      app = App()

      color_sensor = ColorSensor(‘B’)

      \#Όσο η συνθήκη συνεχίζει να είναι αληθής, επαναλάβετε τη δήλωση if/elif/else.

      while True: 

      color=color_sensor.wait_for_new_color()

      \#αν το χρώμα είναι μπλε, αναπαράγετε τον ήχο του πουλιού και γράψτε “detected blue” στην κονσόλα.

          if color == ‘blue’:

              app.play_sound(‘Bird’)

              print(‘Detected’, color)

      \#αν το χρώμα είναι πράσινο, αναπαράγετε ήχο θυμωμένης γάτας και γράψτε “ανιχνεύθηκε πράσινο” στην κονσόλα.

          elif color == ‘green’:

              Γάτα θυμωμένη’)

              print(‘Detected’, color)

      \#αν η συνθήκη δεν ικανοποιείται, αναπαράγετε ήχο wobble και γράψτε “ανιχνεύθηκε λάθος χρώμα” στην κονσόλα.

          else:

              app.play_sound(‘Wobble’)

              print(‘Wrong Color Detected’)

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

      Παίξτε ένα παιχνίδι μαντεψιάς

      Ζητήστε από τους μαθητές να αφαιρέσουν τα άλλα δύο χρώματα των τούβλων 2×4 από το σετ τους. Βάλτε τους μαθητές να αναδιατάξουν το μοντέλο τους ώστε να χωρέσουν και τα πέντε χρώματα. Οι μαθητές θα πρέπει να ξαναδουλέψουν το πρόγραμμά τους για να συμπεριλάβουν μια νέα συνθήκη για την ανάγνωση κάθε χρώματος. Προτρέψτε τους μαθητές ότι μπορούν να συμπεριληφθούν περισσότερες από μία δηλώσεις elif. Σε συνεργασία οι μαθητές να προγραμματίσουν κάθε τούβλο να κάνει διαφορετικό ήχο.

      Δείγμα προγράμματος:

      από spike import PrimeHub, App, ColorSensor

      hub = PrimeHub()

      app = App()

      color_sensor = ColorSensor(‘B’)

      \#Περιγράψτε πώς κάθε χρώμα κάνει το μοντέλο να αντιδράσει 

      while True:

          color=color_sensor.wait_for_new_color()

          if color == ‘blue’:

              app.play_sound(‘Bird’)

              print(‘Detected’, color)

          elif color == ‘green’:

              Γάτα θυμωμένη’)

              print(‘Detected’, color)

          elif color == ‘red’:

              app.play_sound(‘Snoring’)

              print(‘Detected’, color)

          elif color == ‘violet’

              app.play_sound(‘Moo’)

              print(‘Detected’, color)

          elif color == ‘yellow’

              app.play_sound(‘DogBark1’)

              print(‘Detected’, color)    

      else:

              app.play_sound(‘Wobble’)

              print(‘Wrong Color Detected’)

      Κάθε εταίρος θα αναλάβει με τη σειρά του να είναι ο κύριος του παιχνιδιού και ο άλλος εταίρος θα παίξει το παιχνίδι μαντεψιάς. Χωρίς ο εταίρος 2 να κοιτάζει το μοντέλο, ο εταίρος 1 θα πρέπει να παίξει το πρόγραμμα που επιτρέπει στο μοντέλο να σαρώσει κάθε χρώμα από τα 2×4 τούβλα που έχουν επιλεγεί. Ο συνεργάτης 1 θα αποφασίσει ποια χρώματα θα σαρώσει. Ο εταίρος 2 μπορεί να ακούσει τους ήχους που παίζονται προκειμένου να μαντέψει τον συνδυασμό χρωμάτων. Ο εταίρος 2 μπορεί είτε να γράψει τη σειρά των χρωμάτων είτε να χρησιμοποιήσει άλλα κομμάτια από το σετ για να υποδείξει τη σειρά των χρωμάτων.

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

          Εξηγήστε το ( Explain )

          (Ολόκληρη η ομάδα, 5 λεπτά)

          Συζητήστε με τους μαθητές πώς λειτούργησε το πρόγραμμα.

          Κάντε στους μαθητές ερωτήσεις όπως:

          • Πώς μπορούν να συνεργαστούν ένας βρόχος και μια δήλωση υπό όρους σε ένα πρόγραμμα;
          • Πώς αυτό το πρόγραμμα χρησιμοποιεί περισσότερες από μία εντολές υπό όρους;

          Υπενθυμίστε στους μαθητές ότι ο βρόχος while στην πραγματικότητα δημιουργεί επίσης μια δήλωση υπό όρους. Όσο αυτό το τμήμα του κώδικα είναι αληθές, θα συνεχίσει να επαναλαμβάνεται.

          • Πόσες συνθήκες μπορείτε να θέσετε σε ένα πρόγραμμα;
          • Πότε θα τελειώσει το πρόγραμμα;

          Εξελίξτε το ( Elaborate )

          (Μικρές ομάδες, 10 λεπτά)

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

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

          Δραστηριότητα εντοπισμού σφαλμάτων 1:

          από spike import PrimeHub, App, ColorSensor

          hub = PrimeHub()

          app = App()

          color_sensor = ColorSensor(‘B’)

          \#Περιγράψτε πώς κάθε χρώμα κάνει το μοντέλο να αντιδράσει 

          color=color_sensor.wait_for_new_color()

          \#Αν το χρώμα είναι μπλε, αναπαράγετε τον ήχο του πουλιού και εκτυπώστε “detected blue” στην κονσόλα 

          if color == ‘blue’:

              app.play_sound(‘Bird’)

          #Αν το χρώμα δεν είναι μπλε, αναπαράγετε τον ήχο γαβγίσματος του σκύλου και εκτυπώνετε “what happened?” στην κονσόλα 

          else app.play_sound(‘DogBark1’)

          Αρχείο “lib/hub/flash/programrunner/__init__.py”, γραμμή 1, in start_program

          Αρχείο “./projects/23100.py”, γραμμή 15

          SyntaxError: άκυρη σύνταξη

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

          Δραστηριότητα εντοπισμού σφαλμάτων 2

          from spike import Motor, PrimeHub 

          \# Αρχικοποίηση του Hub και του κινητήρα 

          hub = PrimeHub() 

          motor = Motor(‘F’) 

          \# Αυτό θα κάνει το χέρι να ανοίξει μία φορά για να ξεκινήσει 

          motor.run_for_seconds(1, 75)  

          while True:  

          hub.left_button.wait_until_pressed() 

          motor.set_stall_detection(False) 

          motor.start(-75) 

              hub.left_button.wait_until_released() 

              motor.set_stall_detection(True) 

              motor.start(75) 

          Αρχείο “lib/hub/flash/programrunner/__init__.py”, γραμμή 1, in start_program

          Αρχείο “./projects/52757.py”, γραμμή 11

          SyntaxError: άκυρη σύνταξη

          Οι μαθητές θα πρέπει να αναγνωρίσουν ότι το σφάλμα βρίσκεται στη γραμμή 11, όπως υποδεικνύεται στο μήνυμα σφάλματος. Η δήλωση υπό συνθήκη που δημιουργείται από το βρόχο while δεν διαβάζει τη συνθήκη, επειδή οι γραμμές κώδικα για τη συνθήκη δεν είναι σε εσοχή. Για να διορθώσουν το πρόγραμμα, οι μαθητές πρέπει να βάλουν σε εσοχή όλες τις γραμμές κώδικα που απαιτούνται για την συνθήκη (γραμμές 11-13).

          Ζητήστε από τους μαθητές να κάνουν εσοχή στη γραμμή 11 και μόνο στη γραμμή 11. Εκτελέστε ξανά το πρόγραμμα. Οι μαθητές θα λάβουν ένα νέο μήνυμα σφάλματος.

          Αρχείο “lib/hub/flash/programrunner/__init__.py”, γραμμή 1, in start_program

          Αρχείο “./projects/4369.py”, γραμμή 15

          IndentationError: απροσδόκητη εσοχή

          Οι μαθητές θα πρέπει να αναγνωρίσουν ότι εξακολουθεί να υπάρχει ένα σφάλμα στον κώδικα. Με την εσοχή της γραμμής 11, ολοκληρώσαμε τη δήλωση υπό συνθήκη. Η συνθήκη διαβάζει τη γραμμή 11 και στη συνέχεια τελειώνει επειδή η γραμμή 12 δεν έχει εσοχή. Ωστόσο, όταν το πρόγραμμα διαβάζει τη γραμμή 15, μπερδεύεται γιατί αυτή η γραμμή είναι σε εσοχή. Το μήνυμα σφάλματος διαβάζει “απροσδόκητη εσοχή” για να μας δώσει μια ένδειξη σχετικά με αυτό.

          Δραστηριότητα ελλιπούς κώδικα

          from spike import PrimeHub, App, ColorSensor

          hub = PrimeHub()

          app = App()

          color_sensor = ColorSensor(‘B’)

          \#Περιγράψτε πώς κάθε χρώμα κάνει το μοντέλο να αντιδράσει 

          color=color_sensor.wait_for_new_color()

          if color == ‘blue’:

              app.play_sound(‘Bird’)    

          elif

          else:

          Συζητήστε αυτό το πρόγραμμα με τους μαθητές. Ρωτήστε τους μαθητές τι λείπει για να γίνει αυτό ένα πλήρες πρόγραμμα. Παρόμοια με την αποσφαλμάτωση, μπορείτε να εκτελέσετε το πρόγραμμα και να λάβετε ένα μήνυμα σφάλματος.

          Αρχείο “lib/hub/flash/programrunner/__init__.py”, γραμμή 1, in start_program

          Αρχείο “./projects/23262.py”, γραμμή 13

          SyntaxError: άκυρη σύνταξη

          Σε αυτή την περίπτωση, το πρόγραμμα στέλνει σφάλμα για τη γραμμή 13 επειδή η δήλωση elif δεν έχει οριστεί. Οι μαθητές πρέπει να προσθέσουν κάτι που να θέτει τη νέα συνθήκη αν η αρχική συνθήκη διαβαστεί ως ψευδής.

           

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

          Αξιολόγηση  ( Evaluate )

          (Ομαδική άσκηση, 5 λεπτά)

          Παρατήρηση του δασκάλου:

          Συζητήστε το πρόγραμμα με τους μαθητές.

          Κάντε στους μαθητές ερωτήσεις όπως:

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

          Αυτοαξιολόγηση:

          • Βάλτε τους μαθητές να απαντήσουν στα ακόλουθα στο ημερολόγιό τους:
          • Τι μάθατε σήμερα σχετικά με την προσθήκη πολλαπλών συνθηκών σε ένα πρόγραμμα;
          • Ποια χαρακτηριστικά ενός καλού συμπαίκτη επέδειξα σήμερα;
          • Ζητήστε από τους μαθητές να βαθμολογήσουν τον εαυτό τους σε κλίμακα 1-3, σχετικά με τη διαχείριση του χρόνου τους σήμερα.
          • Ζητήστε από τους μαθητές να βαθμολογήσουν τον εαυτό τους σε κλίμακα 1-3, σχετικά με τη διαχείριση των υλικών (εξαρτημάτων) που έκαναν σήμερα.
          Υποστήριξη εκπαιδευτικών

          Οι μαθητές θα:

          • Γράψουν κώδικα που χρησιμοποιεί πολλαπλές δηλώσεις συνθήκης χρησιμοποιώντας προγραμματισμό if/elif/else.
          • Προσθέσουν έναν βρόχο στον κώδικα.
          • Κάνουν αποσφαλμάτωση κωδικοποίησης που έχει λανθασμένη/λάθος σύνταξη, ελλιπή κώδικα ή λανθασμένη εσοχή.
          Πράγματα που θα χρειαστείτε
          • Σετ SPIKE Prime έτοιμα για χρήση από τους μαθητές
          • Συσκευές με εγκατεστημένη την εφαρμογή SPIKE
          • Ημερολόγια μαθητών
          Εκπαιδευτικά πρότυπα

          CSTA

          2-CS-02 Σχεδιασμός έργων που συνδυάζουν στοιχεία υλικού και λογισμικού για τη συλλογή και ανταλλαγή δεδομένων.

          2-AP-10 Χρήση διαγραμμάτων ροής ή/και ψευδοκώδικα για την αντιμετώπιση σύνθετων προβλημάτων ως αλγόριθμοι

          2-AP-13 Να αναλύουν προβλήματα και υποπροβλήματα σε μέρη για να διευκολύνουν το σχεδιασμό, την υλοποίηση και την αναθεώρηση προγραμμάτων.

          2-AP-16 Ενσωμάτωση υπάρχοντος κώδικα, μέσων και βιβλιοθηκών σε πρωτότυπα προγράμματα και απόδοση των στοιχείων αυτών.

          2-AP-17 Συστηματική δοκιμή και βελτίωση των προγραμμάτων με τη χρήση μιας σειράς περιπτώσεων δοκιμής.

          2-AP-19 Τεκμηρίωση προγραμμάτων προκειμένου να διευκολύνεται η παρακολούθηση, ο έλεγχος και η αποσφαλμάτωση.