ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Σχετικά έγγραφα
Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Πραγµατικοί αριθµοί κινητής υποδιαστολής Floating Point Numbers. Σ. Τσιτµηδέλης ΤΕΙ ΧΑΛΚΙΔΑΣ

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Νεκτάριος Κοζύρης ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

Επανάληψη για τις Τελικές εξετάσεις

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Αλγόριθµοι και Πολυπλοκότητα

Πράξεις με δυαδικούς αριθμούς

Ελίνα Μακρή

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Κεφάλαιο 5ο: Εντολές Επανάληψης

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Ψηφιακοί Υπολογιστές

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

Δομημένος Προγραμματισμός (ΤΛ1006)

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

Δομημένος Προγραμματισμός (ΤΛ1006)

ιαφάνειες παρουσίασης #3

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Σ ή. : υαδικά. Ε ό. ή Ενότητα

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Υπολογιστική Πολυπλοκότητα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομές Δεδομένων Ενότητα 2

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Συστήματα Αρίθμησης. Συστήματα Αρίθμησης 1. PDF created with FinePrint pdffactory Pro trial version

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Σφάλματα (errors) Σε κάθε υπολογισμό μιας πραγματικής ποσότητας υπάρχει σφάλμα

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 7 και 8: Αναπαραστάσεις. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αρχιτεκτονικές Υπολογιστών

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Αλγόριθμοι και Πολυπλοκότητα

Θεωρία Αποφάσεων και Βελτιστοποίηση

Εισαγωγή στην Επιστήμη των Υπολογιστών

Ασυμπτωτικός Συμβολισμός

Εισαγωγή στην επιστήμη των υπολογιστών. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ και Μετατροπές Αριθμών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 12

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

Δομές Δεδομένων & Αλγόριθμοι

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

4.3. Γραµµικοί ταξινοµητές

1.4 Αριθμητική υπολογιστών και σφάλματα

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Ψηφιακά Κυκλώματα Ι. Μάθημα 1: Δυαδικά συστήματα - Κώδικες. Λευτέρης Καπετανάκης

Συναρτήσεις. Εισαγωγή

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Κεφάλαιο 10 ο Υποπρογράµµατα

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

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

Κεφάλαιο 2 Η έννοια και η παράσταση της πληροφορίας στον ΗΥ. Εφ. Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος 1

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Εργαστηριακή Άσκηση 1

Transcript:

ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 2 ο Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Αλγόριθµοι Ορισµός Παράδειγµα Ασυµπτωτική Ανάλυση Ανασκόπηση Αφηρηµένοι Τύποι εδοµένων Ορισµός Ακέραιος Πραγµατικός Πίνακας Σύνολο Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 2

Αλγόριθµος Σαφώς καθορισµένη υπολογιστική διεργασία που επιλύει ένα συγκεκριµένο πρόβληµα έχεται ως είσοδο ένα σύνολο από τιµές και παράγει ως έξοδο ένα σύνολο από τιµές Αφηρηµένη ιδέα ανεξάρτητη από τη µηχανή εκτέλεσης Μπορεί να περιγραφεί µε τις βασικές δοµές µιας γλώσσας προγραµµατισµού (ψευδο-κώδικα) χωρίς τις συντακτικές λεπτοµέρειες της γλώσσας Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 3

Ένα Πρόβληµα ίνεται ένα διάνυσµα x από n ακέραιους αριθµούς 31-41 59 26-53 58 97-93 -23 84 Ζητείται το µεγαλύτερο άθροισµα στοιχείων σε οποιαδήποτε συνεχόµενο υποδιάνυσµα x[i..j] του διανύσµατος x 31-41 59 26-53 58 97-93 -23 84 59 + 26 53 + 58 + 97 = 187 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 4

Λύση Εξετάζουµε µε τη σειρά όλα τα ζεύγη i,j µε 0<=i<j<n Για κάθε ζεύγος i,j υπολογίζουµε το άθροισµα Ελέγχουµε αν το άθροισµα αυτό είναι µεγαλύτερο από το µέγιστο άθροισµα που βρήκαµε µέχρι τώρα j k = i x [ k] Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 5

