Σηµειώσεις Μεταγλωττιστές

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

Download "Σηµειώσεις Μεταγλωττιστές"

Transcript

1 Σηµειώσεις Μεταγλωττιστές 1. Eισαγωγή Στο κεφάλαιο αυτό θα περιγράψουµε τα στοιχεία ενός µεταγλωττιστή, το περιβάλλον εργασίας καθώς και ορισµένα εργαλεία λογισµικού για την κατασκευή µεταγλωττιστών. Στα επόµενα κεφάλαια θα εξετάσουµε καθένα από αυτά τα στοιχεία πιο λεπτοµερειακά. 1.1 Γενικά Απλά ένας µεταγλωττιστής είναι ένα πρόγραµµα το οποίο διαβάζει ένα πρόγραµµαγραµµένο σε µια γλώσσα (Source γλώσσα) και το µεταφράζει σε ένα ισοδύναµο πρόγραµµα σε µια άλλη γλώσσα (target γλώσσα). source Πηγαίος κώδικας µεταγλωττιστής target Στόχος Μηνύµατα Λαθών Σχήµα 1.1 H κατασκευή ενός µεταγλωττιστή είναι µια πολύπλοκη διαδικασία. Eιδικά για τους πρώτους µεταγλωττιστές (δεκαετία του 50) απαιτήθηκε τεράστιος αριθµός ανθρωποµηνών. Aναφέρεται ότι ο πρώτος FORTRAN µεταγλωττιστής χρειάστηκε 18 ανθρωποέτη. Aπο τότε αφενός µεν έχουν συστηµατικοποιηθεί οι τεχνικές για τον σχεδιασµό των διαφόρων διαδικασιών που εκτελούνται από ένα µεταγλωττιστή και αφετέρου έχουν αναπτυχθεί πολλά εργαλεία λογισµικού. Eδω θα θέλαµε να αναφερθούµε στους interpreters (διερµηνείς), επειδή καµία φορά υπάρχει σύγχυση µεταξύ interpreter και µεταγλωττιστή. Eνας interpreter αντί να παράγει ένα πρόγραµµα που θα είναι η µετάφραση όλου του προγράµµατος εισόδου αναλύει, µεταφράζει και εκτελεί άµεσα τις εντολές του προγράµµατος εισόδου µία-µία. Οι interpreters χρησιµοποιούνται συχνά σε command γλώσσες αφού κάθε τελεστής µιας τέτοιας γλώσσας συνήθως ενεργοποιεί µια πολύπλοκη ρουτίνα. (π.χ. editor, µεταγλωττιστή). Πολλές φορές όµως υπάρχουν και ανώτερες γλώσσες προγραµµατισµού οι οποίες λειτουργούν µε interpreter (π.χ. APL). 1.2 Στάδια µετάφρασης Τα στάδια της µετάφρασηςενόςπρογράµµατος θα µπορούσαν να χωριστούν σε δύο στην ανάλυση και στη σύνθεση. Kατα την ανάλυση το πρόγραµµα εισόδου διαβάζεται, αναγνωρίζονται τα συστατικά µέρη του και δηµιουργείται ένας ενδιάµεσος κώδικας, που είναι απεικόνιση του προγράµµατος εισόδου. Hσύνθεση δηµιουργεί από τον ενδιάµεσο κώδικα πρόγραµµα ένα πρόγραµµα ισοδύναµο µε αυτό της εισόδου, γραµµένο στην επιθυµητή γλώσσα (π.χ. assembler, γλώσσα µηχανής). Αυτός όµως ο διαχωρισµός είναι πολύ γενικός. Eνας µεταγλωττιστής µεταφράζει σε διαδοχικές φάσεις. Tο στάδιο της ανάλυσης περιλαµβάνει 3 φάσεις: την Λεκτική Aναλυση, την Συντακτική Aναλυση και την Σηµασιολογική Aναλυση. Tο στάδιο της σύνθεσης περιλαµβάνει επίσης 3 φάσεις: Tην ηµιουργία Ενδιάµεσου Kωδικα, Βελτιστοποίηση Eνδιάµεσου Kωδικα και Παραγωγή Tελικου Kωδικα. Kάθε φάση µετατρέπει το αρχικό πρόγραµµα από µια παράσταση σε µια άλλη ισοδύναµη. Tο σχήµα 1.2 απεικονίζει τις φάσεις της µετάφρασης. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

2 Πηγαίο Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής ιαχείριση Πίνακα Συµβόλων Σηµασιολογικός Αναλυτής Παραγωγή Ενδιάµεσου Κώδικα ιαχείριση Λαθών Βελτιστοποίηση Ενδιάµεσου Κώδικα Παραγωγή Τελικού Κώδικα Τελικό Πρόγραµµα Σχήµα 1.2 Στο σχήµα 1.2 απεικονίζονται δυο επιπλέον διαδικασίες η ιαχείριση Πίνακα Συµβόλων και η ιαχείριση Λαθών που επικοινωνούν µε τις έξι φάσεις που προαναφέραµε. Θα ονοµάζουµε και αυτές φάσεις. ιαχείριση Πίνακα Συµβόλων Μια σηµαντική λειτουργία ενός µεταγλωττιστή είναι να καταγράφει τις µεταβλητές που χρησιµοποιούνται σε ένα πηγαίο πρόγραµµα και να συλλέγει πληροφορίες για τα χαρακτηριστικά των µεταβλητών αυτών (τύπος, πεδίο ισχύος, σε περίπτωση procedure ή function αριθµό παραµέτρων, κλπ). Οι πληροφορίες αποθηκεύονται σε µια δοµή στον πίνακα συµβόλων που επιτρέπει την γρήγορη αναζήτηση κάποιας µεταβλητής καθώς και την αποθήκευση και ανάκτηση πληροφοριών για την µεταβλητή. Όταν µια µεταβλητή αναγνωρίζεται από τον λεκτικό αναλυτή τοποθετείται στον πίνακα συµβόλων. Tα χαρακτηριστικά τους δεν µπορούν να αναγνωριστούν από τον λεκτικό αναλυτή. Π.χ. σε µια δήλωση µεταβλητών στη Pascal: var p, i, r : real; ο τύπος των Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

3 µεταβλητών δεν αναγνωρίζεται όταν τα ονόµατα τους διαβάζονται για πρώτη φορά από τον λεκτικό αναλυτή. Οι υπόλοιπες φάσεις συµπληρώνουν τα δεδοµένα του πίνακα. Αναγνώριση Λαθών και µηνύµατα Κάθε φάση µπορεί να συναντήσει λάθη. Όταν ένα λάθος αναγνωριστεί σε µια φάση πρέπει κάπως να αντιµετωπιστεί (ανάκαµψη - error recovery) ώστε να συνεχιστεί η µετάφραση του προγράµµατος. εν πρέπει να σταµατάει στο πρώτο λάθος. Hσυντακτική και σηµασιολογική ανάλυση αντιµετωπίζουν το µεγαλύτερο µέρος των λαθών. Λεκτική Ανάλυση Στην πρώτη φάση γίνεται η αναγνώριση των tokens του προγράµµατος. Token είναι κάθε µια στοιχειώδης νοηµατική µονάδα (ένα σύµβολο) που χρησιµοποιεί µια γλώσσα προγραµµατισµού π.χ δεσµευµένες λέξεις (while, if) ονόµατα µεταβλητών, τελεστές (<, <=, :=) κλπ. Oλεκτικός αναλυτής διαβάζει τους χαρακτήρες του πηγαίου προγράµµατος και από τα strings αναγνωρίζει λεκτικά (lexemes) που ανταποκρίνονται σε tokens (σύµβολα) της γλώσσας. Έτσι αναγνωρίζει σύµβολα όπως ".", ",", ":=', "begin". Σε µερικά σύµβολα θα προσθέσει και κάποια "λεκτική τιµή". Π.χ. όταν αναγνωρίσει µια µεταβλητή p θα επιστρέψει το σύµβολο (token) id1 αλλά θα τοποθετήσει στον πίνακα συµβόλων το λεκτικό p αν δεν είναι ήδη στον πίνακα. Hαπεικόνιση της εντολής: p:=i+r*60 που παράγει ο λεκτικός αναλυτής θα είναι η σειρά των επτά συµβόλων (tokens): id 1 := id 2 + id 3 * 60 H λεκτική ανάλυση λέγεται και γραµµική ανάλυση καθώς και σάρωση. Oλεκτικός αναλυτής αναγνωρίζει τα p, i, r σαν identifiers αναγνωρίζει τους τελεστές ":=", "+" και "*" καθώς και τον αριθµό 60. H έξοδος είναι επίσης γραµµική. Oπίνακας συµβόλων έχει διαµορφωθεί ως εξής: Πίνακας Συµβόλων Symbol Table Όνοµα Τύπος p r i Σχήµα 1.3 H λεκτική ανάλυση βρίσκει λάθη όταν οι χαρακτήρες που διαβάζει δεν σχηµατίζουν tokens της γλώσσας. Συντακτική ανάλυση Aκολουθεί η συντακτική ανάλυση (syntax analysis, λέγεται και parsing). Στη φάση αυτή από τη γραµµική έξοδο του λεκτικού αναλυτή δηµιουργούνται γραµµατικές φράσεις σύµφωνα µε τους κανόνες της γλώσσας. Συνήθως οι γραµµατικές αυτές φράσεις παριστάνoνται µε ένα δένδρο το οποίο λέγεται συντακτικό δένδρο (syntax tree ή parse tree). Στο παράδειγµα µας η έξοδος από τον συντακτικό αναλυτή θα δηµιουργήσει το κατωτέρω parse δένδρο: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

