Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής"

Transcript

1 Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού, μια συνάρτηση 1 μπορεί να έχει τοπικές μεταβλητές που δημιουργούνται με την είσοδο στη συνάρτηση. Πολλές κλήσεις της συνάρτησης αυτής μπορούν να είναι ταυτόχρονα ενεργές, και κάθε κλήση δημιουργεί τα δικά της αντίγραφα των τοπικών μεταβλητών. Για παράδειγμα, στη πιο κάτω συνάρτηση της γλώσσας C: int f (int x) { int y = x+x; if (y < 10) return f(y) else return y-1; } ένα νέο αντίγραφο της τοπικής μεταβλητής x (που ταυτόχρονα είναι και τυπική παράμετρος της συνάρτησης) δημιουργείται κάθε φορά που καλείται η συνάρτηση f, το οποίο και αρχικοποιείται από την καλούσα συνάρτηση. Εξ αιτίας των αναδρομικών κλήσεων της f, πολλά α- ντίγραφα της x υπάρχουν την ίδια στιγμή. Επίσης, ένα νέο αντίγραφο της τοπικής μεταβλητής y δημιουργείται με κάθε είσοδο στο σώμα της συνάρτησης f. Σε πολλές γλώσσες προγραμματισμού οι τοπικές μεταβλητές καταστρέφονται με την έξοδο από μια συνάρτηση. Επειδή η έξοδος από μια συνάρτηση συνεπάγεται προηγούμενη έξοδο από όλες τις συναρτήσεις που καλούνται από αυτήν, μπορούμε να συμπεράνουμε ότι οι κλήσεις συναρτήσεων έχουν συμπεριφορά LIFO (last-in-first-out). Εάν λοιπόν οι τοπικές μεταβλητές μιας συνάρτησης δημιουργούνται με την είσοδο και καταστρέφονται με την έξοδο μιας συνάρτησης, τότε μπορούμε να χρησιμοποιήσουμε μια δομή στοίβας για να τις αποθηκεύουμε στη μνήμη. Μερικές γλώσσες προγραμματισμού από την άλλη μεριά, δεν καταστρέφουν τις τοπικές μεταβλητές με την έξοδο από μια συνάρτηση. Κάτι τέτοιο συμβαίνει όταν μια γλώσσα υποστηρίζει ταυτόχρονα (α) φωλιασμένες συναρτήσεις και (β) συναρτήσεις που επιστρέφουν συναρτήσεις. Τέτοιες γλώσσες είναι για παράδειγμα οι ML και η Scheme. Για το υπόλοιπο της α- νάλυσης δε θα ασχοληθούμε με τέτοιες γλώσσες. Η στοίβα εκτέλεσης Η απλούστερη έννοια της στοίβας είναι ως μία δομή δεδομένων που υποστηρίζει δύο λειτουργίες, τη λειτουργία push και τη λειτουργία pop. Στην περίπτωσή μας όμως, οι τοπικές μεταβλητές δεν εισάγονται στην, ούτε εξάγονται από τη στοίβα μεμονωμένα, αλλά όλες μαζί. Επίσης, μετά την εισαγωγή των τοπικών μεταβλητών στη στοίβα, θέλουμε να μπορούμε να προσπελάσουμε τοπικές μεταβλητές που βρίσκονται κάτω από την κορυφή της στοίβας, είτε από αυτές που εισάγαμε στην τελευταία, είτε από αυτές που εισάγαμε σε προηγούμενη εισαγωγή. Έτσι, το απλό μοντέλο των δύο λειτουργιών δεν είναι κατάλληλο για το σκοπό μας. Αντίθετα, θεωρούμε τη στοίβα σαν έναν πίνακα, που προσπελαύνεται με τη βοήθεια ειδικού καταχωρητή, του δείκτη στοίβας (stack pointer) που η τιμή του δείχνει σε κάποια θέση στον πίνακα αυτόν. Οι θέσεις πέρα από την τιμή του δείκτη στοίβας περιέχουν τυχαίες άγνωστες 1 Με τον όρο συνάρτηση εννοούμε κάθε μονάδα ενός προγράμματος που ενεργοποιείται με κάποιο μηχανισμό κλήσης, με πιθανό πέρασμα παραμέτρων, και απενεργοποιείται με κάποιον αντίστοιχο μηχανισμό επανόδου στη μονάδα που την κάλεσε, με πιθανή επιστροφή αποτελέσματος.

