1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ"

Transcript

1 1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ Σκοπός-αντικείμενο των σημειώσεων αποτελεί η παρουσίαση βασικών αφηρημένων τύπων δεδομένων (ΑΤΔ) τόσο σε επίπεδο υλοποιήσεων και εφαρμογών αυτών σε προγραμματιστικό πλαίσιο όσο και και σε επίπεδο οργάνωσης τους σε εννοιολογικό πλαίσιο. Οι βασικοί αφηρημένοι τύποι δεδομένων (ΑΤΔ) που παρουσιάζονται και αναλύονται είναι οι εξής: Στοίβα, Ουρά, Γράφημα, Λίστα, Γράφημα. Η εργασία εστιάζει στην ανάπτυξη των παραπάνω ΑΤΔ με αυτή την σειρά και με αυξανόμενη πολυπλοκότητα στην δομή των τύπων. Σε αυτό το σημείο, να κάνουμε μία μικρή παρένθεση και να υπενθυμίσουμε την έννοια "Αφηρημένος Τύπος Δεδομένων (ΑΤΔ) ". Γενικά, ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο, που ορίζει έναν νέο τύπο δεδομένων, τον οποίο μπορεί να δημιουργήσει ένας προγραμματιστής. Η έννοια του ΑΤΔ είναι θεωρητική και έχει σαν σκοπό την περιγραφή αντικειμένων και των μεταξύ τους πράξεων. Η προσέγγιση του ΑΤΔ μας δίνει τη δυνατότητα της ανάπτυξης ενός προγράμματος, το οποίο είναι ανεξάρτητο από την υλοποίηση ενός ή περισσοτέρων ΑΤΔ. Η μέθοδος αυτή έχει σαν αποτέλεσμα την εύκολη αλλαγή της υλοποίησης στην περίπτωση που διαφοροποιηθούν οι απαιτήσεις του προγράμματός μας. Ένα επιπρόσθετο πλεονέκτημα που παρέχει η προσέγγιση του ΑΤΔ, είναι ότι η ανάπτυξη του προγράμματος γίνεται πιο εύκολη, αφού έχουμε αποξενωθεί από την υλοποίηση, ενω είναι δυνατόν να χρησιμοποιήσουμε απλούς ΑΤΔ, προκειμένου να περιγράψουμε άλλους πολυπλοκότερους. Οι ΑΤΔ Στοίβα, Ουρά, Λίστα είναι συλλογές πεπερασμένων στοιχείων σε γραμμική δομή ενώ ο ΑΤΔ Δένδρο είναι δενδρική δομή που περιγράφει την ιεραρχική σχέση των στοιχείων και ο ΑΤΔ Γράφημα δομή που δεν υπάρχουν περιορισμοί στις συνδέσεις μεταξύ των στοιχείων της συλλογής που περιγράφει. Σε κάθε κεφάλαιο που περιγράφεται ένας ΑΤΔ δίνεται ο ορισμός του και οι πιθανές χρήσεις του σε επιστημονικά πεδία και την καθημερινότητα, οι βασικές πράξεις που διενεργούνται από αυτόν περιγραφικά, οι περιορισμοί στα δεδομένα που διαχειρίζεται η κάθε δομή και τέλος ο κώδικας των διαφόρων υλοποίησεων, δοκιμών και εφαρμογών του στο πλαίσιο οργάνωσης και παρουσίασης που εξηγείται εκτενώς στο επόμενο κεφάλαιο. Κάθε ΑΤΔ έχει υλοποιηθεί και κατηγοροποιηθεί τόσο αφαιρετικά όσο και πρακτικά (δηλαδή σε πλαίσιο υλοποίησεων) με βάση είτε τον τρόπο απεκόνισης της δομής (με πίνακα, δείκτες) είτε τον τρόπο πρόσβασης στην δομή (μερική, ολική απόκρυψη-έννοιες που εξηγούνται πλήρως στο επόμενο κεφάλαιο) είτε ένα συνδυασμό των 2. Σε αυτό το σημείο καλό είναι να κάνουμε μια περιληπτική ανάλυση για κάθε ΑΤΔ ξεχώριστα. Ο ΑΤΔ Στοίβα έχει 2 επιμέρους υλοποίησεις οι οποίες ξεχωρίζουν με βάση τον τρόπο πρόσβασης του χρήστη στην δομή, με μερική απόκρυψη και με

