Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις. 1. Εκτύπωση κειμένου στη γραμμή εντολών Η εκτύπωση ειναι πολύ απλή. Ο κώδικας print("hello World.") κώδικας είναι το κλασικό Hello World παράδειγμα που συνήθως μαθαίνουμε πρώτα σε μια γλώσσα. Δοκιμάστε το στο Spyder. Προσέξτε: στην Python 3, χρειάζονται παρενθέσεις και εισαγωγικά! Οτιδήποτε βρίσκεται ανάμεσα στα εισαγωγικά θα τυπωθεί. Δείτε τι θα τυπώσει ο κώδικας print("2 + 3"). Άρα αν κάποιος περίμενε να τυπωθεί το 5 διαψεύσθηκε. Για να τυπωθεί το αποτέλεσμα μιας πράξης, δεν χρειάζονται εισαγωγικά. Αρκεί λοιπόν να γράψει κάποιος print(2 + 3). Φυσικά θα χρειαστεί κάποια τιμή να τυπώσουμε και την πράξη και το αποτέλεσμα. Αντί να το κάνουμε με δύο εντολές, θα μπορούσαμε να τις συνδυάσουμε σε μία: print("2+3", 2+3). Προσέξτε το, που χωρίζει το string και την αριθμητική έκφραση! Όπως γνωρίζουμε και από άλλες γλώσσες, κάποιοι χαρακτήρες δεν είναι τόσο απλό να τυπωθούν. Για παράδειγμα, για να τυπώσει κάποιος τα εισαγωγικά ( ) θα πρέπει να χρησιμοποιήσει το χαρακτήρα διαφυγής \ : Δοκιμάστε τους χαρακτήρες διαφυγής \n, \t, \r, οι οποίοι και σας θυμίζουν κάτι από άλλες γλώσσες προγραμματισμού. 2. Σχόλια Για να γράψουμε ευανάγνωστο και επαναχρησιμοποιήσιμο κώδικα, αλλά και για να θυμόμαστε έπειτα από καιρό (ή ακόμη και έπειτα από μερικές ώρες!) τι κάνει ο κώδικας που γράψαμε, συνίσταται η χρήση σχολίων. Η Python ωστόσο έχει και άλλον ένα τρόπο για να μας κάνει να γράψουμε ευανάγνωστο κώδικα, αλλά αυτόν θα τον δούμε αργότερα. Με χρήση του χαρακτήρα # μπορούμε να απενεργοποιήσουμε μια εντολή. Ακόμη κι αν αυτό δεν αποτελεί καλή τακτική για debugging, θα το κάνουμε πολύ συχνά.
Μπορούμε εύκολα και με χρήση τριών μονών εισαγωγικών (''') να σχολιάσουμε πολλές γραμμές κώδικα. Δοκιμάστε το. Συνήθως αυτός ο τρόπος χρησιμοποιείται για τη δημιουργία documentation. Κάτι τέτοιο δε θα μας απασχολήσει για την ώρα. 3. Μεταβλητές Οτιδήποτε και αν θέλουμε να προγραμματίσουμε, είναι μάλλον αναμενόμενο ότι θα χρησιμοποιήσουμε μεταβλητές. Η ανάθεση τιμών σε μεταβλητές στην Python είναι μάλλον οικεία: Φυσικά, μπορούμε με προφανή τρόπο να κάνουμε και πράξεις ανάμεσα στις μεταβλητές: Προσέξτε ότι και στην Python τα ονόματα των μεταβλητών είναι case-sensitive. Τι περίμένετε να τυπώσει ο ακόλουθος κώδικας; Όσον αφορά τον τρόπο με τον οποίο γίνεται η ονοματοδοσία των μεταβλητών στην Python, προτιμάται αυτός που μας θυμίζει τη C: π.χ. two_words και όχι twowords. Επίσης δεν μπορούμε να δημιουργούμε μεταβλητές που το όνομά τους να περιέχει κενό χαρακτήρα, να αρχίζουν από αριθμό ή από κάποιο ειδικό χαρακτήρα (π.χ. το σύμβολο %). 4. Τελεστές Οι βασικές πράξεις (πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση) πραγματοποιούνται όπως θα περιμέναμε, με χρήση των +, -, *, /. Όσον αφορά το πηλίκο (div) και το υπόλοιπο (mod):
Η ύψωση ενός αριθμού σε δύναμη γίνεται με χρήση του τελεστή **. Προηγείται η βάση και ακολουθεί ο εκθέτης. Για παράδειγμα, αν θέλαμε να υπολογίσουμε την τιμή 2 3, θα γράφαμε την εντολή: 2 ** 3. Δοκιμάστε το! Ας δούμε πώς γίνεται ο υπολογισμός τριγωνομετρικών συναρτήσεων. H Python δεν ξέρει πώς να υπολογίσει π.χ. ένα ημίτονο ή ένα συνημίτονο. Ωστόσο, χρησιμοποιώντας κατάλληλη βιβλιοθήκη, κάτι τέτοιο μπορεί να ξεπεραστεί, εισάγοντας τη βιβλιοθήκη Math ως εξής: 5. Ένα απλό πρόγραμμα υπολογισμού κατανάλωσης βενζίνης Σε αυτό το σημείο είμαστε σχεδόν έτοιμοι να φτιάξουμε το πρώτο μας πρόγραμμα, το οποίο θα ζητάει από το χρήστη τον αριθμό λίτρων βενζίνης που κατανάλωσε το αυτοκίνητό του και τον αριθμό των χιλιομέτρων που οδήγησε με αυτήν την ποσότητα. Για να ζητήσουμε είσοδο από το χρήστη, μπορούμε να χρησιμοποιήσουμε την εντολή input: Πληκτρολογήστε και σώστε το παρακάτω: Ωραίο φαίνεται, αλλά εμφανίζει το ακόλουθο λάθος: Τι σημαίνει αυτό; Ότι ξεχάσαμε να πούμε στο πρόγραμμα ότι θα εισάγουμε αριθμούς. Ας το τροποποιήσουμε λίγο και ας προσπαθήσουμε να το ξανατρέξουμε: Τρέχοντάς το και δίνοντας τιμές, βλέπουμε ότι αυτή τη φορά, το πρόγραμμα τρέχει κανονικά:
Άσκηση: Να κατασκευάσετε ένα πρόγραμμα που θα υπολογίζει την κινητική ενέργεια ενός αντικειμένου από τη μάζα του και την ταχύτητά του. Θυμίζουμε ότι για ένα σώμα μάζας m που κινείται με ταχύτητα v, η κινητική του ενέργεια e υπολογίζεται ως e = 0.5mv 2. 6. Δηλώσεις If Παίζοντας ένα παιχνίδι, θα χρειαστεί να ελέγξουμε κάποια στιγμή αν ο παίκτης κατάφερε να περάσει το high-score. Πώς θα το επιτύχουμε αυτό; Προφανώς, με χρήση των γνωστών if statements! Θυμηθείτε, πιο πριν αναφέρουμε ότι η Python έχει έναν τρόπο να μας κάνει να γράφουμε όμορφο και ευανάγνωστο κώδικα. Ήρθε η ώρα να δείτε τι σημαίνει αυτό! Το ακόλουθο πρόγραμμα συγκρίνει δύο αριθμούς και τυπώνει το αποτέλεσμα της σύγκρισης: Προσέξτε! Η στοίχιση είναι υποχρεωτική! Εδώ χρησιμοποιήσαμε ένα tab. Θα μπορούσατε να χρησιμοποιήσετε και έναν αριθμό από spaces. Για έλεγχο ισότητας, ανισότητας, ανισοϊσότητας θα χρησιμοποιούσαμε τα γνωστά μας ==,!=, <=, >= 7. Στοίχιση Η στοίχιση έχει μεγάλη σημασία! Δείτε παρακάτω πώς φτιάχνουμε ένα if-statement. Δεν έχει άγκιστρα, η στοίχιση είναι αυτή που καθορίζει το σώμα του: Δείτε τι γίνεται αν κάνουμε λάθος στοίχιση:
8. Λογικοί Τελεστές Το λογικό και είναι and, το λογικό ή είναι or. Μια λογική έκφραση είναι True ή False. Το λογικό όχι είναι not. Προσοχή στη χρήση του. 9. If, else, elif δηλώσεις Προσοχή, το γνωστό elseif, στην Python έχει λίγο διαφορετική ονομασία, αλλά ίδια χρήση: 10. Συγκρίσεις κειμένου Με τη χρήση των if-statements, μπορούμε εύκολα να συγκρίνουμε κείμενο. Δείτε το παρακάτω παράδειγμα και ελέγξτε αν το όνομα σας είναι ωραίο ή όχι! Εντάξει, ίσως είναι υπερβολικό να πούμε ότι μόνο το Βαγγέλης είναι ωραίο όνομα. Ας τροποποιήσουμε λίγο το προηγούμενο παράδειγμα: Αλλά επειδή το Βαγγέλης και το Ειρήνη είναι ωραία ονόματα και χωρίς κεφαλαίο γράμμα στην αρχή, μπορεί να μας βοηθήσει η εντολή lower():