Python 1 Expressions

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

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

Υπολογιστών
Διάλεξη 1

Εκφράσεις, κλητικές εκφράσεις, ονόματα


Περιεχόμενα
• Εκφράσεις (expressions)
• Τελεστές (operators) της Python
• Κλητικές εκφράσεις (call expressions)
• Ονόματα (names)
Εκφράσεις
(expressions)
Εκφράσεις
• Εκφράσεις (expressions): περιγραφές υπολογισμών που
λαμβάνουν τιμή

• Πρωταρχικές εκφράσεις (primitive expressions)


– Η τιμή τους είναι η ίδια η έκφραση
– Αριθμητικές τιμές (number)
6
Ακέραιες (int) τιμές
-5495
54.444
2.43e-38 Τιμές κινητής υποδιαστολής (float)
6.0
– Αναπαρίστανται όλοι οι ακέραιοι σε ένα εύρος
– Δεν αναπαρίστανται όλες οι float τιμές (βλ. παρακάτω)
Εκφράσεις
• Αλφαριθμητικές τιμές (str)
’menu’
”menu”
’”menu”’
”’menu’”
– Χρήσιμες στην αναπαράσταση κειμένου και λέξεων
• Λογικές τιμές (bool)
True
False
– Χρήσιμες στον έλεγχο συνθηκών, πχ, «η θερμοκρασία
είναι ≥ 10$%;»
Εκφράσεις
• Κατασκευή εκφράσεων με αριθμητικούς infix τελεστές
έκφραση τιμή
8+14 22
8-14.0 -6.0
6*7 42 infix = ένθεμα
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 τελεστές που εφαρμόζονται
σε αλφαριθμητικά

έκφραση τιμή
’hello’+’ world’ ’hello world’
’hello’’world’ ’hello world’
2*’hello’ ’hellohello’
’hello’+1 ΛΑΘΟΣ
Εκφράσεις
• Κατασκευή εκφράσεων με 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 τελεστές που εφαρμόζονται στις αναπαραστάσεις
ακεραίων στο δυαδικό σύστημα

τελεστής πράξη bit


& AND
έκφραση τιμή
| OR
3 & 1 1
^ XOR
3 | 1 3
~ NOT
3 ^ 1 2 << Shift left by
~1 -2 >> Shift right by
1 << 3 8
8 >> 3 1
3.5 | 1 ΛΑΘΟΣ
Κλητικές εκφράσεις
(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 sqrt
>>> from math import sqrt
>>> sqrt(235.55)
15.347638254793472
Μια περιγραφή των διαθέσιμων πακέτων
στη διανομή της 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
<built-in 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 είναι η <built-in function max>
2. Οι τιμές των ορισμάτων είναι 3 και 5 αντίστοιχα
3. Η <built-in 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))))

<built-in
function add>
4
max(pow(6, abs(-2)), mul(4,8)))
Αποτίμηση σύνθετων κλητικών εκφράσεων

add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
function add>
4
max(pow(6, abs(-2)), mul(4,8)))

<built-in
function max>
pow( 6, abs(-2)) mul( 4, 8)
Αποτίμηση σύνθετων κλητικών εκφράσεων

add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
function add>
4
max(pow(6, abs(-2)), mul(4,8)))

<built-in 32
function max>
pow( 6, abs(-2)) mul( 4, 8)

<built-in <built-in
6 4 8
function pow> function mul>
abs( -2)
Αποτίμηση σύνθετων κλητικών εκφράσεων

add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
function add>
4
max(pow(6, abs(-2)), mul(4,8)))

<built-in 32
function max>
pow( 6, abs(-2)) mul( 4, 8)

<built-in 2 <built-in
6 4 8
function pow> function mul>
abs( -2)

<built-in
function abs>
-2
Αποτίμηση σύνθετων κλητικών εκφράσεων

add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
function add>
4
max(pow(6, abs(-2)), mul(4,8)))

<built-in 36 32
function max>
pow( 6, abs(-2)) mul( 4, 8)

<built-in 2 <built-in
6 4 8
function pow> function mul>
abs( -2)

<built-in
function abs>
-2
Αποτίμηση σύνθετων κλητικών εκφράσεων

add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
4 36
function add>
max(pow(6, abs(-2)), mul(4,8)))

<built-in 36 32
function max>
pow( 6, abs(-2)) mul( 4, 8)

<built-in 2 <built-in
6 4 8
function pow> function mul>
abs( -2)

<built-in
function abs>
-2
Αποτίμηση σύνθετων κλητικών εκφράσεων
40
add( 4, max(pow(6, abs(-2)), mul(4,8))))

<built-in
4 36
function add>
max(pow(6, abs(-2)), mul(4,8)))

<built-in 36 32
function max>
pow( 6, abs(-2)) mul( 4, 8)

<built-in 2 <built-in
6 4 8
function pow> function mul>
abs( -2)

<built-in
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) )

<built-in
function print>
print(1) print(2)
Η συνάρτηση print

print( print(1), print(2) )

<built-in
function print>
print(1) print(2)

<built-in <built-in
function print>
1 function print>
2
Η συνάρτηση print

print( print(1), print(2) )

<built-in None
function print>
print(1) print(2)

<built-in <built-in
function print>
1 function print>
2

1 print(…)
None

Εμφανίζεται 1
Η συνάρτηση print

print( print(1), print(2) )

<built-in None None


function print>
print(1) print(2)

<built-in <built-in
function print>
1 function print>
2

1 print(…) 2 print(…)
None None

Εμφανίζεται 1 Εμφανίζεται 2
Η συνάρτηση print
None,None print(…)
None
None
print( print(1), print(2) ) Εμφανίζεται None None

<built-in None None


function print>
print(1) print(2)

<built-in <built-in
function print>
1 function print>
2

1 print(…) 2 print(…)
None 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

Το διαλογικό περιβάλλον
περιμένει την είσοδο του
χρήστη…
• Επόμενη διάλεξη:
– Ορισμός και εκτέλεση συναρτήσεων
– Διαγράμματα περιβάλλοντος

• Καλό Σαββατοκύριακο!

You might also like