2 ολική απόκρυψη ενώ στα πλαίσια της μερικής απόκρυψης έχουν υλοποιηθεί και 3 εφαρμογές. Αυτές οι εφαρμογές είναι οι εξής: α) εφαρμογή που μετατρέπει δεκαδικό αριθμό δοσμένο από την είσοδο σε δυαδικό, β) εφαρμογή που υπολογίζει την τιμή μιας μεταθεματικής παράστασης δοσμένης από την είσοδο, γ) εφαρμογή που μετατρέπει μια ενδοθεματική παράσταση δοσμένη από την είσοδο σε μεταθεματική. Ο ΑΤΔ Ουρά έχει 3 επιμέρους υλοποίησεις οι οποίες ξεχωρίζουν με βάση τον τρόπο απεικόνισης της δομής, με χρήση απλού πίνακα (με κενό), με χρήση λογικής μεταβλητής και με χρήση μετρητή. Να διευκρινιστεί εδώ πως οι 3 αυτές υλοποιήσεις έχουν παρόμοιο τρόπο απεικόνισης καθώς και οι 3 χρησιμοποιούν πίνακα απλά οι 2 τελευταίες σε σχέση με τον απλό πίνακα της πρώτης υλοποίησης η καθεμία έχει μια extra μεταβλητή (περαιτέρω ανάλυση των διαφορετικών υλοποίησεων υπάρχει στο αντίστοιχο κεφάλαιο του ΑΤΔ Ουρά). Η 3 η υλοποίηση όμως έχει κατηγοριοποιηθεί επιπλέον σε υλοποίηση με μερική απόκρυψη και με ολική απόκρυψη (ένα διαχωρισμό που συναντάμε αρκετά συχνά μέσα στους διάφορους ΑΤΔ για αυτό αναλύεται στο 2 ο κεφάλαιο αυτός ο διαχωρισμός), και κάθε μια από αυτές έχει μια εφαρμογή. Αυτή η εφαρμογή είναι η ίδια, απλά υλοποιημένη ανάλογα με τον τρόπο που πρέπει από κάθε μια από αυτές τις 2. Η εφαρμογή είναι η εξής: εφαρμογή που κάνει προσομοίωση μιας πραγματικής ουράς αναμονής πελατών με βάση κάποια στοιχεία που ζητούνται από τον χρήστη. Ο ΑΤΔ Λίστα έχει 3 επιμέρους υλοποίησεις οι οποίες ξεχωρίζουν αρχικά με βάση τον τρόπο απεικόνισης της δομής, με χρήση ακολουθιακού πίνακα (Ακολουθιακή λίστα), με χρήση δεικτών (Συνδεδεμένη λίστα), με χρήση πίνακα (Συνδεδεμένη λίστα). Οι υλοποίησεις με πίνακα διαχωρίζονται εκ νέου η καθεμία σε υλοποίηση με μερική και ολική απόκρυψη. Η βασική διαφορά των υλοποιήσεων με πίνακα είναι ότι στην ακολουθιακή η πρώτη θέση του πίνακα είναι ο πρώτος κόμβος, η δεύτερη ο δεύτερος κτλ, ενώ στην συνδεδεμένη με πίνακα δεν ισχύει αυτό (περισσότερα στο αντίστοιχο κεφάλαιο του ΑΤΔ Λίστα). Η υλοποίηση με χρήση δεικτών όμως δεν διαχωρίζεται σε μερική και ολική απόκρυψη, όλες οι επιμέρους υλοποιήσεις και εφαρμογές της είναι υλοποιημένες με ολική απόκρυψη. Οι υλοποιήσεις αυτές είναι οι εξής: μονή συνδεδεμένη λίστα, διπλά συνδεδεμένη λίστα, μονή συνδεδεμένη λίστα με ένδειξη τέλους, μονή συνδεδεμένη λίστα με κεφαλή, μονή κυκλικά συνδεδεμένη λίστα, μονή συνδεδεμένη ταξινομημένη λίστα. Οι εφαρμογές που υπαρχουν για τις υλοποιήσεις με χρήση δεικτών είναι κοινές, δηλαδή αφορούν όλες τις επιμέρους υλοποίησεις και παρότι οι εφαρμογές χρησιμοποιούν ενδεικτικά την υλοποίηση της απλής μονής συνδεδεμένης λίστας εννοείται ότι μπορεί να χρησιμοποιήσουν οποιαδήποτε από τις άλλες. Οι εφαρμογές είναι οι εξής: α) εφαρμογή που προσθέτει 2 πολυώνυμα και δημιουργεί ένα τρίτο, β) εφαρμογή που χρησιμοποιεί πράξεις λίστας για να υλοποιήσει τοις πράξεις στοίβας και γ) εφαρμογή που χρησιμοποιεί πράξεις λίστας για να υλοποιήσει πράξεις ουράς. Ο ΑΤΔ Δένδρο έχει ουσιαστικά πολλές επιμέρους υλοποιήσεις. Η αρχική έγκειται σε εννοιολογικό πλαίσιο και προφανώς πρακτικό, διαχωρισμός σε δυαδικό δένδρο αναζήτησης και ΑVL δέδρο (ορισμός για την κάθε κατηγορία

3 και διαφορές ουσιαστικά στο αντίστοιχο κεφάλαιο του ΑΤΔ Δένδρο). Το δυαδικό δένδρο αναζήτησης τώρα χωρίζεται σε 3 επιμέρους υλοποιήσεις με βάση τον τρόπο απεικόνισης της δομής, με χρήση ακολουθιακού πίνακα, με χρήση δεικτών, με πίνακα. Η καθεμία από αυτές διαχωρίζεται σε υλοποίηση με αναδρομή και υλοποίηση με επανάληψη, 2 διαχωριστικοί τρόποι που δεν διαφέρουν στον τρόπο απεικόνισης της δομής αλλά καθαρά στους τρόπους υλοποίησης των πράξεων του δυαδικού δένδρου αναζήτησης. Οι ουσιαστικές διαφορές ακολουθιακού πίνακα και απλού πίνακα είναι αντίστοιχες με αυτές των αντίστοιχων υλοποιήσεων λίστας με χρήση πίνακα ακολουθιακού και μη. Ο ΑΤΔ Γράφημα έχει 3 επιμέρους υλοποιήσεις, με χρήση πίνακα, με λίστα ακμών, με λίστα κορυφών. Πρόκειται για διαφορετικούς τρόπους απεικόνισης της δομής. Να διευκρινιστεί ότι πρόκειται για υλοποίησεις για μη συνδεδεμένο γράφημα χωρίς βάρη. H υλοποίηση με πίνακα περιλαμβάνει και μια εφαρμογή που πρέπει να διευκρινιστεί εδώ όμως ότι αφορά υλοποίηση συνδεδεμένου πίνακα με βάρη. Η εφαρμογή αυτή είναι ο αλγόριθμος του Dijkstra που εφαρμόζεται για κάθε κορυφή ενός γραφήματος και βρίσκει ουσιαστικά το ελάχιστο μονοπάτι αυτής της κορυφής προς τις υπόλοιπες. Η υλοποίηση με λίστα ακμών ουσιαστικά είναι υλοποίηση με χρήση δεικτών που αναπαριστά τις ακμές των κορυφών με λίστα κόμβων που συνδέονται με τους κόμβουςάκρα τους (περισσότερα στο αντίστοιχο κεφάλαιο του ΑΤΔ Γράφημα). Περιλαμβάνει μια εφαρμογή, την υλοποίηση spanning tree πάνω σε μη κατευθυνόμενο γράφημα χωρίς βάρη. Τέλος υπάρχει η υλοποίηση με λίστα κορυφών που είναι μεικτό είδος υλοποίησης, δηλαδή χρησιμοποιεί πίνακα και δείκτες. Αυτή η υλοποίηση αναπαριστά τους γειτονικούς κόμβους κάθε κορυφής με λίστα γειτονικών κορυφών (περισσότερα στο κεφάλαιο του ΑΤΔ Γράφημα). Αυτοί λοιπόν ήταν συνοπτικά οι ΑΤΔ όπως θα παρουσιαστούν σε αυτή την εργασία. Περισσότερα προφανώς και αναλυτικότερα υπάρχουν για τον καθένα στο αντίστοιχο κεφάλαιο του (μαζί με κώδικα εκτός από τις επεξηγήσεις). Στο επόμενο κεφάλαιο ακολουθεί ανάλυση και επεξήγηση του τρόπου οργάνωσης και παρουσίασης των ΑΤΔ σε άμεση συνάρτηση με την οργάνωση και αρχειοθέτηση του κώδικα τους. Επίσης θα εξηγηθούν οι έννοιες μερικής και ολικής απόκρυψης και οι βασικές διαφορές τους.

