Python για όλους

ΠΡΟΛΟΓΟΣ Ένα βιβλίο που απευθύνεται σε όλους όσους θέλουν να μάθουν στοιχεία προγραμματισμού, ανεξαρτήτως ηλικίας, θα πρέπει να μπορεί να απαντάει με απλό και κατανοητό τρόπο σε ορισμένες απλές ερωτήσεις. Αρχικά πρέπει να εξηγήσει στον αναγνώστη τι σημαίνει γράφω κώδικα. Επίσης, πρέπει να καταδείξει στον αναγνώστη ότι αξίζει να μάθει προγραμματισμό. Ακόμη θα πρέπει να εξηγήσει ποιο είναι το καλύτερο εργαλείο για αυτό τον σκοπό αλλά και γιατί είναι το καλύτερο εργαλείο για τη διδασκαλία προγραμματισμού. Επιπλέον, θα πρέπει να κάνει κάποιες υποθέσεις για το επίπεδο των αναγνωστών. Το βιβλίο αυτό ξεκίνησε ως μια προσπάθεια να γραφτεί ένα εκπαιδευτικό σύγγραμμα εισαγωγής στον προγραμματισμό κατάλληλο για μαθητές Γυμνασίου. Έτσι, το μεγαλύτερο μέρος του βιβλίου έχει ήδη δοκιμαστεί σε τάξεις Γυμνασίου με πολύ καλά αποτελέσματα. Επειδή απευθυνόταν σε αναγνώστες που απλά είχαν μια εξοικείωση με τη χρήση υπολογιστή, έγινε η βάσιμη υπόθεση ότι αναγνώστης δεν γνωρίζει απολύτως τίποτα από προγραμματισμό (η γνώση προγραμματισμού σε Logo ή σε παρόμοια συστήματα προφανώς δεν θεωρείται γνώση προγραμματισμού). Έτσι, τούτο το βιβλίο μπορεί να χρησιμοποιηθεί και από μαθητές Λυκείου αλλά και από οποιονδήποτε θέλει να μάθει προγραμματισμό. Η γλώσσα που χρησιμοποιήθηκε ως διδακτικό εργαλείο είναι η Python και αυτό για δύο λόγους. Αρχικά επειδή είναι γεγονός ότι είναι μια δημοφιλής γλώσσα προγραμματισμού με πάρα πολλούς χρήστες και αυτό επειδή είναι σχετικά απλή και εύκολη στην εκμάθηση. Δεύτερον, επειδή είναι μια γλώσσα που χρησιμοποιείται από επαγγελματίες προγραμματιστές. Πρακτικά, αυτό σημαίνει ότι είναι ένα δοκιμασμένο και χρήσιμο εργαλείο και όχι μια «εφεύρεση» σχεδιασμένη ειδικά για παιδιά και αρχαρίους… Το βιβλίο αποτελείται από εννέα κεφάλαια. Το πρώτο κεφάλαιο εισάγει τον αναγνώστη γενικά στην έννοια του προγραμματισμού, ενώ παρουσιάζει την έννοια της γλώσσας προγραμματισμού αλλά και μια σύντομη ιστορική ανασκόπηση της Python.

