Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Logo - Μεταβλητές

Πληροφορική Γ' Γυμνασίου
by

Dimitris Lampaditis

on 22 January 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Logo - Μεταβλητές

κανε
"γωνία
360 / 7
Σε κάθε γλώσσα προγραμματισμού υπάρχει η έννοια του
προγράμματος
, μιας
σειράς δηλαδή από εντολές που ομαδοποιούνται και αποθηκεύονται κάτω από ένα χαρακτηριστικό όνομα
.
Τα προγράμματα της MicroWorld Pro® Logo® ονομάζονται
Διαδικασίες
.
Διαδικασία είναι η ομαδοποίηση και αποθήκευση μιας σειράς εντολών, κάτω απο ένα νέο, χαρακτηριστικό όνομα
Οι Διαδικασίες της Logo «λειτουργούν» σαν
νέες εντολές
η εντολή
ΚΑΝΕ
δημιουργεί
μια νέα Γενική Μεταβλητή και
αποθηκεύει
σε αυτή δεδομένα ή

αλλάζει
το περιεχόμενο μιας ήδη υπάρχουσας Μεταβλητής.
αυτό να το δω...
Πριν από το όνομα της Μεταβλητής μπαίνει πάντα : (άνω-κάτω τελεία).
ΚΑΤ' ΕΞΑΙΡΕΣΗ,
μέσα στην εντολή
ΚΑΝΕ
, όταν δημιουργείται η Μεταβλητή ή αλλάζει το περιεχόμενό της, με την εντολή ΚΑΝΕ,
μπαίνουν " (εισαγωγικά) !!!
η Μεταβλητή «φορτώνεται» με
οποιασδήποτε μορφής όρισμα
(αριθμός, λέξη, πρόταση, Φράση, αποτέλεσμα αριθμητικής πράξης κλπ).
Η εντολή
ΚΑΝΕ
δημιουργεί
Γενικές Μεταβλητές (global variables)
. Η περιοχή της μνήμης RAM που δεσμεύεται για μια Γενική Μεταβλητή παραμένει δεσμευμένη
μέχρι τον τερματισμό του προγράμματος της Logo
και διατηρεί τα περιεχόμενά της
Δημιούργησε
μια Γενική Μεταβλητή με το όνομα

και αποθήκευσε σε αυτή τον αριθμό
1234
.
κανε

1234
και τώρα τι κάνω με τη μεταβλητή;
Τι κάνει το ...
ΚΑΝΕ
μέσα σε Διαδικασία
Δημιούργησε μια νέα Διαδικασία με το όνομα
Δοκιμή1
και παρατήρησε το τι συμβαίνει:
Μέχρι τώρα έχουμε συνηθίσει σε εντολές της μορφής:

Μπροστά

150
,
Δείξε

"Καλημέρα
,
Ανακοίνωση

[Τι κάνεις?]
,
Δεξιά

360 / 5

όπου -εκτός από το
όνομα της εντολής
-
δηλώναμε και το
όρισμα
της (αριθμός, λέξη, πρόταση, αριθμητική πράξη...), «άμεσα», απευθείας από το πληκτρολόγιο
.

Αυτό είχε σαν αποτέλεσμα να μην μπορεί να αλλάξει η τιμή του ορίσματος, εκτός και αν εμείς ξαναπληκτρολογήσουμε μια νέα τιμή (αλλαγή «με το χέρι»).

Εδώ έρχονται να σώσουν την κατάσταση οι...
Mια Μεταβλητή της MicroWorld Pro® Logo® αντιστοιχεί σε μια
περιοχή της μνήμης RAM
, με ένα μοναδικό, χαρακτηριστικό όνομα.
Μόλις γίνει αυτό, οι εντολές της Logo
μπορούν να χρησιμοποιήσουν το περιεχόμενο της συγκεκριμένης Μεταβλητής,
απλώς αντικαθιστώντας το όρισμά τους με το το όνομα της Μεταβλητής
...
Εκεί μπορεί να αποθηκευτεί οποιασδήποτε μορφής
όρισμα ξέρουμε (αριθμός, λέξη, πρόταση, Φράση, αποτέλεσμα αριθμητικής πράξης κλπ)
.
Κάθε Μεταβλητή έχει ένα
μοναδικό όνομα
που πρέπει να είναι
μία μόνο λέξη
. Εαν επιθυμούμε να χρησιμοποιήσουμε περισσότερες