Ψευδο-κώδικας maxsofar = 0 for i = 1..n for j = i..n sum = 0 for k = i..j sum += x[k] maxsofar = max(maxsofar, sum) Κόστος <= n (i βρόχος) X n (j βρόχος) X n (k βρόχος) = n 3 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 6

Βελτιωµένη Λύση Το άθροισµα ενός υποδιανύσµατος x[i..j] είναι προσαύξηση κατά x[j] του αθροίσµατος του αµέσως προηγούµενου υποδιανύσµατος x[i..j-1] Άρα µπορούµε να παραλείψουµε το βρόχο k Μειώνουµε τους υπολογισµούς και το χρόνο εκτέλεσης Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 7

Ψευδο-κώδικας (2) maxsofar = 0 for i = 1..n sum = 0 for j = i..n sum += x[j] maxsofar = max(maxsofar, sum) Κόστος Υπολογισµού <= n (i βρόχος) X n (j βρόχος) = n 2 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 8

Ασυµπτωτική Ανάλυση Ρυθµός αύξησης του χρόνου υπολογισµού ενός αλγορίθµου στο όριο της τιµής εισόδου, δηλαδή καθώς το µεγέθος της τιµής εισόδου αυξάνει απεριόριστα Μας ενδιαφέρει µόνο ο ρυθµός αύξησης χρόνου εκτέλεσης Παραλείπουµε όρους χαµηλής τάξης και πολλαπλασιαστικές σταθερές Παράδειγµα Για i:1..n έχουµε n επαναλήψεις του εξωτερικού βρόχου Για j:i..n έχουµε (n+n-1 + n-2 + + 1) = n(n+1)/2 = n 2 +n/2 επαναλήψεις του εσωτερικού βρόχου Μας ενδιαφέρει ο ρυθµός αύξησης n 2 του χρόνου εκτέλεσης Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 9

Ασυµπτωτικός Συµβολισµός Έστω πραγµατικές συναρτήσεις πραγµατικής µεταβλητής f και g και σταθερές c και N έτσι ώστε f(n) <= c g(n) για κάθε n >= N Γράφουµε f = O (g) «η f είναι µεγάλο όµικρον της g» Εννοούµε ότι όταν το n γίνει αρκετά µεγάλο, τότε κάποιο σταθερό πολλαπλάσιο της g(n) γίνεται άνω όριο της f(n) Για παράδειγµα n 2 +n/2 = O(n 2 ), επειδή µε c = 2 και Ν = 1 έχουµε n 2 +n/2 <= 2n 2 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 10

Αφηρηµένοι Τύποι εδοµένων (Α Τ) Ένας τύπος δεδοµένων ορίζει ένα σύνολο από τιµές και ένα σύνολο από πράξεις στις τιµές αυτές σε κάποια γλώσσα προγραµµατισµού Π.χ. ο τύπος int έχει ένα σύνολο από τιµές 0, +-1, +-2,... και τις πράξεις πρόσθεση (+), πολλαπλασιασµός (*),... Ένας αφηρηµένος τύπος δεδοµένων ορίζει ένα µαθηµατικό µοντέλο τύπου δεδοµένων, στο οποίο ο ορισµός των τιµών και των πράξεων διαχωρίζεται από την αναπαράσταση των τιµών και την υλοποίηση των πράξεων Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 11

Πλεονεκτήµατα των ΑΤ Αφαίρεση (abstraction) Επεξεργασία της πληροφορίας σε λογικό επίπεδο Ο προγραµµατιστής επικεντρώνεται στην επίλυση του προβλήµατος και όχι στις λεπτοµέρειες των τύπων δεδοµένων Απόκρυψη πληροφορίας (information hiding) Η αναπαράσταση των δεδοµένων και η υλοποίηση των πράξεων µπορεί να µεταβληθεί Ο κώδικας του υπόλοιπου προγράµµατος παραµένει ίδιος εφόσον η προδιαγραφή των δεδοµένων και η επίδραση των πράξεων παραµένει αµετάβλητη Το πρόγραµµα διασπάται σε τµήµατα που µπορούν να συντηρηθούν ανεξάρτητα Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 12

