10. Μπορείς να το κάνεις συνέχεια; Για πάντα-Επανέλαβε






"Επανάληψη μήτηρ πάσης μαθήσεως."
"Repeat is the mother of every knowledge"




Yliko apo Omada Diadiktyakwn porwn




10. Μπορείς να το κάνεις συνέχεια; Για πάντα-Επανέλαβε
Μαθησιακοί στόχοι
Να κατανοούν την αναγκαιότητα της επανάληψης στην καθημερινή "προγραμματιστική" πραγματικότητα
Να κατανοούν την αναγκαιότητα της επανάληψης στον προγραμματισμό.
Να αναγνωρίζουν τη λειτουργία των εντολών
"Για πάντα...Επανέλαβε" και "Επανέλαβε τόσες φορές" της παλέτας Έλεγχος (είναι πιθανό να έχουν χρησιμοποιηθεί με απλό τρόπο και σε προηγούμενα κεφάλαια)
Να κατανοούν και να είναι σε θέση να αξιοποιήσουν τις πολλαπλές χρησιμότητες των εντολών επαναλήψεων
Να είναι σε θέση να συνθέτουν πολύπλοκες εντολές επανάληψης.
Χαρακτηριστικά
Εκμάθηση των εντολών "Για πάντα...Επανέλαβε" και "Επανέλαβε τόσες φορές" της παλέτας Έλεγχος.
Αξιοποίηση των εντολών σε παραδείγματα από κίνηση, ζωγραφική, μουσική κτλ
Παραδείγματα
(Ακόμα δεν έχει γίνει εισαγωγή της έννοιας του ελέγχου)
Ο ανεμόμυλος (διαρκής περιστροφή του έλικα)
Ο χορός (γραμμική εξέλιξη του παραδείγματος "Τα πρώτα μου βήματα" στο κεφάλαιο 5).
Καλειδοσκόπιο.
ή άλλα παραδείγματα


Κεφάλαιο 10 - Διάρθρωση κεφαλαίου

############################################

10.1 - Εισαγωγή στην επανάληψη.
  • 10.1.1 - Τί εννοούμε με τον όρο 'επανάληψη' ;
  • 10.1.2 - Πόσο σημαντική είναι η επανάληψη στον προγραμματισμό;
  • 10.1.3 - Λίγα λόγια για την επανάληψη στο Scratch.

10.2 - Οι εντολές επανάληψης στο Scratch!
  • 10.2.1 - Για πάντα...: Θέλω να κάνω κάτι για πάντα ! (Επεξήγηση της εντολής, παραδείγματα με εικόνες, μικρά/trivial παραδειγματάκια του τύπου να κουνιέται η γάτα δεξιά-αριστερά)
  • 10.2.2 - Επανέλαβε τόσες φορές: Πώς επαναλαμβάνω κάτι μόνο όσες φορές μου χρειάζεται; (Επεξήγηση της εντολής, παραδείγματα με εικόνες, μικρά/trivial παραδειγματάκια του τύπου να κουνιέται η γάτα δεξιά-αριστερά χ φορες)

10.3 - Τί άλλα μπορώ να κάνω με την επανάληψη;
  • 10.3.1 - Πιό σύνθετα παραδείγματα στο scratch (ανεμόμυλος, χορός κλπ).
  • 10.3.2 - Ας βελτιώσουμε τα προγράμματα μας με τις εντόλες που μάθαμε! (Σύνδεση με παραδείγματα προηγούμενων κεφαλαίων/ομάδων)

10.4 - Ασκήσεις .

#############################################





Κεφάλαιο 10:

Μπορείς να το κάνεις συνέχεια; Για πάντα-Επανέλαβε

(Συγγραφή)


10.1 - Εισαγωγή στην επανάληψη.

Σε αυτή την ενότητα θα μελετήσουμε την επανάληψη, το πόσο συχνή είναι στην καθημερινή μας ζωη και το πώς μπορεί να κάνει ευκολότερο τον προγραμματισμό !


10.1.1 - Μία πρώτη εισαγωγή στον όρο 'επανάληψη' !

Ας δούμε όμως τί εννοούμε όταν λέμε επανάληψη. Σκεφτείτε το περιεχόμενο της Εικόνας 10.1:

4_seasons_by_vxside.jpg
Εικόνα 10.1


