Εργασία Προγραµµατισµού



Σχετικά έγγραφα
ΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009

Εργασία Προγραµµατισµού

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών & Μηχανικών Υπολογιστών Τομέας Πληροφορικής

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

Αντικειµενοστρεφής Προγραµµατισµός

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Flex. Μεταγλωττιστές, Χειμερινό εξάμηνο

Η γλώσσα προγραμματισμού Strange

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

for for for for( . */

Κλάσεις και Αντικείµενα

Αντικειμενοστρεφής Προγραμματισμός

Παρουσίαση του εργαλείου BISON

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

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

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

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Εισαγωγή στην γλώσσα προγραμματισμού C

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

Εργαστήριο 08 Εισαγωγή στo Yacc

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Επανάληψη για τις Τελικές εξετάσεις

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

ΗΥ-150. Προγραμματισμός

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

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

ΗΥ-150. Προγραμματισμός

είκτες και Πίνακες (2)

Δομημένος Προγραμματισμός (ΤΛ1006)

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Η γλώσσα προγραμματισμού C

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

3. Εκφράσεις και έλεγχος ροής

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

Παρουσίαση του εργαλείου FLEX

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

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

Η βασική συνάρτηση προγράμματος main()

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομές ελέγχου ροής προγράμματος

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Προγραµµατιστικές Τεχνικές

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

3 Αλληλεπίδραση Αντικειμένων

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc

Παρουσίαση του εργαλείου BISON

Μεταγλωττιστές 2019 Θέμα εργασίας

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

Η γλώσσα προγραμματισμού EEL

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Τύποι δεδομένων, τελεστές, μεταβλητές

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

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

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Transcript:

ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 Τµήµα Ηλεκτρονικών ΠΟΛΥΤΕΧΝΕΙΟ Μηχανικών και ΚΡΗΤΗΣ Μηχανικών Υπολογιστών ΘΕΩΡΙΑ ΠΛΗ ΥΠΟΛΟΓΙΣΜΟΥ 401 Μιχαήλ ιδάσκων Γ. Λαγουδάκης Εργασία Προγραµµατισµού Σπύρος Επιµέλεια Αργυρόπουλος εργασίας Χειµερινό Εξάµηνο 2006-2007 σελ. 1/15

ΠΛΗ 1. Εισαγωγή 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 αναλυτικά εργασία προγραµµατισµού του µαθήµατος «ΠΛΗ 401 - Θεωρία Υπολογισµού» γλώσσα έχει εργαλείων, στο Συγκεκριµένα, ως πρόβληµα στόχο όπως η τη εργασία της οι βαθύτερη κανονικές µεταγλώττισης αφορά κατανόηση εκφράσεις στη σχεδίαση (compilation) και της οι και χρήσης γραµµατικές υλοποίηση γλωσσών και εφαρµογής χωρίς των προγραµµατισµού. αρχικών συµφραζόµενα, θεωρητικών λογισµικό. Η ενός εργασία µεταγλωττιστή C θα παρακάτω. και εκπονηθεί εργαλεία (compiler) Για σε δύο την flex για στάδια: υλοποίηση και φανταστική bison της οποία εργασίας γλώσσα είναι FiX, θα διαθέσιµα η χρησιµοποιήσετε οποία περιγράφεται ως ελεύθερο σταδίων τη Παρατηρήσεις 1. λεκτικού 40% αναλυτή για την γλώσσα FiX µε χρήση flex 1. 2. Προθεσµία Η Ποσοστό Υλοποίηση εργασία βαθµού: παράδοσης: συντακτικού θα εκπονηθεί 60% 04-12-2006, 13-11-2006, αναλυτή από οµάδες για 11:59µµ τη φοιτητών γλώσσα FiX το πολύ µε χρήση δύο bison ατόµων. Τα 3. 2. ονόµατα αποστολή των της οµάδων 1ης φάσης και στο οι theory@intelligence.tuc.gr. αριθµοί µητρώου πρέπει να δηλωθούν πριν την theory@intelligence.tuc.gr υπολογιστές λογαριασµούς του Οι Για δύο την Εργαστηρίου φάσεις εκπόνηση του πρόσβασης της Μηχανογραφικού της εργασίας Συστηµάτων εργασίας στο θα softnet µπορούν πρέπει Κέντρου ως Λογισµικού απευθυνθείται συννηµένα να να και αποσταλλούν χρησιµοποιηθούν προσωπικοί αρχεία (softnet) στον.zip κ. εµπρόθεσµα υπολογιστές. Αργυρόπουλο. ή µε τα εναλλακτικά υπολογιστές επώνυµα στο Για 6. 5. 4. προφορική της Στη οµάδας 2η φάση, (π.χ. εκτός Argyropoulos_Lagoudakis.zip) από τον κώδικα, θα πρέπει και subject παραδώσετε «ΦΑΣΗ Α/Β». θα συνοπτική τεχνικές Η αξιολόγηση που αναφορά χρησιµοποιήθηκαν της (δακτυλογραφηµένη, εργασίας και θα τις γίνει ιδιαιτερότητες PDF ατοµικά µορφή) της και εργασίας που θα θα περιλαµβάνει σας. εξηγεί και µια το Οι αντίστοιχο γίνονται ηµεροµηνίες εξέταση δεκτές. ποσοστό παράδοσης Αν σε ηµεροµηνίες βαθµού. κάποιο είναι στάδιο αυστηρές και της ώρες εργασίας που και οι θα δεν εκπρόθεσµες ανακοινωθούν. παραδοθεί, εργασίες θα χάνεται τις δε σελ. 2/15

ΠΛΗ περιγραφή πιθανής 2. Η γλώσσα Η 401 γλώσσα ΘΕΩΡΙΑ FiX βασίζεται ΥΠΟΛΟΓΙΣΜΟΥ προγραµµατισµού στη γλώσσα C++. Λόγω FiX οµοιοτήτων ΧΕΙΜΕΡΙΝΟ της FiX ΕΞΑΜΗΝΟ µε την C++, 2006-2007 Κάθε πρόγραµµα ασάφειας τονίζει µπορείτε σε κυρίως γλώσσα σηµεία να FiX ανατρέξετε όπου είναι ένα οι στην δύο σύνολο περιγραφή γλώσσες από διαφέρουν. λεκτικές της C++. µονάδες, Σε περιπτώσεις οι οποίες η είναι παρακάτω. 2.1 Οι λεκτικές Τις Λεκτικές διατεταγµένες µονάδες Μονάδες της µε βάση γλώσσας κάποιους FiX χωρίζονται συντακτικούς στις παρακάτω κανόνες, όπως κατηγορίες: περιγράφονται integer else public λέξεις κλειδιά, class break private οι οποίες false static while είναι οι παρακάτω: new boolean goto continue char if for Ειδικά κεφαλαία, αναγνωριστεί Τα float για τις λέξεις main κλειδιά, return πεζά γράµµατα void θεωρούνται true αποτελούνται πιθανώς εποµένως και σαν για Main παράδειγµα ή MAIn ή η MaiN λέξη κλειδί κ.τ.λ. main θα ίδια πρέπει µε τα να αντίστοιχα δεκαδικών αναγνωριστικά από ένα (ονόµατα πεζό ή κεφαλαίο µεταβλητών γράµµα και του συναρτήσεων), λατινικού αλφαβήτου, τα µπορεί οποία να δεν πρέπει ακολουθούµενο ψηφίων συµπίπτουν ή χαρακτήρων µε από τις λέξεις µια υπογράµµισης σειρά κλειδιά πεζών που (underscore). αναφέρθηκαν ή κεφαλαίων Tα παραπάνω. αναγνωριστικά γραµµάτων, δεκαδικά Οι µέρος, Παραδείγµατα: ακέραιες σταθερές x χωρίς y1 πρόσηµο, angle που my_value αποτελούνται από Distance_02 πραγµατικές ένα Παραδείγµατα: ψηφία χωρίς σταθερές περιττά 0 χωρίς µηδενικά και 42 πρόσηµο, ένα 1284200 προαιρετικό στην που αρχή. δεκαδικά αποτελούνται εκθετικό 3 ψηφία 100001 µέρος. ένα από χωρίς ή περισσότερα ένα Το ακέραιο περιττά ή µηδενικά. (.) - ακολουθούµενο και αποτελείται ένα Το κλασµατικό περισσότερα από από το ένα πεζό µέρος δεκαδικά ή ή περισσότερα αποτελείται κεφαλαίο ψηφία γράµµα και από δεκαδικά πάλι το E, χαρακτήρα χωρίς ένα ψηφία. προαιρετικό περιττά Τέλος, της µηδενικά. υποδιαστολής πρόσηµο εκθετικό + \ εισαγωγικά. χαρακτήρας όλοι του Οι (backslash) σταθεροί Παραδείγµατα: οι εκτυπώσιµοι ή χαρακτήρες, Ο και ακολουθία \ χαρακτήρας περιγράφονται (backslash). 42.0 χαρακτήρες διαφυγής που Οι 4.2e1 αυτός αποτελούνται στον ακολουθίες πλην (escape Πίνακα µπορεί των 0.420E+2 sequence). απλών διαφυγής 1. από να ένα και είναι χαρακτήρα ξεκινούν διπλών Κοινοί 42000.0e-3 οποιοσδήποτε χαρακτήρες εισαγωγικών µε µέσα το χαρακτήρα σε κοινός απλά σελ. είναι 3/15 και

ΠΛΗ Παραδείγµατα: 401 ΘΕΩΡΙΑ Χαρακτήρας ΥΠΟΛΟΓΙΣΜΟΥ \n a M 1 ~ @ ΧΕΙΜΕΡΙΝΟ \n ΕΞΑΜΗΝΟ \ 2006-2007 \t \r αλλαγής στηλοθέτησης επιστροφής Περιγραφή γραµµής στην (TAB) αρχή (line της feed) γραµµής Οι σταθερές \0 \\ \' \" συµβολοσειρές Πίνακας χαρακτήρας 1. Ακολουθίες (strings), µε \'" (backslash) (απλό (διπλό ASCII που εισαγωγικό) (escape κωδικό αποτελούνται sequences) 0 από µια ακολουθία κοινών χαρακτήρων ή ακολουθιών διαφυγής µέσα διπλά εισαγωγικά. Οι = σταθερές γραµµές Παραδείγµατα: του "Name:\t\"Douglas συµβολοσειρές προγράµµατος. "abc" δεν µπορούν "Route Adams\"\nValue:\t42\n" να 66" εκτείνονται "Hello σε περισσότερες world!\n" από µια ++ Εκτός > τελεστές, < οι οποίοι!= είναι >= οι παρακάτω: επίσης -- += -=*= <= /= + %=-&&* /!% αλλά Τους από διαχωριστές, τις { λεκτικές } οι µονάδες οποίοι ; είναι. που οι προαναφέρθηκαν, ( παρακάτω: ):, ένα πρόγραµµα [] FiX == µπορεί & δεν να κάνετε περιέχει τίποτα τα παρακάτω, για αυτά): τα οποία αγνοούνται (δηλαδή τα αναγνωρίζετε µε Κενούς (space), feed) Σχόλια, την ή χαρακτήρες, τα πρώτη οποία µετέπειτα αρχίζουν επιστροφής στηλοθέτησης δηλαδή εµφάνιση µε ακολουθίες στην ακολουθία αρχή (tab), της της ακολουθίας αποτελούµενες χαρακτήρες χαρακτήρων γραµµής (carriage χαρακτήρων αλλαγής από /* και κενά return). γραµµής τερµατίζονται */. διαστήµατα Κατά (line 2.2 συνέπεια, τα σχόλια δεν επιτρέπεται να είναι φωλιασµένα. Στο εσωτερικό τους Ένα εκτείνονται επιτρέπεται γραµµής, η εµφάνιση το οποία οποιουδήποτε αρχίζουν χαρακτήρα. Συντακτική ως οµή το τέλος της τρέχουσας γραµµής. µε την ακολουθία χαρακτήρων // και πρόγραµµα ηλώσεις FiX µεταβλητών συναρτήσεων κλάσεων αποτελείται από τα παρακάτω: σελ. 4/15

ΠΛΗ εν παράδειγµα, συνέχεια ξανά υπάρχει 401 ΘΕΩΡΙΑ κανένας ΥΠΟΛΟΓΙΣΜΟΥ περιορισµός στην σειρά την οποία ΧΕΙΜΕΡΙΝΟ εµφανίζονται ΕΞΑΜΗΝΟ αυτά. 2006-2007 Ισχύουν 1. συναρτήσεις, δηλώσεις πρόγραµµα κλάσεις συναρτήσεων, κ.ο.κ. θα µπορεί µετά να ξανά έχει µεταβλητές, στην αρχή δηλώσεις µετά δηλώσεις µεταβλητών, κλάσεων, στη Για 2. και Θα void Ένα τα πρέπει κλάσεων. παρακάτω: πρόγραµµα main() να υπάρχει µπορεί απ πρέπει όπου υποχρεωτικά να και έχει ξεκινά µηδέν µία ο ή η ορισµός περισσότερες ή εκτέλεση της του συνάρτησης προγράµµατος. δηλώσεις µε συναρτήσεων. επικεφαλίδα µεταβλητών 2.2.13. Σε κάθε δηλωθείσα συνάρτηση αντιστοιχεί ένα σώµα, οποίο Η Παρακάτω περιλαµβάνονται FiX περιλαµβάνει εντολές περιγράφονται που σε καθορίζουν ένα άλλες πρόγραµµα αναλυτικά δηλώσεις λειτουργία της µεταβλητών όλα γλώσσας της δοµικά FiX. συνάρτησης. και επιπλέον συστατικά µια που ακολουθία µπορεί από Τύποι δεδοµένων να υποστηρίζει integer: boolean: char: float: χαρακτήρες πραγµατικοί ακέραιοι λογικές τέσσερις τιµές βασικούς αριθµοί τύπους δεδοµένων: integer float 2.2.2 Οι δηλώσεις Μεταβλητές Εκτός ένα καταλήγουν ή περισσότερα µεταβλητών το διαχωριστικό ονόµατα γίνονται µεταβλητών ;. Παραδείγµατα την αναγραφή (χωρισµένων δηλώσεων του τύπου µε είναι: το ακολουθούµενου διαχωριστικό,) από πολυδιάστατους από a,b,c; i; τους πίνακες. βασικούς Μια τύπους, δήλωση η πίνακα FiX υποστηρίζει είναι της µορφής επίσης µονοδιάστατους και ή char <τύπος> <όνοµα> [<µέγεθος>][<µέγεθος>]...[<µέγεθος>]; Συνδυασµοί float Το από integer µέγεθος µια ακέραιη spok[k]; spok[23], πίνακα µεταβλητή. σε spook[45]; κάθε Παραδείγµατα διάσταση δίνεται δηλώσεων είτε πινάκων: από µια ακέραια σταθερά είτε επιτρέπονται. κατά τη spok[k][n]; δήλωση απλών Επιτρέπεται µε προαιρετική µεταβλητών επίσης χρήση και η αρχικοποίηση πινάκων του τελεστή του απλών προσήµου. ιδίου µεταβλητών τύπου Για στην παράδειγµα: (όχι ίδια σελ. πινάκων) δήλωση 5/15

ΠΛΗ float Επιπλέον παράδειγµα: static 401 ΘΕΩΡΙΑ x=-100.50, στη δήλωση ΥΠΟΛΟΓΙΣΜΟΥ των matrix[k][100], µεταβλητών βυποστηρίζεται y_24=+30e-4; και ΧΕΙΜΕΡΙΝΟ ο όρος ΕΞΑΜΗΝΟ static. 2006-2007 2.2.3 Κάθε ακολουθούµενη Συναρτήσεις integer i=25, k[40][i]; Για συνάρτησης, αποτελέσµατος. έχει της τον συνάρτηση οι από τυπικές είναι το µια σώµα της δοµική παράµετροι της. µονάδα Στην µέσα επικεφαλίδα που σε αποτελείται παρενθέσεις αναφέρεται από και την το ο επικεφαλίδα κατ' ορίζεται τυπικές παραµέτρους. ως Οι void. παρενθέσεις Κάθε Επίσης, τυπική είναι παράµετρος υποχρεωτικές η συνάρτηση χαρακτηρίζεται ακόµα δεν επιστρέφει και µία από τιµή συνάρτηση το τότε όνοµά όνοµα τύπος ο τύπος της, του δεν στη τυπικής επικεφαλίδων void integer τύπο FiX αξία περνώνται (by της value) και τον κατ και τρόπο κατ' αξία αναφορά περάσµατος. εκτός αν (by προηγηθεί reference). Η FiX ο υποστηρίζει διαχωριστής Εξ ορισµού πέρασµα & όλες του οι ονόµατος παραµέτρων float f1 παραµέτρου (); συναρτήσεων. οπότε περνά κατ αναφορά. Ακολουθούν παραδείγµατα παράµετροι Το περιορισµό συνάρτησης σώµα f3 µιας f2 (integer συνάρτησης &a); a, περικλείεται char b); περιγράφονται στη µπορεί σειρά να µε αποτελείται την οποία από εµφανίζονται. δηλώσεις µέσα σε µεταβλητών άγκιστρα Αν ο τύπος {}. και επιστροφής Το εντολές σώµα χωρίς µιας integer εντολές. θα πρέπει Αν το είναι τύπος void, επιστροφής σώµα της της συνάρτησης µπορεί να δεν περιέχει είναι void µηδέν τότε ή περισσότερες p=34*k; να foo(integer στην περιέχει p; ενότητα τουλάχιστον 2.2.5. k, float Ακολουθεί την bound){ εντολή παράδειγµα επιστροφής συνάρτησης return. µε Οι σώµα: εντολές της } integer for(i=1; i=0; z=0; i<=k; i++){ 2.2.4 if (z<bound) Οι } return z; z=p*i; ορίσµατα. ορισµένοι (infix). αριστερά τελεστές Τελεστές Η µετά αποτίµηση προς Από της (postfix), τους FiX τα δεξιά. διακρίνονται πρώτους, των ενώ ορισµάτων Στον οι ορισµένοι δεύτεροι σε Πίνακα τελεστές των γράφονται τελεστών 2 µε ορίζεται ένα µε πάντα πριν όρισµα δυο η το µεταξύ προτεραιότητα ορίσµατα και όρισµα τελεστές των (prefix) γίνεται ορισµάτων µε δύο σελ. και 6/15 από και η

