1 / 32

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

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

sarah
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. ΕΝΟΤΗΤΑ Ι ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διάλεξη 4η

  3. Περιεχόμενα • Αυτοματοποίηση χρήσης τετραδίου • Εντολή εκχώρησης • Αριθμητικές εκφράσεις • Λογικές εκφράσεις • Εντολές ελέγχου ροής

  4. Αυτοματοποίηση χρήσης τετραδίου (1/3) • Είδαμε ότι για να χρησιμοποιήσουμε παραμέτρους κάνουμε τα εξής: • Προσδιορίζουμε τον κατάλληλο τύπο δεδομένων Τ • Προσδιορίζουμε τις Κσειρές του τετραδίου που απαιτούνται για τον τύπο Τ • Δεχόμαστε ότι οι απλοί τύποι χρειάζονται μία (1) σειρά τετραδίου • Βρίσκουμε Κ ελεύθερες συνεχόμενες σειρές στο τετράδιο • Δηλώνουμε ότι τις χρησιμοποιούμε για τον συγκεκριμένο τύπο Τ και με μοναδικό συμβολικό όνομα της επιλογής μας • Στο πρόγραμμά μας αναφερόμαστε στις σειρές αυτής της παραμέτρου μέσω του συμβολικού ονόματος, • και με εκφραστικό τρόπο που «αρμόζει» στον τύπο δεδομένων Τ

  5. Αυτοματοποίηση χρήσης τετραδίου (2/3) • Η ευθύνη μας ως προγραμματιστές: • Προσδιορισμός κατάλληλου τύπου Τ • Δήλωση συμβολικού αναγνωριστικού Ατύπου Τ • Δηλ. δήλωση μεταβλητής Α τύπου Τ • Χρήση της μεταβλητής Αστο πρόγραμμά μας «όπως πρέπει» • Ενώ ο υπηρέτης αναλαμβάνει: • Να βρει τόσες ελεύθερες θέσεις μνήμης όσες αποθηκευτικά χρειάζεται ο συγκεκριμένος τύπος Τ • Να τις αντιστοιχίσει με το συμβολικό αναγνωριστικό Α • Να αντικαταστήσει όλες τις αναφορές μέσω του αναγνωριστικού Α στις κατάλληλες αναφορές σε συγκεκριμένες σειρές του τετραδίου

  6. Αυτοματοποίηση χρήσης τετραδίου (3/3) • Το πρόγραμμα απόλυτης τιμής με δύο τρόπους Εάν δεν δοθεί αριθμός, ο υπηρέτης θα βγάλει runtime error στην εντολή υπολογισμού του αντίθετου αριθμού. Εάν δεν δοθεί αριθμός, ο υπηρέτης θα βγάλει runtime error στην εντολή εισόδου.

  7. Εντολή εκχώρησης (1/4) • Είναι της μορφής Μεταβλητή = Έκφραση; • Μεταβλητήείναι ένα αναγνωριστικό όνομα ή έκφραση μεταβλητής (που έχει δηλωθεί στο πρόγραμμα) • Έκφρασημπορεί να είναι (προς το παρόν) • Μεταβλητή • x, y, P[9], arxh.x, telos.y • Αριθμητική έκφραση • (x+y)/2 * (arxh.x – telos.x)/2 • Ανάγνωση περιεχομένου από θυρίδα εισόδου • Μετά την ανάγνωση το περιεχόμενο που διαβάστηκε αφαιρείται • x = GETINPUT; • P[3] = GETINPUT;

  8. Εντολή εκχώρησης (2/4) • Διευκρινίσεις για την GETINPUT • Στην έκφραση GETINPUT ο υπηρέτης κάνει τα εξής: • Ζητάει από την είσοδο να του δώσετε κάποια τιμή. • Επειδή δεν γνωρίζει τι τύπου πρόκειται να είναι η τιμή αυτή, θα δείτε να γράφεται GETINPUT, (undefined): • Στην συνέχεια, αφού διαβάσει το περιεχόμενο της θυρίδας εισόδου που θα δώσετε, αντικαθιστά την έκφραση GETINPUT με την τιμή αυτή • Π.χ. εάν έχουμε x = GETINPUT;και δώσετε την τιμή 42 ως είσοδο, ο υπηρέτης, αντικαθιστώντας την έκφραση GETINPUT με την τιμή 42, θα προχωρήσει στην εκτέλεση της εντολής εκχώρησης x=42;

  9. Ένθετο - GETINPUT Το πρόγραμμα αυτό γράφει στην έξοδο ότι διαβάζει στην είσοδο ανεξαρτήτως τύπου (ήταν θέμα εξέτασης το 2005) output input Διάβασε από τα εισερχόμενα «κάτι» Γράψε στα εξερχόμενα το περιεχόμενο αυτής της προσωρινής θέσης Αποθήκευσέ το σε προσωρινή ελεύθερη θέση του τετραδίου

  10. Εντολή εκχώρησης (3/4) • Παράδειγμα εκχωρήσεων

  11. - Εντολή εκχώρησης (4/4) a = last.x – first.x Η παραπάνω εκχώρηση εκτελείται από τον υπηρέτη σε τέσσερα απλά βήματα: Θέση(σελίδα(last.x), σειρά(last.x) ) 1. Ανέλκυση περιεχομένου μεταβλητής (READ) 3. Αφαίρεση (SUB) Θέση(σελίδα(first.x), σειρά(first.x) ) 2. Ανέλκυση περιεχομένου μεταβλητής (READ) Θέση(σελίδα(x), σειρά(x) ) 4. Αποθήκευση αποτελέσματος σε μεταβλητή (WRITE)

  12. Ένθετο εκχωρήσεις • Έχω δύο μεταβλητές x και y. Θέλω να ανταλλάξω το περιεχόμενο τους, δηλ. αν x=5 και y=8 να γίνει x=8 και y=5. 1. Χρειάζομαι μία βοηθητική σειρά τετραδίου για να κρατήσω το περιεχόμενο της μεταβλητής που θα αλλάξει πρώτη! 2. Προφανώς πρέπει να αποθηκεύσω στην μεταβλητή temp την μεταβλητή που θα αλλάξει πρώτη…πριν την εντολή στην οποία αλλάζει! 3. Αλλάζουμε την πρώτη μεταβλητή εκχωρώντας την τιμή της δεύτερης 4. Αλλάζουμε την δεύτερη μεταβλητή εκχωρώντας την αποθηκευμένη τιμή της πρώτης

  13. Αριθμητικές εκφράσεις (1/8) • Είδαμε ήδη τις βασικές αριθμητικές πράξεις + * / - • Για αυτές υπάρχουν κάποιοι κανόνες προτεραιότητας κατά την εκτέλεση • Το μοναδιαίο - έχει τη μεγαλύτερη προτεραιότητα • Ακολουθούν τα * / • Ακολουθούν τα + - • Η έκφραση x * y + z / w * -k θα εκτελεστεί ως: • (x * y) + (( z / w) * (-k)) • …και όχι όπως θα υπολογίζονταν σε ένα κομπιουτεράκι τσέπης, δηλ. ως (((x*y)+z)/w)* (-k) • …ωστόσο εάν δεν θυμάστε ακριβώς τους κανόνες, βάλετε παρενθέσεις για να επιβάλλετε εσείς την επιθυμητή προτεραιότητα.

  14. + * * - / Αριθμητικές εκφράσεις (2/8) Υπολογισμός μίας αριθμητικής έκφρασης από τον υπηρέτη μας x * y + z / w * -k x (x*y)αυτόματο ενδιάμεσο αποτέλεσμα y (x*y) + ((z/w) * (-k)) τελικό αποτέλεσμα Προηγείται η ανέλκυση περιεχομένου μεταβλητής, για κάθε μεταβλητή z (z/w)αυτόματο ενδιάμεσο αποτέλεσμα w ((z/w) * (-k))αυτόματο ενδιάμεσο αποτέλεσμα Αυτό ονομάζεται δέντρο αποτίμησης αριθμητικής έκφρασης k (-k)αυτόματο ενδιάμεσο αποτέλεσμα

  15. Αριθμητικές εκφράσεις (3/8) • Γιατί ο υπηρέτης δημιουργεί αυτό το δέντρο? • Οι βασικές αριθμητικές πράξεις είναι δυαδικές, δηλ. ορίζονται μόνο πάνω σε δύο ορίσματα κάθε φορά. • Επομένως πρέπει να υπολογιστούν τέτοια ζευγάρια, και έπειτα το αποτέλεσμα της κάθε πράξης να θεωρηθεί ως αυτοτελής τιμή που θα εμπλακεί σε επόμενη πράξη. • Π.χ. x+y+zσημαίνει (x+y) + zή x + (y+z). Ο υπηρέτης προτιμά την πρώτη περίπτωση. • Για την αποθήκευση των ενδιάμεσων αποτελεσμάτων ο υπηρέτης χρησιμοποιεί και πάλι ελεύθερες σειρές του τετραδίου.

  16. Βήμα 1 x1 Βήμα 3 y1 Βήμα 2 x2 + Βήμα 5 * y2 Βήμα 4 x3 - - - y3 Αριθμητικές εκφράσεις (4/8) • Παράδειγμα • a = (x1-y1) * (x2-y2) + (x3-y3) Βήμα 1 Βήμα 4 Βήμα 5 Βήμα 2 Βήμα 3

  17. Αριθμητικές εκφράσεις (5/8) • Επιπλέον υποστηρίζονται και οι παρακάτω μαθηματικές συναρτήσεις, για ορίσματα INTEGER ή REAL, τις οποίες ήδη γνωρίζει να τις υπολογίζει ο υπηρέτης: • Τετράγωνο, sqr(x) • π.χ. η εκχώρηση z =sqr(x+y) σημαίνει για τον υπηρέτη: • Διάβασε τα περιεχόμενα των μεταβλητών x και y, • Πρόσθεσέ τα, • Βάλε το αποτέλεσμα ως όρισμα της συνάρτησηςsqr, και υπολόγισέ την, • Εκχώρησε το αποτέλεσμα του υπολογισμού στη μεταβλητής z. • Τετραγωνική ρίζα, sqrt(x) • Ημίτονο, sin(θ), θ σε μοίρες • Συνημίτονο, cos(θ), θ σε μοίρες • Εφαπτομένη, tan(θ), θ σε μοίρες

  18. φ Γ Α Β Αριθμητικές εκφράσεις (6/8) • Παράδειγμα (1/3) • Πρόβλημα • Θέλουμε να προγραμματίσουμε τον υπηρέτη να υπολογίζει το μήκος των καθέτων πλευρών οποιουδήποτε ορθογώνιου τριγώνου, όταν δίνονται: • Μήκος υποτείνουσας Γ • Μία οξεία γωνία φ • Γεωμετρική λύση • Α = cos(φ) * Γ • Β = sin(φ) * Γ • Πρόγραμμα • Παράμετροι είναι το φ και το Γ • Μπορούμε να γράψουμε ένα πρόγραμμα που να υπολογίζει τη λύση?

  19. Αριθμητικές εκφράσεις (7/8) • Παράδειγμα (2/3) Αυτή είναι και μία γενική δομή απλών προβλημάτων επιστημονικών υπολογισμών (scientific computation problems)

  20. Αριθμητικές εκφράσεις (8/8) • Παράδειγμα (3/3) Γ=120 60 Α=60 30 Β = 104 Γ=78 30 Α=67.5 60 Β = 39 Γ=112 45 Α=79.2 45 Β = 79.2 Πάντοτε «τρέχουμε» αρκετές φορές το πρόγραμμά μας και πιστοποιούμε ότι οι λύσεις που παράγει ανταποκρίνονται στην πραγματικότητα.

  21. Λογικές εκφράσεις (1/6) • Ο υπολογισμός των λογικών εκφράσεων καταλήγει σε αποτέλεσμα που είναι αληθές (true) ή ψευδές (false). • Οι λογικές εκφράσεις ανήκουν στις εξής κατηγορίες: • Συσχετιστικές με χρήση των δυαδικών τελεστών διάταξης. Επιτρέπονται μόνο μεταξύ αριθμών και strings (λεξικογραφική διάταξη): > >= < <= • Συσχετιστικές με χρήση των τελεστών ισότητας(επιτρέπονται για όλους τους τύπους): EQUAL DIFFERENT • Σύζευξης, διάζευξης καιάρνησης (επιτρέπονται μόνο μεταξύ λογικών εκφράσεων και μεταβλητών τύπου BOOLEAN): AND OR NOT

  22. Λογικές εκφράσεις (2/6) • Παραδείγματα

  23. Λογικές εκφράσεις (3/6) • Παραδείγματα Λεξικογραφική διάταξη για τιμές τύπου string Αυτή η έκφραση είναι πάντα αληθής για κάθε x, y, z

  24. Λογικές εκφράσεις (4/6) • Πίνακες αποτίμησης εκφράσεων λογικών τελεστών OR, AND καιNOT Οι λογικοί τελεστές έχουν μικρότερη προτεραιότητα από τους συσχετιστικούς, και αυτοί μικρότερη από τους αριθμητικούς

  25. Λογικές εκφράσεις (5/6) • Δέντρο αποτίμησης λογικών εκφράσεων • x >=y AND z < wOR NOT b Βήμα 1 x Βήμα 1 >= Βήμα 4 Βήμα 3 y AND Βήμα 2 z Βήμα 5 < Βήμα 5 OR w Βήμα 2 Βήμα 4 b NOT Βήμα 3

  26. Λογικές εκφράσεις (6/6) • Από το σημείο αυτό, ο υπηρέτης γνωρίζει πώς να αποτιμήσει μία έκφραση που περιλαμβάνει αριθμητικούς, συγκριτικούς και λογικούς τελεστές με ένα μόνο δέντρο, • …αφού γνωρίζει όλους τους κανόνες προτεραιότητας υπολογισμού εκφράσεων • Προσοχή στον έλεγχο των λογικών εκφράσεων που γράφετε. • Μπορούμε να ελέγξουμε και κάποιους κανόνες της λογικής. Αυξανόμενη προτεραιότητα

  27. Εντολές ελέγχου ροής • Έως τώρα οι περισσότερες εντολές προέτρεπαν σε μία ακολουθιακή εκτέλεση, δηλ απλώς «η μία μετά την άλλη». • Ωστόσο, θα πρέπει να μπορούμε να οδηγούμε τον υπηρέτη στην εκτέλεση εντολών • είτε υπό συνθήκη, δηλ. εάν «ισχύει κάτι», κάνουμε τον υπολογισμό Α, αλλιώς τον υπολογισμό Β • είτεεπαναληπτικά, δηλ. κάνουμε τον υπολογισμό Α ως ότου πληρείται κάποια συγκεκριμένη τερματική συνθήκη Β • …άλλωστε κάτι τέτοιο έχουμε δει ότι υποστηρίζεται και σε απλά έγγραφα με οδηγίες που περιγράφουν κάποιες αλγοριθμικές διαδικασίες

  28. Εκτέλεση υπό συνθήκη (1/5) • Είναι γνωστή και σαν εντολή διακλάδωσης, έχοντας την παρακάτω γενική μορφή: • ΕΑΝ Λογική Έκφραση ΤΟΤΕ Εντολή1ΑΛΛΙΩΣ Εντολή2 • IF Λογική Έκφραση THEN Εντολή1ELSE Εντολή2 • Το υπογραμμισμένο τμήμα είναι προαιρετικό • Όταν ο υπηρέτης καλείται να εκτελέσει μία τέτοια εντολή, κάνει τα εξής: • Υπολογίζει την τιμή της λογικής έκφρασης • Εάν είναι αληθής, προχωράει στην εκτέλεση της Εντολής1 • Αλλιώς (ψευδής), εάν έχει δοθεί και ELSE εντολή προχωρά στην εκτέλεση της Εντολή2 • Όταν βρίσκει ELSE το συσχετίζει πάντα με το πιο κοντινό IF ο οποίο δεν βρίσκεται μέσα σε άλλο block.

  29. Εκτέλεση υπό συνθήκη (2/5) • Παράδειγμα • Υπολογισμός τετραγωνικής ρίζας αριθμού εισόδου

  30. Εκτέλεση υπό συνθήκη (3/5) • Αφού μία εντολή IF…THEN…ELSE ορίζεται ως εντολή, κανείς δεν εμποδίζει η Εντολή1 ή Εντολή2 να είναι και αυτές εντολές διακλάδωσης. • Θέλουμε ένα πρόγραμμα που διαβάζει από την είσοδο τα μήκη των πλευρών ενός τριγώνου και να γράφει στην έξοδο εάν το τρίγωνο είναι ισόπλευρο, ισοσκελές ή σκαληνό. b • Αν a=b και b=c τότε ισόπλευρο • Αν a=b ή b=c ή a=c τότε ισοσκελές • Αν δεν ισχύει το 1 ή το 2, τότε σκαληνό a c

  31. Εκτέλεση υπό συνθήκη (4/5) Εδώ θα έπρεπε να βάλουμε και μία ακόμη εντολή διακλάδωσης για έλεγχο θετικών τιμών μήκους!!

  32. Εκτέλεση υπό συνθήκη (5/5) • Τέλος, υπάρχει και η περίπτωση των λεγόμενων «φωλιασμένων» εντολών διακλάδωσης.

More Related