2 τιμές, ενώ οι θέσεις πίσω από την τιμή του δείκτη στοίβας περιέχουν τιμές ενεργών μεταβλητών. Η στοίβα αυτή, που ονομάζεται στοίβα εκτέλεσης (run-time stack), συνήθως αυξάνεται μόνο στην κλήση μιας συνάρτησης, κατά μέγεθος τέτοιο, ώστε ο νέος χώρος που δημιουργείται να χωράει όλες τις τοπικές μεταβλητές της συνάρτησης, και μειώνεται ακριβώς πριν την έξοδο από τη συνάρτηση, κατά ίσο μέγεθος. Η περιοχή στη στοίβα που δεσμεύεται για τις τοπικές μεταβλητές μιας συνάρτησης ονομάζεται εγγράφημα δραστηριοποίησης (ΕΔ - activation record) της συνάρτησης. Εκτός των τοπικών μεταβλητών (και παραμέτρων) της συνάρτησης, το ΕΔ συνήθως αποθηκεύει βοηθητικές τιμές, όπως τη διεύθυνση επανόδου, την τιμή αποτελέσματος, το σύνδεσμο προσπέλασης, καθώς και προσωρινές μεταβλητές της συνάρτησης. Για ιστορικούς λόγους, οι στοίβες εκτέλεσης ξεκινούν σε υψηλές διευθύνσεις μνήμης και αυξάνονται προς τα κάτω, προς μικρότερες διευθύνσεις μνήμης. Η σχεδίαση του ΕΔ μιας συνάρτησης λαμβάνει υπ όψη τα ιδιαίτερα χαρακτηριστικά του συνόλου εντολών της τελικής γλώσσας, αλλά και την αρχική γλώσσα. Όμως, ο κατασκευαστής ενός επεξεργαστή συχνά προδιαγράφει τη μορφή των ΕΔ που πρέπει να υιοθετούνται από τους μεταγλωττιστές όλων των γλωσσών που χρησιμοποιούν τη στοίβα εκτέλεσης στον επεξεργαστή αυτόν. Μερικές φορές αυτή η μορφή δεν είναι και η καλύτερη για κάποιον συγκεκριμένο μεταγλωττιστή ή κάποια συγκεκριμένη γλώσσα, αλλά η χρήση αυτής της μορφής διευκολύνει στη σύνδεση ενός κώδικα με κάποια βιβλιοθήκη, ή με κώδικα που έχει γραφτεί σε άλλη αρχική γλώσσα. Ανεξάρτητα από τη μορφή του ΕΔ, η δέσμευση των θέσεων σε αυτό γίνεται από το μεταγλωττιστή, ανάλογα με τις ανάγκες μετάφρασης της κάθε συνάρτησης. Συνήθως, πρώτα δεσμεύονται οι θέσεις των τυπικών παραμέτρων της συνάρτησης, της διεύθυνσης επανόδου, της τιμής αποτελέσματος και του συνδέσμου προσπέλασης. Στη συνέχεια δεσμεύονται οι θέσεις των τοπικών μεταβλητών, με τη σειρά που εμφανίζονται στο σώμα της συνάρτησης, ή με ό- ποια σειρά βολεύει το μεταγλωττιστή. Στο τέλος δεσμεύονται θέσεις για προσωρινές μεταβλητές, που συνήθως εξυπηρετούν ανάγκες διάχυσης καταχωρητών, και οι οποίες εμφανίζονται στα τελευταία στάδια μετάφρασης, αφού δηλαδή έχει γίνει η δέσμευση όλων των άλλων θέσεων στο ΕΔ. Για κάθε θέση που δεσμεύεται από το μεταγλωττιστή, η μετατόπισή της από την αρχή του ΕΔ είναι σταθερή και γνωστή από τη στιγμή της δέσμευσης. Άσχετα αν η θέση του ΕΔ στη μνήμη δε μπορεί να είναι γνωστή στο μεταγλωττιστή, οι εντολές προσπέλασης θέσεων του ΕΔ μπορούν να παραχθούν, με διευθυνσιοδότηση σχετική με το δείκτη στοίβας. Ο δείκτης στοίβας λαμβάνει τιμές κατά την εκτέλεση του παραγόμενου κώδικα, από εντολές που παράγει ο μεταγλωττιστής στην είσοδο και στην έξοδο μιας συνάρτησης. Έτσι, στην είσοδο μιας συνάρτησης, ο δείκτης στοίβας μειώνεται κατά το μέγεθος του ΕΔ της συνάρτησης, ώστε να δείχνει πάντα στην κορυφή της στοίβας, και η στοίβα να μπορεί να δεχτεί το ΕΔ κάποιας άλλης συνάρτησης που καλείται από αυτήν. Αντίθετα, στην έξοδο από τη συνάρτηση, ο δείκτης στοίβας αυξάνεται αντίστοιχα. Η αρχική τιμή του δείκτη στοίβας δίνεται από το σύστημα κατά τη φόρτωση και εκκίνηση ενός προγράμματος. Καταχωρητές και στοίβα εκτέλεσης Κάθε μοντέρνος επεξεργαστής έχει ένα μεγάλο αριθμό καταχωρητών (συνήθως 32). Για την αύξηση της ταχύτητας των προγραμμάτων, είναι σκόπιμο να διατηρούμε τις τοπικές μεταβλητές, όπως και άλλες ενδιάμεσες τιμές, σε καταχωρητές αντί της στοίβας. Στους περισσότερους σύγχρονους επεξεργαστές, οι αριθμητικές εντολές προσπελαύνουν άμεσα τους καταχωρητές τους και όχι τη μνήμη. Η προσπέλαση της μνήμης απαιτεί ειδικές εντολές φόρτωσης και αποθήκευσης. Ακόμα και για αρχιτεκτονικές που υποστηρίζουν προσπέλαση της μνήμης μέσα από αριθμητικές εντολές, η προσπέλαση καταχωρητών είναι πιο γρήγορη. Κάθε επεξεργαστής έχει συνήθως ένα μοναδικό σύνολο καταχωρητών. Από την άλλη μεριά, πολλαπλές μονάδες ενός προγράμματος μπορούν να επιθυμούν ταυτόχρονη χρήση των καταχωρητών αυτών. Έστω για παράδειγμα μια συνάρτηση f που χρησιμοποιεί τον καταχωρητή r για να αποθηκεύσει μια τοπική μεταβλητή, και η οποία καλεί μια άλλη συνάρτηση g, η οποία επίσης χρησιμοποιεί τον ίδιο καταχωρητή για δικούς της υπολογισμούς. Τότε, η τιμή του r πρέπει να αποθηκευτεί στη στοίβα εκτέλεσης, πριν η g τον χρησιμοποιήσει, και να επανα-

