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

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

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

Transcript

1 Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής του Yacc. Πρόλογος Το Yacc, είναι το ευρύτερα χρησιμοποιούμενο εργαλείο για την κατασκευή συντακτικών αναλυτών. Το όνομα είναι ένα αρκτικόλεξο για "ακόμα έναν μεταγλωττιστή μεταγλωττιστών"(yet another compiler-compiler). Στο εργαστήριο αυτό θα μάθουμε τον τρόπο με τον οποίο μπορεί να υλοποιηθεί ένας συντακτικός αναλυτής, με τη βοήθεια του Yacc. O yacc επιτρέπει την αυτόματη δημιουργία γλωσσικών επεξεργαστών και συντακτικών αναλυτών (parser). Η είσοδος του yacc είναι μια περιγραφή της δομής της ροής εισόδου του συντακτικού αναλυτή. Τυπικά η κλάση των γραμματικών για τις οποίες ο yacc μπορεί να παράγει parser λέγεται LALR(1) : ανάλυση από αριστερά προς τα δεξιά, κοιτάζοντας προς τα εμπρός το πολύ ένα σύμβολο στην είσοδο. Ο προγραμματιστής παρέχει στον yacc τους συντακτικούς κανόνες και ένα σύνολο από ενέργειες (σε μορφή κώδικα C) που εκτελούνται όταν αναγνωριστεί ένας κανόνας. Οι συντακτικοί κανόνες υποβοηθούμενοι από τις ενέργειες μπορούν να εκτελέσουν και τη σημασιολογική ανάλυση της εισόδου. Η έξοδος του yacc είναι ένα C πρόγραμμα που υλοποιεί τον parser. Ο προγραμματιστής θα πρέπει να παρέχει στον parser και τη ρουτίνα που θα εκτελεί τη λεκτική ανάλυση της εισόδου και θα παρέχει τα τερματικά σύμβολά (tokens) στη ρουτίνα της συντακτικής ανάλυσης. Η ρουτίνα αυτή υλοποιείται συνήθως με τη βοήθεια του lex. Γενικά Στο πρόγραμμα του Yacc για να μεταγλωττίσουμε την γλώσσα, η γλώσσα θα πρέπει να περιγράφεται με ελεύθερη (context-free grammar) γραμματική. Το ποιο διαδεδομένο σύστημα για να το κάνουμε αυτό είναι το BNF, το οποίο είχε εξελιχτεί στο πρόγραμμα για να καθορίσουν την γλώσσα Algol 60. Η δημιουργία ενός συντακτικού αναλυτή, ξεκινά με τη σύνταξη ενός αρχείου περιγραφής με την κατάληξη.y που διοχετεύεται ως είσοδος στο Yacc. Το αρχείο αυτό περιγράφει τη συντακτική δομή της αρχικής γλώσσας προγραμματισμού, μέσω της γραμματικής της σε BNF μορφή, καθώς και τις ενέργειες που πρέπει να γίνονται κατά την αναγνώριση των συμβολοσειρών εισόδου. Η έξοδός του είναι ένα πρόγραμμα γραμμένο σε C με όνομα y.tab.c, το οποίο περιέχει τη συνάρτηση yyparse που υλοποιεί το συντακτικό αναλυτή.