viii Πρόλογος Στο δεύτερο κεφάλαιο παρουσιάζονται οι απλές τιμές της γλώσσας (αριθμοί, λογικές τιμές και συμβολοσειρές), οι πράξεις μεταξύ τους, οι μεταβλητές και η εντολή ανάθεσης. Στη συνέχεια παρουσιάζεται η λειτουργίαprintκαι το κεφάλαιο ολοκληρώνεται με την παρουσίαση των δυαδικών, των οκταδικών και των δεκαεξαδικών αριθμών. Οι εντολές ελέγχου είναι το αντικείμενο του τρίτου κεφαλαίου. Πιο συγκεκριμένα παρουσιάζεται η εντολήifκαι η σχετικά νέα εντολήmatch. Επίσης, γίνεται αναφορά στη χρήση της λειτουργίαςinput, αλλά και των εξαιρέσεων, και της εντολής try. Στο τέταρτο κεφάλαιο παρουσιάζονται οι εντολές επανάληψης, δηλαδή η εντολή whileκαι η for. Επίσης, παρουσιάζονται οι αριθμοί Fibonacci και ο τρόπος υπολογισμού τους, καθώς και οι ναρκισσιστικοί αριθμοί. Ακόμη, παρουσιάζεται η χρήση των λειτουργιών chr και ord, ενώ παράλληλα παρουσιάζεται και το πρότυπο Unicode. Το κεφάλαιο ολοκληρώνεται με την παρουσίαση των εντολώνbreak, continueκαι pass. Οι σύνθετες τιμές αποτελούν το αντικείμενο του πέμπτου κεφαλαίου, στο οποίο παρουσιάζονται οι πλειάδες, οι λίστες, τα λεξικά και τα σύνολα. Ακόμη, ολοκληρώνεται η παρουσίαση των συμβολοσειρών. Επιπλέον, παρουσιάζονται οι τρόποι δημιουργίας των σύνθετων τιμών, οι τρόποι διαχείρισής τους αλλά και ο τρόπος καταστροφής τους. Τέλος, παρουσιάζονται κάποια πολύ ενδιαφέροντα προβλήματα και τρόποι επίλυσής τους. Στο έκτο κεφάλαιο παρουσιάζεται ο τρόπος δημιουργίας νέων λειτουργιών, οι διάφοροι τύποι ορισμάτων, οι ανώνυμες λειτουργίες και οι αναδρομικές λειτουργίες. Ως μια ενδιαφέρουσα εφαρμογή, παρουσιάζεται το πρόβλημα των πύργων του Ανόι καθώς και ένας τρόπος επίλυσής του. Το έβδομο κεφάλαιο αποτελεί μια πολύ σύντομη εισαγωγή στον αντικειμενοστρεφή προγραμματισμό. Παρουσιάζονται η έννοια της κλάσης και του αντικειμένου, ο τρόπος δημιουργίας αντικειμένων, η κληρονομικότητα, οι επαναλήπτες και η έννοια του πολυμορφισμού. Επειδή πλέον η δημιουργία γραφικών είναι ένα πολύ ενδιαφέρον θέμα, το όγδοο κεφάλαιο παρουσιάζει τους τρόπους δημιουργίας γραφικών αλλά και τους τρόπους δημιουργίας εφαρμογών με γραφική διεπαφή. Ακόμη, παρουσιάζονται τα λεγόμενα γραφικά χελώνας αλλά και η δημιουργία απλών φράκταλ. Στη συνέχεια εξηγείται πώς μπορούμε να δημιουργήσουμε «κινούμενα σχέδια» (animation) με την Python αλλά και πώς μπορούμε να δημιουργήσουμε απλά αρχεία γραφικών. Το ένατο κεφάλαιο είναι πολύ σύντομο και παρουσιάζει έναν τρόπο δημιουργίας μουσικού αρχείου, ενώ στη συνέχεια γίνεται μια σύντομη παρουσίαση δύο εργαλείων δημιουργίας μουσικών συνθέσεων τα οποία χρησιμοποιούν την Python.

