You are on page 1of 6

Εισαγωγή στον Προγραμματισμό με Python

2η ΥΕ – Μεταβλητές, τελεστές και πράξεις


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

Πριν εξηγήσουμε την έννοια της μεταβλητής, ας δούμε συνοπτικά κάποια στοιχεία για το πώς δουλεύει
ο προσωπικός μας υπολογιστής. Υποθέστε ότι έχετε ανοίξει το laptop σας, το οποίο τρέχει Windows 10
και είστε στην επιφάνεια εργασίας. Κατόπιν, ανοίγετε το σημειωματάριο (notepad) και γράφετε ένα
μικρό κείμενο. Έχετε αναλογιστεί που είναι αποθηκευμένο το κείμενο εκείνη τη στιγμή, δηλαδή όταν το
έχετε μόλις πληκτρολογήσει; Το κείμενό σας, είναι αποθηκευμένο, προσωρινά, στη μνήμη RAM του
υπολογιστή σας. Με άλλα λόγια, η εφαρμογή «σημειωματάριο», εκείνη τη στιγμή έχει ζητήσει από τα
Windows (το λειτουργικό σύστημα) και έχει δεσμεύσει ένα μικρό κομμάτι μνήμης ώστε να αποθηκεύσει
αυτό που γράψατε. Αν επιλέξετε έξοδο από το σημειωματάριο, το πρόγραμμα θα σας ρωτήσει αν
επιθυμείτε να αποθηκεύσετε σε ένα αρχείο το κείμενό σας, δηλαδή να αποθηκεύσετε στο σκληρό δίσκο
αυτό που γράψατε. Αν απαντήσετε αρνητικά, το κείμενο που γράψατε θα χαθεί, δηλαδή εκείνη τη στιγμή
η εφαρμογή «σημειωματάριο» θα τερματιστεί και θα αποδεσμευτεί η μνήμη RAM που είχε δεσμεύσει.
Αυτός είναι ο τρόπος που λειτουργούν όλα τα λογισμικά σε ένα υπολογιστικό σύστημα, κατά την
εκτέλεσή τους δεσμεύουν μνήμη για την προσωρινή αποθήκευση δεδομένων, η οποία αποδεσμεύεται
είτε όταν ορίσει ρητά ο προγραμματιστής είτε με τον τερματισμό του προγράμματος.

Μεταβλητές
Πώς μπορούμε να δεσμεύσουμε ένα κομμάτι της μνήμης RAM σε ένα δικό μας πρόγραμμα σε Python;
Με το να δημιουργήσουμε μία μεταβλητή. Επί της ουσίας, η μεταβλητή είναι ο τρόπος με τον οποίο λέμε
στο λειτουργικό σύστημα ότι χρειαζόμαστε ένα μικρό κομμάτι μνήμης για να αποθηκεύσουμε δεδομένα.
Το λειτουργικό σύστημα, για κάθε τέτοιο μικρό κομμάτι μνήμης έχει αποδώσει αυτόματα έναν αριθμό,
τη διεύθυνση μνήμης, όπως λέμε στον προγραμματισμό. Αν θέλουμε να δώσουμε έναν πιο τυπικό
ορισμό για τη μεταβλητή, μπορούμε να πούμε ότι «μεταβλητή είναι η αφαιρετική αναπαράσταση
διεύθυνσης μνήμης, ή συλλογής διευθύνσεων μνήμης του ηλεκτρονικού υπολογιστή». Ας δούμε ένα
απλό παράδειγμα. Πριν συνεχίσουμε στο παράδειγμα, κάτι διαδικαστικό. Όλα τα παραδείγματα κώδικα
που θα βρείτε στα κείμενα και τις διαφάνειες, έχουν αναρτηθεί και ως αρχεία πηγαίου κώδικα (.py),
δηλαδή απλά αρχεία κειμένου, ώστε να μπορείτε να τα αντιγράψετε και να τα εκτελέσετε στον
υπολογιστή σας.
1 #01-ΘΕ-02-ΥΕ-01 - Παράδειγμα 1
2
3 a = 5
4 b = 8
Στο παραπάνω παράδειγμα, δημιουργούμε δύο μεταβλητές, μία στη γραμμή 3 και μία στη γραμμή 4. Η
γραμμή 1, θυμίζουμε ότι είναι σχόλιο, δηλαδή η Python την αγνοεί. Το πρώτο σημείο που αξίζει να
Εισαγωγή στον Προγραμματισμό με Python