2 Αρχείο Εισόδου Το αρχείο που δίνεται ως είσοδο στο Yacc περιέχει τρία μέρη, τα οποία χωρίζονται με την ακολουθία χαρακτήρων %%. Η γενική μορφή του είναι: Μέρος Α %% Μέρος Β %% Μέρος Γ Στο μέρος Α περιλαμβάνονται: Σχόλια, τα οποία ακολουθούν τη σύμβαση της C π.χ. /* This is a comment */ Κώδικας C, που περικλείεται από % και %. Ο κώδικας αυτός συνήθως περιέχει δηλώσεις συναρτήσεων, τύπων δεδομένων και μεταβλητών που χρησιμοποιούνται από τον συντακτικό αναλυτή. Δηλώσεις του Yacc. Στο μέρος Β περιλαμβάνονται: Γραμματικοί Κανόνες, που περιγράφουν τη γραμματική της γλώσσας που επεξεργάζεται ο αναλυτής. Στο μέρος Γ περιλαμβάνεται: Κώδικας σε C, που περιέχει συχνά τη συνάρτηση main, τις υλοποιήσεις συναρτήσεων που καλούνται από το μέρος Β καθώς και διάφορες άλλες βοηθητικές συναρτήσεις. Δηλώσεις του Yacc Στο τμήμα δηλώσεων του Yacc πρέπει να δηλώσουμε τα ονόματα των Τερματικών και μη Τερματικών συμβόλων καθώς και τον τύπο της επιστρεφόμενης τιμής αυτών των συμβόλων. Πρέπει στο σημείο αυτό να ξεκαθαρίσουμε. Τι εννοούμε με τον όρο Τερματικά και μη Τερματικά σύμβολα; Καταρχάς δεν ξεχνάμε ότι το βασικό στοιχείο εισόδου του Yacc είναι οι γραμματικοί κανόνες που περιγράφουν τη συντακτική δομή της γλώσσας μας. Το όνομα ενός τέτοιου συντακτικού κανόνα ορίζει συντακτικές μονάδες που ονομάζονται μη Τερματικά σύμβολα ή σε άλλες βιβλιογραφίες μπορείτε να τα βρείτε και ως ενδιάμεσα σύμβολα. Τα μη Τερματικά σύμβολα είναι συναθροίσεις άλλων Τερματικών και μη Τερματικών συμβόλων. Τερματικά σύμβολα είναι αυτά που δεν μπορούν να διαιρεθούν περαιτέρω (στη βιβλιογραφία θα τα βρείτε και ως tokens). Θα χρησιμοποιήσουμε ένα παράδειγμα της γλώσσας προγραμματισμού C για να καταλάβουμε τη διαφορά ανάμεσα στα μη Τερματικά και Τερματικά σύμβολα. Για τη γλώσσα προγραμματισμού C οι μεταβλητές, οι σταθερές, οι δεσμευμένες λέξεις, οι αριθμητικοί τελεστές καθώς και οι τελεστές στίξης αποτελούν Τερματικά σύμβολα. Έτσι στα Τερματικά σύμβολα της γλώσσας C περιέχονται μεταξύ άλλων IDENTIFIER, NUMBER, STRING, IF, INT, CHAR, PLUS, MULT,

3 LEFT_PARENTHESIS κ.λ.π. Στο παρακάτω τμήμα κώδικα δείτε ποια είναι τα Τερματικά σύμβολα. int /* Δεσμευμένη λέξη INT */ square /* IDENTIFIER */ ( /* LEFT_PARENTHESIS */ int x /* Δεσμευμένη λέξη INT, IDENTIFIER */ ) /* RIGHT_PARENTHESIS */ /* OPEN_BRACE */ return /* Δεσμευμένη λέξη RETURN */ x*x; /* IDENTIFIER, MULT, IDENTIFIER, SEMI */ /* CLOSE_BRACE */ Τα μη Τερματικά σύμβολα της C περιλαμβάνουν, μεταξύ πολλών άλλων, τις εκφράσεις, τις εντολές, τις δηλώσεις και τους ορισμούς συναρτήσεων. Στη γραμματική της C αντιπροσωπεύονται από τα μη Τερματικά σύμβολα expression, statement, declaration, και function_definition. Παρατηρήστε ότι το προηγούμενο τμήμα κώδικα ορίζει μια συνάρτηση, η οποία αποτελείται από μια δήλωση της παραμέτρου της συνάρτησης x και από μία εντολή. Μέσα στην εντολή το κάθε x, αλλά και το x*x αποτελούν εκφράσεις. Υπάρχει ακόμη πάντα ένα αρχικό σύμβολο, το οποίο αντιστοιχεί σε ολόκληρη την πιθανή είσοδο του μεταφραστή που θα δημιουργήσει το Yacc με βάση τη συγκεκριμένη γραμματική. Τα παραπάνω έχουν ως αποτέλεσμα να μπορούμε να φανταστούμε κάθε είσοδο σε ένα μεταφραστή ως ένα δένδρο που τα φύλλα του αποτελούνται από τα Τερματικά σύμβολα, τα κλαδιά και οι κόμβοι του από τα μη Τερματικά σύμβολα και η ρίζα του από το αρχικό σύμβολο. Είναι σύνηθες, όταν γράφουμε μία γραμματική που θα χρησιμοποιηθεί ως είσοδος στο Yacc, να χρησιμοποιούμε μικρά γράμματα για τα ονόματα των μη Τερματικών συμβόλων και κεφαλαία γράμματα για τα ονόματα των Τερματικών συμβόλων. Αυτό θα κάνει περισσότερο ευανάγνωστη την περιγραφή της γραμματικής. Όταν ένα Τερματικό σύμβολο αποτελείται από ένα χαρακτήρα, μπορείτε να το περιγράψετε απευθείας στη γραμματική περικλείοντας το γράμμα μέσα σε μονά εισαγωγικά ( ). Τέλος, στην περίπτωση που τα Τερματικά σύμβολα είναι αλφαριθμητικές σταθερές, μπορείτε να τις εισάγετε στη γραμματική περικλείοντας τους χαρακτήρες που τις συνθέτουν μέσα σε διπλά εισαγωγικά ( ). Επιστρέφοντας τώρα στις δηλώσεις του Yacc, τα ονόματα των Τερματικών συμβόλων πρέπει να τα δηλώσουμε ακολουθώντας τη μορφή: % token <τύπος> ΟΝΟΜΑ1, ΟΝΟΜΑ2, ΟΝΟΜΑ3, Αντίστοιχα τα ονόματα των μη Τερματικών συμβόλων πρέπει να τα δηλώσουμε ακολουθώντας τη μορφή: % type <τύπος> όνομα1, όνομα2, όνομα3, Ονόματα που δε δηλώνονται στο τμήμα δηλώσεων ως μη Τερματικά σύμβολα και χρησιμοποιούνται μέσα σε κανόνες θεωρείται αυτόματα ότι αναπαριστούν μη Τερματικά σύμβολα. Όλα τα μη Τερματικά σύμβολα πρέπει να εμφανίζονται στην αρχή ενός τουλάχιστον κανόνα.