Πρόλογος ix Στο τέλος κάθε κεφαλαίου, εκτός του τελευταίου, υπάρχει ένας μικρός αριθμός ασκήσεων. Αυτές βοηθούν στην εμπέδωση του υλικού του κεφαλαίου. Φυσικά, αν κάποιος χρησιμοποιήσει το παρόν βιβλίο ως διδακτικό σύγγραμμα, μπορεί εύκολα να δημιουργήσει παρόμοιες ασκήσεις. Ένα βιβλίο γράφεται από έναν ή μερικούς συγγραφείς αλλά σχεδόν πάντα υπάρχουν πολλοί άνθρωποι που βοηθούν στη δημιουργία του. Έτσι, νοιώθω την ανάγκη να ευχαριστήσω τους μαθητές μου στο 2ο Γυμνάσιο Ξάνθης στους οποίους δοκίμασα το βιβλίο. Ειδικότερα ευχαριστώ τους μαθητές Χρήστο Μπάκο και Θωμαΐς Χριστίνα Οικονόμου που διάβασαν ένα προσχέδιο του βιβλίου και με διαβεβαίωσαν πως το κείμενο είναι κατανοητό και εύκολο στην ανάγνωση. Ευχαριστώ την κ. Μαίρη Ιωαννίδου για τα υπέροχα σχέδια που κοσμούν την αρχή του κάθε κεφαλαίου. Τον κ. Ιωάννη Κοντοβό που επιμελήθηκε τα σχέδια που κοσμούν τις σελίδες τίτλου του βιβλίου και τον κ. Αναστάσιο Δήμου που όχι μόνο διάβασε ένα προσχέδιο του βιβλίου και μου έκανε αρκετές και εύστοχες παρατηρήσεις αλλά είχε και ουσιαστική συμμετοχή στο τελικό στάδιο παραγωγής του βιβλίου. Τέλος, ευχαριστώ τον κ. Ιωάννη Φαλδαμή των Εκδόσεων Κλειδάριθμος που πίστεψε στην ιδέα δημιουργίας αυτού του βιβλίου και μου έδωσε την ευκαιρία να την υλοποιήσω. Απόστολος Συρόπουλος Ξάνθη, Δεκέμβριος 2024

ΠΕΡΙΕΧΟΜΕΝΑ 1 Τι σημαίνει «προγραμματίζω»; 1 1.1 Γενικά για τον προγραμματισμό . . . . . . . . . . . . . . . . . 1 1.2 Γλώσσες προγραμματισμού . . . . . . . . . . . . . . . . . . . 3 1.3 ΗγλώσσαPython......................... 4 Ερωτήσειςκαιπροβλήματα....................... 7 2 Τιμές και μεταβλητές 9 2.1 Τιμέςκαιταείδητους....................... 9 2.2 Πράξειςμεταξύτιμών....................... 11 2.3 Μεταβλητές ............................ 17 2.4 Η λειτουργίαprint ....................... 20 2.5 Περισσότερα για τους ακέραιους αριθμούς . . . . . . . . . . . 22 Ερωτήσειςκαιπροβλήματα....................... 25 3 Εντολές ελέγχου 27 3.1 Τιείναιοιεντολέςελέγχου; . . . . . . . . . . . . . . . . . . . 27 3.2 Η απλή μορφή της εντολής if.................. 28 3.3 Η εντολήif–else ........................ 31 3.4 Η εντολήif–elif ........................ 35 3.5 Η λειτουργίαinput ....................... 36 3.6 Εύρεση του μεγαλύτερου τριών αριθμών . . . . . . . . . . . . 41 3.7 Η εντολήmatch ......................... 43 Ερωτήσειςκαιπροβλήματα....................... 47 4 Εντολές επανάληψης 49 4.1 Η εντολήwhile ......................... 49