λέξεις, τις ενώνουμε ή χρησιμοποιούμε το σύμβολο «_».
Φυσικά καλό θα ήταν το όνομα που θα επιλέξουμε να θυμίζει το τι περιέχει η συγκεκριμένη Μεταβλητή
Πριν από το όνομα της Μεταβλητής μπαίνει το
σύμβολο :
(άνω-κάτω τελεία) που δηλώνει ότι η λέξη αυτή αντιπροσωπεύει μια Μεταβλητή και όχι το όνομα της Διαδικασίας
(Αν δεν το θυμάσαι, το σύμβολο : βγαίνει με SHIFT+Q)
ΜΕΤΑΒΛΗΤΕΣ
ΜΕΤΑΒΛΗΤΕΣ
Γενικές
Μεταβλητές
Γενικές
Μεταβλητές
Τοπικές
Μεταβλητές
Τοπικές
Μεταβλητές
κάνε
κάνε
"ΟνομαΜεταβλητής
κάνε "ΟνομαΜεταβλητής
ΤιμήΜεταβλητής
Στη συνέχεια εκτύπωσε το περιεχόμενό της στο Κέντρο
Εντολών.
κανε "χ 1234
δείξε

1234
Η ίδια εντολή χρησιμοποιείται και για να
αλλάξει το περιεχόμενο
μιάς Μεταβλητής: Χρησιμοποιώντας την εντολή
ΚΑΝΕ
αποθήκευσε στη Μεταβλητή με το όνομα

την Λέξη
"πέντε
.
κανε

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

πέντε
Μπορώ να «οδηγήσω» οποιαδήποτε εντολή να «διαβάσει» το όρισμα της μέσω μιας μεταβλητής
Μέχρι τώρα, οι τιμές του
ορίσματος ή των ορισμάτων
μιας εντολής
δηλώνονταν άμεσα
.
Χρησιμοποιώντας Μεταβλητές, οι τιμές των ορισμάτων μπορούν να
δηλωθούν «έμμεσα»
, μέσω των Μεταβλητών
Πρόσεξε τα
διπλά εισαγωγικά "
όταν «φορτώνεις» μια μεταβλητή με Λέξη!
Σειρά της Πρότασης τώρα: Χρησιμοποιώντας την εντολή
ΚΑΝΕ
αποθήκευσε στη Μεταβλητή με το όνομα

την Πρόταση
[έξι 7 οκτώ]
.
κανε

[έξι 7 οκτώ]
Στη συνέχεια εκτύπωσε το περιεχόμενό της στο Κέντρο Εντολών.
κανε "χ [έξι 7 οκτώ]
δείξε

έξι 7 οκτώ
Πειραματίσου και με άλλες εντολές:
κανε "γωνία 360 / 7
επαναλαβε 7 [μπροστα 100 δεξια
:γωνία
]
κανε
"χρώμα
"κόκκινο
κανε "χρώμα "κόκκινο
θεσεχρωμα
:χρώμα
Η εντολή
ΘΕΣΕΧΡΩΜΑ
δέχεται σαν όρισμα μια Λέξη
που δηλώνει το επιθυμητό χρώμα. Δοκίμασε να δηλώσεις
το όρισμα έμμεσα, μέσω μιας Μεταβλητής με το όνομα
:χρώμα
.
Πως θα γίνει αυτό;
Σε μια Γενική Μεταβλητή μπορείς να αποθηκεύσεις το
αποτέλεσμα μιας αριθμητικής πράξης
.
Θυμάσαι πόσο χρειάζεται να στρίψει η χελώνα όταν σχεδιάζει ένα επτάγωνο;
Δημιούργησε μια Μεταβλητή με το όνομα
:γωνία
και «φόρτωσε» σ’αυτή την κατάλληλη γωνία, αλλά
σαν αποτέλεσμα αριθμητικής πράξης
.
Στη συνέχεια δοκίμασε σχεδιάσεις το επτάγωνο χρησιμοποιώντας την εντολή
ΔΕΞΙΑ
με όρισμα το όνομα της Μεταβλητής
:γωνία
για
Δοκιμή1
κανε "κείμενο [Αρχική Μορφή]
δειξε :κείμενο
κανε "κείμενο [Τελική Μορφή]
δειξε :κείμενο
τελος
Το πρώτο
κάνε

δημιουργεί την Γενική
Μεταβλητή
:κείμενο
και
την «φορτώνει» με την
Πρόταση
'Αρχική Μορφή'
Εκτέλεσε τη Διαδικασία.
Παρατήρησε τι θα τυπωθεί στο
Κέντρο Εντολών...
Περιέγραψε τι κάνει
το δεύτερο
ΚΑΝΕ
;
Αλλάζει το περιεχόμενο
της μεταβλητής
:κείμενο