4 := id1 + id2 * id3 60 Σχήµα 1.4 Υπάρχουν και άλλου τύπου δένδρα που απεικονίζουν και τις γραµµατικές φράσεις (θα εξεταστούν αργότερα). H συντακτική ανάλυση βρίσκει λάθη όπου τα tokens δεν σχηµατίζουν επιτρεπόµενες δοµές σύνταξης της γλώσσας. Σηµασιολογική Ανάλυση Κατά τη σηµασιολογική ανάλυση το πρόγραµµα ελέγχεται για σηµασιολογικά λάθη. H σηµασιολογική ανάλυση χρησιµοποιεί την ιεραρχική δοµή της συντακτικής ανάλυσης για να αναγνωρίσει τους τελεστές και τις µεταβλητές στις εκφράσεις και στις εντολές. Kατα την σηµασιολογική ανάλυση γίνεται και ο έλεγχος των τύπων των µεταβλητών και δεδοµένων (type checking). O µεταγλωττιστής ελέγχει ότι οι µεταβλητές ενός τελεστή είναι τύπου που επιτρέπεται από την γλώσσα (π.χ. µπορεί µια γλώσσα να µην επιτρέπει πρόσθεση real και character µεταβλητής). Eπίσης, η σηµασιολογική ανάλυση φροντίζει για τις απαραίτητες µετατροπές όταν αυτές επιτρέπονται από τη γλώσσα (π.χ. πρόσθεση real και integer). Στο παράδειγµα µας ο σηµασιολογικός αναλυτής θα µας δώσει το κατωτέρω δένδρο: := id1 + id2 * id3 intoreal Σχήµα Aν υποθέσουµε ότι όλες οι µεταβλητές (p,i,r) είναι real τότε έχουµε τον τελεστή * να εφαρµόζεται σε ένα πραγµατικό και ένα ακέραιο. Στην περίπτωση αυτή ο ακέραιος πρέπει να µετατραπεί σε real και αυτό επιτυγχάνεται µε τον τελεστή intoreal. Mετα την συντακτική και σηµασιολογική ανάλυση ο πίνακας συµβόλων διαµορφώνεται Πίνακας Συµβόλων Symbol Table Όνοµα Τύπος p real r real i real Σχήµα 1.6 Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

5 H σηµασιολογική ανάλυση βρίσκει λάθη σε συντακτικά σωστές δοµές που όµως δεν είναι σηµασιολογικά σωστές (π.χ. πρόσθεση ακέραιας και λογικής µεταβλητής). Παραγωγή Ενδιάµεσου Κώδικα Aπό µια σηµασιολογικά σωστή έκφραση θα δηµιουργηθεί ένας ενδιάµεσος κώδικας, που µπορεί να έχει πολλές µορφές. Hενδιάµεση αυτή απεικόνιση µπορεί να θεωρηθεί σαν ένα πρόγραµµα για µια αφηρηµένη µηχανή. Πρέπει να έχει δύο χαρακτηριστικά: να παράγεται εύκολα και να µετατρέπεται εύκολα στη τελική γλώσσα. Mπορεί να είναι της µορφής "τριών διευθύνσεων κώδικα", όπου όλες οι εντολές τρεις operands, το πολύ µια πράξη και µια απόδοση τιµής. π.χ. στο παράδειγµα µας t 1 := intoreal(60) t 2 := id 3 *t 1 t 3 := id 2 +t 3 id 1 := t 3 Bελτιστοποίηση Eνδιάµεσου Kώδικα H φάση της βελτιστοποίησης έχει στόχο τη δηµιουργία κώδικα που θα έχει σαν αποτέλεσµα κώδικα γλώσσας µηχανής που θα τρέχει γρηγορότερα. Eτσι µπορεί να γίνει κατευθείαν η µετατροπή του 60 σε πραγµατικό και να ενοποιηθούν εντολές: t 1 := id 3 * 60.0 id 1 := id 2 +t 1 Παραγωγή Tελικού Kώδικα H τελευταία φάση του µεταγλωττιστή δηµιουργεί κώδικα σε γλώσσα µηχανής η σε Assembly. LDA id 3,R0 MUL 60.0, R0 ADD id 2,R0 STO id 1,R0 Συχνάοιφάσειςχωρίζονταισεfront end και σε back end. Oι πρώτεςέχουνσχέσηµε οτιδήποτε εξαρτάται από τη source γλώσσα και οι δεύτερες κυρίως από την µηχανή. Στην front end περιλαµβάνονται η λεκτική ανάλυση, η συντακτική ανάλυση, η δηµιουργία του symbol table, η σηµασιολογική ανάλυση και ο ενδιάµεσος κώδικάς. H back end περιλαµβάνει τη βελτιστοποίηση του κώδικα και τη δηµιουργία κώδικα µηχανής. ιάφορες φάσεις µιας µετάφρασης γίνονται σε ένα πέρασµα (διάβασµα της εισόδου). Π.χ. η λεκτική ανάλυση, η συντακτική ανάλυση, η σηµασιολογική ανάλυση και ο ενδιάµεσος κώδικας γίνονται στο ίδιο πέρασµα. Στην περίπτωση αυτή η ροή των tokens από τη λεκτική ανάλυση µεταφράζεται άµεσα σε ενδιάµεσο κώδικα. Tότε, ο συντακτικός αναλυτής έχει ενεργοποιηθεί και προσπαθεί να ανακαλύψει την γραµµατική δοµή των tokens που βλέπει. Λαµβάνει tokens όταν τα θέλει καλώντας τον λεκτικό αναλυτή να του δώσει το επόµενο token. Oταν βρει την γραµµατική δοµή καλεί τη ρουτίνα που δηµιουργεί τον ενδιάµεσο κώδικα. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

6 2.Λεκτική Aνάλυση 2.1 Eισαγωγή O σκοπόςτηςλεκτικήςανάλυσηςείναιηαναγνώρισητωνtokens. Eναςαπλόςτρόποςνα γράψει κανείς ένα λεκτικό αναλυτή είναι να φτιάξει ένα διάγραµµα µε τα tokens της γλώσσας και στη συνέχεια να µεταφράσειαυτότοδιάγραµµα σεπρόγραµµα που να βρίσκει τα tokens. Oι τεχνικές που θα αναφέρουµε για την ανάπτυξη λεκτικών αναλυτών µπορούν να εφαρµοσθούν και σε άλλες περιοχές όπως text formatters σε γλώσσες ερωτήσεων πληροφοριακών συστηµάτων (query languages) κλπ. Tο σχήµα 2.1 δίνει διαγραµµατικά την λειτουργικότητα ενός λεκτικού αναλυτή. Eίναι µια ρουτίνα που συνεργάζεται µε τον συντακτικό αναλυτή δίνοντας του tokens. Source Πρόγραµµα Λεκτικός Αναλυτής σύµβολο Φέρε επόµενο σύµβολο Συντακτικός Αναλυτής Πίνακας Συµβόλων Σχήµα 2.1 O λεκτικός αναλυτής παράλληλα εκτελεί και κάποιες δευτερεύουσες εργασίες. Mια από αυτές είναι να παρακάµψει τα σχόλια και τα κενά καθώς και σύµβολα όπως το newline. Mια άλληείναινασυσχετίσειταλάθηµε τοσηµείο του κώδικα που έχουν βρεθεί. Oρολογία Θα χρησιµοποιήσουµε τουςόρουςtoken, λεκτικό(lexeme) και πρότυπο(pattern). O πίνακας 2.2 δίνει µερικά παραδείγµατα. Σύµβολα- tokens Λεκτικά-lexemes Πρότυπα-patterns const const Οι χαρακτήρες const if If, IF, if, if Οι συνδυασµοί χαρακτήρων If,IF,if,iF Relation <,<=,=,>,>=,<> Οι συνδυασµοί χαρακτήρων <,<=, =, >, >=,<> id P, r, I, s5 γράµµα ακολουθούµενο από γράµµαηψηφίο num 3.14, 28, -.1E-3 Αριθµητική σταθερά Πίνακας 2.2 Τα tokens είναι τερµατικά σύµβολα της γραµµατικής. Tα λεκτικά είναι strings που ικανοποιώντας ένα πρότυπο προσδιορίζουν ένα token. Όταν περισσότερα από ένα λεκτικά ικανοποιούν ένα πρότυπο τότε ο λεκτικός αναλυτής πρέπει να δώσει κάποιες επιπλέον πληροφορίες στις επόµενες φάσεις. Oι πληροφορίες αυτές δίδονται µετιςτιµές κάποιων attributes (χαρακτηριστικών) που προσδιορίζουν το αντίστοιχο token. παραδείγµατος χάριν όταν στην PASCAL γράψουµε p:=i*r+2 τα tokens από το λεκτικό αναλυτή θα δοθούν ως εξής Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

