HY 100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

32
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης Αντώνιος Σαββίδης , , Χρήστος Νικολάου Χρήστος Νικολάου

description

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. HY 100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ. ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης , Χρήστος Νικολάου. ΕΝΟΤΗΤΑ Ι ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Διάλεξη 4η. Περιεχόμενα. Αυτοματοποίηση χρήσης τετραδίου Εντολή εκχώρησης - PowerPoint PPT Presentation

Transcript of HY 100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Page 1: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ,

ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ,ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ,

ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

ΔΙΔΑΣΚΟΝΤΕΣΔΙΔΑΣΚΟΝΤΕΣΑντώνιος ΣαββίδηςΑντώνιος Σαββίδης, , Χρήστος ΝικολάουΧρήστος Νικολάου

Page 2: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΝΟΤΗΤΑ ΙΕΝΟΤΗΤΑ ΙΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Διάλεξη 4η Διάλεξη 4η

Page 3: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Περιεχόμενα

• Αυτοματοποίηση χρήσης τετραδίου

• Εντολή εκχώρησης

• Αριθμητικές εκφράσεις

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

• Εντολές ελέγχου ροής

Page 4: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αυτοματοποίηση χρήσης τετραδίου (1/3)

• Είδαμε ότι για να χρησιμοποιήσουμε παραμέτρους κάνουμε τα εξής:

1. Προσδιορίζουμε τον κατάλληλο τύπο δεδομένων Τ

2. Προσδιορίζουμε τις Κ σειρές του τετραδίου που απαιτούνται για τον τύπο Τ

• Δεχόμαστε ότι οι απλοί τύποι χρειάζονται μία (1) σειρά τετραδίου

3. Βρίσκουμε Κ ελεύθερες συνεχόμενες σειρές στο τετράδιο

4. Δηλώνουμε ότι τις χρησιμοποιούμε για τον συγκεκριμένο τύπο Τ και με μοναδικό συμβολικό όνομα της επιλογής μας

5. Στο πρόγραμμά μας αναφερόμαστε στις σειρές αυτής της παραμέτρου μέσω του συμβολικού ονόματος,

• και με εκφραστικό τρόπο που «αρμόζει» στον τύπο δεδομένων Τ

Page 5: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αυτοματοποίηση χρήσης τετραδίου (2/3)

• Η ευθύνη μας ως προγραμματιστές:

1. Προσδιορισμός κατάλληλου τύπου Τ

2. Δήλωση συμβολικού αναγνωριστικού Α τύπου Τ• Δηλ. δήλωση μεταβλητής Α τύπου Τ

3. Χρήση της μεταβλητής Α στο πρόγραμμά μας «όπως πρέπει»• Ενώ ο υπηρέτης αναλαμβάνει:

1. Να βρει τόσες ελεύθερες θέσεις μνήμης όσες αποθηκευτικά χρειάζεται ο συγκεκριμένος τύπος Τ

2. Να τις αντιστοιχίσει με το συμβολικό αναγνωριστικό Α

3. Να αντικαταστήσει όλες τις αναφορές μέσω του αναγνωριστικού Α στις κατάλληλες αναφορές σε συγκεκριμένες σειρές του τετραδίου

Page 6: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αυτοματοποίηση χρήσης τετραδίου (3/3)

• Το πρόγραμμα απόλυτης τιμής με δύο τρόπουςΜε αυτόματη χρήση

μνήμηςΜε χειροκίνητη χρήση μνήμης

REAL x;

INPUT(x); INPUT(POSITION(0,0));

IF x >= 0 THEN

OUTPUT(x);

ELSE

OUTPUT(–x);

IF POSITION(0,0) >= 0 THEN

OUTPUT(POSITION(0,0));

ELSE

OUTPUT(-POSITION(0,0));

Εάν δεν δοθεί αριθμός,Εάν δεν δοθεί αριθμός,ο υπηρέτης θα βγάλει ο υπηρέτης θα βγάλει runtime error runtime error

