62
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ι. Κ. Δημητρίου 5η Διάλεξη

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Ι. Κ. Δημητρίου

5η Διάλεξη

Page 2: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Μια δυναμική και θεμελιώδης δυνατότητα

όλων των γλωσσών προγραμματισμού

είναι η ικανότητα να συγκρίνουν ποσότητες

ώστε να αποφασίζουν για τον τρόπο

υπολογισμού. Μ’ άλλα λόγια, ένα είδος

διακλάδωσης μπορεί να διευθετηθεί να

λάβει χώρα μόνον αν κάποιες συνθήκες

ικανοποιούνται.

Συνδυαζόμενη η διακλάδωση με μια επανάληψη,

είναι πιθανώς η πλέον σπουδαία και μοναδική

πρόοδος εφ’ όλων των μαθημάτων και αξίζει

σημαντική προσπάθεια.

Page 3: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

6

ΣΧΕΔΙΑΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ

(Software engineering)

Γενική προσέγγιση

Page 4: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

7

Πώς σχεδιάζεται ένα πρόγραμμα

Page 5: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

8

Σχεδιασμός Προγράμματος

1. Προσδιορισμός προβλήματος

2. Ανάλυση προβλήματος

3. Σχεδιασμός μεθόδου επίλυσης (ανάπτυξη αλγόριθμου) του προβλήματος

4. Κωδικοποίηση του αλγόριθμου σε μια γλώσσα προγραμματισμού (υλοποίηση προγράμματος)

5. Δοκιμή του προγράμματος

Page 6: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

9

Πώς αναπτύσσεται ένα πρόγραμμα

Page 7: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

10

Στη συνέχεια αναπτύσσομε τα

προγράμματα με συγκεκριμένες τεχνικές

που υλοποιούνται από όλες τις γλώσσες

προγραμματισμού, αλλά με μικρές

διαφοροποιήσεις.

Μια δομικά άρτια τεχνική είναι ο

«δομημένος προγραμματισμός» →

Ανάπτυξη Προγράμματος

Page 8: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

11

Δομημένος (structured) προγραμματισμός

Είναι ένα προγραμματιστικό στυλ που

χρησιμοποιεί τρεις κανόνες – δομές ή

βασικά στοιχεία ελέγχου βάσει των οποίων

θα πρέπει να φτιάχνονται τα προγράμματα

(Dijkstra) →:

• Εντολή επεξεργασίας (processing) →

• Έλεγχος συνθήκης if-then-else →

• Ελεγχόμενη επανάληψη εντολών (While,

Repeat-Until, for-next) →

Page 9: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

12

Born 11 May 1930

Rotterdam, Netherlands

Died 6 August 2002 (aged 72)

Nuenen, Netherlands

Fields

Computing science

Theoretical computer science

Institutions

Mathematisch Centrum

Eindhoven University of Technology

Burroughs Corporation

The University of Texas at Austin

Alma mater

Leiden University

(B.S., M.S.)

University of Amsterdam

(Ph.D.) Thesis Communication with an

Automatic Computer (1959)

Doctoral advisor Adriaan van Wijngaarden

Page 10: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

13

Εντολή επεξεργασίας

Πρόκειται για Black box εντολή,

είτε απλή (πχ τετραγώνισε τον X)

είτε σύνθετη (πχ υπολόγισε τον τόκο από την αποταμίευση κεφαλαίου)

Page 11: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

14

Δομή απόφασης

Αποφάσεις λαμβάνονται επί των τρεχουσών

τιμών των δεδομένων:

1. If (συνθήκη αληθής) then …

If «ο λογαριασμός του πελάτη είναι

αρνητικός» then «ενημέρωσε το

διευθυντή».

2. If (συνθήκη αληθής) then … else …

If «ο καιρός είναι καλός» then «πάμε

παραλία» else «πάμε σινεμά»

Page 12: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

15

Δομές επανάληψης (looping, loop)