Η αδιάκοπη εναλλαγή των τεσσάρων εποχών αποτελεί ένα ξεκάθαρο παράδειγμα επανάληψης στην ζωή μας! Η σειρά Άνοιξη – Καλοκαίρι – Φθινόπωρο – Χειμώνας επαναλαμβάνεται...για πάντα!


Επίσης χαρακτηριστικό παράδειγμα επανάληψης είναι ένας αγώνας αυτοκινήτων. Σε αυτή την περίπτωση βέβαια, η επανάληψη πρέπει κάποια στιγμή να σταματήσει. Οι οδηγοί δεν μπορούν να τρέχουν για πάντα, κυνηγώντας ο ένας τον άλλον ! Έπειτα από ένα συγκεκριμένο αριθμό γύρων, ο αγώνας φτάνει σε ένα τέλος (βλέπε εικόνα 10.2) .

nascar-racing.jpg
Εικόνα 10.2


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


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

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


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


10.1.2 - Πόσο σημαντική είναι η επανάληψη στον προγραμματισμό;

-Υπάρχουν, άραγε, περιπτώσεις που εμφανίζεται κάποιο είδος επανάληψης στον προγραμματισμό;

Μα, φυσικά!!


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

  1. Βρίσκει το επόμενο τραγούδι στην λίστα.

  2. Το αναπαράγει στα ηχεία/ακουστικά μας.

  3. Επιστρέφει πάλι στο βήμα 1.


Αν όμως τώρα ενεργοποιήσουμε στο πρόγραμμα αναπαραγωγής την επιλογή repeat (επανάληψη για πάντα), η επανάληψη των βημάτων 1-3 θα γίνεται , όπως άλλωστε λέει και το όνομα, για πάντα.


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

10-32.jpg
Εικόνα 10.3


Ερώτηση

Πού αλλού έχετε παρατηρήσει επανάληψη στα προγράμματα που χρησιμοποιείτε;




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


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


errikos130.JPG10-4.PNG
Εικόνα 10.4 : Στα αριστερά βλέπουμε την εικόνα του παραδείγματος της ενότητας 8.1.2 χωρίς χρήση επανάληψης έχοντας χρησιμοποιήσει 10 εντολές. Στα δεξιά βλέπουμε το ίδιο παράδειγμα αυτή την φορά με χρήση επανάληψης όπου ελαττώνουμε τις εντολές σε 4.

10.1.3 - Λίγα λόγια για την επανάληψη στο Scratch.


Το Scratch μας δίνει δύο εντολές επανάληψης, την Για πάντα.. και την Επανέλαβε τόσες φορές.

Οι εντολές αυτές βρίσκονται στην Παλέτα Έλεγχος. Από εδώ και πέρα ο Γατίδης πάντα θα έχει κάτι να κάνει !!



"Επανάληψη μήτηρ πάσης μαθήσεως."

- Λαϊκή ρήση



10.2 - Οι εντολές επανάληψης στο Scratch!



10.2.1 - Για πάντα...: Θέλω να κάνω κάτι για πάντα !


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

Ανοίξτε την παλέτα ελέγχου και προσπαθήστε να εντοπίσετε την εντολή Για Πάντα.

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

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

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

Διασκεδάστε με το αποτέλεσμα!

errikos129.JPG
Εικόνα 10.5




Ερώτηση

Μπορείτε να δώσετε μερικά απλά παραδείγματα επαναλαμβανόμενων πράξεων με κίνηση που συναντάτε καθημερινά και που να μπορούν να πραγματοποιηθούν στο Scratch με την χρήση της εντολής Για Πάντα;




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


10-6.3.PNG
10.6.2.PNG
Εικόνα 10.6 : Επάνω η εντολή "πες (Γεια σου) " εκτελείται κανονικά. Κάτω η εντολή "πες (Γεια σου)" δεν θα εκτελεστεί ποτέ αφού βρίσκεται μετά την δομή επανάληψης.

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

Είναι απλό!

Βρίσκουμε τις εικόνες του ήλιου και της γης από το διαδίκτυο και τις εισάγουμε ως ξεχωριστά αντικείμενα στο scratch.

Τοποθετούμε την μορφή του ήλιου στο κέντρο της οθόνης και την Γη σε τροχιά γύρω από τον ήλιο

(Εικόνα 10.7).

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