4 2. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ 2.1 ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ Σε αυτή την πρώτη ενότητα του 2 ου κεφαλαίου θα αναλυθεί το πρότυπο οργάνωσης των αφηρημένων τύπων δεδομένων (ΑΤΔ) που παρουσιάζονται στην εργασία. Πριν την ανάλυση όμως της οργάνωσης πρέπει να ειπωθεί ότι σε πλαίσιο κώδικα οι υλοποίησεις έχουν υλοποιηθεί και ελεγχθεί με χρήση του προγράμματος dev-c++. Να διευκρινιστεί ακόμη πως καθώς δοκιμάζονταν αυτές οι υλοποιήσεις και εφαρμογές, υπήρξε εξ αρχής ένας από τους βασικούς σκοπούς να γίνει μια κατάλληλη οργάνωση αρχείων ώστε να ακολουθηθεί και ένα μοντέλο κατάλληλο σε αφαιρετικό επίπεδο για κάθε ΑΤΔ με βάση ας το πούμε την έννοια του modularity. Πριν αναλυθεί το γενικό μοντέλο οργάνωσης των ΑΤΔ καλό είναι να διευκρινιστεί και πως όλος ο κώδικας που πρόκειται να δοθεί στα ανάλογα κεφάλαια έχει εκτός από το dev-c++ ελεγχθεί και σε linux περιβάλλον (terminal) για ελέγχους απώλειας μνήμης σε περιπτώσεις κυρίως δυναμικής δέσμευσης όπου χρειάστηκε στον εκάστοτε κώδικα (αυτό επετεύχθη με χρήση της εντολής valgrind). Ξεκινώντας λοιπόν με την οργάνωση προφανώς το μοντέλο οργάνωσης σε επίπεδο αρχείων-κώδικα είναι ταυτόσημο με τις ενότητες παρουσίασης κάθε ΑΤΔ. Πιο συγκεκριμένα κάθε ΑΤΔ έχει οργανωθεί σε πρώτο στάδιο με το εξής σκεπτικό: α) επιμέρους υλοποίησεις, β) αρχεία υλοποίησης-διεπαφής τύπου στοιχείου. Για παράδειγμα για τον ΑΤΔ Στοίβα υπάρχει ο εξής διαχωρισμός (όπως θα φανεί εκτενέστερα και στο επόμενο κεφάλαιο που τον αφορά): α) επιμέρους υλοποιήσεις: Μερική απόκρυψη, Ολική απόκρυψη, β) αρχεία υλοποίησηςδιεπαφής τύπου στοιχείου. Με βάση το γενικό μοντέλο οργάνωσης κάποια από τις επιμέρους υλοποιήσεις αναλύεται και σε άλλες επιμέρους και αυτές οι άλλες και σε άλλες επιμέρους κτλ. Για παράδειγμα ο ΑΤΔ Δένδρο αναλύεται αρχικά σε 2 επιμέρους υλοποιήσεις : α) δυαδικό δένδρο αναζήτησης και β) AVL δένδρο, αλλά το δυαδικό δένδρο αναζήτησης αναλύεται σε 3 νέες υπο-επιμέρους υλοποιήσεις: α) με ακολουθιακό πίνακα, β) με δείκτες, γ) με απλό πίνακα, καθεμία εκ των οποίων σε 2 άλλες υπο-επιμέρους υλοποιήσεις, α) με αναδρομή, β) με επανάληψη. Όταν δεν υπάρχει άλλη πλέον διάσπαση τότε η υλοποίηση ή επί μέρους υλοποίηση αναλύεται ως εξής: α) Αρχεία Υλοποίηση-Διεπαφής, β) Αρχεία Υλοποίησης, γ) Εφαρμογές.