Οι λύσεις πολλών προβλημάτων απαιτούν την επανάληψη μιας διαδικασίας για κάποιο αριθμό φορών:

• For k=1 to 100

…εντολές

endFor k

• While (συνθήκη αληθής)

…εντολές

endWhile

• Repeat

…εντολές

Until (συνθήκη αληθής)

Page 13: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

ΔΟΜΗ if-then-else

• Εντολή if – then – else με παραδείγματα και

• Επίλυση ασκήσεων

• Σχεσιακοί τελεστές (relational operators)

• Λογικοί τελεστές (λογική άλγεβρα)

• Συναρτήσεις αποφάσεων στην Python

Page 14: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λαμβάνοντας ΑΠΟΦΑΣΕΙΣ

Ισχυρή δυνατότητα των γλωσσών προγραμματισμού: ΣΥΓΚΡΙΣΕΙΣ

Αριθμητική έκφραση «είναι» παράσταση με αριθμούς, μεταβλητές και τελεστές +, , *, /, **

Πχ x2 – y–2 + 3*log(x4) – sin(y/3)

Οι συγκρίσεις γίνονται μεταξύ αριθμητικών εκφράσεων

Μια σύγκριση δημιουργεί μια σχεσιακή έκφραση(relational expression)

Page 15: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Σχεσιακή έκφραση ή συνθήκη:

Α**2 > 10*Β

Είναι είτε Αληθής (True) είτε Ψευδής (False)

Γενική μορφή σχεσιακής έκφρασης

Αριθμητική

έκφραση

Σχεσιακός

τελεστής →

Αριθμητική

έκφραση

Page 16: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Σχεσιακοί τελεστές

Τελεστής σε Python Μαθηματικός ισοδύναμος

< <

> >

== =

!=

<=

>=

Page 17: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Σχεσιακές εκφράσεις (συγκρίσεις)

Έκφραση Μαθηματική ισοδύναμη

b*b < 4*a*c b2 < 4ac

K == J k = j

Temp >= 32.0 Temp 32.0

A >= 0 a 0

(I+j) != 3 (I+j) 3

X*X-Y*Y <= 3 x2-y2 3

Το αποτέλεσμα μιας σχεσιακής έκφρασης

είναι είτε True είτε False.

Page 18: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παραδείγματα

Έκφραση είναι

10 < 10 False

10 == 10 True

6 >= 5 True

A == B True αν Α ισούται με Β,

ειδάλλως False

b2 - 4ac < 0

b2 - 4ac == 0 True είναι μόνο μία εξ αυτών

b2 - 4ac > 0

Page 19: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

If συνθήκη αληθής then

εκτελούνται εντολές

Endif

Αν δεν ισχύει η συνθήκη, αγνοούνται οι

εντολές (μετά το then).

1. Η δομή if-then

Page 20: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

if συνθήκη αληθής:

εκτελούνται εντολές

εντολές

Endif

Αν δεν ισχύει η συνθήκη, αγνοούνται οι

εντολές (μετά το then).

1. Η δομή if-then στην Python

Στοίχιση εντολών

Page 21: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Α=8

Β=5

C=3

if Β^2-4*Α*C < 0:

print (“migadikes rizes”) #εντολή

Πράγματι Β^2-4*Α*C = 5^2-4*8*3=25-

96=-71 άρα τυπώνει «migadikes rizes»

Παράδειγμα 1

Page 22: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα 2

Δίνεται ακέραιος ariQmos: 1 ariQmos 99.

Ελέγχομε αν η μεταβλητή ariQmos έχει

μονοψήφια ή διψήφια τιμή:

If ariQmos < 10:

print (“Μονοψήφιος”)

If ariQmos > 9:

print (“Διψήφιος”)

Αυτά τα if μπορούν να

γραφούν σε μία

σύνθετη εντολή if με

χρήση του else →

Page 23: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα 3, συνέχεια του Παραδείγματος 2

Έστω 1 ariQmos 99.

Ελέγχομε αν η μεταβλητή ariQmos έχει

