Εισαγωγή στον Προγ/μό Υπολογιστών Διάλεξη 1 Εκφράσεις, κλητικές εκφράσεις, ονόματα
Περιεχόμενα Εκφράσεις (expressions) Τελεστές (operators) της Python Κλητικές εκφράσεις (call expressions) Ονόματα (names)
Εκφράσεις (expressions)
Εκφράσεις Εκφράσεις (expressions): περιγραφές υπολογισμών που λαμβάνουν τιμή Πρωταρχικές εκφράσεις (primitive expressions) Η τιμή τους είναι η ίδια η έκφραση Αριθμητικές τιμές (number) 6-5495 54.444 2.43e-38 6.0 Ακέραιες (int) τιμές Τιμές κινητής υποδιαστολής (float) Αναπαρίστανται όλοι οι ακέραιοι σε ένα εύρος Δεν αναπαρίστανται όλες οι float τιμές (βλ. παρακάτω)
Εκφράσεις Αλφαριθμητικές τιμές (str) menu menu menu menu Χρήσιμες στην αναπαράσταση κειμένου και λέξεων Λογικές τιμές (bool) True False Χρήσιμες στον έλεγχο συνθηκών, πχ, «η θερμοκρασία είναι 10 $ %;»
Εκφράσεις Κατασκευή εκφράσεων με αριθμητικούς infix τελεστές έκφραση τιμή 8+14 22 8-14.0-6.0 6*7 42 7/2 3.5 7//2 3 7 % 4 3-43.5-43.5 2**3 27 2+3/3*4 6.0 2+3/(3*4) 2.25 infix = ένθεμα Οι τελεστές εμφανίζονται στο εσωτερικό της έκφρασης
Εκφράσεις Κατασκευή εκφράσεων με infix τελεστές που εφαρμόζονται σε αλφαριθμητικά έκφραση hello + world hello world 2* hello hello +1 τιμή hello world hello world hellohello ΛΑΘΟΣ
Εκφράσεις Κατασκευή εκφράσεων με infix λογικούς τελεστές έκφραση τιμή True and False False True and True True True or False True True or False and False True not True False not not True True 12 + True 13
Εκφράσεις Εκφράσεις με τελεστές σύγκρισης έχουν τιμή λογικού τύπου έκφραση τιμή 2 > 1.5 True hello < world True 1.5 >= 1.5 True 3 == 2 False 1 == True True 1 == True False 3!= 2 True 0 < 1 and 1!= 2 True
Εκφράσεις Infix τελεστές που εφαρμόζονται στις αναπαραστάσεις ακεραίων στο δυαδικό σύστημα έκφραση τιμή 3 & 1 1 3 1 3 3 ^ 1 2 ~1-2 1 << 3 8 8 >> 3 1 3.5 1 ΛΑΘΟΣ τελεστής πράξη bit & AND OR ^ XOR ~ NOT << Shift left by >> Shift right by
Κλητικές εκφράσεις (call expressions)
Κλητικές εκφράσεις Ένας άλλος τύπος έκφρασης είναι οι κλητικές εκφράσεις (call expressions) >>> abs(-3.6) 3.6 >>> max(3, 5) 5 >>> pow(2,3) 8 Στις κλητικές εκφράσεις ο τελεστής εμφανίζεται στο πρόθεμα (prefix) της έκφρασης
Κλητικές εκφράσεις Γενική μορφή κλητικών εκφράσεων: max ( 3, 5 ) τελεστής όρισμα όρισμα Αποτελούνται από τελεστή και μια ακολουθία από 0 ή περισσότερα ορίσματα χωριζόμενα με κόμμα (,) Κάθε όρισμα είναι μια έκφραση (άρα έχει τιμή) Ο τελεστής αντιστοιχεί σε συνάρτηση Η τιμή της κλητικής έκφρασης είναι η αποτίμηση της συνάρτησης για τις τιμές των ορισμάτων
Κλητικές εκφράσεις Οι τελεστές abs, max, pow αντιστοιχούν σε ενσωματωμένες (built-in) συναρτήσεις Επίσης, υπάρχουν πολλές άλλες μη ενσωματωμένες συναρτήσεις, πχ., τετραγωνική ρίζα, που βρίσκονται σε ειδικά πακέτα (modules) Για να έχουμε πρόσβαση σε συναρτήσεις άλλων πακέτων (modules) πρέπει να χρησιμοποιήσουμε την εντολή import >>> sqrt(235.55) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sqrt' is not defined >>> from math import sqrt >>> sqrt(235.55) 15.347638254793472 μήνυμα λάθους: άγνωστο όνομα sqrt Μια περιγραφή των διαθέσιμων πακέτων στη διανομή της Python 3 βρίσκεται στο https://docs.python.org/3/library/index.html
Κλητικές εκφράσεις Υπάρχουν κλητικές εκφράσεις για όλους τους infix τελεστές που είδαμε >>> from operator import add, sub, mul, truediv, floordiv >>> add(3, 5) 8 >>> sub(7, 12.5) -5.5 >>> mul(6, 7) 42 >>> truediv(7,2) 3.5 >>> floordiv(7,2) 3 Στην Python υπάρχει η σύμβαση να χρησιμοποιούνται οι infix τελεστές, εάν υπάρχουν, αντί των κλητικών εκφράσεων
Ονόματα
Ονόματα Με την εντολή import μπορούμε να εισάγουμε ονόματα για τιμές, πχ! = 3.14 >>> from math import pi >>> pi 3.141592653589793 Το όνομα pi μπορεί να χρησιμοποιηθεί σε εκφράσεις αντί της τιμής 3.14, πχ 2*pi*5, pi*(5**2) Λέμε ότι το όνομα pi έχει δέσει (binds) στην τιμή 3.14 Στις εκφράσεις γίνεται αντικατάσταση των ονομάτων με τις τιμές στις οποίες δένονται
Ονόματα Ένας άλλος τρόπος να δεθεί ένα όνομα σε τιμή είναι μέσω εντολής ανάθεσης >>> r = 5 >>> 2*pi*r 31.41592653589793 >>> circ, area = 2*pi*r, pi*(r**2) >>> circ 31.41592653589793 >>> area 78.53981633974483
Ονόματα Τι θα εμφανίσει η Python; >>> rose_name = rose >>> foo = rose_name >>> foo rose >>> rose_name = lilly >>> foo rose Στις αναθέσεις το όνομα στα αριστερά του = δένεται με την τιμή της έκφρασης στα δεξιά
Ονόματα Τι θα εμφανίσει η Python; >>> rose_name = rose >>> foo = rose_name >>> foo rose >>> rose_name = lilly >>> foo rose Στις αναθέσεις το όνομα στα αριστερά του = δένεται με την τιμή της έκφρασης στα δεξιά
Ονόματα Γενική μορφή εντολής ανάθεσης: <όνοµα>, <όνοµα>, = <έκφραση>, <έκφραση>, Αποτελείται από ένα (συνήθως) ή περισσότερα ονόματα και εκφράσεις Δεν επιτρέπεται (είναι λάθος στην Python) αριστερά του = να υπάρχει έκφραση (που δεν είναι όνομα) Εκτέλεση εντολής ανάθεσης: 1. Πρώτα υπολογίζονται οι τιμές όλων των εκφράσεων στα δεξιά 2. Κάθε όνομα στα αριστερά δένεται στην τιμή της αντίστοιχης έκφρασης στα δεξιά: το 1 ο όνομα με την τιμή της 1 ης έκφρασης, το 2 ο όνομα με την τιμή της 2 ης έκφρασης κοκ.
Ονόματα Οι τελεστές στις κλητικές εκφράσεις είναι ονόματα που έχουν δεθεί σε συναρτήσεις >>> max function max> >>> f = max >>> f(3,5) 5 >>> max = 34 >>> max*2 68 >>> max(3,5) Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> max(3,5) TypeError: 'int' object is not callable Λάθος: τιμές int δεν μπορούν να χρησιμοποιηθούν ως τελεστές σε έκφραση κλήσης
Αποτίμηση σύνθετων κλητικών εκφράσεων
Αποτίμηση σύνθετων κλητικών εκφράσεων Αποτίμηση εκφράσεων κλήσης: 1. Υπολογίζεται η τιμή του τελεστή, η οποία δίνει τη συνάρτηση που θα χρησιμοποιηθεί 2. Υπολογίζονται οι τιμές των εκφράσεων που δίνονται στα ορίσματα 3. Η τιμή της έκφρασης κλήσης είναι αυτή που προκύπτει από αποτίμηση της συνάρτησης για τις τιμές των ορισμάτων Πχ, αποτίμηση της f(2+1,5): 1. Η τιμή του ονόματος f είναι η function max> 2. Οι τιμές των ορισμάτων είναι 3 και 5 αντίστοιχα 3. Η function max> αποτιμάται για τα ορίσματα 3 και 5 και δίνει τιμή 5 Ο κανόνας αυτός μπορεί να εφαρμοστεί επανειλημμένα για την αποτίμηση σύνθετων εκφράσεων κλήσης Πχ, add( 4, max(pow(6, abs(-2)), mul(4,6)))
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8))))
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 max(pow(6, abs(-2)), mul(4,8)))
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 max(pow(6, abs(-2)), mul(4,8))) function max> pow( 6, abs(-2)) mul( 4, 8)
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 max(pow(6, abs(-2)), mul(4,8))) function max> pow( 6, abs(-2)) mul( 4, 8) 32 function pow> 6 4 8 function mul> abs( -2)
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 max(pow(6, abs(-2)), mul(4,8))) function max> pow( 6, abs(-2)) mul( 4, 8) 32 function pow> 6 2 abs( -2) function mul> 4 8 function abs> -2
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 max(pow(6, abs(-2)), mul(4,8))) function max> 36 32 pow( 6, abs(-2)) mul( 4, 8) function pow> 6 2 abs( -2) function mul> 4 8 function abs> -2
Αποτίμηση σύνθετων κλητικών εκφράσεων add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 36 max(pow(6, abs(-2)), mul(4,8))) function max> 36 32 pow( 6, abs(-2)) mul( 4, 8) function pow> 6 2 abs( -2) function mul> 4 8 function abs> -2
Αποτίμηση σύνθετων κλητικών εκφράσεων 40 add( 4, max(pow(6, abs(-2)), mul(4,8)))) function add> 4 36 max(pow(6, abs(-2)), mul(4,8))) function max> 36 32 pow( 6, abs(-2)) mul( 4, 8) function pow> 6 2 abs( -2) function mul> 4 8 function abs> -2
Μη γνήσιες συναρτήσεις
Μη γνήσιες συναρτήσεις Γνήσιες συναρτήσεις: η τιμή τους εξαρτάται μόνο από τις τιμές των ορισμάτων τους και δεν έχουν παρενέργειες -5 abs(number) 5 Μη γνήσιες συναρτήσεις: συναρτήσεις που εκτός τον υπολογισμό της τιμής τους, έχουν και άλλα αποτελέσματα (παρενέργειες) -5 print( ) None Εμφανίζεται -5
Η συνάρτηση print Χρήσιμη για εμφάνιση μηνυμάτων, αναγραφή αποτελεσμάτων κτλ. >>> print( Hello world! ) Hello world! >>> print(5/10/2018) 0.0002477700693756194 >>> print( Graduation year estimate =, 2018+4) 2022 Γενική μορφή: print( <έκφραση>, <έκφραση>, ) Εμφανίζονται οι τιμές των εκφράσεων που δίνονται στα ορίσματα, με 1 κενό χαρακτήρα μεταξύ τους
Μη γνήσιες συναρτήσεις H print επιστρέφει την τιμή None της Python Χρησιμοποιείται ως τιμή συναρτήσεων στις οποίες, όπως στην print, είναι σημαντικότερη η παρενέργεια και καθόλου η τιμή Ουσιαστικά σημαίνει ότι η συνάρτηση δεν έχει καμμία τιμή (none=καμμία) Το διαλογικό περιβάλλον της Python δεν εμφανίζει την τιμή None >>> max(3,5) 5 >>> print( hello ) Hello >>> print(none) None Τι εμφανίζεται; >>> print(print(1), print(2))
Η συνάρτηση print print( print(1), print(2) )
Η συνάρτηση print print( print(1), print(2) ) function print> print(1) print(2)
Η συνάρτηση print print( print(1), print(2) ) function print> print(1) print(2) function print> 1 function print> 2
Η συνάρτηση print print( print(1), print(2) ) function print> None print(1) print(2) function print> 1 function print> 2 1 print( ) None Εμφανίζεται 1
Η συνάρτηση print print( print(1), print(2) ) function print> None print(1) None print(2) function print> 1 function print> 2 1 print( ) None 2 print( ) None Εμφανίζεται 1 Εμφανίζεται 2
Η συνάρτηση print None None,None print( print(1), print(2) ) print( ) Εμφανίζεται None None None function print> None print(1) None print(2) function print> 1 function print> 2 1 print( ) None 2 print( ) None Εμφανίζεται 1 Εμφανίζεται 2
Η συνάρτηση input Χρησιμοποιείται για είσοδο αλφαριθμητικών δεδομένων από τον χρήστη (όχι τον προγραμματιστή) κατά την εκτέλεση Το σύστημα περιμένει τον χρήστη να εισάγει δεδομένα Η εισαγωγή τελειώνει όταν ο χρήστης πατήσει Return/Enter/αλλαγή γραμμής Η τιμή της input είναι η αλφαριθμητική είσοδος που έδωσε ο χρήστης, χωρίς την αλλαγή γραμμής >>> name = input( What is your name? ) What is your name? >>> print( Hello, name) Hello Albert Το διαλογικό περιβάλλον περιμένει την είσοδο του χρήστη
Η συνάρτηση input Χρησιμοποιείται για είσοδο αλφαριθμητικών δεδομένων από τον χρήστη (όχι τον προγραμματιστή) κατά την εκτέλεση Το σύστημα περιμένει τον χρήστη να εισάγει δεδομένα Η εισαγωγή τελειώνει όταν ο χρήστης πατήσει Return/Enter/αλλαγή γραμμής Η τιμή της input είναι η αλφαριθμητική είσοδος που έδωσε ο χρήστης, χωρίς την αλλαγή γραμμής >>> name = input( What is your name? ) What is your name? Albert >>> print( Hello, name) Hello Albert Το διαλογικό περιβάλλον περιμένει την είσοδο του χρήστη
Επόμενη διάλεξη: Ορισμός και εκτέλεση συναρτήσεων Διαγράμματα περιβάλλοντος Καλό Σαββατοκύριακο!