(Εικόνα 10.8).


  • Τοποθετείστε την Γη στην θέση Χ:-130, Υ:-30 και τον ήλιο στην θέση Χ: 0, Υ: 0.
  • Σύρετε την εντολή Για Πάντα από την παλέτα ελέγχου,

  • Σύρετε τις εντολές

    • Κινήσου(15) βήματα προς τα δεξιά. Με την εντολή αυτή δίνουμε την απόσταση της γης από τον ήλιο (πρέπει η ακτίνα να μην είναι μεγάλη ούτως ώστε να μην βγαίνει η Γη έξω από τα όρια της οθόνης αλλά και να μην είναι μικρή και πλησιάζει τον ήλιο).

    • Στρίψε (5) μοίρες από την παλέτα Κίνησης. Με την εντολή αυτή ορίζουμε την ταχύτητα περιστροφής της Γης γύρω από τον ήλιο.


image_1041.png
Εικόνα 10.7



image_105.png
Εικόνα 10.8



Ένα ακόμα πιο σύνθετο παράδειγμα χρήσης της εντολής "Για πάντα..." με πρωταγωνιστή τον "Αναποφάσιστο κ. Γατίδη...".

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

Αφού βρούμε τις εικόνες για το ψάρι και το ποντίκι από το διαδίκτυο, τις εισάγουμε ως ξεχωριστά αντικείμενα στο Scratch. Τοποθετούμε το ποντίκι αριστερά και το ψάρι δεξιά στα άκρα της οθόνης και τον γάτο ανάμεσά τους. Ο κ. Γατίδης θα κινείται 100 βήματα δεξιά, θα περιμένει 1 δευτερόλεπτο, θα κάνει μεταβολή και θα κινείται άλλα 100 βήματα προς τα αριστερά αναρωτόμενος ποιό θα είναι το γεύμα του. Όσον αφορά το ποντίκι και το ψάρι θα προσπαθούν να πείσουν τον κ. Γατίδη να μην τους φάει.


Παρακάτω θα εξηγήσουμε μια προς μία τις εντολές υλοποίησης του.

Για τον κ. Γατίδη χρησιμοποιήσαμε τις εντολές:

  • "Πες()", όπου εμφανίζεται στην οθόνη το μήνυμα "Τι θα φάμε σήμερα;;;".

  • "Κινήσου (100) βήματα", όπου δώσαμε κίνηση στον κ Γατίδη.

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

  • "Στρίψε (180) μοίρες", όπου κάναμε τον κ. Γατίδη να γυρίσει από την άλλη πλευρά.

Όλα αυτά φυσικά μέσα στην εντολή "Για Πάντα" ώστε να γίνει η κίνηση από τον ποντικό στο ψάρι και πάλι πίσω.

errikos131.JPG
Εικόνα 10.9

------------------------------------------------------------------------------------------------------------------------

Για τον κ. Ποντίκη χρησιμοποιήσαμε τις εντολές:

  • "Για Πάντα"...

  • "Πες()", όπου εμφανίζεται στην οθόνη το μήνυμα "Ψάρι!!!".

  • "Περίμενε (1) δευτερόλεπτα", όπου δώσαμε κάποια μικρή καθυστέρηση στην εκτέλεση των εντολών του Ποντίκη, ώστε να εμφανίζεται το μήνυμα "Ψάρι" μόλις ο γάτος φτάσει σε αυτόν.

errikos132.JPG
Εικόνα 10.10



Για τον κ. Ψαρίδη χρησιμοποιήσαμε τις εντολές:

  • "Για Πάντα"...

  • "Πες()", όπου εμφανίζεται στην οθόνη το μήνυμα "Ποντίκι!!!".

  • "Περίμενε (1) δευτερόλεπτα", όπου δώσαμε κάποια μικρή καθυστέρηση στην εκτέλεση των εντολών του Ψαρίδη, ομοίως με τον κύριο Ποντίκη, μόνο που το μήνυμα θα γράφει "Ποντίκι".

errikos133.JPG
Εικόνα 10.11




Το τελικό αποτέλεσμα είναι πραγματικά εντυπωσιακό!!! Ο κ. Γατίδης είναι ασταμάτητος...Κανείς δεν ξέρει πότε θα το πάρει απόφαση (Εικόνα 10.12).

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


image_109.png
Εικόνα 10.12

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