3 φορτωθεί από τη στοίβα, αφού η g ολοκληρώσει τη χρήση του. Το ερώτημα που γεννάται είναι: ποιος κώδικας θα αποθηκεύσει και θα επαναφορτώσει τον r, ο κώδικας της f ή της g; Στην πρώτη περίπτωση λέμε ότι ο r είναι στην ευθύνη της καλούσας συνάρτησης, ενώ στη δεύτερη λέμε ότι ο r είναι στην ευθύνη της καλούμενης συνάρτησης. Στις περισσότερες αρχιτεκτονικές η παραπάνω διάκριση δε γίνεται μέσα από το υλικό, αλλά είναι αποτέλεσμα παραδοχής που ορίζεται μέσα από το εγχειρίδιο χρήσης του επεξεργαστή. Στους επεξεργαστές MIPS για παράδειγμα, η παραδοχή είναι ότι οι καταχωρητές πρέπει να διατηρούν την τιμή τους μέσα από κλήσεις συναρτήσεων (κι επομένως είναι στην ευθύνη της καλούμενης συνάρτησης), ενώ οι υπόλοιποι μπορούν να αλλάζουν τιμή μέσα από κλήσεις συναρτήσεων (κι επομένως είναι στην ευθύνη της καλούσας συνάρτησης). Η αποθήκευση και επαναφόρτωση καταχωρητών δεν είναι πάντα απαραίτητη. Εάν στο πιο πάνω παράδειγμα η f δηλαδή ο μεταγλωττιστής που μεταφράζει την f γνωρίζει ότι η τιμή κάποιας μεταβλητής x δε θα χρησιμοποιηθεί μετά την κλήση της g, μπορεί να την τοποθετήσει σε έναν καταχωρητή της ευθύνης της f, χωρίς να την αποθηκεύσει πριν την κλήση. Παρόμοια, αν η f έχει μια μεταβλητή i, η οποία χρησιμοποιείται ξανά μετά την κλήση της g, και πιθανά μετά από άλλες κλήσεις άλλων συναρτήσεων, μπορεί να τοποθετήσει την τιμή της σε κάποιον καταχωρητή της ευθύνης της καλούμενης συνάρτησης, οπότε αρκεί να αποθηκεύσει την αρχική τιμή του πριν την πρώτη χρήση του, και να την επαναφορτώσει μετά την τελευταία χρήση του. Η τιμή αυτή είναι η τιμή που ο καταχωρητής έχει από άλλη συνάρτηση που καλεί την f. Η νέα τιμή που αποδίδεται σε αυτόν από την f αποθηκεύεται και επαναφορτώνεται από όποια συνάρτηση καλείται μέσα από την f, αν και εφ όσον αυτή θέλει να τον χρησιμοποιήσει. Από τα παραπάνω καταλαβαίνουμε ότι η επιλογή του καταχωρητή για κάποια μεταβλητή μπορεί να επηρεάσει το συνολικό αριθμό των εντολών προσπέλασης μνήμης κάποιου προγράμματος. Ο αλγόριθμος δέσμευσης καταχωρητών πρέπει να διακρίνει τις δύο κατηγορίες καταχωρητών, ώστε να κάνει τη βέλτιστη δέσμευση. Πέρασμα παραμέτρων Από τη δεκαετία του 1970, οπότε καθιερώθηκε η χρήση της στοίβας εκτέλεσης για την τοποθέτηση των ΕΔ των συναρτήσεων, οι παραδοχές για το μηχανισμό κλήσης συναρτήσεων υ- παγορεύουν οι παράμετροι των συναρτήσεων να περνάνε μέσα από τη στοίβα. Κάτι τέτοιο όμως αυξάνει τις προσπελάσεις της μνήμης. Μελέτες αντιπροσωπευτικών προγραμμάτων έχουν δείξει ότι πολύ σπάνια μια συνάρτηση έχει πάνω από τέσσερις παραμέτρους, και σχεδόν ποτέ πάνω από έξι. Έτσι, στους σύγχρονους επεξεργαστές, οι παραδοχές αυτές έχουν τροποποιηθεί, και καθορίζουν ότι οι πρώτες k παράμετροι μιας συνάρτησης (όπου k είναι συνήθως 4 ή 6) περνάνε μέσα από καταχωρητές, και μόνο οι υπόλοιπες μέσα από τη στοίβα. Βέβαια, δημιουργείται το ερώτημα, τι θα γίνει αν μια συνάρτηση f που δέχτηκε μια παράμετρο μέσω ενός καταχωρητή r καλέσει άλλη συνάρτηση g. Τότε η παράμετρος που δέχτηκε θα πρέπει να αποθηκευτεί στη στοίβα. Έτσι, πώς μειώθηκε ο αριθμός προσπελάσεων στη μνήμη; Στο παραπάνω ερώτημα μπορούν να δοθούν τέσσερις διαφορετικές απαντήσεις, που μπορούν να ισχύσουν ανάλογα με την περίπτωση: 1. Κάποιες συναρτήσεις δεν περιέχουν άλλες κλήσεις συναρτήσεων. Τέτοιες συναρτήσεις, που μάλιστα καλούνται πολύ συχνά ίσως πιο συχνά από συναρτήσεις που καλούν άλλες συναρτήσεις, δε χρειάζεται να αποθηκεύσουν καμία παράμετρο στη στοίβα. Ακόμα περισσότερο, αν οι τοπικές μεταβλητές μιας τέτοιας συνάρτησης αντιστοιχούνται όλες σε καταχωρητές, τότε αυτή δε δημιουργεί καν ΕΔ στη στοίβα εκτέλεσης, κάτι που οδηγεί σε σημαντική εξοικονόμηση εντολών και προσπελάσεων μνήμης. 2. Κάποιοι μεταγλωττιστές δεσμεύουν καταχωρητές λαμβάνοντας υπ όψη τις κλήσεις συναρτήσεων, ώστε να δεσμεύουν διαφορετικούς καταχωρητές σε συναρτήσεις που καλούνται μέσα από άλλες. Τότε, η συνάρτηση f μπορεί να αποφύγει τη χρήση της στοίβας για την αποθήκευση των παραμέτρων της πριν την κλήση της g. 3. Πολλές φορές, όταν έρθει η στιγμή της κλήσης, η συνάρτηση f έχει τελειώσει με τη χρήση της παραμέτρου που πέρασε μέσα από τον καταχωρητή r. Έτσι δε θα χρειαστεί να την

