Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ."— Μεταγράφημα παρουσίασης:

1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

2 Δεδομένα Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Για παράδειγμα, έστω ένα αρχείο μαθητών ενός σχολείου. Τα χρήσιμα δεδομένα που αποθηκεύονται είναι το ονοματεπώνυμο, η ηλικία, το φύλο, η τάξη, το τμήμα κλπ., όχι όμως το βάρος, το ύψος κλπ. Τα δεδομένα, λοιπόν, είναι ακατέργαστα γεγονότα, και κάθε φορά η επιλογή τους εξαρτάται από τον τύπο του προβλήματος. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός τους δίνει ως αποτέλεσμα την πληροφορία (information). Μπορεί να θεωρηθεί ότι ο αλγόριθμος είναι το μέσο για την παραγωγή πληροφορίας από τα δεδομένα.

3 Δεδομένα Η μέτρηση, η κωδικοποίηση, η μετάδοση της πληροφορίας αποτελεί αντικείμενο μελέτης ενός ιδιαίτερου κλάδου, της Θεωρίας Πληροφοριών (Information Theory), που είναι ένα ιδιαίτερα σημαντικό πεδίο της Πληροφορικής. Υλικού. Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations). Τέτοιες μορφές είναι η δυαδική, ο κώδικας ΑSCII (βλ.παράρτημα), ο κώδικας EBCDIC, το συμπλήρωμα του 1 ή του 2 κ.λπ. Γλωσσών προγραμματισμού. Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής στον υπολογιστή.

4 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Σκεφτείτε τα τηλέφωνα αταξινόμητα, ανοργάνωτα. Πως θα βρούμε ένα τηλέφωνο. Σκεφτείτε τα ταξινομημένα. Πως είναι οργανωμένα στην πράξη;

5 Όνομα Τηλέφωνο ΓΑΤΣΑ ΑΛΜΠΑΝΗΣ ΓΑΤΣΙΑΣ ΒΑΒΙΤΣΑ ΝΟΥΛΑΣ ΖΑΜΠΟΥΡΑ ΕΥΣΤΑΘΙΟΥ ΓΚΑΝΤΙΑ ΓΙΑΝΝΟΥΛΑΣ ΓΚΙΤΕΡΣΟΥ ΓΕΡΑΚΟΣ ΖΗΝΔΡΟΥ ΒΛΑΧΟΘΑΝΑΣΗ ΓΕΡΟΔΗΜΟΥ ΑΓΓΕΛΗΣ ΓΚΙΝΗΣ ΓΚΟΥΜΠΛΙΑΣ ΚΑΜΠΟΥΡΟΠΟΥΛΟΣ ΔΑΣΚΑΛΟΣ

6 Όνομα Τηλέφωνο ΑΓΓΕΛΗΣ ΑΛΜΠΑΝΗΣ ΒΑΒΙΤΣΑ ΒΛΑΧΟΘΑΝΑΣΗ ΓΑΤΣΑ ΓΑΤΣΙΑΣ ΓΕΡΑΚΟΣ ΓΕΡΟΔΗΜΟΥ ΓΙΑΝΝΟΥΛΑΣ ΓΚΑΝΤΙΑ ΓΚΙΝΗΣ ΓΚΙΤΕΡΣΟΥ ΓΚΟΥΜΠΛΙΑΣ ΔΑΣΚΑΛΟΣ ΕΥΣΤΑΘΙΟΥ ΖΑΜΠΟΥΡΑ ΖΗΝΔΡΟΥ ΚΑΜΠΟΥΡΟΠΟΥΛΟΣ ΝΟΥΛΑΣ

7 Ευρετήριο Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν ..... 1 3 5 14 15 16 18 19 Όνομα Τηλέφωνο 1 ΑΓΓΕΛΗΣ 2 ΑΛΜΠΑΝΗΣ 3 ΒΑΒΙΤΣΑ 4 ΒΛΑΧΟΘΑΝΑΣΗ 5 ΓΑΤΣΑ 6 ΓΑΤΣΙΑΣ 7 ΓΕΡΑΚΟΣ 8 ΓΕΡΟΔΗΜΟΥ 9 ΓΙΑΝΝΟΥΛΑΣ 10 ΓΚΑΝΤΙΑ 11 ΓΚΙΝΗΣ 12 ΓΚΙΤΕΡΣΟΥ 13 ΓΚΟΥΜΠΛΙΑΣ 14 ΔΑΣΚΑΛΟΣ 15 ΕΥΣΤΑΘΙΟΥ 16 ΖΑΜΠΟΥΡΑ 17 ΖΗΝΔΡΟΥ 18 ΚΑΜΠΟΥΡΟΠΟΥΛΟΣ 19 ΝΟΥΛΑΣ

8 ΓΚΑΝΤΙΑ 2432058838 ΓΕΡΟΔΗΜΟΥ 2432094303 ΓΚΙΤΕΡΣΟΥ 2432088977 ΓΕΡΑΚΟΣ
ΓΙΑΝΝΟΥΛΑΣ ΓΚΙΝΗΣ ΓΚΟΥΜΠΛΙΑΣ

9 Δεδομένα Δομών Δεδομένων. Δομή δεδομένων (data structure) είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Για παράδειγμα, μία τέτοια δομή είναι η εγγραφή. Ανάλυσης Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων (Databases), της Μοντελοποίησης Δεδομένων (Data Modelling) και της Αναπαράστασης Γνώσης (Knowledge Representation) ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.

10 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Η αποθήκευση των δεδομένων δεν γίνεται κατά ένα τυχαίο τρόπο αλλά συστηματικά, δηλαδή χρησιμοποιώντας μία δομή. Η έννοια της δομής δεδομένων (data structure) είναι σημαντική για την Πληροφορική και ορίζεται με τον ακόλουθο τυπικό ορισμό. Ορισμός: Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.