4 Όσον αφορά τον τύπο ενός συμβόλου αυτός πρέπει να δηλωθεί, για να μπορέσει ο συντακτικός αναλυτής να καταλάβει αν ένα σύμβολο ανήκει σε ένα γραμματικό κανόνα. Άλλωστε όταν περιγράφουμε μια γλώσσα, περιγράφουμε ως μέρος της γραμματικής τον τύπο του συμβόλου. Είναι σημαντικό όμως, να κατανοήσετε τη διαφορά ανάμεσα στον τύπο ενός συμβόλου και στην τιμή του. Για κάθε εμφάνιση ενός συμβόλου, κατά τη διαδικασία εκτέλεσης του μεταγλωττιστή, εκχωρείται μια τιμή. Στην περίπτωση που δε δηλώσετε τον τύπο ενός συμβόλου, ο προκαθορισμένος τύπος επιστρεφόμενης τιμής είναι τύπου ακεραίου και στα απλούστερα παραδείγματα συνήθως αρκεί. Στην περίπτωση που θέλετε να ορίσετε άλλο τύπο για την επιστρεφόμενη τιμή, μπορείτε να το κάνετε ορίζοντας στο τμήμα δηλώσεων της C τη μακροεντολή: #define YYSTYPE <τύπος> Όταν προσπαθήσουμε να υλοποιήσουμε το μεταγλωττιστή μιας γλώσσας, θα αντιμετωπίσουμε το πρόβλημα της ύπαρξης πολλαπλών τύπων επιστρεφόμενων τιμών για τα διάφορα σύμβολα. Το Yacc, για να υποστηρίξει αυτή την ανάγκη, μας δίνει τη δυνατότητα να ορίσουμε μια ένωση (union) όλων των πιθανών τύπων για τα διάφορα σύμβολα. Στη συνέχεια πρέπει να συσχετίσουμε τους τύπους με τα αντίστοιχα σύμβολα. Μετά δηλώνουμε το όνομα της μεταβλητής του αντίστοιχου τύπου μέσα στην ένωση, αν είναι Τερματικό σύμβολο αμέσως μετά το %token, ενώ στην περίπτωση μη Τερματικού συμβόλου αμέσως μετά το %type. Παράδειγμα: %union int int_val; double double_val; %token <int_val> D; %token <double_val> F; %type <double_val> length, width; Στο τμήμα δηλώσεων ορίζουμε ακόμη την προτεραιότητα και προσεταιριστικότητα των διάφορων τελεστών που μπορεί να περιέχει η γλώσσα, για την οποία θα θέλαμε να φτιάξουμε ένα μεταγλωττιστή. Χρησιμοποιώντας τις δηλώσεις %left, %right και %nonassoc, μπορούμε να δηλώσουμε αν ένας τελεστής έχει αριστερή, δεξιά ή μη επιτρεπτή προσεταιριστικότητα. Οι δηλώσεις προσεταιριστικότητας αποτελούν ουσιαστικά μια μορφή δήλωσης Τερματικών συμβόλων. Παράδειγμα: %left Τερματικό σύμβολο Προσεταιριστικότητα από αριστερά προς τα δεξιά. Α τελ Β τελ Γ είναι (Α τελ Β) τελ Γ. %right Τερματικό σύμβολο Προσεταιριστικότητα από δεξιά προς τα αριστερά. Α τελ Β τελ Γ είναι Α τελ (Β τελ Γ). %nonassoc Τερματικό σύμβολο Μη προσεταιριστικότητα.