(
«φορτώνει»
την Πρόταση

'Τελική Μορφή'
, αυτόματα,
καθως εκτελείται η
Διαδικασία...)
Δοκιμή1
Αρχική Μορφή
Τελική Μορφή
Η εντολή
ΚΑΝΕ
δημιουργεί
Γενικές Μεταβλητές (global variables)
. Η περιοχή της μνήμης RAM που δεσμεύεται για μια Γενική Μεταβλητή παραμένει δεσμευμένη
μέχρι τον τερματισμό του προγράμματος της Logo
και διατηρεί τα περιεχόμενά της
Δοκιμή1
Αρχική Μορφή
Τελική Μορφή
δειξε :κείμενο
Δοκιμή1
Αρχική Μορφή
Τελική Μορφή
δειξε :κείμενο
Τελική Μορφή
Διατηρεί μια Γενική Μεταβλητή το περιεχόμενό της,
μετά τον τερματισμό της Διαδικασίας μέσα στην οποία δημιουργήθηκε
;
Μέσα στη Διαδικασία
Δοκιμή1
δημιούργησες μια μεταβλητή
:κείμενο
και τροποποίησες το περιεχόμενό της...
Τι θα συμβεί αν πληκτρολογήσεις στο
Κέντρο Εντολών

την εντολή
ΔΕΙΞΕ :κείμενο
;
Ακόμα και μέσα από μια Διαδικασία, η εντολή
ΚΑΝΕ
δημιουργεί Γενικές Μεταβλητές,
το περιεχόμενο των οποίων διατηρείται και μετα τό τέλος της Διαδικασίας, μέχρι τον τερματισμό του προγράμματος της Logo
Οι Παραμετρικές Διαδικασίες
Μια Παραμετρική Διαδικασία -κατά την εκτέλεσή της- δημιουργεί και «φορτώνει» με δεδομένα, τουλάχιστον μία
Τοπική Μεταβλητή
.
Υπερ Ισοπλευρο_Τρίγωνο
Γρήγορα ένα παράδειγμα γιατί ζαλίστηκα!!!
Μετρητές
Μεγάλο ενδιαφέρον παρουσιάζει η περίπτωση όπου στη θέση του ορίσματος
ΤιμήΜεταβλητής
της εντολής
KANE
χρησιμοποιείται κάποια
Μαθηματική Πράξη που υπολογίζει τη νέα τιμή της Μεταβλητής σε σχέση με την τρέχουσα.
Η εντολή
ΚANE,
είτε χρησιμοποιείται στο Κέντρο Εντολών είτε μέσα σε μια Διαδικασία,
δημιουργεί και «φορτώνει» μια νέα Γενική Μεταβλητή ή αλλάζει το περιεχόμενο μιας ήδη υπάρχουσας Γενικής Μεταβλητής
.
Μια Παραμετρική Διαδικασία
συντάσσεται όπως ακριβώς και οι απλές Διαδικασίες αλλά με 2 διαφορές
:
Αμέσως μετά το όνομα της Διαδικασίας δηλώνεται το
όνομα της Τοπικής Μεταβλητής
, ορίζοντας με αυτό τον τρόπο ότι η συγκεκριμένη Διαδικασία έχει (μία)
Είσοδο.
για
ΌνομαΔιαδικασίας
εντολή1
....
εντολή_ν
...
τελος
για ΌνομαΔιαδικασίας

:ΌνομαΜεταβλητης
εντολή1
....
εντολή_ν
...
τελος
για ΌνομαΔιαδικασίας

:ΟνομαΜεταβλητης
εντολή1
....
εντολή_ν :ΟνομαΜεταβλητης
...
τελος
Κατά την κλήση της Διαδικασίας,
μετά το όνομα της Διαδικασίας δηλώνεται ΥΠΟΧΡΕΩΤΙΚΑ η τιμή που θα πάρει η (Τοπική) Μεταβλητή Εισόδου
.
Έτσι
το περιεχόμενο της Τοπικής Μεταβλητής «περνάει» στο εσωτερικό της Διαδικασίας
και μπορεί να χρησιμοποιηθεί σαν
όρισμα εντολής
.
ΌνομαΔιαδικασίας
ΤιμήΜεταβλητής
Τροποποίησε τη Διαδικασία Τετράγωνο ώστε να σχεδιάζει
τετράγωνα με μήκος πλευράς που δίνεται μέσω Τοπικής Μεταβλητής με το όνομα :Μήκος
για
ΥπερΤετράγωνο
επαναλαβε 4 [
μπροστα 150
δεξια 360 / 4
]
τελος
για ΥπερΤετράγωνο
:Μήκος
επαναλαβε 4 [
μπροστα 150
δεξια 360 / 4
]
τελος
Αντέγραψε (copy+paste) τη Διαδικασία
Τετράγωνο
και
άλλαξε το όνομά της
σε
ΥπερΤετράγωνο.
BHMA
Πρόσθεσε το
όνομα της Τοπικής Μεταβλητής Εισόδου
(
:Μήκος
) δίπλα στο όνομα της Διαδικασίας
BHMA
Αντικατέστησε το (σταθερό) όρισμα
της εντολής
ΜΠΡΟΣΤΑ
με το όνομα της Τοπικής Μεταβλητής
BHMA
για ΥπερΤετράγωνο
:Μήκος
επαναλαβε 4 [
μπροστα :Μήκος
δεξια 360 / 4
]
τελος
Κάλεσε τη Διαδικασία από το Κέντρο Εντολών
δίνοντας μαζί και την τιμή της Μεταβλητής Εισόδου
(πχ 100,150 και 200px)
BHMA
για
ΥπερΤετράγωνο

