Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Download "Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών"

Transcript

1 Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 3: Σύνταξη Γλωσσών Προγραμματισμού Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής

2 Εισαγωγή Οι διαφορές των ΓΠ στις συντακτικές δομές τους, είναι πολύ μεγαλύτερες από τις διαφορές τους στις εννοιολογικές δομές. Π.χ. το στοιχείο του πίνακα Α στη θέση 1, γράφεται: Α(1) στις FORTRAN, COBOL, PL/1, Ada A[1] στις Pascal, C A<1> στη SNOBOL Στόχος συντακτικού: Κανόνες επικοινωνίας της πληροφορίας μεταξύ προγραμματιστή και μεταφραστή/διερμηνέα. 2

3 Γενικά κριτήρια Συντακτικών Κανόνων Αναγνωσιμότητα (readability) Self-documenting: «φυσική» μορφή εντολών, δομημένες εντολές, keywords και noise words, ενσωματωμένα σχόλια, μεγάλο μήκος ονομάτων, μνημονικά σύμβολα Ευκολία Γραφής (writeability) Πολλές φορές αντίθετο με αναγνωσιμότητα Ευκολία Μετάφρασης Πολλές συντακτικές δομές δυσκολία στη μετάφραση Έλλειψη Ασαφειών Π.χ. στη C: if (n>0) if (a>b) z=a; else z=b; 3

4 Συντακτικά Στοιχεία μιας ΓΠ (1) 1. Σύνολο Χαρακτήρων (Αλφάβητο) Γράμματα κεφαλαία και μικρά (A,B,,Z,a,b, z) Αριθμητικά ψηφία (0,1,,9) Ειδικοί χαρακτήρες (,. ; & $ * # ( ) [ ] ) Δύο αρχικές κωδικοποιήσεις χαρακτήρων για Η/Υ: a. EBCDIC (Extended Binary Coded Decimal Interchange Code) από την IBM (8 bit 2 8 = 256 χαρακτήρες) b. ASCII (American Standard Code for Information Interchange) από ANSI (7 bit 2 7 = 128 χαρακτήρες) Τώρα: UNICODE (Universal Character Set) 16 bit 2 16 = χαρακτήρες Συμβατή κωδικοποίηση με ASCII 4

5 Συντακτικά Στοιχεία μιας ΓΠ (2) 2. Αναγνωριστικά (identifiers) Ονόματα μεταβλητών, συναρτήσεων, 3. Σύμβολα πράξεων + * - / ** && AND OR NOT 4. Λέξεις Κλειδιά (keywords) και Δεσμευμένες Λέξεις (reserved words) Λέξεις Κλειδιά: Χρησιμοποιούνται από τη ΓΠ Δεσμευμένες Λέξεις: Λέξεις Κλειδιά που δεν μπορεί ο προγραμματιστής να αλλάξει τη χρήση τους Η C έχει 28 δεσμευμένες λέξεις (int, else, for, ) Η αρχική FORTRAN δεν είχε τα DO, IF ως δεσμευμένες λέξεις 5

6 Συντακτικά Στοιχεία μιας ΓΠ (3) ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΔΕΣΜΕΥΜΕΝΩΝ ΛΕΞΕΩΝ Ευανάγνωστα Προγράμματα Εύκολη εύρεση στον Πίνακα Συμβόλων από Μεταφραστή Διευκολύνουν τον εντοπισμό και τη διόρθωση λαθών ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΔΕΣΜΕΥΜΕΝΩΝ ΛΕΞΕΩΝ Όσο αυξάνονται, πιο δύσκολο να τις θυμάται ο χρήστης Δύσκολη η επέκταση της ΓΠ με νέες δεσμευμένες λέξεις, διότι τα παλιά προγράμματα μπορεί να τις χρησιμοποιούν 6

7 Συντακτικά Στοιχεία μιας ΓΠ (4) 5. Σχόλια και Θόρυβος Σχόλια: π.χ. /* */ στη C, εντολή REM στην BASIC Θόρυβος: π.χ. στην COBOL: GO TO <label> 6. Κενά Διάφορες χρήσεις. Π.χ. στη SNOBOL είναι το σύμβολο της συγχώνευσης strings 7. Διαχωριστικά (delimiters) Στη C: { }. Στις ALGOL, Pascal: begin end Καλό για άρση ασαφειών 7

8 Συντακτικά Στοιχεία μιας ΓΠ (4) 8. Εκφράσεις (expressions) Συναρτήσεις που προσπελαύνουν δεδομένα σε ένα πρόγραμμα και επιστρέφουν μια τιμή. Π.χ. Α+Β*C 9. Εντολές (statements) Δημιουργούνται από συνδυασμούς εκφράσεων και άλλων συντακτικών στοιχείων. Π.χ. D = (A+B*C) E/2 10. Δομή Προγράμματος Υποπρογραμμάτων 8

9 Ιεραρχία Συντακτικών Στοιχείων Δομή Προγράμματος Υποπρογραμμάτων Εντολές Εκφράσεις Αναγνωριστικά Σύμβολα Λέξεις Κλειδιά Σχόλια Κενά Διαχωριστικά Αλφάβητο 9

10 Δομή Προγράμματος Υποπ/μάτων (1) a. Ξεχωριστός Ορισμός Υποπρογράμματος C, FORTRAN Κάθε υποπρόγραμμα μεταφράζεται χωριστά και συνδέονται όλα όταν γίνεται φόρτωση Χρειάζεται πλήρης περιγραφή όλων των data elements b. Ξεχωριστός Ορισμός Δεδομένων Java, C++, Smalltalk Ομαδοποίηση των λειτουργιών που χειρίζονται ένα δεδομένο data object c. Φωλιασμένος Ορισμός Υποπρογράμματος Pascal, ALGOL Ιεραρχικός ορισμός. Δυνατότητα ορισμού εμβέλειας. Στατικός έλεγχος τύπων. 10

11 Δομή Προγράμματος Υποπ/μάτων (2) d. Ξεχωριστός Ορισμός Interface C, Ada Δυνατότητα χρήσης file operations του ΛΣ (.h και.c file specs του make στη C) e. Περιγραφές δεδομένων χωριστές από τις εκτελέσιμες εντολές COBOL Όλα τα data είναι global. Data και procedure τμήματα f. Μη-χωριστοί Ορισμοί Υποπρογραμμάτων BASIC, SNOBOL Καμία οργάνωση. Τα υπ/ματα μπορούν να χρησιμο-ποιηθούν και από άλλα τμήματα του προγράμματος 11

12 Φάσεις Μετάφρασης (1) Κάθε Φάση δέχεται ως είσοδο ένα πρόγραμμα ισοδύναμο με το αρχικό σε κάποια μορφή και παράγει ως έξοδο το ίδιο πρόγραμμα σε άλλη μορφή. Δύο Στάδια: Ανάλυση πηγαίου προγράμματος (3 Φάσεις) Σύνθεση εκτελέσιμου κώδικα (3-4 Φάσεις) Αριθμός περασμάτων πηγαίου κώδικα: Συνήθως: 2 περάσματα αντίστοιχα με τα 2 Στάδια Πολλές φορές: 3 περάσματα: Ανάλυση πηγαίου κώδικα Ξαναγράψιμο πηγαίου κώδικα με αλγόριθμους βελτιστοποίησης Δημιουργία εκτελέσιμου κώδικα 12

13 Φάσεις Μετάφρασης (2) Στάδιο Ανάλυσης Στάδιο Σύνθεσης 13

14 Φάσεις Ανάλυσης πηγαίου προγρ/τος (1) Λεξική Ανάλυση (lexical analysis scanning) Η ακολουθία χαρακτήρων του αρχικού προγράμματος χωρίζεται σε βασικά συντακτικά στοιχεία tokens όπως: αναγνωριστικά, σύμβολα, λέξεις κλειδιά, Μπαίνει TYPE TAG σε κάθε token Εισάγονται τα tokens στον Πίνακα Συμβόλων (symbol table) αφού έχουν μετατραπεί σε κατάλληλη εσωτερική αναπαράσταση Υπολογιστικό μοντέλο λεξικής ανάλυσης: Πεπερασμένα Αυτόματα (finite-state automata) 14

15 Φάσεις Ανάλυσης πηγαίου προγρ/τος (2) Συντακτική Ανάλυση (syntax analysis parsing) Αναγνωρίζονται τα συντακτικά στοιχεία υψηλότερου επιπέδου (εκφράσεις, εντολές, υποπρογράμματα) Συνήθως εναλλάσσεται με την επόμενη Φάση (σημασιολογική ανάλυση) Οι δύο Φάσεις «επικοινωνούν» μέσω μιας stack, στην οποία ο συντακτικός αναλυτής τοποθετεί τα στοιχεία που αναγνωρίζει Παράγεται το Δέντρο Συντακτικής Ανάλυσης (parse tree) που δίνει και την ιεραρχία των συντακτικών στοιχείων Τύπος Γραμματικής για συντακτική ανάλυση: Γλώσσες Χωρίς Συμφραζόμενα (context-free languages) 15

16 Φάσεις Ανάλυσης πηγαίου προγρ/τος (3) Σημασιολογική Ανάλυση (semantic analysis) Κεντρικό τμήμα της μετάφρασης. Είναι η γέφυρα μεταξύ ανάλυσης και σύνθεσης Αρχίζει και διαμορφώνεται η δομή εκτελέσιμου κώδικα Στατικός έλεγχος τύπων και παραμέτρων υποπρ/των Άλλες λειτουργίες: Συντήρηση Πίνακα Συμβόλων Εισαγωγή ενσωματωμένης πληροφορίας Εντοπισμός λαθών Macro processing Compile-time operations 16

17 Φάσεις Σύνθεσης εκτελέσιμου κώδικα (1) Δημιουργία Ενδιάμεσου Κώδικα (intermediate code generation) Παράγεται ακολουθία operators ορισμάτων Βελτιστοποίηση κώδικα ανεξάρτητα από μηχανή (machine independent code improvement) Υπολογισμός κοινών υπο-εκφράσεων μία φορά Απομάκρυνση σταθερών λειτουργιών από loops Βελτιστοποίηση της χρήσης registers 17

18 Φάσεις Σύνθεσης εκτελέσιμου κώδικα (2) Παράδειγμα βελτιστοποίησης: Εντολή A = B+C+D Σε «ενδιάμεσο» κώδικα: a) Temp1 = B + C b) Temp2 = Temp1 + D c) A = Temp2 Σε «τελικό» κώδικα: 1. Load register with B 2. Add C to register 3. Store register in Temp1 4. Load register with Temp1 5. Add D to register 6. Store register in Temp2 7. Load register with Temp2 8. Store register in A Τα ζευγάρια εντολών 3-4 και 6-7 του «τελικού» κώδικα, μπορούν να αφαιρεθούν - βελτιστοποίηση 18