5 Ο φάκελος-κατηγορία Εφαρμογές όμως δεν υπάρχει για κάθε υλοποίηση καθώς δεν έχουν υλοποιηθεί για κάθε επί μέρους υλοποίηση ενός ΑΤΔ εφαρμογές είτε επειδή δεν θεωρήθηκε απαραίτητο είτε επειδή κάποιες που πιθανότατα υπάρχουν σε άλλη κατηγορία να εννοείται οτί μπορούν να υλοποιηθούν για αυτή την κατηγορία αλλά δεν επαναλαμβάνονται. Για παράδειγμα οι εφαρμογές της επιμέρους υλοποίησης μερική απόκρυψη στον ΑΤΔ Στοίβα προφανώς μπορούν να υλοποιηθούν και για την ολική απόκρυψη. Στα αρχεία Υλοποίησης-Διεπαφής περιλαμβάνονται τα πρότυπα αρχεία. Ως πρότυπο αρχείο, μια ορολογία που χρησιμοποιείται στα πλαίσια μόνο της αυτής εργασίας, ορίζεται ένα αρχείο που μεν περιλαμβάνει τις υλοποιήσεις συναρτήσεων-πράξεων μιας δομής (αρχείο Υλοποίησης) ή τις δηλώσεις τους (αρχείο Διεπαφής) αλλά δεν μπορεί να χρησιμοποιηθεί έτσι όπως είναι σε εφαρμογή καθώς δεν έχει δοθεί υπαρκτό μονοπάτι του αρχείου Διεπαφής του τύπου στοιχείου που χρησιμοποιεί η εκάστοτε εφαρμογή. Έτσι στα πρότυπα αρχεία και συγκεκριμένα στο αρχείο Διεπαφής κυρίως εντοπίζεται το include του τύπου στοιχείου το οποίο δεν περιλαμβάνει συγκεκριμένο μονοπάτι που να προσδιορίζει το αρχείο του τύπου στοιχείου αλλά περιγράφει τον ρόλο του συγκεκριμένου include.η όλη αυτή γενίκευση αποσκοπεί στην έννοια της αφαιρετικότητας, για να μπορεί ανα πάσα στιγμή αν θέλει ο χρήστης μιας εφαρμογής να εκτελέσει την εφαρμογή του με τα αρχεία Υλοποίησης-Διεπαφής μιας άλλης επί μέρους υλοποίησης τοποθετώντας το αντίστοιχο μονοπάτι αρχείου Διεπαφής του τύπου στοιχείου που χρησιμοποιεί η συγκεκριμένη εφαρμογή. Για παράδειγμα στον ΑΤΔ Δένδρο στην επί μέρους υλοποίηση του δέντρου με δείκτες υπάρχουν πολλές επί μέρους διαφορετικές υλοποιήσεις για τις οποίες υπάρχουν 3 εφαρμογές που μπορούν να θεωρηθούν κοινές, παρ ότι και στις 3 χρησιμοποιείται η υλοποίηση της απλής μονής λίστας με δείκτες. Όμως μπορούν αυτές οι εφαρμογές να δοκιμασθούν με οποιαδήποτε από αυτές τις επί μέρους υλοποιήσεις. Στα αρχεία Δοκιμής τώρα περιλαμβάνονται πάντα το αρχείο δοκιμής-main που λειτουργεί ως test αρχείο (εμφανίζει στον χρήστη μενού με επιλογή να διαλέξει πράξεις πάνω στην ανάλογη δομή), τα αρχεία Διεπαφής-Υλοποίησης της δομής, μόνο που δεν είναι τα πρότυπα, δηλαδή υποδεικνύουν συγκεκριμένο μονοπάτι-path για τα αρχεία Διεπαφής-Υλοποίησης του τύπου στοιχείου του εκάστοτε ΑΤΔ. Εκτός αυτών εννοείται οτί σε αυτόν τον φάκελο, άμα το δούμε καθαρά οργανωτικά για τους φακέλους των αρχείων, υπάρχει και το project της δοκιμής (δημιουργημένο και εκτελεσμένο στο dev-c++) ενώ τα αρχεία τύπου στοιχείου δεν βρίσκονται σε αυτό τον φάκελο αλλά έξω από τις υλοποιήσεις όπως προτοείπαμε στο αρχικό επίπεδο εκτός του φακέλουενότητας των υλοποίησεων, δηλαδή το path στο αρχείο Διεπαφής της δομής είναι πάντα σύνθετο. Πέραν όμως αυτών στα αρχεία δοκιμής μπορεί να υπάρχουν και αρχεία Διεπαφής-Υλοποιήσης από άλλη υλοποίηση που να εξυπηρετούν την συγκεκριμένη Δοκιμή. Για παράδειγμα στις υλοποιήσεις στον ΑΤΔ Δένδρο που χρησιμοποιούν αναδρομή στα αρχεία τους περιλαμβάνονται και τα αρχεία Διεπαφής-