xii Περιεχόμενα 4.2 ΟιαριθμοίFibonacci ....................... 52 4.2.1 Αριθμοί Virahān . ka.................... 55 4.3 Ναρκισσιστικοίαριθμοί ..................... 56 4.4 Η εντολήfor ........................... 58 4.5 Οι λειτουργίες chrκαι ord ................... 62 4.6 Εκτύπωσητηςπροπαίδειας . . . . . . . . . . . . . . . . . . . 65 4.7 Οι εντολές breakκαι continue ................ 67 Ερωτήσειςκαιπροβλήματα....................... 69 5 Σύνθετες τιμές 71 5.1 Πλειάδες.............................. 71 5.2 Έλεγχος καρκινικών προτάσεων . . . . . . . . . . . . . . . . . 76 5.3 Λίστες ............................... 80 5.4 Λεξικά ............................... 87 5.5 Σύνολα............................... 92 Ερωτήσειςκαιπροβλήματα. . . . . . . . . . . . . . . . . . . . . . . 101 6 Λειτουργίες και αναδρομή 103 6.1 Νέεςλειτουργίες ......................... 103 6.2 Τύποι ορισμάτων σε ορισμούς λειτουργιών . . . . . . . . . . . 111 6.3 Διαφοράδύοημερομηνιών. . . . . . . . . . . . . . . . . . . . 114 6.4 Οιλειτουργίεςείναιτιμές! . . . . . . . . . . . . . . . . . . . . 117 6.5 Αναδρομή ............................. 122 6.6 Το πρόβλημα των πύργων του Ανόι . . . . . . . . . . . . . . . 126 Ερωτήσειςκαιπροβλήματα. . . . . . . . . . . . . . . . . . . . . . . 130 7 Αντικείμενα στην Python 131 7.1 Σύντομη ιστορική ανασκόπηση . . . . . . . . . . . . . . . . . 131 7.2 Δημιουργία κλάσεων και αντικειμένων . . . . . . . . . . . . . 133 7.3 Κληρονομικότητα......................... 137 7.4 Επαναλήπτες ........................... 141 7.5 Πολυμορφισμός.......................... 144 Ερωτήσειςκαιπροβλήματα. . . . . . . . . . . . . . . . . . . . . . . 147 8 Γραφικά στην Python 149 8.1 Γραφικά χελώνας: βασικές ιδέες . . . . . . . . . . . . . . . . . 150 8.2 Γραφικάχελώνας:Χρώμα . . . . . . . . . . . . . . . . . . . . 156 8.3 Κινούμενα γραφικά με τοtkinter ............... 164 8.3.1 Δημιουργία παραθύρων με γραφικά στοιχεία . . . . . 164 8.3.2 Κινούμενα σχέδια . . . . . . . . . . . . . . . . . . . . 170 8.4 Κινούμενα γραφικά με τοpygame ................ 179

Περιεχόμενα xiii 8.5 Σχεδιάζονταςσεαρχεία. . . . . . . . . . . . . . . . . . . . . . 186 Ερωτήσειςκαιπροβλήματα. . . . . . . . . . . . . . . . . . . . . . . 190 9 Μουσική με την Python 193 9.1 Το δομοστοιχείοwavebender .................. 194 9.2 Υπολογιστικήμουσική ...................... 196 Ευρετήριο 199

PYTHON για όλους

1 ΤΙ ΣΗΜΑΙΝΕΙ «ΠΡΟΓΡΑΜΜΑΤΙΖΩ»; Σε αυτό το κεφάλαιο Εξηγούμε τι σημαίνει η λέξη προγραμματίζωτόσο στην καθημερινότητά μας όσο και στην πληροφορική. Μετά εξηγούμε τι είναι οι γλώσσες προγραμματισμού και ποια η χρησιμότητά τους. Στη συνέχεια κάνουμε μια γενική εισαγωγή στη γλώσσα προγραμματισμού Python και στις δυνατότητές της. 1.1 ΓΕΝΙΚΑ ΓΙΑ ΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πολλές φορές πρέπει ή θέλουμε να κάνουμε αρκετά πράγματα. Για παράδειγμα, ο νεαρός στην Εικόνα 1.1 θέλει να πάει στο γυμναστήριο, να βγάλει τον σκύλο βόλτα κ.ά. Όλα αυτά απαιτούν μιαοργάνωση. Με απλά λόγια πρέπει να σκεφτούμε με ποια σειρά θα κάνουμε αυτά που πρέπει ή θέλουμε να κάνουμε. Επιπλέον, είναι πολύ σημαντικό να σκεφτούμε πώς θα κάνουμε αυτά που πρέπει ή θέλουμε να κάνουμε. Με μία λέξη αυτό ονομάζεται προγραμματισμός. Έτσι, όταν μια οικογένεια θέλει να πάει διακοπές, πρέπει να προγραμματίσει πού θα πάει, πότε θα πάει και φυσικά πώς θα πάει εκεί που τελικά θα αποφασίσει. Αυτό σημαίνει ότι ο προγραμματισμός απαιτεί ένα πλάνο ή ένα σχέδιο

