ΣΥΜΠΙΕΣΗ JAVA BYTECODE Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ. Υποβάλλεται στην

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

Download "ΣΥΜΠΙΕΣΗ JAVA BYTECODE Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ. Υποβάλλεται στην"

Transcript

1 ΣΥΜΠΙΕΣΗ JAVA BYTECODE Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙ ΙΚΕΥΣΗΣ Υποβάλλεται στην ορισθείσα από την Γενική Συνέλευση Ειδικής Σύνθεσης του Τµήµατος Πληροφορικής Εξεταστική Επιτροπή από τον ηµήτριο Σαούγκο ως µέρος των Υποχρεώσεων για τη λήψη του ΜΕΤΑΠΤΥΧΙΑΚΟΥ ΙΠΛΩΜΑΤΟΣ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΕ ΕΞΕΙ ΙΚΕΥΣΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ Οκτώβριος 2006

2 ii ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ Στόχοι οµή της ιατριβής 4 ΚΕΦΑΛΑΙΟ 2. ΥΠΟΒΑΘΡΟ ΚΑΙ ΣΧΕΤΙΚΗ ΟΥΛΕΙΑ Υπόβαθρο Σχετική ουλειά Γενική Περιγραφή της Μεθόδου 18 ΚΕΦΑΛΑΙΟ 3. Η ΕΥΡΕΣΗ ΤΩΝ PATTERNS Ο Agglomerative Clustering Αλγόριθµος Η Προεπεξεργασία Μεταεπεξεργασία Εύρεση των patterns χωρίς µπαλαντέρ Ένα Παράδειγµα που Συγκρίνει τις δύο Μεθόδους 40 ΚΕΦΑΛΑΙΟ 4. Η ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΑΠΟΚΩ ΙΚΟΠΟΙΗΣΗ ΤΟΥ BYTECODE Το Πρόβληµα της Εύρεσης του Βέλτιστου Συνδυασµού Η Πρώτη Ευρετική Μέθοδος Η εύτερη Ευρετική Μέθοδος Η Κωδικοποίηση του Bytecode Η Αποκωδικοποίηση του Bytcode 51 ΚΕΦΑΛΑΙΟ 5. ΠΕΙΡΑΜΑΤΙΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ Εισαγωγικά Σύγκριση των Ευρετικών Αξιολόγηση του Overhead 66 ΚΕΦΑΛΑΙΟ 6. ΣΥΜΠΕΡΑΣΜΑΤΑ 70 Σελ.

3 iii ΕΥΡΕΤΗΡΙΟ ΣΧΗΜΑΤΩΝ Σχήµα Σελ. Σχήµα 3.1. Η Αρχική οµή της Λίστας των Κόµβων Φύλλων. 27 Σχήµα 3.2. Πρώτη Συνένωση Κόµβων µε Ταυτόχρονη ιαγραφή των Κόµβων 28 Σχήµα 3.3. εύτερη Συνένωση Κόµβων (Ενώθηκαν ο 2 µε τον 6) 29 Σχήµα 3.4. Τρίτη Συνένωση Κόµβων (Ενώθηκαν ο (1, 5) µε τον 4) 29 Σχήµα 3.5. Τέταρτη Συνένωση Κόµβων (Ενώθηκαν ο (2, 6) µε τον 3) 30 Σχήµα 3.6. Συνένωση των Κόµβων 1 και 5. Ο Νέος Κόµβος τους Έχει ως Παιδιά 34 Σχήµα 3.7. Συνένωση των Κόµβων 2 και 6. Ο Νέος Κόµβος τους Έχει ως Παιδιά 34 Σχήµα 3.8. Συνένωση του (1, 5) µε το 4 35 Σχήµα 3.9. Συνένωση του (2, 6) µε το 3 35 Σχήµα Η Τελική Μορφή της οµής εδοµένων 36 Σχήµα Το ένδρο που Αντιστοιχεί στην ενδρική οµή που Έχουµε 36 Σχήµα Ο Πηγαίος Κώδικας της Κλάσης xyz που Κωδικοποιεί ένα ιάνυσµα 41 Σχήµα Ο Bytecode της Μεθόδου distance 41 Σχήµα Τα Patterns Χωρίς Μπαλαντέρ που Προκύπτουν από τον Bytecode 42 Σχήµα Το Pattern µε Μπαλαντέρ που Βρίσκουµε µε τον AC 43 Σχήµα 5.1. Τα Μεγέθη των Πακέτων του MIDP σε Bytes 54 Σχήµα 5.2. Τα Ποσοστά Συµπίεσης των ιαφόρων Συνόλων για το Πακέτο Java.io 55 Σχήµα 5.3. Τα Ποσοστά Συµπίεσης των ιαφόρων Συνόλων για το Πακέτο Java.lang 56 Σχήµα 5.4. Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.io 56 Σχήµα 5.5. Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.media 57 Σχήµα 5.6. Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.midlet 57 Σχήµα 5.7. Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.pki 58 Σχήµα 5.8. Οι Συνολικοί Χρόνοι σε ευτερόλεπτα της Πρώτης Ευρετικής 58 Σχήµα 5.9. Τα Ποσοστά Συµπίεσης της εύτερης Ευρετικής για το Πακέτο java.io 59 Σχήµα Τα Ποσοστά Συµπίεσης της εύτερης Ευρετικής για το Πακέτο java.lang 59 Σχήµα Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.io 60 Σχήµα Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.media 60 Σχήµα Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.midlet 61 Σχήµα Τα Ποσοστά Συµπίεσης για το Πακέτο javax.microedition.pki 61 Σχήµα Οι Συνολικοί Χρόνοι Εκτέλεσης της εύτερης Ευρετικής ανά Πακέτο 62 Σχήµα Η Μεταβολή στα Ποσοστά Συµπίεσης µε Μέγιστο Μήκος Pattern 11 64

4 Σχήµα Η Μεταβολή του Χρόνου Εκτέλεσης της Ευρετικής µε Μήκος Pattern Σχήµα Η Μεταβολή των Ποσοστών Συµπίεσης στην εύτερη Ευρετική 65 Σχήµα Η Μεταβολή του Χρόνου Εκτέλεσης της εύτερης Ευρετικής 65 Σχήµα Οι Συχνότητες Εµφάνισης που Χρησιµοποιήθηκαν στον Generator 67 Σχήµα Η Αύξηση του Overhead σε Σχέση µε το Επιθυµητό Ποσοστό Συµπίεσης 68 Σχήµα Οι Απόλυτοι Χρόνοι Αποσυµπίεσης ενός Pattern σε Σχέση µε το Μήκος 69 iv

