-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα
18. Pws ulopoieitai Στοίβα (Stack) Η στοίβα υλοποιεί τη λογική LIFO (Last In First Out). Τα δεδομένα εισάγονται στην κορυφή της στοίβας ενώ η αφαίρεση ενός στοιχείου γίνεται πάντα από την κορυφή της στοίβας. Η στατική στοίβα υλοποιείται με μονοδιάστατο πίνακα και χρησιμοποιεί ένα δείκτη Top που δείχνει στην κορυφή της στοίβας.
Στοίβα (Stack) Οι λειτουργίες είναι δύο : Η εισαγωγή-ώθηση (Push) ενός στοιχείου στην κορυφή της στοίβας. Η αφαίρεση-απώθηση (Pop) ενός στοιχείου από την κορυφή της στοίβας.
Στοίβα (Stack) Κατά την εισαγωγή ενός στοιχείου (ώθηση), πρέπει να γίνεται έλεγχος μήπως η στοίβα είναι γεμάτη (δηλαδή δεν υπάρχει άλλη ελεύθερη θέση στον πίνακα). Δηλαδή, ελέγχει μήπως συμβεί υπερχείλιση (overflow). Αντίστοιχα, κατά την αφαίρεση ενός στοιχείου (απώθηση), πρέπει να γίνεται έλεγχος μήπως η στοίβα είναι άδεια. Δηλαδή, ελέγχει μήπως συμβεί υποχείλιση (underflow).
19. Pws ulopoieitai Ουρά (Queue) Η ουρά υλοποιεί τη λογική FIFO (First In First Out). Τα δεδομένα εισάγονται στο πίσω μέρος της ουράς ενώ η εξαγωγή ενός στοιχείου γίνεται πάντα από το μπροστινό μέρος της ουράς. Η στατική ουρά υλοποιείται με μονοδιάστατο πίνακα και χρησιμοποιεί δύο δείκτες : Τον Front που δείχνει στο μπροστινό μέρος της ουράς και τον Rear που δείχνει στο πίσω μέρος της ουράς
Ουρά (Queue) Οι λειτουργίες είναι δύο : Η εισαγωγή ενός στοιχείου στο πίσω μέρος της ουράς. Η εξαγωγή ενός στοιχείου από το μπροστινό μέρος της ουράς..
20.Πλεονεκτήματα / Μειονεκτήματα των πινάκων Πλεονεκτήματα : Είναι ένας βολικός κι εύκολος τρόπος διαχείρισης δεδομένων του ιδίου τύπου Μειονεκτήματα : Απαιτούν μνήμη. Ο πίνακας δεσμεύει από την αρχή του προγράμματος αρκετές θέσεις μνήμης. Έτσι, αν χρησιμοποιούμε πολλούς πίνακες σε ένα πρόγραμμα το επιβαρύνουμε όσον αφορά τη μνήμη. Περιορίζουμε τις δυνατότητες του προγράμματος. Επειδή ο πίνακας είναι στατική δομή, δεν μπορεί να αλλάξει το μέγεθός του κατά την εκτέλεση του προγράμματος.
21.Δομές δεδομένων δευτερεύουσας μνήμης kai paradeigmata Επειδή η RAM δεν επαρκεί για την αποθήκευση των δεδομένων καθώς και το ότι δεν αποθηκεύει μόνιμα, χρησιμοποιούμε τους μαγνητικούς δίσκους (ταινίες, σκληροί δίσκοι κ.α.) και οπτικούς δίσκους (CD-ROM, DVD-ROM κ.α.). Αυτά αποτελούν την περιφερειακή ή δευτερεύουσα μνήμη. Για την αποθήκευση δεδομένων σε αυτή κάνουμε χρήση ειδικών δομών που λέγονται αρχεία (files).
Δομές δεδομένων δευτερεύουσας μνήμης Κάθε αρχείο περιέχει μία συλλογή εγγραφών (π.χ. ένα αρχείο με εγγραφές μαθητών). Μία εγγραφή (Record) αποτελεί τη συλλογή στοιχειωδών πληροφοριών σχετικά με ένα αντικείμενο (π.χ. μαθητής, ένα βιβλίο κλπ). Μία στοιχειώδης πληροφορία συνιστά ένα πεδίο (field). Π.χ. μία εγγραφή μαθητή περιέχει στοιχειώδεις πληροφορίες (πεδία) όπως : Επώνυμο, Όνομα, Πατρώνυμο, Έτος γέννησης, Τάξη κλπ.
Δομές δεδομένων δευτερεύουσας μνήμης
Σπουδαιότητα των δεδομένων στην Πληροφορική 22.Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές : Υλικού : Μελετάμε τον τρόπο αναπαράστασης και αποθήκευσης των δεδομένων στο εσωτερικό του Η/Υ (RAM, δίσκοι). Έχουν αναπτυχθεί διάφορα συστήματα κωδικοποίησης μεταξύ των οποίων το ASCII (κάθε χαρακτήρας παριστάνεται με 8 bit). Γλωσσών προγραμματισμού: Οι διάφορες γλώσσες προγραμματισμού μας επιτρέπουν να χρησιμοποιήσουμε τύπους μεταβλητών για να περιγράψουμε ένα δεδομένο (ακέραιος, πραγματικός, αλφαριθμητικό κλπ). Επιπλέον, φροντίζουν για την αποδοτικότερη μορφή αποθήκευσης κάθε μεταβλητής (π.χ. άλλες γλώσσες για τον ακέραιο τύπο δεσμεύουν 16 bit , άλλες 32 bit κλπ).
Σπουδαιότητα των δεδομένων στην Πληροφορική Δομών δεδομένων : Για αποθήκευση πιο σύνθετων δεδομένων (π.χ. τα στοιχεία ενός μαθητή ως ενιαίο σύνολο - εγγραφή) μελετάμε τρόπους αποδοτικής οργάνωσης και χειρισμού τους στο εσωτερικό του υπολογιστή. Ανάλυσης Δεδομένων : Μελετάμε τρόπους αλληλοσυσχέτισης των δεδομένων ώστε να παράγουμε χρήσιμες πληροφορίες που υποβοηθούν στη λήψη αποφάσεων ή παραγωγή νέας γνώσης. Π.χ. μία εταιρεία θέλει να μάθει ποιά είναι τα δέκα πρώτα προϊόντα με τις υψηλότερες πωλήσεις (top ten). Τεχνολογίες Βάσεων Δεδομένων, Μοντελοποίησης δεδομένων, Βάσεων Γνώσης αναπτύσσονται και χρησιμοποιούνται για το σκοπό αυτό.
Παράδειγμα 1 Έχουμε ένα πίνακα Α=[10,11,13,15,18] και ένα πίνακα Β=[2,24,25,2,1]. Να δημιουργήσετε με την χρήση ψευδοκώδικα τον πίνακα Γ, για τον οποίο ισχύει Γ[i]=Β[i]+Α[i]. Αν το άθροισμα των στοιχείων του πίνακα Γ είναι μεγαλύτερο από 100 να εμφανίζεται ένα μήνυμα «ΕRROR». Να εμφανιστεί η θέση/εις στην οποία βρίσκεται ο αριθμός 2 στον πίνακα Β
Παράδειγμα 2 Έχουμε τον πίνακα Α=[12,23,32,2,22,34,55,33,12,22] Να εμφανίσετε με χρήση ψευδοκώδικα το μέσο όρο των στοιχείων και αν αυτός είναι μεγαλύτερος από τον αριθμό 20 να εμφανίζεται μήνυμα. Να δημιουργήσετε ένα πίνακα Γ που τα στοιχεία του θα συσχετίζονται με τον πίνακα Α ως εξής: Γ[i]=(Α[i]+A[i]^2)/2+MO(A).
Παράδειγμα 3 -Πίνακας ASCII A6 A5 A4 A3 A2 A1 A0 Ο κώδικας διαβάζεται ως A6 A5 A4 A3 A2 A1 A0 Π.χ. το ‘Α’ = 1000001 και αποθηκεύεται ως 01000001
Παράδειγμα 3 -Πίνακας ASCII Θα δίνει ο χρήστης από το πληκτρολόγιο ένα χαρακτήρα. Θα ελέγχετε αν είναι ένας από τους χαρακτήρες Α-Ζ και a-z. Αν δεν είναι ένας από αυτούς θα βγαίνει μήνυμα για λάθος πληκτρολόγηση. Διαφορετικά θα δημιουργεί το Byte που αντιστοιχεί στον κώδικα ASCII και θα το αποθηκεύει σε έναν πίνακα A[1x8]. Τέλος θα βρίσκει το πλήθος των άσσων που υπάρχουν σε αυτό το byte