19 Τυπικός ορισμός Συντακτικού Στόχος Ακριβείς ορισμοί συντακτικού των ΓΠ για τους χρήστες και υλοποιητές των ΓΠ Επιπλέον Βάση για τη λεξική και συντακτική ανάλυση από τους μεταφραστές Ο Τυπικός (φορμαλιστικός) ορισμός του Συντακτικού μιας ΓΠ ονομάζεται Γραμματική Μια Γραμματική αποτελείται από: Ένα πεπερασμένο σύνολο συμβόλων Αλφάβητο Ένα πεπερασμένο σύνολο ορισμών (Κανόνες ή Παραγωγές) που καθορίζουν τις ακολουθίες χαρακτήρων (ή tokens) που δομούν επιτρεπτά προγράμματα της ΓΠ 19

20 Τυπική Γραμματική (formal grammar) Γραμματική ορισμένη με τη χρήση αυστηρά καθορισμένης σημειογραφίας (notation) Π.χ. η σημειογραφία BNF (Backus Naur Form) για τον ορισμό Γραμματικών χωρίς συμφραζόμενα (contextfree grammars) Εμφάνιση στην αναφορά της ALGOL (1960) Την ίδια περίπου εποχή (1959) ο γλωσσολόγος Noam Chomsky ανέπτυξε τη θεωρία του για τις Γραμματικές Οι δύο προσεγγίσεις αποδείχτηκαν ισοδύναμες 20

21 Τυπικές Γλώσσες (formal languages) Το συντακτικό τους ορίζεται από Τυπικές Γραμματικές Για μια Τυπική Γλώσσα L χρειάζονται: 1. Ένα Αλφάβητο Σ διακριτών συμβόλων 2. Ένα σύνολο κανόνων Ρ που καθορίζουν ποιες ακολουθίες (ή λέξεις) συμβόλων του Σ είναι αποδεκτές στην L Τα παραπάνω 1 και 2 ονομάζονται Γραμματική στο Σ. Δηλαδή, μια Γραμματική G είναι ένα ζευγάρι (Σ, Ρ) που παράγει τη γλώσσα L(G) 21

22 Ένα παράδειγμα Τυπικής Γλώσσας Η γλώσσα L(B) = { } με Β = (Σ, Ρ) είναι όλοι οι μη-αρνητικοί δυαδικοί αριθμοί μικρότεροι από 1, με δύο υπο-δυαδικά ψηφία. Σ = {0. 1} Ρ = { R1: S 0 0S 1 R2: S 1.S 2 R3: S 2 0S 3 R4: S 2 1S 3 R5: S 3 0 R6: S 3 1 } N = { S 0 S 1 S 2 S 3 } : Συντακτικές Κατηγορίες ή Μη-Τερματικά Σύμβολα Start = S 0 : Αρχικό Σύμβολο (start symbol). Η συντακτική κατηγορία του πιο υψηλού επιπέδου : Μετασύμβολο 22

23 Ένα παράδειγμα Τυπικής Γλώσσας (2) Παραγωγή R: α β Ένα νέο string παράγεται με τη χρήση της παραγωγής R, αντικαθιστώντας το α με το β Δημιουργία (derivation) του string 0.01: R1 R2 R3 R6 S 0 0S 1 0.S 2 0.0S Πρέπει με διαδοχικές χρήσεις παραγωγών, ξεκινώντας από το start symbol, να καταλήγουμε σε αποδεκτό string της γλώσσας 23

24 Σύστημα Παραγωγής G = (Σ, Ν, Ρ, Start) όπου Start Σ U N

