14.Αναδρομή
Στο μάθημα "Η χελώνα μαθαίνει" είδαμε πώς μπορούμε να διδάξουμε στην χελώνα νέες λέξεις χρησιμοποιώντας την εντολή to. Μπορούμε να διδάξουμε στην χελώνα μια νέα εντολή χρησιμοποιώντας το to ακολουθόμενο από μία παράμετρο, όπως to advance :ΠΑΡΑΜΕΤΡΟΣ fd :ΠΑΡΑΜΕΤΡΟΣ. Η χελώνα θα περιμένει να της δώσουμε μία παράμετρο (τιμή) μετά την εντολή advance. Για παράδειγμα: advance 40.
Διδάξτε τη χελώνα τo advance με μια παράμετρο που ονομάζεται "thesize"
Όπως είδαμε στο προηγούμενο βήμα, μπορούμε να διδάξουμε τη χελώνα να κάνει ενέργειες που την κάνουν να περιμένει παράμετρους (τιμές). Όπως είδαμε σε προηγούμενα μαθήματα, για να διδάξουμε στη χελώνα πώς να σχεδιάσει ένα τετράγωνο πρέπει να πληκτρολογήσουμε τις εντολές: to square repeat 4 [ fd NOYMERO rt 90] end
Διδάξτε τη χελώνα την εντολή square. Κάντε το να περιμένει μια παράμετρο "size". Η παράμετρος "size" θα καθορίσει το μέγεθος του τετραγώνου.
Έχουμε ήδη δημιουργήσει μια νέα εντολή με όνομα square που αναμένει μια παράμετρο. Ας ελέγξουμε ότι λειτουργεί. Μπορείτε να πληκτρολογήσετε την εντολή square 60 ή την εντολή square 80 και ούτω καθεξής.
Γράψτε την εντολη square 100
Όταν μία εντολή καλεί τον εαυτό της, αυτή η διαδικασία ονομάζεται "αναδρομή". Κατά τη χρήση της αναδρομής πρέπει να έχουμε μια προϋπόθεση διακοπής (δεν θέλουμε να έχουμε μία άπειρη επανάληψη) και μια κλήση για μια εντολή με νέες παραμέτρους. Ακούγεται περίπλοκο; Μην ανησυχείτε, θα το ξεπεράσουμε βήμα προς βήμα. Ας διδάξουμε τη χελώνα την εντολή "square" χρησιμοποιώντας την αναδρομή.
Διδάψτε στην χελώνα την εντολή: to square :size if :size > 90 [stop] repeat 4 [ fd :size rt 90] square :size + 20
Ας δούμε πώς λειτουργεί πίσω από τα παρασκήνια όταν χρησιμοποιούμε την εντολή square 40 . Αρχικά καλούμε την εντολή square 40 . Αυτό σημαίνει ότι η παράμετρος :size μέσα στην εντολή square πέρνει τιμή 40. Στη συνέχεια, χρησιμοποιούμε τη συνθήκη if . Αυτό που κάνουμε είναι να ρωτάμε τη χελώνα: Είναι η τιμή :size μεγαλύτερη από 90; Εάν είναι τότε σταμάτα το πρόγραμμα. Εάν δεν είναι, ακολούθησε αυτές τις οδηγίες: σχεδίασε ένα τετράγωνο με την παράμετρο :size . Κάλεσε το τετράγωνο με :size = :size + 20. Τώρα η παράμετρος :size είναι 60. Είναι ακόμα μικρότερη του 90, οπότε θα σχεδιάσεις ένα τετράγωνο με μέγεθος 60 και θα καλέσεις το τετράγωνο :size = :size + 20. Τώρα η παράμετρος :size είναι 80, η οποία είναι ακόμη μικρότερη από 90, οπότε η χελώνα θα σχεδιάσει ένα τετράγωνο με μέγεθος 80 και θα καλέσει σε τετράγωνο με :size =:size + 20. Τώρα το :size είναι 100 μεγαλύτερο του 90, οπότε θα σταματήσεις το πρόγραμμα.
Γράχτε την εντολή square 40
Ας δημιουργήσουμε μια σπειροειδή εντολή για να μάθει η χελώνα. Η σπείρα θα λάβει 1 παράμετρο που ονομάζεται :size . Η κατάσταση διακοπής θα είναι όταν :size > 30 . Με κάθε κλήση θα προχωράμε σύμφωνα με την παράμετρο μεγέθους, fd :size και στη συνέχεια θα στρίψουμε δεξιά 15 βήματα, rt 15 . Η τελική οδηγία θα είναι να καλέσετε μια σπείρα με :size * 1.02