ΚΕΦ2: Μεταβλητές

Μεταβλητές

Τι είναι η μεταβλητές;

Σε τι μας χρειάζονται;

Σύµφωνα µε τα σενάρια στην σελίδα Δομή ΕπανάληψηςΚανονικά Πολύγωνα, όταν θέλουµε να δηµιουργούµε τετράγωνα µε διαφορετικό µήκος πλευράς, πρέπει να επεµβαίνουµε κάθε φορά στην εντολή κινήσου βήματα και να αλλάζουµε το µήκος της πλευράς.

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

Δραστηριότητα1
(Στόχος: αναγκαιότητα της μεταβλητής, μεταβολή του περιεχομένου της μεταβλητής κατά την διάρκεια της εκτέλεσης ενός προγράμματος).
Παρατηρήστε το παρακάτω σενάριο

Όταν πατηθεί η πράσινη σημαία
Καθάρισε
Πήγαινε στο χ:0, ψ:0
Δείξε στην κατεύθυνση 90
Κατέβασε πένα
Επανάλαβε 4
Κινήσου 100 βήματα
Στρίψε δεξιά 90
Τέλος_επανάληψης
Ποιο είναι το αποτέλεσμα της εκτέλεσης των εντολών του σεναρίου;

Υλοποιήστε σε scratch.

Αν θέλετε να σχεδιάσετε τετράγωνα διαφορετικού μήκους πλευράς τι θα κάνετε; Μπορούμε να χρησιμοποιήσουμε το ίδιο σενάριο για να σχεδιάσουμε τετράγωνα διαφορετικών πλευρών;
Κάντε κλικ στον χαρακτήρα της γάτας και εισάγετε τον παραπάνω κώδικα. Στην συνέχεια στην παλέτα μεταβλητές πατήστε δημιουργήστε μία μεταβλητή και δώστε το όνομα μήκος. Αντικαταστήστε την εντολή κινήσου 100 βήματα με την εντολή κινήσου μήκος βήματα. Παρατηρήστε πως στην περιοχή σχεδίασης έχει εμφανιστεί ένα κουμπί με το όνομα μήκος, αν κάνετε διπλό κλικ πάνω του θα εμφανιστεί μία μπάρα κύλισης. Μεταβάλλοντας τη μπάρα κύλισης σχεδιάστε μεταβλητά τετράγωνα μήκους 20, 40, 60, 80, 100, 120.
Τι είναι λοιπόν το μήκος;
……..
Το μήκος είναι ένα μέγεθος που μεταβάλλεται κατά την διάρκεια εκτέλεσης ενός προγράμματος και μου επιτρέπει να σχεδιάζω τετράγωνα διαφορετικού μήκους. Είναι μία μεταβλητή. Στον προγ/μό μία μεταβλητή είναι μία θέση μνήμης που έχει ένα όνομα και περιεχόμενο, μία τιμή. Την μεταβλητή σε ένα προγραμματιστικό περιβάλλον την ορίζουμε εμείς και το όνομα της μεταβλητής το δίνουμε εμείς και το περιεχόμενο επίσης το δίνουμε εμείς και μπορούμε να το δούμε και να το τροποποιήσουμε κατά την διάρκεια εκτέλεσης του προγράμματος. Τις μεταβλητές τις χρησιμοποιούμε για να αποθηκεύουμε τιμές τις οποίες μπορούμε να τις χρησιμοποιήσουμε αργότερα.

Οι μεταβλητές είναι ονόματα που παίρνουν τιμές μέσα σε ένα πρόγραμμα. Μία μεταβλητή μας επιτρέπει να συνδέσουμε μία τιμή σε ένα όνομα και να χρησιμοποιείται η τιμή αυτή για την επίλυση ενός προβλήματος. Όταν χρησιμοποιούμε το όνομα της μεταβλητής, χρησιμοποιούμε την τιμή που συνδέεται με αυτό.

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

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

Πότε και ποιός αντιστοιχεί μία μεταβλητή με μία θέση μνήμης;

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

Γιατί χρειαζόμαστε μεταβλητές στον προγραμματισμό;
Οι μεταβλητές στον προγραμματισμό χρησιμοποιούνται για την αποθήκευση τιμών, ώστε να μπορούν να χρησιμοποιηθούν αργότερα.