Έχουμε μάθει από τα προηγούμενα κεφάλαια την εντολή "δείξε στο <...>" όπου σε συνδυασμό με την "κινήσου...βήματα" δίνουμε κατεύθυνση και κίνηση στο αντικείμενό μας προς κάποιο άλλο αντικείμενο ή θέση. Στη συγκεκριμένη περίπτωση θα χρησιμοποιήσετε την "δείξε στο δείκτη ποντικιού" και ο κύριος Γατίδης θα ακολουθεί το ποντίκι όπου κι αν αυτό το κινήσετε. Όσα περισσότερα βήματα δώσετε στην "κινήσου" τόσο πιο αργά θα κινείται το αντικείμενό σας. Στο παράδειγμα που ακολουθεί χρησιμοποιήσαμε και την εντολή "κατέβασε πένα" χαράσσοντας την πορεία που ακολούθησε ο κύριος Γατίδης (Εικόνα 10.13).


errikos118_2.JPG
Εικόνα 10.13



10.2.2 Η ΕΝΤΟΛΗ «ΕΠΑΝΕΛΑΒΕ <Χ> ΦΟΡΕΣ»

Σε αυτή την ενότητα θα περιγράψουμε μια ακόμα σημαντική εντολή επανάληψης, την «Eπανέλαβε <...> φορές».

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

Η εντολή που θα διδαχθούμε σε αυτή την ενότητα μοιάζει πολύ με την προηγούμενη μόνο που εδώ πέρα η επανάληψη δεν συνεχίζεται επ'άπειρον αλλά κάποια στιγμή, η οποία έχει επιλεγεί από τον προγραμματιστή, σταματάει. Σημαντικότατο ρόλο σε αυτό έχει το ‘Χ’ που βλέπουμε στην εντολή, αφού με αυτό θα δείξουμε πόσες φορές θα εκτελεστεί το κομμάτι του κώδικα που είναι μέσα στην επανάληψη, ενώ μπορεί να έχει διαφορετικές χρήσεις και ερμηνείες. Δηλαδή εάν θέλουμε να γράψουμε ένα πρόγραμμα scratch στο οποίο π.χ. θα πρέπει να κινούμε τη γάτα προς μία συγκεκριμένη κατεύθυνση για δέκα βήματα τότε το Χ θα αντικαθίσταται από τον αριθμό 10 (βλέπε εικόνα 10.14).



errikos112.JPG

Εικόνα 10.14: Σε αυτό το απλό πρόγραμμα με τη χρήση της εντολής "Επανέλαβε 10 φορές" η γάτα θα κινηθεί 10 βήματα προς την κατεύθυνση που θα επιλέξουμε.

Η εντολή «Eπανέλαβε <...> φορές» όπως βλέπουμε είναι πολύ απλή στη χρήση της και πάρα πολύ χρήσιμη όταν προγραμματίζουμε, όπως ακριβώς συμβαίνει και με την "Για πάντα...", ενώ το γεγονός ότι ξέρουμε από την αρχή πόσες φορές θέλουμε να γίνει η επανάληψη μας δίνει ένα ακόμα πλεονέκτημα της συγκεκριμένης εντολής αφού σε αντίθεση με την «Για πάντα…» τώρα ξέρουμε πότε θα σταματήσει να εκτελείται.

Παρακάτω (Εικόνα 10.15) ακολουθεί ένα παράδειγμα σχεδιασμού ενός τετραγώνου αρχικά με χρήση της εντολής "Επανέλαβε <...> φορές" και στη συνέχεια χωρίς αυτήν την εντολή.


errikos136.JPG

errikos137.JPG
Εικόνα 10.15: Σε αυτές τις 2 εικόνες βλέπουμε το πλεονέκτημα της χρήσης της «Επανέλαβε <...> φορές» σε ένα απλό πρόγραμμα σχεδιασμού ενός τετραγώνου σε αντίθεση με τη χρήση απλών εντολών πολλές φορές.

Ας δούμε σε ποια φάση βρίσκεται το αντικείμενο μετά το τέλος κάθε επανάληψης για το παραπάνω παράδειγμα.


ΑΡΧΙΚΗ ΘΕΣΗ
errikos119.JPG

Πριν την έναρξη της επανάληψης ο κ. Γατίδης βρίσκεται στο κέντρο της οθόνης.