στην εντολή εισόδου.στην εντολή εισόδου.

Εάν δεν δοθεί αριθμός,Εάν δεν δοθεί αριθμός,ο υπηρέτης θα βγάλει ο υπηρέτης θα βγάλει runtime error runtime error στηνστην

εντολή υπολογισμού του αντίθετουεντολή υπολογισμού του αντίθετουαριθμού.αριθμού.

Page 7: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εντολή εκχώρησης (1/4)

• Είναι της μορφής Μεταβλητή = Έκφραση;• Μεταβλητή είναι ένα αναγνωριστικό όνομα ή έκφραση μεταβλητής

(που έχει δηλωθεί στο πρόγραμμα)• Έκφραση μπορεί να είναι (προς το παρόν)

– Μεταβλητή• x, y, P[9], arxh.x, telos.y

– Αριθμητική έκφραση• (x+y)/2 * (arxh.x – telos.x)/2

– Ανάγνωση περιεχομένου από θυρίδα εισόδου• Μετά την ανάγνωση το περιεχόμενο που διαβάστηκε

αφαιρείται• x = GETINPUT;• P[3] = GETINPUT;

Page 8: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εντολή εκχώρησης (2/4)

• Διευκρινίσεις για την GETINPUT– Στην έκφραση GETINPUT ο υπηρέτης κάνει τα εξής:

• Ζητάει από την είσοδο να του δώσετε κάποια τιμή. • Επειδή δεν γνωρίζει τι τύπου πρόκειται να είναι η τιμή αυτή,

θα δείτε να γράφεται GETINPUT, (undefined):• Στην συνέχεια, αφού διαβάσει το περιεχόμενο της θυρίδας

εισόδου που θα δώσετε, αντικαθιστά την έκφραση GETINPUT με την τιμή αυτή

• Π.χ. εάν έχουμε x = GETINPUT; και δώσετε την τιμή 42 ως είσοδο, ο υπηρέτης, αντικαθιστώντας την έκφραση GETINPUT με την τιμή 42, θα προχωρήσει στην εκτέλεση της εντολής εκχώρησης x=42;

Page 9: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Ένθετο - GETINPUT

inputinput

Διάβασε από τα Διάβασε από τα εισερχόμενα εισερχόμενα

«κάτι»«κάτι»

outputoutput

Αποθήκευσέ το σε Αποθήκευσέ το σε προσωρινή ελεύθερη προσωρινή ελεύθερη θέση του τετραδίουθέση του τετραδίου

Γράψε στα εξερχόμενα Γράψε στα εξερχόμενα το περιεχόμενο αυτής το περιεχόμενο αυτής

της προσωρινής θέσηςτης προσωρινής θέσης

Το πρόγραμμα αυτό γράφει Το πρόγραμμα αυτό γράφει στην έξοδο ότι διαβάζει στην στην έξοδο ότι διαβάζει στην είσοδο ανεξαρτήτως τύπου είσοδο ανεξαρτήτως τύπου

(ήταν θέμα εξέτασης το 2005)(ήταν θέμα εξέτασης το 2005)

Page 10: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εντολή εκχώρησης (3/4)

• Παράδειγμα εκχωρήσεων

RECORD Point

RECBEGIN

INTEGER x,y;

RECEND;

Point first, last;

INTEGER a, b;

Ορισμός σύνθετου τύπου

Δήλωση μεταβλητών

Δήλωση μεταβλητών

first.x = GETINPUT;

first.y = GETINPUT;

last.x = GETINPUT;

last.y = GETINPUT;

a = last.x - first.x;

b = last.y – first.y;

Εκχώρηση από είσοδο

Εκχώρηση από είσοδο

Εκχώρηση από είσοδο

Εκχώρηση από είσοδο

Εκχώρηση αριθμ. έκφρασης

Εκχώρηση αριθμ. έκφρασης

Page 11: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εντολή εκχώρησης (4/4)