:Μήκος
επαναλαβε 4 [
μπροστα
:Μήκος
δεξια 360 / 4
]
τελος
ΥπερΤετράγωνο

100
ΥπερΤετράγωνο

150
ΥπερΤετράγωνο

200
για
ΥπερΙσόπλευρο_Τρίγωνο

:Μήκος
επαναλαβε 3 [
μπροστα
:Μήκος
δεξια 360 / 3
]
τελος
Δημιούργησε μια καινούργια Παραμετρική Διαδικασία με το όνομα
ΥπερΙσόπλευρο_Τρίγωνο
που θα σχεδιάζει ισόπλευρα τρίγωνα με μήκος πλευράς που δίνεται μέσω Τοπικής Μεταβλητής με το όνομα
:Μήκος
ΥπερΙσόπλευρο_Τρίγωνο

100
ΥπερΙσόπλευρο_Τρίγωνο

120
ΥπερΙσόπλευρο_Τρίγωνο

140
Οι Μεταβλητές που χρησιμοποιούνται στις Διαδικασίες είναι
«Τοπικές Μεταβλητές» (local variables)
.
Δημιουργούνται με το ξεκίνημα της Παραμετρικής Διαδικασίας

Η περιοχή της μνήμης RAM που δεσμεύεται για μια Τοπική Μεταβλητή, δεσμεύεται
προσωρινά,
και μόνο για το χρονικό διάστημα που εκτελείται η Παραμετρική Διαδικασία ενώ μετά τον τερματισμό της
σβήνεται. Έτσι το περιεχόμενο της Τοπικής Μεταβλητής χρησιμοποιείται αποκλειστικά και μόνο στο «εσωτερικό» της αντίστοιχης Παραμετρικής Διαδικασίας
τι θα γίνει αν μετά τον τερματισμό της Διαδικασίας
ΥπερΙσόπλευρο_Τρίγωνο
πληκτρολογήσεις στο Κέντρο Εντολών την εντολή
ΔΕΙΞΕ :Μήκος
;
Υπερ Κύκλος
για
ΥπερΚύκλος

:Βήμα
επαναλαβε 360 [
μπροστα
:Βήμα
δεξια 360 / 360
]
τελος
Δημιούργησε μια καινούργια Παραμετρική Διαδικασία με το όνομα
ΥπερΚύκλος
που θα σχεδιάζει
κύκλους,
όπου το όρισμα της εντολής
Μπροστά
θα είναι μια
Τοπική Μεταβλητή
με το όνομα
:Βήμα
ΥπερΚύκλος

1
ΥπερΚύκλος

1.5
ΥπερΚύκλος

2
Στη συνέχεια κάλεσε τη διαδικασία
με τιμές 1, 1.5 και 2 pixels
Πολύγωνο
για
Πολύγωνο
:γωνίες
επαναλαβε
:γωνίες
[
μπροστα 100
δεξια 360 /
:γωνίες
]
τελος
Δημιούργησε μια καινούργια Παραμετρική Διαδικασία με το όνομα
Πολύγωνο
που θα σχεδιάζει
κλειστά κανονικά πολύγωνα
με αριθμό γωνιών που δίνεται μέσω
Τοπικής Μεταβλητής
με το όνομα
:Γωνίες
Πολύγωνο

3
Πολύγωνο

4
Πολύγωνο

5
Στη συνέχεια κάλεσε τη διαδικασία
με τιμές 3, 4, 5 και 6 γωνίες
Τόξο Κύκλου
για
Τόξο_Κύκλου