5 Α τελ Β τελ Γ εμφανίζει μήνυμα λάθους. Η προτεραιότητα των τελεστών υποδηλώνεται με τη σειρά που έχει οριστεί η προσεταιριστικότητά τους μέσα στον πηγαίο κώδικα της γραμματικής. Οι τελεστές που δηλώνονται πρώτοι έχουν τη χαμηλότερη προτεραιότητα. Ένα πιο ολοκληρωμένο παράδειγμα: %right = %left + - %left * / Παρατηρήστε ότι η δήλωση του τελεστή της ανάθεσης έχει χαμηλότερη προτεραιότητα σε σχέση με τους τελεστές των βασικών αριθμητικών πράξεων και ότι έχει δεξιά προσεταιριστικότητα, γιατί συνήθως θέλουμε πρώτα να υπολογίζεται το δεξιό μέλος μιας ανάθεσης. Ακόμα δείτε ότι οι τελεστές της πρόσθεσης και αφαίρεσης έχουν ίδια προτεραιότητα, αλλά χαμηλότερη από αυτή του πολλαπλασιασμού και της διαίρεσης. Κάτι τελευταίο όσον αφορά το τμήμα δηλώσεων του Yacc. Αναφέραμε παραπάνω ότι υπάρχει πάντα ένα αρχικό σύμβολο, το οποίο αντιστοιχεί σε ολόκληρη την πιθανή είσοδο του μεταφραστή που θα δημιουργήσει το Yacc. Αυτό το αρχικό σύμβολο (ρίζα του συντακτικού δένδρου) ονομάζεται σύμβολο εκκίνησης (start symbol) και δηλώνεται ως εξής: %start <όνομα> Η προτεραιότητα των τελεστών υποδηλώνεται με τη σειρά που έχει οριστεί η προσεταιριστικότητά τους μέσα στον πηγαίο κώδικα της γραμματικής. Οι τελεστές που δηλώνονται πρώτοι έχουν τη χαμηλότερη προτεραιότητα. Γραμματικοί Κανόνες Κάθε γραμματικός κανόνας του Yacc αποτελείται από δύο μέρη. Το όνομα του κανόνα ή αριστερό μέρος και το σώμα του κανόνα ή δεξιό μέρος. Το όνομα ενός κανόνα χωρίζεται από το σώμα του κανόνα με χρήση του χαρακτήρα :. Το τέλος ενός κανόνα δηλώνεται με χρήση του χαρακτήρα ;. Η γενική μορφή των κανόνων είναι: <όνομα κανόνα> : <σώμα κανόνα> ; Το όνομα ενός κανόνα ορίζει όπως είπαμε ένα μη Τερματικό σύμβολο. Συμβαίνει συχνά να υπάρχουν περισσότεροι του ενός γραμματικοί κανόνες με το ίδιο μη Τερματικό σύμβολο αριστερά. Σε αυτή την περίπτωση, για να αποφευχθεί η επανάληψη, μπορεί να χρησιμοποιηθεί η κάθετη μπάρα. Έτσι, μια σειρά κανόνων A : B C ; A : D E F ; A : G ; μπορεί να αναπαρασταθεί ως: A : B C D E F G ;