7 < id, pointer στο symbol table στηθέσητουp> < τελεστής αντικατάστασης> <id, pointer στο symbol table στηθέσητουi> <τελεστής πολλαπλασιασµού> <id, pointer στο symbol table στηθέσητουr> <τελεστής πρόσθεσης> <num, αριθµητική τιµή 2> Σε µερικά tokens δεν χρειάζεται attribute. Tο num θα µπορούσε να έχει ένα pointer στο symbol table για την τιµή 2. O λεκτικός αναλυτής, λόγω του τρόπου που βλέπει το πρόγραµµα, βρίσκει πολύ λίγα λάθη. Tα λάθη του περιορίζονται όταν ένα πρότυπο δεν συµπίπτει µε κανένα από τα πρότυπα ενός token. Στην περίπτωση αυτή προσπερνάει χαρακτήρες µέχρι να βρει ένα καλά ορισµένο token. 2.2 Προσδιορισµός των tokens Για τον προσδιορισµό των token θα χρησιµοποιήσουµε τις κανονικές εκφράσεις. Eπειδή κάθε πρότυπο ταιριάζει σε ένα σύνολο από strings οι κανονικές εκφράσεις θα χρησιµοποιηθούν σαν ονόµατα για σύνολα από strings. Aλφάβητο (κλάση χαρακτήρων) είναι ένα πεπερασµένο σύνολο από σύµβολα. Π.χ. το σύνολο {0,1} είναι το δυαδικό αλφάβητο. Tο ASCII και το EBCDIC είναι παραδείγµατα αλφάβητων. Eνα string, πάνω σε ένα αλφάβητο, ορίζεται σαν µια πεπερασµένη ακολουθία από σύµβολα απόαυτότοαλφάβητο.mήκος του string (του s το συµβολίζουµε µε s ) ορίζουµε το πλήθος των συµβόλων του string. Π.χ. το string 'πατάτα' έχει µήκος 6. Tο κενό string, το συµβολίζουµε µε ε, είναι ένα ειδικό string µήκους 0. O παρακάτω πίνακας έχει κάποιους όρους που χρησιµοποιούνται στα strings. πρόθεµα(prefix) του s: είναι ένα string προκύπτει από το s όταν πάρουµε 0 η περισσότερα σύµβολα από την κεφαλή του s(π.χ. πατά είναι πρόθεµα του πατάτα) επίθεµα(suffix) του s: είναι το string που προκύπτει από το s όταν κόψουµε 0 η περισσότερα σύµβολα από την αρχή του s(π.χ τάτα είναι suffix του πατάτα) substring του s: είναι ένα string που προκύπτει από το s αν διαγράψουµε ένα πρόθεµα και ένα επίθεµα (το άτα είναι substring του s) κανονικό πρόθεµα, επίθεµα η substring του s: κάθε µη κενό string που είναι πρόθεµα αντίστοιχα επίθεµαηsubstring του s Aν ταx και y είναι strings τότε ο τελεστής concatenation των x και y, συµβολίζεται xy, oρίζεται το string που προκύπτει όταν το y προστεθεί στο τέλος του x. Π.χ. αν x= επί και y= βλεψη τότε xy= επίβλεψη. Αν θεωρήσουµε την concatenation σαν γινόµενο τότε µπορούµε να ορίσουµε ύψωση σε δύναµησαν: s 0 = ε i>0 s i =s i-1 s και επειδή εs=s είναι s 1 =s. Πράξεις σε γλώσσες Yπάρχουν ορισµένες πράξεις που γίνονται σε γλώσσες και που είναι χρήσιµες στη λεκτική ανάλυση. Παρακάτω ορίζονται ορισµένες πράξεις σε γλώσσες. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

8 Eνωση(union) των γλωσσών L και M(L M) : {s s L η s Μ Συνένωση(Concatenation) των L και M (LM): {st s L και t Μ Eγκλισµος (closure) της L(L * ): L * =L i το L * είναι 0 η περισσότερες συνενώσεις του L i=0 Θετικός εγκλεισµός(positive closure) της L, το L + µια η περισσότερες συνενώσεις του L (L + ): L + = L i i=1 Παράδειγµα: Έστω L={A,B,..,Z,a,b,...,z} και D={0,1,..,9}. Tα L και D µπορούµε να τα δούµε σαν αλφάβητα, το L τα κεφαλαία και τα µικρά λατινικά γράµµατα και το D τα ψηφία, αλλά και σαν γλώσσες µε strings µήκους 1. Mε τις παραπάνω πράξεις µπορούµε να ορίσουµε τιςπιοκάτωγλώσσεςαπότιςl και D. 1)L D το σύνολο των γραµµάτων και των ψηφίων 2)LD το σύνολο των strings που αποτελούνται από γράµµα ακολουθούµενο από ψηφίο. 3)L(L D) * είναιτοσύνολοτωνstrings που αποτελούνται από γράµµατα και ψηφία και αρχίζουν µε γράµµα. Kανονικές εκφράσεις Για την περιγραφή των tokens θα χρησιµοποιήσουµε ένασυµβολισµό που είναι γνωστός σαν κανονικές εκφράσεις (regural expressions). Mια κανονική έκφραση κατασκευάζεται από άλλες απλούστερες κανονικές εκφράσεις σύµφωνα µε ένα σύνολο από κανόνες. Kάθε κανονική έκφραση r ορίζει µια γλώσσα L(r). Oι κανόνες προσδιορίζουν πως σχηµατίζονται τα στοιχεία της L(r). Eστω ένα αλφάβητο Σ. Oι παρακάτω κανόνες ορίζουν κανονικές εκφράσεις υπεράνω του Σ. 1) Tο ε είναι κανονική έκφραση που παριστάνει το {ε}. 2) Aνα Σ τότε το α είναι κανονική έκφραση που παριστάνει το {α} δηλ. το string α. 3) Eστω r και s είναι κανονικές εκφράσεις που ορίζουν τις γλώσσες L(r) και L(s). Tοτε: α)tο (r) (s) είναι κανονική έκφραση που ορίζει την L(r) L(s) (ο τελεστής σηµαίνει διαζευκτικό ή) β)tο (r)(s) είναι κανονική έκφραση που ορίζει την L(r)L(s) γ)tο (r) * είναι κανονική έκφραση που ορίζει την (L(r)) * δ)tο (r) είναι κανονική έκφραση που ορίζει την L(r) (δηλ. µπορούµεναχρησιµοποιούµε επιπλέον παρενθέσεις στις κανονικές εκφράσεις) 4) Τίποτα άλλο δεν είναι κανονική έκφραση Mια γλώσσα που καθορίζεται από µια κανονική έκφραση λέγεται κανονικό σύνολο. Mπορούµε να αποφύγουµε την χρήση πολλών παρενθέσεων στις κανονικές εκφράσεις αν κάνουµε τις παρακάτω παραδοχές: 1) O τελεστής * έχει την µεγαλύτερη προτεραιότητα και είναι αριστερά προσεταιριστικός. 2) H συνένωση έχει την επόµενη προτεραιότητα και είναι αριστερά προσεταιριστική 3) O έχει την χαµηλότερη προτεραιότητα και είναι αριστερά προσεταιριστικός Με τις παραδοχές αυτές η (a) ((b) * (c)) είναι ισοδύναµη µε τηνa b * c. Παράδειγµα:Eστω το Σ={a,b} α)h η κανονική έκφραση a b ορίζει το σύνολο {a,b} β)h κανονική έκφραση (a b)(a b) ορίζει το σύνολο {aa,ab,ba,bb} γ)h κανονική έκφραση a a * b ορίζει το σύνολο των strings που έχουν στην αρχή ένα η περισσότερα a και τελειώνουν µε έναb. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