2 Κεφάλαιο 1 Τι σημαίνει «προγραμματίζω»; Εικόνα 1.1: «Έχω πολλά να κάνω, πρέπει να τα προγραμματίσω!» το οποίο πρέπει να ακολουθήσουμε, αν δεν θέλουμε να βρεθούμε σε κάποια δύσκολη ή απρόσμενη κατάσταση. Οι υπολογιστές είναι ηλεκτρονικές συσκευές τις οποίες χρησιμοποιούμε για να λύσουμε προβλήματα. Πιο συγκεκριμένα, τους υπολογιστές τούς χρησιμοποιούμε για να λύσουμε μαθηματικά προβλήματα και όχι γενικά οποιοδήποτε πρόβλημα. Φυσικά υπάρχουν πολλά προβλήματα τα οποία μοιάζουν να μην είναι μαθηματικά ενώ στην πραγματικότητα είναι τέτοια προβλήματα. Για παράδειγμα, η κυκλοφορία του αίματος στον ανθρώπινο οργανισμό είναι μαθηματικό πρόβλημα (θεωρούμε τις φλέβες ως σωλήνες και το αίμα ως ένα ρευστό) και έτσι μπορεί να μελετηθεί με τη χρήση υπολογιστών. Προς το παρόν τουλάχιστον, προβλήματα ψυχολογικής φύσης φαίνεται ότι δεν είναι προβλήματα τα οποία μπορούν να αντιμετωπισθούν με τη χρήση υπολογιστών.