25 Ιεραρχία Γραμματικών Ανάλογα με το είδος των παραγωγών, υπάρχουν τελικά μόνο 4 τύποι τυπικών γλωσσών ΤΥΠΟΣ ΓΛΩΣΣΑΣ ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΗ Ερωτήματα: (αναγνωρίζεται από) Ποιοι περιορισμοί είναι βασικοί και ποιοι όχι; Με ένα είδος κανόνων, τι προβλήματα λύνονται; Με ένα τύπο γλώσσας, ποιες θεωρητικές μηχανές αναγνωρίζουν τα «νόμιμα» strings; Μπορεί η θεωρητική μηχανή να αναγνωρίσει strings άπειρου μήκους; 25

26 Γλώσσες του Chomsky ΤΥΠΟΣ 0: Γλώσσες χωρίς περιορισμούς ΤΥΠΟΣ 1: Γλώσσες με συμφραζόμενα ΤΥΠΟΣ 2: Γλώσσες χωρίς συμφραζόμενα ΤΥΠΟΣ 3: Κανονικές Γλώσσες 26

27 Τύπος 3: Κανονικές Γλώσσες (regular languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι κανονική, αν οι παραγωγές της είναι της μορφής: Α α ή Α αβ όπου Α, Β є Ν και α є Σ Δηλαδή, το πρώτο σύμβολο δεξιά του είναι τερματικό και μπορεί να ακολουθείται από μητερματικό σύμβολο Κατάλληλες για λεξική ανάλυση Αναγνωρίζονται από πεπερασμένα αυτόματα 27

28 Παράδειγμα Κανονικής Γραμματικής X a z al zl ad zd L al zl ad zd a z D 0L 9L 0D 9D 0 9 : εναλλακτικός κανόνας ή (μετασύμβολο) Περιγράφει ονόματα Χ (π.χ. μεταβλητών) που είναι ένα μικρό γράμμα, ή ένα μικρό γράμμα που ακολουθείται από ακολουθία μικρών γραμμάτων ή/και αριθμητικών ψηφίων. 28

29 Τύπος 2: Γλώσσες χωρίς συμφραζόμενα (context-free languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι χωρίς συμφραζόμενα, αν οι παραγωγές της είναι της μορφής: Α s όπου Α є Ν και s є Σ U N Ονομάζονται έτσι, διότι αντικαταστάσεις μπορούν να γίνουν οπουδήποτε εμφανίζεται μη-τερματικό σύμβολο, χωρίς να λαμβάνονται υπόψη τα περιβάλλοντα σύμβολα Κατάλληλες για συντακτική ανάλυση Αναγνωρίζονται από push-down αυτόματα 29

30 Τύπος 1: Γλώσσες με συμφραζόμενα (context-sensitive languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι με συμφραζόμενα, αν οι παραγωγές είναι της μορφής: α β όπου: 1. Το α μπορεί να περιέχει περισσότερα από 1 σύμβολα (τουλάχιστον 1 μη-τερματικό) 2. (Μήκος του α) (Μήκος του β) Παράδειγμα: aβ ab, cb bc (τα a και c είναι το context) Αναγνωρίζονται από linear-bounded αυτόματα 30

31 Τύπος 0: Γλώσσες χωρίς περιορισμούς Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι χωρίς περιορισμούς, αν οι παραγωγές είναι της μορφής: α β όπου: Το α μπορεί να περιέχει περισσότερα από 1 σύμβολα (τουλάχιστον 1 μη-τερματικό) Αναγνωρίζονται από Μηχανές Turing 31

32 Λεξική Ανάλυση (1) Αρχικό Πρόγραμμα x := 37 /* result */ RETURN x Λεξική Ανάλυση Tokens (στον Πίνακα Συμβόλων) VARIABLE /x ASSIGN SYMBOL INTEGER /37 RETURN VARIABLE /x Μηχανή αναγνώρισης tokens: Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Finite State Automata Regular Expressions Ένα Πεπερασμένο Αυτόματο για κάθε είδος token (μεταβλητές, σύμβολα, λέξεις κλειδιά, ) 32

33 Λεξική Ανάλυση (2) Μία Κανονική Έκφραση (ΚΕ) είναι ένα από τα: Ένας χαρακτήρας Το є σύμβολο (τίποτα empty) Δύο ΚΕ η μία δίπλα στην άλλη Δύο ΚΕ χωρισμένες με (ή) Μία ΚΕ ακολουθούμενη από το Kleene Star: Χ* (συνένωση 0 ή περισσότερων Κανονικών Εκφράσεων Χ) Χρησιμοποιούνται επίσης, για συντομία, τα σύμβολα: Χ + ΧΧ* (1 ή περισσότερα Χ) Χ? Χ є (κανένα ή 1 Χ) c g c d e f g (X) για καθορισμό προτεραιότητας της ΚΕ 33

34 Λεξική Ανάλυση (3) Κανονικές Γλώσσες: Δημιουργούνται από Κανονικές Εκφράσεις και αναγνωρίζονται από Πεπερασμένα Αυτόματα Για τη δημιουργία Γλωσσών Χωρίς Συμφραζόμενα, αρκεί η προσθήκη δυνατότητας Αναδρομής. 34

35 Λεξική Ανάλυση (4) Παράδειγμα Κανονικών Εκφράσεων: Στην Pascal για την παραγωγή και αναγνώριση αριθμών: Π.χ.: e E-89 digit unsigned_integer digit digit* unsigned_number unsigned_integer ((. unsigned_integer) ε ) (((e Ε)(+ - ε) unsigned_integer) ε) Ή πιο σύντομα: (0 9) + (.(0 9) + )? ((e E)(+ - )? (0 9) + )? 35

36 Λεξική Ανάλυση (5) Πεπερασμένα Αυτόματα Finite State Automata FSA Τρόπος λειτουργίας: Διαβάζει κάθε φορά ένα χαρακτήρα από αριστερά. «Αποφασίζει» αν το string που έχει διαβάσει μέχρι τώρα, είναι αποδεκτό ως token. Η απόφαση αυτή καθορίζεται από την «κατάσταση» στην οποία βρίσκεται το αυτόματο μετά την ανάγνωση του τελευταίου χαρακτήρα. Όταν αναγνωριστεί ότι τελείωσε η λέξη, το token είναι αποδεκτό αν το αυτόματο βρεθεί σε «τελική κατάσταση». Αν βρεθεί σε άλλη κατάσταση, δεν γίνεται αποδεκτό. 36

37 Παράδειγμα: Λεξική Ανάλυση (6) Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν περιττό αριθμό από Α Αρχική Κατάσταση 1 Β Τελική Κατάσταση Αντίστοιχη KE: 0*10*(10*10*)* ή (0*10*1)*0*10* 37

38 Λεξική Ανάλυση (7) Ισοδύναμη αναπαράσταση: Πίνακας Καταστάσεων Μεταβάσεων Τρέχουσα Κατάσταση Χαρακτήρας που διαβάζεται Νέα Κατάσταση Αποδοχή token A 0 A OXI A 1 B NAI B 0 B NAI B 1 A OXI

39 Λεξική Ανάλυση (8) Λειτουργία του FSA για την είσοδο : Αναγνωσμένοι χαρακτήρες Νέα Κατάσταση A Αποδοχή token OXI 1 B NAI 10 B NAI 100 B NAI 1001 A OXI A OXI B NAI

40 Λεξική Ανάλυση (9) Ένα Πεπερασμένο Αυτόματο έχει: Μία αρχική κατάσταση Μία ή περισσότερες τελικές καταστάσεις Ένα σύνολο μεταβάσεων Κάθε string που ξεκινάει το Πεπερασμένο Αυτόματο από την αρχική κατάσταση, και τελειώνει σε μια τελική κατάσταση, είναι αποδεκτό token. Τα Πεπερασμένα Αυτόματα που χρησιμοποιούμε είναι ντετερμινιστικά. Μη-ντετερμινιστικά είναι αυτά που έχουν περισσότερες από μία μεταβάσεις με το ίδιο label. 40

41 Λεξική Ανάλυση (10) Υλοποίηση: Κάθε κατάσταση είναι μια ρουτίνα του προγράμματος που υλοποιεί το FSA Ο λεξικός αναλυτής ξεκινά με GETCHAR από αριστερά, καλώντας ένα FSA Αν ο λεξικός αναλυτής δεν φτάσει σε τελική κατάσταση του τρέχοντος FSA, επιστρέφει στον αρχικό χαρακτήρα και ξεκινά ένα άλλο FSA Στην Άσκηση θα χρησιμοποιήσουμε το γεννήτορα λεξικών αναλυτών flex που βασίζεται σε FSAs 41

42 2ο Παράδειγμα: Λεξική Ανάλυση (11) Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν άρτιο αριθμό από Α Β Αρχική και Τελική Κατάσταση 1 Αντίστοιχη KE: 0*(10*10*)* ή (0*10*1)*0* 42

43 Λεξική Ανάλυση (12) Πίνακας Καταστάσεων Μεταβάσεων Τρέχουσα Κατάσταση Χαρακτήρας που διαβάζεται Νέα Κατάσταση Αποδοχή token A 0 A ΝΑΙ A 1 B ΟΧΙ B 0 B ΟΧΙ B 1 A ΝΑΙ

44 Λεξική Ανάλυση (13) Λειτουργία του FSA για την είσοδο : Αναγνωσμένοι χαρακτήρες Νέα Κατάσταση A Αποδοχή token ΝΑΙ 1 B ΟΧΙ 10 B ΟΧΙ 100 B ΟΧΙ 1001 A ΝΑΙ A ΝΑΙ B ΟΧΙ

45 3ο Παράδειγμα: Λεξική Ανάλυση (14) Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν άρτιο αριθμό από 1, χωρίς το є: 1 Α 0 Β 1 1 Γ 0 0 Αντίστοιχη KE: 0 + (0*10*10*) + 45

46 4ο Παράδειγμα: Λεξική Ανάλυση (15) Πεπερασμένο Αυτόματο που αναγνωρίζει ονόματα μεταβλητών που αρχίζουν με γράμμα και αποτελούνται από γράμματα και αριθμητικά ψηφία Γράμμα ή ψηφίο Α Γράμμα Β Άλλο ERROR ή άλλο FSA Άλλο ERROR ή άλλο FSA 46

47 Λεξική Ανάλυση (16) 5ο Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει προσημασμένους ή μη-προσημασμένους ακέραιους αριθμούς Ψηφίο Ψηφίο Α ή + Β Ψηφίο Γ Αντίστοιχη KE: (+ - )? (0 9) + 47

48 Συντακτική Ανάλυση (1) Για τη Συντακτική Ανάλυση είναι κατάλληλες οι Γραμματικές Χωρίς Συμφραζόμενα Τυπική σημειογραφία BNF (Backus Naur Form) για τον ορισμό Γραμματικών Χωρίς Συμφραζόμενα (contextfree grammars) Μετασύμβολα της σημειογραφίας BNF, για τον ορισμό των κανόνων της Γλώσσας: ::= ορίζεται ως εναλλακτικός κανόνας ή < > Μη-τερματικό σύμβολο (συντακτική κατηγορία) 48

49 Συντακτική Ανάλυση (2) Και η Λεξική Ανάλυση θα μπορούσε να είναι μέρος της Συντακτικής. Π.χ. η BNF Γραμματική: <ψηφίο> ::= η οποία ορίζει τον τύπο token «αριθμητικό ψηφίο». Διότι οι Κανονικές Γλώσσες (λεξική ανάλυση), είναι υποσύνολο των Γλωσσών Χωρίς Συμφραζόμενα (συντακτική ανάλυση). Με τις Γλώσσες Χωρίς Συμφραζόμενα, μπορούμε να περιγράψουμε πιο σύνθετες γλώσσες. Π.χ. <υπο-συνθήκη εντολή> ::= if <λογική έκφραση> then <εντολή> else <εντολή> if <λογική έκφραση> then <εντολή> 49

50 Συντακτική Ανάλυση (3) Χρήσιμη μορφή κανόνα, η αναδρομή: <μη-προσ. ακέραιος> ::= <ψηφίο> <μη-προσ. ακέραιος> <ψηφίο> <ψηφίο> ::= Μία μικρή BNF Γραμματική: <έκφραση> ::= id αρ <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> <πράξη> ::= + - * / όπου: id αρ είναι είδη token αναγνωρισμένα στη λεξική ανάλυση (id = αναγνωριστικό, αρ = αριθμός) <έκφραση> = start symbol 50

51 Συντακτική Ανάλυση (4) Αναγνώριση σωστών προγραμμάτων: Top down Parsing Δέντρο Συντακτικής Ανάλυσης (Parse Tree) Π.χ. για την έκφραση Α C <έκφραση> <έκφραση> <πράξη> <έκφραση> id (A) id (C) 51

52 Συντακτική Ανάλυση (5) Πρέπει, ξεκινώντας με ρίζα το start symbol, να δημιουργείται ένα δέντρο, που φύλλα του είναι η ακολουθία χαρακτήρων που θέλουμε να αναγνωριστεί. Οι ακολουθίες χαρακτήρων που μπορούν να δημιουργηθούν από το start symbol με κάποιο parse tree, συγκροτούν τη Γλώσσα που ορίζει η Γραμματική. Το Δέντρο Συντακτικής Ανάλυσης για την αναγνώριση της έκφρασης (Α + Β) * C : 52

53 Συντακτική Ανάλυση (6) Parse Tree για το: (Α + Β) * C <έκφραση> <έκφραση> <πράξη> <έκφραση> ( <έκφραση> ) * id (C) <έκφραση> <πράξη> <έκφραση> id (A) + id (B) 53

54 Συντακτική Ανάλυση (7) Parse Tree για το: (Α + ) * C <έκφραση> <έκφραση> <πράξη> <έκφραση> ( <έκφραση> ) * id (C) <έκφραση> <πράξη> <έκφραση> id (A) +? (ERROR) 54

55 Συντακτική Ανάλυση (8) Μια πιο σύνθετη Γραμματική: <A> ::= <E> = <B> <B> ::= <C> <B> + <C> <B> - <C> <C> ::= <D> <C> * <D> <C> / <D> <D> ::= <E> αρ (<B>) <E> ::= id id [<F>] <F> ::= <B> <F>, <B> 55

56 Συντακτική Ανάλυση (8) Είναι μια Γραμματική για εντολές ανάθεσης: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> Π.χ. Α = Β+Κ-3 C[3,2N-4] = L[(3*P[X]-H)+67/D[9]]+4 56

57 Συντακτική Ανάλυση (9) Δέντρο Συντακτικής Ανάλυσης για το <εντολή ανάθεσης> <μεταβλητή> = <έκφραση> W=Y*(U+V) id (W) <όρος> <όρος> * <παράγοντας> <παράγοντας> ( <έκφραση> ) <έκφραση> + <όρος> <μεταβλητή> <όρος> <παράγοντας> id (Y) <παράγοντας> <μεταβλητή> <μεταβλητή> id (V) id (U) 57

58 Συντακτική Ανάλυση (10) Εναλλακτική Γραμματική για την ίδια Γλώσσα: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> * <όρος> <έκφραση> + <όρος> <όρος> ::= <παράγοντας> <όρος> - <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> 58

59 Συντακτική Ανάλυση (11) Extended BNF σημειογραφία. Επιπλέον μετασύμβολα: [ ] : Προαιρετικό { } : 0 ή περισσότερες εμφανίσεις ( ) : Ομαδοποίηση <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> { ( + - ) <όρος> } <όρος> ::= <παράγοντας> { ( * / ) <παράγοντας> } <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> {, <έκφραση> } Μειονέκτημα: Μερικές φορές κρύβεται η αναδρομή 59

60 Συντακτική Ανάλυση (12) Ισοδύναμη μέθοδος περιγραφής του συντακτικού με την BNF: Συντακτικά Διαγράμματα. Κανόνες μετατροπής BNF σε Συντακτικά Διαγράμματα, στην περιγραφή της Pascal από τον Wirth, 1976: 1. Τερματικό Σύμβολο a a 2. Μη-τερματικό Σύμβολο <v> v 60

61 Συντακτική Ανάλυση (13) v1 3. <P> ::= <v1> a1 <v2> є a2 a1 P v2 є a2 61

62 Συντακτική Ανάλυση (14) 4. <P> ::= <v1> a1 <v2> P v1 a1 v2 5. <P> ::= [ <v1> ] 0 ή 1 φορές το <v1> δηλ. <P> ::= є <v1> P v1 6. <P> ::= { <v1> } 0 ή περισσότερες φορές το <v1> δηλ. <P> ::= є <v1><p> P v1 7. <P> ::= <v1> <v1><p> 1 ή περισσότερες φορές το <v1> P v1 62

63 Το παράδειγμα Συντακτική Ανάλυση (15) <έκφραση> ::= id αρ <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> πράξη έκφραση id αρ ( έκφραση ) 63

64 Συντακτική Ανάλυση (16) Η σύνθετη Γραμματική για εντολές ανάθεσης: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> 64

65 Συντακτική Ανάλυση (17) <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> εντ. ανάθεσης μεταβλητή = έκφραση <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> έκφραση όρος + 65

66 Συντακτική Ανάλυση (18) <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> όρος παράγοντας * / 66

67 Συντακτική Ανάλυση (19) <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) παράγοντας μεταβλητή αρ ( έκφραση ) 67

68 Συντακτική Ανάλυση (20) <μεταβλητή> ::= id id [<λίστα δεικτών>] μεταβλητή id [ Λίστα δεικτών ] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> λίστα δεικτών έκφραση, 68

69 Συντακτική Ανάλυση (21) Υλοποίηση Συντακτικών Διαγραμμάτων με Ειδικές Δομές Δεδομένων: Κόμβος Συντακτικού Διαγράμματος TAG OTHER Symbol FOLLOW TAG: TRUE αν το Symbol είναι τερματικό σύμβολο FALSE αν το Symbol είναι μη-τερματικό σύμβολο OTHER: Pointer που δείχνει τον επόμενο εναλλακτικό (παράλληλο) κόμβο («nil» αν ο κόμβος είναι η τελευταία επιλογή) FOLLOW: Pointer που δείχνει τον επόμενο υποχρεωτικό (σειριακό) κόμβο («nil» αν ο κόμβος είναι ο τελευταίος στη σειρά) 69

70 Κανόνες: Συντακτική Ανάλυση (22) v1 P FALSE v1 P a1 v2 TRUE a1 FALSE v2 nil 70

71 Συντακτική Ανάλυση (23) P v1 a1 v2 P FALSE v1 TRUE a1 FALSE v2 nil nil nil nil 71

72 Συντακτική Ανάλυση (24) P v1 P FALSE v1 TRUE є nil nil 72

73 Το παράδειγμα Συντακτική Ανάλυση (25) <έκφραση> ::= id <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> πράξη έκφραση id ( έκφραση ) 73

74 Συντακτική Ανάλυση (26) TRUE id TRUE є έκφραση TRUE - FALSE πράξη nil TRUE ( FALSE έκφραση TRUE ) nil nil nil 74

75 Ισοδύναμες Γραμματικές (1) Ισοδύναμες Γραμματικές: Γραμματικές που παράγουν την ίδια γλώσσα. Δηλαδή, οι γραμματικές G 1 και G 2 είναι ισοδύναμες, αν και μόνο αν L(G 1 ) = L(G 2 ) Χρήσιμη ιδιότητα στην κατασκευή compilers: Κατά τη σχεδίαση, χρησιμοποιούμε απλές γραμματικές που είναι εύκολα κατανοητές Στη συνέχεια, ίσως χρειαστεί να τις μετασχηματίσουμε σε ισοδύναμες, με ιδιότητες που τις κάνουν πιο εύκολα υλοποιήσιμες Το πρόβλημα της διαπίστωσης της ισοδυναμίας δύο γραμματικών είναι μη-υπολογίσιμο. 75

76 Ισοδύναμες Γραμματικές (2) Διφορούμενες (ambiguous) Γραμματικές Χωρίς Συμφραζόμενα: Όταν υπάρχουν 2 ή περισσότερα δέντρα συντακτικής ανάλυσης για την ίδια παραγόμενη συμβολοσειρά. Μια διφορούμενη γραμματική μπορεί να είναι ισοδύναμη με άλλη γραμματική που δεν είναι διφορούμενη. Οι γραμματικές που δεν μπορούν να μετασχηματιστούν σε μηδιφορούμενες, ονομάζονται εγγενώς διφορούμενες (inherently ambiguous). Στους compilers, αποφεύγουμε τη χρήση διφορούμενων γραμματικών, γιατί οδηγούν σε σημασιολογικές ασάφειες. 76

77 Ισοδύναμες Γραμματικές (3) Παράδειγμα διφορούμενης γραμματικής: <Ε> ::= id <Ε> + <Ε> <Ε> * <Ε> (<Ε>) Δέντρα Συντακτικής Ανάλυσης για το: Α + Β * C 77

78 Ισοδύναμες Γραμματικές (4) <E> <E> <E> + <E> <E> * <E> id(a) <E> * <E> <E> + <E> id(c) id(b) id(c) id(a) id(b) 78

79 Ισοδύναμες Γραμματικές (5) Ισοδύναμη Γραμματική μη-διφορούμενη: <Ε> ::= <Ε> + <T> <T> <T> ::= <T> * <F> <F> <F> ::= (<Ε>) id Δηλαδή, «επιβάλλουμε» τη χρήση από τη ρίζα, του δεύτερου αρχικού κανόνα: 79

80 Ισοδύναμες Γραμματικές (6) <E> <Τ> <F> <E> + <Τ> <Τ> * <F> <F> id(c) Δηλαδή, δημιουργήσαμε μια ισοδύναμη γραμματική, αλλά πιο πολύπλοκη, που παράγει και πιο πολύπλοκα δέντρα συντακτικής ανάλυσης. Όμως, δεν είναι διφορούμενη id(a) id(b) 80

81 Συντακτική Ανάλυση Top-Down (1) Top-Down Συντακτική Ανάλυση (Καθοδική) Ο Συντακτικός Αναλυτής (ΣΑ) πρέπει να αποφασίσει για τα εξής: 1. Ποιος κανόνας παραγωγής θα χρησιμοποιηθεί για να δημιουργηθούν τα «παιδιά» ενός κόμβου; ΑΠΑΝΤΗΣΗ: Δύσκολη Διαβάζει ένα αριθμό k tokens για να αποφασίσει, χρησιμοποιεί την παραγωγή που είναι πιο αριστερά, 1. Στη συνέχεια, με ποια σειρά θα γίνει η επεξεργασία των νέων κόμβων που προκύπτουν; ΑΠΑΝΤΗΣΗ: Οι περισσότεροι ΣΑ τους επεξεργάζονται από αριστερά προς τα δεξιά. 81

82 Συντακτική Ανάλυση Top-Down (2) Οι συνήθεις top-down ΣΑ αναφέρονται ως: LL(k) Left-to-right διάβασμα string Leftmost δημιουργία παραγωγών Αριθμός tokens που διαβάζονται (look-ahead symbols) 82

83 Συντακτική Ανάλυση Top-Down (3) Γραμματικές LL(1): Οι γραμματικές χωρίς συμφραζόμενα που αναγνωρίζονται από LL(1) Συντακτικούς Αναλυτές. Αποδεικνύεται ότι για να είναι μια γραμματική LL(1), όλες οι παραγωγές της πρέπει να ικανοποιούν τα εξής: 1. Να μην έχουν αριστερή αναδρομή, άμεση ή έμμεση. 2. Να μην έχουν 2 εναλλακτικούς κανόνες, τα δεξιά μέλη των οποίων αρχίζουν με το ίδιο σύμβολο. 3. Να μην έχουν 2 εναλλακτικούς κανόνες, τα δεξιά μέλη των οποίων παράγουν την κενή συμβολοσειρά (є). 83

84 Συντακτική Ανάλυση Top-Down (4) Χρησιμοποιείται μια Στοίβα και δύο Πράξεις: Ταίριασμα συμβόλου: Αν στην κορυφή της στοίβας βρίσκεται το τερματικό σύμβολο a και το τρέχον σύμβολο του string εισόδου είναι επίσης a, τότε το a αφαιρείται από τη στοίβα και διαβάζεται το επόμενο σύμβολο του string εισόδου. Πρόβλεψη: Αν στην κορυφή της στοίβας βρίσκεται το μητερματικό σύμβολο <Α>, το αντικαθιστούμε με το δεξιό μέρος κάποιου κανόνα ορισμού του <Α>, με τα σύμβολα σε αντίθετη σειρά. Αν καμία από τις δύο πράξεις δεν μπορεί να εφαρμοστεί, τότε υπάρχει συντακτικό σφάλμα. 84

85 Συντακτική Ανάλυση Top-Down (5) Παράδειγμα υλοποίησης LL(1) Συντακτικού Αναλυτή: Γραμματική: <S> ::= (<S>)<S> є String εισόδου: () Βήμα Στοίβα Είσοδος Πράξη 0 <S> () EOF Πρόβλεψη <S> ::= (<S>)<S> 1 <S>)<S>( () EOF Ταίριασμα συμβόλου ( 2 <S>)<S> ) EOF Πρόβλεψη <S> ::= є 3 <S>) ) EOF Ταίριασμα συμβόλου ) 4 <S> EOF Πρόβλεψη <S> ::= є 5 є EOF Αναγνώριση 85