οµική Σχέση Στοιχείων ΑΤ Γραµµική Κάθε στοιχείο έχει το πολύ ένα άµεσο προηγούµενο και το πολύ ένα άµεσο επόµενο Ιεραρχική Κάθε στοιχείο έχει το πολύ ένα άµεσο προηγούµενο αλλά µπορεί να έχει πολλά άµεσα επόµενα στοιχεία ίκτυο Κάθε στοιχείο µπορεί να έχει πολλά άµεσα προηγούµενα και πολλά άµεσα επόµενα Σύνολο Τα στοιχεία δεν έχουν καµιά σχέση µεταξύ τους... Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 13

Ορισµός δεδοµένων Ακέραιοι αριθµοί Ορισµός πράξεων ΑΤ Ακέραιος Καταχώρηση αποθηκεύει έναν ακέραιο στη µνήµη Πρόσθεση επιστρέφει το ακέραιο άθροισµα δύο ακεραίων Αφαίρεση επιστρέφει την ακέραιη διαφορά δύο ακεραίων Πολλαπλασιασµός επιστρέφει ακέραιο γινόµενο δύο ακεραίων ιαίρεση επιστρέφει το ακέραιο πηλίκο δύο ακεραίων Υπόλοιπο επιστρέφει το ακέραιο υπόλοιπο δύο ακεραίων Μηδέν ελέγχει την ισότητα ενός ακεραίου µε το µηδέν Θετικός ελέγχει αν ο ακέραιος είναι θετικός Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 14

ΑΤ Ακέραιος (2) Αναπαράσταση δεδοµένων n=16 bits µε συµβολισµό συµπληρώµατος ως προς 2 Προσηµασµένοι αριθµοί στο διάστηµα [-2 n-1.. 2 n-1-1] Το αριστερότερο bit υποδηλώνει το πρόσηµο Οι θετικοί ακολουθούν την κανονική δυαδική σειρά Π.χ. 0=(0...000 2 ), 1=(0...001 2 ),... Οι αρνητικοί προκύπτουν µε πρόσθεση 1 στο συµπλήρωµα Π.χ. (0..0001 2 =1) γίνεται (1..1110 2 ) που δίνει (1..1111 2 =-1) Υλοποίηση πράξεων void kataxorisi( int *i, int stoixeio ) { *i = stoixeio; } Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 15

Ορισµός δεδοµένων Πραγµατικοί αριθµοί Ορισµός πράξεων ΑΤ Πραγµατικός Καταχώρηση αποθηκεύει ένα πραγµατικό στη µνήµη Πρόσθεση επιστρέφει το άθροισµα δύο πραγµατικών Αφαίρεση επιστρέφει τη διαφορά δύο πραγµατικών Πολλαπλασιασµός επιστρέφει το γινόµενο δύο πραγµατικών ιαίρεση επιστρέφει το πηλίκο δύο πραγµατικών Αποκοπή επιστρέφει το ακέραιο µέρος του πραγµατικού Θετικός ελέγχει αν ο πραγµατικός είναι θετικός Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 16

ΑΤ Πραγµατικός Αναπαράσταση δεδοµένων x = s b e k = 1 b s το πρόσηµο (+-1) p f k k, e min b καθορίζει το σύστηµα αρίθµησης (συνήθως 2) e η τιµή του εκθέτη (exponent) p το πλήθος των ψηφίων της βάσης (significand, mantissa) f k τα ψηφία της βάσης (significand, mantissa), 0<= f k <b Π.χ. IEEE Standard for Binary Floating-Point Arithmetic float b=2, p=24, e min =-125, e max =+128 double b=2, p=53, e min =-1021, e max =+1024 e e max βάση f1...fp εκθέτης e Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 17