11 ΛΕΙΤΟΥΡΓΙΕΣ ΣΕ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του. Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή. Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή. Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα. Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή. Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή. Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.

12 ΛΕΙΤΟΥΡΓΙΕΣ ΣΕ ΔΟΜΕΣ ΕΔΟΜΕΝΩΝ
Στην πράξη σπάνια χρησιμοποιούνται και οι οκτώ λειτουργίες για κάποια δομή. Συνηθέστατα παρατηρείται το φαινόμενο μία δομή δεδομένων να είναι αποδοτικότερη από μία άλλη δομή με κριτήριο κάποια λειτουργία, για παράδειγμα την αναζήτηση, αλλά λιγότερο αποδοτική για κάποια άλλη λειτουργία, για παράδειγμα την εισαγωγή. Αυτές οι παρατηρήσεις εξηγούν αφ’ ενός την ύπαρξη διαφορετικών δομών, και αφ’ ετέρου τη σπουδαιότητα της επιλογής της κατάλληλης δομής κάθε φορά. ΔΔ

13 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
1976, Wirth

14 ΔΥΝΑΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές (static) και τις δυναμικές (dynamic). Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης (dynamic memory allocation). Με άλλα λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα αντίστοιχα.

15 ΣΤΑΤΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
Το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. Μία άλλη σημαντική διαφορά σε σχέση με τις δυναμικές δομές είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Στην πράξη, οι στατικές δομές υλοποιούνται με πίνακες που υποστηρίζονται από κάθε γλώσσα προγραμματισμού.

16 ΠΙΝΑΚΕΣ Μπορούμε να ορίσουμε τον πίνακα ως μια στατική δομή που περιέχει στοιχεία του ίδιου τύπου (δηλαδή ακέραιους, πραγματικούς κ.λπ). Η δήλωση των στοιχείων ενός πίνακα και η μέθοδος αναφοράς τους εξαρτάται από τη συγκεκριμένη γλώσσα υψηλού επιπέδου που χρησιμοποιείται. Όμως, γενικά η αναφορά στα στοιχεία ενός πίνακα γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα ακολουθούμενου από την τιμή ενός ή περισσότερων δεικτών (indexes) σε παρένθεση ή αγκύλη π.χ. Μαθητής[3] , Θερμοκρασία[10]

17 ΠΙΝΑΚΕΣ

18 ΠΙΝΑΚΕΣ Οι πίνακες λοιπόν, χρησιμοποιούνται όταν θέλουμε να κρατήσουμε στην μνήμη του Η/Υ πολλά δεδομένα ίδιου τύπου. Π.χ. αν έχω 30 θερμοκρασίες μπορώ να τις αποθηκεύσω σε 30 μεταβλητές. Κάτι τέτοιο όμως δεν εξυπηρετεί όταν τα δεδομένα είναι πολλά, ενώ δυσχεραίνει και την επεξεργασία τους.

19 Παράδειγμα – Να βρεθεί η μέση θερμοκρασία ενός μήνα (30 ημέρες)
Πολλοί από τους αλγορίθμους που είδαμε διαβάζουν ένα δεδομένο κάθε φορά, το εκχωρούν σε μία μεταβλητή, εκτελούν τους αντίστοιχους υπολογισμούς και στη συνέχεια επαναλαμβάνεται η ίδια διαδικασία μέχρι να τελειώσουν όλα τα δεδομένα. Σ0 Για ι από 1 μέχρι 30 Διάβασε θερμοκρασία ΣΣ + θερμοκρασία Τέλος_επανάληψης μέση Σ/30

20 ……………………………………………………!30 φορές
Σε συνέχεια του προηγούμενου παραδείγματος έστω ότι θέλουμε να βρούμε πόσες ημέρες η θερμοκρασία ήταν μικρότερης της μέσης. Παρατηρούμε ότι θέλουμε πάλι όλες τις θερμοκρασίες. Μπορούμε να τις διαβάσουμε πάλι αλλά η εισαγωγή απαιτεί κόπο αν γίνει από το χρήση, ενώ αν γίνει από αρχείο εισόδου τότε καθυστερεί την εκτέλεση. Θα μπορούσαμε να έχουμε μία μεταβλητή για κάθε θερμοκρασία. Αυτό όμως εξυπηρετεί μόνο λίγα δεδομένα. Διάβασε Θερμ1, θερμ2, θερμ3, …. ,θερμ29, θερμ30 Σθερμ1 + Θερμ2 + Θερμ3 + ……… + θερμ29 + θερμ30 μέση Σ/30 Ημέρες0 Αν θερμ1 < μέση τότε Ημέρες Ημέρες +1 Τέλος_αν Αν θερμ2 < μέση τότε ……………………………………………………!30 φορές

21 Σε συνέχεια του προηγούμενου παραδείγματος βλέπουμε την ανάγκη αποθήκευσης – φύλαξης των δεδομένων που εισάγονται για περεταίρω επεξεργασία => χρήση πίνακα Ο πίνακας μπορεί να θεωρηθεί μία μεταβλητή με δείκτη. Το όνομα του πίνακα στο παράδειγμα θα είναι θερμοκρασία και απευθύνεται σε όλες τις 30 θερμοκρασίες. Τα στοιχεία του πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης. θερμοκρασία[i] είναι το i-στό στοιχείο ή αλλιώς η θερμοκρασία τη i-στη μέρα στο παράδειγμά μας. Θερμοκρασία[9] είναι η θερμοκρασία την 9η ημέρα. Διάβασε θερμοκρασία[5] εισάγεται μια θερμοκρασία για την 5η ημέρα θερμοκρασία[8]  20 εκχωρείται η τιμή 20 ως θερμοκρασία για την 8η ημέρα