86 Συντακτική Ανάλυση Top-Down (6) Σε αρκετές περιπτώσεις μπορούμε να μετατρέψουμε μια γραμματική σε ισοδύναμη LL(1). Για τη μετατροπή αυτή, χρησιμοποιούμε τρία είδη μετασχηματισμών: Α. Αντικατάσταση Α α 1 α n B β 1 Αβ 2 Α α 1 α n B β 1 α 1 β 2 β 1 α n β 2 86

87 Συντακτική Ανάλυση Top-Down (7) B. Αριστερή Παραγοντοποίηση Α αβ 1 αβ n Α αb B β 1 β n Γ. Απαλοιφή Αριστερής Αναδρομής (ΑΑ) Άμεση ΑΑ: Α Αα Έμμεση ΑΑ: Α Βα 1, Β Cα 2, C Aα 3 (δηλ. Α Αα 3 α 2 α 1 ) Α Αα 1 Αα n β 1 β m Α β 1 Β β m B B α 1 Β α n B є 87

88 Συντακτική Ανάλυση Top-Down (8) Παράδειγμα: <X> ::= <B> a <A> b <A> ::= a <A> a <B> ::= <B> b b Η γραμματική αυτή δεν είναι LL(1), διότι: Στη 2 η παραγωγή υπάρχουν 2 εναλλακτικοί κανόνες που αρχίζουν με το ίδιο σύμβολο (a). Η 3 η παραγωγή έχει άμεση αριστερή αναδρομή. Για να δημιουργήσουμε μια ισοδύναμη LL(1) γραμματική, θα κάνουμε τις εξής 2 μετατροπές: 88