6 Το σώμα του κανόνα μπορεί να αποτελείται από άλλα Τερματικά ή μη Τερματικά σύμβολα καθώς και από σύνθετες εντολές C που περικλείονται μέσα σε άγκιστρα και ονομάζονται «Ενέργειες». Μέσα στις «Ενέργειες» του Κανόνα πρέπει να ορίσετε τις ενέργειες που θα πραγματοποιήσει ο Συντακτικός Αναλυτής, όταν αναγνωριστεί στην είσοδό του η ακολουθία συμβόλων που περιγράφεται στον κανόνα και ενεργοποιηθεί ο κανόνας. Είναι συνηθισμένο μέσα στις «Ενέργειες» των Κανόνων να πραγματοποιείται η σημασιολογική ανάλυση της εισόδου και έτσι μαζί με τον Συντακτικό αναλυτή να παράγεται ταυτόχρονα και ο Σημασιολογικός αναλυτής. Μέσα στις «Ενέργειες» μπορείτε να καλείτε άλλες συναρτήσεις, να αλλάζετε τιμές σε καθολικές μεταβλητές, να εκτελείτε εντολές εισόδου / εξόδου κλπ. Η επικοινωνία μεταξύ «Δράσεων» και κανόνων γίνεται μέσω «ψευδομεταβλητών». Με $$ συμβολίζεται η σημασιολογική τιμή του αριστερού μέρους του κανόνα, ενώ με $n, όπου n>0, συμβολίζεται η σημασιολογική τιμή του n- οστού συμβόλου στο δεξιό μέρος. Πρέπει να σημειωθεί ότι στην αρίθμηση των συμβόλων του δεξιού μέρους λαμβάνονται υπόψη, εκτός από τα Τερματικά και μη Τερματικά σύμβολα της γραμματικής, και οι ίδιες οι «Ενέργειες» (κώδικας σε άγκιστρα). Αν δεν έχει οριστεί «Ενέργεια», η προκαθορισμένη «Ενέργεια» είναι να παίρνει το αριστερό μέρος του κανόνα τιμή ίση με το πρώτο σύμβολο του σώματος του κανόνα, δηλαδή $$=$1. Αυτό, βέβαια, ισχύει, αν τα δύο σύμβολα είναι του ίδιου τύπου και η τιμή του αριστερού μέλους χρησιμοποιείται σε κάποιον άλλο κανόνα. Σε αντίθετη περίπτωση, δεν πραγματοποιείται ανάθεση τιμής στο αριστερό μέλος του κανόνα και η πιθανή ασυμφωνία τύπων ανάμεσα στα σύμβολα $$ και $1 αγνοείται. Πρέπει να προσέξετε ότι μόνο η «Ενέργεια» που βρίσκεται στο τέλος του κανόνα επηρεάζει την τιμή του αριστερού μέλους του κανόνα κάνοντας χρήση της $$. Οι ενδιάμεσες «Ενέργειες», όταν δίνουν τιμές στη ψευδομεταβλητή $$, ουσιαστικά αλλάζουν τη δική τους επιστρεφόμενη τιμή. Μέσα στις ενδιάμεσες «Ενέργειες» μπορεί να γίνεται αναφορά σε προηγούμενα σύμβολα του κανόνα αλλά όχι σε επόμενα, γιατί η τιμή τους δεν έχει ακόμα υπολογιστεί. Ένα παράδειγμα για τα παραπάνω: author_name : NAME entry = $1; = IDENTIFIER printf( Hello %s\n, $4); $$ = $4; ; Ο παραπάνω κανόνας σημαίνει ότι, όταν ο Συντακτικός αναλυτής διαβάσει από την είσοδο την ακολουθία NAME και IDENTIFIER, αναγνωρίζει ότι το όνομα του συγγραφέα είναι η τιμή του IDENTIFIER και τον χαιρετά. Παρατηρήστε ότι μέσα στην τελευταία σύνθετη εντολή γίνεται χρήση της τιμής του IDENTIFIER από την αναφορά $4. O IDENTIFIER είναι το τέταρτο μέλος του σώματος του κανόνα, αφού πρέπει να προσμετρηθεί και η ενδιάμεση «Ενέργεια», που θέτει την τιμή της μεταβλητής entry ίση με την τιμή του Τερματικού συμβόλου NAME. Ακόμα δείτε ότι το μη Τερματικό σύμβολο author_name μέσα στη «Ενέργεια» παίρνει τιμή που

7 ισούται με την τιμή του τέταρτου μέλους του κανόνα. Προσέξτε, επίσης, ότι το δεύτερο μέλος του σώματος του κανόνα δε θα μπορούσε να έχει χρησιμοποιήσει ψευδομεταβλητή $n με n>1. Μια κατηγορία κανόνων που είναι ιδιαίτερα σημαντική είναι οι αναδρομικοί κανόνες. Ως αναδρομικό κανόνα ορίζουμε έναν κανόνα που στο σώμα του περιέχεται και το μη Τερματικό σύμβολο του ονόματος του κανόνα. Θα χρησιμοποιήσετε τέτοιους κανόνες, όταν θέλετε να ορίσετε την πιθανή ύπαρξη ακολουθίας συμβόλων στην είσοδο του Συντακτικού Αναλυτή. Υπάρχουν δύο είδη αναδρομικότητας, η αριστερή και η δεξιά. Παραδείγματα: Αριστερή αναδρομικότητα: expseq1 : exp Δεξιά αναδρομικότητα: expseq1 expseq1 ',' exp ; : exp exp ',' expseq1 ; Μπορείτε να χρησιμοποιήσετε οποιονδήποτε από τους δύο τύπους, αλλά το σωστότερο είναι να χρησιμοποιείτε την αριστερή αναδρομικότητα, διότι με αυτό τον τρόπο μπορεί ο μηχανισμός του Συντακτικού αναλυτή να αντιμετωπίσει άπειρο αριθμό στοιχείων σε μια ακολουθία. Αυτό συμβαίνει, γιατί πραγματοποιείται μια διαδικασία ελάττωσης της στοίβας για κάθε σύμβολο που διαβάζει ο Συντακτικός αναλυτής και έτσι αποφεύγεται η υπερχείλιση της στοίβας. Χρήσιμες συναρτήσεις μεταβλητές Η κύρια συνάρτηση του συντακτικού αναλυτή είναι η yyparse, η οποία και τον υλοποιεί. Επιστρέφει 0, όταν πραγματοποιηθεί σωστά η Συντακτική Ανάλυση της εισόδου, και 1, όταν υπάρξει συντακτικό λάθος. Απαιτείται βέβαια η ύπαρξη και κάποιων ακόμη βοηθητικών συναρτήσεων. Πρώτη συνάρτηση που απαιτείται είναι μια συνάρτηση με όνομα yylex, που αναλαμβάνει τη Λεκτική Ανάλυση της εισόδου και επιστρέφει λεκτικές μονάδες στο Συντακτικό αναλυτή. Ένας πολύ καλός τρόπος παραγωγής μιας συνάρτησης yylex, η οποία πραγματοποιεί τις εργασίες που απαιτούνται από το Συντακτικό Αναλυτή, είναι η χρήση του εργαλείου lex. Καλείται από την yyparse κάθε φορά που χρειάζεται να διαβαστεί μια καινούργια λεκτική μονάδα. Αυτό μπορεί να γίνει είτε, με μια οδηγία της μορφής #include lexyy.c στο αρχείο περιγραφής του Yacc, είτε αυτόματα συνδέοντας τα δύο αρχεία λεκτικού και συντακτικού αναλυτή συμπεριλαμβάνοντας ειδικά στον πηγαίο κώδικα του λεκτικού αναλυτή ένα αρχείο κεφαλίδας με όνομα y.tab.h,που παράγεται από το Yacc, και περιέχει όλα τα Τερματικά σύμβολα που χρησιμοποιούνται στη γραμματική. Η συνάρτηση yylex πρέπει να επιστρέφει την τιμή 0, στην περίπτωση που διαβαστεί το τέλος του αρχείου εισόδου. Δεύτερη συνάρτηση που απαιτείται είναι η συνάρτηση yyerror, η οποία καλείται αυτόματα από την yyparse σε περίπτωση λάθους για να εκτυπώσει κατάλληλο διαγνωστικό μήνυμα. Η συνάρτηση yyerror συνήθως ακολουθεί τη γενική μορφή:

8 yyerror (char *s) fprintf (stderr, %s \n, s); Αν δεν έχει ορισθεί συγκεκριμένο μήνυμα λάθους, τυπώνεται το προκαθορισμένο μήνυμα syntax error. Τέλος, απαιτείται και η ύπαρξη μιας συνάρτησης main, όπως σε κάθε πρόγραμμα C, μέσα στην οποία θα καλείται η συνάρτηση yyparse. Όσον αφορά τις μεταβλητές, οι πιο χρήσιμες είναι η yylval και η yydebug. Μέσω της yylval επικοινωνεί ο συντακτικός αναλυτής με τον λεκτικό αναλυτή. Περιέχει τη σημασιολογική τιμή του Τερματικού συμβόλου που αναγνωρίστηκε από τον λεκτικό αναλυτή. Μέσω της yydebug είναι δυνατή η παρακολούθηση του συντακτικού αναλυτή και διευκολύνεται η εύρεση σφαλμάτων στη γραμματική. Όταν η yydebug έχει μη μηδενική τιμή, ο συντακτικός αναλυτής εκτυπώνει πληροφορίες σχετικά με την πρόοδο της συντακτικής ανάλυσης, π.χ. ποια λεκτική μονάδα διάβασε και ποιον κανόνα παραγωγής εφαρμόζει. Κλήση του Yacc Το yacc το καλείτε από τη γραμμή εντολής του υπολογιστή σας εκτελώντας την εντολή : yacc <όνομα αρχείου>.y Το αποτέλεσμα της παραπάνω κλήσης είναι η δημιουργία ενός αρχείου που περιέχει τον πηγαίο κώδικα του Συντακτικού αναλυτή και ονομάζεται <όνομα αρχείου>.tab.c. Παράδειγμα Λεκτικού και Συντακτικού αναλυτή μιας απλής αριθμομηχανής Αρχείο περιγραφής Lex: % #include y.tab.h % %% [0-9]+ [ \t\n] ; - + yylval.a_number = atoi(yytext); return NUMBER; return - ; return + ;

9 * return * ; / return / ; ( return ( ; ) return ) ; ; return ; ;. %% int yywrap () return 1 ECHO; yyerror ( unexpected character ); Αρχείο περιγραφής Yacc: % #include <stdio.h> extern char* yytext; % %union int a_number; % start line

10 $$ = $1; $$ = $1; % token <a_number> NUMBER % type <a_number> exp term factor %% line : exp ; printf ( result is %d\n, $1); ; exp : term exp + term $$ = $1 + $3; exp - term $$ = $1 - $3; ; term : factor term * factor $$ = $1 * $3; term / factor $$ = $1 / $3; ; factor : NUMBER