Ποια είναι η προέλευση του ονόματος μεταβλητή και πως συνδέεται με τον ρόλο της;

Στα αγγλικά η μεταβλητή ονομάζεται variable. Το var στη λέξη variable προέρχεται από την λατινική γλώσσα και σημαίνει αλλαγή. Η τιμή μιας μεταβλητής μπορεί να αλλάζει κατά την διάρκεια εκτέλεσης ενός προγράμματος. Μιας και η μεταβλητή αναφέρεται σε μία θέση μνήμης, μπορεί να παίρνει μόνο μία τιμή κάθε φορά γιατί σε μία θέση μνήμης μπορούμε να εκχωρήσουμε μόνο μία τιμή κάθε φορά την οποία μπορούμε να την αλλάζουμε με μία άλλη τιμή κατά την διάρκεια εκτέλεσης ενός προγράμματος όταν είναι απαραίτητο.
Όταν αντικαταστήσουμε την τιμή μιας μεταβλητής με μία άλλη τιμή, τότε η προηγούμενη τιμή που είχε ήδη αποθηκευτεί χάνεται και δε μπορούμε να την χρησιμοποιήσουμε ξανά. Σε ένα πρόγραμμα μπορούμε να ορίσουμε τόσες μεταβλητές, όσες είναι απαραίτητες για την ορθή διαχείριση των δεδομένων μας. Η τρέχουσα τιμή μιας μεταβλητής, μπορεί να διαβαστεί και να χρησιμοποιηθεί.

Δραστηριότητα2
(Στόχος: κάθε μεταβλητή κρατάει μόνο μία τιμή, αν καταχωρήσουμε κάποια άλλη τιμή η προηγούμενη χάνεται) λόγω της ακολουθιακής εκτέλεσης των εντολών του προγράμματος. Δυναμική τροποποίηση της τιμής της μεταβλητής κατά την εκτέλεση ενός προγράμματος. Διαδοχική φύση της εντολής.
Μελετήστε και υλοποιήστε σε scratch τον παρακάτω κώδικα. Να αναφέρετε και να εξηγήσετε την λειτουργία του. (χιονοστιβάδα)

Όταν πατηθεί η πράσινη σημαία
Όρισε το α σε 5
Όρισε το β σε 3
Όρισε το γ σε α+β
Πες γ για 5 δευτερόλεπτα

Ας προσθέσουμε άλλη μία πράξη
Όταν πατηθεί η πράσινη σημαία
Όρισε το α σε 5
Όρισε το β σε 3
Όρισε το γ σε α+β
Πες γ για 5 δευτερόλεπτα
Όρισε το γ σε α-β
Πες γ για 5 δευτερόλεπτα
Ας δούμε την τιμή της μεταβλητής γ. Ποια ήταν η τιμή της γ στο πρώτο σενάριο και ποια στο δεύτερο; Πως το εξηγείτε;
Αρχικά η γ παίρνει την τιμή 8 και μετά την τιμή 2. Γιατί;

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

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

Τώρα θα δούμε πως ορίζουμε και διαχειριζόμαστε τις δικές μας μεταβλητές.

variables2.jpg

Απόδοση τιμών σε μεταβλητές
α)μέσα από το πρόγραμμα
όρισε <μεταβλητή> στο <τιμή>
παραδείγματα
όρισε βάση στο 100 (απευθείας απόδοση τιμής)
όρισε εμβαδό στο (βάση*ύψος)/2 (έμμεσα μέσω παράστασης με τελεστές)
Η εντολή όρισε είναι μία εντολή εκχώρησης τιμής ή αλλιώς ανάθεσης τιμής.
Η εντολή εκχώρησης μπορεί να μεταφραστεί ως εξής:
Υπολόγισε την τιμή της έκφρασης δεξιά από το στο και βάλε το αποτέλεσμα στη μεταβλητή που βρίσκεται αριστερά από το στο (την ανάθεση τιμής).
Στο δεξί μέρος του στο μπορεί να βρίσκεται οτιδήποτε έχει τιμή, ενώ στο αριστερό μία μόνο μεταβλητή συμβατού τύπου δεδομένων με την έκφραση.
Μία εντολή εκχώρησης σε καμία περίπτωση δεν πρέπει να εκλαμβάνεται ως εξίσωση. Στην εξίσωση το σριστερό μέρος ισούται με το δεξιό, ενώ στην εκχώρηση η τιμή του δεξιού μέλους εκχωρείται, μεταβιβάζεται, αποδίδεται στη μεταβλητή του ασριστερού μέλους. Για τον λόγο αυτό ώς σύμβολο της εκχώρησης, χρησιμοποιείται διαφορετικό σύμβολο, έκφραση από το ίσον =.
Αυτό γίνεται εμφανές και με το επόμενο παράδειγμα το οποίο αναλύεται περισσότερο παρακάτω.