4 αποθηκεύσει στη στοίβα, και οποιαδήποτε επόμενη χρήση του r δε θα σχετίζεται με την παράμετρο αυτή. 4. Μερικές αρχιτεκτονικές υποστηρίζουν παράθυρα καταχωρητών, που αλλάζουν με κάθε κλήση συνάρτησης, ώστε να μην απαιτείται χρήση της στοίβας για αποθήκευση των παραμέτρων με κάθε κλήση. Πέρα από την ανάγκη αποθήκευσης της τιμής του r εξ αιτίας της κλήσης της συνάρτησης g, η f αποθηκεύει τον r στη στοίβα εκτέλεσης και όταν το πρόγραμμα χρησιμοποιεί τη διεύθυνση της παραμέτρου. Οι καταχωρητές δεν έχουν διεύθυνση μνήμης, κι επομένως, αν ο κώδικας της f περιέχει κάποιο δείκτη (pointer) στην παράμετρο που πέρασε μέσα από τον καταχωρητή r, η f θα πρέπει να αποθηκεύσει την τιμή της παραμέτρου στη στοίβα, απ όπου θα μπορεί να διαβαστεί με αποδεικτοδότηση του αντίστοιχου δείκτη. Για εύκολη επίλυση του παραπάνω προβλήματος, μπορούν όλες οι παράμετροι να δεσμεύουν διαδοχικές θέσεις στο ΕΔ της συνάρτησης, άσχετα αν οι θέσεις αυτές τελικά χρησιμοποιούνται από τον κώδικα ή όχι. Κάτι τέτοιο κάνει η γλώσσα C, η οποία εκτός από δείκτες, υποστηρίζει και το μηχανισμό μεταβλητού αριθμού παραμέτρων, ο οποίος για να λειτουργήσει σωστά, προϋποθέτει ότι διαδοχικές παράμετροι βρίσκονται σε διαδοχικές θέσεις μνήμης. Πάντως, ένας καλύτερος τρόπος χρήσης της διεύθυνσης μιας παραμέτρου είναι με το μηχανισμό περάσματος κατ αναφορά. Με το μηχανισμό αυτό, το πρόγραμμα δεν έχει τη δυνατότητα άμεσης προσπέλασης της διεύθυνσης της παραμέτρου, κάτι που γίνεται στη C με τη βοήθεια δεικτών, αλλά μόνο έμμεσης προσπέλασης στη διεύθυνση αυτή μέσα από αναθέσεις στην παράμετρο. Το πέρασμα κατ αναφορά υλοποιείται απλά με πέρασμα της διεύθυνσης της πραγματικής παραμέτρου που προφανώς πρέπει να είναι τιμή αριστερής προσπέλασης. Κάθε αναφορά στην παράμετρο ως τιμή δεξιάς προσπέλασης απαιτεί μια παραπάνω προσπέλαση μνήμης για την αποδεικτοδότησή της, ενώ κάθε ανάθεση στην παράμετρο γίνεται με αποθήκευση στη διεύθυνση που πέρασε κατά την κλήση. Με το μηχανισμό αυτό εξασφαλίζεται ότι μετά την επιστροφή από τη συνάρτηση, δε θα παραμένει καμία ξεκρέμαστη αναφορά σε παράμετρό της. Διεύθυνση επανόδου Όταν μια συνάρτηση f ολοκληρώνει την εκτέλεσή της, πρέπει να επιστρέψει στη συνάρτηση που την κάλεσε. Έτσι, πρέπει να γνωρίζει σε ποια διεύθυνση κώδικα θα μεταφέρει τον έλεγχο ροής. Αν η διεύθυνση από την οποία έγινε η κλήση της f ήταν η διεύθυνση Α, τότε η ζητούμενη διεύθυνση είναι συνήθως η διεύθυνση Α+1, και λέγεται διεύθυνση επανόδου. Παλαιότερα, οι διευθύνσεις επανόδου αποθηκεύονταν στη στοίβα εκτέλεσης κατά τις κλήσεις συναρτήσεων. Σήμερα είναι πιο αποδοτικό κάτι τέτοιο να γίνεται μέσα από καταχωρητές. Εκτός από τη μείωση του αριθμού προσπελάσεων μνήμης, αυτό εξυπηρετεί και το υλικό, μια που ο μηχανισμός σύνδεσης, δηλαδή της αποθήκευσης της διεύθυνσης επανόδου, υλοποιείται ευκολότερα σε κάποιον καταχωρητή, παρά σε κάποια διεύθυνση μνήμης. Έτσι, οι σύγχρονοι επεξεργαστές, με κάθε εντολή κλήσης συνάρτησης, αποθηκεύουν τη διεύθυνση επανόδου σε κάποιον καταχωρητή. Από εκεί και πέρα, ισχύουν όσα αναφέρθηκαν πιο πάνω, για οποιαδήποτε ανάγκη αποθήκευσης της τιμής του καταχωρητή στη στοίβα. Ειδικότερα, αν ο καταχωρητής είναι προκαθορισμένος, όπως για παράδειγμα συμβαίνει με την ε- ντολή jal της αρχιτεκτονικής MIPS, τότε κάθε κλήση συνάρτησης μέσα από την f απαιτεί την αποθήκευση της τιμής του καταχωρητή πριν την κλήση, μια που διαφορετικά η τιμή του θα χαθεί. Μετά την επιστροφή στην f, η διεύθυνση επανόδου πρέπει να επαναφορτωθεί από τη στοίβα, ώστε να χρησιμοποιηθεί ως διεύθυνση προορισμού με την ολοκλήρωση της f για την επιστροφή στη συνάρτηση που την έχει καλέσει. Μεταβλητές του ΕΔ Σύμφωνα με όσα έχουμε πει πιο πάνω, οι μοντέρνες παραδοχές που χρησιμοποιούνται σε μια κλήση συνάρτησης απαιτούν οι παράμετροι να περνάνε μέσω καταχωρητών, η διεύθυνση επανόδου να αποθηκεύεται σε καταχωρητή, αλλά και η τιμή αποτελέσματος να αποθηκεύεται