ΤΕΛΟΣ 1ΗΣ ΕΠΑΝΑΛΗΨΗΣ
errikos120.JPG

Μετά το τέλος της 1ης επανάληψης κινείται δεξιά, χαράσσοντας την πάνω πλευρά του τετραγώνου.

ΤΕΛΟΣ 2ΗΣ ΕΠΑΝΑΛΗΨΗΣ
errikos121.JPG

Μετά το τέλος της 2ης επανάληψης κινείται προς τα κάτω, χαράσσοντας την δεξιά πλευρά του τετραγώνου.

ΤΕΛΟΣ 3ΗΣ ΕΠΑΝΑΛΗΨΗΣ
errikos122.JPG

Μετά το τέλος της 3ης επανάληψης κινείται αριστερά, χαράσσοντας την κάτω πλευρά του τετραγώνου.

ΤΕΛΟΣ 4ΗΣ ΕΠΑΝΑΛΗΨΗΣ
errikos123.JPG

Μετά το τέλος της 4ης επανάληψης επανέρχεται στην αρχική του θέση, χαράσσοντας την αριστερή πλευρά του τετραγώνου.


Στη συνέχεια έχουμε ένα άλλο παράδειγμα με το οποίο μπορούμε να δείξουμε ότι με τη χρήση της εντολής "Επανέλαβε <...> φορές" μπορούμε να κάνουμε μαγικά!

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

Παρακάτω θα δούμε τις εντολές που χρησιμοποιούμε για να πετύχουμε το επιθυμητό αποτέλεσμα (εικόνα 10.16) και έναν πίνακα ενδιάμεσων καταστάσεων.


errikos124.JPG
Εικόνα 10.16

1ο ΜΠΛΟΚ
ΑΡΧΙΚΗ ΚΑΤΑΣΤΑΣΗ
errikos125.JPG

10Η ΕΠΑΝΑΛΗΨΗ
errikos126.JPG

15Η ΕΠΑΝΑΛΗΨΗ
errikos127.JPG

20Η ΕΠΑΝΑΛΗΨΗ

2ο ΜΠΛΟΚ
5Η ΕΠΑΝΑΛΗΨΗ
errikos127.JPG

10Η ΕΠΑΝΑΛΗΨΗ
errikos126.JPG

ΤΕΛΙΚΗ ΚΑΤΑΣΤΑΣΗ
errikos125.JPG

Απλά αναφέρουμε ότι ο κώδικας του προηγούμενου παραδείγματος χωρίς την επανάληψη δεν χωράει ολόκληρος στο παράθυρο του scratch, όπως φαίνεται και στην επόμενη εικόνα (εικόνα 10.17).

errikos128.JPG
Εικόνα 10.17

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

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

Χρησιμοποιήθηκε η εντολή "Επανέλαβε 4 φορές", η οποία σχεδίαζε γραμμή-γραμμή ένα τετράγωνο. Εάν όμως θέλετε να σχεδιάσετε περισσότερα από ένα τετράγωνα στο ίδιο πρόγραμμα για να εμφανιστούν στην οθόνη σε διαφορετικές θέσεις, θα πρέπει να γράψετε το ίδιο κομμάτι εντολών του προηγούμενου παραδείγματος τόσες φορές όσα τετράγωνα χρειάζεστε, απλά αλλάζοντας τις συντεταγμένες του καθενός. Δεν είναι όμως κουραστικό αν ο αριθμός των τετραγώνων είναι πολύ μεγάλος; ΠΟΙΑ νομίζετε ότι είναι η λύση;

ΣΩΣΤΑ!!!! Η επανάληψη...

Όσο μεγάλος κι αν είναι ο αριθμός των τετραγώνων μπορούμε να επαναλάβουμε τη σχεδίαση του τετραγώνου όσες φορές θέλουμε, χρησιμοποιώντας την "επανελαβε <...> φορές". Ουσιαστικά το μόνο που κάνουμε είναι να εισάγουμε μία εντολή επανάληψης που θα περιλαμβάνει την αρχικό παράδειγμα του τετραγώνου, άρα και την αρχική εντολή επανάληψης που χρησιμοποιήσαμε. Για κάθε νέα εξωτερική επανάληψη, εκτελούνται όλα τα βήματα της εσωτερικής όσα κι αν είναι. Δηλαδή π.χ. εάν η εξωτερική επανάληψη γίνεται 50 φορές και η εσωτερική γίνεται 4, τότε για κάθε 1 εξωτερική επανάληψη θα εκτελούνται ΚΑΙ οι 4 εσωτερικές επαναλήψεις. Με μια μικρή προσθήκη (εντολή "στρίψε <...> μοίρες" για την αλλαγή των συντεταγμένων του κάθε τετραγώνου) το αποτέλεσμα είναι ένα όμορφο γεωμετρικό σχήμα (εικόνα 10.18).