6 Υλοποίησης της Στοίβας με ολική απόκρυψη γιατί οι Δοκιμές αυτές χρησιμοποιούν Στοίβα. Τέλος όσον αφ ορά το πεδίο οργάνωσης των υλοποιήσεων υπάρχουν και τα αρχεία των Εφαρμογών. Για κάθε εφαρμογή μέσα στον φάκελο της υπάρχουν τα εξής αρχεία: βασικό αρχείο εφαρμογής (συνήθως ονοματίζεται ως main), αρχεία Διεπαφής-Υλοποίησης, το project της εφαρμογής αλλά και τα αρχεία τύπου στοιχείου της δομής καθώς σε πολλές από αυτές τις εφαρμογές οι βασικές πράξεις του τύπου στοιχείου επεκτείνονται και έτσι διαφοροποιούνται αυτά τα αρχεία από τα βασικά που βρίσκονται έξω από τα πλαίσια των υλοποιήσεων. Πέραν όμως αυτών όπως και στα αρχεία δοκιμής μπορεί να υπάρχουν και αρχεία Διεπαφής-Υλοποιήσης από άλλη υλοποίηση που να εξυπηρετούν την συγκεκριμένη Δοκιμή. Επιστρέφοντας τώρα στο αρχικό επίπεδο οργάνωσης πάλι και αφού έχουμε αναλύσει σε βάθος την οργάνωση των επιμέρους υλοποιήσεων σε έναν ΑΤΔ απομένει η ανάλυση των αρχείων υλοποίησης-διεπαφής του τύπου στοιχείου. Στον φάκελο αυτό υπάρχουν μέσα οι εξής φάκελοι: α) φάκελος αρχείων Υλοποίησης-Διεπαφής τύπου στοιχείου ορισμένου ως ακεραίου-int, β) φάκελος αρχείων Υλοποίησης-Διεπαφής τύπου στοιχείου ως πίνακα-string και γ) φάκελος αρχείων Υλοποίησης-Διεπαφής τύπου στοιχείου ως struct που περιέχει έναν ακέραιο και μια συμβολοσειρά. Έξω από τους υποφακέλους αυτούς και χωρίς να εντάσσονται σε κάποιο φάκελο υπάρχουν τα αρχεία Υλοποίησης-Διεπαφής του τύπου στοιχείου ορισμένου ως ακεραίου ως «default» αρχεία που χρησιμοποιούν όλες οι δοκιμές του εκάστοτε ΑΤΔ. Αυτή η επιλογή έχει γίνει έτσι ώστε αν ο χρήστης θέλει να χρησιμοποιήσει κάποια άλλη υλοποίηση του τύπου στοιχείου από τις προτεινόμενες να αντιγράψει τα αρχεία που θέλει σε αυτή την θέση ώστε να καλύπτονται όλες οι υλοποιήσεις έτσι με την νέα υλοποίηση και να διατηρείται η αποσύνδεση που είναι επιθυμητή μεταξύ των τύπων στοιχείων με τις υλοποιήσεις των δομών. Βεβαίως να διευκρινιστεί σε αυτό το σημείο ότι μπορεί κάποια από αυτές τις προτεινόμενες υλοποιήσεις τύπου στοιχείου να μην καλύπτει μια συγκεκριμένη εφαρμογή ή να απαιτεί παραπάνω βασικές πράξεις όπως γίνεται για παράδειγμα στην εφαρμογή της υλοποίησης στοίβας με Μερική Απόκρυψη για τον υπολογισμό της τιμής μιας μεταθεματικής παράστασης αλλά και στην εφαρμογή της ίδιας υλοποίησης για μετασχηματισμό μιας μεταθεματικής παράστασης σε ενδοθεματική. Ενώ στις 3 υλοποιήσεις που θέλουμε να μελετήσουμε σε αυτή την ενότητα υπάρχουν 3 σταθερά υλοποιημένες πράξεις (TSstoiva_setValue, TSstoiva_writeValue, TSstoiva_readValue) για τον τύπο στοιχείου στοίβας σε αυτές τις εφαρμογές, οι υλοποίησεις του τύπου στοιχείου για αυτές τις εφαρμογές περιλαμβάνει μια extra συνάρτηση (την TSstoiva_Iso). Aκόμη ο τύπος στοιχείου έχει οριστεί ειδικά σε αυτές καθώς δεν ακολουθούν καμία από τις υπάρχουσες επιλογές που αναλύονται σε αυτή την ενότητα. Συγκεκριμένα στην εφαρμογή για τον