Παράδειγμα

 

Εντολή

Μνήμη

Οθόνη

χ

ψ

χ

ψ

όρισε το ψ σε 0

0

0

όρισε το χ σε ψ

0

0

0

0

άλλαξε ψ κατά 2

0

2

0

2

Δραστηριότητα 3

Η εντολή εκχώρησης τιμής σε μεταβλητή δεν είναι ισότητα.

Όταν πατηθεί η πράσινη σημαία

Όρισε το χ σε 2

Όρισε το χ σε χ+2

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

Υλοποιήστε το παραπάνω σενάριο σε scratch και εκτελέστε το βηματικά. Τι παρατηρείτε;

Στον προγ/μό η έκφραση όρισε το χ σε χ+2, δεν είναι λανθασμένη (παρ’ ότι φαίνεται παράξενη), δεν πρόκειται για ισότητα. Στα μαθηματικά κάτι τέτοιο θα ήταν λάθος. Αυτό που γίνεται στον προγ/μό υπολογίζεται η τιμή της μαθηματικής έκφρασης βάσει της προηγούμενης τιμής του χ και στην συνέχεια υπολογίζει την υπολογισμένη τιμή στο χ.

Δραστηριότητα 5

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

Για παράδειγμα
Όρισε το ζώο σε λιοντάρι
Πες ζώο

Εντολή άλλαξε

άλλαξε <μεταβλητή> κατά <τιμή>
παραδείγματα
άλλαξε χ κατά 1 (άμεσα)
άλλαξε χ κατά 2*χ (έμμεσα μέσω παράστασης με τελεστές)

απόδοση τυχαίας τιμής σε μεταβλητή

όρισε α στο τυχαία επιλογή από 1 μέχρι 6

β)από τον χρήστη
β1)Μπορούμε μέσω διαλόγου, να ζητήσουμε από τον χρήστη να δώσει τιμή σε μία μεταβλητή.
Η εντολή που χρησιμοποιούμε είναι η ρώτησε «μύνημα» και περίμενε.
Ότι δώσει ο χρήστης αποθηκεύεται στη μεταβλητή συστήματος απάντηση.
Στη συνέχεια ορίζουμε ως τιμή της μεταβλητής την τιμή που είναι αποθηκευμένη στο απάντηση.
όρισε μεταβλητή στο απάντηση
β2)με την γραμμή κύλισης

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

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

Παράδειγμα

Εντολή

Μνήμη

Οθόνη

χ

ψ

χ

ψ

όρισε το ψ σε 0

0

0

όρισε το χ σε ψ

0

0

0

0

άλλαξε ψ κατά 2

0

2

0

2

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

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

Είναι πολύ ενδιαφέρον ότι μπορούμε να χρησιμοποιήσουμε σε μία έκφραση την ίδια μεταβλητή στην οποία αναθέτουμε την τιμή!

Παράδειγμα

όρισε το χ σε 0

όρισε το χ σε χ+2

στο τέλος του σεναρίου το χ θα πάρει την τιμή 2.

Στον προγραμματισμό η έκφραση όρισε το χ σε χ+2, δεν είναι λανθασμένη (παρ’ ότι φαίνεται παράξενη), καθώς υπολογίζει πρώτα την τιμή της μαθηματικής έκφρασης βάσει τηε προηγούμενης τιμής του χ και στη συνέχεια αναθέτει τη νέα υπολογισμένη τιμή στο χ.

Μάθημα1 Μεταβλητές
Θεωρία
Παρακολουθείστε το παρακάτω βίντεο
https://vimeo.com/20399559
https://vimeo.com/20399845
http://www.youtube.com/watch?v=nkvm9g3rqGI
Μεταβλητές και Λίστες

Χρήση μεταβλητών στο scratch
http://ebooks.edu.gr/modules/ebook/show.php/DSB102/536/3539,14539/extras/presentations/kef1_2_variables/Kef1_2_variables.htm