9 ύο κανονικές εκφράσεις που ορίζουν την ίδια γλώσσα λέγονται ισοδύναµες. Για τις κανονικές εκφράσεις ισχύουν οι κατωτέρω αλγεβρικές ιδιότητες (τα r,t και s είναι κανονικές εκφράσεις): r s = s r η είναι µεταθετική r (s t) = (r s) t η είναι προσεταιριστική (rs)t = r(st) η συνένωση είναι προσεταιριστική r(s t) = rs rt και (s t)r = sr tr η συνένωση είναι επιµεριστική πάνω στην εr=rε =r r * = (r ε) * r ** =r * Kανονικοί Oρισµοι Για ευκολία στους συµβολισµούς θα δίνουµε ονόµατα στις κανονικές εκφράσεις και θα χρησιµοποιούµεταονόµατααυτάσανσύµβολα. Eστω Σ ένα αλφάβητο από σύµβολα. Eνας κανονικός ορισµός είναι µια ακολουθία από ορισµούς της µορφής: d 1 r 1 d 2 r d n r n όπου κάθε d i είναι ένα διακριτό όνοµα και κάθε r i είναι µια κανονική έκφραση πάνω στα σύµβολα Σ {d1,d2,...,di-1} δηλ. το αλφάβητο και τα ονόµατα που ορίστηκαν προηγούµενα. Παραδείγµατα α)στην PASCAL οι µεταβλητές ορίζονται σαν το σύνολο των strings που αποτελούνται από γράµµατα και ψηφία και το πρώτο είναι γράµµα. Tο κατωτέρω είναι ένας κανονικός ορισµός για τις µεταβλητές: letter A B... Z a b... z digit id letter(letter digit) * β)oι αριθµοί χωρίς πρόσηµοστηνpascal είναι strings της µορφής 3456,3.14, 6.54E-2. O κατωτέρω κανονικός ορισµός αποτελεί ένα ακριβή προσδιορισµό αυτώντωνstrings. digit digits digit digit * fraction.digits ε exponent (E(+ - ε) digits) ε num digits fraction exponent Eπειδη ορισµένες δοµές συµβόλων εµφανίζονται συχνά στις κανονικές εκφράσεις χρησιµοποιούµε, για ευκολία, σύµβολα για αυτές. Tετοια σύµβολα είναι: 1) Για επανάληψη χρησιµοποιούµε το + που σηµαίνει µια η περισσότερες φορές. Aν r είναι µια κανονική έκφραση που ορίζει την L(r) τότε η (r) + ορίζει την (L(r)) +.Oτελεστής + σχετίζεται µε τον τελεστή * µε τις ακόλουθες αλγεβρικές ταυτότητες: r * =r + ε και r + =rr * 2) Mια η καµία εµφάνιση. Xρησιµοποιούµε τον τελεστή?. O συµβολισµός r? σηµαίνει r ε. Aν r είναι κανονική έκφραση τότε r? είναι µια κανονική έκφραση που ορίζει την L(r) {ε}. Mε τιςσυντοµογραφίες αυτές το τελευταίο παράδειγµα γράφεται και ως εξής: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

10 digit digits digit + fraction.digits)? exponent (E(+ -)? digits)? num digits fraction exponent 3) Tελος πολλές φορές για διάστηµα χαρακτήρων η ψηφίων χρησιµοποιείται ένας σύντοµος συµβολισµός όπως [a-z] αντί για a b... z. Eδω πρέπει να τονίσουµε ότι µερικές γλώσσες δεν µπορούν να περιγραφούν µε κανονικές εκφράσεις. Π.χ. το σύνολο των strings µε ίδιες δεξιές και αριστερές παρενθέσεις δεν µπορεί να περιγραφεί µε κανονικές εκφράσεις. 2.3 Aναγνώριση των tokens Eίδαµε µέχρι τώρα πως µπορούµε να προσδιορίσουµε τα tokens χρησιµοποιώντας κανονικούς ορισµούς. Πρέπει όµως να δούµε και πως αναγνωρίζονται τα tokens. Θα χρησιµοποιήσουµετηγραµµατική: stmt if expr then stmt if expr then stmt else stmt ε expr term relop term term term id num όπου τα τερµατικά if, then, else, relop, id και num δηµιουργούν σύνολα από strings που δίδονται από τους κατωτέρω κανονικούς ορισµούς: if if then then else else relop < <= = <> > >= id letter (letter digit) * num digit + (.digit + )?(E(+ -)?digit + )? όπου τα letter και digit είναι όπως ορίσθηκαν στο παράδειγµα στη 2.2. Για τη γλώσσα αυτή ο λεκτικός αναλυτής θα αναγνωρίσει τις λέξεις κλειδιά if,then, else, καθώς και τα λεκτικά που καθορίζονται από τα relop, id και num. Για απλούστευση θα υποθέσουµε ότι οι λέξεις κλειδιά είναι δεσµευµένες. Eπι πλέον υποθέτουµε ότι το κενό είναι σηµείο στίξης που καθορίζει τον χωρισµό των λεκτικών και αποτελείται από κενά, tabs και newlines. O λεκτικός αναλυτής διώχνει τα κενά αναγνωρίζοντας τα µε την κάτωθι κανονική έκφραση. delim blank tab newline ws delim + Oταν ο λεκτικός αναλυτής βρει ένα ws δεν γυρίζει token στο συντακτικό αναλυτή αλλά προχωρεί στην ανεύρεση του επόµενου token. O λεκτικός αναλυτής θα αποµονώσει τα λεκτικά και θα παράγει τα tokens και τις τιµές των attributes όπως δείχνει ο πιο κάτω πίνακας (για το τελευταίο παράδειγµα): Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

11 Kανονική Eκφραση Token Tιµη Attribute ws - - if if - then then - else else - id id δείκτης στο symbol table num num δείκτης στο symbol table < relop LT <= relop LE = relop EQ <> relop NE > relop GT >= relop GE Σαν ενδιάµεσο βήµα στη δηµιουργία του λεκτικού αναλυτή χρησιµοποιούµε µια µορφή διαγραµµάτων ροής τα διαγράµµατα µεταβάσεων (transition diagrams). Tα διαγράµµατα αυτά περιγράφουν την λειτουργία του λεκτικού αναλυτή όταν του ζητηθεί το επόµενο token από τον συντακτικό αναλυτή. Tο διάγραµµα µεταβάσεων είναι ένας γράφος όπου οι κόµβοι (παριστάνονται µε κύκλους) ονοµάζονται καταστάσεις. Oι καταστάσεις συνδέονται µε βέλη που λέγονται πλευρές. Aπο µια κατάσταση s φεύγουν βέλη µε ετικέτες(labels) που αντιστοιχούν στο χαρακτήρα που πρέπει να υπάρχει στην είσοδο για να ακολουθηθεί το αντίστοιχα βέλος που θα οδηγήσει στην επόµενη κατάσταση. Mια κατάσταση ορίζεται σαν αρχική (αρχή). Συµβολίζουµε τις τελικές καταστάσεις (εύρεση token) µε διπλό κύκλο. Tο σχήµα 2.2 είναι ένα διάγραµµα µεταβάσεων για το >=. αρχή > 0 6 = 7 άλλο 8 Σχήµα 2.2 * Tο αστεράκι στην τελική κατάσταση 8 ότι έχει αναγνωρίσει τον τελεστή > αλλάγιανατο βρει έχει διαβάσει ένα παρακάτω από την είσοδο σε αντίθεση µε την τερµατική κατάσταση 7. Tο σχήµα 2.3 είναι ένα διάγραµµα µεταβάσεων για το token relop. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

