Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ
Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή. οποιαδήποτε στοιχεία μπορούν να εξαχθούν από τη διατύπωση του προβλήματοςκαι η επιλογή τους εξαρτάται από τον τύπο του προβλήματος. Παράδειγμα: Σε ένα σχολείο χρήσιμα δεδομένα αποτελούν: Ονοματεπώνυμο Ηλικία Φύλο Τάξη Τμήμα Δημόπουλος Θανάσης 17 Α Γ 2 Άκης Τάκης 16 Α Β 3
Πληροφορία Δεν Κύκλος Η Unfortunately, no one can be told what the Matrix is. You have to see it for yourself. είναι εύκολο να δοθεί επακριβής ορισμός της έννοιας της πληροφορίας, αλλά μπορεί να θεωρηθεί ότι ο αλγόριθμος είναι το μέσο για την παραγωγή πληροφορίας από τα δεδομένα της πληροφορίας: Η πληροφορία που εξάγεται από μια διαδικασία αποτελεί δεδομένο για κάποια άλλη. μέτρηση, η κωδικοποίηση, η μετάδοση της πληροφορίας αποτελεί αντικείμενο μελέτης ενός ιδιαίτερου κλάδου, της Θεωρίας Πληροφοριών (Information Theory)
Πληροφορική Ορίζεται σε σχέση με την μελέτη δεδομένων από τις ακόλουθες σκοπιές Υλικού: Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations). Τέτοιες μορφές είναι η δυαδική, ο κώδικας ΑSCII (βλ.παράρτημα), ο κώδικας EBCDIC, το συμπλήρωμα του 1 ή του 2 κλπ Γλωσσών Προγραμματισμού: Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διάφορων τύπων (types) μεταβλητών (variables) για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής στον υπολογιστή.
Πληροφορική Δομών Δεδομένων: Δομή δεδομένων (data structure) είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών: Πχ Η εγγραφή (record) Που αποτελείται από πεδία (fields) που αποθηκεύουν χαρακτηριστικά διάφορων τύπων struct student{ int id; char *name; float percentage; } Ανάλυσης Δεδομένων. Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Βάσεις Δεδομένων (Databases), Μοντελοποίηση Δεδομένων (Data Modelling), Απαράστασης Γνώσης (Knowledge Representation)
Αλγόριθμοι + Δομές Δεδομένων= Προγράμματα Προσπέλαση Εισαγωγή Διαγραφή Αναζήτηση Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes). Οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων είναι οι ακόλουθες: (access), πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του. (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή. (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή. (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα.
Αλγόριθμοι + Δομές Δεδομένων= Προγράμματα Αναζήτηση Ταξινόμηση Αντιγραφή Συγχώνευση Διαχωρισμός (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα. (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή. (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή. (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.
Σπάνια Οι Η Αλγόριθμοι + Δομές Δεδομένων= Προγράμματα χρησιμοποιούνται και οι οκτώ λειτουργίες για κάποια δομή δεδομένων. Διαφορετικές δομές αποδίδουν καλύτερα για διαφορετικές λειτουργίες Wirth (1976): Αλγόριθμοι + Δομές Δεδομένων= Προγράμματα αλγόριθμοι και οι δομές δεδομένων είναι στενά συνδεδεμένες έννοιες. επιλογή της κατάλληλης δομής ξεχωρίζει τον πολύ καλό προγραμματιστή
Κατηγορίες Δομών Δεδομένων Στατικές Δομές Το ακριβές μέγεθος της απαιτούμενης μνήμης, δηλ. το πλήθος των κόμβων, καθορίζεται κατά τη στιγμή της δημιουργίας της δομής δεδομένων, δηλαδή κατά την μετάφραση του προγράμματος, και παραμένει σταθερό. Τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Είναι πιο εύκολες στην υλοποίηση αλλά περιορίζουν τις δυνατότητες ενός προγράμματος, γιατί μπορούν να διαχειριστούν σταθερό αριθμό δεδομένων
Κατηγορίες Δομών Δεδομένων Τα Στηρίζονται Μπορούν Δυναμικές Δομές στοιχεία δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης στην τεχνική της δυναμικής παραχώρησης μνήμης (dynamic memory allocation), δηλ. οι δυναμικές δομές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους αυξομειώνεται κατά την διάρκεια εκτέλεσης του προγράμματος καθώς και στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα. να διαχειριστούν μεταβλητό αριθμό δεδομένων, αλλά είναι πιο δύσκολες στην διαχείριση στο πρόγραμμα.
Πίνακες Υλοποιούν Περιέχουν Η Το τις στατικές δομές δεδομένων στοιχεία του ίδιου τύπου αναφορά στα στοιχεία του γίνεται με το όνομα του πίνακα ακολουθούμενη από έναν ή περισσότερους δείκτες σε αγκύλες όνομα του πίνακα καθορίζει μια ομάδα διαδοχικών θέσεων στην μνήμη. Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από την τιμή ενός δείκτη
Πίνακες Πίνακες Οι Στην που χρησιμοποιούν έναν δείκτη ονομάζονται μονοδιάστατοι. Οι πίνακες μπορεί να είναι δυσδιάστατοι, τρισδιάστατοι, ν-διάστατοι δυσδιάστατοι πίνακες αν το μέγεθος των διαστάσεων είναι ίδιο ονομάζονται τετραγωνικοί (Ν Χ Ν). ΓΛΩΣΣΑ εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που περιέχει ή καλύτερα ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης
Βασικά Παραδείγματα Κάθε στοιχείο του πίνακα μπορεί να χρησιμοποιηθεί σαν ξεχωριστή μεταβλητή. Παράδειγμα: Έστω ο μονοδιάστατος πίνακας Π[8] 4 5 3 2 7 8 9 3 [1] [2] [3] [4] [5] [6] [7] [8] Να γραφούν οι εντολές οι οποίες θα 1. Εμφανίζουν τις τιμές που βρίσκονται στις θέσεις 1 και 8 του πίνακα. 2. Θέτουν στις θέσεις 2 και 5 του πίνακα την τιμή 256 1. Εμφάνισε Π[1], Π[8] 2. Π[2] 256 Π[5] 256
Βασικά Παραδείγματα Δίνεται ο μονοδιάστατος πίνακας Λ αλφαριθμητικών τιμών 6 θέσεων Αρχή Εμφάνισε Πίνακας Πραγματικός Τέλος Διάβασε Τι εμφανίζουν οι ακόλουθες εντολές; 1. Εμφάνισε Λ[6] 2. Εμφάνισε Λ[2]=, Λ[2] 3. Εμφάνισε Λ[3],Λ[4] 4. Λ[5] Λ[5] Εμφάνισε Λ[5] 5. ι 1 Εμφάνισε Λ[ι] 6. ι 2 Εμφάνισε Λ[ι*2] 7. Εμφάνισε Λ
Βασικά Παραδείγματα Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ που θα διαβάζει 10 ακεραίους και θα εκτυπώνει το διπλάσιό τους Όταν θέλουμε να επεξεργαστούμε όλα τα στοιχεία ενός πίνακα τότε χρησιμοποιούμε βρόχο επανάληψης ΓΙΑ