τονίσουμε είναι ότι η Python, όπως και όλες οι γλώσσες προγραμματισμού, μας δίνουν τη δυνατότητα
να «βαφτίζουμε» τις θέσεις μνήμης του υπολογιστή με ένα όνομα. Έτσι, στο παράδειγμα αυτό, οι δύο
μεταβλητές που δημιουργούμε, εμείς έχουμε επιλέξει να είναι οι a και b. Αυτό είναι πολύ σημαντικό
καθώς μας διευκολύνει στο να χειριζόμαστε τα δεδομένα του προγράμματός μας. Ένα δεύτερο σημείο
που πρέπει να σημειώσουμε είναι η χρήση του συμβόλου της ισότητας, του τελεστή = όπως λέμε στον
προγραμματισμό. Στη γλώσσα Python το ίσον είναι ο τελεστής ανάθεσης, δηλαδή το a = 5 σημαίνει
«δέσμευσε μια θέση στη μνήμη του υπολογιστή και στη συνέχεια πήγαινε και αποθήκευσε εκεί τον
ακέραιο αριθμό 5». Αντίστοιχα, με τη γραμμή b = 8, δεσμεύουμε μια δεύτερη θέση μνήμης, την
ονομάζουμε b και παράλληλα αποθηκεύουμε εκεί τον ακέραιο αριθμό 8.

Στο σημείο αυτό, αν και είναι πέρα από τους σκοπούς του μαθήματος, αξίζει να κάνουμε μία πολύ
σύντομη αναφορά στο τι αποθηκεύεται πραγματικά στη μνήμη του υπολογιστή, όταν δημιουργούμε μία
μεταβλητή. Παραπάνω αναφέραμε ότι η δήλωση a = 5, σημαίνει «δέσμευσε μια θέση στη μνήμη του
υπολογιστή και στη συνέχεια πήγαινε και αποθήκευσε τον ακέραιο αριθμό 5». Όπως ίσως γνωρίζετε,
όλες οι υπολογιστικές συσκευές λειτουργούν με βάση το δυαδικό σύστημα, δηλαδή με βάση δύο
ξεχωριστές καταστάσεις. Στη μνήμη RAM κάθε «κύτταρο» μνήμης μπορεί να είναι φορτισμένο με υψηλό
δυναμικό (1) ή χαμηλό δυναμικό (0). Με απλά λόγια, φανταστείτε τη μνήμη RAM σαν μία τεράστια σειρά
από διακόπτες, οι οποίοι μπορούν να είναι αναμμένοι (1) ή σβηστοί (0). Ο ακέραιος αριθμός 5, στο
δυαδικό σύστημα αναπαρίσταται με την αλληλουχία 101, δηλαδή απαιτεί 3 «κύτταρα» μνήμης για την
αποθήκευσή του ή όπως λέμε στην πληροφορική, 3 bit. Αντίστοιχα ο αριθμός 999 αναπαρίσταται με την
αλληλουχία 1111100111, δηλαδή για να αποθηκευτεί στον υπολογιστή απαιτούνται τουλάχιστον 10 bits!
Για να επιστρέψουμε στην Python και χωρίς να μπούμε σε περισσότερες λεπτομέρειες, η Python,
αυτόματα, επιλέγει πόσα bits θα χρησιμοποιήσει για την κάθε μεταβλητή, ενώ, όπως θα αναφέρουμε
στη συνέχεια, δίνει τη δυνατότητα στον προγραμματιστή να «παρέμβει» στα bits της μεταβλητής!

Κλείνοντας τη σύντομη αναφορά στους δυαδικούς αριθμούς, ας επιστρέψουμε στο παραπάνω


παράδειγμα κώδικα. Τι θα δούμε στην οθόνη του υπολογιστή αν εκτελέσουμε τις παραπάνω 4 γραμμές
στο Python IDLE; Αν απαντήσατε «τους αριθμούς 5 και 8» ή κάτι αντίστοιχο, σκεφτείτε πάλι την απάντησή
σας. Η σωστή απάντηση είναι «τίποτα!». Το ότι δεσμεύουμε δύο θέσεις μνήμης στο υπολογιστή και εκεί
αποθηκεύουμε δύο αριθμούς, δε σημαίνει ότι οι αριθμοί αυτοί θα παρουσιαστούν αυτόματα και στην
οθόνη του χρήστη. Αυτό είναι ένα συχνό λάθος των αρχάριων προγραμματιστών. Στον προγραμματισμό
τίποτα δεν είναι αυτονόητο. Από τη στιγμή που δεν έχουμε προγραμματίσει στον κώδικά μας να
εμφανιστεί κάτι στην έξοδο, η Python ή οποιαδήποτε άλλη γλώσσα προγραμματισμού, δε θα πάρει αυτή
την «πρωτοβουλία».