11 main() $$ = $1; ( exp ) $$ = $2; ; %% void yyerror(char *s) fprintf(stderr, "s\n", s); yyparse();

12 Ασκήσεις 1. Γενικές Ασκήσεις Εξάσκησης i. Γράψτε μια γραμματική που να αναγνωρίζει μία ακολουθία της μορφής aaa abbb b, δηλαδή ένα ή περισσότερα a ακολουθούμενα από ένα ή περισσότερα b. Τι είναι πιο απλό να χρησιμοποιήσετε το lex ή το Yacc; ii. iii. iv. Αλλάξτε τη γραμματική της προηγούμενης άσκησης, ώστε να αναγνωρίζει μια ακολουθία χαρακτήρων με ίσο αριθμό a και b. Τώρα πιο από τα δύο εργαλεία είναι καλύτερο; Προσπαθήστε να συσχετίσετε τα ονόματα αρχείων, μεταβλητών συναρτήσεων της αριστερής στήλης, με την σωστή περιγραφή που δίνεται στη δεξιά στήλη. o y.tab.c # Η συνάρτηση της συντακτικής ανάλυσης o y.tab.h # Το αρχείο περιγραφής του Yacc o yyparse # Δήλωση του μη Τερματικού συμβόλου αρχής o yylval # Το αρχείο κεφαλίδας που παράγεται από το Yacc και περιέχει τις δηλώσεις των Τερματικών συμβόλων της γλώσσας. o yyerror # Δήλωση των Τερματικών συμβόλων της γλώσσας. o %token # Δήλωση των μη Τερματικών συμβόλων. o %start # Η τιμή του τρέχοντος Τερματικού συμβόλου. o %type # Η συνάρτηση που χρησιμοποιείται από το Yacc για την εκτύπωση μηνυμάτων λάθους οριζόμενων από το χρήστη. o %right # Δήλωση προσεταιριστικότητας και προτεραιότητας τελεστών. Ποια είναι τα βήματα που πρέπει να ακολουθήσετε, για να δημιουργήσετε ένα μεταγλωττιστή με τη βοήθεια των lex και Yacc; 2. Ασκήσεις Εξάσκησης Πολλαπλής Επιλογής i. Ποια από τα παρακάτω θα μπορούσαν να αποτελέσουν μέρος της δήλωσης %token a) int b) line c) programs d) + e) NICK ii. Ποια από τα παρακάτω θα μπορούσαν να αποτελέσουν μέρος της δήλωσης %type a) programs b) NICK

13 c) line d) int e) + iii. Στο Α μέρος ενός αρχείου εισόδου συντακτικού αναλυτή περιλαμβάνονται: a) Κώδικας C b) Σχόλια c) Δηλώσεις του Yacc d) Γραμματικοί Κανόνες iv. Στο B μέρος ενός αρχείου εισόδου συντακτικού αναλυτή περιλαμβάνονται: a) Κώδικας C b) Σχόλια c) Δηλώσεις του Yacc d) Γραμματικοί Κανόνες v. Στο Γ μέρος ενός αρχείου εισόδου συντακτικού αναλυτή περιλαμβάνονται: vi. %left "*" %right "-" Τότε: a) Κώδικας C b) Σχόλια c) Δηλώσεις του Yacc d) Γραμματικοί Κανόνες Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση a) Ο τελεστής * έχει υψηλότερη προτεραιότητα από το - b) Ο τελεστής * έχει αριστερή προσεταιριστικότητα c) Ο τελεστής * έχει δεξιά προσεταιριστικότητα d) Ο τελεστής * έχει χαμηλότερη προτεραιότητα από το - e) Ο τελεστής - έχει αριστερή προσεταιριστικότητα f) Ο τελεστής - έχει δεξιά προσεταιριστικότητα 3. Ασκήσεις Εξάσκησης Προσεταιριστικότητας i. Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση %nonassoc "-" τότε πιο το αποτέλεσμα της πράξης είναι:

14 a. 2 b. -2 c. Συντακτικό Λάθος ii. Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση %left "*" %left "+" τότε η πράξη 4*7+8 έχει αποτέλεσμα: iii. Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση %left "/" τότε η πράξη 8/4/2 έχει αποτέλεσμα: iv. Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση %right "-" τότε η πράξη έχει αποτέλεσμα: v. Εάν στο αρχείο περιγραφής συναντήσω τη δήλωση %left "*" %right "-" τότε η πράξη 4-4-2*8 έχει αποτέλεσμα: 4. Ασκήσεις Εξάσκησης Σωστού Λάθους i. Μπορούμε να υλοποιήσουμε συντακτικούς αναλυτές με τη χρήση του yacc χωρίς να είναι απαραίτητη η σύνταξη ενός αρχείου περιγραφής λεξικού αναλυτή στο lex. ii. iii. iv. Η δήλωση %start μας δείχνει το μη τερματικό σύμβολο από το οποίο αρχίζει η ανάλυση. Η δήλωση %type χρησιμοποιείται για τη δήλωση των τερματικών συμβόλων. Μέσω της yylval επικοινωνεί ο συντακτικός αναλυτής με τον λεκτικό αναλυτή. v. Ο παρακάτω γραμματικός κανόνας είναι αριστερά αναδρομικός expseq1 : exp exp ',' expseq1;

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

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

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

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

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

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

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

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

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) 69 / 216 Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει

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

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει 0 αν

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

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

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

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 5 Ο Εργαστηριακό Μάθημα Δημιουργία Νέων Λεξικών Αναλυτών Σκοπός: Το μάθημα αυτό αναφέρεται: Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. Στην

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

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

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο

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

Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή

Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή Σκοπός: Θεωρία Το μάθημα αυτό αναφέρεται: Στη διαδικασία κατασκευής ενός Συντακτικού Αναλυτή κάνοντας χρήση του Yacc. Στην υλοποίησή του. Θεωρία Πρόλογος

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

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Λεκτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση

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

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

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

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

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unix yacc. Σχετικά εύκολο

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

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

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

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

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

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

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

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

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

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

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

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

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

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

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

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc slide 1/52 Τι είναι το yacc Ο yacc είναι ένας γενικού σκοπού parser generator. μετατρέπει την περιγραφή ργρ φήμίας contt- free γραμματικής σε C/C++ πρόγραμμα.

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

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

Εισαγωγή στο Flex. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Flex Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Ημερομηνίες Διαδικαστικά Παρουσίαση Flex 7 Νοεμβρίου 15:00 17:00 Παρουσίαση Bison 28 Νοεμβρίου 15:00 17:00 Στοιχεία επικοινωνίας Λίστα μαθήματος

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

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

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

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

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

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

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

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

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

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

Το μεταεργαλείο yacc. Διαδικασία χρήσης. Αρχείο εισόδου

Το μεταεργαλείο yacc. Διαδικασία χρήσης. Αρχείο εισόδου Το μεταεργαλείο yacc Το μεταεργαλείο yacc επιτρέπει την αυτόματη δημιουργία γλωσσικών επεξεργαστών και συντακτικών αναλυτών. Ως είσοδο δέχεται μια γραμματική BNF σε μορφή κατάλληλη για μηχανική επεξεργασία

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

ΗΥ101: Εισαγωγή στην Πληροφορική Δρ. Χρήστος Ηλιούδης Τι είναι η ; Η διαδικασία του προγραμματισμού είναι μία πολύπλοκη διαδικασία που συχνά οδηγεί σε λάθη (πραγματοποιείται από ανθρώπους!!!). Τα προγραμματιστικά λάθη λέγονται bugs και

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

Παρουσίαση του εργαλείου FLEX Παρουσίαση του εργαλείου FLEX Γεννήτρια Λεκτικών Αναλυτών Α Φάση Λεκτική Ανάλυση Χαρακτηριστικά του flex Γεννήτρια λεκτικών αναλυτών σε C/C++ (fast lexical analyzer generator). Βασισµένο στο εργαλείο του

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση

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

Υλοποίηση ΛΑ με το flex

Υλοποίηση ΛΑ με το flex (i) Μεταεργαλείο flex: γεννήτορας ΛΑ Είσοδος: μεταπρόγραμμα που περιγράφει τις λεκτικές μονάδες Έξοδος: πρόγραμμα σε C Η συνάρτηση yylex υλοποιεί το ΛΑ Επιστρέφει τον κωδικό της λεκτικής μονάδας που αναγνωρίστηκε,

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Οι αριθμητικές πράξεις που εκτελούνται στον υπολογιστή αποτελούν το

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο

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

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

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

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

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

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Σκοπός: Το μάθημα αυτό αναφέρεται: 1 Ο Εργαστηριακό Μάθημα Εισαγωγή Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών Στα στάδια της μεταγλώττισης Θεωρία Πρόλογος Αφιερώνεται το πρώτο εργαστηριακό

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

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

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

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

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

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

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

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με: Αλγόριθμοι 2.2.1. Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά εντολών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Τα κυριότερα χρησιμοποιούμενα

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Τελεστές - Κατηγορίες Εκφράσεις - Κατηγορίες Υπολογισμός εκφράσεων Προτάσεις - Κατηγορίες

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 1η εβδομάδα. Κοζάνη, 5 Οκτωβρίου 2007. Βασικά στοιχεία γραφής προγραμμάτων με τη C: α) Case Sensitive!!! β) Δυνατότητα εισαγωγής σχολίων με /*

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

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