1.2Γλώσσες προγραμματισμού 3 Συμπερασματικά, στην πληροφορική ο προγραμματισμός είναι μια διανοητική δραστηριότητα που έχει σκοπό την επίλυση ενός (μαθηματικού) προβλήματος με τη χρήση υπολογιστών. Ο προγραμματισμός, ως διανοητική δραστηριότητα, είναι ιδιαίτερα συναρπαστικός γιατί επιτρέπει σε αυτόν που τον εξασκεί να λύσει ένα πρόβλημα και να ελέγξει άμεσα αν η λύση είναι σωστή ή όχι. Βέβαια σε κάποιες περιπτώσεις είναι πολύ δύσκολο να λύσουμε ένα πρόβλημα αλλά εμάς δεν θα μας απασχολήσουν τέτοιες περιπτώσεις. Τέλος, όταν λύσουμε ένα πρόβλημα με τη χρήση ενός υπολογιστή, συνήθως νιώθουμε ικανοποίηση επειδή καταφέραμε να κάνουμε κάτι πραγματικά δημιουργικό. Αυτός είναι και ο λόγος που πολλοί άνθρωποι που έχουν ως επάγγελμα τη δημιουργία προγραμμάτων βλέπουν τη δουλειά τους και ως χόμπι! 1.2 ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Τη γλώσσα που μιλάμε τη χρησιμοποιούμε για να επικοινωνούμε, για να εκφράζουμε τις σκέψεις μας αλλά και για να λέμε ή να δίνουμε οδηγίες για το πώς πρέπει να γίνει κάτι. Για παράδειγμα, αν γνωρίζουμε πώς να μαγειρέψουμε ένα φαγητό, τότε μπορούμε να δώσουμε οδηγίες ή εντολές ώστε κάποιος τρίτος να μαγειρέψει το ίδιο φαγητό (ίσως όχι με τόση επιτυχία όπως αν το κάναμε εμείς). Ένα βασικό χαρακτηριστικό της γλώσσας που μιλάμε, όποια και αν είναι αυτή, είναι ηασάφεια. Με απλά λόγια, όταν μιλάμε ή γράφουμε είναι πολύ εύκολο να πούμε κάτι το οποίο δεν είναι ξεκάθαρο τι σημαίνει. Ας δούμε ένα απλό παράδειγμα. Είναι σχεδόν σίγουρο ότι θα έχετε ακούσει τη φράση «μια πρέζα αλάτι». Αυτή η φράση δηλώνει μια μικρή ποσότητα από ένα υλικό σε σκόνη ή σε κόκκους, που μπορεί κάποιος να πιάσει με τα δάχτυλά του. Παρατηρούμε ότι άσχετα με το μέγεθος των δακτύλων κάποιου η πρέζα αλάτι παραμένει η ίδια! Αυτό φυσικά μπορεί να οδηγήσει σε λάθος αποτελέσματα (π.χ. πολύ αλμυρό ή ανάλατο φαγητό). Άρα η φράση αυτή είναι ασαφής. Όμως και όταν λέμε ότι μια πρέζα αντιστοιχεί περίπου στην ποσότητα που χωράει στην άκρη ενός κουταλιού του γλυκού, πάλι δεν είναι ξεκάθαρο τι εννοούμε. Παρόλα αυτά, οι μάγειρες χρησιμοποιούν αυτή τη μονάδα μέτρησης και τα καταφέρνουν μια χαρά (αφού φυσικά δοκιμάσουν τη γεύση του φαγητού πριν το σερβίρουν…). Όταν θέλουμε να περιγράψουμε σε έναν υπολογιστή τι θέλουμε να κάνει, χρησιμοποιούμε κάτι που μοιάζει με τη γλώσσα, με τη διαφορά ότι δεν επιτρέπει εντολές ή οδηγίες που είναι ασαφείς. Αυτό είναι πολύ βασικό γιατί θέλουμε κάθε φορά που ο υπολογιστής εκτελεί μια συγκεκριμένη σειρά εντολών, το αποτέλεσμα να είναι ακριβώς το ίδιο. Το σύνολο των εντολών που δίνουμε στον υπολογιστή για να κάνει κάτι ονομάζεται πρόγραμμα. Γενικά, οι γλώσ-