a = a = last.xlast.x – – first.x first.x

Θέση(Θέση(σελίδασελίδα ((last.xlast.x), ), σειράσειρά ((last.xlast.x) ) ) )

Θέση(Θέση(σελίδασελίδα ((first.xfirst.x), ), σειράσειρά ((first.xfirst.x) ) ) )

--

Θέση(Θέση( σελίδασελίδα ((x), x), σειράσειρά ((x) ) x) )

Η παραπάνω εκχώρηση εκτελείται από τον Η παραπάνω εκχώρηση εκτελείται από τον υπηρέτη σε τέσσερα απλά βήματαυπηρέτη σε τέσσερα απλά βήματα::

1. Ανέλκυση περιεχομένου μεταβλητής (1. Ανέλκυση περιεχομένου μεταβλητής (READ)READ)

2. Ανέλκυση περιεχομένου μεταβλητής2. Ανέλκυση περιεχομένου μεταβλητής (READ) (READ)

3. Αφαίρεση3. Αφαίρεση (SUB) (SUB)

4. Αποθήκευση αποτελέσματος σε μεταβλητή4. Αποθήκευση αποτελέσματος σε μεταβλητή (WRITE) (WRITE)

Page 12: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Ένθετο εκχωρήσεις

• Έχω δύο μεταβλητές x και y. Θέλω να ανταλλάξω το περιεχόμενο τους, δηλ. αν x=5 και y=8 να γίνει x=8 και y=5.

INTEGER x, y;

PROGRAM_BEGIN

INPUT(x); INPUT(y);

OUTPUT(x); OUTPUT(y);

/* Τι εντολή(-ες) γράφω εδώ? */

OUTPUT(x); OUTPUT(y);

PROGRAM_ENDINTEGER temp;

temp = x;

x = y;

y = temp;

1. Χρειάζομαι μία βοηθητική σειρά τετραδίου για να κρατήσω το περιεχόμενο της μεταβλητής που θα αλλάξει πρώτη!

2. Προφανώς πρέπει να αποθηκεύσω στην μεταβλητή temp την μεταβλητή που θα αλλάξει πρώτη…πριν την εντολή στην οποία αλλάζει!

3. Αλλάζουμε την πρώτη μεταβλητή εκχωρώντας την τιμή της δεύτερης

4. Αλλάζουμε την δεύτερη μεταβλητή εκχωρώντας την αποθηκευμένη τιμή της πρώτης

Page 13: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (1/8)

• Είδαμε ήδη τις βασικές αριθμητικές πράξεις + * / - • Για αυτές υπάρχουν κάποιοι κανόνες προτεραιότητας κατά την

εκτέλεση– Το μοναδιαίο - έχει τη μεγαλύτερη προτεραιότητα – Ακολουθούν τα * /– Ακολουθούν τα + -

• Η έκφραση x * y + z / w * -k θα εκτελεστεί ως:– (x * y) + (( z / w) * (-k))– …και όχι όπως θα υπολογίζονταν σε ένα κομπιουτεράκι τσέπης,

δηλ. ως (((x * y) + z) / w) * (-k)– …ωστόσο εάν δεν θυμάστε ακριβώς τους κανόνες, βάλετε

παρενθέσεις για να επιβάλλετε εσείς την επιθυμητή προτεραιότητα.

Page 14: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (2/8)

x * y + z / w * -kx * y + z / w * -k

Υπολογισμός μίας αριθμητικής έκφρασηςΥπολογισμός μίας αριθμητικής έκφρασηςαπό τον υπηρέτη μαςαπό τον υπηρέτη μας

x

y

z

w

k

**

**--

// ++

(x*y) αυτόματοενδιάμεσο

αποτέλεσμα

(z/w) αυτόματοενδιάμεσο

αποτέλεσμα

(-k) αυτόματοενδιάμεσο

αποτέλεσμα

((z/w) * (-k)) αυτόματοενδιάμεσο

