ΣΥΜΠΙΕΣΗ 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 και περαιτέρω σύµπτυξη τους σε διαδικασίες και τέλος χρήση ιδιοτήτων συγκεκριµένων αρχιτεκτονικών για ακόµα καλύτερα αποτελέσµατα)

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

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

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

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

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

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

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

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

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

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 Επικοινωνία µε άλλες συσκευές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σχήµα 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Τα µπιτ και η σηµασία τους. Σχήµα 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

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

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

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

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

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

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

ιαµέριση - Partitioning

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Θέµα 1 ο Α. Να απαντήσετε τις παρακάτω ερωτήσεις τύπου Σωστό Λάθος (Σ Λ) 1. Σκοπός της συγχώνευσης 2 ή περισσοτέρων ταξινοµηµένων πινάκων είναι η δηµιουργία

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΑΚΑ ΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture-ISA) 1 Ένας υπολογιστής

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

Clustering. Αλγόριθµοι Οµαδοποίησης Αντικειµένων

Clustering. Αλγόριθµοι Οµαδοποίησης Αντικειµένων Clustering Αλγόριθµοι Οµαδοποίησης Αντικειµένων Εισαγωγή Οµαδοποίηση (clustering): οργάνωση µιας συλλογής από αντικείµενα-στοιχεία (objects) σε οµάδες (clusters) µε βάση κάποιο µέτρο οµοιότητας. Στοιχεία

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2 Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 05/03/2013 Ημερομηνία

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

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

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

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

Εντολές γλώσσας μηχανής

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

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

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

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

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών

Συμπίεση Δεδομένων Δοκιμής (Test Data Compression) Νικολός Δημήτριος, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών & Πληροφορικής, Παν Πατρών Συμπίεση Δεδομένων Δοκιμής (Test Data Compression), Παν Πατρών Test resource partitioning techniques ΑΤΕ Automatic Test Equipment (ATE) based BIST based Έλεγχος παραγωγής γής βασισμένος σε ΑΤΕ Μεγάλος

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

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

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

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών Ενότητα 3: Χειρισμός δεδομένων, 2ΔΩ Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης Διδάσκων: Θεόδωρος Τσιλιγκιρίδης Μαθησιακοί Στόχοι Η Ενότητα 3 διαπραγματεύεται θέματα

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter 3 Kuo [2005]: Chapters 1 & 4-5 Lapsley [2002]: Chapter 4 Hayes [2000]: Κεφάλαιo 8

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

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

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

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

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

FAIL PASS PASS οριακά

FAIL PASS PASS οριακά AEM 0001 0002 COMMENTS οριακά -Το πρόγραµµά σου δουλεύει λάθος για τις εισόδους: 7 -Δεν έχεις µεριµνήσει για την περίπτωση step=1. Μπορούσες να θεωρήσεις ειδική περίπτωση και να την υλοποιείς σε άλλον

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

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

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

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 4 : Κρυφή Μνήμη Καρβούνης Ευάγγελος Δευτέρα, 30/11/2015 Χαρακτηριστικά Θέση Χωρητικότητα Μονάδα Μεταφοράς

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

ΑΝΑΛΥΣΗ Ε ΟΜΕΝΩΝ 1. ΕΙ Η Ε ΟΜΕΝΩΝ, ΣΥΛΛΟΓΗ, ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΕΙΣΑΓΩΓΗ

ΑΝΑΛΥΣΗ Ε ΟΜΕΝΩΝ 1. ΕΙ Η Ε ΟΜΕΝΩΝ, ΣΥΛΛΟΓΗ, ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΕΙΣΑΓΩΓΗ ΑΝΑΛΥΣΗ Ε ΟΜΕΝΩΝ 1. ΕΙ Η Ε ΟΜΕΝΩΝ, ΣΥΛΛΟΓΗ, ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΕΙΣΑΓΩΓΗ Βασικές µορφές Ερωτήσεων - απαντήσεων Ανοιχτές Κλειστές Κλίµακας ΕΛΕΥΘΕΡΙΟΣ ΑΓΓΕΛΗΣ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΘ 2 Ανοιχτές ερωτήσεις Ανοιχτές

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

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 9 οµές εδοµένων σε C Γιώργος Γιαγλής Περίληψη Κεφαλαίου 9 οµές εδοµένων υναµικές

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 Τμήμα θεωρίας: Α.Μ. 8, 9 Κάθε Πέμπτη, 11πμ-2μμ, ΑΜΦ23. Διδάσκων: Ντίνος Φερεντίνος Γραφείο 118 email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό

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