22 Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη.

23 Τα πρόγραμμα του παραδείγματος (συνέχεια)
ΠΡΟΓΡΑΜΜΑ θερμοκρασίες ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Θερμοκρασία[30], Σ, μέση ΑΚΕΡΑΙΕΣ: ι, Ημέρες ΑΡΧΗ Σ 0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θερμοκρασία[ι] Σ  Σ + Θερμοκρασία[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Μέση  Σ /30 Ημέρες0 ΑΝ Θερμοκρασία[ι] >μέση ΤΟΤΕ Ημέρες  Ημέρες+1 ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ μέση, Ημέρες ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

24 Ασκήσεις σχετικά με το προηγούμενο παράδειγμα.
Να επεκτείνετε την άσκηση ώστε να εμφανίζει όλες τις ημέρες που η θερμοκρασία είναι μεγαλύτερη από τη μέση κατά δύο βαθμούς. Η έξοδος των αποτελεσμάτων να ακολουθεί το παρακάτω πρότυπο 3η ημέρα 20 βαθμοί 7η ημέρα 19 βαθμοί …………………… 2. Να γραφτεί αλγόριθμος που να διαβάσει την ισοτιμία ευρώ και τσέχικης κορώνας τις τελευταίες 100 ημέρες (π.χ. 1 ευρώ = 27 κορώνες). Να βρίσκει την μέση τιμή της ισοτιμίας και πόσες ημέρες η ισοτιμία ήτανε κοντά στη μέση κατά 0,5 κορώνες.

25 ΠΙΝΑΚΕΣ Το Π[i] είναι το στοιχείο του πίνακα που βρίσκεται στη i θέση, για παράδειγμα στον παρακάτω πίνακα το Π[2] είναι ο αριθμός 4. Π 1 2 3 4 5 6 45 12 59 35 7

26 Εκχώρηση σε τιμών σε στοιχεία του πίνακα
 Π[3]  20  Π[5]  45 Ι 4 Π[Ι]31 Ι1 ΔΙΑΒΑΣΕ Π[Ι], έστω 27 Π[2][3]+Π[4] 1 2 3 4 5 6 27 51 20 31 45 Π

27 ΠΡΟΓΡΑΜΜΑ ΛΕΙΤΟΥΡΓΙΕΣ_ΠΙΝΑΚΩΝ  ΜΕΤΑΒΛΗΤΕΣ    ΑΚΕΡΑΙΕΣ: Ι, Π[6]  ΑΡΧΗ    ΔΙΑΒΑΣΕ Π[3]  Ι2
ΔΙΑΒΑΣΕ Π[Ι]  ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΛΕΙΤΟΥΡΓΙΕΣ_ΠΙΝΑΚΩΝ

28 Διάβασμα μονοδιάστατου πίνακα
ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΔΙΑΒΑΣΕ Π[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

29 Εύρεση αθροίσματος ενός μονοδιάστατου πίνακα
ΑΘΡΟΙΣΜΑ0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡΟΙΣΜΑ  ΑΘΡΟΙΣΜΑ + Π[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Τον μέσο όρο μπορούμε στην συνέχεια να τον βρούμε με την εντολή ΜΕΣΟΣ_ΟΡΟΣ  ΑΘΡΟΙΣΜΑ / Ν

30 Εύρεση μέγιστου ενός μονοδιάστατου πίνακα
ΜΕΓΙΣΤΟΣ  Π[1] ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ Π[ι] > ΜΕΓΙΣΤΟΣ ΤΟΤΕ ΜΕΓΙΣΤΟΣ  Π[ι] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

31 Εύρεση μέγιστου ενός μονοδιάστατου πίνακα αλλά και της θέσης του
ΜΕΓΙΣΤΟΣ  Π[1] ΘΕΣΗ  1 ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ Ν ΑΝ Π[ι] > ΜΕΓΙΣΤΟΣ ΤΟΤΕ ΜΕΓΙΣΤΟΣ  Π[ι] ΘΕΣΗ  ι ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

32 Άθροισμα ΓΚΟΛ Σ 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ γκολ Σ  Σ + γκολ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ Σ /8 Γκολ Σ ΜΟ

33 Γκολ Σ<- 0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 8 ΔΙΑΒΑΣΕ Γκολ[ι] Σ <- Σ + Γκολ[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ<- Σ /8 μ<-0 Αν Γκολ[ι] >ΜΟ τότε μ<-μ+1 Τέλος_αν ΓΡΑΨΕ ΜΟ, μ 1 2 3 4 5 6 7 8 23 19 12 20 14 10 27 Γκολ Σ μ ΜΟ

34 Άθροισμα Θερμοκρασιών
Σ<- 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θερμοκρασία Σ <- Σ + Θερμοκρασία ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ<- Σ /30

35 Άθροισμα Θερμοκρασιών
Σ<- 0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θερμοκρασία[ι] Σ <- Σ + Θερμοκρασία[ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΟ<- Σ /30 μ<-0 Αν Θερμοκρασία[ι] >ΜΟ τότε μ<-μ+1 Τέλος_αν ΓΡΑΨΕ ΜΟ, μ

36 Παράλληλοι πίνακες Αποθηκεύστε σε πίνακα 6 στοιχείων τα ονόματα 6 μουσικών κομματιών Σε ένα παράλληλο πίνακα αποθηκεύστε την ημερομηνία που πρωτοκυκλοφόρησε. Επανέλαβε 6 φορές την εντολή Διάβασε ΜΚ[Ι],ΕΤΟΣ[Ι] 1 2 3 4 5 6 Χαιρετίσματα Give Peace a chance Όλα δικά σου Χέρια Ψηλά Δεν έχουνε ταβάνι Αχ Ελλάδα 1 2 3 4 5 6 1980 1970 1960 2009 2011 1992

37 Δεδομένα Εισόδου Χαιρετίσματα 1980 Give Peace a chance 1970 Όλα δικά σου 1960 Χέρια Ψηλά 2009 Δεν έχουνε ταβάνι 2011 Αχ Ελλάδα 1992

38 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 6     ΔΙΑΒΑΣΕ ΜΚ[ι], ΕΤΟΣ[ι]    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

39 ΜΙΝ <- ΕΤΟΣ[1]    ΘΕΣΗ <- 1   ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ 6     ΑΝ ΕΤΟΣ[ι] < ΜΙΝ ΤΟΤΕ       ΜΙΝ <- ΕΤΟΣ[ι]        ΘΕΣΗ <- ι     ΤΕΛΟΣ_ΑΝ   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ   ΓΡΑΨΕ 'ΠΑΛΑΙΟΤΕΡΟ ΤΡΑΓΟΥΔΙ ', ΜΚ[ΘΕΣΗ], ' , ', ΜΙΝ

40 ΓΡΑΨΕ 'ΔΩΣΕ ΛΕΞΗ ΓΙΑ ΑΝΑΖΗΤΗΣΗ'   ΔΙΑΒΑΣΕ ΚΕΥ   ΘΕΣΗ <- 0   ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 6     ΑΝ ΜΚ[ι] = ΚΕΥ ΤΟΤΕ       ΘΕΣΗ <- ι     ΤΕΛΟΣ_ΑΝ   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ  

41 ΑΝ ΘΕΣΗ = 0 ΤΟΤΕ     ΓΡΑΨΕ " ΔΕΝ  ΒΡΕΘΗΚΕ "   ΑΛΛΙΩΣ     ΓΡΑΨΕ "ΠΡΩΤΟΚΥΚΛΟΦΟΡΗΣΕ ", ΕΤΟΣ[ΘΕΣΗ]    ΤΕΛΟΣ_ΑΝ

42 Σειριακή Αναζήτηση , σελ64
Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου: ο πίνακας είναι μη ταξινομημένος, ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n ≤ 20), η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια

43 ΑΣΚΗΣΗ ΕΛΕΓΧΟΥ ΚΑΤΑΝΟΗΣΗΣ – ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ
Γράψτε ένα αλγόριθμο ο οποίος θα διαβάζει σε πίνακα τους 100 λαχνούς που κερδίζουν στη συνέχεια διαβάζει ένα λαχνό και βρίσκει αν ο λαχνός είναι στους τυχερούς πως θα άλλαζε ο αλγόριθμος αν σε ένα παράλληλο πίνακα είχαμε και τα δώρα που αντιστοιχούν στους λαχνούς.

44 Αναζήτηση Μας ενδιαφέρει η εύρεση της πρώτης θέσεις του κλειδιού – ΌΧΙ ΕΞΥΠΝΗ ΛΥΣΗ Αναζήτηση της θέσης του πρώτου στοιχείου ενός μονοδιάστατου πίνακα που πληροί κάποιο κριτήριο (π.χ. να βρεθεί η θέση του πρώτου αριθμού 12 , αν υπάρχει και εμφάνιση μηνύματος αποτυχίας αν δεν βρεθεί κανένα.). Αυτό το θέλουμε συνήθως όταν τα στοιχεία του πίνακα είναι μοναδικά οπότε δεν έχει νόημα όταν βρεθεί αυτό που ψάχνουμε να συνεχιστεί η αναζήτηση. ΔΙΑΒΑΣΕ key !η μεταβλητή key είναι το στοιχείο που αναζητούμε i  1 θέση0 ΓΙΑ i ΑΠΌ 1 ΜΕΧΡΙ Ν ΑΝ Π[i]=key ΤΟΤΕ θέσηi ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ θέση<>0 ΤΟΤΕ ΕΜΦΑΝΙΣΕ θέση ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ ‘ΔΕΝ ΒΡΕΘΗΚΕ’ 1 2 3 4 5 6 45 12 59 35 7

45 Αναζήτηση Μας ενδιαφέρει η εύρεση της πρώτης θέσεις του κλειδιού –ΕΞΥΠΝΗ ΛΥΣΗ Αναζήτηση της θέσης του πρώτου στοιχείου ενός μονοδιάστατου πίνακα που πληροί κάποιο κριτήριο (π.χ. να βρεθεί η θέση του πρώτου αριθμού 12 , αν υπάρχει και εμφάνιση μηνύματος αποτυχίας αν δεν βρεθεί κανένα.). Αυτό το θέλουμε συνήθως όταν τα στοιχεία του πίνακα είναι μοναδικά οπότε δεν έχει νόημα όταν βρεθεί αυτό που ψάχνουμε να συνεχιστεί η αναζήτηση. ΔΙΑΒΑΣΕ key !η μεταβλητή key είναι το στοιχείο που αναζητούμε i  1 βρέθηκε  ΨΕΥΔΗΣ θέση0 ΟΣΟ (i <= Ν) ΚΑΙ (βρέθηκε =ΨΕΥΔΗΣ) ΕΠΑΝΕΛΑΒΕ ΑΝ Π[i]=key ΤΟΤΕ βρέθηκεΑΛΗΘΗΣ θέσηi ΑΛΛΙΩΣ i  i + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ ! ή και: Αν θέση<>0 τότε ΕΜΦΑΝΙΣΕ θέση ΕΜΦΑΝΙΣΕ ‘ΔΕΝ ΒΡΕΘΗΚΕ’ 1 2 3 4 5 6 45 12 59 35 7

46 Αναζήτηση Το κλειδί ενδέχεται να υπάρχει πολλές φορές στον πίνακα. Αναζήτηση της θέσης όλων των στοιχείων ενός μονοδιάστατου πίνακα που πληρούν κάποιο κριτήριο (π.χ. να βρεθούν οι θέσεις όλων των «Γιώργος», αν υπάρχουν) και εμφάνιση μηνύματος αποτυχίας αν δεν βρεθεί κανένα. !Η «ΒΡΕΘΗΚΕ» είναι λογική μεταβλητή. ΔΙΑΒΑΣΕ key !η μεταβλητή key είναι το στοιχείο που αναζητούμε ΒΡΕΘΗΚΕ  ΨΕΥΔΗΣ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΝ Π[ι] = key ΤΟΤΕ ΕΜΦΑΝΙΣΕ ι ΒΡΕΘΗΚΕ  ΑΛΗΘΗΣ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ ΒΡΕΘΗΚΕ = ΨΕΥΔΗΣ ΤΟΤΕ ΕΜΦΑΝΙΣΕ ‘ΔΕΝ ΒΡΕΘΗΚΕ’ 1 2 3 4 5 6 45 12 59 35 7

47 Σειριακή αναζήτηση σε ταξινομημένο πίνακα, σελ64
Μας ενδιαφέρει η εύρεση της πρώτης θέσης του κλειδιού. ΑΛΓΟΡΙΘΜΟΣ ΣΕΙΡΙΑΚΗ_ΑΝΑΖ_ΣΕ_ΤΑΞΙΝ_ΠΙΝ ΔΙΑΒΑΣΕ key i  1 βρέθηκεΨΕΥΔΗΣ ΟΣΟ (i <= Ν) ΚΑΙ (key >=Π[i]) ΕΠΑΝΕΛΑΒΕ ΑΝ Π[i]=key ΤΟΤΕ βρέθηκεΑΛΗΘΗΣ θέση i ΤΕΛΟΣ_ΑΝ i  i + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ βρέθηκε=ΨΕΥΔΗΣ ΤΟΤΕ ΕΜΦΑΝΙΣΕ ‘ΔΕΝ ΒΡΕΘΗΚΕ’ ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ θέση ΤΕΛΟΣ ΣΕΙΡΙΑΚΗ_ΑΝΑΖ_ΣΕ_ΤΑΞΙΝ_ΠΙΝ 1 2 3 4 5 6 45 48 50 59 80 95

48 Βάλτε το σύμβολο <, > ή = για κάθε περίπτωση:
καλός κακός /4 (αύξουσα ταξινόμηση) (φθίνουσα ταξινόμηση) Ανδρέας Νίκος Πασχάλης (αύξουσα ταξινόμηση) Νίκος Ανδρέας Πασχάλης (αύξουσα ταξινόμηση με βάση το μήκος της λέξης)

49

50 Ταξινόμηση Φυσαλίδας ή Ευθείας Ανταλλαγής
Αλγόριθμος Φυσαλίδα Δεδομένα //Α, n// Για ι από 2 μέχρι n Για κ από n μέχρι ι με_βήμα -1 Αν Α[κ]<Α[κ-1] τότε Αντιμετάθεση Α[κ], Α[κ-1] Τέλος_Αν Τέλος_Επανάληψης Αποτελέσμτα //Α, n// Τέλος Φυσαλίδα

51 ΠΙΝΑΚΕΣ 2 διαστάσεων Το Π[i,κ] είναι το στοιχείο του πίνακα που βρίσκεται στη i γραμμή και στην κ στήλη, για παράδειγμα στον παρακάτω πίνακα το Π[2,4] είναι ο αριθμός 34. Τι θα εμφανίσει η εντολή Εμφάνισε Π[1,5] Π 1 2 3 4 5 6 45 12 59 35 7 37 78 34 23 9

52 ΠΙΝΑΚΕΣ 1 διαστάσεων Για την αποθήκευση των πόντων ενός παίκτη μπάσκετ για 6 αγώνες απαιτείται μονοδιάστατος 6 στοιχείων. Ο δείκτης αναφέρεται στον αγώνα. Π 1 2 3 4 5 6 25 12 19 10 7

53 ΠΙΝΑΚΕΣ 2 διαστάσεων Για την αποθήκευση των πόντων δύο παίκτών μπάσκετ για 6 αγώνες απαιτείται δισδιάστατος πίνακας 2χ6 στοιχείων. Ο δείκτης της γραμμής αναφέρεται στον παίκτη και ο δείκτης της στήλης στον αγώνα. Π.χ. Π[2,4] είναι οι πόντοι του δεύτερου παίκτη στον 4ο αγώνα. Π 1 2 3 4 5 6 25 12 19 10 7 23 34

54 Διάβασμα δισδιάστατου πίνακα κατά γραμμή
ΓΙΑ παίκτης ΑΠΟ 1 ΜΕΧΡΙ 2 ΓΙΑ αγώνα ΑΠΟ 1 ΜΕΧΡΙ 6 ΔΙΑΒΑΣΕ Π[παίκτης, αγώνα] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ παίκτης αγώνα Στοιχείο 1 1 Π[1,1] 2 Π[1,2] 3 Π[1,3] 4 Π[1,4] 5 Π[1,5] 6 Π[1,6] 2 1 Π[2,1] 2 Π[2,2] 3 Π[2,3] 4 Π[2,4] 5 Π[2,5] 6 Π[2,6] 1 2 3 4 5 6 25 12 19 10 7 23 34

55 Διάβασμα δισδιάστατου πίνακα κατά στήλη
ΓΙΑ αγώνα ΑΠΟ 1 ΜΕΧΡΙ 6 ΓΙΑ παίκτης ΑΠΟ 1 ΜΕΧΡΙ 2 ΔΙΑΒΑΣΕ Π[παίκτης, αγώνα] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ παίκτης αγώνα Στοιχείο 1 1 Π[1,1] 2 Π[2,1] 1 2 Π[1,2] 2 Π[2,2] 1 3 Π[1,3] 2 Π[2,3] 1 4 Π[1,4] 2 Π[2,4] 1 5 Π[1,5] 2 Π[2,5] 1 6 Π[1,6] 2 Π[2,6] 1 2 3 4 5 6 25 12 19 10 7 23 34

56 Διάβασμα δισδιάστατου πίνακα κατά γραμμή
ΠΡΟΓΡΑΜΜΑ ΔΙΑΒΑΣΜΑ_ΔΙΣΔ ΣΤΑΘΕΡΕΣ Ν=2 Μ=3 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Π[Ν, Μ], ι, κ ΑΡΧΗ ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ Μ ΔΙΑΒΑΣΕ Π[ι, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

57 Εύρεση του αθροίσματος των στοιχείων ενός δισδιάστατου πίνακα N x M:
ΑΘΡΟΙΣΜΑ  0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡΟΙΣΜΑ  ΑΘΡΟΙΣΜΑ + Π[ι, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΑΘΡΟΙΣΜΑ

58 ΑΣΚΗΣΗ Να γραφτεί πρόγραμμα που θα διαβάζει τους πόντους 2 παικτών σε 4 αγώνες και θα τους αποθηκεύει σε δισδιάστατο πίνακα. Να υπολογίζει το άθροισμα όλων των πόντων. Να βρίσκει το μικρότερο στοιχείο του πίνακα.

59 Άθροισμα κατά γραμμή 25 12 19 10 7 23 34 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΘΡΟΙΣΜΑ  0 ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ Μ ΑΘΡΟΙΣΜΑ  ΑΘΡΟΙΣΜΑ + Π[ι, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΑΘΡΟΙΣΜΑ ! Σ[ι] ΑΘΡΟΙΣΜΑ 1 2 3 4 5 6 25 12 19 10 7 23 34

60 Άθροισμα κατά στήλη 25 12 19 10 7 23 34 ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ Μ
ΑΘΡΟΙΣΜΑ  0 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΑΘΡΟΙΣΜΑ  ΑΘΡΟΙΣΜΑ + Π[ι, κ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ΑΘΡΟΙΣΜΑ ! Σ[κ] ΑΘΡΟΙΣΜΑ 1 2 3 4 5 6 25 12 19 10 7 23 34

61 ΑΣΚΗΣΗ Σε συνέχεια της προηγούμενης άσκησης να υπολογισθούν και να εμφανιστούν οι συνολικοί πόντοι κάθε παίκτη (άθροισμα κατά γραμμή). Επίσης να υπολογισθούν οι συνολικοί πόντοι όλων των παικτών σε κάθε αγώνα (άθροισμα κατά στήλη).

62 Ασκήση1 – διάβασμα κατά στήλη Μαθητής αποθήκευσε τα ονόματα 4 πόλεων στον πίνακα ΠΟΛΗ. Επίσης αποθήκευσε τις θερμοκρασίες των πόλεων για κάθε μέρα μιας βδομάδας όπως φαίνεται στον πίνακα Θ. Να συμπληρώσετε τις παρακάτω εντολές ώστε να διαβάζουν και να αποθηκεύουν τα ονόματα των πόλεων καθώς και τις θερμοκρασίες κατά πόλη πρώτα. Θ 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25 ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ ………. ΔΙΑΒΑΣΕ ……………… ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ……………. ΔΙΑΒΑΣΕ Θ[…….., ………..] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΠΟΛΗ Καλαμπάκα Τρίκαλα Πύλη Φαρκαδόνα

63 Ασκήση2 – Άθροισμα κατά στήλη Να βρείτε τις μέσες θερμοκρασίες κάθε πόλης και να τις αποθηκεύσετε σε πίνακα ΜΠ 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25 ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ ………. Σ…… ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ ………. Σ…… + ………… ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΠ[….]……………… ΜΠ

64 Ασκήση3 – Μικρότερο άθροισμα κατά στήλη Να βρείτε την μικρότερη μέση θερμοκρασία μεταξύ των πόλεων και ποια την είχε (Υποθέτουμε ότι δεν υπάρχουν πόλεις με ίση μέση θερμοκρασία). !συνέχεια από προηγούμενη 2 ΜΙΝΘΜΠ[…..] ΘΕΣΗ…….. ΓΙΑ Ι ΑΠΌ 2 ΜΕΧΡΙ …… ΑΝ ΜΠ[Ι] …….ΜΙΝΘ ΤΟΤΕ ΜΙΝΘ ….. ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΕΜΦΑΝΙΣΕ ΜΙΝΘ, ΠΟΛΗ[……..] 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25 ΜΠ

65 Ασκήση4 – Μικρότερο άθροισμα κατά στήλη που δεν είναι μοναδικό) Να βρείτε την μικρότερη μέση θερμοκρασία μεταξύ των πόλεων και να εμφανίσετε τις πόλεις που την είχαν (Υποθέτουμε ότι υπάρχουν πόλεις με ίση μέση θερμοκρασία). !συνέχεια από προηγούμενη 2 ΜΙΝΘΜΠ[…..] ΓΙΑ Ι ΑΠΌ 2 ΜΕΧΡΙ …… ΑΝ ΜΠ[Ι] …….ΜΙΝΘ ΤΟΤΕ ΜΙΝΘ ….. ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΕΜΦΑΝΙΣΕ ΜΙΝΘ ΓΙΑ Ι ΑΠΌ 1 ΜΕΧΡΙ 4 ΕΜΦΑΝΙΣΕ ΠΟΛΗ[………] 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25 ΜΠ

66 Ασκήση5 – Μέτρηση κατά στήλη στοιχείων που επαληθεύουν μία συνθήκη Να βρείτε για κάθε πόλη πόσες ημέρες η θερμοκρασία τους ήτανε κάτω από την μέση. !συνέχεια από προηγούμενη 2 ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 4 Μ0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 7 ΑΝ Θ[……,…….] < ΜΠ[……] ΤΟΤΕ Μ………..+………….. ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΕΜΦΑΝΙΣΕ ΠΟΛΗ[……], Μ 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25 ΜΠ

67 Ασκήση6 – Άθροιση κατά γραμμή - Να βρείτε ποια ημέρα ήταν η πιο ζεστή .
1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25

68 Ασκήση7 –Να βρείτε σε πόσες πόλεις η θερμοκρασία είχε ανοδική πορεία όλη τη βδομάδα. Αν δεν υπάρχει τέτοια πόλη να εμφανίζεται κατάλληλο μήνυμα. 1 2 3 4 9 14 12 10 11 5 8 19 17 21 18 23 6 20 24 7 25

69 ΣΤΟΙΒΑ

70 Εφαρμογές στοίβας Το ιστορικό των σελίδων που επισκεφθήκαµε σε έναν Web browser Η σειρά των πράξεων Undo σε έναν επεξεργαστή κειµένου Η αλυσίδα των κλήσεων µεθόδων στην Java Virtual Machine Έµµεσες εφαρµογές Βοηθητικές δοµές δεδοµένων σε αλγόριθµους Συστατικό σε άλλες δοµές δεδοµένων

71 ΣΤΟΙΒΑ

72 10 9 8 7 6 5 4 3 2 1 Top (=0) 1) Στοίβα (LIFO)

73 Άσκηση Σε μια στοίβα 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Σ, Γ, Μ, Α, Δ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. Να προσδιορίσετε την τιμή του δείκτη top της παραπάνω στοίβας και να την σχεδιάσετε. Αν εφαρμόσουμε τις παρακάτω λειτουργίες: Απώθηση, Απώθηση, Απώθηση, Ώθηση Χ , Ώθηση Δ και Απώθηση ποιά είναι η νέα τιμή της top και ποιά η τελική μορφή της στοίβας; Δ Α Μ Γ Σ Χ Γ Σ Top = 5 Top = 3

74 Άσκηση Σε μια κενή στοίβα πρόκειται να εισαχθούν τα στοιχεία A, M, D, K, L, B με τη σειρά που δίνονται (Α πρώτο, Β τελευταίο). Ακολουθεί μια σειρά πράξεων που είναι: α) Ώθηση δύο στοιχειών στη στοίβα και απώθηση ενός β) Ώθηση δύο στοιχειών στη στοίβα και απώθηση ενός γ) Ώθηση δύο στοιχειών στη στοίβα και απώθηση ενός Ποια στοιχεία και με ποια σειρά, περιέχει η στοίβα μετά τις πράξεις αυτές; Η ανωτέρω άσκηση μπορεί να υλοποιηθεί σε γλώσσα με χρήση ενός πίνακα 10 θέσεων L K A Top = 3

75 Ώθηση (Push) – Απώθηση (Pop)
Το τμήμα προγράμματος για την ώθηση σε στοίβα είναι το παρακάτω: ΓΡΑΨΕ ΄Δώσε στοιχείο για να εισαχθεί στη στοίβα Α:' ΔΙΑΒΑΣΕ στοιχείο ΑΝ top<10 ΤΟΤΕ top  top + 1 Α[top] στοιχείο ΑΛΛΙΩΣ ΓΡΑΨΕ 'Υπερχείλιση στοίβας' ΤΕΛΟΣ_ΑΝ Το τμήμα προγράμματος για την απώθηση από στοίβα είναι το παρακάτω: ΑΝ top>=1 ΤΟΤΕ Στοιχείο  Α[top] top top-1 ΑΛΛΙΩΣ ΓΡΑΨΕ ‘Υποχείλιση στοίβας' ΤΕΛΟΣ_ΑΝ

76 Ώθηση (Push) – Απώθηση (Pop)
Το τμήμα προγράμματος για την ώθηση σε στοίβα είναι το παρακάτω: ΓΡΑΨΕ ΄Δώσε στοιχείο για να εισαχθεί στη στοίβα Α:' ΔΙΑΒΑΣΕ στοιχείο ΑΝ top<10 ΤΟΤΕ top  top + 1 Α[top] στοιχείο ΑΛΛΙΩΣ ΓΡΑΨΕ 'Υπερχείλιση στοίβας' ΤΕΛΟΣ_ΑΝ Το τμήμα προγράμματος για την απώθηση από στοίβα είναι το παρακάτω: ΑΝ top>=1 ΤΟΤΕ Στοιχείο  Α[top] top top-1 ΑΛΛΙΩΣ ΓΡΑΨΕ ‘Υποχείλιση στοίβας' ΤΕΛΟΣ_ΑΝ

77 Άσκηση Ένα οχηματαγωγό πλοίο, χωρητικότητας 250 αυτοκινήτων, εκτελεί το δρομολόγιο ΠΕΙΡΑΙΑΣ – ΑΙΓΙΝΑ. Τα οχήματα που επιβιβάζονται πρώτα είναι αυτά που θα αποβιβαστούν τελευταία. Στο λιμάνι του Πειραιά προσέρχονται τα αυτοκίνητα για αναχώρηση. Να γίνει πρόγραμμα το οποίο: Να υπάρχει μενού επιλογής: 1. Επιβίβαση 2. Αποβίβαση 3. Έξοδος Στη περίπτωση που επιλεχθεί η Επιβίβαση θα διαβάζει τον αριθμό κυκλοφορίας καθενός από τα αυτοκίνητα που προσέρχονται και ο αριθμός κυκλοφορίας του να καταχωρείται στη στοίβα ΟΧΗΜΑΤΑ. Κάθε φορά που επιβιβάζεται ένα αυτοκίνητο να τυπώνεται το ερώτημα "Υπάρχει άλλο αυτοκίνητο (Ν/Ο); ". Αν ο χρήστης απαντήσει Ν (=ΝΑΙ), επαναλαμβάνεται η διαδικασία επιβίβασης, ενώ αν απαντήσει Ο (=ΟΧΙ), σταματά η διαδικασία επιβίβασης και επιστρέφει το πρόγραμμα στο μενού Επιλογής. Αν το πλοίο γεμίσει η επιβίβαση σταματά εμφανίζεται κατάλληλο μήνυμα και επιστρέφει το πρόγραμμα στο μενού επιλογής. Στη περίπτωση που επιλεχθεί η Αποβίβαση, εξάγει και εμφανίζει από την στοίβα ΟΧΗΜΑΤΑ όλους τους αριθμούς αυτοκινήτων που είχαν επιβιβαστεί στον ΠΕΙΡΑΙΑ, με τη σειρά που αποβιβάζονται. Στο τέλος να τυπώνεται το πλήθος των αυτοκινήτων που αποβιβάστηκαν στο λιμάνι της ΑΙΓΙΝΑΣ

78

79 2) Ουρά (FIFO) 1 2 3 4 5 6 7 8 9 10 Εμπρός (front) (=1)
Πίσω (rear) (=0)

80 Εφαρμογές Ουράς Λίστες αναµονής Πρόσβαση σε µοιραζόµενους πόρους (π.χ,
εκτυπωτής) Πολυπρογραµµατισµός Έµµεσες εφαρµογές Βοηθητικές δοµές δεδοµένων για αλγόριθµους Συστατικό άλλων δοµών δεδοµένων

81 ΆΛΛΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Παρουσιάζονται 3 δυναμικές δομές δεδομένων:
Λίστες Δέντρα Γράφοι Στις δυναμικές δομές δεδομένων ο αριθμός των κόμβων μεταβάλλεται κατά της διάρκεια εκτέλεσης του προγράμματος. Βασική έννοια ο δείκτης (pointer) = διεύθυνση μιας θέσης της κύριας μνήμης ≠ δείκτη (index) πίνακας που είναι ακέραιος Ο δείκτης ή οι δείκτες αποτελούν μέρος του κόμβου μαζί με τα δεδομένα.

82 Λίστες

83 Λίστες – Χρήση Δυναμική αποθήκευση δεδομένων
Δημιουργία άλλων δυναμικών δομών: π.χ. Δυναμικής Ουράς και Στοίβας, πίνακες κατατεμαχισμού (hash tables).

84 Δέντρα Ιεραρχική δομή: Δέντρο είναι ένα πεπερασμένο σύνολο κόμβων (ίδιου τύπου) και ακμών που συνδέουν τους κόμβους, με βάση κάποια σχέση που δημιουργεί την ιεραρχική δομή των κόμβων. Ο κόμβος αφετηρία = ρίζα Σχέση γονέα με παιδιά: ένας κόμβος (γονέας) έχει ένα ή περισσότερα «παιδιά». Κόμβος χωρίς παιδιά = Φύλλο. Όλοι οι άλλοι κόμβοι ονομάζονται μη-τερματικοί ή κλαδιά (branches).

85 Δέντρα Ο αριθμός των παιδιών ενός κόμβου ορίζει το βαθμό (degree) του κόμβου. Ο βαθμός ενός δέντρου είναι ο μέγιστος βαθμός από όλους τους βαθμούς των κόμβων του. Τα δυαδικά δέντρα έχουν βαθμό 2. Το ύψος (height) ενός κόμβου είναι το μήκος του μονοπατιού από τον κόμβο στο πιο βαθύ φύλλο που είναι κάτω από τον κόμβο αυτό. Τα φύλλα έχουν ύψος 0. Το ύψος της ρίζας είναι το ύψος του δέντρου. Επίπεδο (level) ενός κόμβου είναι το μήκος της μοναδικής διαδρομής από την ρίζα προς αυτόν τον κόμβο. Η ρίζα κάθε δέντρου βρίσκεται στο μηδενικό επίπεδο. Το επίπεδο καλείται και βάθος. Το μεγαλύτερο βάθος ενός κόμβου είναι το βάθος του δέντρου.

86 Δέντρα Διαδρομή από το n2 προς το n9 είναι η ακολουθία n2, n4, n9. Το μήκος της διαδρομής αυτής είναι 2. Φύλλα είναι τα n8, n9, n5, n6 και n7. Το ύψος του δέντρου είναι 3, ενώ το ύψος του κόμβου n2 είναι 2 και του n9 μηδέν. Ο βαθμός του κόμβου n9 είναι μηδέν, ενώ του κόμβου n2 είναι 2. Το επίπεδο του κόμβου n2 είναι ένα και του n9 είναι τρία.

87 Δέντρα - Χρήσεις Αναζήτηση – Ευρετήρια 3D παιχνίδια
Κωδικοποίηση Huffman - συμπίεση

88 Γράφοι Ένας γράφος (graph) αποτελείται από ένα σύνολο κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών (ή ακμών ή τόξων) που ενώνουν μερικούς ή όλους τους κόμβους. Η δομή του γράφου (graph) είναι η πιο γενική μορφή δομής δεδομένων. Αυτό σημαίνει ότι οι δομές που εξετάσαμε προηγουμένως μπορούν να θεωρηθούν ως υποπεριπτώσεις των γράφων.

89 Γράφοι - Χρήσεις Περιγραφή και επίλυση πολλών προβλημάτων=>Θεωρία Γράφων Πόλεις – Δρόμοι Πρόσωπα – Σχέσεις Υπολογιστές – Συνδέσεις Κεραίες Κινητής Τηλεφωνίας - Συνδέσεις


Κατέβασμα ppt "ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google