O πιο απλός τρόπος να εμφανίσουμε το περιεχόμενο μιας μεταβλητής στην έξοδο του χρήστη είναι με
την «εντολή» (ή ορθότερα συνάρτηση όπως θα δούμε στη συνέχεια) print().
1 #01-ΘΕ-02-ΥΕ-01 - Παράδειγμα 2
2
3 a = 5
4 b = 8
5
6 print(a)
7 print("Η μεταβλητή b έχει την τιμή", b)
Εισαγωγή στον Προγραμματισμό με Python

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

Όπως βλέπετε, στην περίπτωση αυτή, δηλώνουμε ρητά την έξοδο του προγράμματός μας με τη χρήση
της print(), στις γραμμές 6 και 7. Συγκεκριμένα, στη γραμμή 6, εντός των παρενθέσεων της print έχουμε
απλά το όνομα της μεταβλητής, το a, άρα στην έξοδο θα τυπωθεί το περιεχόμενο της μεταβλητής a. Στη
γραμμή 7, χρησιμοποιούμε πάλι την print, αυτή τη φορά όμως με δύο «παραμέτρους» ή, πιο σωστά,
ορίσματα, όπως λέμε στον προγραμματισμό. Το πρώτο όρισμα είναι η φράση "Η μεταβλητή b έχει την
τιμή" και το δεύτερο όρισμα είναι το b, δηλαδή το όνομα της μεταβλητής που θέλουμε να εμφανίσουμε.
Τα δύο ορίσματα είναι χωρισμένα με κόμμα. Χωρίς να αναφέρουμε περισσότερες λεπτομέρειες αυτή την
εβδομάδα, η print εμφανίζει στην οθόνη ότι υπάρχει ανάμεσα στις παρενθέσεις της. Για τα
παραδείγματα αυτής της εβδομάδας, μας αρκεί να ξέρουμε ότι αυτό που εμφανίζει η print μπορεί να
είναι μια φράση (ένα αλφαριθμητικό όπως λέμε στον προγραμματισμό), τα περιεχόμενα μιας
μεταβλητής ή ο συνδυασμός τους. Στη γραμμή 7, η φράση "Η μεταβλητή b έχει την τιμή" και το b, δεν
έχουν μεταξύ τους κάποιο κενό. Παρόλα αυτά, η προεπιλεγμένη συμπεριφορά της print(), όταν δέχεται
περισσότερα τους ενός ορίσματα, είναι να τα εμφανίζει στην έξοδο χωρισμένα με έναν κενό χαρακτήρα.
Όπως θα δούμε την επόμενη εβδομάδα, αυτό μπορούμε να το αλλάξουμε πολύ εύκολα σε ότι
επιθυμούμε.

Πριν προχωρήσουμε σε άλλα παραδείγματα, να σημειώσουμε ότι υπάρχουν κάποια κανόνες/


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

• Μπορεί να περιέχει αριθμούς και γράμματα και το σύμβολο της κάτω παύλας _
• Παρότι το όνομα μιας μεταβλητής μπορεί να περιέχει αριθμούς, δε μπορεί να ξεκινά με αριθμό
• Στα ονόματα των μεταβλητών οι πεζοί και οι κεφαλαίοι χαρακτήρες δεν αντιμετωπίζονται ενιαία.
Για παράδειγμα η μεταβλητή cost, Cost και COST είναι 3 διαφορετικά ονόματα μεταβλητών. Αυτό
γενικά είναι κάτι σύνηθες στον προγραμματισμό.
• Δεν επιτρέπεται να χρησιμοποιείτε ως ονόματα μεταβλητών συγκεκριμένες λέξεις οι οποίες είναι
δεσμευμένες από την Python για άλλες χρήσεις. Τέτοιες λέξεις, ενδεικτικά, είναι οι for, if, import,
try, while. Σε αυτό το σημείο δεν έχει νόημα να τις αναφέρουμε όλες.