5 σε καταχωρητή. Επίσης, πολλές από τις τοπικές μεταβλητές αντιστοιχούνται σε καταχωρητές. Τελικά, έχουμε πραγματική χρήση του ΕΔ στη στοίβα εκτέλεσης, μόνο αν είναι απαραίτητο, και αυτό θα συμβαίνει σε μια από τις ακόλουθες περιπτώσεις: Η τοπική μεταβλητή περνάει σε άλλη συνάρτηση κατ αναφορά, οπότε πρέπει να έχει διεύθυνση μνήμης. Η διεύθυνση μιας τοπικής μεταβλητής χρησιμοποιείται άμεσα από τον κώδικα, όπως για παράδειγμα με τον τελεστή & της γλώσσας C. Η τοπική μεταβλητή προσπελαύνεται από κάποια φωλιασμένη συνάρτηση, και ο μεταγλωττιστής δε λαμβάνει υπ όψη τις κλήσεις συναρτήσεων στη δέσμευση καταχωρητών. Η τιμή της μεταβλητής δε χωράει σε καταχωρητή, και ο μεταγλωττιστής δε χρησιμοποιεί πολλαπλούς καταχωρητές για αποθήκευση μιας τέτοιας τιμής. Η μεταβλητή δεν είναι βαθμωτή, οπότε είναι απαραίτητο να γίνουν υπολογισμοί για την εύρεση της διεύθυνσης κάποιου στοιχείου ή πεδίου αυτής, με βάση την αρχική διεύθυνση της μεταβλητής. Ο καταχωρητής που περιέχει την τιμή της μεταβλητής θα χρειαστεί για κάποια άλλη λειτουργία, όπως για παράδειγμα το πέρασμα κάποιας παραμέτρου, οπότε η τιμή αυτή πρέπει είτε να μεταφερθεί σε άλλον καταχωρητή, είτε να αποθηκευτεί στη στοίβα. Η παρούσα συνάρτηση έχει τόσες πολλές τοπικές μεταβλητές που είναι ταυτόχρονα ε- νεργές και δε χωράνε σε καταχωρητές. Τότε, ο αλγόριθμος δέσμευσης καταχωρητών δημιουργεί προσωρινές μεταβλητές που τις διαχέει στη στοίβα. Ας σημειωθεί ότι οι πιο πολλές από τις παραπάνω περιπτώσεις παρουσιάζονται μετά από τη δήλωση της αντίστοιχης τοπικής μεταβλητής. Έτσι, είναι αδύνατο να ξέρουμε τη στιγμή που συναντάμε μια δήλωση, αν η μεταβλητή που δηλώνεται θα χρησιμοποιήσει τη στοίβα εκτέλεσης ή όχι. Επομένως, είναι βολικό να δεσμεύουμε χώρο στο ΕΔ με κάθε δήλωση μεταβλητής, άσχετα αν αργότερα ο αλγόριθμος δέσμευσης καταχωρητών την αντιστοιχήσει σε κάποιον καταχωρητή και η θέση που δεσμεύτηκε δε χρησιμοποιηθεί. Σύνδεσμοι προσπέλασης Σε γλώσσες που επιτρέπουν φωλιασμένες δηλώσεις συναρτήσεων, είναι σύνηθες εσωτερικά δηλωμένες συναρτήσεις να αναφέρονται σε μη τοπικές μεταβλητές που είναι δηλωμένες σε εξωτερικές συναρτήσεις. Για παράδειγμα, στον κώδικα Pascal: type tree = record key: string; left: ^tree; right: ^tree; procedure prettyprint(tree : tree); var output: string; procedure write(s : string); output := concat(output,s); procedure show(n : integer; t : tree); procedure indent(s : string); var i: integer; for i := 1 to n do write( \t ); output := concat(output,s); write( \n ); if t = nil then indent(. ); else indent(t.key); show(n+1,t.left);

