Θεωρία, Ερωτήσεις Ανάπτυξης, Quiz & Ασκήσεις
Τα δεδομένα (data) είναι μια αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μια απλοποιημένη όψη της. Είναι ακατέργαστα γεγονότα, και κάθε φορά η επιλογή τους εξαρτάται από τον τύπο του προβλήματος.
Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός τους δίνει ως αποτέλεσμα την πληροφορία. Μπορεί να θεωρηθεί ότι ο αλγόριθμος είναι το μέσο για την παραγωγή πληροφορίας από τα δεδομένα.
Με βάση τις δεδομένες πληροφορίες λαμβάνονται διάφορες αποφάσεις και γίνονται ενέργειες. Στη συνέχεια αυτές οι ενέργειες παράγουν νέα δεδομένα, νέες πληροφορίες, νέες αποφάσεις, νέες ενέργειες κ.ο.κ.
Η πληροφορική μελετά τα δεδομένα από τις εξής σκοπιές:
Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη και στις περιφερειακές συσκευές του υπολογιστή με διάφορες αναπαραστάσεις (representations). Τέτοιες μορφές είναι:
Οι γλώσσες προγραμματισμού υψηλού επιπέδου (high level programming languages) επιτρέπουν τη χρήση διαφόρων τύπων (types) μεταβλητών (variables) για να περιγράψουν ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για την αποδοτικότερη μορφή αποθήκευσης, από πλευράς υλικού, κάθε μεταβλητής.
Δομή δεδομένων (data structure) είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επ' αυτών. Για παράδειγμα, μια τέτοια δομή είναι η εγγραφή (record), που μπορεί να περιγράφει ένα είδος, ένα πρόσωπο κ.λπ.
Τρόποι καταγραφής και αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Οι τεχνολογίες των Βάσεων Δεδομένων (Databases), της Μοντελοποίησης Δεδομένων (Data Modelling) και της Αναπαράστασης Γνώσης (Knowledge Representation) ανήκουν σε αυτή τη σκοπιά μελέτης.
Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.
Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes) — δηλαδή στοιχείων που αποθηκεύουν τα δεδομένα — και από τις σχέσεις που τα συνδέουν.
Οι βασικές λειτουργίες επί των δομών δεδομένων είναι οι ακόλουθες:
Μια δομή δεδομένων είναι αποδοτικότερη από μια άλλη δομή με κριτήριο κάποια συγκεκριμένη λειτουργία (π.χ. ταχύτητα αναζήτησης, ευκολία εισαγωγής κ.λπ.).
Η εξάρτηση της δομής δεδομένων και του αλγορίθμου είναι η ακόλουθη:
Ο αλγόριθμος καθορίζει τις λειτουργίες που θα εκτελεστούν, ενώ η δομή δεδομένων καθορίζει τον τρόπο οργάνωσης και αποθήκευσης των δεδομένων. Η επιλογή της κατάλληλης δομής επηρεάζει άμεσα την αποδοτικότητα του αλγορίθμου.
Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές μέγεθος της απαιτούμενης μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους και κατά συνέπεια κατά τη στιγμή της μετάφρασης και όχι κατά τη διάρκεια της εκτέλεσης του προγράμματος.
Ακόμη, στις στατικές δομές δεδομένων τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
Οι στατικές δομές υλοποιούνται με πίνακες, που είναι δομές που περιέχουν στοιχεία του ίδιου τύπου.
Οι δυναμικές δομές δεδομένων (dynamic) δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης.
Με άλλα λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα.
Όλες οι σύγχρονες γλώσσες προσφέρουν τη δυναμική παραχώρηση μνήμης.
Τα δεδομένα είναι μια αφαιρετική αναπαράσταση της πραγματικότητας, δηλαδή μια απλοποιημένη όψη της. Είναι ακατέργαστα γεγονότα, και η επιλογή τους εξαρτάται από τον τύπο του προβλήματος.
Η πληροφορία προκύπτει από τη συλλογή και τον συσχετισμό των ακατέργαστων δεδομένων. Με άλλα λόγια, τα δεδομένα είναι τα πρώτες ύλες, ενώ η πληροφορία είναι το επεξεργασμένο αποτέλεσμα που έχει νόημα και χρησιμότητα.
Ο αλγόριθμος είναι το μέσο για την παραγωγή πληροφορίας από τα δεδομένα. Με βάση την πληροφορία λαμβάνονται αποφάσεις, γίνονται ενέργειες, οι οποίες με τη σειρά τους παράγουν νέα δεδομένα και νέες πληροφορίες.
Η Θεωρία Πληροφοριών είναι ένας ιδιαίτερα σημαντικός κλάδος της Πληροφορικής. Μελετά:
Ασχολείται με τον τρόπο μέτρησης της ποσότητας της πληροφορίας, με τεχνικές αποδοτικής κωδικοποίησης δεδομένων (π.χ. κωδικός Huffman) και με τη μελέτη των καναλιών επικοινωνίας για τη μετάδοση δεδομένων με ελάχιστο σφάλμα.
Η πληροφορική μελετά τα δεδομένα από τέσσερις βασικές σκοπιές:
Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.
Κάθε μορφή δομής δεδομένων αποτελείται από:
Για παράδειγμα, μια εγγραφή (record) είναι μια δομή που μπορεί να περιγράφει ένα είδος ή ένα πρόσωπο.
Στις στατικές δομές δεδομένων το ακριβές μέγεθος της απαιτούμενης μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού και της μετάφρασης, όχι κατά την εκτέλεση.
Επειδή το μέγεθος είναι σταθερό και προκαθορισμένο, δεν μπορούμε να προσθέσουμε νέους κόμβους (εισαγωγή) ούτε να αφαιρέσουμε κόμβους (διαγραφή) κατά την εκτέλεση του προγράμματος. Ο χώρος μνήμης έχει ήδη δεσμευτεί και δεν μεταβάλλεται.
Η εξάρτηση μεταξύ δομών δεδομένων και αλγορίθμου εκφράζεται από τον Niklaus Wirth (δημιουργό της Pascal) με τον τύπο:
Ο αλγόριθμος καθορίζει τις λειτουργίες που θα εκτελεστούν, ενώ η δομή δεδομένων καθορίζει τον τρόπο οργάνωσης και αποθήκευσης των δεδομένων. Η επιλογή της κατάλληλης δομής επηρεάζει άμεσα την αποδοτικότητα του αλγορίθμου.
Στατική δομή δεδομένων είναι μια δομή στην οποία:
Οι στατικές δομές υλοποιούνται με πίνακες, οι οποίοι περιέχουν στοιχεία του ίδιου τύπου. Ένας πίνακας μπορεί να είναι μονοδιάστατος, δισδιάστατος, τρισδιάστατος ή γενικά ν-διάστατος.
Δυναμική δομή δεδομένων είναι μια δομή που:
Πλεονέκτημα: Η χρήση δυναμικών δομών δίνει μεγαλύτερη ευελιξία στον προγραμματισμό, καθώς προσαρμόζεται το μέγεθος στις πραγματικές ανάγκες του προβλήματος κατά την εκτέλεση, χωρίς σπατάλη μνήμης.
Ένας τετραγωνικός πίνακας (square) είναι ένας δισδιάστατος πίνακας στον οποίο το μέγεθος των δύο διαστάσεων είναι ίσο (π.χ. N x N).
Ένας δισδιάστατος πίνακας μπορεί να θεωρηθεί ως ένας μονοδιάστατος πίνακας, όπου κάθε θέση του περιέχει έναν νέο μονοδιάστατο πίνακα. Δηλαδή, κάθε γραμμή του δισδιάστατου πίνακα είναι ένας ξεχωριστός μονοδιάστατος πίνακας.
1. Τα δεδομένα είναι:
2. Η συλλογή και συσχέτιση δεδομένων δίνει ως αποτέλεσμα:
3. Ποια σκοπιά μελετά τους τύπους μεταβλητών και την αποδοτική αποθήκευση από τον μεταφραστή;
4. Δομή δεδομένων είναι:
5. Ποια λειτουργία δεν έχει νόημα σε στατικές δομές δεδομένων;
6. Ο συνδυασμός αλγορίθμου και δομής δεδομένων δίνει:
7. Οι στατικές δομές δεδομένων υλοποιούνται με:
8. Οι δυναμικές δομές δεδομένων αποθηκεύονται:
9. Πίνακας Ν x Ν ονομάζεται:
10. Ποιος διατύπωσε τον κανόνα "Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα";
Να αντιστοιχίσετε κάθε στοιχείο της Στήλης Α με το κατάλληλο της Στήλης Β.
Στήλη Α:
Στήλη Β:
Λύση:
1 → β (Σκοπιά Υλικού — αναπαραστάσεις δεδομένων)
2 → γ (Σκοπιά Γλωσσών Προγραμματισμού — τύποι μεταβλητών)
3 → α (Σκοπιά Δομών Δεδομένων — η εγγραφή είναι δομή δεδομένων)
4 → δ (Σκοπιά Ανάλυσης Δεδομένων — Βάσεις Δεδομένων)
Συμπληρώστε τα κενά με τις κατάλληλες λέξεις:
Λύση:
1. Θεωρία Πληροφοριών
2. αλγόριθμος
3. μετάφρασης
4. δυναμικής παραχώρησης
5. τετραγωνικός
Να χαρακτηρίσετε τις παρακάτω προτάσεις ως Σωστές (Σ) ή Λάθος (Λ):
Λύση:
1. Λ — Τα δεδομένα είναι ακατέργαστα γεγονότα, όχι επεξεργασμένες πληροφορίες.
2. Σ — Η εγγραφή είναι πράγματι ένα παράδειγμα δομής δεδομένων.
3. Λ — Στις στατικές δομές το μέγεθος είναι σταθερό, άρα δεν επιτρέπεται εισαγωγή/διαγραφή.
4. Λ — Οι δυναμικές δομές αποθηκεύονται σε μη συνεχόμενες θέσεις μνήμης.
5. Σ — Κάθε γραμμή ενός δισδιάστατου πίνακα μπορεί να θεωρηθεί ως ξεχωριστός μονοδιάστατος πίνακας.
6. Λ — Ο διαχωρισμός είναι η αντίστροφη πράξη της συγχώνευσης (όχι το αντίστροφο).
Να αναπτύξετε σε 5-6 γραμμές γιατί η επιλογή της κατάλληλης δομής δεδομένων επηρεάζει την αποδοτικότητα ενός προγράμματος. Δώστε ένα πρακτικό παράδειγμα.
Λύση:
Η επιλογή της κατάλληλης δομής δεδομένων επηρεάζει άμεσα την αποδοτικότητα ενός προγράμματος γιατί κάθε δομή έχει διαφορετική απόδοση σε συγκεκριμένες λειτουργίες.
Για παράδειγμα, αν θέλουμε να αναζητούμε συχνά στοιχεία, ένας ταξινομημένος πίνακας επιτρέπει δυαδική αναζήτηση (πολυπλοκότητα O(log N)), ενώ ένας μη ταξινομημένος πίνακας απαιτεί σειριακή αναζήτηση (O(N)). Αν όμως θέλουμε συχνές εισαγωγές και διαγραφές, μια δυναμική λίστα είναι προτιμότερη από έναν πίνακα, γιατί οι πίνακες απαιτούν μετακίνηση στοιχείων.
Σύμφωνα με τον Wirth: "Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα", που σημαίνει ότι ο αλγόριθμος και η δομή είναι αλληλένδετα και η κακή επιλογή δομής μπορεί να καταστήσει έναν καλό αλγόριθμο αναποτελεσματικό.