7 υπολογισμό της τιμής μιας μεταθεματικής παράστασης το στοιχείο στοίβας ορίζεται (typedef ) ως float αλλά και στην εφαρμογή της ίδιας υλοποίησης για μετασχηματισμό μιας μεταθεματικής παράστασης σε ενδοθεματική ως char. Γενικά θα δούμε αυτές τις μικροδιαφοροποιήσεις ως προς τις πράξεις και τον ορισμό του τύπου στοιχείου και σε εφαρμογές άλλων δομών. Tονίζεται όπως και στην αρχή αυτής της ενότητας πως η οργάνωση που έγινε τηρείται στην εργασία αυτή τόσο σε επίπεδο οργάνωσης αρχείων όσο και στην σειρά και δομή παρουσίασης των ΑΤΔ. 2.2 ΜΕΡΙΚΗ ΚΑΙ ΟΛΙΚΗ ΑΠΟΚΡΥΨΗ Σε αυτή την ενότητα αναλύονται και θίγονται οι έννοιες μερική και ολική απόκρυψη. Πρόκειται για έννοιες που πιθανότατα δεν είναι ευρέως γνωστές στο επιστημονικό πεδίο των δομών δεδομένων καθώς είναι άτυπα ορισμένες στα πλαίσια της εκπαιδευτικής διαδικασίας που αφορά το προπτυχιακό μάθημα Δομές Δεδομένων. Όμως καθώς έχει γίνει αντιληπτό και από τον τίτλο της η συγκεκριμένη εργασία αποσκοπεί στην διευκόλυνση της εκπαιδευτικής διαδικασίας σε προπτυχιακό επίπεδο σχετικά με το πεδίο των δομών δεδομένων και έτσι οι έννοιες αυτές είναι αναγκαίο να αποσαφηνιστούν καθώς εμφανίζονται συνεχώς στα πλαίσια της εργασίας. Ξεκινώντας λοιπόν με την αποσαφήνιση, να τονιστεί πως Μερική και Ολική απόκρυψη αφορούν τον τρόπο πρόσβασης ενός χρήστη σε μια δομή και τις πληροφορίες αυτής, δηλαδή σε τι βαθμό μπορεί να «πειράξει» τα δεδομένα μιας δομής και με ποιο τρόπο δύναται να την προσπελάσει ο χρήστης. Ο τρόπος πρόσβασης καθορίζεται από το πόσο ορατή είναι η δομή στο αρχείο διεπαφής της υλοποίησης της. Με βάση τα παραπάνω, οι υλοποίηση μιας δομής θεωρείται ότι έχει υλοποιηθεί με Μερική απόκρυψη όταν επιτρέπει στον χρήστη να κάνει απευθείας αλλαγές στα δεδομένα μιας δομής. Αυτό οφείλεται στο ότι η δομή αυτούσια με ότι περιλαμβάνει (πίνακες, ακεραίους κτλ) ορίζεται στο αρχείο Διεπαφής. Από την άλλη πλευρά σε υλοποίηση με Ολική απόκρυψη η δήλωση της δομής γίνεται στο αρχείο Υλοποίησης του ΑΤΔ και αυτό απαγορεύει στον χρήστη να έχει απευθείας πρόσβαση στα δεδομένα της δομής. Για να μπορεί ο χρήστης συνεπώς να διαχειρίζεται την δομή, υπάρχει ένας δείκτης στην δομή που λειτουργεί ως handler της δομής και του επιτρέπει να αναφέρεται σε αυτή και να την διαχειρίζεται μέσω των συναρτήσεων πράξεων, στο αρχείο Διεπαφής. Για να μπορεί ο χρήστης συνεπώς να διαχειρίζεται έστω την δομή του ΑΤΔ στοίβα υπάρχει στο αρχείο Διεπαφής. h η εξής δήλωση: Με βάση τα παραπάνω δεδομένα και με την λογική πλέον ότι ο χρήστης αναγκάζεται στο πρόγραμμα να δηλώσει ένα δείκτη προσπέλασης της δομής και όχι την ίδια την δομή, είναι αναγκαίες και έχουν υλοποιηθεί προφανώς 2 συναρτήσεις, η συνάρτηση δημιουργίας και η συνάρτηση καταστροφής του ΑΤΔ. Αυτές χρησιμεύουν για την δέσμευση μνήμης με την χρήση malloc () και για την αποδέσμευση μνήμης με την χρήση free () όπου χρειάζεται για την δομή.