Ας δώσουμε μερικά παραδείγματα με ονόματα μεταβλητών:

• car, test, my_car, _name, name2 (αποδεκτά ονόματα μεταβλητών)


• my car, 2name, my-car (μη αποδεκτά ονόματα μεταβλητών)

Άραγε, είμαστε υποχρεωμένοι για τα ονόματα των μεταβλητών μας να χρησιμοποιούμε λατινικούς
χαρακτήρες; Τυπικά, η απάντηση είναι όχι. H Python υποστηρίζει και μη λατινικούς χαρακτήρες για
ονόματα μεταβλητών, δηλαδή μπορώ να φτιάξω μια μεταβλητή με όνομα Βαθμός_Φοιτητή. Παρόλα
αυτά, είναι κοινή προγραμματιστική τακτική να χρησιμοποιούμε λατινικούς χαρακτήρες για τα ονόματα
των μεταβλητών μας ενώ παράλληλα φροντίζουμε το όνομα της μεταβλητής να είναι αντίστοιχο των
Εισαγωγή στον Προγραμματισμό με Python

δεδομένων που αποθηκεύονται εκεί. Για παράδειγμα, αν υλοποιώ ένα πρόγραμμα το οποίο υπολογίζει
το μέσο όρο των βαθμών των φοιτητών ενός τμήματος, για την αποθήκευση του βαθμού ενός φοιτητή
είναι προτιμότερο να χρησιμοποιήσω μια μεταβλητή με όνομα grade ή vathmos, ασχέτως του ότι έχω τη
δυνατότητα να χρησιμοποιήσω όποιο όνομα θέλω. Κλείνοντας, να σημειώσουμε ότι αν ασχοληθείτε
αρκετά με τον προγραμματισμό, θα δείτε ότι υπάρχουν διάφορες «σχολές» για τον τρόπο γραφής του
πηγαίου κώδικα, δηλαδή για τον τρόπο που δίνουμε ονόματα σε μεταβλητές κλπ. Αν θέλετε να δείτε
περισσότερα γι’ αυτό μπορείτε, ενδεικτικά, να μελετήσετε αυτή την πηγή1.

Κλείνοντας την εισαγωγή για τις μεταβλητές στον προγραμματισμό, ας δούμε ένα ακόμη παράδειγμα.
1 #01-ΘΕ-02-ΥΕ-01 - Παράδειγμα 3
2
3 a = 5
4 a = 12
5
6 print("Η μεταβλητή a έχει την τιμή", a)
Τι θα εμφανίσει ο παραπάνω κώδικας ως έξοδο; Η απάντηση είναι ότι θα εμφανιστεί η φράση:
Η μεταβλητή a έχει την τιμή 12

Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα, ίσως, για κάποιους είναι αυτονόητο. Με το
παράδειγμα αυτό θέλουμε να τονίσουμε ότι η μία μεταβλητή μπορεί, κάθε στιγμή, να έχει μία και μόνο
μία τιμή. Δηλαδή, στο παραπάνω παράδειγμα, στη γραμμή 3 δεσμεύουμε μία θέση μνήμης και
αποθηκεύουμε εκεί τον αριθμό 5. Στην αμέσως επόμενη γραμμή, δίνουμε εντολή στην Python να
αποθηκεύσει, στην ίδια θέση μνήμης, τον αριθμό 12. Στον προγραμματισμό δεν υπάρχει η έννοια της
ιστορικότητας, δηλαδή από τη στιγμή που θα γίνει μία εγγραφή σε μία συγκριμένη θέση μνήμης χάνεται
το οτιδήποτε υπήρχε πριν εκεί. Το συγκεκριμένο είναι ένα ακόμη σημείο που μπορεί να μπερδέψει τους
νέους προγραμματιστές και να οδηγήσει σε λογικά λάθη στον κώδικά τους (θυμηθείτε τις 3 κατηγορίες
σφαλμάτων από την προηγούμενη εβδομάδα).