errikos138.JPG
Εικόνα 10.18:Σχεδιασμός πολύπλοκου σχήματος με τη χρήση «εμφωλευμένων» εντολών «Επανέλαβε <...> φορές».







10.3 - Τί άλλα μπορώ να κάνω με την επανάληψη;


10.3.1 - Πιό σύνθετα παραδείγματα στο scratch .



Παράδειγμα για την εντολή «Για πάντα επανέλαβε…» (Ανεμόμυλος)


Το επόμενο παράδειγμα (εικόνα 10.19) μας δείχνει πως μπορούν να χρησιμοποιηθούν εντολές μέσα σε έναν για πάντα επανέλαβε βρόγχο ώστε να δημιουργήσουμε την κίνηση της έλικας ενός ανεμόμυλου αλλά και την απλή κίνηση ενός πουλιού, ώστε να διασχίζει την σκηνή μας.
windmill_final-2.png
Εικόνα 10.19

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


Τα αντίστοιχα κομμάτια του κώδικα είναι:
1. Ανεμόμυλος
code_windmill-2.png

Για πάντα θα επαναλαμβάνεται ο ήχος της έλικάς, αλλά περιοδικά! Αυτο το επιτυγχάνουμε ενσωματώνοντας την εντολή "επανέλαβε 45", η οποία εκτελεί για 45 φορές τις εντολές "στρίψε" και "περίμενε τόσα δευτερόλεπτα", αφήνοντας έτσι να ακουστεί ολόκληρο το ηχητικό κομμάτι το οποίο αντιστοιχεί σε σχεδόν 2,5 δευτερόλεπτα.

2. Πουλί
code_bird-2.png

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


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






10.3.2 - Ας βελτιώσουμε τα προγράμματα μας με τις εντόλες που μάθαμε! (Σύνδεση με παραδείγματα προηγούμενων κεφαλαίων/ομάδων)

Παράδειγμα για την εντολή «Επανέλαβε τόσες φορές» (Ρολόι)


Το επόμενο παράδειγμα (εικόνα 10.20) μας δείχνει πως μπορούμε να χρησιμοποιήσουμε την εντολή επανέλαβε τόσες φορές, ώστε να προσομοιώσουμε την κίνηση των δεικτών του ρολογιού για μία ολόκληρη ημέρα!
clock_final.png
Εικόνα 10.20

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

Όλη η παραπάνω διαδικασία, θα εκτελείται για 1 ολόκληρη μέρα!
Για να προσομοιώσουμε την κίνηση αυτή χρειαστήκαμε 4 αντικείμενα. Ένα του ρολογιού και τρία για την απεικόνιση των δεικτών. Για να προσομοιώσουμε την κίνηση των δεικτών, αφού η εντολή στρίψε ... μοίρες περιστρέφει το αντικείμενο με σταθερό σημείο το κέντρο του, οι φωτογραφίες που θα χρησιμοποιηθούν για τα αντικείμενα αυτά θα πρέπει να είναι έτσι σχεδιασμένες, ώστε τα άκρα τους να ισαπέχουν από το κέντρο του κάθε δείκτη. Αυτό επιτυγχάνεται με εξαγωγή της κάθε φωτογραφίας-δείκτη σε μορφή .png, αφήνοντας από την πλευρά που ο δείκτης είναι πιο κοντός κενό χώρο, ώστε το άκρο του να ισαπέχει από το κέντρο όσο και το άλλο τμήμα του δείκτη. Για κάθε μπλοκ κώδικα των δεικτών χρησιμοποιούμε τις εξής εντόλές:

· Εισάγουμε την εντολή "Επανέλαβε...φορές"
· Εισάγουμε την εντολή "στρίψε...μοίρες"
· Βάζουμε την εντολή "περίμενε...δευτερόλεπτα", ώστε να γίνει σωστά η κίνηση του δείκτη.