89 Συντακτική Ανάλυση Top-Down (9) Στη 2 η παραγωγή θα χρησιμοποιήσουμε το μετασχηματισμό της Αριστερής Παραγοντοποίησης: <A> ::= a <A> a <A> ::= a <C> <C> ::= <A> є Στην 3 η παραγωγή θα χρησιμοποιήσουμε το μετασχηματισμό της Απαλοιφής Αριστερής Αναδρομής: <B> ::= <B> b b <B> ::= b <D> <D> ::= b<d> є 89

90 Συντακτική Ανάλυση Top-Down (10) Τελικά, η ισοδύναμη LL(1) γραμματική, είναι η: <X> ::= <B> a <A> b <A> ::= a <C> <C> ::= <A> є <B> ::= b <D> <D> ::= b<d> є 90

91 Συντακτική Ανάλυση Bottom-Up (1) Bottom-Up Συντακτική Ανάλυση (Ανοδική) Ο Συντακτικός Αναλυτής (ΣΑ) ξεκινά την κατασκευή του δέντρου συντακτικής ανάλυσης από τα φύλλα (τα τερματικά σύμβολα του προς έλεγχο string). Στη συνέχεια προσπαθεί να βρει τον αριστερότερο κόμβο που δεν έχει ακόμα φτιαχτεί, ενώ όλα τα παιδιά του έχουν φτιαχτεί. Μέχρι να κατασκευαστεί η ρίζα του δέντρου με το Start. Κάθε στιγμή ο ΣΑ πρέπει να επιλέξει ποιους από τους ήδη υπάρχοντες κόμβους θα χρησιμοποιήσει ως παιδιά του νέου κόμβου που θα φτιάξει: Ελάττωση (reducing). 91