Τύποι μεταβλητών
Ένας από τους λόγους που η Python θεωρείται ιδανική για κάποιον που θέλει να ξεκινήσει να ασχολείται
με τον προγραμματισμό είναι η ευκολία που χειρίζεται η γλώσσα τους διαφορετικούς τύπους
μεταβλητών. Σε αντίθεση με άλλες γλώσσες προγραμματισμού, η Python αναγνωρίζει αυτόματα το είδος
της πληροφορίας που θέλετε να αποθηκεύσετε σε μια μεταβλητή και ορίζει κατάλληλα τον τύπο της. Ας
δούμε το παρακάτω παράδειγμα.
01 #01-ΘΕ-02-ΥΕ-01 - Παράδειγμα 4
02
03 a = -5
04 b = 12.4
05 c = "Hello World!"
06
07 print (type(a))
08 print (type(b))

1
https://www.python.org/dev/peps/pep-0008/#introduction
Εισαγωγή στον Προγραμματισμό με Python

09 print (type(c))
10
11 print (a,b,c)
Στο παράδειγμα αυτό βλέπουμε τους 3 βασικούς τύπους μεταβλητών στην Python. Στη γραμμή 3
ορίσουμε μία ακέραια μεταβλητή (τύπος int), στη γραμμή 4 μία δεκαδική μεταβλητή (τύπος float) ενώ
στη γραμμή 5 ορίζουμε μια μεταβλητή τύπου συμβολοσειράς (τύπος str). Γενικά, μία συμβολοσειρά
είναι ένα σύνολο από αριθμούς, γράμματα και σύμβολα, πρακτικά το οτιδήποτε μπορούμε να
πληκτρολογήσουμε με το πληκτρολόγιο μας. Ας δούμε όμως και την έξοδο του παραπάνω
προγράμματος.

To νέο στοιχείο εδώ είναι η type(). Με την type() λαμβάνουμε τον τύπο μιας μεταβλητής τον οποίο, στην
ίδια γραμμή, τον εμφανίζουμε στην έξοδο με την print(). Τέλος, με την print της γραμμής 11, εμφανίζουμε
στην έξοδο το περιεχόμενο των 3 μεταβλητών.

Όπως θα δούμε στη συνέχεια, το ότι η Python χειρίζεται αυτόματα τον τύπο των μεταβλητών, θα μας
διευκολύνει ιδιαίτερα όταν, για παράδειγμα, θα χρειαστεί να προσθέσουμε έναν ακέραιο με έναν
δεκαδικό ή να συνενώσουμε έναν ακέραιο με μια συμβολοσειρά. Βέβαια, το ότι η python αναλαμβάνει
αυτόματα αυτές τις μετατροπές, δε σημαίνει ότι μπορεί (και ούτε πρέπει) να χειριστεί κάθε περίπτωση.
Για παράδειγμα, δείτε τον παρακάτω κώδικα.
01 #01-ΘΕ-02-ΥΕ-01 - Παράδειγμα 5
02
03 a = "5"
04 b = int(a)
05 print (type(b))
06 print ("Η μεταβλητή b είναι",b)
07
08 c = "Hello"
09 d = int(c)
10 print (type(d))
11 print ("Η μεταβλητή d είναι",d)
Στη γραμμή 3, ορίζουμε μία μεταβλητή τύπου συμβολοσειράς, στη γραμμή 4 ζητάμε από την Python να
μετατρέψει τη συμβολοσειρά σε ακέραιο και να την αποθηκεύσει στη μεταβλητή b. Αυτό στον
προγραμματισμό ονομάζεται casting και θα μας χρειαστεί αρκετά τις επόμενες εβδομάδες. Κατόπιν, στις
γραμμές 5 και 6, εκτυπώνουμε τον τύπο της μεταβλητής b και το περιεχόμενό της. Στη συνέχεια, στις
γραμμές 8 και 9, ζητάμε από την Python να μετατρέψει σε ακέραιο αριθμό τη συμβολοσειρά “Hello”. Η
Python εμφανίζει το παρακάτω μήνυμα λάθους και τερματίζει την εκτέλεση του προγράμματος. Όπως
θα δούμε τις επόμενες εβδομάδες, αυτό θα μας φανεί χρήσιμο όταν θα χρειαστεί να «φιλτράρουμε» την
είσοδο του χρήστη μας, δηλαδή όταν θα θέλουμε να ελέγχουμε αν ο χρήστης που χρησιμοποιεί το
πρόγραμμά μας απαντά στις ερωτήσεις μας με τον σωστό τύπο δεδομένων.
Εισαγωγή στον Προγραμματισμό με Python

You might also like