:Γωνία
επαναλαβε :
Γωνία
[
μπροστα 2
δεξια 360 / 360
]
τελος
Δημιούργησε μια καινούργια Παραμετρική Διαδικασία με το όνομα
Τόξο_Κύκλου
που θα σχεδιάζει
τόξα κύκλου

που θα αντιστοιχούν σε γωνία που δίνεται μέσω Τοπικής Μεταβλητής με το όνομα
:Γωνία
Τόξο_Κύκλου

60
Τόξο_Κύκλου

90
Τι γίνεται όμως αν η εντολή

KANE
πρέπει να «δουλέψει» με μια Τοπική Μεταβλητή;
Αυτό βέβαια μπορεί να γίνει
μόνο μέσα σε μια Διαδικασία
, καθώς η Τοπική Μεταβλητή δεν «ζεί» έξω από αυτή (μετά τον τερματισμό της Δια-
δικασίας σβήνεται).
ΚANE + Τοπική Μεταβλητή = ;
Δημιούργησε μια νέα Διαδικασία με το όνομα
Δοκιμή2
και Τοπική Μεταβλητή
:x
για
Δοκιμή2

:x
δειξε
:x
κανε
"x
[Τελικό Κείμενο]
δειξε
:x
τελος
Δοκιμή2


[Αρχικό Κείμενο]
Αρχικό Κείμενο
Τελικό Κείμενο
για
Δοκιμή2

:x
δειξε
:x
κανε
"x
[Τελικό Κείμενο]
δειξε
:x
τελος
Δοκιμή2 [Αρχικό Κείμενο]
Αρχικό Κείμενο
Τελικό Κείμενο
δειξε
:x
Η μεταβλητή x δεν έχει τιμή
Εκτέλεσέ την με είσοδο την πρόταση
[Αρχικό κείμενο]
και παρατήρησε τι θα «τυπωθεί» στο Κέντρο Εντολών...
Αλλάζει το περιεχόμενο της Τοπικής Μεταβλητής η εντολή
ΚΑΝΕ;
Τι συμβαίνει όμως με την Τοπική Μεταβλητή
:x
;
Παραμένει Τοπική και μετά την επέμβαση της εντολής Κάνε;
Τι θα συμβεί αν πληκτρολογήσεις στο Κέντρο Εντολών την εντολή
ΔΕΙΞΕ :x
;
Η ίδια εφαρμογή μπορεί να υλοποιηθεί χρησιμοποιώντας την Τοπική Μεταβλητή και -φυσικά- Παραμετρική Διαδικασία,
Αν για παράδειγμα, αυξάνω ή μειώνω την τιμή μιας μεταβλητής κατά 1,
σε σχέση με την τρέχουσα τιμή της
, φτιάχνω ένα
μετρητή (counter)
για
ΜετρητήςΑ
κανε "
Ένδειξη1
0
επαναλαβε 10 [
δειξε
:Ένδειξη1
κανε
"Ένδειξη1

:Ένδειξη1 + 1
]
τελος
ΜετρητήςΑ
0
1
.....
9
Δημιούργησε μια νέα Διαδικασία με το όνομα
ΜετρητήςΑ.
Με την εντολή
ΚΑΝΕ
δημιούργησε μια νέα Γενική Μεταβλητή με το όνομα
Ένδειξη1
και αποθηκεύει σε αυτή
τον αριθμό 0
. Στη συνέχεια η εντολή
ΕΠΑΝΑΛΑΒΕ

αύξησε το περιεχόμενο της
κατά 1
και εμφάνισε
το νέο περιεχόμενο στο Κέντρο Εντολών.
Εδώ η δημιουργία της Τοπικής Μεταβλητής με το όνομα
Ένδειξη2
και η αποθήκευση του αριθμού 0 σε αυτήν
γίνεται «εξωτερικά»
κατά την κλήση της Παραμετρικής
Διαδικασίας
ΜετρητήςΒ
, στο Κέντρο
Εντολών.
για
ΜετρητήςΒ


:Ένδειξη2
επαναλαβε 10 [
δειξε
:Ένδειξη2
κανε
"Ένδειξη2

:Ένδειξη2 + 1
]
τελος
ΜετρητήςΒ

0
0
1
.....
9
δειξε
:Ένδειξη1
10
δειξε
:Ένδειξη2
Η μεταβλητή Ένδειξη2 δεν έχει τιμή
Σε τι θα
διαφέρουν οι δύο υλοποιήσεις;

Τι θα συμβεί αν, μετά τον τερματισμό των δύο Διαδικασιών, πληκτρολογήσεις
δειξε :Ένδειξη1
και
δειξε :Ένδειξη2
στο Κέντρο Εντολών;
Full transcript