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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Περιεχόμενα Περιεχόμενα 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 Εκφράσεις...

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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 Μάθημα: Θεωρία + προαιρετικό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

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

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

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

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

Οργάνωση Υπολογιστών (Ι)

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης Ανάλυση Αλγορίθµων Είσοδος Αλγόριθµος Έξοδος Περιγραφή και Υλικό Ανάγνωσης Χρόνος εκτέλεσης (.) Ψευδοκώδικας (.) Μέτρηση των στοιχειωδών πράξεων (.) Ασυµπτωτική σηµειογραφία (.2) Ασυµπτωτική ανάλυση (.2)

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

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή Εισαγωγή Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ Σκοπός του εργαστηρίου είναι να γνωρίσουµε την εσωτερική δοµή και αρχιτεκτονική της κεντρικής µονάδας επεξεργασίας, να κατανοήσουµε τον τρόπο µε τον οποίο λειτουργεί

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Εγκατάσταση. Εγκατάσταση του Wamp

Εγκατάσταση. Εγκατάσταση του Wamp Εγκατάσταση Εγκατάσταση του Wamp Η εγκατάσταση χωρίζεται σε δύο µέρη. Πρώτα θα εγκαταστήσουµε το Wamp, ώστε να µετατρέψουµε τον υπολογιστή µας σε Web Server και µετά θα εγκαταστήσουµε το Joomla. Η εγκατάσταση

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

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

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

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

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

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

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi Εικονική Μνήµη Κεφάλαιο 8 Υλικό και δοµές ελέγχου Οι αναφορές στην µνήµη υπολογίζονται δυναµικά κατά την εκτέλεση Ηδιεργασίαχωρίζεταισετµήµατα τα οποία δεν απαιτείται να καταλαµβάνουν συνεχόµενες θέσεις

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

Σηµειώσεις στις σειρές

Σηµειώσεις στις σειρές . ΟΡΙΣΜΟΙ - ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ Σηµειώσεις στις σειρές Στην Ενότητα αυτή παρουσιάζουµε τις βασικές-απαραίτητες έννοιες για την µελέτη των σειρών πραγµατικών αριθµών και των εφαρµογών τους. Έτσι, δίνονται συστηµατικά

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

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της Στην ενότητα αυτή θα αναφερθούµε εκτενέστερα στη λειτουργία και την οργάνωση της κρυφής µνήµης. Θα προσδιορίσουµε τις βασικές λειτουργίες που σχετίζονται µε

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

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio Το κείµενο που ακολουθεί είναι ένας σύντοµος οδηγός στο περιβάλλον προγραµµατισµού της γλώσσας Fortran, για τις ανάγκες

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

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Α Κ Α Η Μ Α Ι Κ Ο Ε Τ Ο Σ 2 0 1 1-2 0 1 2 ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT Ο συγκεκριµένος οδηγός για το πρόγραµµα

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

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

ΟΜΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 3 ΕΡΩΤΗΣΕΙΣ... 5 ΕΡΕΥΝΕΣ... 8

ΟΜΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 3 ΕΡΩΤΗΣΕΙΣ... 5 ΕΡΕΥΝΕΣ... 8 Εγχειρίδιο Χρήσης Συστήµατος Έρευνες Στατιστικών Στοιχείων ΠΕΡΙΕΧΟΜΕΝΑ ΟΜΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 3 Λογική Ανάλυση Χρήσης Εφαρµογής... 3 ΕΡΩΤΗΣΕΙΣ... 5 ΠΡΟΣΘΗΚΗ ΕΡΩΤΗΣΗΣ... 6 Επεξεργασία Ερώτησης... 7 ιαγραφή

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

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων 2009-2010: Ευρετήρια 1

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων 2009-2010: Ευρετήρια 1 Ευρετήρια 1 Ευρετήρια Ένα ευρετήριο (index) είναι μια βοηθητική δομή αρχείου που κάνει πιο αποδοτική την αναζήτηση μιας εγγραφής σε ένα αρχείο Το ευρετήριο καθορίζεται (συνήθως) σε ένα γνώρισμα του αρχείου

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

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

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

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