ΠΛΗ εµφανίζονται την προσεταιριστικότητα ίδια 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ των τελεστών της FiX. Προηγούνται ΧΕΙΜΕΡΙΝΟ οι ΕΞΑΜΗΝΟ τελεστές 2006-2007 ++ Τελεστές προτεραιότητα. πιο ψηλά στον πίνακα. Όσοι τελεστές βρίσκονται στο ίδιο κελί έχουν που! -- Αύξηση, Λογική Πρόσηµα Περιγραφή άρνηση µείωση Ορίσµατα 1 Προσεταιριστικότητα prefix, prefix Θέση postfix <= == * + >= /-% Πολλαπλασιαστικοί τελεστές Προσθετικοί τελεστές && > <!= Σχεσιακοί σύζευξη τελεστές infix 2.2.5 Λογική διάζευξη infix, αριστερή Οι = += %=-= *=/= γλώσσας εντολές Εντολές Πίνακας 2. Προτεραιότητα Τελεστές ανάθεσης και προσεταιριστικότητα 2 των τελεστών infix, της δεξιά FiX όπως FiX κενή εντολή που τερµατίζει εντολή υποστηρίζει ανάθεσης (;) µε που l το η δεν = γλώσσα διαχωριστικό e;, κάνει όπου FiX καµία l είναι ;): είναι ενέργεια. οι µία ακόλουθες µεταβλητή (κάθε και απλή e µια εντολή έκφραση της - ορίζεται Απλή ήλωση Εντολή εντολή και ανάθεσης µεταβλητής στην ανάθεσης, C++. χρήση µε Υποστηρίζονται αρχικοποίηση, π.χ. casting, i = k π.χ. + τρία π.χ. 2; i είδη integer = (integer) εντολών i ανάθεσης: = 0; k; τύπο Η Το σε σύνθετη άγκιστρα ελέγχου εντολή, {}. if που ( αποτελείται e ) s1 από else µια σειρά s2. Η έγκυρων έκφραση εντολών e πρέπει ανάµεσα boolean εντολή τµήµα boolean else βρόχου και το είναι και s while να τα προαιρετικό. είναι s1, ( s2 έγκυρη e να ) είναι εντολή. s. έγκυρες Η έκφραση (απλές e ή πρέπει σύνθετες) να έχει να έχει σελ. εντολές. τύπο 7/15

ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 είναι προαιρετικές βρόχου µε ετικέτα for και I:s, τo ( s όπου e1; πρέπει I e2; να το είναι e3 έγκυρη ) µιας s. εντολή. Οι εκφράσεις και s e1,e2,e3 εντολή. εσωτερικό H άλµατος συνέχειας διακοπής βρόχο, goto όπως break;, continue; ακριβώς I;, όπου και I προκαλεί στη το όνοµα C++. την µιας συνέχεια άµεση ετικέτας. έξοδο του βρόχου από µια τον έγκυρη µέσα πιο στον οποίο βρίσκεται, όπως ακριβώς και στη C++. της Η αποτέλεσµα αποτελέσµατος τρέχουσας εντολή εντολή συνάρτησης κλήσης επιστροφής συνάρτησης της void µιας συνάρτησης. και τότε συνάρτησης e1,..,en return και η έκφραση επιστρέφει Αν e;, είναι f(e1,..,en);, η e τρέχουσα θα που εκφράσεις την πρέπει τερµατίζει τιµή συνάρτηση να όπου παραλείπεται. της την αντιστοιχούν έκφρασης f είναι έχει εκτέλεση το ως όνοµα e τύπο στα της ως βρίσκονται δηλωθέντα ορίσµατα. Αν ο τύπος του αποτελέσµατος της συνάρτησης δεν τους: 2.2.6 Η FiX Προκαθορισµένες έκφρασης είναι υποστηρίζει void e. η εντολή ένα συναρτήσεις σύνολο κλήσης µιας προκαθορισµένων συνάρτησης µπορεί συναρτήσεων, είναι όρισµα οι οποίες µιας integer writeboolean writechar writereal writeinteger διάθεση του προγραµµατιστή. (float (boolean (integer c); d); b); a); Παρακάτω, δίνονται οι επικεφαλίδες boolean char writestring readchar readinteger(); readboolean (char a[]); σώµα float readreal µιας 2.2.7 H FiX Κλάσεις είναι void οντοκεντρική readstring γλώσσα (integer όπως και size, η C++. char Μια string[]); class } τη λέξη κλάσης µιας κλειδί κλάσης είναι class η πρέπει ακόλουθη: ακολουθούµενη να βρίσκεται µέσα από το σε όνοµα άγκιστρα. και κλάση το Οπότε σώµα στην η FiX µορφή της κλάσης. ορίζεται ορισµού Το µε To συναρτήσεων σώµα name body µιας (µεθόδων). { κλάσης µπορεί Οι δηλώσεις να περιέχει των µεταβλητών δηλώσεις µεταβλητών και συναρτήσεων και/ή έχουν σελ. δηλώσεις 8/15 την

ΠΛΗ περισσότερους κλάση παράδειγµα ίδια public) σύνταξη 401 ΘΕΩΡΙΑ στην όπως ΥΠΟΛΟΓΙΣΜΟΥ αρχή. παραπάνω Προαιρετικά, µε την το σώµα προσθήκη µιας κλάσης µιας λέξης µπορεί ΧΕΙΜΕΡΙΝΟ κλειδί να περιέχει ΕΞΑΜΗΝΟ (private έναν 2006-2007 class και καλείται constructors, όταν ορίζεται µια συνάρτηση ένα στιγµιότυπο δηλαδή που της κλάσης. έχει ίδιο Ακολουθεί όνοµα µε ένα την ή private foo{ ορισµού integer µιας κλάσης: public k; void add(integer i,j; integer add> sasa> sasa(){ a){ } foo(){ Για και foo(integer } <body of i){ new, να χρησιµοποιηθεί µια κλάση foo> στην για παράδειγµα συνέχεια να δηµιουργηθεί αρκεί ένα να καινούργιο οριστεί µια στιγµιότυπο µεταβλητή µε αυτό τη λέξη τον κλειδί τύπο, Foo Για = new µιας myclass = new ; foo(34); foo(); myclass.k; myclass.sasa(); να κλάσης προσπελαστούν χρησιµοποιείται οι public ο τελεστής µεταβλητές.(τελεία), και για συναρτήσεις παράδειγµα έξω από το σώµα σελ. 9/15

ΠΛΗ 3.1 Παραδείγµατα Hello 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ προγραµµάτων της FiX ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 void World! main(){ υπολογίζει 3.2 Πρώτοι } αριθµοί writestring("hello World!\n"); boolean Το εξετάζονται χρήστη. παρακάτω τους παράδειγµα πρώτους αριθµούς προγράµµατος µεταξύ στη 1 γλώσσα n, όπου FiX είναι n ένα καθορίζεται πρόγραµµα από που integer Λαµβάνεται µόνο οι αριθµοί υπόψη της ότι µορφής οι αριθµοί 6k±1, 2 και όπου 3 k είναι ακέραιος πρώτοι, αριθµός. και στη συνέχεια το boolean prime(integer if i; n){ isprime, result; (n < 0) prime(-n); < false; 2) else result if { (n == % true; 22) i isprime = false; == 0) while = 3; isprime i ( = isprime i+2; true; = (n&&% i i==0); <= n / 2 ){ } } return } result result; = isprime; σελ. 10/15

ΠΛΗ main( 401 integer ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 limit counter ){ if = limit, readinteger(); number, counter; = 0; if (limit counter writeinteger(2); >= counter 1; } number (limit counter >= = counter { while writeinteger(3); + 1; if = 6; (number <= limit) { if (prime(number-1)) counter counter { { writeinteger(number-1); 1; }((number counter writeinteger(number+1);!= = limit) counter && + prime(number+1)) 1; }} writechar('\n'); writeinteger(counter); = number + 6; σελ. 11/15

ΠΛΗ 3.3401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 class Κλάσεις private foo{ foo(integer sa=2*k; Integer k){ sa; sa=(2*k)*(n+12); k, integer n){ } void public } return integer sa; getsa(){ Integer foo test1 main(){ test,test1; = = new p; new foo(5); foo(5,8); } if else writeinteger(p); (test.getsa() p=test1.getsa(); p=test.getsa(); > test1.getsa) σελ. 12/15

ΠΛΗ 4.1 Για Αναλυτική 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ περιγραφή εργασίας ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 καλά αναπτυχθεί τους Περισσότερες υπάρχουν Τα προγραµµατισµό ολοκληρώσετε εργαλεία στα πλαίσια επιτυχώς σε του C, προγράµµατος flex την και bison. GNU του Τα µαθήµατος και εργαλεία µπορείτε χρειάζεται flex να και βρείτε να bison γνωρίζετε Στο κόµβους πληροφορίες διαδικτύου και που σύνδεσµοι διαθέτουν σχετικοί λογισµικό µε GNU (π.χ. δύο αυτά www.gnu.org). σε εργαλεία όλους έχουν ενσωµατωµένα, εγχειρίδια Οι οδηγίες λειτουργικό στην των χρήσης εργαλείων ιστοσελίδα οπότε που Linux δεν δίνονται µπορείτε του χρειάζεται (οποιαδήποτε µαθήµατος παρακάτω να να τα κατεβάσετε (www.intelligence.tuc.gr/~theory). έχουν διανοµή) δοκιµαστεί από ή τα να τη εγκαταστήσετε εργαλεία στη σελίδα διανοµή του αυτά µαθήµατος. Linux κάτι! είναι του Τα λεκτικές εργαστηρίου, πιθανόν όµως να υπάρχουν µικροδιαφορές σε άλλα συστήµατα. tokens 4.2 Το παραδοτέο 1η φάση: για Λεκτική την φάση ανάλυση η θα έξοδος παίρνει που µονάδες σαν είσοδο (tokens) ένα στο της πρόγραµµα αρχείο λεκτικής αυτό. ανάλυσης της Η γλώσσας έξοδός θα του είναι FiX θα ένα και είναι πρόγραµµα θα µία αναγνωρίζει λίστα το από οποίο του διάβασε προγράµµατός INT: integer και ο χαρακτηρισµός σας θα integer πρέπει τους. να i,k; είναι Για παράδειγµα, για είσοδο τις τα Σε i κατάλληλο Για token SEMICOLON: COMMA: ID: k, compiler Τα περίπτωση µη αναγνωρίσιµης ; τρέξετε αρχεία να φτιάξετε τον gcc. µε µήνυµα κώδικά ώστε κώδικα ένα λάθους σας man λεκτικό του ακολουθήστε και flex αναλυτή έχουν στη τερµατίζει γραµµή προέκταση λεκτικής τις θα οδηγίες χρησιµοποιήσετε η εντολής λεκτική µονάδας που.l. δίνονται για Για ανάλυση. να θα να το δείτε παρακάτω. κάνετε πρέπει εργαλείο manual compile να flex τυπώνεται του και και flex. τον να 5. 1. Γράψτε τον κώδικα σε ένα αρχείο µε προέκταση.l, π.χ. mylexer.l. 6. 4. 3. 2. Αν Τρέξτε Κάντε ώστε δεν compile, ls έχετε το µε για λάθη./mycompiler το να γράφοντας lex.yy.c δείτε στο mylexer.l, το αρχείο flex < µε example.fix, την mylexer.l lex.yy.c εντολή παράγεται gcc στη για που το το γραµµή -o παράγεται εκτελέσιµο πρόγραµµα mycompiler εντολής. από mycompiler. example.fix. lex.yy.c τον flex. σελ. lfl 13/15

ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 Εποµένως Κάθε φορά που αλλάζετε το mylexer.l θα πρέπει να κάνετε όλη την διαδικασία: Το παραδοτέο flex./compiler gcc είναι -o mylexer.l mycompiler για καλή < την example.fix ιδέα φάση lex.yy.c να αυτή φτιάξετε θα -lfl περιέχει ένα script τα παρακάτω για να κάνει αρχεία: όλα τα παραπάνω. Κώδικα mylexer.l: To αρχείο flex. δουλειά wrongx.fix, team.txt: correctx.fix, Τα X=1,2,3: ονόµατα σας Λανθασµένα Σωστά µε τους (λεκτικά) αριθµούς (λεκτικά) προγράµµατα µητρώου. προγράµµατα της γλώσσας της γλώσσας FiX. 4.3 Το σε FiX θα πρέπει να γράψετε εσείς. Είναι δική σας ευθύνη να αναδείξετε FiX. οποίο 2η φάση: σας µέσα Συντακτική από αντιπροσωπευτικά ανάλυση προγράµµατα της γλώσσας FiX. τη το ένα αριθµός κατατοπιστικό πρόγραµµα παραδοτέο µήνυµα θα παίρνει ότι ακολουθεί για το σαν την πρόγραµµα είσοδο φάση τους ένα της συντακτικούς που αρχείο συντακτικής δόθηκε της είναι γλώσσας κανόνες ανάλυσης συντακτικά FiX της θα και FiX. είναι σωστό Η αναγνωρίζει έξοδός ένα ή πρόγραµµα διαφορετικά του θα αν είναι αυτό το η γραµµής όπου διαγνώσθηκε το πρώτο λάθος και προαιρετικά ένα ο Syntax µήνυµα διάγνωσης. integer Για παράδειγµα,... i,k για λανθασµένη είσοδο Για τον Τα τρέξετε έξοδος αρχεία να φτιάξετε του error προγράµµατός ένα in συντακτικό line σας 56: θα αναλυτή πρέπει semicolon θα χρησιµοποιήσετε είναι expected. 2. compiler gcc. κώδικα ώστε του man bison bison έχουν προέκταση για να δείτε.y. το manual Για να του κάνετε bison. εργαλείο compile bison και και 3. 1. Υποθέτουµε τον κώδικά σας ότι έχετε ακολουθήστε ήδη έτοιµο τις τον οδηγίες λεκτικό που αναλυτή δίνονται στο παρακάτω. mylexer.l. να b. Γράψτε a. Για να ενώσετε τον κώδικα το flex bison µε σε αρχείο bison πρέπει µε προέκταση να κάνετε.y, εξής: π.χ. myanalyzer.y. H main αντιστοιχίσει γραµµατική Βγάλτε Βάλτε bison τα την αρχεία αρχείο. συνάρτηση mylexer.l Για αρχή main το και µόνο από myanalyzer.y το που flex χρειάζεται αρχείο στο και ίδιο φτιάξτε κάνει directory. επιτυχή yyparse() τερµατισµό είναι που να κάθε τρέχει καλεί έχετε και token γράψει µια επανειληµµένα 1 για φορά που λανθασµένο στο την επιστρέφει συντακτικό µακροεντολή την τερµατισµό. yylex() o αναλυτή. λεκτικός του και bison Επιστρέφει αναλυτής προσπαθεί yyparse(). η µια καινούρια main σελ. 14/15 0 στη για να

ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 4. c. Κάντε Αφαιρέστε άλλο γραµµή θα To έτσι δηµιουργείται αρχείο compile ο.h flex µε αυτό θα αρχείο. την καταλαβαίνει defines εντολή θα αυτόµατα Αυτά πρέπει που %token. θα να είχατε τα δηλωθούν και το ίδια κάνετε ένα κάνει Όταν tokens αρχείο τώρα include για κάνετε µε τα µε στο τoν tokens όνοµα compile στο bison. αρχείο στο myanalyzer.tab.h. αρχείο to flex myanalyzer.y mylexer.l ή ένα σε σε κάποιο κάθε και mylexer.l Προσοχή! bison flex gcc -o mylexer.l -d mycompiler myanalyzer.y Κάθε όλη Πρέπει./compiler πρώτα <test.fix να κάνετε lex.yy.c compile myanalyzer.tab.c το myanalyzer.y -lfl Το παραδοτέο την φορά διαδικασία. που γιατί αλλάζετε το Είναι myanalyzer.tab.h καλή το mylexer.l ιδέα να φτιάξετε γίνεται και myanalyzer.y include ένα script στο για mylexer.l. όλα θα τα πρέπει παραπάνω. και να µετά κάνετε το mylexer.l: myanalyzer.y: team.txt: correctx.fix, για Τα To την ονόµατα X=1,2,3: αρχείο To φάση αρχείο αυτή flex. σας Σωστά bison. µε θα τους περιέχει (συντακτικά) αριθµούς παρακάτω προγράµµατα µητρώου. αρχεία: της γλώσσας Κώδικα δουλειά wrongx.fix, τεχνικές grammar.txt: report.pdf: που Συνοπτική X=1,2,3,4,5: χρησιµοποιήσατε Η γραµµατική (δακτυλογραφηµένη) Λανθασµένα χωρίς και συµφραζόµενα τις ιδιαιτερότητες (συντακτικά) αναφορά που προγράµµατα της χρησιµοποιήσατε. εργασίας που θα σας. της εξηγεί FiX. τις 5. Στη µπορείτε Επίλογος σας σε FiX µέσα θα από πρέπει αντιπροσωπευτικά να γράψετε εσείς. προγράµµατα Είναι δική της σας γλώσσας ευθύνη να FiX. αναδείξετε τη αποστέλλονται Καλή διάρκεια επιτυχία! να απευθύνεστε του στη εξαµήνου λίστα του στον θα µαθήµατος δοθούν κ. Αργυρόπουλο. διευκρινίσεις για να τις βλέπουν Γενικές όπου χρειάζεται. απορίες και οι συνάδελφοί καλό Για ερωτήσεις είναι σας. να σελ. 15/15