αποτέλεσμα

(x*y) + ((z/w) * (-k))τελικό

αποτέλεσμα

Πρ

οη

γείτ

αι η

ανέ

λκυ

ση

περ

ιεχ

ομ

ένο

υΠ

ρο

ηγε

ίτα

ι η α

νέλκ

υσ

η π

εριε

χο

μέν

ου

μετ

αβ

λητή

ς, γ

ια κ

άθε

μετ

αβ

λητή

μετ

αβ

λητή

ς, γ

ια κ

άθε

μετ

αβ

λητή

Αυτό ονομάζεται δέντρο

αποτίμησης αριθμητικής

έκφρασης

Αυτό ονομάζεται δέντρο

αποτίμησης αριθμητικής

έκφρασης

Page 15: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (3/8)

• Γιατί ο υπηρέτης δημιουργεί αυτό το δέντρο?– Οι βασικές αριθμητικές πράξεις είναι δυαδικές, δηλ.

ορίζονται μόνο πάνω σε δύο ορίσματα κάθε φορά.– Επομένως πρέπει να υπολογιστούν τέτοια ζευγάρια,

και έπειτα το αποτέλεσμα της κάθε πράξης να θεωρηθεί ως αυτοτελής τιμή που θα εμπλακεί σε επόμενη πράξη.

– Π.χ. x+y+z σημαίνει (x+y) + z ή x + (y+z). Ο υπηρέτης προτιμά την πρώτη περίπτωση.

– Για την αποθήκευση των ενδιάμεσων αποτελεσμάτων ο υπηρέτης χρησιμοποιεί και πάλι ελεύθερες σειρές του τετραδίου.

Page 16: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (4/8)

• Παράδειγμα– a = (x1-y1) * (x2-y2) + (x3-y3)

Κατειλημμένη

Κατειλημμένη

(x1-y1)

Κατειλημμένη

Κατειλημμένη

(x1-y1)

(x2-y2)

Κατειλημμένη

Κατειλημμένη

(x1-y1)*(x2-y2)

(x2-y2)

Κατειλημμένη

Κατειλημμένη

(x1-y1)*(x2-y2)

(x3-y3)

Κατειλημμένη

Κατειλημμένη

Αποτέλεσμα

(x3-y3)

Βήμα 1Βήμα 1

Βήμα 2Βήμα 2

xx11yy11

--

xx22yy22

--

xx33yy33

--

**

++

Βήμα 1Βήμα 1

Βήμα 2Βήμα 2

Βήμα 3Βήμα 3

Βήμα 4Βήμα 4

Βήμα 5Βήμα 5

Βήμα Βήμα 33

Βήμα Βήμα 44

Βήμα 5Βήμα 5

Page 17: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (5/8)

• Επιπλέον υποστηρίζονται και οι παρακάτω μαθηματικές συναρτήσεις, για ορίσματα INTEGER ή REAL, τις οποίες ήδη γνωρίζει να τις υπολογίζει ο υπηρέτης:– Τετράγωνο, sqr(x)

• π.χ. η εκχώρηση z = sqr(x+y) σημαίνει για τον υπηρέτη:

1. Διάβασε τα περιεχόμενα των μεταβλητών x και y,

2. Πρόσθεσέ τα,

3. Βάλε το αποτέλεσμα ως όρισμα της συνάρτησης sqr, και υπολόγισέ την,

4. Εκχώρησε το αποτέλεσμα του υπολογισμού στη μεταβλητής z.

– Τετραγωνική ρίζα, sqrt(x)– Ημίτονο, sin(θ), θ σε μοίρες– Συνημίτονο, cos(θ), θ σε μοίρες– Εφαπτομένη, tan(θ), θ σε μοίρες

Page 18: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (6/8)

• Παράδειγμα (1/3)– Πρόβλημα

• Θέλουμε να προγραμματίσουμε τον υπηρέτη να υπολογίζει το μήκος των καθέτων πλευρών οποιουδήποτε ορθογώνιου τριγώνου, όταν δίνονται:

