Εισαγωγή στη Γεωμετρία της Χελώνας

Παραδείγματα γραφικών με Logo

Online LOGO

LOGO basic programming

MSW Logo Kits (Complete installation kit for Windows)

Η γλώσσα προγραμματισμού Logo σχεδιάστηκε στα τέλη της δεκαετίας του 60 για εκπαιδευτικούς κυρίως σκοπούς στο MIT από ομάδα ερευνητών στην Τεχνητή Νοημοσύνη, με επικεφαλής τον Seymour Papert.
Η Logo αρχικά περιοριζόταν στην επεξεργασία καταλόγων και λέξεων , γρήγορα όμως επεκτάθηκε και στη δημιουργία γραφικών με τη βοήθεια ενός μικρού ρομπότ που κατευθύνεται από υπολογιστή.

Το ρομπότ αυτό είναι η χελώνα εδάφους της Logo που εκτελεί απλές κινήσεις. Προχωράει μόνο ευθύγραμμα, εμπρός ή πίσω και στρίβει αριστερά ή δεξιά με εντολές που δίνονται από το πληκτρολόγιο.
Το ρομπότ είναι εφοδιασμένο με μολύβι που διαγράφει όταν είναι κατεβασμένο (ακουμπά στο έδαφος) με κατάλληλη εντολή, την κίνηση της χελώνας, ενώ, όταν είναι ανεβασμένο, η χελώνα δεν αφήνει κανένα ίχνος κατά την κίνησή της. Έτσι δημιουργούνται τα γραφικά της χελώνας.
Η εξέλιξη των υπολογιστών επέτρεψε τη δημιουργία πιο εξελιγμένων εκδόσεων της Logo, προσαρμοσμένων στα PC, όπου το ρομπότ-χελώνα αντικαθίσταται από την χελώνα οθόνης.
Η χελώνα οθόνης είναι στην ουσία ο δρομέας γραφικών της Logo που η κίνησή του με κατάλληλες εντολές δημιουργεί εκπληκτικά γραφικά. Εμφανίζεται στην οθόνη με την μορφή μικροσκοπικής χελώνας. Οι εντολές που κινούσαν το ρομπότ-χελώνα, κινούν τώρα τη χελώνα οθόνης. Αυτές είναι οι εντολές γραφικών της Logo.

Βασικές Εντολές της γλώσσας LOGO

fd n (number) μ ή μπροστά n (αριθμός)
bk n (number) π ή πίσω n (αριθμός)
lt n (number) α ή αριστερά n (αριθμός)
rt n (number) δ ή δεξιά n (αριθμός)
cs ή cg σβγ ή σβησεγραφικα
ht κχ ή κρυψεχελωνα
st δχ ή δειξεχελωνα
pd σκ ή στυλοκατω
pu σπ ή στυλοπανω
repeat n (integer) [commands] επαναλαβε ν (ακεραιος) [εντολές]
to name of process για όνομα διαδικασίας
end τελος
home στηναρχη
clean καθαρισε
setxy x1 y1 θεσεχψ x1 y1
make "name value θεσε "ονομα τιμη
ask [turtle-name] [commands]
integer number ακεραιος αριθμος
round number στρογγυλοποιηση αριθμος
wait n (integer) περιμενε ν (ακεραιος)
stop
if συνθηκη ελεγχου [λιστα εντολων]
ifelse συνθηκη ελεγχου [λιστα-1 εντολων] [λιστα-2 εντολων]

 

fd n

Μετακινεί την χελώνα εμπρός (στην κατεύθυνση προς την οποία είναι προσανατολισμένη), κατά n βήματα χελώνας.

Το βήμα χελώνας, είναι μια μικρή απόσταση που εξαρτάται από την ανάλυση της οθόνης του υπολογιστή. Πχ. Σε μια ανάλυση οθόνης 800Χ600, 100 βήματα χελώνας ~ 3.5 cm

Πχ. fd 100

 

bk n

Μετακινεί την χελώνα πίσω (ακριβώς αντίθετα προς την κατεύθυνση στην οποία είναι προσανατολισμένη), κατά n βήματα χελώνας.

Ο προσανατολισμός της χελώνας δεν αλλάζει.

Πχ. bk 60

 

lt n

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

Πχ. lt 120

 

rt n

Στρέφει τη χελώνα δεξιά (κατά τη φορά των δεικτών του ρολογιού) κατά n μοίρες.

Πχ. rt 90

 

cs ή cg

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

 

ht

Κρύβεται η χελώνα (παύει να είναι ορατή), εξακολουθεί όμως να εκτελεί τις οδηγίες που της δίνουμε.

 

st

Κάνει και πάλι ορατή τη χελώνα, που είχε εξαφανιστεί μετά την εντολή ht.

 

pd

Κατεβαίνει το μολύβι της χελώνας και διαγράφεται το ίχνος της κίνησής της.

 

pu

Σηκώνεται το μολύβι της χελώνας, ώστε να μη διαγράφεται η τροχιά της.

 

repeat n [ ]

Με την εντολή αυτή επαναλαμβάνεται n φορές (βρόχος) η εκτέλεση των εντολών που περιλαμβάνονται στις αγκύλες. Οπου n ακέραιος αριθμός.

Πχ.

repeat 50 [fd 2 pu fd 2 pd]

 

to name of process

Κωδική λέξη που δηλώνει την αρχή του ορισμού μιας διαδικασίας.

end

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

Πχ.

to tetragono

repeat 4 [fd 100 rt 90]

end