8 Λόγω διαφοράς στην πρόσβαση με Ολική απόκρυψη και εξ αιτίας του δείκτη αλλάζει και η παραμετροποίηση των συναρτήσεων όπως αυτές δηλώνονται στο αρχείο Διεπαφής (εννοείται πως διαφοροποιείται η Υλοποίηση). Για παράδειγμα ακολουθούν στην σειρά οι δηλώσεις του ΑΤΔ Στοίβα για Μερική και μετά για Ολική απόκρυψη. Δηλώσεις για Στοίβα με Μερική Απόκρυψη: void Stoiva_dimiourgia (TStoivas *stoiva) ; int Stoiva_keni (TStoivas stoiva) ; void Stoiva_exagogi (TStoivas *stoiva, TStoixeioyStoivas *stoixeio, int *ypoxeilisi) ; void Stoiva_othisi (TStoivas *stoiva, TStoixeioyStoivas stoixeio, int *yperxeilisi) ; Δηλώσεις για Στοίβα με Ολική Απόκρυψη: HandleStoivas Stoiva_Constructor () ; void Stoiva_Destructor (HandleStoivas * StoivaPtrPtr) ; int Stoiva_keni (const HandleStoivas StoivaPtr) ; int Stoiva_gemati (const HandleStoivas StoivaPtr) ; void Stoiva_exagogi (const HandleStoivas StoivaPtr,TStoixeioyStoivas * const stoixeioptr, int *ypoxeilisi) ; void Stoiva_othisi (const HandleStoivas StoivaPtr, TStoixeioyStoivas stoixeio, int *yperxeilisi) ; Παρατηρούμε ότι στην Μερική απόκρυψη η στοίβα περνιέται ως παράμετρος αυτούσια είτε με αναφορά ενώ στην Ολική απόκρυψη είτε με τον ορισθέντα δείκτη είτε με δείκτη είτε με αναφορά σε αυτό το δείκτη. Αντίστοιχη λογική ακολουθείται σε όλους τους ΑΤΔ όπου χρειάζεται διαχωρισμός Μερικής- Ολικής Απόκρυψης. Στα επόμενα κεφάλαια, ένα κεφάλαιο για κάθε ΑΤΔ, ακολουθεί σε η ανάλυση κάθε ΑΤΔ που έχει υλοποιηθεί στα πλαίσια αυτής της εργασίας.

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012 Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012 Κύκλος (Ζωής) Λογισμικού (ΑΤΔ) Γενικά Ορισμός ΑΤΔ (Προδιαγραφές) Οργάνωση Δεδομένων Τι κάνει Υλοποίηση Σχεδιασμός (ανεξάρτητος

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή

Διαβάστε περισσότερα

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών ΛΙΣΤΕΣ Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα Υλοποίηση με δείκτες (pointers) Υλοποίηση με πίνακα Εφαρμογές και Χρήση Λιστών Λίστες (Lists) Δεδομένα

Διαβάστε περισσότερα

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

Διαβάστε περισσότερα

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

Διαβάστε περισσότερα

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας ΣΤΟΙΒΕΣ (stacks) Η στοίβα είναι µια συλλογή δεδοµένων µε γραµµική διάταξη στην οποία όλες οι εισαγωγές και οι διαγραφές γίνονται στο ένα άκρο που λέγεται κορυφή (top) της στοίβας Σχήµα: Λειτουργία Στοίβας

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση

Διαβάστε περισσότερα

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

Διαβάστε περισσότερα

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ

1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ 1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ 1.1 Οργάνωση Αφηρημένων τύπων δεδομένων Θα αναλυθεί το πρότυπο οργάνωσης των αφηρημένων τύπων δεδομένων (ΑΤΔ) που παρουσιάζονται

Διαβάστε περισσότερα

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

Διαβάστε περισσότερα

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Παρασκευή - 17/12/10 (08:30-11:30)

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ Έκτο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Δομές Δεδομένων και Αλγόριθμοι ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

Διαβάστε περισσότερα

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Ορίζει τον ΑΤΔ Στοίβα Σχεδιαστικές Επιλογές

Διαβάστε περισσότερα

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

Διαβάστε περισσότερα

Δομές δεδομένων (2) Αλγόριθμοι

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

Διαβάστε περισσότερα

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

ΕΠΛ232: Εργαστήριο 2

ΕΠΛ232: Εργαστήριο 2 ΕΠΛ232: Εργαστήριο 2 Παράδειγμα σε Στοίβες 1 Υπολογισμός Αριθμητικών Παραστάσεων - Πολωνικός Συμβολισμός A + (B * C) A + (BC * ) A(BC *) + ABC * + Ενδοθεματική μορφή Μεταθεματική μορφή Οι κανόνες που διέπουν

Διαβάστε περισσότερα

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Κ Ο Τ Ι Ν Η Ι Σ Α Β Ε Λ Λ Α Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Π Ε 8 6 Ν Ε Ι Ρ Ο Σ Α Ν Τ Ω ΝΙ Ο Σ Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Γραμμικές Δομές Δεδομένων

Γραμμικές Δομές Δεδομένων Γραμμικές Δομές Δεδομένων Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή μόνο Στοίβα (stack)

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

Διαβάστε περισσότερα

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation.

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation. Γραμμικές Δομές Δεδομένων Επισκόπηση Μαθήματος Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή

Διαβάστε περισσότερα

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

Διαβάστε περισσότερα

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

Διαβάστε περισσότερα

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες

Διαβάστε περισσότερα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Διαχείριση Μνήμης,Δυναμικές Δομές Δεδομένων, Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Δυναμικές Δομές Δεδομένων Γενικά - Δυναμική Δέσμευση/Αποδέσμευση

Διαβάστε περισσότερα

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Οι σημειώσεις, αν και βασίζονται στο διδακτικό πακέτο, αποτελούν προσωπική θεώρηση της σχετικής ύλης και όχι επίσημο

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

Συναρτήσεις. Εισαγωγή

Συναρτήσεις. Εισαγωγή Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους Αναπτύξτε μια βιβλιοθήκη για την δημιουργία / διαχείριση γράφων και την υποστήριξη βασικών λειτουργιών αναζήτησης σε αυτούς. Η βιβλιοθήκη πρέπει να υποστηρίζει

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Quiz-[9] Συν (+) και Πλην (-) Έστω n συνεχόμενοι θετικοί ακέραιοι από το 1 μέχρι το n.

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο Γιώργος Δημητρίου Μάθημα 9 ο Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

Διαβάστε περισσότερα

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 10 ο Γράφοι Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Γράφοι Ορισµός Αφηρηµένος τύπος δεδοµένων Υλοποίηση Αναζήτηση έντρο

Διαβάστε περισσότερα

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1 Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

Περίγραμμα. Διαδικαστικά. Εργαστήρια Τεχνικών Προγραμματισμού 21/2/2017. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

Περίγραμμα. Διαδικαστικά. Εργαστήρια Τεχνικών Προγραμματισμού 21/2/2017. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού http://eclass.di.uoa.gr/d419/ Τμήμα Αρτίων ΑΜ Αίθουσα A2 Τετάρτη 11-13 και Πέμπτη 11-13 Περίγραμμα Διαδικαστικά (Εργασίες, Εξετάσεις, κλπ) Ένταξη στο Πρόγραμμα

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

Διαβάστε περισσότερα

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

Διαβάστε περισσότερα

Περιεχόμενα. 2 Αριθμητικά συστήματα

Περιεχόμενα. 2 Αριθμητικά συστήματα Περιεχόμενα Πρόλογος 1 Εισαγωγή 1.1 Το μοντέλο Turing 1.2 Το μοντέλο von Neumann 1.3 Συστατικά στοιχεία υπολογιστών 1.4 Ιστορικό 1.5 Κοινωνικά και ηθικά ζητήματα 1.6 Η επιστήμη των υπολογιστών ως επαγγελματικός

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού http://eclass.di.uoa.gr/d419/ Τμήμα Αρτίων ΑΜ Αίθουσα A2 Τετάρτη 11-13 και Πέμπτη 11-13 Γιάννης Κοτρώνης domes@di.uoa.gr Περίγραμμα Διαδικαστικά (Εργασίες,

Διαβάστε περισσότερα

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Αφηρηµένος τύπος δεδοµένων (abstract data type): είναι ένα θεωρητικό

Διαβάστε περισσότερα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

Διαβάστε περισσότερα

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) -Οι ΑΤΔ Στοίβα και Ουρά -Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική

Διαβάστε περισσότερα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

Διαβάστε περισσότερα

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Φίλη μαθήτρια, φίλε μαθητή,

Φίλη μαθήτρια, φίλε μαθητή, Φίλη μαθήτρια, φίλε μαθητή, Το παρόν τεύχος, εναρμονισμένο πλήρως με το νέο Πρόγραμμα Σπουδών 2015-2016, αποτελεί μια λογική και φυσική συνέχεια του πρώτου τεύχους. Δόθηκε ιδιαίτερη έμφαση στη μεθοδολογία

Διαβάστε περισσότερα

Ε Θ Ν Ι Κ Ο Μ Ε Τ Σ Ο Β Ι Ο Π Ο Λ Υ Τ Ε Χ Ν Ε Ι Ο ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Ε Θ Ν Ι Κ Ο Μ Ε Τ Σ Ο Β Ι Ο Π Ο Λ Υ Τ Ε Χ Ν Ε Ι Ο ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Ε Θ Ν Ι Κ Ο Μ Ε Τ Σ Ο Β Ι Ο Π Ο Λ Υ Τ Ε Χ Ν Ε Ι Ο ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Η κατάταξη πτυχιούχων ΑΕΙ & ΤΕΙ στη Σχολή ΗΜΜΥ, για το ακαδημαϊκό έτος 2010-11, θα γίνει με κατατακτήριες

Διαβάστε περισσότερα

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

Διαβάστε περισσότερα

Υπερφόρτωση τελεστών

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 2: Μαθηματικό Υπόβαθρο

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 2: Μαθηματικό Υπόβαθρο ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 2: Μαθηματικό Υπόβαθρο Τι θα κάνουμε σήμερα Συναρτήσεις & Σχέσεις (0.2.3) Γράφοι (Γραφήματα) (0.2.4) Λέξεις και Γλώσσες (0.2.5) Αποδείξεις (0.3) 1

Διαβάστε περισσότερα

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα Αναζήτηση κατά βάθος (Depth-first search DFS) Αναζήτηση κατά πλάτος (Breadth-first search BFS) 2 Γράφημα (graph) Αναπαράσταση συνόλου

Διαβάστε περισσότερα

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

Διαβάστε περισσότερα

Υπολογιστικό Πρόβληµα

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520 ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ Πέμπτο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Αντικειμενοστρεφής Προγραμματισμός ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

Διαβάστε περισσότερα

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 14: Δέντρα IV B Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2 3 Δένδρα, Εισαγωγή και άλλες πράξεις Άλλα Δέντρα: Β δένδρα, Β+ δέντρα, R δέντρα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231

Διαβάστε περισσότερα

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω εµπρός Ουρές (Queues) A B C FIFO εµπρός πίσω B C Διαγραφή εµπρός πίσω B C D E Εισαγωγή πίσω Ορισµός Η ουρά είναι µια γραµµική λίστα στην οποία η διαγραφή ενός στοιχείου γίνεται στο ένα άκρο το οποίο καλείται

Διαβάστε περισσότερα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

Διαβάστε περισσότερα