– Μήκος υποτείνουσας Γ– Μία οξεία γωνία φ

– Γεωμετρική λύση• Α = cos(φ) * Γ• Β = sin(φ) * Γ

– Πρόγραμμα• Παράμετροι είναι το φ και το Γ• Μπορούμε να γράψουμε ένα πρόγραμμα που να υπολογίζει τη

λύση?

ΓΓΑΑ

ΒΒ

φφ

Page 19: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (7/8)

• Παράδειγμα (2/3)

REAL A, B, C, phi; 1. Δηλώσεις

INPUT(phi);

INPUT(C);

2. Είσοδος παραμέτρων

A = cos(phi) * C;

B = sin(phi) * C;

3. Υπολογισμός

OUTPUT(A);

OUTPUT(B);

4. Έξοδος αποτελεσμάτων

Αυτή είναι και μία γενική δομή απλών προβλημάτων επιστημονικώνΑυτή είναι και μία γενική δομή απλών προβλημάτων επιστημονικώνυπολογισμών (υπολογισμών (scientific computation problems)scientific computation problems)

Page 20: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Αριθμητικές εκφράσεις (8/8)

• Παράδειγμα (3/3)ΓΓ=120=120

ΑΑ=60=60

ΒΒ = 104 = 104

6060

3030

ΓΓ=78=78ΑΑ=67.5=67.5

ΒΒ = 39 = 396060

3030

ΓΓ=112=112ΑΑ=79.2=79.2

ΒΒ = 79.2 = 79.24545

4545

Πάντοτε «τρέχουμε» αρκετές φορές το πρόγραμμά μας και πιστοποιούμε ότιΠάντοτε «τρέχουμε» αρκετές φορές το πρόγραμμά μας και πιστοποιούμε ότιοι λύσεις που παράγει ανταποκρίνονται στην πραγματικότητα.οι λύσεις που παράγει ανταποκρίνονται στην πραγματικότητα.

Page 21: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (1/6)

• Ο υπολογισμός των λογικών εκφράσεων καταλήγει σε αποτέλεσμα που είναι αληθές (true) ή ψευδές (false).

• Οι λογικές εκφράσεις ανήκουν στις εξής κατηγορίες:– Συσχετιστικές με χρήση των δυαδικών τελεστών διάταξης.

Επιτρέπονται μόνο μεταξύ αριθμών και strings (λεξικογραφική διάταξη):

> >= < <=– Συσχετιστικές με χρήση των τελεστών ισότητας (επιτρέπονται για

όλους τους τύπους):EQUAL DIFFERENT

– Σύζευξης, διάζευξης και άρνησης (επιτρέπονται μόνο μεταξύ λογικών εκφράσεων και μεταβλητών τύπου BOOLEAN):

AND OR NOT

Page 22: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (2/6)

• ΠαραδείγματαINTEGER x,y;

PROGRAM_BEGIN

INPUT(x);

INPUT(y);

OUTPUT(x > y);

PROGRAM_END

INTEGER x,y;

BOOLEAN b;

PROGRAM_BEGIN

INPUT(x);

INPUT(y);

b = x > y;

OUTPUT(b);

PROGRAM_END

Page 23: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (3/6)

• ΠαραδείγματαSTRING a,b;

PROGRAM_BEGIN

INPUT(a);

INPUT(b);

OUTPUT(a > b);

PROGRAM_END

Λεξικογραφική διάταξη για τιμές τύπου Λεξικογραφική διάταξη για τιμές τύπου stringstring

INTEGER x,y,z;

PROGRAM_BEGIN

INPUT(x); INPUT(y); INPUT(z);

OUTPUT((x+y) EQUAL (y+z) OR x DIFFERENT z);

PROGRAM_END

Αυτή η έκφραση είναι Αυτή η έκφραση είναι πάντα αληθήςπάντα αληθήςγια κάθε για κάθε x, y, zx, y, z