Η λέξη to ειδοποιεί το σύστημα ότι αυτά που ακολουθούν μέχρι την λέξη end αποτελούν τον ορισμό μιας διαδικασίας. Τα όνομά της πρέπει να είναι λέξη διαφορετική από αυτές που συμπεριλαμβάνονται ήδη στο λεξιλόγιο της Logo αλλά και από αυτές που έχουμε ήδη ορίσει.

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

Πχ.

to skedio

repeat 36 [rt 10 tetragono]

end

 

home

Επαναφέρει τη χελώνα (ή τις χελώνες) στην αρχική τους θέση, με κατεύθυνση προς τα πάνω (κλίση 0).

 

clean

Καθαρίζει από την οθόνη όλα τα γραφικά αφήνοντας τη χελώνα (ή τις χελώνες) στη θέση τους.

 

setxy x1 y1

Μετακινεί την χελώνα στη θέση της οθόνης που έχει συντεταγμένες (x1, y1).

Πχ.

setxy -30 80

 

make "name value

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

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

Πχ. make "a 35 δημιουργεί τη μεταβλητή α, στην οποία δίνει την τιμή 35.

Η έκφραση "τιμή της μεταβλητής a" στη Logo συμβολίζεται με :a

Αν τώρα πληκτρολογήσουμε fd :a η χελώνα προχωρά 35 βήματα μπροστά.

Η εντολή make "a :a+1 έχει ως αποτέλεσμα την αύξηση της τιμής της μεταβλητής a κατά 1.

Μπορούμε να ορίσουμε διαδικασίες με στοιχεία εισόδου (ένα ή περισσότερα) ώστε να τις χρησιμοποιούμε με τις τιμές που εισάγουμε τη στιγμή που τις καλούμε.

Πχ.

to tetragono :x

repeat 4 [fd :x rt 90]

end

Αν πληκτρολογήσουμε tetragono 50 η χελώνα σχηματίζει ένα τετράγωνο με πλευρά 50 βήματα χελώνας.

Αν πληκτρολογήσουμε tetragono 100 η χελώνα σχηματίζει ένα τετράγωνο με πλευρά 100 βήματα χελώνας.

Αν πληκτρολογήσουμε tetragono δε θα σχεδιαστεί κανένα τετράγωνο και θα εμφανιστεί το μήνυμα: tetragono needs more inputs.

Παρατηρούμε ότι δίπλα στο όνομα tetragono της διαδικασίας σημειώνεται η έκφραση "τιμή της μεταβλητής x" δηλ. :x Αυτή η σύνταξη γιατη Logo έχει το νόημα δήλωσης. Δηλώνεται ότι πρόκειται για διαδικασία με ένα στοιχείο εισόδου. Αυτό σημαίνει ότι στον κορμό της διαδικασίας υπάρχει μεταβλητή με το ίδιο όνομα, που η τιμή της εισάγεται κατά τη στιγμή που καλούμε τη διαδικασία. Αυτή η διαδικασία είναι πλέον γενική.Ισχύει για τετράγωνο με οποιοδήποτε μήκος πλευράς. Η μεταβλητή που δηλώνεται στον τίτλο της διαδικασίας, καλείται και παράμετρος.

Η Logo χειρίζεται τις μεταβλητές με δύο τρόπους.Με την εντολή make δεσμεύει μια θέση στη μνήμη του υπολογιστή για τη συγκεκριμένη μεταβλητή.

Η μεταβλητή παραμένει στην μνήμη του υπολογιστή όσο είναι ανοικτός.

Όταν όμως έχουμε παράμετρο σε μία διαδικασία, δε συμβαίνει το ίδιο.

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

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

Γι' αυτό λέμε ότι πρόκειται για μια τοπική μεταβλητή (local variable), σε αντιδιαστολή με τη μεταβλητή που δημιουργείται με την εντολή make (σφαιρική μεταβλητή, global variable).

 

ask [turtle-name] [commands]

Προσδιορίζει ποια χελώνα αφορά η λίστα εντολών.

Πχ. η ask [lor] [fd 30] κατευθύνει την χελώνα lor να εκτελέσει την εντολή fd 30.

 

integer number

Δίνει εξαγόμενο το ακέραιο μέρος του αριθμού που ακολουθεί.

 

round number

Δίνει εξαγόμενο τον πλησιέστερο ακέραιο (στρογγυλοποιεί τον αριθμό).

 

wait n (integer)

Η εκτέλεση της εντολής αυτής προκαλεί μια απασχόληση του υπολογιστή για n χρονικές μονάδες, χωρίς κανένα εμφανές αποτέλεσμα. Έτσι, η εντολή αυτή μέσα σε ένα πρόγραμμα προκαλεί μια παύση στην εκτέλεσή του, για n/20 του δευτερολέπτου περίπου.

Πχ. wait 10 σημαίνει παύση για μισό περίπου δευτερόλεπτο και μετά συνεχίζεται η εκτέλεση.

 

stop

Χρησιμοποιείται μόνο στο εσωτερικό μιας διαδικασίας και προκαλεί τη διακοπή της εκτέλεσης. Αν αυτό συμβεί στο εσωτερικό μιας υπο-διαδικασίας (διαδικασίας που καλείται μέσα από κάποια άλλη), τότε η ροή εκτέλεσης συνεχίζεται στην κύρια διαδικασία αμέσως μετά από το σημείο απ' όπου έχει κληθεί αυτή που διακόπηκε.

 

if συνθηκη ελεγχου [λιστα εντολων]

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

Πχ.

to spiral :size :angle

if :size > 100 [stop]

fd :size

rt :angle

spiral :size+2 :angle

end

ifelse συνθηκη ελεγχου [λιστα-1 εντολων] [λιστα-2 εντολων]

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


Αρχική σελίδα