12 αρχή < = return (relop,le) = > άλλο > 3 4 * return return (relop,ne) (relop,lt) 5 return (relop,eq) 6 = 7 return (relop,ge) άλλο 8 * return (relop,gt) Σχήµα 2.3 Οι λέξεις κλειδιά µπορούν να θεωρηθούν εξαιρέσεις του κανόνα ότι ένα string από γράµµατα και ψηφία είναι id. Aντι να υπάρχουν εξαιρέσεις θεωρούµε τις λέξεις κλειδιά σαν µεταβλητές και στον πίνακα βρίσκεται η αντίστοιχη πληροφορία. Eποµένως ένα σηµαντικό σηµείο όσο αφορά την απόδοση είναι η οργάνωση του πίνακα ώστε να βρίσκονται γρήγορα οι πληροφορίες για τις λέξεις κλειδιά (ειδικά για τις πιο συχνά χρησιµοποιούµενες). Tο σχήµα 2.4 είναι ένα διάγραµµα µεταβάσεων για την αναγνώριση µεταβλητών και λέξεων κλειδιά. αρχή 9 letter 10 άλλο 11 return (gettoken(),install_id()) letter ή digit Σχήµα 2.4 H συνάρτηση gettoken επιστρέφει το αντίστοιχο token η δε install_id την τιµή της attribute. H δεύτερη επιστρέφει ένα δείκτη στο symbol table. Oρισµένα προβλήµατα προκύπτουν στην κατασκευή ενός λεκτικού αναλυτή για την αναγνώριση ενός αριθµού χωρίς πρόσηµο όπως ορίζεται από την κανονική έκφραση: num digit + (.digit + )?(E(+ -)?digit + )? Πρέπει να εξετασθεί το λεκτικό µε τοµεγαλύτερο µήκος που να ταιριάζει. Π.χ. δεν µπορεί να σταµατήσει ο λεκτικός αναλυτής µόλις αναγνωρίσει το 45 αν η είσοδος είναι 45.67E6. Eτσι χρησιµοποιούµε τρία διαγράµµατα µεταβάσεων, ένα για τους ακέραιους, ένα για τους πραγµατικούς και ένα για τους πραγµατικούς σε εκθετική µορφή όπως δείχνει το σχήµα 2.5. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

13 digit digit digit αρχή 12 digit digit 15 E 16 +Ë - 17 digit 18 άλλο 19 * E digit digit digit αρχή 20 digit digit 23 άλλο 24 * αρχή digit digit άλλο 27 * Σχήµα 2.5 O λεκτικός αναλυτής πρέπει να δοκιµάσει τα διαγράµµατα αυτά στη σειρά 12, 20, 25. Tέλος το διάγραµµα 2.6 αντιστοιχεί στην αναγνώριση των κενών. αρχή 28 delim 29 delim άλλο 30 * Σχήµα 2.6 Mια ακολουθία τέτοιων διαγραµµάτων µπορεί να µετατραπεί σε πρόγραµµα για αναζήτηση των tokens. Σε κάθε κατάσταση αντιστοιχεί ένας κώδικας και οι καταστάσεις εξετάζονται µε τη σειρά αρίθµησης. Aν υπάρχουν βέλη που ξεκινούν από µια κατάσταση τότε ο κώδικας διαβάζει τον επόµενο χαρακτήρα και αν αυτός ανήκει σε κάποιο από τα σύνολα που προσδιορίζονται από τα βέλη που ξεκινούν από αυτή την κατάσταση τότε το πρόγραµµα µεταφέρει control στον κώδικα που αντιστοιχεί στην κατάσταση αυτή. ιαφορετικά αν το βέλος οδηγεί σε τερµατική κατάσταση τότε έχει βρεθεί ένα token. επιλέγει το βέλος που θα ακολουθήσει. Aν δεν συµβαίνει τίποτε από αυτά έχουµε αποτύχει στην αναζήτηση συγκεκριµένου token και χρειάζεται backtrack σε προηγούµενη κατάσταση Lex µια γεννήτρια λεκτικών αναλυτών OLexείναι ένα πρόγραµµα το οποίο διαβάζει ένα αρχείο στο οποίο έχει προσδιορισθεί ένας λεκτικός αναλυτής και δηµιουργεί ένα λεκτικό αναλυτή. Για την ώρα αυτός ο λεκτικός αναλυτής είναι σε γλώσσα C. O Lex συνεργάζεται µε τονyacc (ένα πρόγραµµα που όπως θα δούµε πιο κάτω δηµιουργεί parsers) όπως δείχνει το σχήµα 2.7. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

14 Lex προσδιορισµός Yacc προσδιορισµός Lex Yacc Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής Λεκτικά λάθη Σχήµα 2.7 Συντακτικά λάθη Eνα πρόγραµµα Lex αποτελείται από τα εξής µέρη: ορισµοί %% Lex κανονικές εκφράσεις και αντίστοιχες ενέργειες %% Συναρτήσεις που ορίζει ο χρήστης Oι ενέργειες και οι συναρτήσεις που ορίζει ο χρήστης Πρέπει (για το σύστηµα που θα χρησιµοποιήσετε) να γραφούν σε C. Oι κανονικές εκφράσεις ορίζονται µε ένα τρόπο που µοιάζει αρκετά µε τον τρόπο που αναπτύχθηκαν στο κεφάλαιο αυτό. Eδω θα δώσουµε ένα Παράδειγµα και στις ασκήσεις θα αναπτυχθεί λεπτοµερειακά ο Lex. Eστω οι εξής κανόνες: expr integer * integer integer + integer integer - integer integer / integer Tο παράδειγµα αυτό λεει ότι µια έκφραση είναι το άθροισµα το γινόµενο η διαφορά η διαίρεση δύο ακεραίων. TοαρχείοτουLex θα είναι: %% [0-9]+ {return(int); } [-*+/] {return(opr);} [\t] ;. {printf("lex error\n"); exit(-1); } %% yywrap() { return(1) } Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

15 2.5 Aσκησεις 1 Πόσα είναι τα: α)προθέµατα β)επιθέµατα γ)sustrings Σε ένα string µήκους n. 2 Περιγράψτε τις γλώσσες που προσδιορίζουν οι κατωτέρω κανονικές εκφράσεις: α)0(0 1)*0 β)((ε 0)1*)* γ) (0 1)*0(0 1)(0 1) 3 Γράψτε ένα Lex πρόγραµµα το οποίο να διαβάζει ένα πρόγραµµα Pascal και να αντικαθιστά κάθε δήλωση integer µε real. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

16 3.Συντακτική Aνάλυση 3.1 Eισαγωγή Kάθε γλώσσα προγραµµατισµού έχει κανόνες που περιγράφουν µε ακρίβεια την συντακτική δοµή των προγραµµάτων. H σύνταξη αυτή µπορεί να περιγραφεί µε γραµµατικές µη εξαρτώµενες από τα συµφραζόµενα (context free grammar) η σε BNF (Backus-Naur-Form) µορφή. Oι γραµµατικές προσφέρουν µεγάλα πλεονεκτήµατα τόσο στο σχεδιασµό γλωσσών όσο και στη κατασκευή αντίστοιχων µεταγλωττιστών. Mια γραµµατική δίνει τη δυνατότητα να περιγραφεί η σύνταξη µιας γλώσσας µε ακρίβεια. Aπο µερικές γραµµατικές µπορούµε να κατασκευάσουµε αυτόµατα αποτελεσµατικούς συντακτικούς αναλυτές. Στη δοµή ενός µεταγλωττιστή που περιγράψαµε στο κεφάλαιο 1 ο συντακτικός αναλυτής λαµβάνει tokens από το λεκτικό αναλυτή και αποφαίνεται αν το string που εξετάζεται µπορεί να παραχθεί από τη γραµµατική της γλώσσας η να βρει συντακτικά λάθη (π.χ. αριθµητική έκφραση µε µη ισοζυγισµένες παρενθέσεις). Στο σχήµα 3.1 φαίνεται η λειτουργία του συντακτικού αναλυτή. Πρακτικά κατά την διάρκεια της συντακτικής ανάλυσης µπορεί να γίνεται και κάποιος έλεγχος τύπου µεταβλητών (type checking) καθώς και άλλες εργασίες σηµασιολογικής ανάλυσης και τέλος δηµιουργία ενδιάµεσου κώδικα. Source πρόγραµµα Λεκτικός Αναλυτής σύµβολο Φέρε επόµενο σύµβολο Συντακτικός Αναλυτής Συντακτικό δένδρο (parse tree) Επόµενα στάδια Πίνακας Συµβόλων Σχήµα 3.1 Oι πιο πολύ χρησιµοποιούµενες µέθοδοι στους µεταγλωττιστήs χαρακτηρίζονται σαν από top-down (απότογενικόστοειδικό) ησανbottom-up (απότοειδικόστογενικό). Oι topdown χτίζουν συντακτικά δένδρα ξεκινώντας από πάνω(ρίζα) ενώ οι bottom-up αρχίζουν από τα φύλλα και προχωρούν προς τη ρίζα. Oι αποτελεσµατικές top-down και bottom-up µέθοδοι λειτουργούν µόνο σε µερικές κλάσεις γραµµατικών. Oµως µερικές από αυτές τις γραµµατικές, όπως οι LL και η LR, είναι αρκετές για την περιγραφή των συντακτικών δοµών των περισσοτέρων γλωσσών. 3.2 Context free grammars (γραµµατικές µη εξαρτώµενες από τα συµφραζόµενα) Μια context free grammar (θα τη λέµε γραµµατική στα επόµενα) αποτελείται από τερµατικά σύµβολα, µητερµατικά σύµβολα, ένα αρχικό σύµβολο και παραγωγές. α) Tα τερµατικά είναι τα βασικά σύµβολα από τα οποία σχηµατίζονται τα strings. Συνώνυµο του τερµατικού συµβόλου είναι το token. β)mητερµατικά είναι συντακτικές µεταβλητές που παριστάνουν σύνολα από strings. γ) Eνα µη τερµατικό σύµβολο καθορίζεται σαν αρχικό και το σύνολο των strings που ορίζει είναι η γλώσσα που προσδιορίζεται από τη γραµµατική αυτή. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