Τα αντίστοιχα κομμάτια του κώδικα είναι:
1.Δευτερολεπτοδείκτης
errikos139.JPG86400 δευτ. = 60 δευτ. * 60 λεπτ. * 24 ώρες = 24 ώρες σε δευτερόλεπτα
(6 μοίρες περιστροφή 6*60=360)

2. Λεπτοδείκτης
errikos140.JPG1440 λεπτ. = 60 λεπτ * 24 ώρες = 24 ώρες σε λεπτά
(6 μοίρες περιστροφή 6*60=360)

3. Ωροδείκτης
errikos141.JPG (15 μοίρες 15*24=360)



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




Θεωρητικές ασκήσεις:


1)Διαβάστε τις παρακάτω προτάσεις και σημειώστε Σ για την σωστή και Λ για την λάθος πρόταση:
  • Όταν έχουμε εντολή επανάληψης "Για πάντα..." δεν εκτελείται καμία εντολή που βρίσκεται αμέσως μετά από αυτήν
  • Μπορούμε να έχουμε εμφωλευμένη "Για πάντα..." σε μία "Επανέλαβε <...> φορές"
  • Στο παράδειγμα της είκόνας 10.4 μπορούμε να αντικαταστήσουμε την εντολή "Επανέλαβε 5 φορές" με την εντολή "Για πάντα...> και να έχουμε το ίδιο αποτέλεσμα
  • Αν στο παράδειγμα του ανεμόμυλου αλλάξουμε την εντολή "Επανέλαβε 45 φορές" με την "Για πάντα..." ο ήχος θα ακούγεται συνεχώς

2)Αντιστοιχίστε τις εντολές που βρίσκονται στα αριστερά με τα παραδείγματα στα δεξιά:

errikos148.JPG
3)Στις επόμενες εικόνες συμπληρώστε τις εντολές επανάληψης που βλέπετε σε κάθε εικόνα:
errikos144.JPG
4)Περιγράψτε το αποτέλεσμα που θα έχουν τα παρακάτω παραδείγματα κώδικα στον κύριο Γατίδη:

errikos145.JPG
Παράδειγμα 1

errikos146.JPG
Παράδειγμα 2


5) Στην εικόνα 10.15 είδαμε πως μπορούμε με ένα απλό κομμάτι κώδικα να φτιάξουμε ένα τετράγωνο. Τροποποιήστε το παράδειγμα έτσι ώστε το αποτέλεσμα να είναι ένα τρίγωνο. Το είδος του τριγώνου είναι της αρεσκείας σας (σκαλινό, ισοσκελές, ισόπλευρο). Προσέξτε στην περίπτωση που επιλέξετε να κάνετε είτε ισοσκελές είτε ισόπλευρο τρίγωνο στην σωστή τιμή της εντολής "στρίψε <...> μοίρες" έτσι ώστε να είναι σωστό το αποτέλεσμα. Προτείνουμε την δημιουργία και των 3 ειδών για καλύτερη εξάσκηση.

6) Στην εικόνα 10.7 παρακολουθήσαμε την κίνηση της Γης γύρω από τον Ήλιο και στην εικόνα 10.8 τον κώδικα με τον οποίο πετύχαμε αυτό. Γράψτε έναν κώδικα στον οποίο θα δείχνετε και την κίνηση του φεγγαριού γύρω από τη Γη ταυτόχρονα με την κίνηση της Γης γύρω από τον Ήλιο.
Οδηγίες:
  • Κατεβάστε από το διαδίκτυο ένα αντικείμενο φεγγάρι ή δημιουργήστε ένα με τις γνώσεις που αποκτήσατε στα προηγούμενα κεφάλαια και μικρύνετέ το σε ικανοποιητικό μέγεθος έτσι ώστε να μην καλύπτει τα άλλα 2 αντικείμενα
  • Χρησιμοποιήστε σαν υπόδειγμα τον κώδικα της εικόνας 10.8 και προσέξτε στην τοποθέτηση του φεγγαριού σε κατάλληλη θέση για να μην υπάρξουν προβλήματα σαν αυτά που αναφέρθηκαν παραπάνω
  • "Παίξτε" με τις τιμές στα βήματα και στις μοίρες που θα βάλετε για όσο το δυνατόν καλύτερο αποτέλεσμα.



Παραδείγματα Κεφαλαίου


















old_page_10