Επεξεργασία Χαρτογραφικής Εικόνας

Επεξεργασία Χαρτογραφικής Εικόνας Επεξεργασία Χαρτογραφικής Εικόνας ιδάσκων: Αναγνωστόπουλος Χρήστος Αρχές συµπίεσης δεδοµένων Ήδη συµπίεσης Συµπίεση εικόνων Αλγόριθµος JPEG Γιατί χρειαζόµαστε συµπίεση; Τα σηµερινά αποθηκευτικά µέσα αδυνατούν

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

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

Στατιστικό κριτήριο χ 2

Στατιστικό κριτήριο χ 2 18 Μεθοδολογία Επιστηµονικής Έρευνας & Στατιστική Στατιστικό κριτήριο χ 2 Ο υπολογισµός του κριτηρίου χ 2 γίνεται µέσω του µενού [Statistics => Summarize => Crosstabs...]. Κατά τη συγκεκριµένη διαδικασία

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) Ένωση Ξένων Συνόλων (Disjoint Sets with Union) S 1,, S k : ξένα υποσύνολα ενός συνόλου U δηλ., S i S j =, αν i j, και S 1 S k = U. Λειτουργίες που θέλουµε

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή Εισαγωγή Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ Ξεκινάµε την εργαστηριακή µελέτη της Ψηφιακής Λογικής των Η/Υ εξετάζοντας αρχικά τη µορφή των δεδοµένων που αποθηκεύουν και επεξεργάζονται οι υπολογιστές και προχωρώντας

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

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής. Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 3ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης 3.4 Τύποι εδοµένων τής

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ ΘΕΜΑ 1 ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ Τελικές εξετάσεις 21 Σεπτεµβρίου 2004 ιάρκεια: 3 ώρες Το παρακάτω σύνολο

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

Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες]

Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες] Α. Στο παρακάτω διάγραµµα εµφανίζεται η εκτέλεση ενός παράλληλου αλγόριθµου που λύνει το ίδιο πρόβληµα µε έναν ακολουθιακό αλγόριθµο χωρίς πλεονασµό. Τα Α i και B i αντιστοιχούν σε ακολουθιακά υποέργα

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

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών 1 Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της Κωτσογιάννη Μαριάννας Περίληψη 1. Αντικείµενο- Σκοπός Αντικείµενο της διπλωµατικής αυτής εργασίας

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

Homework 3 Solutions

Homework 3 Solutions Homework 3 Solutions Igor Yanovsky (Math 151A TA) Problem 1: Compute the absolute error and relative error in approximations of p by p. (Use calculator!) a) p π, p 22/7; b) p π, p 3.141. Solution: For

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

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

ΤΕΙ Κρήτης, Παράρτηµα Χανίων ΠΣΕ, Τµήµα Τηλεπικοινωνιών & ικτύων Η/Υ Εργαστήριο ιαδίκτυα & Ενδοδίκτυα Η/Υ ( ηµιουργία συστήµατος µε ροint-tο-ροint σύνδεση) ρ Θεοδώρου Παύλος Χανιά 2003 Περιεχόµενα 1 ΕΙΣΑΓΩΓΗ...2 2 ΤΟ ΚΑΝΑΛΙ PΟINT-TΟ-PΟINT...2

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

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ Α ΜΕΡΟΣ ΘΕΩΡΙΑ ΓΙΑ ΠΙΝΑΚΕΣ 3.1

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

(Διαφάνειες Νίκου Βιδάκη)

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

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

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

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

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Προχωρηµένα Θέµατα Αρχιτεκτονικής Προχωρηµένα Θέµατα Αρχιτεκτονικής Μάθηµα 2 ο : Instruction Set Principles and Examples Μάθηµα 2 ο Προχωρηµένα Θέµατα Αρχιτεκτονικής 1 Σχεδιασµός Συνόλου Εντολών Θέµατα που θα συζητηθούν ιαφορετικές επιλογές

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