6 show(n+1,t.right); output := ; show(0,tree); print(output); η διαδικασία write αναφέρεται στη μη τοπική μεταβλητή, ενώ η διαδικασία indent αναφέρεται στις μη τοπικές μεταβλητές n και output. Για να επιτευχθεί τέτοια αναφορά, πρέπει οι φωλιασμένες διαδικασίες να έχουν προσπέλαση όχι μόνο στο δικό τους ΕΔ, αλλά και στα ΕΔ άλλων διαδικασιών. Μία μέθοδος που χρησιμοποιείται για την επίλυση αναφοράς μη τοπικών μεταβλητών είναι βασισμένη στους συνδέσμους προσπέλασης. Αν η γλώσσα προγραμματισμού υποστηρίζει στατικό δέσιμο στις κλήσεις συναρτήσεων, όπως συμβαίνει στην Pascal, ο σύνδεσμος προσπέλασης για μια συνάρτηση f είναι η διεύθυνση στη στοίβα εκτέλεσης στην οποία αρχίζει το ΕΔ της συνάρτησης που περικλείει την f. Εφ όσον η f είναι φωλιασμένη στη συνάρτηση αυτή, δεν είναι ορατή από άλλες συναρτήσεις, κι επομένως αν η f είναι ενεργοποιημένη, τότε θα είναι ενεργοποιημένη και η συνάρτηση που την περικλείει. Για την επίλυση αναφοράς από την f μιας μη τοπικής μεταβλητής που είναι δηλωμένη εξωτερικά της περικλείουσας συνάρτησης, θα πρέπει η κώδικας να ακολουθήσει επαναληπτικά τους συνδέσμους προσπέλασης, μέχρι να φτάσει στο επίπεδο φωλιάσματος όπου δηλώνεται η μεταβλητή. Ο τελευταίος σύνδεσμος προσπέλασης που διαβάζεται δίνει τη διεύθυνση στην οποία αρχίζει το ΕΔ στο οποίο είναι αποθηκευμένη η μεταβλητή. Έτσι, στον πιο πάνω κώδικα θα έχουμε για παράδειγμα: 1. Η διαδικασία prettyprint καλεί τη διαδικασία show, οπότε αποθηκεύει την αρχική διεύθυνση του δικού της ΕΔ στη θέση του συνδέσμου προσπέλασης της δεύτερης. 2. Η διαδικασία show καλεί τη διαδικασία indent, οπότε αποθηκεύει την αρχική διεύθυνση του δικού της ΕΔ στη θέση του συνδέσμου προσπέλασης της indent. 3. Η διαδικασία show καλεί τον εαυτό της αναδρομικά, οπότε αντιγράφει το δικό της σύνδεσμο προσπέλασης στη θέση του συνδέσμου προσπέλασης στο ΕΔ της αναδρομικής κλήσης. 4. Η διαδικασία indent αναφέρεται στη μη τοπική μεταβλητή n, η οποία είναι δηλωμένη στη διαδικασία show. Η αναφορά γίνεται σε διεύθυνση σχετική με την τιμή του δικού της συνδέσμου προσπέλασης, ο οποίος δείχνει στο ΕΔ της διαδικασίας show. Η μετατόπιση στην προσπέλαση είναι γνωστή στο μεταγλωττιστή από τη μετάφραση της τελευταίας. 5. Η διαδικασία indent καλεί τη διαδικασία write. Εφ όσον η write περιέχεται στην prettyprint και όχι στην indent, ο σύνδεσμος προσπέλασής της πρέπει να δείχνει στο ΕΔ της prettyprint. Ο κώδικας θα πρέπει να ακολουθήσει το σύνδεσμο προσπέλασης της indent στο ΕΔ της show, ώστε να αντιγράψει στη θέση του συνδέσμου προσπέλασης της write τον σύνδεσμο προσπέλασης της show, που είναι στο ίδιο βάθος φωλιάσματος με την write. Και η show και η write περικλείονται από την ίδια διαδικασία prettyprint, αλλιώς η write δε θα ήταν ορατή στην indent. 6. Η διαδικασία indent αναφέρεται στη μη τοπική μεταβλητή output, η οποία είναι δηλωμένη στη διαδικασία prettyprint. Για να βρει τη μεταβλητή αυτή, ακολουθεί το σύνδεσμο προσπέλασής της στο ΕΔ της show, απ όπου ακολουθεί το σύνδεσμο προσπέλασης της show στο ΕΔ της prettyprint. Η αναφορά τώρα μπορεί να γίνει σε διεύθυνση σχετική με την τιμή του τελευταίου συνδέσμου προσπέλασης που διάβασε. Από τα παραπάνω συμπεραίνουμε ότι σε γλώσσες που υποστηρίζουν φωλιασμένες συναρτήσεις με στατικό δέσιμο, σε κάθε κλήση συνάρτησης και σε κάθε αναφορά σε μη τοπική μεταβλητή ο κώδικας πρέπει να υλοποιεί μια αλυσίδα από μηδέν ή περισσότερες αναγνώσεις από τη στοίβα εκτέλεσης διαδοχικών συνδέσμων προσπέλασης. Το μήκος της αλυσίδας είναι η διαφορά στο βάθος φωλιάσματος των συναρτήσεων που εμπλέκονται στην κλήση ή στην α- ναφορά στη μεταβλητή.

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,

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

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

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

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