μονοψήφια ή διψήφια τιμή:

if ariQmos < 10:

print (“Μονοψήφιος”)

else:

print (“Διψήφιος”)

Page 24: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

If (συνθήκη αληθής) then

‘ εκτελούνται εντολές

else ‘ άρα η ανωτέρω συνθήκη είναι ψευδής

‘ εκτελούνται εντολές

Endif

2. Η δομή if-then-else

Page 25: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα 4: Πρόγραμμα 3Ο χρήστης εισάγει δύο αριθμούς από το

πληκτρολόγιο και το πρόγραμμα τυπώνει την

ανισότητα που ικανοποιούν.

Δίνονται αριθμοί a και b

If a > b Then

Print a; " > "; b

Else

Print a; " <= "; b

End If

Python ?

if a > b:

print (a, " > “, b)

else:

print (a, " <= “, b)

Page 26: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

If (συνθήκη 1 αληθής) then

‘ εκτελούνται εντολές

Εlse

If (συνθήκη 2 αληθής) then

‘ εκτελούνται εντολές

Εlse

‘ εκτελούνται εντολές

Endif

Endif

3. Η ένθετη δομή if-then-else

Page 27: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

If (συνθήκη 1 αληθής) then

‘ εκτελούνται εντολές

ΕlseIf (συνθήκη 2 αληθής) then

‘ εκτελούνται εντολές

Εlse

‘ εκτελούνται εντολές

Endif

4. Η ένθετη δομή ElseIf

Page 28: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός

if συνθήκη 1 αληθής:

‘ εντολές

elif συνθήκη 2 αληθής:

‘ εντολές

else:

‘ εντολές

4. Η ένθετη δομή ElseIf σε Python

Page 29: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Το γράψιμο με ένθετα if-then-elseif απαιτεί

εμπειρία, αλλά θεωρείται δείγμα υψηλής

τεχνικής.

Page 30: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη
Page 31: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα 5:

Ζητείται η επίλυση της εξίσωσης αx+b=0

Αλγόριθμος:

αν a0 τότε x = -b/a

αν a=0 τότε

αν b=0, αόριστη

διαφορετικά (b 0), αδύνατη

Page 32: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Αλγόριθμος – διάγραμμα ροής

Τέλος

a 0

x = - b/a

αόριστη

αδύνατη

b 0

Αρχή

NAI

OXI

NAI

OXI

Page 33: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Υλοποίηση σε Python:

Το πρόγραμμα χρησιμοποιεί την ένθετη(εγκλωβισμένη) if-then-elseif -…- endif

If a != 0:

x=-b/a

elif b != 0:

print (“adynati”)

else:

print (“aoristi”)

Page 34: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Κι άλλα παραδείγματα με if-then-else

.

Page 35: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα: άρτιος ή περιττός

Έλεγχος αν o 6 είναι άρτιος

int(6 / 2) * 2 = 3 * 2 = 6, άρα ο 6 είναι

άρτιος

Έλεγχος αν o 5 είναι περιττός

int(5 / 2) * 2 = 2 * 2 = 4 διάφορος 5, άρα 5

περιττός

>>> x=3

>>> if x%2 == 0:

... print ('x is even')

... else:

... print ('x is odd')

...

x is odd

Page 36: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

άρτιος ή περιττός

Έλεγχος αν o i είναι άρτιος ή περιττός

if i == int(i/2)*2:

print (“Άρτιος”)

else:

print (“Περιττός”)

>>> x=3

>>> if x%2 == 0:

... print ('x is even')

... else:

... print ('x is odd')

...

x is odd

Page 37: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Επειδή οι πραγματικοί αριθμοί δεν κρατώνται με πλήρη ακρίβεια στον υπολογιστή, ΠΡΟΣΟΧΗ να μην χρησιμοποιούνται οι σχεσιακοί τελεστές = και ≠ σε αριθμητικές συγκρίσεις που εμπλέκουν μη ακέραιους αριθμούς.

Για να εξετάσομε αν οι πραγματικοί αριθμοί Χ1 και Χ2 είναι (προσεγγιστικά) ίσοι, συνιστάται η χρήση μιας συνθήκης ή έκφρασης της μορφής

abs(X1-X2) < tol

όπου, πχ. tol = 0.5Ε-4 δηλ. tol = 0.510-4

Σύγκριση πραγματικών αριθμών

Page 38: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα: Έλεγχος ισότητας

πραγματικών αριθμών (με ποια ακρίβεια;)

Α = 1 / 82 [A=0.01219512]

Β = Α * 82 [B=0.01219512*82=0.99999984]

if B == 1:

print (“ισότητα”)

else:

print (“ανισότητα”, Β)

RUN (δίνει)

ανισότητα 0.9999999

Page 39: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα: Έλεγχος ισότητας

πραγματικών αριθμών

Α = 1 / 82

Β = Α * 82

if abs (B – 1) < 0.00001:

print (“ισότητα”)

else:

print (“ανισότητα”, Β)

RUN

ισότητα

Page 40: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

default tolerance (εσωτερική συνάρτηση)

rel_tol = 1e-09

Υποθέτει ότι δύο αριθμοί είναι περίπου ίδιοι σε

9 δεκαδικά ψηφία.

Page 41: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός της συνάρτησης προσήμου

Αναπτύξτε πρόγραμμα.

| | / , 0sign( )

0, 0

x x xx

x

Page 42: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Ορισμός της συνάρτησης προσήμου

Έστω signx η μεταβλητή που κρατά το πρόσημο:

if x != 0:

signx = abs(x)/x

else:

signx = 0

| | / , 0sign( )

0, 0

x x xx

x

Page 43: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λογικές εκφράσεις

Page 44: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λογικές σταθερές και μεταβλητές

Λογικές σταθερές: Είναι True, False

Πχ 5>3, 6<4 είναι λογικές σταθερές

print True δίνει True

print 5>3 δίνει True

print 6<4 δίνει False

Τιμές μιας Λογικής μεταβλητής είναι: True, False

Πχ blnLogic = True

blnFound = False

Page 45: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λογικές εκφράσεις και λογικοί τελεστές

Λογική έκφραση είναι μια ακολουθία

σχεσιακών εκφράσεων που συνδέονται

με τους λογικούς τελεστές

NOT

AND

OR, XOR

ορισμός →

b*b < 4*a*c

Page 46: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παραδείγματος χάριν,

Page 47: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λογική έκφραση ή συνθήκη = Παράσταση

λογικών σταθερών, μεταβλητών και

τελεστών.

Πχ k = 0, x < 3, y > x

X < 3 or Y > 5, -1 < x and x < 1

abs(a+b-c) <= 0.5E-5

not (k=0) σημαίνει k±0

Το αποτέλεσμα μιας λογικής έκφρασης είναι

αποκλειστικά είτε True είτε False.

Page 48: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

!!!

The three standard input streams -

standard input (STDIN), standard

output (STDOUT) and standard

error (STDERR) - are not original

or unique to the Python

programming language. They’re

language agnostic concepts.

Page 49: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη
Page 50: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

59

•Γέννηση: 22 Φεβρουαρίου

1903, Κέιμπριτζ, Ηνωμένο Βασίλειο

•Απεβίωσε: 19 Ιανουαρίου 1930, Guy's

Hospital, Λονδίνο, Ηνωμένο Βασίλειο

•Σύζυγος: Λετίς Ράμσεϊ (νύμφ. 1925–

1930)

•Επιρροές: Λούντβιχ

Βίτγκενσταϊν, Μπέρτραντ Ράσελ, Τσαρλς

Περς, Τσάρλς Κέι Όγκντεν

•Εκπαίδευση: Κολέγιο του

Γουίντσεστερ, Κολέγιο Τρίνιτι στο

Κέμπριτζ, Μώντλιν Κόλετζ

Page 51: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Τι σημαίνουν οι λογικοί τελεστές

Page 52: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Λογικοί τελεστές – ορισμός

NOT Άρνηση, αναιρεί συνθήκη

If NOT(X <= 0) then print X; “θετικός”

AND Σύζευξη, ισχύουν αμφότερες οι συνθήκες:

If X>0 AND X<5 Then print “ανάμεσα”

OR Διάξευξη, ισχύει η μία συνθήκη ή και οι δύο

If (L=“N”) OR (L=“n”) then print “No”

XOR Αποκλειστική διάζευξη, αν ισχύει η μία

συνθήκη, όχι όμως και οι δύο, ισχύει η πράξη

If Χ > 3 ΧΟR Μ = 5 then …

Page 53: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Τελεστής σε VB Λογικός ισοδύναμος

Not not - άρνηση

And and - σύζευξη

Or or - διάζευξη

Λογικοί τελεστές και ιεραρχία

Page 54: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Πίνακας αληθείας Not

Έκφραση Not Έκφραση Αποτέλεσμα

Αληθής Not Αληθής Ψευδής

Ψευδής Not Ψευδής Αληθής

Page 55: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Πίνακας αληθείας And

Έκφραση 1 Έκφραση 2 Ε1 And E2 Αποτέλεσμα

Ψ Ψ Ψ And Ψ Ψ

Ψ A Ψ And A Ψ

Α Ψ A And Ψ Ψ

Α A A And A A

Page 56: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Πίνακας αληθείας Or

Έκφραση 1 Έκφραση 2 Ε1 Or E2 Αποτέλεσμα

Ψ Ψ Ψ Or Ψ Ψ

Ψ A Ψ Or A A

Α Ψ A Or Ψ A

Α A A Or A A

Page 57: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Εκτίμηση λογικής έκφρασης:

Το αποτέλεσμα μιας λογικής έκφρασης είναι

είτε True είτε False.

Κανόνας:

1. Πρώτα οι αριθμητικές πράξεις (αποτίμηση εκφράσεων)

2. Έπειτα οι σχεσιακές εκφράσεις (>,<,== …)

3. Τέλος οι λογικοί τελεστές (not / and / or, xor)

Πχ E1 or E2 and E3

Σημαίνει:

E1 or (E2 and E3) και όχι (E1 or E2) and E3

Page 58: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα

a x b, η διπλή ανισότητα γράφεται

a <= x AND x <= b

Παράδειγμα

Το συμπλήρωμα του

x > 0

είναι

x <= 0

και γράφεται

ΝΟΤ ( x > 0 )

Page 59: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα

5 <= a And a <= 25

γράφεται ισοδύναμα ως

Not (5 > a Or a > 25)

Page 60: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα Να βρεθεί η τιμή της λογικής έκφρασης

Α< 0 OR B=2 AND X>7 XOR Y>9

όταν A=-1, B=2, X=1, Y=12

Απάντηση

Πρώτα εκτιμούμε τις σχεσιακές εκφράσεις (σύγκριση αριθμών):

Α< 0 είναι True, B=2 είναι True, X>7 είναι False, Y>9 είναι True

Έπειτα εκτιμούμε τις λογικές εκφράσεις με ιεραρχία (not, and, or):

B=2 AND X>7 True AND False είναι False

Στη συνέχεια:

Προσοχή:

Τrue XOR True είναι False

true OR false XOR true

true XOR true

Page 61: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

Παράδειγμα Να βρεθεί η τιμή της λογικής έκφρασης

A<0 OR B=2 AND (X>7 XOR Y>9)

όταν A=-1, B=2, X=1, Y=12

Απάντηση

Πρώτα η παρένθεση (X>7 XOR Y>9)

Έπειτα το AND

Έπειτα το OR

Page 62: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ · 2020-04-13 · Λογικές εκφράσεις και λογικοί τελεστές Λογική έκφραη

ΤΕΛΟΣ