Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 1. Τι είναι δεδομένα και τι πληροφορία; Τα δεδομένα είναι ακατέργαστα γεγονότα που κάθε φορά η επιλογή τους εξαρτάται από τον τύπο του προβλήματος Πληροφορία είναι το αποτέλεσμα της συλλογής και επεξεργασίας των ακατέργαστων δεδομένων.
2
2. Ποιες είναι οι σκοπιές από τις οποίες η Πληροφορική μελετά τα δεδομένα;
Υλικού. Το υλικό ,δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις. Τέτοιες μορφές είναι η δυαδική, ο κώδικας ASCII, ο κώδικας EBCDIC, το συμπλήρωμα του 1 κ.α Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψηλού επιπέδου επιτρέπουν τη χρήση διαφόρων τύπων μεταβλητών για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης από πλευρά υλικού κάθε μεταβλητής στον υπολογιστή.
3
Δομών δεδομένων. Δομή δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Με τέτοια δομή είναι η εγγραφή που περιγράφει ένα είδος, ένα πρόσωπο κ.α. Η εγγραφή αποτελείται από πεδία που αποθηκεύουν χαρακτηριστικά διαφορετικού τύπου. Άλλη μορφή δομής δεδομένων είναι το αρχείο που αποτελείται από ένα σύνολο εγγραφών. Ανάλυση Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγματικά δεδομένα.
4
3. Τι ονομάζουμε δομή δεδομένων;
Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο με κόμβους 4. Ποιες είναι οι βασικές πράξεις επί των δομών δεδομένων; Προσπέλαση, πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του. Εισαγωγή, δηλαδή η προσθήκη νέων κόμβων σε μια υπάρχουσα δομή
5
Διαγραφή, που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή
Αναζήτηση, κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα. Ταξινόμηση, όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή, κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μιας δομής αντιγράφονται σε μια άλλη δομή. Συγχώνευση, κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή Διαχωρισμός, που αποτελεί την αντίστροφη πράξη της συγχώνευσης.
6
5. Ποια είναι η εξάρτηση μεταξύ της δομής δεδομένων και του αλγόριθμου που επεξεργάζεται τη δομή;
Αλγόριθμοι + Δομές δεδομένων = Προγράμματα
7
6. Να περιγραφούν οι δύο κατηγορίες των δομών δεδομένων
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: Στατικές δομές: Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές μέγεθος της απαιτούμενης μνήμης καθορίζεται κατά την στιγμή του προγραμματισμού τους και όχι κατά την διάρκεια της εκτέλεσης του προγράμματος. Επίσης στις στατικές δομές τα στοιχεία τους αποθηκεύονται σε συνεχόμενες θέσεις μνήμης Δυναμικές δομές: Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης. Με άλλα λόγια οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα αντίστοιχα.
8
7. Να περιγραφεί η δομή του πίνακα
Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. Το όνομα του πίνακα καθορίζει μια ομάδα διαδοχικών θέσεων στη μνήμη και κάθε στοιχείο του πίνακα καταλαμβάνει μια θέση στη μνήμη. Οι πίνακες μπορεί να είναι μονοδιάστατοι, δισδιάστατοι … ν-διάστατοι.
9
Ένας μονοδιάστατος πίνακας είναι μια δομή που μας επιτρέπει στο όνομα μιας μεταβλητής να καταχωρήσουμε περισσότερα από ένα στοιχεία του ίδιου τύπου. Κάθε ένα από αυτά τα στοιχεία διαθέτει ένα μοναδικό δείκτη οποίος προσδιορίζει τη θέση του μέσα στον πίνακα. Έναν μονοδιάστατο πίνακα τον δηλώνω ως εξής (στη ΓΛΩΣΣΑ): Τύπος: όνομα_πίνακα[α] Όπου α>0 και ορίζει τον αριθμό των στοιχείων που μπορούν να καταχωρηθούν στον πίνακα. Όπου τύπος είναι ο τύπος των δεδομένων που καταχωρούνται στον πίνακα. Π.χ ακέραιος, χαρακτήρες, πραγματικές, λογικές.
10
Ένας δισδιάστατος πίνακας είναι μια δομή δεδομένων που μας επιτρέπει στο όνομα μιας μεταβλητής να καταχωρήσουμε περισσότερα από ένα στοιχεία του ίδιου τύπου. Κάθε ένα από αυτά τα στοιχεία αντιστοιχεί σε ένα ζευγάρι μοναδικών διατεταγμένων δεικτών οι οποίοι προσδιορίζουν τη θέση του μέσα στο πίνακα. Έναν δισδιάστατο πίνακα τον δηλώνω ως εξής (στη ΓΛΩΣΣΑ): Τύπος: όνομα_πίνακα[α,β] Όπου α,β>0 και ορίζει τον αριθμό των γραμμών και των στηλών του πίνακα. Όπου τύπος είναι ο τύπος των δεδομένων που καταχωρούνται στον πίνακα. Π.χ ακέραιος, χαρακτήρες, πραγματικές, λογικές.
11
8. Ποια είναι τα μειονεκτήματα της χρήσης των πινάκων;
Οι πίνακες απαιτούν μνήμη. Ένας πίνακας δεσμεύει πολλές θέσεις μνήμης του υπολογιστή με αποτέλεσμα, η αλόγιστη χρήση πινάκων να οδηγεί πολλές φορές σε αδυναμία εκτέλεσης του προγράμματος. Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Το πλήθος των στοιχείων τους είναι σταθερό και προκαθορισμένο από την αρχή του προγράμματος.
12
9. Ποιες είναι οι εντολές με τις οποίες επεξεργαζόμαστε τους πίνακες;
Επεξεργασία ενός μονοδιάστατου πίνακα Α με y θέσεις Για Ι από 1 μέχρι y Επεξεργασία του Α[I] Τέλος_επανάληψης Η επεξεργασία των στοιχείων ενός πίνακα μπορεί να περιλαμβάνει εντολές εισόδου, εξόδου ή και μαθηματικές πράξεις.
13
Επεξεργασία ενός δισδιάστατου πίνακα Α με y γραμμές και χ στήλες.
Για J από 1 μέχρι χ Επεξεργασία του Α[I,J] Τέλος_επανάληψης Η επεξεργασία των στοιχείων ενός πίνακα μπορεί να περιλαμβάνει εντολές εισόδου, εξόδου ή και μαθηματικές πράξεις.
14
10. Ποιες είναι οι τυπικές επεξεργασίες πινάκων που απαιτούνται πολλές φορές στα προγράμματα;
Υπολογισμός αθροίσματος κάποιων στοιχείων του πίνακα. Πολύ συχνά απαιτείται ο υπολογισμός αθροίσματος κάποιων στοιχείων του πίνακα που έχουν κοινά χαρακτηριστικά. Π.χ βρίσκονται στην ίδια γραμμή ή στήλη ή ακόμα και τη διαγώνιο. Εύρεση του μέγιστου ή του ελάχιστου στοιχείου. Για την εύρεση του μέγιστου ή του ελάχιστου στοιχείου πρέπει να συγκριθούν όλα τα στοιχεία του πίνακα ένα προς ένα εκτός αν ο πίνακας είναι ταξινομημένος
15
Ταξινόμηση των στοιχείων του πίνακα
Ταξινόμηση των στοιχείων του πίνακα. Η ταξινόμηση συνίσταται στη μετάθεση των στοιχείων του πίνακα έτσι ώστε αυτά να τοποθετηθούν σε αύξουσα ή φθίνουσα σειρά. Αναζήτηση ενός στοιχείου του πίνακα. Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι αναζήτησης Η Σειριακή αναζήτηση Η Δυαδική αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή, αλλά και η λιγότερο αποτελεσματική μέθοδος. Χρησιμοποιείται όμως υποχρεωτικά για πίνακες που δεν είναι ταξινομημένοι. Αντίθετα η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένους πίνακες και είναι σαφώς αποδοτικότερη από τη σειριακή αναζήτηση
16
Συγχώνευση δύο πινάκων
Συγχώνευση δύο πινάκων. Η συγχώνευση είναι μία από τις βασικές λειτουργίες πινάκων. Σκοπός της είναι η δημιουργία ενός ταξινομημένου πίνακα ο οποίος θα περιέχει όλα τα στοιχεία των άλλων δύο επίσης ταξινομημένων πινάκων 11. Τι ορίζουμε ως στοίβα; Στοίβα είναι μια δομή δεδομένων με ένα άκρο, που υλοποιείται με τη βοήθεια των πινάκων. Στη στοίβα τα δεδομένα που βρίσκονται στην κορυφή της λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της λαμβάνονται τελευταία. Αυτή η μέθοδος ονομάζεται Τελευταίο μέσα , πρώτο έξω (LIFO).
17
12. Ποιες είναι οι βασικές λειτουργίες που γίνονται στη στοίβα;
Δύο είναι οι βασικές λειτουργίες: Η ώθηση (Push) στοιχείου στην κορυφή της στοίβας Η απώθηση (Pop) στοιχείου από τη στοίβα Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει αν η στοίβα είναι γεμάτη, οπότε λέμε ότι συμβαίνει υπερχείλιση(overflow) της στοίβας. Αντίστοιχα η διαδικασία απώθησης πρέπει να ελέγχει, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν γίνεται υποχείλιση(under flow) της στοίβας.
18
Μια βοηθητική μεταβλητή (top) χρησιμοποιείται για να δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. Για την εισαγωγή ενός νέου στοιχείου στη στοίβα (ώθηση) αρκεί να αυξηθεί η μεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα για την εξαγωγή ενός στοιχείου από τη στοίβα(απώθηση) εξέρχεται πρώτα το στοιχείο που δείχνει η μεταβλητή top και στη συνέχεια η top μειώνεται κατά ένα για να δείχνει τη νέα κορυφή.
19
13.Τι ορίζουμε ως ουρά; Η ουρά είναι μια δομή δεδομένων με δύο άκρα στην οποία το πρώτο στοιχείο που εισάγεται είναι και το πρώτο στοιχείο που μπορεί να εξαχθεί. Αυτή η επεξεργασία ονομάζεται Πρώτο μέσα Πρώτο έξω (FIFO) 14. Ποιες είναι οι βασικές λειτουργίες που γίνονται στην ουρά; Δύο είναι οι κύριες λειτουργίες που εκτελούνται σε μια ουρά: Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς Η εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της ουράς
20
Σε αντίθεση με τη δομή της στοίβας , στην περίπτωση της ουράς απαιτούνται δύο δείκτες, ο εμπρός(front) και ο πίσω(rear), που μας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε. Μια ουρά μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου πίνακα. Για την εισαγωγή ενός νέου στοιχείου στην ουρά αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή αποθηκεύεται το στοιχείο. Αντίστοιχα για τη λειτουργία της εξαγωγής, εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί. Σε κάθε περίπτωση όμως, πρέπει να ελέγχεται πριν από οποιαδήποτε ενέργεια, αν υπάρχει ελεύθερος χώρος στον πίνακα για την εισαγωγή και αν υπάρχει ένα τουλάχιστον στοιχείο για την εξαγωγή
21
15. Σειριακή Αναζήτηση Τρεις είναι οι βασικές παραλλαγές της σειριακής αναζήτησης Σειριακή αναζήτηση σε πίνακα μη ταξινομημένο με κάθε στοιχείο να υπάρχει μια μόνο φορά στον πίνακα. Εξετάζονται ένα προς ένα όλα τα στοιχεία του πίνακα ξεκινώντας από αυτό που βρίσκεται στην πρώτη θέση μέχρι να βρεθεί στοιχείο με τιμή ίση με την τιμή που αναζητούμε. Όταν το στοιχείο βρεθεί, η αναζήτηση σταματάει και η μεταβλητή found τύπου λογικός γίνεται αληθής. Σε περίπτωση που η τιμή προς αναζήτηση δεν υπάρχει, η μεταβλητή found θα είναι ψευδής και σαν έξοδος του αλγορίθμου θα πάρουμε την τιμή μηδέν, οπότε συμπεραίνουμε ότι η τιμή που θέλαμε δεν υπάρχει στον πίνακα.
22
Αλγόριθμος Σειριακή_Αναζήτηση1 Διάβασε x found ψευδής pos0 I1
Αλγόριθμος Σειριακή_Αναζήτηση1 Διάβασε x found ψευδής pos0 I1 Όσο (I<=100) και (found=ψευδής) επανάλαβε Αν Α[I] = x τότε pos I found αληθής Αλλιώς I I +1 Τέλος_αν Τέλος_επανάληψης Αν found = αληθής τότε Γράψε pos Γράψε ‘Το στοιχείο δεν βρέθηκε’ Τέλος Σειριακή_Αναζήτηση1
23
Σειριακή αναζήτηση σε πίνακα μη ταξινομημένο χωρίς να γνωρίζουμε αν κάθε στοιχείο υπάρχει και άλλες φορές στον πίνακα Εξετάζονται ένα προς ένα όλα τα στοιχεία του πίνακα ξεκινώντας από αυτό που βρίσκεται στην πρώτη θέση , μέχρις ότου να εξεταστεί και το τελευταίο στοιχείο του πίνακα. Στην περίπτωση που εντοπίσουμε ένα στοιχείο με τιμή ίση με αυτή που αναζητούμε , ο αλγόριθμος εμφανίζει τη θέση του και συνεχίζει την αναζήτηση μήπως και η τιμή αναζήτησης υπάρχει και σε επόμενες θέσεις του πίνακα, οπότε και τις εμφανίζει. Στην περίπτωση που η τιμή προς αναζήτηση δεν υπάρχει στον πίνακα, σαν έξοδο του αλγορίθμου θα πάρουμε την τιμή μηδέν.
24
Αλγόριθμος Σειριακή_Αναζήτηση2 Διάβασε x found ψευδής pos0
Αλγόριθμος Σειριακή_Αναζήτηση2 Διάβασε x found ψευδής pos0 Για I από 1 μέχρι 100 Αν Α[I] = x τότε pos θέση found αληθής Γράψε pos Τέλος_αν Τέλος_επανάληψης Αν found = ψευδής τότε Γράψε ‘Το στοιχείο δεν βρέθηκε’ Τέλος Σειριακή_Αναζήτηση2
25
Σειριακή αναζήτηση σε ταξινομημένο πίνακα ( τον θεωρούμε φθίνουσα ταξινομημένο).
Εξετάζονται ένα προς ένα τα στοιχεία του πίνακα ξεκινώντας από αυτό που βρίσκεται στην πρώτη θέση, μέχρις ότου, να βρεθεί στοιχείο με τιμή μικρότερη από την τιμή αναζήτησης. Κατά την αναζήτηση αυτή αν η τιμή ενός στοιχείου είναι ίση με την τιμή αναζήτησης, τότε θα εμφανίζεται η θέση του και εξετάζεται το επόμενο στοιχείο του πίνακα. Αν η τιμή προς αναζήτηση δεν υπάρχει στο πίνακα , τότε σαν έξοδο του αλγορίθμου θα πάρουμε την τιμή μηδέν.
26
Αλγόριθμος Σειριακή_Αναζήτηση3 Διάβασε x found ψευδής pos0 I1
Αλγόριθμος Σειριακή_Αναζήτηση3 Διάβασε x found ψευδής pos0 I1 Όσο (I<=100) και (x<= Α[I]) επανάλαβε Αν Α[I] = x τότε pos I found αληθής Γράψε pos Αλλιως Ι Ι +1 Τέλος_επανάληψης Αν found = ψευδής τότε Γράψε ‘Το στοιχείο δεν βρέθηκε’ Τέλος_αν Τέλος Σειριακή_Αναζήτηση1
27
Η χρήση της δικαιολογείται μόνο σε περιπτώσεις όπου:
Η μέθοδος της σειριακής αναζήτησης είναι η πιο απλή, αλλά και η λιγότερο αποτελεσματική μέθοδος αναζήτησης. Η χρήση της δικαιολογείται μόνο σε περιπτώσεις όπου: ο πίνακας είναι μη ταξινομημένος ο πίνακας είναι μικρού μεγέθους η αναζήτηση στοιχείων του πίνακα γίνεται σπάνια
28
16. ΤΑΞΙΝΟΜΗΣΗ Η τακτοποίηση των κόμβων μιας δομής με μια ιδιαίτερη σειρά είναι μια πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση. Ένας τυπικός ορισμός της ταξινόμησης είναι: «Δοθέντων των στοιχείων a1,a2, …., an η ταξινόμηση συνίσταται στη μετάθεση της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μια σειρά ak1, ak2, …, akn έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης f να ισχύει: f(ak1)<=f(ak2)<=….<=f(akn)» Η μέθοδος της ταξινόμησης ευθείας ανταλλαγής (φυσαλίδας) βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων, μέχρις ότου διαταχθούν όλα τα στοιχεία.
29
Τέλος_Αν Τέλος_Επανάληψης Τέλος_Επαναλήψης
Αλγόριθμος Ταξινόμηση Για Ι από 2 μέχρι Ν Για J από Ν μέχρι Ι με_βήμα –1 Αν Α[J-1]>A[J] τότε TempA[J] A[J]A[J-1] A[J-1]Temp Τέλος_Αν Τέλος_Επανάληψης Τέλος_Επαναλήψης Τέλος Ταξινόμηση
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.