Ορισµός δεδοµένων ΑΤ Πίνακας Γραµµική διάταξη στοιχείων σταθερού πλήθους και ίδιου τύπου δεδοµένων Αντιστοιχία µεταξύ στοιχείων και ακέραιων δεικτών Ορισµός πράξεων ηµιουργία επιστρέφει εναν κενό πίνακα Αποθήκευση δέχεται το όνοµα του πίνακα, την τιµή του δείκτη και την τιµή του στοιχείου, την οποία καταχωρεί στο στοιχείο του πίνακα που αντιστοιχεί στην τιµή του δείκτη Ανάκτηση δέχεται το όνοµα του πίνακα και την τιµή του δείκτη για να επιστρέψει την τιµή του στοιχείου που αντιστοιχεί στην τιµή του δείκτη Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 18

ΑΤ Πίνακας (2) Αναπαράσταση δεδοµένων #define PLITHOS 1000 typedef int stoixeio_t; typedef stoixeio_t pinakas_t[plithos]; Υλοποίηση πράξεων void kataxorisi(pinakas_t a, int i, stoixeio_t s) { } if ((0 <= i) && (i <= PLITHOS 1)) a[i] = s; else printf( Λάθος τιµή δείκτη ); Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 19

Ορισµός δεδοµένων ΑΤ Σύνολο Μια συλλογή από στοιχεία που είναι µοναδικά, ίδιου τύπου δεδοµένων, άσχετα µεταξύ τους Ορισµός Πράξεων ηµιουργία κενού σύνολου, δηµιουργία καθολικού συνόλου Εισαγωγή στοιχείου, διαγραφή στοιχείου Μέλος ελέγχει αν ένα στοιχείο ανήκει σε ένα σύνολο Κενό ελέγχει αν ένα σύνολο είναι κενό Ισότητα ελέγχει την ισότητα δύο συνόλων Υποσύνολο ελέγχει αν το σύνολο Α είναι υποσύνολο του Β Ένωση, τοµή και διαφορά δύο συνόλων Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 20

ΑΤ Σύνολο (2) Αναπαράσταση δεδοµένων #define MEG_PLITHOS 1000 typedef int synolo_t[plithos]; Υλοποίηση πράξεων void katholiko(synolo_t synolo) { for (int s = 0; s < MEG_PLITHOS; s++) synolo[s] = 1; } void eisagogi(int s, synolo_t synolo) { synolo[s - 1] = 1; } Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 21

ΑΤ Σύνολο (3) Υλοποίηση πράξεων (συνέχεια) int melos(int s, synolo_t synolo) { return synolo[s-1]; } void diagrafi(int s, synolo_t synolo) { synolo[s - 1] = 0; } int keno_synolo(synolo_t synolo) { int s = 1, keno = 1; while ((s <= MEG_PLITHOS) && keno) if (melos(s, synolo)) keno = 0; else s++; return keno; } Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 22

Εφαρµογή του ΑΤ Σύνολο Κόσκινο του Ερατοσθένη (194 π.χ.) ίνεται θετικός ακέραιος n Να βρεθούν όλοι οι πρώτοι αριθµοί µεταξύ 1 και n Λύση ηµιουργούµε το σύνολο των ακεραίων 1..n ιαγράφουµε τον 1 (δεν είναι πρώτος αριθµός) Ενόσω το σύνολο δεν είναι κενό Βρίσκουµε το µικρότερο στοιχείο του τρέχοντος συνόλου (είναι πρώτος αριθµός) ιαγράφουµε το στοιχείο αυτό µαζί µε όλα τα πολλαπλάσιά του από το σύνολο Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 23

#define n MEG_PLITHOS Υλοποίηση Αλγορίθµου void koskinoeratostheni() { int i, j, epomeno; synolo_t koskino; } katholiko(koskino); diagrafi(1, koskino); epomeno = 1; while (!keno_synolo(koskino)) { while (!melos(epomeno, koskino)) epomeno++; printf( %d, epomeno); } for (j = epomeno; j <= n; j += epomeno) diagrafi(j, koskino); Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 24