4 Κεφάλαιο 1 Τι σημαίνει «προγραμματίζω»; σες που χρησιμοποιούμε για να δημιουργήσουμε ή απλώς για να γράψουμε ένα πρόγραμμα ονομάζονται γλώσσες προγραμματισμού. Από την άλλη, τις γλώσσες που μιλάμε (ελληνικά, ιαπωνικά κ.λπ.) τις ονομάζουμεφυσικές γλώσσες. Οι άνθρωποι που γράφουν προγράμματα είτε επαγγελματικά είτε ερασιτεχνικά ονομάζονται προγραμματιστές / προγραμματίστριες. Για λόγους συντομίας, σε ό,τι ακολουθεί, θα χρησιμοποιούμε τον όρο προγραμματιστής και θα εννοούμε είτε έναν προγραμματιστή είτε μια προγραμματίστρια. Όπως όλοι οι επαγγελματίες, ο κάθε προγραμματιστής έχει τον δικό του τρόπο εργασίας. Σε κάποιες περιπτώσεις ένας προγραμματιστής μπορεί να δημιουργήσει τα δικά του εργαλεία για να κάνει τη δουλειά του πιο εύκολη και πιο αποδοτική. Μερικές φορές, κάποιοι προγραμματιστές χρησιμοποιούν τα εργαλεία που δημιούργησαν για να δημιουργήσουν μια νέα γλώσσα προγραμματισμού. Επειδή υπάρχουν πολλοί προγραμματιστές και προφανώς πολλές μεθοδολογίες εργασίας, τελικά υπάρχουν και πολλές γλώσσες προγραμματισμού. Όμως ποια από όλες είναι η καλύτερη; Δεν υπάρχει απάντηση σε αυτή την ερώτηση καθώς είναι καθαρά προσωπικό θέμα το τι θεωρεί κάποιος καλύτερο. Ακριβώς ανάλογη είναι η ερώτηση—Ποιο φαγητό ή γλυκό είναι το καλύτερο; Προφανώς άλλο φαγητό ή γλυκό αρέσει σε μένα, άλλο στην Ελένη και άλλο στην Ιωάννα. 1.3 Η ΓΛΩΣΣΑ PYTHON Εικόνα 1.2: Ο Guido van Rossum (φωτογραφία από το Centrum Wiskunde & Informatica (CWI), the Netherlands). Η γλώσσα προγραμματισμού Python (προφέρεται: πάιθον) είναι πολύ δημοφιλής και σχεδιάσθηκε αρχικά από τον Ολλανδό Guido van Rossum (προφέρεται: Γκίντο βαν Ρόσουμ) το 1991. Στη συνέχεια αναπτύσσεται από ένα ίδρυμα που ονομάζεται Python Software Foundation. Το 1989 ο Van Rossum άρχισε να εργάζεται στο Centrum Wiskunde & Informatica (CWI), το εθνικό ερευνητικό ινστιτούτο μαθηματικών και πληροφορικής της Ολλανδίας. Τα Χριστούγεννα του 1989 άρχισε να εργάζεται στη δημιουργία της γλώσσας Python απλά επειδή ήθελε να περνά δημιουργικά τον χρόνο του. Η γλώσσα Python έχει τις ρίζες της στη γλώσσα προγραμματισμού ABC, η οποία είχε επίσης δημιουργηθεί στο CWI. Το όνομα της γλώσσας οφείλεται στην πολύ δημοφιλή εκπομπή «Monty Python’s Flying Circus» που πρόβαλλε ο βρετανικός τηλεοπτικός σταθμός