5 v ΠΕΡΙΛΗΨΗ ηµήτριος Σαούγκος του Γεωργίου και της Ανθούλας. MSc, Τµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Ιούλιος, Η συµπίεση του Java Bytecode. Επιβλέποντας: Γεώργιος Μανής. Οι τεχνικές συµπίεσης του Bytecode της Java µε την χρήση των patterns στηρίζονται στην αναγνώριση όµοιων τµηµάτων κώδικα που εµφανίζονται παραπάνω από µία φορά. Κάθε εµφάνιση του συγκεκριµένου τµήµατος στον κώδικα αντικαθίσταται από µια συγκεκριµένη εντολή ενώ το τµήµα αυτό του κώδικα ορίζει ένα pattern που χρησιµοποιείται ως επέκταση του συνόλου των εντολών µε την νέα εντολή που το συµβολίζει. Εναλλακτικά η νέα αυτή εντολή µπορεί απλά να χρησιµοποιηθεί ως δείκτης σε µια θέση ενός λεξικού που περιέχει όλα τα patterns και το οποίο χρησιµοποιείται για την αποσυµπίεση του κώδικα. Στην εργασία αυτή χρησιµοποιούµε µια τεχνική για εύρεση patterns που µας επιτρέπει να εντοπίζουµε patterns µε οποιοδήποτε µήκος και µε οποιοδήποτε πλήθος από µπαλαντέρ στην θέση κάποιων εντολών ή ορισµάτων εντολών µέσα στο pattern. Αυτήν την τεχνική την εφαρµόζουµε πειραµατικά σε µια υλοποίηση του προτύπου MIDP της Java, το οποίο είναι ένα περιβάλλον για την ανάπτυξη εφαρµογών Java για φορητές συσκευές.

6 vi EXTENDED ABSTRACT IN ENGLISH Saougos Dimitrios. MSc, Computer Science Department, University of Ioannina, Greece. July The compression of the Java Bytecode. Thesis Supervisor: Georgios Manis. The Java language has become a dominant means for the realization of embedded and mobile computing environments. The main feature of Java that led to the previous is its portability. More specifically, the compilation of Java applications results in device independent code, generated in terms of a standard format, called Java bytecode. The Java bytecode can then execute on top of different device-specific Java Virtual Machines (JVMs), which take charge of translating the bytecode into devicespecific machine code. The memory limitations imposed by embedded and mobile devices certainly constrain the set of applications that may possibly execute on top of them. Confronting the aforementioned issue fosters research towards two orthogonal directions. The first one concerns the reduction of the physical size and cost of memory chips, while the second one involves reducing the size of the code of embedded applications. Advances in both of the previous research directions are equally valuable. No matter how much we increase the amount of available memory, there will always be more demanding applications. Similarly, even if we manage to diminish the size of embedded and mobile applications we may always require to concurrently execute as many of them as possible.

7 vii Lots of significant research efforts have already been done towards the generation of compressed code. However, most of these efforts involve the compression of either machine or assembly code. Amongst the few approaches that focus on the case of Java bytecode we have the ones who examine bytecode compression relying on Huffman codes and Markov chains Moreover there have been approaches based on the discovery of instruction sequences that occur more than once within the Java bytecode. Each sequence of instructions defines a pattern. Each pattern occurrence is substituted by a single instruction that is often called a macro. So far no attempt has been made to use a more generic form of pattern (which we call a parametric one). The main contribution of this thesis is to assess the use of parametric patterns in the context of compressing the bytecode. For that to be achieved we use a well known clustering method called agglomerative clustering algorithm which we alter to fit our needs. Our case study is the MIDP platform which is the main tool used to create software for embedded and portable devices. We measure compression ratios achieved as well as the time overhead introduced in the execution of the compressed programs. The results show that good percentages can be achieved by our method as long as certain settings are maintained while the total overhead may reach a percentage of 40% which is acceptable given the fact that our method can reduce the size of a bytecode by even more than 25% and that the compressed bytecode can be executed without the need of prior decompression.

8 1 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ 1.1. Εισαγωγή 1.2. Στόχοι 1.3. οµή της ιατριβής 1.1. Εισαγωγή Η γλώσσα προγραµµατισµού Java έχει γίνει το κυρίαρχο µέσο για την υλοποίηση των ενσωµατωµένων (embedded) και κινητών υπολογιστικών συστηµάτων. Το κύριο χαρακτηριστικό της Java που την οδήγησε σε αυτό είναι η µεταφερσιµότητά της. Πιο συγκεκριµένα, Η µεταγλώττιση µιας εφαρµογής Java οδηγεί στην δηµιουργία κώδικα που είναι ανεξάρτητος από οποιαδήποτε συσκευή ακολουθώντας ένα συγκεκριµένο πρότυπο. Ο κώδικας αυτός (που ονοµάζεται bytecode) στην συνέχεια µπορεί να εκτελεστεί από διάφορες αρχιτεκτονικές συστηµάτων µεταφράζοντας τον κώδικα αυτό σε κώδικα που µπορεί να εκτελεστεί από το εκάστοτε σύστηµα. Οι περιορισµοί µνήµης που επιβάλλονται από τις ενσωµατωµένες και κινητές συσκευές µειώνουν και το εύρος των εφαρµογών που µπορούν να εκτελεστούν από αυτά. Η αντιµετώπιση αυτού του προβλήµατος οδηγεί σε δύο διαφορετικές ερευνητικές κατευθύνσεις. Η πρώτη ασχολείται µε την µείωση του µεγέθους και του κόστους των τσιπ, ενώ η δεύτερη ερευνά την µείωση του µεγέθους του κώδικα των εφαρµογών που απευθύνονται σε κινητά συστήµατα. Η πρόοδος και στις δύο κατευθύνσεις είναι εξ ίσου σηµαντική. Αφ ενός όσο και να µεγαλώσουµε το ποσό της διαθέσιµης µνήµης σε ένα σύστηµα, πάντα θα εµφανίζονται πιο απαιτητικές