17 δ) Eνα σύνολο από παραγωγές όπου κάθε παραγωγή αποτελείται από ένα µη τερµατικό που λέγεται αριστερό µέρος της παραγωγής, ένα βέλος και µια ακολουθία από τερµατικά και µη τερµατικά που λέγεται το δεξιό µέρος της παραγωγής. Oι παραγωγές µίας γραµµατικής καθορίζουν τον τρόπο µε τον οποίο τα τερµατικά και µη τερµατικά µπορούν να συνδυασθούν για τον σχηµατισµό τωνstrings. Παράδειγµα: Hκατωτέρω γραµµατική ορίζει απλές αριθµητικές εκφράσεις: expr expr op expr expr ( expr ) expr -expr expr id op + op - op * op / op Στη γραµµατική αυτή τα σύµβολα id, +,-,*,/,, ( και ) είναι τερµατικά. Tα σύµβολα expr, και op είναι µη τερµατικά από τα οποία το expr είναι το αρχικό σύµβολο. Για ευκολία θα συµφωνήσουµεναχρησιµοποιούµε τονεξήςσυµβολισµό: 1) Eίναι τερµατικά τα κατωτέρω σύµβολα: α)tα πρώτα γράµµατα µικρά του λατινικού αλφάβητου (a,b,c...) β)oι τελεστές +,-,... γ) Σηµεία στίξης (κόµµα, παρένθεση κλπ) δ)tαψηφία(0,1,...9) ε) Strings µεέντοναγράµµατα (id, if, when) 2) Eίναι µητερµατικά: α)kεφαλαία λατινικά της αρχής του αλφάβητου (A,B,C) β)tογράµµα S που συνήθως είναι το αρχικό σύµβολο. γ)mικρα γράµµατα µε πλάγια γραφή (expr) 3) Kεφαλαία γράµµατα στο τέλος του λατινικού αλφάβητου (X,Y,Z) παριστάνουν σύµβολα της γραµµατικής δηλ. τερµατικά και µητερµατικά σύµβολα. 4) Tα µικρά γράµµατα προς το τέλος του λατινικού αλφάβητου (u,v,...,z) παριστάνουν strings από τερµατικά. 5)Mικρα ελληνικά γράµµατα strings από σύµβολα της γραµµατικής (π.χ. µια παραγωγή γενικά µπορεί να γραφεί A α και σηµαίνει ότι υπάρχει ένα µη τερµατικό A στο αριστερό µέλος µιας παραγωγής και ένα string από σύµβολα της γραµµατικής στο δεξιό. 6)Oταν έχουµε παραγωγές A α 1,A α 2...A α k, µε τοa στο αριστερό µέρος τότε γράφεται και A α 1 α 2... α k, 7)Tο αριστερό µέρος της πρώτης παραγωγής είναι το αρχικό σύµβολο. Mε τις παραδοχές αυτές το παραπάνω παράδειγµα γράφεται και: Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

18 E EAE (E) -E id A + - * / Mια παραγωγή θεωρείται σαν ένας κανόνας αναγραφής όπου το µη τερµατικό του αριστερού µέρους αντικαθίσταται από το string του δεξιού µέρους µιας παραγωγής. Aυτός ο τρόπος παραγωγής ταιριάζει στην top-down παραγωγή ενός συντακτικού δένδρου. Έστω η γραµµατική για αριθµητικές εκφράσεις µε ένα µη τερµατικό E που παριστάνει τις εκφράσεις: E E+E E*E (E) -E id (3.1) H παραγωγή E -E δηλώνει ότι µια έκφραση όταν έχει το σύµβολο - µπροστά εξακολουθεί να είναι έκφραση. Αυτό το γράφουµε E -E και λέµε ότι το E παράγει το -E. Γενικά λέµε αaβ αγβ αν A γείναιµια παραγωγή και τα α και β είναι strings της γραµµατικής. Aν α 1 α 2... α k λέµε ότι το α 1 παράγει το α κ.tοσύµβολο σηµαίνει παράγει σε ένα βήµα ενώ το * παράγει σε 0 η περισσότερα βήµατα και το + παράγει σε ένα η περισσότερα βήµατα. Eστω G µια γραµµατική µε ένα αρχικό σύµβολο S, µε το σύµβολο + µπορούµε να ορίσουµε την γλώσσα L(G) που δηµιουργείται από την G. Λέµε ότι ένα string τερµατικών w ανήκει στο L(G) τότε και µόνον τότε αν S + w. Tο w είναι µια πρόταση της G. Oταν S * α όπου το α περιέχει µη τερµατικά λέµε ότι το α είναι µια προτασιακή µορφή (sentential form) της G ενώαντοαδενέχειµη τερµατικά λέγεται πρόταση της G. To string -(id+id) είναι µια πρόταση της γραµµατικής (3.1) γιατί υπάρχει η παραγωγή: E -E -(E) -(E+E) -(id+e) -(id+id). ηλαδή E * (id+id). Eνα συντακτικό δέντρο µπορεί να θεωρηθεί µια γραφική παράσταση για µια παραγωγή. Tο σχήµα 3.2 δείχνει το συντακτικό δέντρο της ανωτέρω παραγωγής. Kαθε εσωτερικός κόµβος του δένδρου έχει ένα µη τερµατικό A και ότι τα παιδιά του κόµβου έχουν από αριστερά προς ταδεξιάτασύµβολα του δεξιού µέλους της παραγωγής µε την οποία αντικαταστάθηκε το A. Για να δούµε την σχέση µεταξύ συντακτικού δένδρου και παραγωγών ας θεωρήσουµε την παραγωγή: α 1 α 2... α k, όπου το α 1 είναι ένα µη τερµατικό A. Σε κάθε προτασιακή µορφή α i στην παραγωγή κατασκευάζουµε ένα συντακτικό δένδρο µε απόδοσητοα i.h διαδικασία εξακολουθεί επαγωγικά. Aρχικά το δέντρο έχει ένα κόµβο α 1 =A.Aςυποθέσουµε ότι κατασκευάσαµε τοδέντροµε απόδοσηα i-1 =X 1 X 2...X k (κάθε X i είναι τερµατικό η µη τερµατικό). Aς υποθέσουµε ότι το α i παράγεται από το α i-1 αν αντικατασταθεί το µη τερµατικό X j µεβ=y 1 Y 2...Y r. ηλαδή στο i βήµα η παραγωγή X j βεφαρµόζεται στο α i-1 για να δώσει α i =X 1 X 2...X j-1 β X j+1...x k. Tο j φύλλο µε µη τερµατικό σύµβολο X j τo επιλέγουµε από αριστερά. Εδώ θα µπορούσαµε να διαλέξουµε για αντικατάσταση οποιοδήποτε µη τερµατικό. Θα θεωρήσουµε αντικαταστάσεις όπου αντικαθίσταται το πιο αριστερό (leftmost derivations). Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

19 E - E ( E ) E + E id id Σχήµα 3.2 Aς εξετάσουµε τώρα το εξής παράδειγµα για τη γραµµατική (3.1). Eστω η πρόταση id+id*id. Για αυτό υπάρχουν δύο πιο αριστερές παραγωγές: E E+E id+e id+e*e id+id*e id+id*id όµως είναι σωστή και η: E E*E E+E*E id+e*e id+id*e id+id*id Tο σχήµα 3.3 δείχνει τα αντίστοιχα δένδρα E E + E (α) E E * E (β) id E * E E + E id id id id id Σχήµα 3.3 Το πρώτο δένδρο αντιστοιχεί στη παραδεκτή στις περισσότερες γλώσσες προτεραιότητα των τελεστών * και +. ηλαδή ο πολλαπλασιασµός έχει προτεραιότητα ως προς την πρόσθεση. Mια γραµµατική που παράγει περισσότερα από ένα συντακτικά δένδρα για µια πρόταση λέγεται ασαφής γραµµατική (ambiguous). Mια ασαφής γραµµατική παράγει περισσότερες από µια πιο αριστερές παραγωγές για µια πρόταση. 3.3 Σχεδιασµός γραµµατικής για µια γλώσσα Oι γραµµατικές είναι κατάλληλες για την περιγραφή των περισσοτέρων συντακτικών δοµών των γλωσσών. Ορισµένοι περιορισµοί, όπως ότι οι µεταβλητές πρέπει να ορισθούν πριν χρησιµοποιηθούν δεν µπορούν να ορισθούν µε γραµµατικές. Στη λεκτική ανάλυση χρησιµοποιήσαµε κανονικές εκφράσεις θα µπορούσαµε να χρησιµοποιήσουµε γραµµατικές αφού κάθε δοµή που µπορεί να περιγραφεί µε µια κανονική Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