92 Συντακτική Ανάλυση Bottom-Up (2) Παράδειγμα: <S> ::= r <B> <B> ::= <D> <B>, <D> <D> ::= a b Κατασκευή του δέντρου συντακτικής ανάλυσης για το string ra,b : 92

93 Συντακτική Ανάλυση Bottom-Up (3) <S> <S> ::= r <B> <B> ::= <D> <B>, <D> <D> ::= a b <B> <B> <D> <D> r a, b 93

94 Συντακτική Ανάλυση Bottom-Up (4) Συντακτικοί Αναλυτές ολίσθησης-ελάττωσης (shift-reduce parsers). Χρησιμοποιούν μια Στοίβα και δύο Πράξεις: Ολίσθηση (shift): Αφαιρεί ένα σύμβολο από την αρχή του string και το βάζει στην κορυφή της στοίβας. Ελάττωση (reduce): Όταν στην κορυφή της στοίβας υπάρχει το δεξί μέλος παραγωγής. Αφαιρούνται αυτά τα σύμβολα από τη στοίβα και αντικαθίστανται από το αριστερό μέλος. 94

95 Συντακτική Ανάλυση Bottom-Up (5) Βήμα Στοίβα Είσοδος Πράξη 0 є ra,b EOF Ολίσθηση 1 r a,b EOF Ολίσθηση 2 ra,b EOF Ελάττωση <D> ::= a 3 r<d>,b EOF Ελάττωση <B> ::=<D> 4 r<b>,b EOF Ολίσθηση 5 r<b>, b EOF Ολίσθηση 6 r<b>,b EOF Ελάττωση <D> ::= b 7 r<b>,<d> EOF Ελάττωση <B> ::= <B>, <D> 8 r<b> EOF Ελάττωση <S> ::= r <B> 9 <S> EOF Αναγνώριση 95