9 2 εφαρµογές, αφ εταίρου όσο και να µειώσουµε το µέγεθος µιας εφαρµογής, πάντα θα υπάρχει ανάγκη για την ταυτόχρονη εκτέλεση όλο και περισσότερων εφαρµογών. Πολλή έρευνα έχει ήδη γίνει στον τοµέα της συµπίεσης του κώδικα [1]. Οι πιο πολλές όµως προσπάθειες στοχεύουν στην συµπίεση είτε του κώδικα µηχανής είτε του συµβολικού κώδικα (assembly). Μεταξύ των λίγων προσεγγίσεων στον τοµέα της Java έχουµε αυτές που προτείνονται στα [2], [3] και [4]. Στο [2] οι συγγραφείς εξετάζουν διάφορες προσεγγίσεις στην συµπίεση του ενδιάµεσου κώδικα χρησιµοποιώντας κώδικες Huffman και αλυσίδες Markov. Στο [3] η συµπίεση βασίζεται στην χρήση κανονικών µορφών Huffman και στην παραγωγή γρήγορων αποσυµπιεστών. Στο [4], η προσέγγιση βασίζεται στην εύρεση ακολουθιών εντολών που εµφανίζονται παραπάνω της µιας φοράς µέσα στον κώδικα. Κάθε τέτοια ακολουθία εντολών ορίζει ένα pattern. Κάθε εµφάνιση ενός pattern µέσα στον κώδικα αντικαθίσταται από µία και µόνο εντολή που ονοµάζεται macro. Ένα pattern στην ευρύτερη έννοια που µπορεί να έχει, παρουσιάζει τα εξής χαρακτηριστικά: µπορεί να έχει οποιοδήποτε µήκος. Μπορεί να περιέχει µπαλαντέρ στην θέση οποιασδήποτε εντολής ή ορίσµατος εντολής. Στο εξής ο όρος παραµετρικά patterns θα αναφέρεται στα patterns που περιέχουν οποιοδήποτε πλήθος µπαλαντέρ. Αντίστοιχα θα χρησιµοποιείται ο όρος µη παραµετρικά για να αναφερθεί στα patterns που δεν περιέχουν µπαλαντέρ. Μέχρι στιγµής, οι υπάρχουσες προσεγγίσεις στην συµπίεση του bytecode δεν αξιοποιούν την πλήρως γενικευµένη µορφή ενός pattern. Το γεγονός αυτό τονίζεται στο [4] όπου οι συγγραφείς τονίζουν την ανάγκη για αξιοποίηση ποιο εξελιγµένων τεχνικών για την εύρεση γενικευµένων patterns.

10 Στόχοι Ο συνολικός στόχος της διατριβής είναι να µελετηθεί η χρήση µιας τέτοιας τεχνικής για την εύρεση παραµετρικών patterns µε οποιοδήποτε µήκος στα πλαίσια της συµπίεσης του bytecode της Java. Συγκεκριµένα, οι επιµέρους στόχοι µας είναι: Να µετατρέπουµε έναν γνωστό αλγόριθµο αναγνώρισης προτύπων που ονοµάζεται agglomerative clustering [5], [6], ώστε να µπορεί να χρησιµοποιηθεί για τον εντοπισµό παραµετρικών και µη-παραµετρικών patterns µέσα στον bytecode. Η τεχνική µπορεί να παράξει patterns µε διάφορα µήκη και µε διαφορετικό πλήθος από µπαλαντέρ. Να αξιολογούµε τα πλεονεκτήµατα και τους περιορισµούς της παραπάνω τεχνικής σε διάφορα σενάρια που στοχεύουν στην συµπίεση του MIDP, ενός πρότυπου περιβάλλοντος της Java που υποστηρίζει την ανάπτυξη εφαρµογών για κινητές συσκευές. Το κυριότερο πλεονέκτηµα της τεχνικής µε τα παραµετρικά patterns είναι ότι επιτρέπει την εύρεση µιας µεγάλης ποικιλίας από patterns που µπορούν να συνδυαστούν για να επιτευχθεί η µεγαλύτερη συµπίεση του κώδικα. Αυτό όµως είναι και ο µεγαλύτερος περιορισµός. Το να ερευνηθεί ποιος είναι ο καλύτερος συνδυασµός από patterns µέσα από ένα πολύ µεγάλο σύνολο patterns είναι µια περίπλοκη διαδικασία. Έχοντας αυτό υπ όψη: o Χρησιµοποιούµε και συγκρίνουµε δύο ευρετικές µεθόδους για την εύρεση ενός καλού συνδυασµού. Βασιζόµενοι στις δύο αυτές ευρετικές, ερευνούµε την επίπτωση που έχει η χρήση των παραµετρικών patterns στην συµπίεση του bytecode. Για τον σκοπό αυτό συµπιέζουµε το MIDP χρησιµοποιώντας patterns που έχουν µεταβλητό πλήθος µπαλαντέρ, patterns που δεν περιέχουν µπαλαντέρ και patterns που περιέχουν συγκεκριµένο πλήθος µπαλαντέρ και συγκρίνουµε τα αποτελέσµατα µεταξύ τους. o Επιπλέον µελετούµε τον αντίκτυπο που έχει η αύξηση του µήκους των patterns στην συµπίεση που επέρχεται.

11 4 o Τέλος µελετούµε τον επιπλέον χρόνο που απαιτεί η αποσυµπίεση του συµπιεσµένου κώδικα κατά την εκτέλεση του προγράµµατος οµή της ιατριβής Η διατριβή περιέχει 6 κεφάλαια: Το Κεφάλαιο 2 περιέχει το υπόβαθρο που χρειάζεται για την κατανόηση κάποιων όρων καθώς επίσης και την σχετική δουλειά που έχει γίνει στον τοµέα µαζί µε µια µικρή περιγραφή της µεθόδου που εµείς χρησιµοποιούµε. Στο κεφάλαιο 3 παρουσιάζονται δύο µέθοδοι για την εύρεση των patterns καθώς και ένα παράδειγµα που συγκρίνει τις δύο αυτές ιδέες. Στο κεφάλαιο 4 αναλύεται η κωδικοποίηση και αποκωδικοποίηση της µεθόδου µας. Στο κεφάλαιο 5 παρουσιάζονται τα πειραµατικά αποτελέσµατα που είχαµε ενώ στο κεφάλαιο 6 παρουσιάζεται µια µικρή συζήτηση και συµπεράσµατα επί της όλης µεθόδου.