Page 24: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (4/6)

• Πίνακες αποτίμησης εκφράσεων λογικών τελεστών OR, AND και NOT

AND, Λογική σύζευξη

Όρισμα 1 Όρισμα 2 Αποτέλεσμα

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE

OR, Λογική διάζευξη

Όρισμα 1 Όρισμα 2 Αποτέλεσμα

TRUE TRUE TRUE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE

NOT, Λογική άρνηση

Όρισμα Αποτέλεσμα

TRUE FALSE

FALSE TRUE

Προτεραιότητα

NOT

AND

OR

Οι λογικοί τελεστέςΟι λογικοί τελεστέςέχουν μικρότερη έχουν μικρότερη

προτεραιότητα από τους προτεραιότητα από τους συσχετιστικούςσυσχετιστικούς,,

και αυτοί μικρότερη από και αυτοί μικρότερη από τους αριθμητικούςτους αριθμητικούς

Page 25: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (5/6)

• Δέντρο αποτίμησης λογικών εκφράσεων– x >=y AND z < w OR NOT b

Κατειλημμένη

Κατειλημμένη

(x >= y)

Κατειλημμένη

Κατειλημμένη

(x >= y)

(z < w)

Κατειλημμένη

Κατειλημμένη

(x>=y) AND (x<w)

(z<w)

Κατειλημμένη

Κατειλημμένη

(x>=y) AND (x<w)

NOT b

Κατειλημμένη

Κατειλημμένη

Αποτέλεσμα

NOT b

Βήμα 1Βήμα 1

Βήμα 2Βήμα 2

xx

yy

>=>=

zz

ww<<

bb

ANDAND

Βήμα 1Βήμα 1

Βήμα 2Βήμα 2

Βήμα 3Βήμα 3

Βήμα 4Βήμα 4

Βήμα 5Βήμα 5

Βήμα Βήμα 33

Βήμα Βήμα 44

Βήμα 5Βήμα 5

OROR

NOTNOT

Page 26: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Λογικές εκφράσεις (6/6)

• Από το σημείο αυτό, ο υπηρέτης γνωρίζει πώς να αποτιμήσει μία έκφραση που περιλαμβάνει αριθμητικούς, συγκριτικούς και λογικούς τελεστές με ένα μόνο δέντρο,

• …αφού γνωρίζει όλους τους κανόνες προτεραιότητας υπολογισμού εκφράσεων

( ) παρενθέσεις

Αριθμητικές εκφράσεις

Συγκριτικοί τελεστές

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

ΑυξανόμενηΑυξανόμενηπροτεραιότηταπροτεραιότητα

BOOLEAN b;

PROGRAM_BEGIN

INPUT(b);

OUTPUT(b AND NOT b);

OUTPUT(b OR NOT b);

PROGRAM_END

•Προσοχή στον έλεγχο των λογικών εκφράσεων που γράφετε.•Μπορούμε να ελέγξουμε και κάποιους κανόνες της λογικής.

Page 27: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εντολές ελέγχου ροής

• Έως τώρα οι περισσότερες εντολές προέτρεπαν σε μία ακολουθιακή εκτέλεση, δηλ απλώς «η μία μετά την άλλη».

• Ωστόσο, θα πρέπει να μπορούμε να οδηγούμε τον υπηρέτη στην εκτέλεση εντολών– είτε υπό συνθήκη, δηλ. εάν «ισχύει κάτι», κάνουμε τον

υπολογισμό Α, αλλιώς τον υπολογισμό Β– είτε επαναληπτικά, δηλ. κάνουμε τον υπολογισμό Α

ως ότου πληρείται κάποια συγκεκριμένη τερματική συνθήκη Β

– …άλλωστε κάτι τέτοιο έχουμε δει ότι υποστηρίζεται και σε απλά έγγραφα με οδηγίες που περιγράφουν κάποιες αλγοριθμικές διαδικασίες