96 Συντακτική Ανάλυση Bottom-Up (6) Προβλήματα: Στο Βήμα 4 υπήρχαν δύο επιλογές: ολίσθηση ή ελάττωση με τον κανόνα <S> ::= r <B>. Η 2 η επιλογή καταλήγει σε αδιέξοδο, γιατί η ανάλυση τελειώνει χωρίς να έχει σαρωθεί όλο το string εισόδου: Σύγκρουση ολίσθησης-ελάττωσης (shift-reduce conflict) Στο Βήμα 7 υπήρχαν δύο επιλογές: ελάττωση με τον κανόνα <B> ::= <B>, <D> ή ελάττωση με τον κανόνα <B> ::= <D>. Η 2 η επιλογή δεν είναι καλή, γιατί δεν μπορεί να προχωρήσει η ανάλυση: Σύγκρουση ελάττωσης-ελάττωσης (reduce-reduce conflict) Τέτοια προβλήματα λύνονται από ντετερμινιστικούς ΣΑ ολίσθησης-ελάττωσης, τους LR(k). 96

97 Συντακτική Ανάλυση Bottom-Up (7) Bottom-up ΣΑ LR(k) Left-to-right διάβασμα string Rightmost δημιουργία παραγωγών Αριθμός tokens που διαβάζονται (look-ahead symbols) 97

98 Συντακτική Ανάλυση Bottom-Up (8) Στην πράξη χρησιμοποιούνται οι LR(1). Η λειτουργία τους είναι περισσότερο πολύπλοκη από αυτή των LL(1). Δεν αντιμετωπίζουν πρόβλημα με αριστερή αναδρομή. Το εργαλείο bison είναι γεννήτορας συντακτικών αναλυτών για γραμματικές χωρίς συμφραζόμενα τύπου LR(1) 98

99 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 99

100 Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση

101 Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Γιάννης Γαροφαλάκης, «Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών. Σύνταξη Γλωσσών Προγραμματισμού». Έκδοση: 1.0. Πάτρα Διαθέσιμο από τη δικτυακή διεύθυνση: 101

102 Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 102

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών ΤΜΗΥΠ Πανεπιστήμιο Πατρών Εισαγωγή Οι διαφορές των ΓΠ στις συντακτικές δομές τους, είναι πολύ μεγαλύτερες από

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 7: Υπορουτίνες Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction)

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

Κεφάλαιο 2: Τυπικές γλώσσες

Κεφάλαιο 2: Τυπικές γλώσσες Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

Θέματα υπολογισμού στον πολιτισμό Θέματα υπολογισμού στον πολιτισμό Ενότητα 4: Μοντελοποίηση υπολογισμού: Γραμματικές Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

Θέματα υπολογισμού στον πολιτισμό

Θέματα υπολογισμού στον πολιτισμό Θέματα υπολογισμού στον πολιτισμό Ενότητα 5: Μοντελοποίηση υπολογισμού: Πεπερασμένα αυτόματα Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και

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

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 05 & 06 25 & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

Θέματα υπολογισμού στον πολιτισμό Θέματα υπολογισμού στον πολιτισμό Ενότητα 6: Μοντελοποίηση υπολογισμού: Κανονικές εκφράσεις Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)

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

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

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

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 5 η Άσκηση Συγχώνευση & απαρίθμηση Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων 1 η Διάλεξη Ενδεικτικές λύσεις ασκήσεων 1 Περιεχόμενα 1 η Άσκηση... 3 2 η Άσκηση... 3 3 η Άσκηση... 3 4 η Άσκηση... 3 5 η Άσκηση... 4 6 η Άσκηση... 4 7 η Άσκηση... 4 8 η Άσκηση... 5 9 η Άσκηση... 5 10

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

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

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 1: Εισαγωγή Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

Εισαγωγή στους Υπολογιστές

Εισαγωγή στους Υπολογιστές Εισαγωγή στους Υπολογιστές Ενότητα #5: Δομές επιλογής Καθ. Δημήτρης Ματαράς Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών Δομές επιλογής MATLAB Programming Α. Καλαμπούνιας Η δομή επιλογής if Η δομή if στο

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

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου,

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

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

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

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 5 η Άσκηση - Συγχώνευση Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ Ι Σημειώσεις MATLAB Ενότητα 4 ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 4 Σημειώσεις βασισμένες στο

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

Αριθμητική Ανάλυση. Ενότητα 1: Εισαγωγή Βασικές Έννοιες. Φραγκίσκος Κουτελιέρης Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

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

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

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216 Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216 Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Ψηφιακή Λογική Σχεδίαση

Ψηφιακή Λογική Σχεδίαση Ψηφιακή Λογική Σχεδίαση Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σημείωμα Αδειοδότησης Το παρόν

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο) Προγραμματισμός Η/Υ Ενότητα 2β: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας του Τελεστή

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 8 Σημειώσεις βασισμένες στο βιβλίο Το MATLAB στην Υπολογιστική

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

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΜΑΘΗΜΑ: Μεταγλωττιστές Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Μεταγλωττιστές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ενότητα 3: Ειδικές Παράμετροι-Είσοδος & Έξοδος Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Ειδικές Παράμετροι-Είσοδος & Έξοδος

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

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος)

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος) Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος) Γρηγόριος Μπεληγιάννης Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων και Τροφίμων

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

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

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 6 η Άσκηση - DFS δένδρα Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν

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

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας 1 Περιεχόμενα 1 η Άσκηση... 4 2 η Άσκηση... 7 3 η Άσκηση... 10 Χρηματοδότηση... 12 Σημείωμα Αναφοράς... 13 Σημείωμα Αδειοδότησης...

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

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής Προγραμματισμός Η/Υ Ενότητα 4: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Έλεγχος της ροής ενός προγράμματος

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Συναρτήσεις-Δομές Ελέγχου : 1. Συναρτήσεις Χρήστη 2. Έλεγχος Ροής Προγράμματος 3.

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

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

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

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

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

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 5: Μη κανονικές γλώσσες Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

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

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

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Ενότητα 7: Παράγωγος, ελαστικότητα, παραγώγιση συναρτήσεων (Φροντιστήριο) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Σύγχρονες Εφαρμογές Τεχνολογιών της Πληροφορίας και των Επικοινωνιών

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

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 5: Εντολές Αντικατάστασης, Συναρτήσεις και Σχόλια στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεωρία Υπολογισμού Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης Προγραμματισμός Η/Υ Ενότητα 5: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Έλεγχος της ροής του προγράμματος

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Ενότητα 6: Όριο και συνέχεια συναρτήσεων (Θεωρία) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών

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

