(Πηγή: Βιβλίο Μαθητή, Πληροφορική Α΄ Γυμνασίου, Κεφάλαιο 9 «Προγραμματισμός Υπολογιστικών Συστημάτων» / Προγραμματισμός με το Scratch, σελ. 112-118. Οι 8 «Δραστηριότητα 1-8» παρακάτω είναι αριθμημένα κουτιά ενσωματωμένα μέσα στη θεωρία των §9.5, §9.6 και §9.7. Οι εκφωνήσεις είναι αυτούσιες από το σχολικό βιβλίο· όπου τα δεδομένα υπάρχουν μόνο στη συνοδευτική εικόνα, δίνεται περιγραφή της εικόνας μέσα σε παρένθεση.)
Δραστηριότητες Κεφαλαίου 9
Δραστηριότητα 1 (σελ. 112)
Να βρείτε τις συντεταγμένες των παρακάτω χαρακτήρων.
(Το βιβλίο δείχνει ένα σύστημα αξόνων Scratch, με το Χ να πηγαίνει από -240 έως 240 και το Υ από -180 έως 180. Πάνω στο διάγραμμα εμφανίζονται 4 ζωάκια-χαρακτήρες: ένα ποντίκι πάνω-αριστερά, ένα ψαράκι-παλιάτσος πάνω-δεξιά, μια κουκουβάγια κάτω-αριστερά και ένα κοτοπουλάκι κάτω-δεξιά.)
Σκέψη / Μεθοδολογία: Στο Scratch η θέση κάθε αντικειμένου πάνω στη σκηνή περιγράφεται με ένα ζεύγος συντεταγμένων (x, y), όπου το x μετρά την οριζόντια απόσταση από το κέντρο της σκηνής (θετικό προς τα δεξιά, αρνητικό προς τα αριστερά) και το y την κατακόρυφη απόσταση (θετικό προς τα πάνω, αρνητικό προς τα κάτω). Η σκηνή έχει x από -240 έως 240 και y από -180 έως 180, όπως φαίνεται στο διάγραμμα του βιβλίου. Οι γραμμές του πλέγματος απέχουν 100 μονάδες (x: -200, -100, 100, 200 και y: 100, -100) και κάθε χαρακτήρας είναι τοποθετημένος πάνω σε μια τομή γραμμών του πλέγματος, οπότε αρκεί να βρούμε σε ποια κατακόρυφη και σε ποια οριζόντια γραμμή βρίσκεται.
Λύση:
- Εντοπίζουμε το κέντρο των αξόνων (0,0) στο σημείο τομής του οριζόντιου (Χ) και του κατακόρυφου (Υ) άξονα.
- Για κάθε χαρακτήρα μετράμε πόσα «κουτάκια» των 100 μονάδων απέχει οριζόντια (αριστερά=αρνητικό, δεξιά=θετικό) και πόσα κάθετα (πάνω=θετικό, κάτω=αρνητικό), συγκρίνοντάς τον με τις τυπωμένες τιμές -200,-100,100,200 (άξονας Χ) και 100,-100 (άξονας Υ).
- Ποντίκι (πάνω-αριστερά): βρίσκεται πάνω στην κατακόρυφη γραμμή x = -200 και στην οριζόντια γραμμή y = 100 → (x: -200, y: 100).
- Ψαράκι-παλιάτσος (πάνω-δεξιά): βρίσκεται πάνω στην κατακόρυφη γραμμή x = 100 και στην οριζόντια γραμμή y = 100 → (x: 100, y: 100).
- Κουκουβάγια (κάτω-αριστερά): βρίσκεται πάνω στις γραμμές x = -100 και y = -100 → (x: -100, y: -100).
- Κοτοπουλάκι (κάτω-δεξιά): βρίσκεται πάνω στις γραμμές x = 100 και y = -100 → (x: 100, y: -100).
Απάντηση: Ποντίκι (x: -200, y: 100) · Ψαράκι-παλιάτσος (x: 100, y: 100) · Κουκουβάγια (x: -100, y: -100) · Κοτοπουλάκι (x: 100, y: -100).
Πρόσεξε:
- Το x είναι θετικό ΔΕΞΙΑ και αρνητικό ΑΡΙΣΤΕΡΑ από το κέντρο· το y είναι θετικό ΠΑΝΩ και αρνητικό ΚΑΤΩ — αντίστροφο από ό,τι συνηθίζουμε στην αρίθμηση γραμμών κειμένου.
- Οι χαρακτήρες είναι σχεδιασμένοι με το κέντρο τους πάνω σε τομές του πλέγματος· οι τιμές διαβάζονται από τις αριθμημένες γραμμές -200, -100, 100, 200 (άξονας x) και 100, -100 (άξονας y). Προσοχή: το ποντίκι βρίσκεται στη γραμμή x = -200, όχι στη x = -100.
- Μην μπερδεύετε τα όρια της σκηνής ((X:-240,Y:0) κ.λπ., τυπωμένα στις άκρες) με τις θέσεις των χαρακτήρων· τα όρια δείχνουν απλώς πού σταματάει η σκηνή.
Δραστηριότητα 2 (σελ. 112)
Μια μαθήτρια έδωσε τις παρακάτω εντολές για να σχεδιαστεί ένα ισόπλευρο τρίγωνο πλευράς 150:
επανάλαβε 3
κινήσου 150 βήματα
στρίψε ↺ 60 μοίρες (αριστερά)
Τι σχήμα εμφανίζεται τελικά και ποιου σχήματος είναι μέρος; Τι πρέπει να διορθώσει η μαθήτρια ώστε να εμφανιστεί ισόπλευρο τρίγωνο; (Το βιβλίο συνοδεύει την άσκηση με σχήμα που δείχνει τρίγωνο ΑΒΓ όπου στην κορυφή Β σημειώνεται η εσωτερική γωνία 60° και, σε προέκταση της πλευράς ΑΒ προς σημείο C, η αντίστοιχη εξωτερική γωνία 120°.)
Σκέψη / Μεθοδολογία: Στο Scratch/Logo η εντολή «στρίψε» αλλάζει την ΚΑΤΕΥΘΥΝΣΗ προς την οποία κοιτάζει ο χαρακτήρας, όχι τη γωνία του σχήματος απευθείας. Η γωνία στροφής που χρειάζεται σε κάθε κορυφή για να κλείσει ένα κανονικό πολύγωνο είναι η ΕΞΩΤΕΡΙΚΗ γωνία (360°/ν όπου ν το πλήθος πλευρών), όχι η εσωτερική γωνία του σχήματος. Για ισόπλευρο τρίγωνο η εσωτερική γωνία είναι 60° αλλά η εξωτερική (η γωνία στροφής) είναι 180°-60°=120° — ακριβώς αυτό δείχνει και το συνοδευτικό σχήμα του βιβλίου (60° εσωτερική στο Β, 120° εξωτερική στην προέκταση προς C). Η μαθήτρια χρησιμοποίησε λανθασμένα την εσωτερική γωνία (60°) ως γωνία στροφής. Πράγματι, μετά από 3 επαναλήψεις κίνησης 150 βημάτων και στροφής 60° η κατεύθυνση αλλάζει συνολικά μόνο κατά 180° (3×60°) αντί για 360°, οπότε η γάτα ΔΕΝ επιστρέφει στο σημείο εκκίνησης — το σχήμα δεν κλείνει σε τρίγωνο.
Λύση:
- Κανόνας: γωνία στροφής (εξωτερική γωνία) = 180° − εσωτερική γωνία του κανονικού πολυγώνου, ή ισοδύναμα 360°/ν.
- Για ισόπλευρο τρίγωνο (ν=3): εσωτερική γωνία = 60°, άρα η σωστή γωνία στροφής είναι 360°/3 = 120° (όχι 60°).
- Εκτέλεση της δοσμένης (λανθασμένης) εντολής με στροφή 60° αντί 120°: ξεκινώντας από τυχαία αρχική κατεύθυνση, μετά από 3× (κίνηση 150, στροφή 60°) η συνολική στροφή είναι μόνο 180° — η γάτα καταλήγει να κοιτάζει στην ΑΝΤΙΘΕΤΗ κατεύθυνση από την αρχική, όχι στην ίδια, άρα η διαδρομή δεν κλείνει.
- Τα 3 τμήματα ευθείας που σχεδιάζονται (μήκους 150 το καθένα, με στροφή 60° ανάμεσά τους) είναι στην πραγματικότητα 3 διαδοχικές πλευρές ενός κανονικού ΕΞΑΓΩΝΟΥ πλευράς 150 — αφού η εξωτερική γωνία του κανονικού εξαγώνου είναι ακριβώς 360°/6=60°. Άρα το σχήμα που εμφανίζεται τελικά είναι ένα ανοιχτό (μη κλειστό) σχήμα από 3 συνεχόμενες πλευρές — μισό κανονικό εξάγωνο, όχι τρίγωνο.
- Διόρθωση: αλλάζουμε την τιμή στο μπλοκ «στρίψε» από 60 σε 120 μοίρες, ώστε η εντολή να γίνει «επανάλαβε 3 [κινήσου 150 βήματα, στρίψε ↺ 120 μοίρες]» — έτσι η συνολική στροφή στο τέλος των 3 επαναλήψεων είναι 3×120°=360°, η γάτα επιστρέφει ακριβώς στο αρχικό σημείο κοιτώντας στην αρχική κατεύθυνση, και το σχήμα κλείνει σε κανονικό ισόπλευρο τρίγωνο πλευράς 150.
Απάντηση: Το σχήμα δεν κλείνει σε τρίγωνο — είναι ένα ανοιχτό τμήμα (3 διαδοχικές πλευρές) κανονικού εξαγώνου πλευράς 150, γιατί η μαθήτρια χρησιμοποίησε την εσωτερική γωνία (60°) αντί της γωνίας στροφής/εξωτερικής γωνίας (120°). Διόρθωση: «στρίψε 120 μοίρες» αντί για «στρίψε 60 μοίρες».
Πρόσεξε:
- Μην μπερδεύετε την εσωτερική γωνία ενός κανονικού πολυγώνου με τη γωνία στροφής που χρειάζεται ο χαρακτήρας στο Scratch — οι δύο γωνίες είναι παραπληρωματικές (εξωτερική + εσωτερική = 180°).
- Ο γενικός κανόνας «γωνία στροφής = 360°/ν» ισχύει για ΚΑΘΕ κανονικό πολύγωνο (τετράγωνο→90°, ισόπλευρο τρίγωνο→120°, κανονικό εξάγωνο→60° κ.ο.κ.) — χρήσιμο να το θυμόμαστε ως γενικό εργαλείο.
- Το σχήμα του βιβλίου δίνει την απάντηση: στην κορυφή Β η εσωτερική γωνία του τριγώνου είναι 60°, ενώ η γωνία ανάμεσα στην προέκταση ΒC και στην πλευρά ΒΓ — δηλαδή η στροφή που κάνει η γάτα στην κορυφή — είναι 120°.
Δραστηριότητα 3 (σελ. 113)
Να δώσετε τα προγράμματα που σχεδιάζουν τα παρακάτω σχήματα. Στο πρώτο σχήμα η γάτα δε μπορεί να ζωγραφίσει την ίδια γραμμή δύο φορές. Επίσης, σε κάθε σχήμα όλες οι πλευρές είναι ίσες μεταξύ τους.
Σχήμα 1: μια οριζόντια βάση (ευθεία γραμμή) πάνω στην οποία «κάθονται» 3 διαδοχικά ισόπλευρα τρίγωνα με τις κορυφές τους προς τα πάνω (σαν «δόντια πριονιού»/κορώνα), με τη γάτα να ξεκινά από το κάτω-δεξιά άκρο της βάσης.
Σχήμα 2: ένα τετράγωνο με ένα ισόπλευρο τρίγωνο κολλημένο (με τη βάση του) σε καθεμία από τις 4 πλευρές του, με τις κορυφές των τριγώνων να δείχνουν προς τα έξω· φαίνονται και οι 4 πλευρές του τετραγώνου — η γάτα βρίσκεται στην πάνω-αριστερή κορυφή του τετραγώνου.
Σχήμα 3: ένα κανονικό δεκάγωνο (πολύγωνο 10 ίσων πλευρών) — η γάτα βρίσκεται στην αριστερή άκρη της κάτω πλευράς του.
Σχήμα 4: 4 ίσα τετράγωνα σε διάταξη 2×2 με μικρό κενό ανάμεσά τους· οι εσωτερικές πλευρές τους συνεχίζουν μέσα από το κενό, ώστε σχηματίζονται δύο συνεχείς οριζόντιες και δύο συνεχείς κατακόρυφες γραμμές (σαν «#») — η γάτα βρίσκεται στο κέντρο, στην κάτω-δεξιά κορυφή του πάνω-αριστερού τετραγώνου.
Σχήμα 5: 4 ίσα τετράγωνα σε διάταξη 2×2 με μεγαλύτερο κενό ανάμεσά τους, χωρίς καμία γραμμή να τα ενώνει — η γάτα βρίσκεται στην πάνω-αριστερή κορυφή του κάτω-αριστερού τετραγώνου.
Σκέψη / Μεθοδολογία: Σε όλα τα σχήματα χρησιμοποιούμε τα ίδια βασικά εργαλεία: «κατέβασε πένα» για να ζωγραφίζει η γάτα καθώς κινείται, «κινήσου Ν βήματα» για κάθε πλευρά και «στρίψε ↻/↺ μοίρες» στις κορυφές (για κανονικό πολύγωνο ν πλευρών η στροφή είναι 360°/ν). Στο Σχήμα 1 η δυσκολία είναι να βρούμε μια σειρά κινήσεων που περνά από κάθε γραμμή ΑΚΡΙΒΩΣ μία φορά: δεν σχεδιάζουμε κάθε τρίγωνο ξεχωριστά ως κλειστό σχήμα (κάτι που θα ξαναπερνούσε πάνω από τη βάση), αλλά σχεδιάζουμε πρώτα τη βάση με ΜΙΑ κίνηση και μετά τις 6 πλάγιες πλευρές σαν ζιγκ-ζαγκ. Στα Σχήματα 4 και 5 προσέχουμε αν οι γραμμές ενώνονται (οπότε η πένα μένει κάτω) ή όχι (οπότε σηκώνουμε την πένα). Κάθε πρόγραμμα το ελέγχουμε «εκτελώντας» το βήμα-βήμα και σημειώνοντας πού βρίσκεται η γάτα μετά από κάθε κίνηση και στροφή.
Λύση:
- ΣΧΗΜΑ 1 (ζιγκ-ζαγκ 3 τριγώνων πάνω σε βάση, χωρίς επανάληψη γραμμής): Η γάτα ξεκινά από την κάτω-δεξιά άκρη κοιτώντας ΑΡΙΣΤΕΡΑ (κατεύθυνση -90). Πρόγραμμα (πλευρά=100): «κατέβασε πένα» → «κινήσου 300 βήματα» (σχεδιάζει ΟΛΗ τη βάση με ΜΙΑ κίνηση, αφού μήκος βάσης = 3×100) → «στρίψε δεξιά 120 μοίρες» → «επανάλαβε 3 [ κινήσου 100 βήματα, στρίψε δεξιά 120 μοίρες, κινήσου 100 βήματα, στρίψε αριστερά 120 μοίρες ]». Η γάτα ανεβαίνει και κατεβαίνει εναλλάξ στις 3 κορυφές των τριγώνων και επιστρέφει ακριβώς στο σημείο εκκίνησης, χωρίς καμία γραμμή να σχεδιαστεί δύο φορές.
- ΣΧΗΜΑ 2 (τετράγωνο με 4 τρίγωνα): Η γάτα ξεκινά από την πάνω-αριστερή κορυφή του τετραγώνου κοιτώντας δεξιά (κατεύθυνση 90). Εδώ επιτρέπεται να περάσει δύο φορές από την ίδια γραμμή. Πρόγραμμα (πλευρά=100): «κατέβασε πένα» → «επανάλαβε 4 [ επανάλαβε 3 [ κινήσου 100 βήματα, στρίψε αριστερά 120 μοίρες ], κινήσου 100 βήματα, στρίψε δεξιά 90 μοίρες ]». Σε κάθε πλευρά του τετραγώνου ο εσωτερικός βρόχος σχεδιάζει ένα ισόπλευρο τρίγωνο προς τα έξω και επαναφέρει τη γάτα στην ίδια κορυφή με την ίδια κατεύθυνση· μετά η γάτα διανύει την πλευρά του τετραγώνου (που είναι και βάση του τριγώνου) και στρίβει δεξιά 90° για την επόμενη πλευρά. Μετά από 4 επαναλήψεις επιστρέφει στο σημείο εκκίνησης.
- ΣΧΗΜΑ 3 (κανονικό δεκάγωνο, 10 πλευρές): Η γάτα ξεκινά από την αριστερή άκρη της κάτω πλευράς κοιτώντας δεξιά (κατεύθυνση 90)· η στροφή σε κάθε κορυφή είναι 360°/10 = 36°. Πρόγραμμα: «κατέβασε πένα» → «επανάλαβε 10 [ κινήσου 100 βήματα, στρίψε αριστερά 36 μοίρες ]». Στρίβουμε αριστερά ώστε το δεκάγωνο να σχηματιστεί πάνω από την αρχική πλευρά, όπως στην εικόνα· μετά από 10 επαναλήψεις η συνολική στροφή είναι 360° και το σχήμα κλείνει.
- ΣΧΗΜΑ 4 (4 τετράγωνα με συνεχείς γραμμές μέσα από τα κενά): Η γάτα ξεκινά από το κέντρο (κάτω-δεξιά κορυφή του πάνω-αριστερού τετραγώνου) κοιτώντας προς τα πάνω (κατεύθυνση 0). Πρόγραμμα (πλευρά=100, κενό=30): «κατέβασε πένα» → «επανάλαβε 4 [ επανάλαβε 4 [ κινήσου 100 βήματα, στρίψε αριστερά 90 μοίρες ], στρίψε δεξιά 90 μοίρες, κινήσου 30 βήματα ]». Ο εσωτερικός βρόχος σχεδιάζει ένα τετράγωνο και επαναφέρει τη γάτα στην κορυφή από την οποία ξεκίνησε· μετά η γάτα στρίβει δεξιά 90° και διασχίζει το κενό (30 βήματα) ως την κορυφή του επόμενου τετραγώνου, σχεδιάζοντας και το κομμάτι της γραμμής μέσα στο κενό. Έτσι σχεδιάζονται διαδοχικά το πάνω-αριστερό, το πάνω-δεξί, το κάτω-δεξί και το κάτω-αριστερό τετράγωνο, και η γάτα επιστρέφει στο κέντρο.
- ΣΧΗΜΑ 5 (4 ξεχωριστά τετράγωνα): τα τετράγωνα δεν ενώνονται, οπότε ανάμεσά τους σηκώνουμε την πένα. Για κάθε τετράγωνο: «σήκωσε πένα» → «πήγαινε σε x: … y: …» (την πάνω-αριστερή κορυφή του) → «δείξε προς κατεύθυνση 90» → «κατέβασε πένα» → «επανάλαβε 4 [ κινήσου 100 βήματα, στρίψε δεξιά 90 μοίρες ]». Με πλευρά 100 και απόσταση 150 ανάμεσα στις κορυφές (κενό 50), οι πάνω-αριστερές κορυφές είναι π.χ. (-150, 0) για το κάτω-αριστερό τετράγωνο (εκεί βρίσκεται η γάτα), (0, 0), (-150, 150) και (0, 150). Κοιτώντας δεξιά και στρίβοντας δεξιά, κάθε τετράγωνο σχεδιάζεται δεξιά και κάτω από την κορυφή του.
Απάντηση (ενδεικτική): 5 προγράμματα πένας (ένα ανά σχήμα): Σχήμα 1 = βάση 300 βημάτων με μία κίνηση και μετά ζιγκ-ζαγκ με εναλλασσόμενες στροφές δεξιά/αριστερά 120°, χωρίς να ξαναπεράσει η γάτα από την ίδια γραμμή· Σχήμα 2 = σε κάθε πλευρά του τετραγώνου ένα ισόπλευρο τρίγωνο προς τα έξω (στροφές 120°) και στροφή 90° στις κορυφές του τετραγώνου· Σχήμα 3 = κανονικό δεκάγωνο με 10 επαναλήψεις και στροφή 36°· Σχήμα 4 = 4 τετράγωνα με την πένα συνέχεια κάτω, όπου μετά από κάθε τετράγωνο η γάτα στρίβει δεξιά 90° και διασχίζει το κενό ως το επόμενο· Σχήμα 5 = 4 τετράγωνα με «σήκωσε πένα» και «πήγαινε σε x: y:» ανάμεσά τους.
Πρόσεξε:
- Το Σχήμα 1 είναι η πιο συνηθισμένη παγίδα: αν σχεδιάσουμε κάθε τρίγωνο ξεχωριστά ως πλήρες κλειστό σχήμα (3 πλευρές, επιστροφή στην αρχή του), θα ξαναπεράσουμε πάνω από τμήμα της κοινής βάσης — ακριβώς αυτό απαγορεύει η εκφώνηση.
- Στο Σχήμα 4 οι γραμμές συνεχίζουν μέσα από τα κενά, γι' αυτό η πένα μένει συνέχεια κάτω· στο Σχήμα 5 τα τετράγωνα δεν ενώνονται καθόλου, οπότε ΠΡΕΠΕΙ να σηκώσουμε την πένα πριν από κάθε μετακίνηση, αλλιώς θα εμφανιστούν γραμμές που δεν υπάρχουν στο σχήμα.
- Πρόκειται για ανοιχτή δραστηριότητα: υπάρχουν πολλές σωστές υλοποιήσεις (π.χ. διαφορετικό μήκος πλευράς, διαφορετική αρχική κατεύθυνση ή φορά στροφών) — η παραπάνω είναι μία από αυτές.
Δραστηριότητα 4 (σελ. 115)
Ποιες είναι οι τελικές τιμές των μεταβλητών μετά την εκτέλεση των παρακάτω προγραμμάτων;
Α
όρισε X σε 10
όρισε Y σε 25
άλλαξε X κατά Y
άλλαξε X κατά X + Y
άλλαξε Y κατά X
Β
όρισε X σε 2
επανάλαβε 100000
άλλαξε X κατά 1
Γ
όρισε X σε 0
όρισε Z σε 0
επανάλαβε 100
άλλαξε X κατά 1
άλλαξε Z κατά X
Σκέψη / Μεθοδολογία: Σε κάθε πρόγραμμα εκτελούμε τις εντολές με τη σειρά, ενημερώνοντας κάθε φορά την τρέχουσα τιμή της κάθε μεταβλητής (η εντολή «άλλαξε Μ κατά Ε» σημαίνει Μ ← Μ + Ε, όπου η τιμή της παράστασης Ε υπολογίζεται ΠΡΙΝ γίνει η ενημέρωση, με τις τρέχουσες τιμές των μεταβλητών εκείνη τη στιγμή). Τα προγράμματα Β και Γ χρησιμοποιούν «επανάλαβε Ν» για να εκτελέσουν το ίδιο μπλοκ εντολών Ν φορές διαδοχικά.
Λύση:
- Πρόγραμμα Α — βήμα-βήμα: X=10, Y=25 (αρχικοποίηση). «άλλαξε X κατά Y» → X = 10+25 = 35. «άλλαξε X κατά X+Y» → προσοχή: εδώ το X+Y υπολογίζεται με το ΝΕΟ X (35) και το Y (ακόμη 25, αφού δεν έχει αλλάξει): X = 35 + (35+25) = 35+60 = 95. «άλλαξε Y κατά X» → Y = 25 + 95 = 120. Τελικά: X=95, Y=120.
- Πρόγραμμα Β — βήμα-βήμα: X=2 αρχικά, και «άλλαξε X κατά 1» εκτελείται 100.000 φορές μέσα στην επανάληψη, άρα X = 2 + 100.000 = 100.002.
- Πρόγραμμα Γ — βήμα-βήμα: X=0, Z=0 αρχικά. Σε κάθε μία από τις 100 επαναλήψεις: πρώτα X αυξάνεται κατά 1 (οπότε μετά την πρώτη επανάληψη X=1, μετά τη δεύτερη X=2 κ.ο.κ., μέχρι X=100 στο τέλος), και ΑΜΕΣΩΣ μετά το Z αυξάνεται κατά την (ήδη ενημερωμένη) τρέχουσα τιμή του X. Άρα το Z συσσωρεύει το άθροισμα 1+2+3+…+100. Το άθροισμα των πρώτων 100 φυσικών αριθμών είναι 100×101/2 = 5050. Τελικά: X=100, Z=5050.
Απάντηση: Α: X=95, Y=120. Β: X=100002. Γ: X=100, Z=5050 (το άθροισμα 1+2+…+100).
Πρόσεξε:
- Στο Πρόγραμμα Α η σειρά των εντολών παίζει καθοριστικό ρόλο: το «άλλαξε X κατά X+Y» χρησιμοποιεί την ΗΔΗ ενημερωμένη τιμή του X (35), όχι την αρχική (10) — συνηθισμένο λάθος μαθητών είναι να ξαναχρησιμοποιήσουν την αρχική τιμή.
- Στο Πρόγραμμα Γ, το Z αθροίζει τις τιμές ΜΕΤΑ την αύξηση του X σε κάθε επανάληψη (δηλαδή προσθέτει 1,2,3,…,100 — όχι 0,1,2,…,99), επειδή η εντολή «άλλαξε X κατά 1» εκτελείται ΠΡΙΝ το «άλλαξε Z κατά X» μέσα στην ίδια επανάληψη.
- Στο Πρόγραμμα Β δεν χρειάζεται να «τρέξουμε» νοερά 100.000 φορές τον βρόχο — αρκεί να αναγνωρίσουμε ότι η επανάληψη απλώς προσθέτει 1 στο X, Ν φορές συνολικά, άρα το αποτέλεσμα είναι αρχική τιμή + Ν.
Δραστηριότητα 5 (σελ. 116)
Να αναπτύξετε προγράμματα σε Scratch, τα οποία θα εμφανίζουν κάθε ένα από τα παρακάτω σχήματα.
Σχήμα Α: 7 κανονικά πολύγωνα με αυξανόμενο πλήθος πλευρών, όλα σχεδιασμένα με την ΙΔΙΑ πλευρά (ίδιο μήκος βήματος) και όλα να ξεκινούν από το ΙΔΙΟ σημείο και προς την ΙΔΙΑ αρχική κατεύθυνση — από το πιο μικρό/μυτερό (ισόπλευρο τρίγωνο, 3 πλευρές) μέχρι το πιο μεγάλο/στρογγυλεμένο (κανονικό εννεάγωνο, 9 πλευρές· ανάμεσα εμφανίζονται τετράγωνο, πεντάγωνο, εξάγωνο, επτάγωνο, οκτάγωνο), όλα με κοινή την πρώτη τους πλευρά (βάση).
Σχήμα Β: 10 τετράγωνα με αυξανόμενο μέγεθος, όλα να μοιράζονται την ΙΔΙΑ κάτω-αριστερή γωνία (κοινή αφετηρία, όπου βρίσκεται η γάτα) και τον ίδιο προσανατολισμό, το καθένα μεγαλύτερο από το προηγούμενο κατά σταθερό βήμα.
Σχήμα Γ: 6 ίσα τετράγωνα, όλα με κοινή μία κορυφή στο κέντρο, το καθένα στραμμένο 60° περισσότερο από το προηγούμενο (σχηματίζοντας «ανεμόμυλο» 6 φτερών γύρω από το κέντρο).
Σκέψη / Μεθοδολογία: Και στα 3 σχήματα η κοινή τεχνική είναι: (1) ένα «καλούπι» σχεδίασης κανονικού πολυγώνου ν πλευρών με πλευρά L — «επανάλαβε ν [κινήσου L βήματα, στρίψε (360/ν) μοίρες]» — και (2) επανάληψη αυτού του καλουπιού πολλές φορές, αλλάζοντας κάθε φορά μία παράμετρο (το πλήθος πλευρών ν στο Σχήμα Α, το μέγεθος L στο Σχήμα Β, την αρχική κατεύθυνση στο Σχήμα Γ) ενώ επιστρέφουμε στο ΙΔΙΟ κοινό σημείο εκκίνησης πριν από κάθε νέο σχήμα. Το γεγονός ότι στο Σχήμα Α όλα τα πολύγωνα ξεκινούν από το ίδιο σημείο, με την ίδια πλευρά L και την ίδια αρχική κατεύθυνση εξηγεί γιατί όλα μοιράζονται την ίδια πρώτη πλευρά στην εικόνα (αφού η πρώτη κίνηση «κινήσου L βήματα» είναι πανομοιότυπη για όλα) — το πολύγωνο απλά «ανοίγει» πιο πλατιά όσο αυξάνεται το ν.
Λύση:
- ΣΧΗΜΑ Α — λύση με μεταβλητή «πλευρές»: «κατέβασε πένα» και για κάθε τιμή ν από 3 έως 9: «πήγαινε στη θέση x0,y0» (το αριστερό άκρο της κοινής βάσης) → «δείξε προς κατεύθυνση 90» (η ίδια αρχική κατεύθυνση για όλα) → «επανάλαβε ν [ κινήσου 100 βήματα, στρίψε αριστερά (360/ν) μοίρες ]». Στρίβουμε αριστερά ώστε τα πολύγωνα να σχηματίζονται πάνω από την κοινή βάση, όπως στην εικόνα. Στην πράξη αυτό γράφεται είτε ως 7 ξεχωριστά «κομμάτια» κώδικα (ν=3,4,5,6,7,8,9 το καθένα με το δικό του σταθερό αριθμό επαναλήψεων και δική του σταθερή γωνία 360/ν), είτε πιο κομψά με μια μεταβλητή «πλευρές» που παίρνει διαδοχικά τις τιμές 3 έως 9 (όρισε πλευρές σε 3, επανάλαβε 7 [ …σχεδίασε πολύγωνο με ν=πλευρές…, άλλαξε πλευρές κατά 1 ]) και τη γωνία στροφής να υπολογίζεται με τη διαίρεση 360/πλευρές μέσα στο ίδιο μπλοκ. Επειδή η πρώτη κίνηση (100 βήματα, ίδια αρχική κατεύθυνση) είναι πανομοιότυπη σε όλα τα πολύγωνα, όλα «μοιράζονται» οπτικά την ίδια πρώτη πλευρά-βάση, ακριβώς όπως στην εικόνα του βιβλίου.
- ΣΧΗΜΑ Β — τετράγωνα αυξανόμενου μεγέθους με κοινή κάτω-αριστερή γωνία: δημιουργούμε μια μεταβλητή «πλευρά». «πήγαινε στη θέση x0,y0» (η κοινή κάτω-αριστερή γωνία, όπου βρίσκεται η γάτα) → «όρισε πλευρά σε 30» → «κατέβασε πένα» → «επανάλαβε 10 [ πήγαινε στη θέση x0,y0, δείξε προς κατεύθυνση 0, επανάλαβε 4 [ κινήσου (πλευρά) βήματα, στρίψε δεξιά 90 μοίρες ], άλλαξε πλευρά κατά 30 ]». Κοιτώντας προς τα πάνω και στρίβοντας δεξιά, κάθε τετράγωνο σχεδιάζεται πάνω και δεξιά από την κοινή γωνία, με πλευρά που μεγαλώνει κατά 30 βήματα κάθε φορά. Όλα τα τετράγωνα έχουν την αριστερή και την κάτω πλευρά τους πάνω στις ίδιες ευθείες, γι' αυτό δεν χρειάζεται σήκωμα πένας.
- ΣΧΗΜΑ Γ — 6 τετράγωνα σε ανεμόμυλο γύρω από κοινό κέντρο: «πήγαινε στη θέση x0,y0» (το κοινό κεντρικό σημείο) → «δείξε προς κατεύθυνση 90» → «κατέβασε πένα» → «επανάλαβε 6 [ πήγαινε στη θέση x0,y0, επανάλαβε 4 [ κινήσου 120 βήματα, στρίψε δεξιά 90 μοίρες ], στρίψε δεξιά 60 μοίρες ]». Ο εσωτερικός βρόχος σχεδιάζει ένα πλήρες τετράγωνο και επαναφέρει τη γάτα στο κέντρο με την ΙΔΙΑ κατεύθυνση με την οποία ξεκίνησε· η τελική στροφή 60° (=360°/6) στρέφει την αρχική κατεύθυνση για το επόμενο τετράγωνο, ώστε τα 6 τετράγωνα να απλωθούν ομοιόμορφα γύρω από το κοινό κεντρικό σημείο, σχηματίζοντας τον «ανεμόμυλο» της εικόνας.
Απάντηση (ενδεικτική): 3 προγράμματα Scratch (ένα ανά σχήμα): Α = 7 κανονικά πολύγωνα (ν=3…9) από το ίδιο σημείο, με την ίδια αρχική κατεύθυνση και πλευρά 100, με στροφή αριστερά 360/ν σε κάθε πολύγωνο· Β = 10 τετράγωνα από κοινή κάτω-αριστερή γωνία, με πλευρά που μεγαλώνει κατά 30 κάθε φορά (μεταβλητή «πλευρά»)· Γ = 6 τετράγωνα πλευράς 120 γύρω από κοινό κέντρο, με στροφή 60° της αρχικής κατεύθυνσης ανάμεσα σε κάθε τετράγωνο.
Πρόσεξε:
- Στο Σχήμα Α το «μυστικό» είναι ότι η ΚΟΙΝΗ πρώτη πλευρά δεν χρειάζεται καμία ειδική τεχνική· προκύπτει αυτόματα αν όλα τα πολύγωνα ξεκινούν από το ίδιο σημείο, με την ίδια αρχική κατεύθυνση και την ίδια πλευρά — μόνο το πλήθος πλευρών (και άρα η γωνία στροφής 360/ν) αλλάζει.
- Στο Σχήμα Β/Γ, ΠΡΕΠΕΙ να επαναφέρουμε ρητά τη γάτα στο κοινό σημείο (με «πήγαινε στη θέση…») πριν από κάθε νέο τετράγωνο· αν βασιστούμε μόνο στο ότι «η γάτα επιστρέφει μόνη της» μετά το κλείσιμο ενός τετραγώνου χωρίς έλεγχο, το παραμικρό σφάλμα στρογγυλοποίησης θα συσσωρευτεί.
- Πρόκειται για ενδεικτική/δημιουργική λύση — το ακριβές πλήθος πολυγώνων/τετραγώνων και οι ακριβείς διαστάσεις εκτιμήθηκαν από την εικόνα του βιβλίου και μπορεί να διαφέρουν ελαφρώς σε λεπτομέρεια, αλλά η ΤΕΧΝΙΚΗ (κοινό σημείο εκκίνησης + μεταβαλλόμενη παράμετρος ν/μέγεθος/γωνία σε κάθε επανάληψη) είναι η σωστή γενική προσέγγιση.
Δραστηριότητα 6 (σελ. 116)
Τι υπολογίζουν και εμφανίζουν τα παρακάτω προγράμματα; Να εξηγήσετε τη λειτουργία τους.
Α
όρισε x σε 0
επανάλαβε 100
σκέψου x * x
άλλαξε x κατά 1
Β
όταν γίνει κλικ σε [σημαία]
όρισε Βάση σε 2
όρισε Εκθέτης σε 20
όρισε Δύναμη σε 1
επανάλαβε Εκθέτης
όρισε Δύναμη σε Δύναμη * Βάση
Γ
όταν γίνει κλικ σε [σημαία]
όρισε Άθροισμα σε 0
όρισε Αριθμός σε 1
επανάλαβε 100
άλλαξε Άθροισμα κατά Αριθμός
άλλαξε Αριθμός κατά 1
Σκέψη / Μεθοδολογία: Και στα 3 προγράμματα έχουμε έναν βρόχο «επανάλαβε» που εκτελεί το ίδιο μπλοκ εντολών πολλές φορές, ενημερώνοντας μία ή περισσότερες μεταβλητές σε κάθε επανάληψη. Για να καταλάβουμε τι υπολογίζει το καθένα, παρακολουθούμε πώς αλλάζουν οι τιμές των μεταβλητών από επανάληψη σε επανάληψη (ιχνηλάτηση).
Λύση:
- Πρόγραμμα Α: η μεταβλητή x ξεκινά από 0 και σε κάθε επανάληψη (100 συνολικά) πρώτα «λέει σκεπτόμενη» (φούσκα σκέψης) την τιμή x*x και ΜΕΤΑ αυξάνεται κατά 1. Άρα το πρόγραμμα εμφανίζει διαδοχικά τα ΤΕΤΡΑΓΩΝΑ όλων των ακεραίων από το 0 μέχρι το 99: 0, 1, 4, 9, …, 9604, 9801 (το 9801=99² είναι το τελευταίο που εμφανίζεται). Επειδή η εναλλαγή στη φούσκα σκέψης γίνεται πολύ γρήγορα, στην πράξη ο χρήστης προλαβαίνει να δει καθαρά μόνο τα τελευταία 1-2 τετράγωνα πριν σταματήσει το πρόγραμμα.
- Πρόγραμμα Β: η Βάση=2 και ο Εκθέτης=20 παραμένουν σταθεροί όσο εκτελείται ο βρόχος· η Δύναμη ξεκινά από 1 και σε κάθε μία από τις 20 επαναλήψεις πολλαπλασιάζεται με τη Βάση (Δύναμη ← Δύναμη × Βάση). Αυτό είναι ακριβώς ο ορισμός της ύψωσης σε δύναμη μέσω επαναλαμβανόμενου πολλαπλασιασμού: μετά τις 20 επαναλήψεις η Δύναμη ισούται με Βάση^Εκθέτης = 2^20 = 1.048.576. Το πρόγραμμα υπολογίζει δηλαδή δυνάμεις χωρίς να χρησιμοποιεί έτοιμο τελεστή ύψωσης σε δύναμη.
- Πρόγραμμα Γ: το Άθροισμα ξεκινά από 0 και ο Αριθμός από 1· σε κάθε μία από τις 100 επαναλήψεις πρώτα προστίθεται στο Άθροισμα η τρέχουσα τιμή του Αριθμός, και μετά ο Αριθμός αυξάνεται κατά 1. Άρα το Άθροισμα συσσωρεύει το 1+2+3+…+100, δηλαδή υπολογίζει το άθροισμα των πρώτων 100 φυσικών αριθμών: 5050 (ο Αριθμός καταλήγει στο 101, μία μονάδα παραπάνω από το τελευταίο που προστέθηκε, αφού αυξάνεται ΜΕΤΑ την πρόσθεση).
Απάντηση: Α: εμφανίζει (στη φούσκα σκέψης) τα τετράγωνα των αριθμών 0 έως 99, δηλαδή 0,1,4,…,9801. Β: υπολογίζει τη δύναμη 2^20 = 1.048.576 με διαδοχικούς πολλαπλασιασμούς. Γ: υπολογίζει το άθροισμα 1+2+…+100 = 5050.
Πρόσεξε:
- Στο Α προσέξτε ότι το «σκέψου x*x» εκτελείται ΠΡΙΝ την αύξηση του x — άρα ο πρώτος αριθμός που εμφανίζεται είναι το 0² (όχι το 1²) και ο τελευταίος το 99² (όχι το 100²), αφού ο βρόχος τρέχει ακριβώς 100 φορές (x=0,1,…,99).
- Στο Β η μεταβλητή Δύναμη είναι αυτή που «κουβαλάει» το αποτέλεσμα από τη μία επανάληψη στην άλλη (σαν συσσωρευτής πολλαπλασιασμού) — ξεκινά υποχρεωτικά από 1 (το ουδέτερο στοιχείο του πολλαπλασιασμού), όχι από 0, γιατί αν ξεκινούσε από 0 όλα τα γινόμενα θα έμεναν 0.
- Στο Γ η σειρά των δύο εντολών μέσα στον βρόχο έχει σημασία: επειδή η πρόσθεση στο Άθροισμα γίνεται ΠΡΙΝ την αύξηση του Αριθμός, αθροίζονται οι τιμές 1,2,…,100 (όχι 0,1,…,99) — αν οι δύο εντολές είχαν αντίστροφη σειρά, το αποτέλεσμα θα ήταν διαφορετικό (0+1+…+99=4950).
Δραστηριότητα 7 (σελ. 118)
Να γράψετε ένα πρόγραμμα το οποίο θα ζητάει από τον χρήστη έναν αριθμό, θα ελέγχει αν αυτός ο αριθμός είναι άρτιος ή περιττός και θα εμφανίζει αντίστοιχο μήνυμα.
Υπόδειξη: Να χρησιμοποιήσετε τον τελεστή υπολογισμού του υπολοίπου της ακέραιας διαίρεσης.
Σκέψη / Μεθοδολογία: Ένας αριθμός είναι ΑΡΤΙΟΣ αν διαιρείται ακριβώς με το 2, δηλαδή αν το υπόλοιπο της ακέραιας διαίρεσής του με το 2 είναι 0· διαφορετικά (υπόλοιπο 1) είναι ΠΕΡΙΤΤΟΣ. Στο Scratch η εισαγωγή αριθμού από τον χρήστη γίνεται με την εντολή «ρώτησε … και περίμενε», η οποία αποθηκεύει αυτόματα ό,τι πληκτρολογήσει ο χρήστης στην ειδική μεταβλητή «απάντηση». Ο τελεστής «υπόλοιπο ακέραιας διαίρεσης» (στο Scratch: «… ακέρ. υπόλ. δια …») μας δίνει ακριβώς αυτό το υπόλοιπο, οπότε ελέγχουμε αν (απάντηση ακέρ. υπόλ. δια 2) = 0.
Λύση:
- Βήμα 1: «όταν γίνει κλικ σε [σημαία]».
- Βήμα 2: «ρώτησε [Δώσε έναν αριθμό:] και περίμενε» — ο αριθμός που θα πληκτρολογήσει ο χρήστης αποθηκεύεται αυτόματα στη μεταβλητή «απάντηση».
- Βήμα 3: «εάν <(απάντηση ακέρ. υπόλ. δια 2) = 0> τότε» → μέσα: «πες [Ο αριθμός είναι ΑΡΤΙΟΣ] για 2 δευτερόλεπτα».
- Βήμα 4: «αλλιώς» → μέσα: «πες [Ο αριθμός είναι ΠΕΡΙΤΤΟΣ] για 2 δευτερόλεπτα» (χρησιμοποιώντας το σύνθετο μπλοκ «εάν…τότε…αλλιώς» ώστε να καλύπτονται και οι δύο περιπτώσεις με έναν έλεγχο).
- Επαλήθευση λογικής με μερικά παραδείγματα: 10 ακέρ. υπόλ. δια 2 = 0 → «Άρτιος» (σωστό)· 7 ακέρ. υπόλ. δια 2 = 1 → «Περιττός» (σωστό)· 0 ακέρ. υπόλ. δια 2 = 0 → «Άρτιος» (σωστό, το 0 είναι άρτιος αριθμός)· -4 ακέρ. υπόλ. δια 2 = 0 → «Άρτιος» (το Scratch υπολογίζει σωστά το υπόλοιπο και για αρνητικούς αριθμούς).
Απάντηση (ενδεικτική): Πρόγραμμα: «ρώτησε [Δώσε έναν αριθμό:] και περίμενε» → «εάν <(απάντηση ακέρ. υπόλ. δια 2) = 0> τότε [πες «Ο αριθμός είναι ΑΡΤΙΟΣ»] αλλιώς [πες «Ο αριθμός είναι ΠΕΡΙΤΤΟΣ»]».
Πρόσεξε:
- Αντί για το μπλοκ «εάν…τότε…αλλιώς» μπορούμε να χρησιμοποιήσουμε και δύο απλά «εάν…τότε»: ένα με συνθήκη (απάντηση ακέρ. υπόλ. δια 2) = 0 για το «Άρτιος» και ένα δεύτερο με συνθήκη (απάντηση ακέρ. υπόλ. δια 2) = 1 (ή «όχι <(απάντηση ακέρ. υπόλ. δια 2) = 0>») για το «Περιττός».
- Η μεταβλητή «απάντηση» είναι πάντα κειμενικού τύπου εσωτερικά στο Scratch, αλλά όταν χρησιμοποιείται μέσα σε αριθμητικό τελεστή (όπως το «ακέρ. υπόλ. δια») μετατρέπεται αυτόματα σε αριθμό — δεν χρειάζεται επιπλέον μετατροπή από τον μαθητή.
- Πρόκειται για ανοιχτή δραστηριότητα (ενδεικτική λύση): η ακριβής διατύπωση των μηνυμάτων ή η χρήση «πες» αντί «πες…για…δευτερόλεπτα» μπορεί να διαφέρει χωρίς να αλλάζει η ορθότητα του προγράμματος.
Δραστηριότητα 8 (σελ. 118)
Να γράψετε ένα πρόγραμμα το οποίο θα κάνει έναν συγκεκριμένο ήχο κάθε φορά που ο χρήστης θα πατάει το πλήκτρο space. Όταν ο χρήστης πατήσει το space 10 φορές το πρόγραμμα να εμφανίζει ένα μήνυμα και να εξαφανίζει τον χαρακτήρα – πρωταγωνιστή του προγράμματος.
Υπόδειξη: Μπορείτε να χρησιμοποιήσετε τις παρακάτω εντολές: «εξαφανίσου», «όταν πατηθεί πλήκτρο [διάστημα]», «παίξε τον ήχο [pop]».
Σκέψη / Μεθοδολογία: Χρειαζόμαστε μία μεταβλητή-μετρητή (π.χ. «μετρητής») που θα μετράει πόσες φορές πατήθηκε το πλήκτρο space, και ένα ξεχωριστό μπλοκ συμβάντος «όταν πατηθεί πλήκτρο [διάστημα]» που θα ενεργοποιείται αυτόματα ΚΑΘΕ φορά που ο χρήστης πατάει space (χωρίς να χρειάζεται δικός μας βρόχος αναμονής). Μέσα σε αυτό το μπλοκ παίζουμε τον ήχο, αυξάνουμε τον μετρητή κατά 1, και ελέγχουμε αν έφτασε στο 10 για να εμφανίσουμε το τελικό μήνυμα και να εξαφανίσουμε τον χαρακτήρα.
Λύση:
- Σενάριο 1 (αρχικοποίηση): «όταν γίνει κλικ σε [σημαία]» → «εμφανίσου» (ώστε ο χαρακτήρας να είναι ορατός σε περίπτωση που είχε εξαφανιστεί από προηγούμενη εκτέλεση) → «όρισε μετρητή σε 0».
- Σενάριο 2 (χειρισμός συμβάντος πλήκτρου): «όταν πατηθεί πλήκτρο [διάστημα]» → «παίξε τον ήχο [pop]» → «άλλαξε μετρητή κατά 1» → «εάν <μετρητής = 10> τότε» [ «πες [Έπαιξες 10 φορές! Αντίο!] για 2 δευτερόλεπτα», «εξαφανίσου» ].
- Λογική επαλήθευση: κάθε πάτημα του space ενεργοποιεί ξανά το Σενάριο 2 (τα «όταν πατηθεί πλήκτρο» μπλοκ ενεργοποιούνται σε κάθε πάτημα, σαν χειριστής συμβάντος), ο μετρητής αυξάνεται σταδιακά 1,2,3,…,10, και μόλις φτάσει ακριβώς στο 10 εκτελείται το μήνυμα αποχαιρετισμού και ο χαρακτήρας εξαφανίζεται — τα επόμενα πατήματα του space θα συνέχιζαν να παίζουν τον ήχο (αφού το μπλοκ παραμένει ενεργό) αλλά δεν θα εμφανίζουν ξανά μήνυμα εκτός αν προστεθεί επιπλέον έλεγχος «μετρητής ≥ 10» αντί για ακριβή ισότητα.
Απάντηση (ενδεικτική): Δύο σενάρια: (1) «όταν γίνει κλικ σε [σημαία]»: εμφανίσου + όρισε μετρητή σε 0. (2) «όταν πατηθεί πλήκτρο [διάστημα]»: παίξε ήχο [pop] → άλλαξε μετρητή κατά 1 → εάν μετρητής=10 τότε [πες μήνυμα, εξαφανίσου].
Πρόσεξε:
- Η ισότητα «μετρητής = 10» ενεργοποιεί το μήνυμα ΜΟΝΟ στο ακριβώς 10ο πάτημα· αν θέλουμε ασφάλεια για την περίπτωση που ο μετρητής ξεπεράσει το 10 (π.χ. αν υπάρχει άλλο σημείο του προγράμματος που τον αλλάζει), προτιμότερος είναι ο έλεγχος «μετρητής ≥ 10».
- Το «εμφανίσου» στην αρχή (στο σενάριο της σημαίας) είναι απαραίτητο· χωρίς αυτό, αν ο χρήστης ξανατρέξει το πρόγραμμα μετά από μία πρώτη εκτέλεση όπου ο χαρακτήρας είχε εξαφανιστεί, θα παραμείνει αόρατος.
- Πρόκειται για ανοιχτή δραστηριότητα (ενδεικτική λύση): το ακριβές μήνυμα αποχαιρετισμού ή ο συγκεκριμένος ήχος (pop ή άλλος) μπορεί να διαφέρει χωρίς να αλλάζει η ορθότητα της λύσης.