20 έκφραση µπορεί να περιγραφεί και από µια γραµµατική. Oι λόγοι που χρησιµοποιήσαµε κανονικές εκφράσεις είναι: α) Oι λεκτικοί κανόνες είναι απλοί που δεν χρειάζεται, τις περισσότερες φορές, να καταφύγουµε σεγραµµατικές. β) Πιο αποτελεσµατικοί λεκτικοί αναλυτές µπορούν να δηµιουργηθούν αυτόµατα από κανονικές εκφράσεις παρά από γραµµατικές γ) Οι κανονικές εκφράσεις αποτελούν εµπεριστατωµένο και εύκολο τρόπο παράστασης των tokens από τις γραµµατικές. Oταν γράφουµε µια γραµµατική (G) για µια γλώσσα (L) είναι σηµαντικό να δείξουµε ότι η γραµµατική δηµιουργεί την συγκεκριµένη γλώσσα. Mια τέτοια απόδειξη έχει δύο στάδια. Πρέπει να δείξουµε ότι κάθε string που δηµιουργείται από την G είναι string της L και ότι κάθε string της L µπορεί να δηµιουργηθεί από την G. Παράδειγµα: Eστω η γραµµατική: S (S)S ε H γραµµατική αυτή παράγει όλα τα strings µε ισοζυγισµένες δεξιές και αριστερές παρενθέσεις. Θα το αποδείξουµε µε επαγωγή. Θα δείξουµε πρώτα ότι κάθε string που παράγεται από το S έχει ισοζυγισµένες παρενθέσεις. Σα βασικό βήµα παρατηρούµε ότι το string που παράγεται σε ένα βήµα είναι το κενό που είναι ισοζυγισµένο. Aς υποθέσουµε ότι κάθε string που παράγεται σε λιγότερα από n βήµατα έχει ισοζυγισµένες παρενθέσεις και ας θεωρήσουµε µια πιο αριστερή παραγωγή µε ακριβώς n βήµατα. Mια τέτοια παραγωγή είναι της µορφής: S (S)S * (x)s * (x)y Oι παραγωγές για τα x και y θέλουν λιγότερα από n βήµατα και άρα έχουν ισοζυγισµένες παρενθέσεις.eποµένως το (x)y έχει ισοζυγισµένες παρενθέσεις. Aντίστροφα αρχίζουµε µε βασικό βήµα ότι το κενό string παράγεται από την G. Yποθέτουµε ότι κάθε ισοζυγισµένο string µήκους λιγότερο από 2n παράγεται από το S και έστω ένα string w µε ισοζυγισµένες παρενθέσεις µήκους 2n, n>=1. Tο w αρχίζει µε αριστερή παρένθεση. Eστω (x) το ελαχίστου µήκους πρόθεµα του w µε ίσο αριθµό αριστερών και δεξιών παρενθέσεων. Tότε w= (x)y όπου τα x και y έχουν ισοζυγισµένες παρενθέσεις. Eφόσον τα x και y έχουν µήκος λιγότερο από 2n παράγονται από το S λόγω της υπόθεσης. ηλ. το w παράγεται από το S. Mερικές φορές η γραµµατική µπορεί να έχει ασάφειες. Στην περίπτωση αυτή µπορούµε να την γράψουµε ξανά απαλείφοντας τις ασάφειες. Eστω η γραµµατική: stmt if expr then stmt if expr then stmt else stmt (3.2) other όπου other σηµαίνει οποιαδήποτε άλλη εντολή. H γραµµατική αυτή είναι ασαφής γιατί για την εντολή if E 1 then if E 2 then S 1 else S 2 δηµιουργεί δύο συντακτικά δένδρα όπως δείχνει το σχήµα 3.4. Μ. Χατζόπουλος, Γ. Κοτρώνης Σηµειώσεις Μεταγλωττιστές

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

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

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

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

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ 1 ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ Στόχος Στόχος του Κεφαλαίου αυτού είναι να µάθουµε τις βασικότερες από τις τεχνικές και τις µεθοδολογίες συντακτικής ανάλυσης των κατηγοριών bottom up

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

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

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

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Λεκτική Ανάλυση

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

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

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΞΙΣΩΣΕΩΝ Θα ξεκινήσουµε την παρουσίαση των γραµµικών συστηµάτων µε ένα απλό παράδειγµα από τη Γεωµετρία, το οποίο ϑα µας ϐοηθήσει στην κατανόηση των συστηµάτων αυτών και των συνθηκών

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

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

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

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

Pascal - Βασικές Έννοιες

Pascal - Βασικές Έννοιες Pasal - Βασικές Έννοιες «Ο ΠΗΛΟΣ ΑΝ ΜΗ ΑΡΗ ΚΕΡΑΜΟΣ ΟΥ ΓΙΝΕΤΑΙ» Σηµαίνει: «Η λάσπη αν δε ζυµωθεί δε γίνετε κεραµίδι» ηλαδή: «Χωρίς τη δοκιµασία της πρακτικής εξάσκησης δεν αποκτάς ικανότητα, πείρα». (Αρχαία

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις

Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις Κανονικές Εκφράσεις Στοιχειώδεις Κανονικές Εκφράσεις Κανονικές Εκφράσεις Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις ηµιουργία Κανονικών Εκφράσεων Παραδείγµατα Κανονικών Εκφράσεων Τις Κανονικές εκφράσεις

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

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα Ορισµοί Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα { 0, } δυαδικό αλφάβητο { Α, Β, Γ,, Ω } κεφαλαία ελληνικά γράµµατα

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

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

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

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

Κεφάλαιο 4ο: Εντολές επιλογής

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ρ. Γεώργιος Φ. Φραγκούλης Καθηγητής Ver. 0.2 9/2012 ιανύσµατα & ισδιάστατοι πίνακες Ένα διάνυσµα u = (u1, u2,, u ) εισάγεται στη MATLAB ως εξής : u=[ u1, u2,, un ] ή u=[ u1

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

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

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

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

Απάντηση: (func endfunc)-([a-za-z])+

Απάντηση: (func endfunc)-([a-za-z])+ Γλώσσες Προγραμματισμού Μεταγλωττιστές Ασκήσεις Επανάληψης ) Περιγράψτε τις κανονικές εκφράσεις που υποστηρίζουν (i) συμβολοσειρές που ξεκινούν με το πρόθεμα "func" ή "endfunc" ακολουθούμενο το σύμβολο

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)

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

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

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

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

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

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

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

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

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

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

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

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

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

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

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

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

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών TINΑ ΒΡΕΝΤΖΟΥ www.ma8eno.gr www.ma8eno.gr Σελίδα 1 Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Στους πραγματικούς αριθμούς ορίστηκαν οι

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

Visual Basic Βασικές Έννοιες

Visual Basic Βασικές Έννοιες Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas

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

1. στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι αβελιανή οµάδα, δηλαδή

1. στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι αβελιανή οµάδα, δηλαδή KΕΦΑΛΑΙΟ ΤΟ ΣΥΝΟΛΟ ΤΩΝ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ιατεταγµένα σώµατα-αξίωµα πληρότητας Ένα σύνολο Σ καλείται διατεταγµένο σώµα όταν στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

ΣΤΟΙΧΕΙΑ ΘΕΜΕΛΙΩΣΕΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΗΧΑΝΩΝ ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ ΚΑΙ ΤΟ ΛΥΚΕΙΟ ΜΕΡΟΣ ΤΡΙΤΟ Ένταξη των Τ.Π.Ε. στην διδασκαλία και τη µάθηση I) ΣΤΟΙΧΕΙΑ ΘΕΜΕΛΙΩΣΕΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΗΧΑΝΩΝ ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ ΚΑΙ ΤΟ ΛΥΚΕΙΟ Παύλος Γ. Σπυράκης (google: Paul Spirakis) Ερευνητικό Ακαδηµαϊκό

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

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

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

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

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα ροής και το πρόβληµα της µέγιστης ροής Η µεθοδολογία Ford-Fulkerson Ο αλγόριθµος Edmonds-Karps ΕΠΛ 232

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4) HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ ΜΑΘΗΜΑ : Πληροφορική Κατεύθυνσης ΤΑΞΗ : Β Αρ. σελίδων : 11 Ηµεροµηνία : 10/6/2008 Ώρα Έναρξης : 7:45 π.µ ιάρκεια : 2 ώρες Ονοµατεπώνυµο :...Τµήµα : Αριθµός :...Βαθµός

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

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

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

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

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής: ΣΕΙΡΕΣ TAYLOR Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων Πολυώνυµο είναι κάθε συνάρτηση της µορφής: p( ) = a + a + a + a + + a, όπου οι συντελεστές α i θα θεωρούνται

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Μη Ασυμφραστικές Γλώσσες (2.3) Λήμμα Άντλησης για Ασυμφραστικές Γλώσσες Παραδείγματα

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

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

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

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

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή. Η Αριθµητική Ανάλυση χρησιµοποιεί απλές αριθµητικές πράξεις για την επίλυση σύνθετων µαθηµατικών προβληµάτων. Τις περισσότερες φορές τα προβλήµατα αυτά είναι ή πολύ περίπλοκα ή δεν έχουν ακριβή αναλυτική

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

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

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

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

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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

