Σημειωματάριο Δευτέρας 2 Οκτ. 2017

Πώς να κάνετε τις εργαστηριακές ασκήσεις. Εισαγωγή στη γλώσσα python.

Πώς να κάνετε τις εργαστηριακές ασκήσεις

Την πρώτη ώρα σήμερα είδαμε ποια θα είναι η διαδικασία που θα ακολουθείτε όλο το εξάμηνο όσον αφορά τις ασκήσεις που θα έχετε να κάνετε, τα προγράμματα δηλ. σε python που θα έχετε να γράψετε. Η διαδικασία αυτή περιγράφεται και στην πρώτη άσκηση εργαστηρίου που θα δούμε αύριο Τρίτη 3 Οκτ. 2017 αλλά μπορείτε επίσης να τη δείτε συμπυκνωμένη και

στο video αυτό

που είχε γραφτεί για τον ίδιο σκοπό πριν από δύο χρόνια, οπότε υπάρχουν μικροδιαφορές. Η κυριότερη διαφορά είναι ότι για να τρέξουμε τώρα ένα πρόγραμμα σε python γράφουμε python3 στη γραμμή εντολών και όχι python (το οποίο θα έτρεχε παλαιότερη version της python).

Μια άλλη σημαντική διαφορά της python 2 από την python 3 που πρέπει να έχετε υπόψιν σας (μια και μπορεί που και που να συναντάτε κώδικα γραμμένο σε python 2 είναι ότι η εντολή print στην python 2 συντάσσεται χωρίς παρενθέσεις ενώ στην python 3 με παρενθέσεις (π.χ. στην python 2 γράφουμε

print "Η τιμή της x είναι", x

ενώ στην python 3 γράφουμε

print("Η τιμή της x είναι", x)

Εισαγωγή στη γλώσσα python

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

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

Είναι απαραίτητο όταν θα διαβάζετε τις δύο παραπάνω σελίδες να μπορείτε να δοκιμάζετε στον υπολογιστή τον κώδικα που φαίνεται εκεί. (Μπορείτε για ευκολία να τον παίρνετε από τις σελίδες αυτές με copy-paste, ή, αν είναι μικρός, να τον γράφετε με το χέρι.)

Υπάρχουν πολλοί τρόποι να τρέξει κανείς ένα python interpreter. Αν έχετε την ατυχία να δουλεύετε σε περιβάλλον windows τότε ο πιο άμεσος ίσως τρόπος να έχετε πρόσβαση σε ένα python interpreter χωρίς να κάνετε εγκατάσταση στο μηχάνημά σας είναι να χρησιμοποιήσετε ένα online service όπως π.χ. το repl.it. Εκεί μπορεί να τρέχετε τα προγράμματά σας κατ' ευθείαν.

Το παράδειγμα υπολογισμού χαρακτηριστικών ενός σπιτιού

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

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

Το σπίτι φαίνεται στην παρακάτω εικόνα και η σημασία των παραμέτρων φαίνεται στα σχόλια που υπάρχουν στις πρώτες γραμμές του προγράμματος που ακολουθεί. Τα σχόλια είναι το κείμενο που ακολουθεί το χαρακτήρα # και μπορεί να είναι τελείως ελεύθερο κείμενο, δεν υπόκειται δηλ. στους κανόνες της γλώσσα python. Ο σκοπός του κειμένου αυτού είναι να κάνει τη δομή του προγράμματος και τη σημασία των διαφόρων εντολών πιο ξεκάθαρη.

Το πρόγραμμα που γράψαμε φαίνεται παρακάτω, όπως φαίνεται και το output του προγράμματος αμέσως μετά.

Παρατηρείστε ότι τα ονόματα που δίνουμε στις μεταβλητές είναι τέτοια ώστε να μας θυμίζουν το τι αντιπροσωπεύουν. Δεν υπάρχουν και πολλοί περιορισμοί ως προς το τι μπορεί να είναι το κάθε όνομα μεταβλητής. Δεν μπορούν π.χ. να περιέχουν τα ονόματα αυτά κενά και επίσης να έχετε υπόψιν σας ότι το να πάμε από μικρό σε κεφαλαίο γράμμα αλλάζει το όνομα. Οι δύο μεταβλητές a και A είναι διαφορετικές.

In [25]:
a = 5 # a είναι το πλάτος του σπιτιού σε μέτρα m
b = 6 # b είναι το βάθος του σπιτιού (όλα τα νούμερα σε μέτρα)
c = 4 # c είναι το ύψος του σπιτιού
rt = 0.4 # rt (roof thickness) είναι το πάχος της ταράτσας
wt = 0.3 # wt (wall thickness) είναι το πάχος των τοίχων
dw = 1 # dw (door width) είναι το πλάτος της πόρτας
dh = 2 # dh (door height) είναι το ύψος της πόρτας
ww = 1.3 # ww (window width) είναι το πλάτος των παραθύρων
wh = 0.7 # wh (window height) είναι το ύψος των παραθύρων

Vroof = a*b*rt #Αρχίζουμε υπολογίζοντας τον όγκο της οροφής

Vfront = a*(c-rt)*wt #Μετά υπολογίζουμε τον όγκο της μπρος (άρα και της πίσω) πλευράς
                     #προτού αφαιρεθεί ο όγκος της πόρτας. Ως ύψος βάζουμε c-rt και όχι c μια και το κομμάτι
                     #από το ύψος c-rt έως το c έχει ήδη συμπεριληφθεί στον όγκο της οροφής

Vside = (b-2*wt)*(c-rt)*wt #Όγκος πλαϊνού τοίχου. Ως πλάτος τοίχου παίρνουμε b-2rt μια και το πρώτο κομμάτι
                           #μήκους rt έχει συμπεριληφθεί στον μπροστινό τοίχο και το τελευταίο κομμάτι μήκους
                           #rt έχει συμπεριληφθεί στον πίσω τοίχο.
        
Vdoor = dh*dw*wt # Ο όγκος της πόρτας
Vwindow = wh*ww*wt # Ο όγκος του κάθε παραθύρου

V = Vroof + 2*Vfront + 2*Vside - Vdoor - 2*Vwindow # Ο συνολικός όγκος είναι το άθροισμα των όγκων οροφής και τοίχων
     # αλλά πρέπει μετά να αφαιρέσουμε τον όγκο της πόρτας και τους όγκους των δύο παραθύρων

total_area = 2*a*c + 2*b*c + a*b - dh*dw - 2*wh*ww # Εδώ υπολογίζουμε κατ'ευθείαν το συνολικό εμβαδό των εξωτερικών
  # τοιχων και οροφής για να τα βάψουμε (βάφουμε και την οροφή). Ο πρώτος όρος είναι για τον μπρος και τον πίσω τοίχο
  # ο δεύτερος για τους δύο πλαϊνούς τοίχους, ο τρίτος για την οροφή, και μετά αφαιρούμε το εμβαδό της πόρτας και
  # και το εμβαδό των δύο παραθύρων

print("Το σπίτι έχει", V, "κυβικά μέτρα και", total_area, "τετραγωνικά μέτρα.") # Η εντολή (συνάρτηση, για την 
   # ακρίβεια), print, τυπώνει τα ορίσματά της, αυτά που της περνάμε δηλ., επί μιας γραμμής χωρισμένα μεταξύ τους
   # με κενά. 
Το σπίτι έχει 33.318 κυβικά μέτρα και 114.18 τετραγωνικά μέτρα.