Άσκηση1

 

 

 

Άσκηση2

Μάθημα2 Μεταβλητές

Φύλλο Εργασίας Μεταβλητές

Φύλλο Εργασίας2 Μεταβλητές

variables.gif

Να σκεφτείτε τις ομοιότητες και τις διαφορές των παραπάνω δύο προγραμμάτων και να γράψετε την απάντησή σας εδώ.
Με ποιό τρόπο θα μπορούσε να γενικευτεί το 2ο πρόγραμμα ώστε να σχεδιάζει 4 τετράγωνα σε διάφορα σημεία της οθόνης;

Άσκηση υπολογισμού εμβαδού
Να γραφεί πρόγραμμα το οποίο θα δέχεται σαν δεδομένα την βάση και το ύψος ενός τριγώνου και θα υπολογίζει και θα εμφανίζει το εμβαδόν του.
απάντηση
Θα χρειαστούμε δύο δεδομένα εισόδου για τη βάση και το ύψος του τριγώνου, τα οποία θα τα αντιστοιχίσουμε στις μεταβλητές βάση και ύψος.
Το πρόγραμμα αυτό μας ζητάει να υπολογίσουμε το εμβαδόν του τριγώνου γι’ αυτό θα χρειαστούμε ακόμα μία μεταβλητή στην οποία θα αντιστοιχίσουμε το εμβαδόν.

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

Ο κώδικας του προγράμματος αυτού έχει ως εξής:
εμβαδόν βάση, ύψος
είσοδος τιμών στις μεταβλητές
ρώτησε πόση είναι η βάση και περίμενε
όρισε βάση στο απάντηση
ρώτησε πόσο είναι το ύψος και περίμενε
όρισε ύψος στο απάντηση
υπολογισμός αποτελεσμάτων
όρισε εμβαδόν στο (βάση*ύψος)/2
εμφάνιση αποτελεσμάτων — έξοδος
πες (ένωσε («το εμβαδόν του τριγώνου είναι:» εμβαδόν))
τέλος_εμβαδόν

  • Μπορείς να τροποποιήσεις το παραπάνω πρόγραμμα ώστε να υπολογίζει το εμβαδόν ενός ορθογωνίου παραλληλογράμμου από τα μήκη των πλευρών του;
  • Θα μπορούσα να εργαστώ στο παραπάνω πρόβλημα χωρίς τις μεταβλητές βάση και ύψος, κάνοντας χρήση μόνο της μεταβλητής απάντηση; Δικαιολογείστε την απάντησή σας.
  • Γιατί χρειαζόμαστε τις μεταβλητές βάση και ύψος;
  • Είναι απαραίτητη η χρήση της μεταβλητής εμβαδόν;

 

Ανάλογα προβλήματα είναι η λύση της πρωτοβάθμιας εξισωσης αχ+β=0 και η λύση της δευτεροβάθμιας εξίσωσης:
αχ2+βχ+γ=0, τις οποίες θα δούμε αργότερα.

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

Άσκηση όπου η τιμή της μεταβλητής αλλάζει μέσα στο πρόγραμμα

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

όρισε το α στο αρχική τιμή
επανάλαβε…..
άλλες εντολές επανάληψης
άλλαξε α κατά βήμα
τέλος_επανάληψης

παράδειγμα
όρισε το α σε 1 —– αρχικοποίηση της μεταβλητής
επανάλαβε 10
πες α για 1 δευτερόλεπτο
περίμενε 0,5 δευτερόλεπτα
άλλαξε α κατά 1
τέλος_επανάληψης

  • Μπορείς να εξηγήσεις τι κάνει ο παραπάνω κώδικας και ποιό αποτέλεσμα θα εμφανιστεί μετά την εκτέλεσή του;
  • Άλλαξε τον παραπάνω κώδικα ώστε να εμφανίζονται μόνο οι άρτιοι αριθμοί από το 1 ως το 20.

-ΚΑΙ-ΠΡΑΞΕΙΣ.gif

vasso_servou

Σχολιάστε

Ο ιστότοπος χρησιμοποιεί το Akismet για την εξάλειψη των ανεπιθύμητων σχολίων. Μάθετε πως επεξεργάζονται τα δεδομένα των σχολίων σας.