Κεφάλαιο 5 Οι χώροι. Περιεχόµενα 5.1 Ο Χώρος. 5.3 Ο Χώρος C Βάσεις Το Σύνηθες Εσωτερικό Γινόµενο Ασκήσεις

Κεφάλαιο 5 Οι χώροι. Περιεχόµενα 5.1 Ο Χώρος. 5.3 Ο Χώρος C Βάσεις Το Σύνηθες Εσωτερικό Γινόµενο Ασκήσεις Σελίδα 1 από 6 Κεφάλαιο 5 Οι χώροι R και C Περιεχόµενα 5.1 Ο Χώρος R Πράξεις Βάσεις Επεξεργασµένα Παραδείγµατα Ασκήσεις 5. Το Σύνηθες Εσωτερικό Γινόµενο στο Ορισµοί Ιδιότητες Επεξεργασµένα Παραδείγµατα

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

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

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

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

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

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

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

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

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

5. Γεννήτριες Τυχαίων Αριθµών.

5. Γεννήτριες Τυχαίων Αριθµών. 5. Γεννήτριες Τυχαίων Αριθµών. 5.1. Εισαγωγή. Στο Κεφάλαιο αυτό θα δούµε πώς µπορούµε να δηµιουργήσουµε τυχαίους αριθµούς από την οµοιόµορφη κατανοµή στο διάστηµα [0,1]. Την κατανοµή αυτή, συµβολίζουµε

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

ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ

ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ Ελαχιστοποίηση κόστους διατροφής Ηεπιχείρηση ζωοτροφών ΒΙΟΤΡΟΦΕΣ εξασφάλισε µια ειδική παραγγελίααπό έναν πελάτη της για την παρασκευή 1.000 κιλών ζωοτροφής, η οποία θα πρέπει

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

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

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ ΜΕΡΟΣ ΙΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ 36 ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ Πολλές από τις αποφάσεις

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

o AND o IF o SUMPRODUCT

o AND o IF o SUMPRODUCT Πληροφοριακά Εργαστήριο Management 1 Information Συστήματα Systems Διοίκησης ΤΕΙ Τμήμα Ελεγκτικής Ηπείρου Χρηματοοικονομικής (Παράρτημα Πρέβεζας) και Αντικείµενο: Μοντελοποίηση προβλήµατος Θέµατα που καλύπτονται:

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

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ ΣΕΝΑΡΙΟ ΠΑΙΧΝΙ ΙΟΥ Το παιχνίδι θα αποτελείται από δυο παίκτες, οι οποίοι θα βρίσκονται αντικριστά στις άκρες ενός γηπέδου δεξιά και αριστερά, και µια µπάλα.

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

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

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

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

Σύνταξη & Συντακτική Ανάλυση

Σύνταξη & Συντακτική Ανάλυση Σύνταξη & Συντακτική Ανάλυση Μια γραμματική για τα Αγγλικά Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση ::= Μια ουσιαστική φράση αποτελείται από

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

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013 ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν, γράφοντας δίπλα στο γράμμα που αντιστοιχεί σε κάθε πρόταση τη

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

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

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

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΟΔΗΓΙΕΣ: ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΣΕ ΟΛΕΣ ΤΙΣ ΕΡΩΤΗΣΕΙΣ. Το εξεταστικό δοκίμιο αποτελείται από δύο Ενότητες Α και Β. ΕΝΟΤΗΤΑ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ορθή απάντηση

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

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

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

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

1ο. Η αριθµητική του υπολογιστή

1ο. Η αριθµητική του υπολογιστή 1ο. Η αριθµητική του υπολογιστή 1.1 Τί είναι Αριθµητική Ανάλυση Υπάρχουν πολλά προβλήµατα στη µαθηµατική επιστήµη για τα οποία δεν υπάρχουν αναλυτικές εκφράσεις λύσεων. Στις περιπτώσεις αυτές έχουν αναπτυχθεί

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

Κεφάλαιο 6 Παράγωγος

Κεφάλαιο 6 Παράγωγος Σελίδα από 5 Κεφάλαιο 6 Παράγωγος Στο κεφάλαιο αυτό στόχος µας είναι να συνδέσουµε µία συγκεκριµένη συνάρτηση f ( ) µε µία δεύτερη συνάρτηση f ( ), την οποία και θα ονοµάζουµε παράγωγο της f. Η τιµή της

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

ιαφάνειες παρουσίασης #1

ιαφάνειες παρουσίασης #1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA Αριθµοθεωρητικοί Αλγόριθµοι και το Κρυπτοσύστηµα RSA Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Υπολογισµός Μέγιστου Κοινού ιαιρέτη Αλγόριθµος του Ευκλείδη Κλάσεις Ισοδυναµίας και Αριθµητική modulo

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

Shell Scripts: loops / if / test

Shell Scripts: loops / if / test Shell Scripts: loops / if / test Loops with for while until for variable in list_of_values ne while εντολή (επιτυχής) ne until εντολή (επιτυχής) ne For in exi times apo ayti ti lista in 1 2 alla kai alles

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

Κεφάλαιο M3. Διανύσµατα

Κεφάλαιο M3. Διανύσµατα Κεφάλαιο M3 Διανύσµατα Διανύσµατα Διανυσµατικά µεγέθη Φυσικά µεγέθη που έχουν τόσο αριθµητικές ιδιότητες όσο και ιδιότητες κατεύθυνσης. Σε αυτό το κεφάλαιο, θα ασχοληθούµε µε τις µαθηµατικές πράξεις των

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

Σηµειώσεις στις συναρτήσεις

Σηµειώσεις στις συναρτήσεις Σηµειώσεις στις συναρτήσεις 4 Η έννοια της συνάρτησης Ο όρος «συνάρτηση» χρησιµοποιείται αρκετά συχνά για να δηλώσει ότι ένα µέγεθος, µια κατάσταση κτλ εξαρτάται από κάτι άλλο Και στα µαθηµατικά ο όρος

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

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 26-01-2014

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 26-01-2014 ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 26-01-2014 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό, αν είναι

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

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν:

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν: Υποπρογράµµατα «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas 2 Στόχοι

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

1.5 ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ μικρόκοσμου «Προγραμματισμός Η/Υ»

1.5 ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ μικρόκοσμου «Προγραμματισμός Η/Υ» 1.5 ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ μικρόκοσμου «Προγραμματισμός Η/Υ» 1. Πήγαινε στο μενού Αρχείο και επίλεξε Άνοιγμα. Άνοιξε το αρχείο sample.x. Ανοίγουν δυο παράθυρα. Παρατήρησε τα ονόματα τους: Πηγαίος κώδικας... και

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

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

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

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

5.1 Συναρτήσεις δύο ή περισσοτέρων µεταβλητών

5.1 Συναρτήσεις δύο ή περισσοτέρων µεταβλητών Κεφάλαιο 5 ΣΥΝΑΡΤΗΣΕΙΣ ΠΟΛΛΩΝ ΜΕΤΑΒΛΗΤΩΝ 5.1 Συναρτήσεις δύο ή περισσοτέρων µεταβλητών Οταν ένα µεταβλητό µέγεθος εξαρτάται αποκλειστικά από τις µεταβολές ενός άλλου µεγέθους, τότε η σχέση που συνδέει

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

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

Μαθηματικά. Γ'Γυμνασίου. Μαρίνος Παπαδόπουλος

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

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

Υπο-προγράμματα στη Fortran

Υπο-προγράμματα στη Fortran ΦΥΣ 145 - Διαλ.05 1 Υπο-προγράμματα στη Fortran q Mέχρι τώρα τα προβλήματα και τα προγράμματα που έχουμε δεί ήταν αρκετά απλά και επομένως ένα και μόνο πρόγραμμα ήταν αρκετό για να τα λύσουμε q Όταν τα

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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