Page 28: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εκτέλεση υπό συνθήκη (1/5)

• Είναι γνωστή και σαν εντολή διακλάδωσης, έχοντας την παρακάτω γενική μορφή:

– ΕΑΝ Λογική Έκφραση ΤΟΤΕ Εντολή1 ΑΛΛΙΩΣ Εντολή2

– IF Λογική Έκφραση THEN Εντολή1 ELSE Εντολή2

– Το υπογραμμισμένο τμήμα είναι προαιρετικό • Όταν ο υπηρέτης καλείται να εκτελέσει μία τέτοια εντολή, κάνει τα

εξής:1. Υπολογίζει την τιμή της λογικής έκφρασης2. Εάν είναι αληθής, προχωράει στην εκτέλεση της Εντολής1

3. Αλλιώς (ψευδής), εάν έχει δοθεί και ELSE εντολή προχωρά στην εκτέλεση της Εντολή2

4. Όταν βρίσκει ELSE το συσχετίζει πάντα με το πιο κοντινό IF ο οποίο δεν βρίσκεται μέσα σε άλλο block.

Page 29: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εκτέλεση υπό συνθήκη (2/5)

• Παράδειγμα• Υπολογισμός τετραγωνικής ρίζας αριθμού εισόδουREAL x;

PROGRAM_BEGIN

INPUT(x);

IF x < 0 THEN

OUTPUT("Square root of negative number!");

ELSE

OUTPUT(sqrt(x));

PROGRAM_END

Page 30: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εκτέλεση υπό συνθήκη (3/5)

• Αφού μία εντολή IF…THEN…ELSE ορίζεται ως εντολή, κανείς δεν εμποδίζει η Εντολή1 ή Εντολή2 να είναι και αυτές εντολές διακλάδωσης.

• Θέλουμε ένα πρόγραμμα που διαβάζει από την είσοδο τα μήκη των πλευρών ενός τριγώνου και να γράφει στην έξοδο εάν το τρίγωνο είναι ισόπλευρο, ισοσκελές ή σκαληνό.

aa

bb

cc

1.1. Αν Αν a=b a=b και και b=c b=c τότε ισόπλευροτότε ισόπλευρο2.2. Αν Αν a=b a=b ή ή b=c b=c ή ή a=c a=c τότε ισοσκελέςτότε ισοσκελές3.3. Αν δεν ισχύει το 1 ή το 2, τότε σκαληνόΑν δεν ισχύει το 1 ή το 2, τότε σκαληνό

Page 31: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εκτέλεση υπό συνθήκη (4/5)REAL a,b,c;

PROGRAM_BEGIN

INPUT(a); INPUT(b); INPUT(c);

IF a EQUAL b AND b EQUAL c THEN

OUTPUT("ISOPLEURO");

ELSE

IF a EQUAL b OR a EQUAL c OR b EQUAL c THEN

OUTPUT("ISOSKELES");

ELSE

OUTPUT("SKALHNO");

PROGRAM_END

Εδώ θα έπρεπε να βάλουμε Εδώ θα έπρεπε να βάλουμε και μία ακόμη εντολή και μία ακόμη εντολή

διακλάδωσης διακλάδωσης για έλεγχο θετικώνγια έλεγχο θετικών

τιμών μήκους!!τιμών μήκους!!

Page 32: HY 100  :  ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ

Εκτέλεση υπό συνθήκη (5/5)

• Τέλος, υπάρχει και η περίπτωση των λεγόμενων «φωλιασμένων» εντολών διακλάδωσης.REAL x;

PROGRAM_BEGIN

INPUT(x);

IF x < 0 THEN

IF x < -1000 THEN

OUTPUT("x in (-a, -1000)");

ELSE

OUTPUT("x in [-1000, 0)");

ELSE

IF x < 1000 THEN

OUTPUT("x in [0, 1000)");

ELSE

OUTPUT("x in [1000, +a)");

PROGRAM_END