ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Έρευνα προσομοίωσης διατάξεων (δομών) δεδομένων, διαφορετικών από την κελί με κελί οργάνωση της RAM του Ηλεκτρονικού υπολογιστή (Η/Υ). Εξοικείωση με την έννοια της χρήσης συλλογής δεδομένων ως αφηρημένα εργαλεία και πως αυτή οδηγεί στην έννοια των αντικειμένων και του αντικειμενοστραφούς προγραμματισμού. 4
Περιεχόμενα ενότητας Σκοπιές μελέτης-ορισμοί-βασικές λειτουργίες. Βασικές δομές δεδομένων. Σχετικές έννοιες. Υλοποίηση δομών δεδομένων. Μια σύντομη μελέτη περίπτωσης. Προσαρμοσμένοι τύποι δεδομένων. 5
Δομές δεδομένων και Τι είναι Δεδομένα; αλγόριθμοι Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας. Είναι ακατέργαστα γεγονότα και κάθε φορά η επιλογή τους εξαρτάται από την φύση του προβλήματος. 6
Σκοπιές μελέτης δεδομένων (1/2) 1. Δομών δεδομένων: Δομή δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών. Παράδειγμα δομής είναι η εγγραφή (record) και το αρχείο (file). Η εγγραφή αποτελείται από πεδία όπου αποθηκεύονται χαρακτηριστικά διαφορετικού τύπου. 7
Σκοπιές μελέτης δεδομένων (2/2) 2. Ανάλυσης δεδομένων: Μελετά τρόπους καταγραφής και αλληλοσυσχέτισης των δεδομένων ώστε να αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Σε αυτήν την σκοπιά ανήκουν οι τεχνολογίες των: Βάσεων δεδομένων, Μοντελοποίησης δεδομένων, και Αναπαράστασης της γνώσης. 8
Δομή δεδομένων Ορισμός: Είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Τα δεδομένα ενός προβλήματος αποθηκεύονται στον υπολογιστή, είτε στην κύρια μνήμη είτε στην δευτερεύουσα. Η αποθήκευση δεν γίνεται με τυχαίο τρόπο αλλά συστηματικά, δηλαδή χρησιμοποιώντας μία δομή. Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes). (ένας πίνακας 100 θέσεων έχει 100 κόμβους). 9
Βασικές λειτουργίες (πράξεις) των δομών δεδομένων (1/2) Προσπέλαση: πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να αλλάξει το περιεχόμενό του. Εισαγωγή: προσθήκη νέων κόμβων σε μία δομή. Διαγραφή: (αντίθετο της εισαγωγής), δηλαδή αφαίρεση ενός κόμβου από μία δομή. Αναζήτηση: γίνεται προσπέλαση των κόμβων μίας δομής προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μία δεδομένη ιδιότητα. 10
Βασικές λειτουργίες (πράξεις) των δομών δεδομένων (2/2) Ταξινόμηση: όπου οι κόμβοι διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή: όλοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη. Συγχώνευση: δύο ή περισσότερες δομές ενώνονται σε μία δομή. Διαχωρισμός: (αντίστροφα από την συγχώνευση). 11
Γιατί υπάρχουν διαφορετικές δομές; Στην πράξη σπάνια χρησιμοποιούνται και οι οκτώ λειτουργίες για κάποια δομή. Συνήθως μία δομή είναι αποδοτικότερη από μία άλλη σε κάποια λειτουργία. Άλλη είναι πιο αποδοτική στην αναζήτηση άλλη στην εισαγωγή κλπ. Ανάλογα με την λειτουργία επιλέγεται η κατάλληλη δομή. 12
Βασικές δομές δεδομένων Ομοιογενής πίνακας. Λίστα. Στοίβα. Ουρά. Δέντρο. 13
Ομοιογενείς πίνακες Ορισμός: Είναι μία δομή που περιέχει στοιχεία του ίδιου τύπου (π.χ. ακέραιους ή πραγματικούς αριθμούς). Η αναφορά στα στοιχεία του γίνεται με την χρήση του συμβολικού ονόματος του πίνακα ακολουθούμενου από την τιμή ενός ή περισσοτέρων δεικτών. Ο τρόπος δήλωσης του πίνακα και η μέθοδος αναφοράς του εξαρτάται από την γλώσσα προγραμματισμού που χρησιμοποιείται. Π.χ. στην γλώσσα C ή Java: A[3][4]. 14
Πίνακες Ένας πίνακας μπορεί να είναι μονοδιάστατος, δισδιάστατος, τρισδιάστατος και γενικά ν- διάστατος. Ειδικά για τους δισδιάστατους πίνακες αν το μέγεθος των δύο διαστάσεων είναι ίδιο τότε ο πίνακας ονομάζεται τετραγωνικός. Οι πίνακες χρησιμεύουν και για την αποθήκευση και διαχείριση δομών τύπου λίστας. 15
Λίστες Συλλογή δεδομένων με καταχωρίσεις σειριακά διατεταγμένες και συνδεδεμένες. Η αρχή ονομάζεται κεφαλή (head) ενώ το άλλο άκρο ονομάζεται ουρά (tail). 16
Στοίβα Μοιάζει με μία στοίβα από πιάτα. Τα δεδομένα που βρίσκονται στην κορυφή της στοίβας λαμβάνονται πρώτα (κορυφή η κεφαλή), ενώ αυτά που βρίσκονται στο βάθος λαμβάνονται τελευταία (βάση). Μέθοδος επεξεργασίας: Τελευταίο μέσα πρώτο έξω. Last In First Out (LIFO). 17
Κύριες λειτουργίες στοίβας (1/5) Ώθηση (push) ενός στοιχείου στην κορυφή της στοίβας. Απώθηση (pop) ενός στοιχείου από την κορυφή της στοίβας. Μπορεί να υλοποιηθεί με την βοήθεια ενός μονοδιάστατου πίνακα καθώς και μίας βοηθητικής μεταβλητής (δείκτης) με το όνομα top, η οποία δείχνει το στοιχείο που βρίσκεται στην κορυφή της στοίβας. 18
Κύριες λειτουργίες στοίβας (2/5) Ώθηση. Για την ώθηση ενός νέου στοιχείου στην στοίβα πρώτα αυξάνεται η μεταβλητή top κατά ένα και μετά στην θέση αυτή αποθηκεύεται το στοιχείο. Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει αν η στοίβα είναι γεμάτη αλλιώς λέγεται ότι συμβαίνει υπερχείλιση (overflow). 19
Κύριες λειτουργίες στοίβας (3/5) Απώθηση. Για την απώθηση ενός στοιχείου από την στοίβα απωθείται πρώτα το στοιχείο από την θέση top και ταυτόχρονα μειώνεται η μεταβλητή top κατά ένα. Η διαδικασία της απώθησης πρέπει οπωσδήποτε να ελέγχει αν υπάρχει τουλάχιστον ένα στοιχείο στην στοίβα αλλιώς λέγεται ότι συμβαίνει υποχείλιση (underflow). 20
Ουρές Μοιάζει με την ουρά μιας τράπεζας όπου περιμένουν να εξυπηρετηθούν οι πελάτες. Τα δεδομένα που βρίσκονται πρώτα στην ουρά λαμβάνονται πρώτα ενώ αυτά που βρίσκονται τελευταία στην ουρά λαμβάνονται τελευταία. Μέθοδος επεξεργασίας: Πρώτο μέσα πρώτο έξω. First In First Out (FIFO). 21
Κύριες λειτουργίες ουρών (4/5) Εισαγωγή (Enqueue) ενός στοιχείου στο πίσω άκρο της ουράς. Εξαγωγή (Dequeue) ενός στοιχείου από το εμπρός άκρο της ουράς. Μπορεί να υλοποιηθεί με την βοήθεια ενός μονοδιάστατου πίνακα και με δύο μεταβλητές (δείκτες) με τα ονόματα rear και front. Ο δείκτης front δείχνει την θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί. Ο δείκτης rear δείχνει την θέση του τελευταίου στοιχείου της ουράς. 22
Κύριες λειτουργίες ουρών (5/5) Εισαγωγή. Για την εισαγωγή ενός νέου στοιχείου στην ουρά πρώτα αυξάνεται ο δείκτης rear κατά ένα και μετά στην θέση αυτή αποθηκεύεται το στοιχείο. Εξαγωγή. Για την εξαγωγή ενός στοιχείου από την ουρά εξέρχεται πρώτα το στοιχείο από την θέση front και μετά αυξάνεται η front κατά ένα. 23
Δέντρα Είναι μια ομάδα καταχωρίσεων με ιεραρχική οργάνωση. Κάθε στοιχείο του δέντρου ονομάζεται κόμβος (node). Ο κόμβος της κορυφής ονομάζεται ρίζα. Οι κόμβοι που βρίσκονται «χαμηλότερα» ονομάζονται θυγατρικοί ή παιδιά. 24
Δέντρα (συνέχεια) Οι κόμβοι που περιέχουν θυγατρικούς ονομάζονται γονικοί. Κόμβοι που δεν περιέχουν θυγατρικούς ονομάζονται φύλλα. Βάθος δέντρου είναι το μήκος του μεγαλύτερου μονοπατιού από την κορυφή ως το μακρύτερο φύλλο. 25
Παράδειγμα οργανογράμματος Σχήμα 1: Παράδειγμα οργανογράμματος. Πηγή: BROOKSHEAR (2004). 26
Ορολογία δέντρων Σχήμα 2: Ορολογία δέντρων. Πηγή: BROOKSHEAR (2004). 27
Σχετικές έννοιες - Κατηγορίες δομών δεδομένων Οι δομές διακρίνονται σε δύο μεγάλες κατηγορίες: Δυναμικές και Στατικές. 28
Δυναμικές δομές Οι δομές αυτές δεν έχουν σταθερό μέγεθος αλλά ο αριθμός των κόμβων τους μεγαλώνει καθώς εισάγονται νέα δεδομένα και μικραίνει καθώς διαγράφονται. Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της δυναμικής παραχώρησης μνήμης (DMA: Dynamic Memory Allocation). Όλες οι σύγχρονες γλώσσες προγραμματισμού τις υποστηρίζουν. 29
Στατικές δομές Το ακριβές μέγεθός τους είναι σταθερό και καθορίζεται κατά την στιγμή του προγραμματισμού τους και όχι κατά την στιγμή της εκτέλεσης του προγράμματος. Οι κόμβοι τους αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Στην πράξη οι στατικές δομές υλοποιούνται με πίνακες. 30
Υλοποίηση δομών δεδομένων 31
Αποθήκευση δεδομένων σε μορφή πίνακα Σχήμα 3: Πίνακας με ενδείξεις θερμοκρασιών αποθηκευμένων στη μνήμη που ξεκινούν στη διεύθυνση x. Πηγή: BROOKSHEAR (2004). 32
Αποθήκευση δεδομένων σε διδιάστατο πίνακα Σχήμα 4: Διδιάστατος πίνακας με 4 γραμμές και 5 στήλες αποθηκευμένος σε διάταξη κατά γραμμές. Πηγή: BROOKSHEAR (2004). 33
Αποθηκεύοντας λίστες Συνεχόμενη (contiguous) λίστα είναι αυτή που αποθηκεύεται σε πίνακα. Συνδεδεμένη λίστα είναι αυτή που κάθε κόμβος δείχνει στον επόμενο. Ο δείκτης κεφαλής δείχνει στο πρώτο στοιχείο. Το τέλος μιας συνδεδεμένης λίστας σημειώνεται με τη χρήση του δείκτη NIL. 34
Μορφή συνεχόμενης λίστας Σχήμα 5: Ονόματα αποθηκευμένα στη μνήμη σε μορφή συνεχόμενης λίστας. Πηγή: BROOKSHEAR (2004). 35
Η δομή μιας συνδεδεμένης λίστας Σχήμα 6: Η δομή μιας συνδεδεμένης λίστας. Πηγή: BROOKSHEAR (2004). 36
Διαγραφή καταχώρισης από συνδεδεμένη λίστα Σχήμα 7: Διαγραφή καταχώρισης από συνδεδεμένη λίστα. Πηγή: BROOKSHEAR (2004). 37
Προσθήκη καταχώρισης σε συνδεδεμένη λίστα Σχήμα 8: Προσθήκη καταχώρισης σε συνδεδεμένη λίστα. Πηγή: BROOKSHEAR (2004). 38
Αποθηκεύοντας στοίβες και ουρές Χρησιμοποιούνται οι ίδιοι μηχανισμοί με τις λίστες. Η κυκλική ουρά είναι ένας ομοιογενής πίνακας όπου η πρώτη εγγραφή ακολουθεί την τελευταία. Προστατεύει την ουρά να μην διολισθήσει εκτός ορίων. 39
Κυκλική ουρά Σχήμα 9: Κυκλική ουρά. Πηγή: BROOKSHEAR (2004). 40
Μια στοίβα στη μνήμη Σχήμα 10: Μια στοίβα στη μνήμη. Πηγή: BROOKSHEAR (2004). 41
Υλοποίηση ουράς με δείκτες αρχής και τέλους. Παρατηρείστε πως γλιστράει η ουρά μέσα στη μνήμη καθώς προσθαφαιρούνται καταχωρίσεις. Σχήμα 11: Υλοποίηση ουράς με δείκτες αρχής και τέλους. Πηγή: BROOKSHEAR (2004). 42
Αποθηκεύοντας δυαδικό δέντρο Συνδεδεμένη δομή. Κάθε κόμβος περιέχει στοιχείο δεδομένων και δύο δείκτες προς θυγατρικούς κόμβους. Προσβάσιμο με δείκτη προς το ριζικό κόμβο. Χαρτογράφηση σε συνεχόμενη σειρά. A[1] = ρίζα. A[2],A[3] = παιδιά του A[1]. A[4],A[5],A[6],A[7] = παιδιά των A[2] και A[3]. 43
Η δομή ενός κόμβου δυαδικού δέντρου Σχήμα 12: Η δομή ενός κόμβου δυαδικού δέντρου. Πηγή: BROOKSHEAR (2004). 44
Νοητικό σχήμα δέντρου και υλοποίηση Σχήμα 13: Σχηματική και πραγματική οργάνωση ενός δυαδικού δέντρου με χρήση συστήματος αποθήκευσης με συνδέσεις. Πηγή: BROOKSHEAR (2004). 45
Αποθήκευση δέντρου χωρίς δείκτες Σχήμα 14: Αποθήκευση δέντρου χωρίς δείκτες. Πηγή: BROOKSHEAR (2004). 46
Αραιό, μη ισορροπημένο δέντρο αποθηκευμένο χωρίς δείκτες. Σχήμα 15: Σχηματική αναπαράσταση αραιού, μη ισορροπημένου δέντρου και η αποθήκευσή του χωρίς δείκτες. Πηγή: BROOKSHEAR (2004). 47
Χειρισμός δομών δεδομένων Ιδανικά μια δομή δεδομένων θα έπρεπε να διαχειρίζεται αποκλειστικά από προκαθορισμένες διαδικασίες. Π.χ. η στοίβα τυπικά χρειάζεται τουλάχιστον διαδικασίες ώθησης και απώθησης. Η δομή δεδομένων μαζί με τις διαδικασίες αποτελεί ένα πλήρες αφηρημένο εργαλείο. 48
Αλγόριθμοι + Δομές δεδομένων = Προγράμματα (1/2) Υπάρχει μεγάλη εξάρτηση μεταξύ της δομής δεδομένων και του αλγορίθμου που επεξεργάζεται αυτήν την δομή. Ο αλγόριθμος καθώς και η δομή που αυτός επεξεργάζεται θεωρείται ως μια αδιάσπαστη ενότητα. 49
Αλγόριθμοι + Δομές δεδομένων = Προγράμματα (2/2) Ο αλγόριθμος θα είναι εντελώς διαφορετικός όταν π.χ. η δομή είναι ένας μονοδιάστατος πίνακας και εντελώς διαφορετικός όταν η δομή είναι ένα δυαδικό δέντρο. Το πρόγραμμα διαχείρισης θα εξαρτάται και από την δομή αλλά και από τον αλγόριθμο. 50
Μια σύντομη μελέτη περίπτωσης 51
Τα γράμματα Α ως M σε ταξινομημένο δέντρο Σχήμα 16: Τα γράμματα Α ως M τοποθετημένα σε ταξινομημένο δέντρο. Πηγή: BROOKSHEAR (2004). 52
Αναζήτηση σε δυαδικό δέντρο 53
Διαδοχικά μικρότερα δέντρα για την αναζήτηση του γράμματος J Σχήμα 17: Διαδοχικά μικρότερα δέντρα για την αναζήτηση του γράμματος J. Πηγή: BROOKSHEAR (2004). 54
Εκτύπωση ταξινομημένου δέντρου αναζήτησης σε αλφαβητική σειρά Σχήμα 18: Εκτύπωση ταξινομημένου δέντρου αναζήτησης σε αλφαβητική σειρά. Πηγή: BROOKSHEAR (2004). 55
Υλοποίηση διαδικασίας εκτύπωσης δυαδικού δέντρου 56
Εισαγωγή της καταχώρισης Μ σε λίστα αποθηκευμένη ως δέντρο Σχήμα 19: Εισαγωγή της καταχώρισης Μ στη λίστα B, E, G, H, J, K, N, P αποθηκευμένης ως δέντρο. Πηγή: BROOKSHEAR (2004). 57
Διαδικασία εισαγωγής νέας καταχώρισης σε δυαδικό δέντρο 58
Προσαρμοσμένοι τύποι δεδομένων Αποτελούν συνενώσεις στοιχειωδών τύπων συγκεντρωμένων κάτω από ένα μοναδικό όνομα. Οι αφηρημένοι τύποι δεδομένων είναι ορισμένοι από τον χρήστη και αποτελούνται από το σύστημα αποθήκευσης και ένα σύνολο προκαθορισμένων λειτουργιών για το χειρισμό τους. 59
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright ΤΕΙ Δυτικής Μακεδονίας, Δημοσθένης Πασχαλίδης. «ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ». Έκδοση: 1.0. Θεσσαλονίκη 2015. 61
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 62
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 63
Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφίες. BROOKSHEAR, J. G. (2004), Computer Science: An Overview, 9th Edition, ISBN13: 9780321247261. 64