12 5 ΚΕΦΑΛΑΙΟ 2. ΥΠΟΒΑΘΡΟ ΚΑΙ ΣΧΕΤΙΚΗ ΟΥΛΕΙΑ 2.1 Υπόβαθρο 2.2 Σχετική δουλειά 2.3 Γενική περιγραφή της µεθόδου 2.1. Υπόβαθρο Η γλώσσα Java δηµιουργήθηκε από την εταιρεία SUN ως µια γλώσσα που να µπορεί να εκτελεστεί σε οποιοδήποτε υπολογιστικό σύστηµα την υποστηρίζει χωρίς την ανάγκη µεταγλώττισης (recompiling). Κατά βάση είναι διερµηνευόµενη (interpreted) αλλά πρώτα ο αρχικός κώδικας πρέπει να περάσει από µια διαδικασία µεταγλώττισης. Το αποτέλεσµα που παράγεται από την µεταγλώττιση είναι ένας κώδικας µηχανής Java που ονοµάζεται bytecode και είναι native στα τσιπ Java. Αυτό σηµαίνει ότι αν υπάρχει κάποιο hardware που να µπορεί να εκτελεί την γλώσσα µηχανής Java θα µπορούσε απευθείας να εκτελέσει τον bytecode. Στους υπολογιστές λοιπόν που δεν έχουν κάποιο τέτοιο κύκλωµα, η όλη λειτουργία του συστήµατος εξοµοιώνεται από κάποια εφαρµογή που αναλαµβάνει να φορτώσει τα δεδοµένα του αρχείου που περιέχει τον bytecode και να τον εκτελέσει. Στην περίπτωση αυτή λοιπόν ο bytecode απλά εκτελείται µε διερµηνεία (interpretation) και η εφαρµογή που

13 6 εκτελεί το πρόγραµµα Java ονοµάζεται Εικονική Μηχανή Java (Java Virtual Machine, JVM σε συντοµογραφία). Ο bytecode βρίσκεται αποθηκευµένος σε ένα αρχείο τύπου class. Η µορφή του αρχείου αυτού είναι σαφώς ορισµένη από την SUN και περιέχει όλες τις πληροφορίες που περιέχονται σε µια κλάση του αρχικού κώδικα της Java. Σε αυτά τα αρχεία επίσης αποθηκεύονται πληροφορίες για τα exceptions, τα πεδία της κλάσης και οτιδήποτε άλλο χρειάζεται για να εκτελεστεί σωστά η κλάση. Ένα µεγάλο µέρος της πληροφορίας σε κάθε αρχείο class αποτελεί το constant pool. Αυτό στην ουσία είναι ένας πίνακας (array) που έχει όλες τις σταθερές που δηλώνονται σε µια κλάση. Ακολουθεί επιγραµµατικά όλη η δοµή του αρχείου καθώς και πληροφορίες επί αυτών (σηµειώνεται ότι οι συµβολισµοί u1, u2 και u4 αναφέρονται σε ακέραιους αριθµούς µήκους 1, 2 και 4 bytes αντίστοιχα που χρησιµοποιούν την στοίχιση τύπου big endian (δηλαδή το πιο σηµαντικό byte στην αρχή)): ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count;

14 7 } field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; Το πεδίο magic είναι ο λεγόµενος «µαγικός αριθµός» και ισούται µε την τιµή 0xCAFEBABE. Χρησιµοποιείται ως αναγνωριστικό του συγκεκριµένου τύπου αρχείου. Τα πεδία minor και major version δηλώνουν την έκδοση του συγκεκριµένου class file. Η τιµή του constant_pool_count ισούται µε το πλήθος των καταχωρήσεων στον πίνακα του constant pool αυξηµένη κατά 1. Το constant pool καθαυτό είναι ένας πίνακας από δοµές που αναπαριστούν αλφαριθµητικά, ονόµατα κλάσεων και interfaces ονόµατα πεδίων και λοιπών σταθερών στις οποίες αναφέρονται οι υπόλοιπες δοµές και υποδοµές του αρχείου class. Το πεδίο access flags δηλώνει τον τύπο της κλάσης (αν είναι private, public, final, abstract ή interface). Τα πεδία this_class και super_class είναι δείκτες στον πίνακα του constant pool και αναφέρονται στην παρούσα κλάση και στην κλάση από την οποία κληρονοµήθηκε η παρούσα αντίστοιχα. Το πεδίο interfaces_count περιέχει το πλήθος των interfaces που υπάρχουν στην κλάση ενώ ο πίνακας interfaces περιέχει τα interfaces. Το πεδίο fields_count περιέχει το πλήθος των πεδίων µε τον πίνακα fields να περιέχει τα πεδία καθαυτά. Το πεδίο methods_count περιέχει το πλήθος των µεθόδων µε τον πίνακα methods να περιέχει τις µεθόδους. Τέλος τα πεδία attributes_count και attributes περιέχουν το πλήθος των attributes και τα attributes αντίστοιχα. Εµείς θα σταθούµε κυρίως στο πεδίο methods. Κάθε µέθοδος αποτελείται από την εξής δοµή:

15 8 method_info { u2 access_flags; u2 name_index; u2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count]; } Το πεδίο access_flags ορίζει τις ιδιότητες της µεθόδου (δηλαδή αν είναι public, private, protected, static, final, synchronized, native και abstract). Το πεδίο name_index είναι ένας δείκτης στο constant pool που δείχνει το όνοµα της µεθόδου ή τα ειδικά ονόµατα <init> και <clinit>. Το πεδίο descriptor_index είναι ένας δείκτης στο constant pool που δείχνει στον descriptor της µεθόδου και είναι τύπου αλφαριθµητικού. Τέλος τα πεδία attributes_count και attributes περιέχουν το πλήθος των attributes και τα attributes καθαυτά. Μία µέθοδος µπορεί να περιέχει πολλά attributes (όπως για παράδειγµα πληροφορίες για τα exceptions), ένα εκ των οποίων είναι το attribute Code που περιέχει πληροφορίες για τον κώδικα της µεθόδου. Το Code attribute είναι ως εξής: Code_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_length]; u2 exception_table_length;