1.3Η γλώσσα Python 5 Εικόνα 1.3: Το εργαλείο IDLE της Python. BBC από το 1969 ως το 1974.1 Επειδή ο Van Rossum ήταν φανατικός θεατής της εκπομπής ενώ παράλληλα ήθελε ένα μικρό, μοναδικό αλλά και ελαφρά μυστήριο όνομα για τη δημιουργία του, διάλεξε το όνομα Python! Εικόνα 1.4: Ο λογότυπος της Python Η Python είναι ανοικτό λογισμικό. Αυτό πρακτικά σημαίνει πως είναι δωρεάν για όλα τα λειτουργικά συστήματα, εφόσον υπάρχει πρόνοια από την κοινότητα χρηστών ώστε να μπορεί να λειτουργεί στο σύστημα που υποστηρίζουν. Σε πολλά συστήματα η γλώσσα είναι προεγκατεστημένη και άρα αν θέλουμε να χρησιμοποιήσουμε τη γλώσσα, δεν χρειάζεται να κάνουμε κάτι ιδιαίτερο. Κάθε εγκατάσταση της γλώσσας περιέχει το εργαλείο IDLE (Integrated Development and Learning Environment – Ολοκληρωμένο περιβάλλον ανάπτυξης και εκμάθησης) το οποίο φαίνεται στην Εικόνα 1.3. Εδώ μπορούμε να γράψουμε εντολές ώστε να αλληλεπιδράσουμε με τη γλώσσα. Επίσης μπορούμε να γράψουμε προγράμματα και να τα εκτελέσουμε. Σε περίπτωση που δεν θέλουμε ή δεν μπορούμε να εγκαταστήσουμε την Python στον υπολογιστή μας, υπάρχουν πολλές ιστοσελίδες οι οποίες μας δίνουν τη δυνατότητα να εκτελέσουμε (μικρά;) προγράμματα Python επί τόπου. Επιπλέον, με αυτόν τον τρόπο μπορούμε να εκτελέσουμε προγράμματα είτε σε ένα smartphοne είτε σε ένα tablet [αν και υπάρχουν εφαρ1Επισκεφθείτε την επίσημη σελίδα τους στο http://www.montypython.com/ για περισσότερες πληροφορίες.

6 Κεφάλαιο 1 Τι σημαίνει «προγραμματίζω»; Εικόνα 1.5: Δύο σελίδες που επιτρέπουν την εκτέλεση προγραμμάτων Python. μογές (apps) που επιτρέπουν τη χρήση της Python σε αυτές τις συσκευές]. Για να βρείτε τέτοιες σελίδες, απλά πληκτρολογήστε στο Google τις λέξεις Python compiler online και επιλέξετε μία από τις σελίδες που σας προτείνει το Google. Στην Εικόνα 1.5 απεικονίζεται ο τρόπος επικοινωνίας (διεπαφή) δύο τέτοιων σελίδων με τους χρήστες τους. Μια βασική ερώτηση που απασχολεί αρκετό κόσμο και ειδικά μαθητές είναι η εξής: Γιατί να μάθω προγραμματισμό και γιατί ειδικά την Python; Εδώ και αρκετά χρόνια έχει αποδειχτεί πως η λεγόμενη υπολογιστική σκέψη επιτρέπει την προσέγγιση επίλυσης προβλημάτων, σχεδιασμού συστημάτων και κατανόησης της ανθρώπινης συμπεριφοράς κάνοντας χρήση θεμελιωδών εννοιών της πληροφορικής. Άρα η γνώση αυτών των εννοιών είναι κάτι εξαιρετικά χρήσιμο. Από την άλλη η Python είναι μια εξαιρετικά δημοφιλής γλώσσα προγραμματισμού επειδή είναι απλή και εύχρηστη. Αυτός είναι και ο λόγος που πολλοί παιδαγωγοί προτείνουν την Python για την εκμάθηση των θεμελιωδών εννοιών της πληροφορικής. Μάλιστα η Python επιτρέπει την πολύ γρήγορη υλοποίηση ενός αλγορίθμου, δηλαδή μιας διαδικασίας ή ενός σύνολο κανόνων, μαζί με κάποιους λογαριασμούς, τα οποία πρέπει να ακολουθηθούν ώστε να επιλυθεί ένα μαθηματικό πρόβλημα από έναν υπολογιστή. Οι

Ερωτήσεις και προβλήματα 7 αλγόριθμοι περιγράφονται με διάφορους τρόπους αλλά υλοποιούνται όταν εκφραστούν σε μία γλώσσα προγραμματισμού ώστε να μπορούν να εκτελεσθούν από έναν υπολογιστή. Μια απόδειξη της δημοφιλίας της γλώσσας είναι ο τεράστιος αριθμός βιβλίων που έχουν γραφτεί για την εκμάθησή της. Επίσης, ο σχετικά μεγάλος αριθμός βιβλίων που έχουν ως σκοπό την εκμάθηση της γλώσσας σε παιδιά και νέους όλων των ηλικιών δείχνει ότι οι παιδαγωγοί σε όλον τον κόσμο θεωρούν σημαντική την εκμάθηση της Python. Ερωτήσεις και προβλήματα 1.1 Τι είναι ο προγραμματισμός; 1.2 Τι είδους προβλήματα λύνουμε με έναν υπολογιστή; 1.3 Σε τι διαφέρει μια φυσική γλώσσα από μία γλώσσα προγραμματισμού; 1.4 Τι είναι ένα πρόγραμμα; 1.5 Ποιος δημιούργησε τη γλώσσα προγραμματισμού Python; 1.6 Πώς μπορούμε να εκτελέσουμε προγράμματα γραμμένα σε Python; 1.7 Τι είναι η υπολογιστική σκέψη; 1.8 Συμφωνείτε ή όχι και γιατί με την πρόταση: Ένας μαθητής ή μια μαθήτρια αξίζει να μάθει στοιχεία προγραμματισμού με την Python.

RkJQdWJsaXNoZXIy MTk1OTAxMA==