ENOTHTA ΟΜΕΣ Ε ΟΜΕΝΩΝ Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
. ΠΙΝΑΚΕΣ Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ εδοµένα Αλγόριθµοι + οµές εδοµένων = Προγράµµατα Πίνακες Στοίβα και Ουρά Αναζήτηση και Ταξινόµηση Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Ι ΑΚΤΙΚΟΙ ΣΤΟΧΟΙ να γίνει κατανοητή η σπουδαιότητα των δεδοµένων, να θεωρηθεί ως ενότητα η δοµή και ο αλγόριθµος, να γίνει αντιληπτή η δοµή του πίνακα, να θεωρηθεί ο δοµή της ουράς και του πίνακα µε υλοποιήσεις πίνακα, να γίνει µία εισαγωγή στο πρόβληµα της αναζήτησης και της ταξινόµησης. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 4
Κεφάλαιο : οµές εδοµένων και εδοµένα είναι µία αφαιρετική αναπαράσταση της πραγµατικότητας. Αλγόριθµοι εδοµένα Ο ορισµός αυτός είναι πρακτικός. Για παράδειγµα: σε ένα αρχείο µαθητών κρατούµε την τάξη, το τµήµα κλπ, αλλά όχι το ύψος, το βάρος κλπ. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 5
Κεφάλαιο : οµές εδοµένων και Αλγόριθµοι εδοµένα Τα δεδοµένα είναι έννοια-κλειδί για την Πληροφορική που µελετά τα δεδοµένα απο τη σκοπιά του Υλικού των Γλωσσών προγραµµατισµού των οµών της Ανάλυσης Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Κεφάλαιο : οµές εδοµένων και οµή εδοµένων είναι ένα σύνολο αποθηκευµένων δεδοµένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 Αλγόριθµοι Αλγόριθµοι + οµές = Προγράµµατα Λειτουργίες: προσπέλαση, εισαγωγή, διαγραφή, αναζήτηση, ταξινόµηση, αντιγραφή, συγχώνευση, διαχωρισµός. Σηµείωση: σπάνια για κάποια δοµή χρησιµοποιούνται και οι οκτώ λειτουργίες. Κάθε δοµή πλεονεκτεί και µειονεκτεί σε σχέση µε άλλες δοµές ως προς τις λειτουργίες αυτές.
Κεφάλαιο : οµές εδοµένων και Αλγόριθµοι Αλγόριθµοι + οµές = Προγράµµατα Η οµή και ο Αλγόριθµος είναι συνυφασµένες έννοιες, όπως δηλώνεται από την ανωτέρω εξίσωση (Wirth, ). Πρόβληµα: Να γραφεί αλγόριθµος που να δέχεται στην είσοδο ένα όνοµα και να δίνει τον αντίστοιχο αριθµό τηλεφώνου στην έξοδο. Λύσεις διάφορες (ανάλογα µε το πλήθος των συνδροµητών). Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Κεφάλαιο : οµές εδοµένων και Αλγόριθµοι Ο Πίνακας είναι µία στατική δοµή δεδοµέ-νων (το µέγεθός του καθορίζεται κατά τη µετάφραση και όχι κατά την εκτέλεση). Ο Πίνακας περιέχει δεδοµένα ιδίου τύπου και µπορεί να έχει πολλές διαστάσεις. Πίνακες Συµβολίζεται µε ένα όνοµα και ένα δείκτη για κάθε διάσταση. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 Στοίβα Η στοίβα είναι µία δοµή δεδοµένων όπου επιτρέπονται δύο µόνο λειτουργίες: - εισαγωγή ή ώθηση (push), και - διαγραφή ή απώθηση (pop). Στηρίζεται στη φιλοσοφία LIFO (last-in-first-out), δηληδή Τελευταίο-µέσα-πρώτο-έξω. Υλοποιείται µε ένα πίνακα και µε τη βοήθεια µίας µεταβλητής: του δείκτη της στοίβας που δείχνει στο κορυφαίο στοιχείο του πίνακα.
Ουρά Η ουρά είναι µία δοµή δεδοµένων όπου επιτρέπονται δύο µόνο λειτουργίες: - εισαγωγή στο τέλος (enqueue), και - διαγραφή από την αρχή (dequeue). Στηρίζεται στη φιλοσοφία FIFO (first-in-first-out), δηληδή Πρώτο-µέσα-πρώτο-έξω, Υλοποιείται µε ένα πίνακα και δύο µεταβλητές που δείχνουν στο πρώτο και το τελευταίο στοιχείο. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Αναζήτηση Το πρόβληµα της αναζήτησης είναι καίριο (αναζήτηση ονοµάτων σε καταλόγους, αριθµών σε λίστες, εικόνων σε άλµπουµ κλπ.) Συνήθως η αναζήτηση γίνεται σε πίνακες ταξινοµηµένων αριθµών. Σειριακή Αναζήτηση υαδική Αναζήτηση Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Αναζήτηση ΣΕΙΡΙΑΚΗ (ΓΡΑΜΜΙΚΗ) ΑΝΑΖΗΤΗΣΗ ΦΙΛΟΣΟΦΙΑ: Εξετάζει το περιεχόµενο κάθε θέσης του πίνακα, αν ισούται µε το αναζητούµενο στοιχείο, αρχίζοντας από την αρχή και σαρώ-νοντας τις θέσεις µία-µία. Υλοποιείται σε πίνακα µε ταξινοµηµένα αλλά και αταξινόµητα στοιχεία. Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Ταξινόµηση Ταξινόµηση είναι η διάταξη των στοιχείων ενός πίνακα µε βάση ένα κριτήριο (πχ. αύξουσα/φθίνουσα τάξη) Σπουδαίο πρόβληµα γιατί επιταχύνει την αναζήτηση. Εξαιρετική πληθώρα αλγορίθµων που εφαρµόζονται ανάλογα µε τις προϋποθέσεις του προβλήµατος (µνήµη/δίσκος, είδος δεδοµένων, εφαρµογής κλπ.) Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 4
Ταξινόµηση ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ (ΤΑΞΙΝΟΜΗΣΗ ΦΥΣΣΑΛΙ ΑΣ) ΦΙΛΟΣΟΦΙΑ: Εξετάζει διαδοχικά ζεύγη στοιχείων µέχρι να διαταχθούν όλα τα στοιχεία. Αν ο πίνακας θεωρηθεί σε κατακόρυφη θέση, τότε τα µικρότερα στοιχεία ανεβαίνουν προς τα επάνω. Σε κάθε πέρασµα, ένα στοιχείο λαµβάνει την τελική του θέση Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 5
αλγόριθµος βαθµοί ακέραιος βαθµός, βαθµός ακέραιος βαθµός, βαθµός4, βαθµός5 αρχή διάβασε βαθµός διάβασε βαθµός διάβασε βαθµός διάβασε βαθµός4 διάβασε βαθµός5 τέλος Μονοδιάστατοι Πίνακες Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 αλγόριθµος βαθµοί ακέραιος βαθµός[5] ακέραιος i αρχή για I µέχρι 5 κάνε διάβασε βαθµός[i] τέλοςγια τέλος
αλγόριθµος βαθµοί ακέραιος φυσ[5], µαθ[5], χηµ[5], έκθ[5] ακέραιος i αρχή για i µέχρι 5 κάνε διάβασε φυσ[i], µαθ[i], χηµ[i], έκθ[i] τέλοςγια τέλος ιδιάστατοι Πίνακες Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 αλγόριθµος βαθµοί ακέραιος βαθµοί[5,5] ακέραιος i,j αρχή για i µέχρι 5 κάνε για j µέχρι 5 κάνε διάβασε βαθµοί[i,j] τέλοςγια τέλοςγια τέλος
Σειριακή Αναζήτηση Αναζήτηση του 5 5 5 5 Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Μάθηµα 5-4: Σειριακή Αναζήτηση αλγόριθµος Σειριακή_Αναζήτηση (ακέραιος Ν, Κ, πραγµατικός L, πραγµατικός πίνακας A[:Ν], λογικός f) δεδοµένα Ν,Α,L αποτελέσµατα Κ ακέραιος Ι αρχή f:=false; Κ:=0; για i:= µέχρι Ν κάνε αν Α[i]=L τότε Κ:=i; f:=true; τέλοςαν τελοςγια τέλος αλγόριθµος σειριακή_αναζήτηση (ακέραιος Ν, Κ, πραγµατικός L, πραγµατικός πίνακας A[:Ν], λογικός f) δεδοµένα Ν,Α,L αποτελέσµατα Κ ακέραιος Ι αρχή Κ:=0; i:=0; f:=false; όσο (i<>ν) και (f=false) κάνε i:=i+; αν Α[i]=L τότε Κ:=i;f:=true; τέλοςαν τελοςόσο τέλος Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Ανάπτυξη Εφαρµογών, Αλέξης Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας Μπράιλας, 000, 000 0 Μάθηµα 5-5: Ταξινόµηση φυσαλίδας
Μάθηµα 5-5: Ταξινόµηση φυσαλίδας αλγόριθµος Ταξινόµηση_φυσαλίδας (ακέραιος Ν, πραγµατικός πίνακας A[:Ν]) δεδοµένα Ν,Α αποτελέσµατα Α ακέραιος i,j πραγµατικός temp αρχή για i:= µέχρι Ν κάνε για j:=ν µέχρι i µεταβολή - κάνε αν Α[j-]>A[j] τότε temp:=a[j-];a[j-]:=a[j]; A[j]:=temp; τέλοςαν τελοςγια τέλος Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Μάθηµα 5-: Στοίβα κορυφή 4 κορυφή κορυφή pop(κορυφή,x) x=4 x:= push(κορυφή,x) Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Μάθηµα 5-: Ουρά 4 εµπρός πίσω διαγραφή του 4 εµπρός πίσω προσθήκη του εµπρός πίσω Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000
Μάθηµα -: οµηµένη ανάπτυξη αλγορίθµων Κλασσική ανάπτυξη αλγορίθµων Ανάλυση Σχεδιασµός Υλοποίηση Συντήρηση Μειονεκτήµατα υψηλό κόστος ανάπτυξης µεγάλος χρόνος ανάπτυξης δύσκολη συντήρηση/επέκταση Αρχές δοµηµένης ανάπτυξης αλγορίθµων! αφαίρεση! τυπικότητα! διαίρεση! ιεράρχηση Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 Υλοποίηση δοµηµένων αλγορίθµων! Τµηµατοποίηση! αποφυγή goto! ιεραρχική σχεδίαση 4
Μάθηµα -: Ελεγχος αλγορίθµων εδοµένα ελέγχου τι είναι πώς εξάγονται Πίνακα σύγκρισης αποτελεσµάτων δεδοµένα αναµενόµενα αποτελέσµατα πραγµατικά αποτελέσµατα Οριακές περιπτώσεις (Ελεγχος τιµών ) µέσα στα όρια ίσες µε τα όρια πολύ έξω από τα όρια Τερµατισµός επαναληπτικών δοµών Είναι δυνατό να µην τερµατιστεί µια επαναλητπική δοµή; Πώς εξασφαλίζεται ο τερµατισµός επαναληπικής δοµής; Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000 5
Μάθηµα -: Ανάλυση αλγορίθµων Μέγεθος προβλήµατος Πολυπλοκότητα αλγορίθµου Είδη αλγορίθµων σταθεροί λογαριθµικοί πολυωνυµικοί εκθετικοί Πολυπλοκότητα αλογρίθµου καλύτερη περίπτωση µέση περίπτωση χειρότερη περίπτωση Προβλήµατα δυσκολου χειρισµού Ευρετικοί αλγόριθµοι Ανάπτυξη Εφαρµογών, Αλέξης Μπράιλας,, 000