16 9 } { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; Τα δύο πρώτα πεδία είναι τα ίδια σε κάθε attribute που κωδικοποιείται στο class αρχείο. Το attribute_name_index δείχνει σε ένα αλφαριθµητικό στο constant pool όπου στην περίπτωση του Code attribute υπάρχει η λέξη Code. Το πεδίο attribute_length περιέχει την πληροφορία για το µήκος όλου του attribute (σε bytes). Από όλα τα υπόλοιπα πεδία, εµείς στεκόµαστε στο ζεύγος πεδίων code_length και code. Το µεν πρώτο περιέχει το µήκος του κώδικα της συγκεκριµένης µεθόδου ενώ το πεδίο code είναι ένας πίνακας µήκους code_length που περιέχει τον bytecode της συγκεκριµένης µεθόδου. Γνωρίζοντας όλες αυτές τις πληροφορίες µπορούµε εύκολα να δηµιουργήσουµε έναν disassembler για τα αρχεία class ο οποίος να εντοπίζει τον bytecode µέσα στο αρχείο και να τον εξάγει σε µια εύκολα χρησιµοποιήσιµη µορφή. Επειδή η Java ως γλώσσα µπορεί να µεταφέρεται µέσω του Internet και να εκτελείται µέσα από web browsers, το specification της γλώσσας είναι αρκετά αυστηρό και ορίζει όλες τις λεπτοµέρειες που απαιτούνται για την εκτέλεση ενός προγράµµατος σε όλους τους υπολογιστές που τρέχουν µια JVM (από την σειρά αποθήκευσης των bytes σε ένα καταχωρητή, µέχρι το πώς αποθηκεύεται ένας αριθµός κινητής υποδιαστολής).

17 10 Η Java ως µηχανή είναι µηχανή στοίβας. Αυτό σηµαίνει ότι όλες οι πράξεις γίνονται πάνω στην στοίβα (δηλαδή για να γίνει η πράξη a = b + c απαιτείται να φορτωθεί στην στοίβα το b, έπειτα το c, να αφαιρεθούν από την στοίβα και το αποτέλεσµα της πρόσθεσης να τοποθετηθεί στην κορυφή και τέλος από την κορυφή της στοίβας να αποθηκευτεί στο a. Κάθε εντολή του bytecode είναι της µορφής Opcode operand1 operand2. Όπου opcode ένας κωδικός αριθµός από το 0 έως το 255 (ένα byte) που αντιστοιχεί και σε κάποια εντολή από το set εντολών του κώδικα µηχανής Java. Έπειτα από κάθε εντολή ακολουθεί και µια σειρά από ορίσµατα (operands) για την εντολή αυτή µήκους 1 byte το κάθε ένα. Η εκτέλεση του κώδικα γίνεται στο main loop της JVM µε πολύ απλό τρόπο: Για κάθε opcode που διαβάζεται γίνεται fetch των ορισµάτων που χρειάζονται και η εντολή εκτελείται. Αυτό συνεχίζεται µέχρι το τέλος του προγράµµατος Σχετική ουλειά Γενικά έχει υπάρξει πολύ µεγάλη ερευνητική δραστηριότητα πάνω στον τοµέα της συµπίεσης κώδικα. Κατ αρχάς ο κώδικας µπορεί απλά να θεωρηθεί ως απλά δεδοµένα που δεν διαφέρουν σε τίποτα άλλο από µια απλή σειρά από δυαδικά αρχεία. Αυτό σηµαίνει ότι όλες οι παραδοσιακές τεχνικές συµπίεσης δεδοµένων (Huffman κ.τ.λ.) βρίσκουν εφαρµογή στον τοµέα αυτό. Αν όµως ξεφύγουµε από αυτό το γενικό πλάνο και δούµε ποιες ιδιαιτερότητες έχει ο κώδικας ενός προγράµµατος µπορούµε να δούµε συγκεκριµένες τεχνικές που βρίσκουν εφαρµογή πάνω στο συγκεκριµένο θέµα. Επί αυτού υπάρχουν δύο µεγάλες κατηγορίες. Στην µια εντάσσονται οι αλγόριθµοι και οι τεχνικές που στοχεύουν σε µέγιστη συµπίεση κώδικα (για γρήγορη µεταφορά του µέσω δικτύου) που αδιαφορούν για τον χρόνο της αποσυµπίεσης ενώ στην άλλη εντάσσονται κατηγορίες που προσπαθούν να κρατήσουν ένα καλό

18 11 ποσοστό συµπίεσης αλλά το συµπιεσµένο αποτέλεσµα να µπορεί να εκτελεστεί σε πραγµατικό χρόνο. Στο [7] αναφέρεται ότι η συµπίεση του κώδικα οδηγεί σε µικρότερα µήκη σελίδων µνήµης πράγµα το οποίο µπορεί να οδηγήσει σε αύξηση της απόδοσης ενός συστήµατος. Το παραπάνω ισχύει λόγω του ότι στα σηµερινά συστήµατα ένα µεγάλο χρονικό διάστηµα σπαταλάται (ο επεξεργαστής δεν παράγει ουσιαστικό έργο) λόγω του ότι αναµένονται οι σελίδες µνήµης είτε από τον δίσκο είτε από την µνήµη. Ένας άλλος παράγοντας στον οποίο συµβάλλει η συµπίεση του κώδικα είναι η µεταφορά ενός προγράµµατος µέσω δικτύου από τον έναν υπολογιστή στον άλλον. Ειδικά σε περιπτώσεις όπου το εύρος ζώνης (bandwidth) είναι περιορισµένο η αξία της συµπίεσης φαίνεται ακόµα πιο πολύ. Βάσει των παραπάνω δύο σεναρίων λοιπόν, οι τεχνικές συµπίεσης χωρίζονται σε δύο κατηγορίες ανάλογα µε το που υπάρχει το bottleneck: στην µετάδοση και στην µνήµη Στην µετάδοση είναι αναγκαίο να υπάρξει η µέγιστη συµπίεση για να είναι γρήγορη η µεταφορά ενώ έχουµε την πολυτέλεια να αποσυµπιέσουµε τον κώδικα πριν την εκτέλεση. Ο συµπιεσµένος κώδικας που παράγεται ονοµάζεται wire κώδικας (επειδή χρειάζεται αποσυµπίεση τοπική ή ολική- για να εκτελεστεί) Στην µνήµη ο κώδικας (ή τουλάχιστον ένα κοµµάτι του που εκτελείται συχνά) πρέπει να βρίσκεται αποθηκευµένος αλλά και να εκτελείται σε συµπιεσµένη µορφή. Επίσης επειδή θα κάνει άλµατα (jumps) σε τυχαία σηµεία χρειάζεται να έχουµε τυχαία προσπέλαση στα basic blocks Το JAZZ [8] είναι ένα σύστηµα αντίστοιχο του ήδη υπάρχοντος JAR. Το JAR είναι µια µέθοδος για το πακετάρισµα και την συµπίεση πολλών αρχείων class µαζί για ευκολότερη διανοµή µέσω του δικτύου. Η δοµή του είναι ουσιαστικά ένας µεγάλος

19 12 φάκελος µέσα στον οποίο περιέχονται τα επί µέρους αρχεία σε συµπιεσµένη µορφή. υστυχώς όµως είναι τέτοια η µορφή και το µέγεθος ενός class file που δεν επιτρέπουν µεγάλα ποσοστά συµπίεσης. Το JAZZ δηµιουργήθηκε για να λαµβάνει υπ όψιν την συνολική πληροφορία που περιέχεται στα αρχεία αυτά αντί να τα συµπιέζει ένα ένα. Με αυτόν τον τρόπο επιτυγχάνει πολύ καλύτερα ποσοστά συµπίεσης από απλά συστήµατα τύπου ZIP (όπως είναι το JAR) Το project Slim Binaries [9] στοχεύει κυρίως στην παραγωγή ενός ενδιάµεσου object code το οποίο όµως να µπορεί να αποσυµπιέζεται και να εκτελείται on the fly. Η βασική ιδέα πίσω από αυτό το project είναι το γεγονός του ότι σήµερα υπάρχουν πολλές διαφορετικές αρχιτεκτονικές επεξεργαστών, οι εταιρείες όµως κατασκευής λογισµικού παράγουν κώδικα για µια συγκεκριµένη αρχιτεκτονική και από εκεί και πέρα αναλαµβάνει ο εκάστοτε επεξεργαστής να το εξοµοιώσει στην δική του native πλατφόρµα. Το όνοµα Slim binaries προήλθε από τα λεγόµενα fat binaries τα οποία είναι κοµµάτια object κώδικα αλλά µέσα τους περιέχουν κώδικα για πολλές διαφορετικές αρχιτεκτονικές ώστε να µπορούν να εκτελεστούν natively από κάθε σύστηµα. Το Slim Binaries µετά την µετάφραση ενός προγράµµατος (και αφού χρησιµοποιήσει τεχνικές πρόβλεψης και συµπίεσης όµοιων τµηµάτων κώδικα) παράγει έναν ενδιάµεσο κώδικα ο οποίος όµως είναι σε µια µορφή που µπορεί να εκτελεστεί πολύ γρήγορα (λόγω πολύ µικρού µεγέθους). Τέλος όσον αφορά την πρώτη κατηγορία συµπίεσης αξίζει να αναφερθούµε στο [2] και στο [10]. Στο [2] εξετάζονται διάφορες µέθοδοι για την µείωση του µεγέθους των αρχείων class της JAVA ειδικά για προγράµµατα που απευθύνονται σε embedded συστήµατα. Ανάµεσα σε αυτές αναφέρεται η αλλαγή του format του constant pool (που προσφέρει και τα µεγαλύτερα ποσοστά συµπίεσης) και η αναδιοργάνωση των op codes ενώ καταλήγουν στο συµπέρασµα ότι η συµπίεση είναι µεγαλύτερη σε ένα jar

20 13 αρχείο όταν ληφθεί υπ όψιν πληροφορία που βρίσκεται σε όλα τα αρχεία απ ότι αν κάθε αρχείο συµπιέζονταν ανεξάρτητα από το άλλο. Στο [10] ο Pugh κινείται µε παρόµοιο τρόπο µε τις προηγούµενες µεθοδολογίες και εφαρµόζει 3 διαφορετικές τεχνικές για την µείωση του µεγέθους των αρχείων JAR. Ο ίδιος δίνει µεγαλύτερη βάση στην ταχύτητα µετάδοσης παρά στον χρόνο αποσυµπίεσης που θα χρειαστεί το αρχείο. Οι τεχνικές που χρησιµοποιεί έχουν αναφερθεί και στα προηγούµενα papers: Αναδιοργάνωση της πληροφορίας στα αρχεία class (αλλαγή της σειράς στο constant pool, διαγραφή debugging πληροφοριών κτλ..) Αλλαγή της σειράς µε την οποία υπάρχουν οι πληροφορίες σε ένα αρχείο ώστε να δοθεί στο gzip η ευκαιρία να ανακαλύψει πιο πολλά patterns και να αποφέρει µεγαλύτερη συµπίεση Οµαδοποίηση της κοινής πληροφορίας των constant pool των διαφόρων αρχείων class που βρίσκονται σε ένα αρχείο JAR ώστε να µειωθεί το πλήθος των πλεοναζόντων δεδοµένων που θα αποσταλούν. Αυτό γίνεται εντοπίζοντας την κοινή πληροφορία που βρίσκεται στα constant pools των αρχείων και αντικαθιστώντας την µε κάποιο macro. Στην δεύτερη κατηγορία εντάσσονται τεχνικές συµπίεσης που στοχεύουν στην δηµιουργία συµπιεσµένου κώδικα ο οποίος όµως µπορεί να διερµηνευτεί (είναι δηλαδή interpretable) χωρίς να χρειάζεται να αποσυµπιεστεί πλήρως για να εκτελεστεί. Οι διάφορες τεχνικές πάνω σε αυτήν την γενική ιδέα βασίζονται είτε στην κωδικοποίηση (για παράδειγµα Huffman) είτε στην αναγνώριση των patterns µέσα στον κώδικα και αντικατάσταση αυτών µε δείκτες σε κάποιο λεξικό (dictionary). Η κωδικοποίηση Huffman αντιστοιχίζει την µικρότερη αλληλουχία από bits στα σύµβολα που έχουν την µεγαλύτερη συχνότητα εµφάνισης σε ένα κείµενο. Με τον

21 14 τρόπο αυτό µπορεί να αποφέρει πολύ καλά ποσοστά συµπίεσης στο κείµενο στο οποίο εφαρµόζεται. Τεχνικές που βασίζονται σε αυτού του είδους την κωδικοποίηση γενικά έχουν δεχθεί κριτική λόγω του ότι εµφανίζουν αυξηµένη πολυπλοκότητα κατά την αποσυµπίεσή τους, παρόλα αυτά στην εργασία [3] παρουσιάζονται µέθοδοι για την κατασκευή γρήγορων διερµηνέων για κωδικοποιηµένα κείµενα Huffman. Οι εργασίες [11] και [12] χρησιµοποιούν κωδικοποίηση Huffman αλλά και αριθµητική κωδικοποίηση αντίστοιχα για να επιτύχουν την επιθυµητή συµπίεση. Ειδικά στο [11] η εκτέλεση του προγράµµατος γίνεται από εντολές που αποσυµπιέζονται µέσα στην cache και έτσι επιτυγχάνεται σχετικά καλός χρόνος εκτέλεσης. Οι τεχνικές συµπίεσης που στηρίζονται στην εύρεση patterns παράγουν συµπιεσµένο κώδικα ο οποίος όµως µπορεί να εκτελεστεί χωρίς να χρειάζεται να γίνει πρώτα η αποσυµπίεση του (ολόκληρου του κώδικα ή κατά τµήµατα) και µετά να εκτελεστεί. Η κεντρική ιδέα στην οποία στηρίζονται είναι ο εντοπισµός αλληλουχιών κώδικα που βρίσκονται σε πολλαπλά σηµεία µέσα στον κώδικα. Κάθε τέτοια αλληλουχία ονοµάζεται pattern. Τα patterns συνήθως αποθηκεύονται σε κάποιο λεξικό ενώ οι εµφανίσεις τους στον αρχικό κώδικα αντικαθίστανται από συγκεκριµένα opcodes που ονοµάζονται macros. Συνήθως ένα macro έχει µήκος όσο και µια εντολή (στην περίπτωση της Java ένα byte) και λειτουργεί ως δείκτης (index) µέσα στο λεξικό (dictionary). Συγκεκριµένα στο [13], οι συγγραφείς ερευνούν την χρήση των patterns (οι οποίοι τα ονοµάζουν repeats στην συγκεκριµένη περίπτωση) στην συµπίεση κώδικα µηχανής που αναφέρεται σε µηχανές τύπου RISC. Ποιο συγκεκριµένα κωδικοποιούν τις εντολές µαζί µε τα ορίσµατά τους σε κωδικό-σύµβολα και την συνέχεια αναζητούν repeats µέσα στο κείµενο από τα σύµβολα αυτά. Τα repeats επιτρέπεται να έχουν οποιοδήποτε µήκος αλλά και µπαλαντέρ (wildcards) µέσα τους. Η διαδικασία εύρεσης των repeats γίνεται µε την δηµιουργία ενός δέντρου (suffix-tree) ενώ η

22 15 διαδικασία επιλογής των καταλληλότερων repeats γίνεται ταξινοµώντας κάθε repeat µε βάση την αναµενόµενη συµπίεση που µπορεί να προσφέρει το κάθε ένα. Με παρόµοια λογική κινείται και το CodePack Compressor της IBM, που εφαρµόζεται στα PowerPc, µόνο που χρησιµοποιεί patterns χωρίς µπαλαντέρ αλλά µε απεριόριστο µήκος. Οι συγκεκριµένες εργασίες πηγάζουν από τις ιδέες που προτείνονται στο [14]. Στη συγκεκριµένη εργασία περιγράφεται η ιδέα του να χρησιµοποιεί κανείς αποθηκευµένα patterns σε κάποιο λεξικό και να τα κάνει fetch στην µνήµη όταν αυτά χρειάζονται. Επίσης αναφέρεται ότι οι µέθοδοι που χρησιµοποιούν στατιστικές µεθόδους συµπίεσης (όπως για παράδειγµα µέθοδοι τύπου Huffman) µπορούν πάντα να προσφέρουν την ίδια ή και καλύτερη συµπίεση από οποιαδήποτε µέθοδο που στηρίζεται σε dictionary, παρόλα αυτά όµως είναι πιο δύσκολη και πιο περίπλοκη από υπολογιστικής απόψεως η αποσυµπίεση και αυτό επειδή η στατιστική συµπίεση δεν προσφέρει κωδικοποιηµένο αποτέλεσµα που να είναι στοιχισµένο µε την µνήµη. Έτσι ο υπολογισµός του offset κάθε φορά µπορεί να είναι χρονοβόρος. Στο [15] χρησιµοποιούνται πολλές διαφορετικές τεχνικές για την επίτευξη της συµπίεσης. Χρησιµοποιείται µια συνάρτηση «αποτυπώµατος» για την αναγνώριση «όµοιων» basic blocks και έτσι χρησιµοποιούνται παραµετρικά patterns (δηλαδή patterns µε µπαλαντέρ) για την παραγοντοποίηση του κώδικα (factorizing). Επίσης χρησιµοποιούν πολλές τεχνικές βελτιστοποίησης που αξιοποιούν οι σηµερινοί compilers (ανάλυση του γράφου των basic blocks για την απαλοιφή πλεονάζοντα κώδικα, εύρεση όµοιων τµηµάτων κώδικα πριν και µετά τα basic blocks και περαιτέρω σύµπτυξη τους σε διαδικασίες και τέλος χρήση ιδιοτήτων συγκεκριµένων αρχιτεκτονικών για ακόµα καλύτερα αποτελέσµατα)

ΠΛΝβΠίΓΤΗΜίΟΥ ΙΩΑΝΝΙΝΩΝ

ΠΛΝβΠίΓΤΗΜίΟΥ ΙΩΑΝΝΙΝΩΝ M a i o q h k h ΠΛΝβΠίΓΤΗΜίΟΥ ΙΩΑΝΝΙΝΩΝ 026000265375 ΣΥΜΠΙΕΣΗ JAVA BYTECODE ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ Υποβάλλεται στην ορισθείσα από την Γενική Συνέλευση Ειδικής Σύνθεσης του Τμήματος Πληροφορικής

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

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

Ανάκτηση Πληροφορίας

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #08 Συµπίεση Κειµένων Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1 Άδεια χρήσης

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης

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

Το εσωτερικό ενός Σ Β

Το εσωτερικό ενός Σ Β Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL) ηµιουργία/κατασκευή Εισαγωγή εδοµένων

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

Week. 6: Java Collections

Week. 6: Java Collections Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

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

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

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

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ.Χατζόπουλος 2 Δένδρο αναζήτησης είναι ένας ειδικός τύπος δένδρου που χρησιμοποιείται για να καθοδηγήσει την αναζήτηση μιας

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

Περίληψη ιπλωµατικής Εργασίας

Περίληψη ιπλωµατικής Εργασίας Περίληψη ιπλωµατικής Εργασίας Θέµα: Εναλλακτικές Τεχνικές Εντοπισµού Θέσης Όνοµα: Κατερίνα Σπόντου Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο της διπλωµατικής Ο εντοπισµός

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων Βάσεις εδοµένων 2003-2004 Ευαγγελία Πιτουρά 1 ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Επεξεργασία Ερωτήσεων Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL)

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

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

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Ποιος πρέπει να ολοκληρώσει αυτή την εργασία? Φοιτητές έτους >=2 που

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