Εγγραφές Δραστηριοποίησης

Εγγραφές Δραστηριοποίησης Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η. ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

Εγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)

Εγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting) Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με

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

Εγγραφές Δραστηριοποίησης

Εγγραφές Δραστηριοποίησης Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Παρουσίαση Εργαστηρίου 5 ιδάσκων: ρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; } Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια. Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 4 Εαρινό Εξάμηνο 2012-2013 Στόχοι του εργαστηρίου Χρήση στοίβας Συναρτήσεις ΠΡΟΣΟΧΗ: Αρχίστε νωρίς

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Εγγραφές ραστηριοποίησης

Εγγραφές ραστηριοποίησης Εγγραφές ραστηριοποίησης Ερώτηση για δέσιµο Κατά την εκτέλεση του προγράµµατος, οι µεταβλητές δένονται (δυναµικά) µε τιµές Οι τιµές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι µεταβλητές πρέπει

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

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

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

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

{ int a = 5; { int b = 7; a = b + 3;

{ int a = 5; { int b = 7; a = b + 3; Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 1: Γλώσσες με δομή block Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

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

Δομημένος Προγραμματισμός

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

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

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

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

Συναρτήσεις-Διαδικασίες

Συναρτήσεις-Διαδικασίες ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 4 Συναρτήσεις-Διαδικασίες Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Διαδικασίες (procedures) Γνωστές και σαν υπορουτίνες (subroutines)

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός

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

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

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

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

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Προγραμματισμός Η/Υ Συναρτήσεις & Υποπρογράμματα ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Τμηματικός Προγραμματισμός Η επίλυση ενός προβλήματος διευκολύνεται

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση 6: Ασκήσεις Χειμερινού Εξαμήνου 2017-2018 (μέρος Β ) Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

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

Εργαστήριο 5. Εαρινό Εξάμηνο

Εργαστήριο 5. Εαρινό Εξάμηνο Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 5 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Χρήση στοίβας Αναδρομή Δομές δεδομένων Δυναμική

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

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

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

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

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

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 6 Αναδρομή Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Υπολογισμός Παραγοντικού n! n! = 1*2..(n-1)*n = if n

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

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΑΡΧΗ 1 ης ΣΕΛΙΔΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών Θέμα 1 ο Α. Να χαρακτηρίσετε κάθε μία από

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

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

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT ΘΕΩΡΙΑ Στο project αυτό έχουμε υλοποιήσει τις βασικές συναρτήσεις της stdlib της C malloc και free Η συνάρτηση malloc είναι η void *malloc(int

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

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

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE

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

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

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

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

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

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

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

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

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

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

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

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

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4 ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 4 Διαδικασίες Ι Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Διευθυνσιοδότηση διακλαδώσεων

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

MIPS functions and procedures

MIPS functions and procedures Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης MIPS functions and procedures Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Επικοινωνία:

Επικοινωνία: Σπύρος Ζυγούρης Καθηγητής Πληροφορικής Επικοινωνία: spzygouris@gmail.com Πως ορίζεται ο τμηματικός προγραμματισμός; Πρόγραμμα Εντολή 1 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή 5 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α ΚΥΡΙΑΚΗ 16/04/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΝΝΕΑ (9) ΕΚΦΩΝΗΣΕΙΣ Α1. Να χαρακτηρίσετε

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

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων Αρχιτεκτονική Υπολογιστών Εργασία Εξαµήνου: Προσοµοίωση ARM σε επίπεδο VHDL/Verilog 1. Μελέτη συνόλου εντολών και αρχιτεκτονικής ARM

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

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

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

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

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α A1. ΚΥΡΙΑΚΗ 16/04/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΔΕΚΑΠΕΝΤΕ (15) ΑΠΑΝΤΗΣΕΙΣ 1-Σωστό

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση

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

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

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

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ

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

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

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

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος Παραδείγματα αλγορίθμων: Η παρασκευή ενός κέικ Η εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών Η εκκίνηση ενός αυτοκινήτου Η πρωινή προετοιμασία για το

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

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

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

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

Συμβουλές και Μεθοδολογία Ασκήσεων Ψευδογλώσσας / ΓΛΩΣΣΑΣ

Συμβουλές και Μεθοδολογία Ασκήσεων Ψευδογλώσσας / ΓΛΩΣΣΑΣ Ψευδογλώσσας / ΓΛΩΣΣΑΣ Χρήση εντολών Εισόδου Εξόδου Α) Εντολές εισόδου Όσον αφορά στη Ψευδογλώσσα, για την κατάλληλη επιλογή εντολής εισόδου διαβάζουμε προσεχτικά την εκφώνηση. Αν η εκφώνηση αναφέρει «να

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1. Τοποθέτηση παραμέτρων 2. Μεταβίβαση ελέγχου στη διαδικασία 3. Λήψη πόρων αποθήκευσης 4. Εκτέλεση επιθυμητής εργασίας 5. Τοποθέτηση αποτελέσματος σε

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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