Βέλτιστος Έλεγχος Συστημάτων

Βέλτιστος Έλεγχος Συστημάτων Βέλτιστος Έλεγχος Συστημάτων Ενότητα 7: Βέλτιστος έλεγχος συστημάτων διακριτού χρόνου Καθηγητής Αντώνιος Αλεξανδρίδης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σημείωμα

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού» ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b

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

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Εισαγωγή στους Η/Υ Ενότητα 2β: Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Εύρεση συνάρτησης Boole όταν είναι γνωστός μόνο ο πίνακας αληθείας.

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ενότητα 10: Δημιουργία Βάσεων Κανόνων Από Δεδομένα-Προετοιμασία συνόλου δεδομένων Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δημιουργία Βάσεων Κανόνων

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 2 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 8: Δείκτες Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός Κεφάλαιο Γ.4: Ολοκλήρωση με Αντικατάσταση Όνομα Καθηγητή: Γεώργιος Ν. Μπροδήμας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Κβαντική Επεξεργασία Πληροφορίας

Κβαντική Επεξεργασία Πληροφορίας Κβαντική Επεξεργασία Πληροφορίας Ενότητα 4: Κλασσική και Κβαντική Πιθανότητα Σγάρμπας Κυριάκος Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σκοποί ενότητας Σκοπός της ενότητας

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 9: Μνήμη Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος) Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων

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

Διαχείριση Έργων. Ενότητα 10: Χρονοπρογραμματισμός έργων (υπό συνθήκες αβεβαιότητας)

Διαχείριση Έργων. Ενότητα 10: Χρονοπρογραμματισμός έργων (υπό συνθήκες αβεβαιότητας) Διαχείριση Έργων Ενότητα 10: Χρονοπρογραμματισμός έργων (υπό συνθήκες αβεβαιότητας) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων &

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1 Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1 Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Templates ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 5: Διαχείριση Έργων υπό συνθήκες αβεβαιότητας

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 5: Διαχείριση Έργων υπό συνθήκες αβεβαιότητας Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 5: Διαχείριση Έργων υπό συνθήκες αβεβαιότητας Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Συναρτήσεις 60 Ροή ελέγχου Είναι η σειρά µε την οποία εκτελούνται οι εντολές. Μέχρι τώρα, «σειριακή»,

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

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

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

Επιχειρησιακή Έρευνα

Επιχειρησιακή Έρευνα Επιχειρησιακή Έρευνα Ενότητα 10: Ειδικές περιπτώσεις επίλυσης με τη μέθοδο simplex (2o μέρος) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων

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

Διαχείριση Πολιτισμικών Δεδομένων

Διαχείριση Πολιτισμικών Δεδομένων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Διαχείριση Πολιτισμικών Δεδομένων Ενότητα 6: Εισαγωγή στις Βάσεις Δεδομένων Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και

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

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

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 8: Ιδιότητες Γραμματικών χωρίς Συμφραζόμενα Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ενότητα 1: Εισαγωγή στη Γλώσσα Lisp Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Εισαγωγή στη Lisp : 1. Εισαγωγή 2. Θεμελιώδεις

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

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

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 09 18 /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες Πίνακας

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

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII Εαρινό Εξάμηνο 2018-2019 Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Γραμματικές Μία γραμματική ονομάζεται αναδρομική εφόσον επιτρέπει παραγωγές

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 4: Δομές Ελέγχου Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 5: Εισαγωγή στην Προσομοίωση

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 5: Εισαγωγή στην Προσομοίωση Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 5: Εισαγωγή στην Προσομοίωση Γαροφαλάκης Ιωάννης Πολυτεχνική Σχολή Τμήμα Μηχ/κών Η/Υ & Πληροφορικής Σκοποί ενότητας Κατά τη διάρκεια της ζωής ενός συστήματος,

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας

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

Δομές Δεδομένων Ενότητα 4

Δομές Δεδομένων Ενότητα 4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Εισαγωγή στους Αλγορίθμους Ενότητα η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr

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

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός 1 Περίληψη

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 4: Εντολές ελέγχου ροής Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Δομές Δεδομένων Ενότητα 3

Δομές Δεδομένων Ενότητα 3 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 3: Στοίβα Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 4: Δίκτυα Συστημάτων Αναμονής

Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 4: Δίκτυα Συστημάτων Αναμονής Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Ενότητα 4: Δίκτυα Συστημάτων Αναμονής Γαροφαλάκης Ιωάννης Πολυτεχνική Σχολή Τμήμα Μηχ/κών Η/Υ & Πληροφορικής Γιατί δίκτυα συστημάτων αναμονής; Τα απλά συστήματα

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

Κβαντική Επεξεργασία Πληροφορίας

Κβαντική Επεξεργασία Πληροφορίας Κβαντική Επεξεργασία Πληροφορίας Ενότητα 11: Είδη και μετασχηματισμοί πινάκων Σγάρμπας Κυριάκος Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Σκοποί ενότητας Είδη και μετασχηματισμοί

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

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

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

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

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης

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

Θεωρία Λήψης Αποφάσεων

Θεωρία Λήψης Αποφάσεων Θεωρία Λήψης Αποφάσεων Ενότητα 8: Αναζήτηση με Αντιπαλότητα Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων & Τροφίμων (Δ.Ε.Α.Π.Τ.) Αναζήτηση

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

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων 4 η Διάλεξη Ενδεικτικές λύσεις ασκήσεων 1 Περιεχόμενα 1 η Άσκηση... 3 2 η Άσκηση... 3 3 η Άσκηση... 4 4 η Άσκηση... 5 5 η Άσκηση... 6 6 η Άσκηση... 7 Χρηματοδότηση... 8 Σημείωμα Αναφοράς... 9 Σημείωμα

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

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

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Αριθμητικά Συστήματα ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Βασικές Έννοιες Ένα Αριθμητικό Σύστημα αποτελείται από ένα

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

Κατηγορικές Γραµµατικές

Κατηγορικές Γραµµατικές Κατηγορικές Γραµµατικές Γραµµατικές Χωρίς περιορισµούς Με συµφραζόµενα Χωρίς συµφραζόµενα Κανονικές Πεπερασµένων επιλογών Κατηγορικές Ενεργοποίησης Γραµµατικές G = { T, N, P, S } Τ: αλφάβητο τερµατικών

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Μαθηματικά Διοικητικών & Οικονομικών Επιστημών Ενότητα 11: Διανύσματα (Φροντιστήριο) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων &

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος

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