5.1 Θεωρητική εισαγωγή

5.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 5 ΚΩ ΙΚΟΠΟΙΗΣΗ BCD Σκοπός: Η κατανόηση της µετατροπής ενός τύπου δυαδικής πληροφορίας σε άλλον (κωδικοποίηση/αποκωδικοποίηση) µε τη µελέτη της κωδικοποίησης BCD

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

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

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter

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

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

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΣΔΒΔ Σύνολο από προγράµµατα για τη διαχείριση της ΒΔ Αρχεία ευρετηρίου Κατάλογος ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Αρχεία δεδοµένων συστήµατος Σύστηµα Βάσεων Δεδοµένων (ΣΒΔ)

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

char name[5]; /* define a string of characters */

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Τρίτη (3 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο

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

Αρχές κωδικοποίησης. Τεχνολογία Πολυµέσων 08-1

Αρχές κωδικοποίησης. Τεχνολογία Πολυµέσων 08-1 Αρχές κωδικοποίησης Απαιτήσεις κωδικοποίησης Είδη κωδικοποίησης Βασικές τεχνικές κωδικοποίησης Κωδικοποίηση Huffman Κωδικοποίηση µετασχηµατισµών Κβαντοποίηση διανυσµάτων ιαφορική κωδικοποίηση Τεχνολογία

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

4.3. Γραµµικοί ταξινοµητές

4.3. Γραµµικοί ταξινοµητές Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly Αρης Ευθυμίου Το σημερινό μάθημα! Σύνταξη εντολών! Θέματα σχετικά με τη προσπέλαση, οργάνωση μνήμης διευθύνση για κάθε byte διευθύνσεις λέξεων

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

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

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

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

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή.

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ι Γ. Τσιατούχας 2 ο Κεφάλαιο ιάρθρωση 1. Οργάνωση της 2. εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (2/2) 1.1 Τα bits και ο τρόπος που αποθηκεύονται 1.2 Κύρια µνήµη 1.3 Αποθηκευτικά µέσα 1.4 Αναπαράσταση πληροφοριών ως σχηµάτων bits

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

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18

Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών. Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου / 18 Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής 29 Μαΐου 2017 1 / 18 Βέλτιστα (στατικά) δυαδικά δένδρα αναζήτησης Παράδειγµα: Σχεδιασµός προγράµµατος

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΙΠΕ Ο ΜΗΧΑΝΗΣ ΛΕΙΤΟΥΡΓΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ Γ. Τσιατούχας 6 ο Κεφάλαιο 1. Επίπεδο OSM 2. Εικονική μνήμη ιάρθρωση 3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ και ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο ΦΕΒΡΟΥΑΡΙΟΣ 2006 ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K. Δοµές Δεδοµένων 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης Βασίζεται στις διαφάνειες των R. Sedgewick K. Wayne Περίληψη Συνδετικότητα δικτύου Αφαιρέσεις Συνδεδεµένα συστατικά Αφηρηµένη

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΖΩΓΡΑΦΟΥ 157 73, ΑΘΗΝΑ ΕΒΓ - ΙΠΛ-2003-1 20 Ιανουαρίου 2003 Σύγκριση Αλγορίθµων

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop. Η δοµή «Shift register» 1. Η δοµή «Shift register» εισάγεται στο βρόγχο for-loop αλλά και σε άλλους βρόγχους που θα δούµε στη συνέχεια, όπως ο βρόγχος «While loop». Ο τρόπος εισαγωγής και λειτουργίας της

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

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

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 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη Ευρετήρια 1 Αρχεία Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη µνήµη. Η µεταφορά δεδοµένων από το δίσκο στη µνήµη και από τη

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Ακαδηµαϊκό Έτος 2003-2004, Εαρινό Εξάµηνο ιδάσκων

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Τεχνικές κατασκευής δένδρων επιθεµάτων πολύ µεγάλου µεγέθους και χρήσης

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

Σχήµα 2.1: Εισαγωγή array στο Front Panel.

Σχήµα 2.1: Εισαγωγή array στο Front Panel. Arrays (Πίνακες) 1. Στο LAbVIEW η εισαγωγή πινάκων γίνεται µε τα arrays. Για να εισάγουµε ένα array στο Front Panel κάνουµε δεξί κλικ σε αυτό και επιλέγουµε την εντολή «Array» από το µενού «Array, Matrix

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

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

ιαµέριση - Partitioning

ιαµέριση - Partitioning ιαµέριση - Partitioning ιαµέριση ιαµέριση είναι η διαµοίραση αντικειµένων σε οµάδες µε στόχο την βελτιστοποίηση κάποιας συνάρτησης. Στην σύνθεση η διαµέριση χρησιµοποιείται ως εξής: Οµαδοποίηση µεταβλητών

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 11 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di288 1 Συμπίεση

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα Από τον ενδιάμεσο κώδικα στον τελικό (1/2) Τα ορίσματα των εντολών ενδιάμεσου κώδικα είναι του τύπου expr*. Αυτές οι εκφράσεις θα πρέπει

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στις έννοιες Αλγόριθµοι και Πολυπλοκότητα, Οργάνωση Δεδοµένων και Δοµές Δεδοµένων Χρήσιµοι µαθηµατικοί

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

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

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

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 7: Αποκωδικοποίηση Εντολής x86 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

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

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

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

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems Ημερομηνία Παράδοσης: 0/1/017 την ώρα του μαθήματος ή με email: mkarabin@csd.uoc.gr Γενικές Οδηγίες α) Επιτρέπεται η αναζήτηση στο Internet και στην βιβλιοθήκη

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

Τεχνολογία Πολυμέσων. Ενότητα # 9: Κωδικοποίηση εντροπίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας

Επεξεργασία Πολυµέσων. Δρ. Μαρία Κοζύρη Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας Π.Μ.Σ. «Εφαρµοσµένη Πληροφορική» Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήµιο Θεσσαλίας Ενότητα 3: Επισκόπηση Συµπίεσης 2 Θεωρία Πληροφορίας Κωδικοποίηση Θεµελιώθηκε απο τον Claude

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

Browsers. Λειτουργικότητα και Παραμετροποίηση

Browsers. Λειτουργικότητα και Παραμετροποίηση Browsers Λειτουργικότητα και Παραμετροποίηση 1 Πίνακας περιεχομένων Γενική περιγραφή... 3 Γενικά... 3 Ποιο αναλυτικά τα μέρη ενός browser... 4 Φίλτρα αναζήτησης... 4 Σενάρια αναζήτησης... 4 Όψεις εμφάνισης

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

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