Φροντιστήριο 3 ο Παραγωγή Ενδιάμεσου Κώδικα. Σημασιολογία της γλώσσας alpha (1/7) Type Checking

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

Download "Φροντιστήριο 3 ο Παραγωγή Ενδιάμεσου Κώδικα. Σημασιολογία της γλώσσας alpha (1/7) Type Checking"

Transcript

1 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Παραγωγή Ενδιάμεσου Κώδικα Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide 2 / 40 Type Checking Η γλώσσα alpha είναι μια dynamically typed γλώσσα δηλαδή ο τύπος μιας μεταβλητής αλλάζει ακολουθώντας τον τύπο της τιμής που κάθε φορά αποθηκεύεται σε αυτήν Συνεπώς δεν μπορούμε να κάνουμε πλήρη έλεγχο τύπων κατά την μεταγλώττιση if (x > 12) a = false; else a = 3.33; b = (a and c); //? Αυτό θα γίνει κατά την εκτέλεση Για τις σταθερές εκφράσεις μπορείτε προαιρετικά να κάνετε τους ελέγχους και σε compile time a = true + 12; // Boolean + Number Error b = str1 + false; // String + Boolean Error Σημασιολογία της γλώσσας alpha (1/7) Rvalues και οι τύποι τους Τα constants έχουν τον τύπο της αντίστοιχης τιμής τους και έχουμε του εξής τύπους Number όλοι οι αριθμοί String όλα τα αλφαριθμητικά Boolean τα true και false Nil το nil Τα id των συναρτήσεων χρήστη έχουν ως τιμή τη διεύθυνση της συνάρτησης (θετικός ακέραιος) και έχουν τύπο FunctionAddress Ορισμός συνάρτηση μέσα σε παρενθέσεις είναι τιμή με τη διεύθυνση της συνάρτησης και τύπο FunctionAddress Τα id των library functions έχουν ως τιμή ένα string με το όνομα της συνάρτησης και τύπο LibraryFunction Slide 3 / 40 Slide 4 / 40

2 Σημασιολογία της γλώσσας alpha (2/7) Παράδειγμα x = 10.12; y = hello ; z = (function(){return x; }); function g(a,b){return z(a,b); } print(x,y,z); t = []; t.x = y; R-values (με compile-time value) L-values (χωρίς compile-time type) 10.12, Number x, Variable, 0 hello, String y, Variable, 0 _f1, FunctionAddress,? z, Variable, 0 g, FunctionAddress,? a, Variable, 1, argument print, LibraryFunction, print b, Variable, 1, argument t, Variable, 0 t.x, Table element t[x] Σημασιολογία της γλώσσας alpha (3/7) Εκφράσεις Εκχώρηση (lvalue = rvalue) Ανάθεση τύπου και περιεχομένου από το rvalue στο lvalue Αν το rvalue είναι undefined έχουμε runtime warning Αριθμητικές εκφράσεις (+, -, *, /, %, ++, --, -) Παίρνουν ορίσματα αριθμούς και επιστέφουν αριθμό Συσχετιστικές εκφράσεις διάταξης (>, >=, <, <=) Παίρνουν ορίσματα αριθμούς και επιστέφουν boolean Συσχετιστικές εκφράσεις ισότητας (==,!=) Επιτρέπεται μεταξύ ορισμάτων ίδιου τύπου (όχι όμως undefined) και επιστρέφει boolean Συγκρίνουν και table με το nil επιστρέφοντας false σε ισότητα και true σε ανισότητα Λογικές εκφράσεις (and, or, not) Παίρνουν boolean (ή μετατρέψιμα σε boolean) ορίσματα και επιστέφουν boolean Όλες οι τιμές στη γλώσσα μετατρέπονται σε boolean Slide 5 / 40 Slide 6 / 40 Σημασιολογία της γλώσσας alpha (4/7) Σημασιολογία της γλώσσας alpha (5/7) Τύπος Τρόπος αυτόματης μετατροπής σε Boolean Number x!= 0 FunctionAddress true LibraryFunction true Table true Nil false String x!= x = (function(a,b){return x+y; }); x= hello ; a = b = true; c = a > b; x=input(); y =!x; f(){} g(){} b = f>=g; Undefined(x) FunctionAddress(K); Το x γίνεται τύπου FunctionAddress με τιμή K. Undefined(x) String, hello ; Το x γίνεται τύπου String με τιμή hello. Η αποτίμηση της έκφρασης a > b παράγει λάθος εκτέλεσης (runtime error) καθώς υπάρχει όρισμα που δεν είναι τύπου Number. Η αποτίμηση της έκφρασης!y εξαρτάται από την τιμή εισόδου στο x. Η αποτίμηση της έκφρασης f >= g παράγει λάθος εκτέλεσης (runtime error) καθώς υπάρχει όρισμα που δεν είναι τύπου Number. Λειτουργική σημασιολογία εκφράσεων (runtime semantics) [] Το αποτέλεσμα είναι η κατασκευή ενός άδειου συσχετιστικού πίνακα, η διεύθυνση του οποίου συνιστά την αποτίμηση της όλης έκφρασης. Αυτή η τιμή είναι αναγνωρίσιμη ως ο τύπος Table. [ elist ] Το αποτέλεσμα είναι η κατασκευή ενός νέου συσχετιστικού πίνακα, η διεύθυνση του οποίου συνιστά την αποτίμηση της όλης έκφρασης, με στοιχεία στις θέσεις 0,,n αντίστοιχα τις τιμές των εκφράσεων της λίστας elist. [ indexed ] Το αποτέλεσμα είναι η κατασκευή ενός νέου συσχετιστικού πίνακα, η διεύθυνση του οποίου συνιστά την αποτίμηση της όλης έκφρασης. Τα στοιχεία του πίνακα είναι οι αντίστοιχες indexed τιμές. lvalue. id Το lvalue πρέπει να είναι τύπου Table, αλλιώς runtime error. Η τιμή της έκφρασης είναι το περιεχόμενο του στοιχείου με index id.val, όπου val η τιμή string του token id. lvalue [ expr ] Το lvalue πρέπει να είναι τύπου Table, αλλιώς runtime error. Η τιμή της έκφρασης είναι το περιεχόμενο του στοιχείου με index την τιμή του expr. lvalue ( elist ) call ( elist ) Το lvalue ή call πρέπει να είναι τύπου FunctionAddress ή LibraryFunction, αλλιώς runtime error. Η τιμή της έκφρασης είναι το αποτέλεσμα της κλήσης. Slide 7 / 40 Slide 8 / 40

3 Σημασιολογία της γλώσσας alpha (6/7) Παραδείγματα t = []; //empty table t.x = 1; //insert item at index x with value 1 print(t.x, t.y); //prints 1 and nil as t.y does not exists t2 = [1, true, lala, print]; //table with numeric indices t3 = [{0:1},{1:true},{2: lala },{3:print}]; //same as above t4 = [{true:1},{ c :cos},{t2:t3}]; //all key types valid t2[3](1, 2); //t2[3] is print, so the call prints 1 and 2 t4[t2][3]( hi ); //t4[t2] is t3, t3[3] is print: prints hi function f(x) { print(x); return f; } f(1)(2)(3);//f(1) prints 1 and returns f that can be called //again:[f(1)](2) prints 2, [f(1)(2)](3) prints 3 t = [ (function f(x){ print(x); return t; }) ]; t[0](1)[0](2)[0](3);//complex but valid! t[0] gets f and the //call returns table t for further indexing: prints Σημασιολογία της γλώσσας alpha (7/7) υναμικοί πίνακες ημιουργούνται μόνο μέσω της έκφρασης δημιουργίας πίνακα ([], [elist], [indexed]) Εκχωρούνται by reference και όχι by value Αντίγραφο ενός πίνακα μπορούμε να πάρουμε με την tablecopy αλλά δεν είναι deep copy Γίνονται reference counted και διαγράφονται αυτόματα όταν δεν υπάρχουν πλέον αναφορές σε αυτούς (garbage collection) Κατά το runtime θα χρειαστεί να κρατάτε μέσα σε κάθε πίνακα ένα αριθμό που θα κρατάει το πλήθος των μεταβλητών που αναφέρονται σε αυτόν Μπορούν να κληθούν ως συναρτήσεις (functor tables) αν υπάρχει στο ειδικό index () Συνάρτηση, οπότε καλείται η συνάρτηση με πρώτο όρισμα τον πίνακα Αναδρομικά, ένας πίνακας που μπορεί να κληθεί ως συνάρτηση Slide 9 / 40 Slide 10 / 40 Κώδικας τριών διευθύνσεων Χρησιμοποιείται για την περιγραφή ενός πολύπλοκου προγράμματος με μια ακολουθία απλών εντολών Οι εντολές έχουν όμοια μορφή και χρησιμοποιούν τρία ορίσματα Εντολή: αποτέλεσμα, τελεστής1, τελεστής2 Τα ορίσματα μαζί με την εντολή δημιουργούν μια τετράδα, για αυτό χρησιμοποιείται και ο όρος quads Συνήθως έχουμε μικρό αριθμό εντολών Οι εντολές είναι πολύ κοντά στη γλώσσα μηχανής Σε αρκετές εντολές ενδιάμεσου κώδικα η αντιστοίχηση με τις εντολές μηχανής είναι μια προς μια Εντολές του alpha i-code (1/2) Κωδικός εντολής assign add sub mul div mod uminus and or not if_eq if_noteq if_lesseq if_geatereq if_less if_greater jump Επεξήγηση Η εντολή εκχώρησης με αντιγραφή Οι εντολές εκχώρησης με δυαδικούς αριθμητικούς τελεστές Η εντολή εκχώρησης με το μοναδιαίο μείον Οι εντολές εκχώρησης με δυαδικούς λογικούς τελεστές Η εντολή εκχώρησης με τη λογική άρνηση Εντολές αλλαγής ροής ελέγχου (goto) με συσχετιστικούς τελεστές ισότητας Εντολές αλλαγής ροής ελέγχου (goto) με συσχετιστικούς τελεστές διάταξης Αλλαγή ροής ελέγχου χωρίς συνθήκη Slide 11 / 40 Slide 12 / 40

4 Εντολές του alpha i-code (2/2) Κωδικός εντολής call param return getretval funcstart funcend tablecreate tablegetelem tablesetelem Οι εντολές αυτές θα πρέπει να υπάρχουν στον κώδικα ως enumerated values, όπως φαίνεται δίπλα. Επεξήγηση Εντολές για συναρτήσεις (κλήση, τροφοδότηση πραγματικού ορίσματος, επιστροφή). Εντολή για τη λήψη αποτελέσματος αμέσως μετά από κλήση συνάρτησης. Ψευδο-εντολές για αρχή και τέλος συνάρτησης. Εντολές για τη διαχείριση πινάκων (δημιουργία, εξαγωγή στοιχείου και μεταβολή στοιχείου). Δομές δεδομένων για τα quads (1/2) Τα ορίσματα που μπορούν να δοθούν σε ένα quad είναι: σταθερές τιμές (constants) συγκεκριμένου τύπου (string, number, boolean) τιμή συνάρτησης βιβλιοθήκης (όνομα) τιμής συνάρτησης προγράμματος (διεύθυνση) κρυφή μεταβλητή (μπορεί να είναι result) μεταβλητή προγράμματος (μπορεί να είναι result) Στο result field ενός quad μπορεί να είναι μόνο μεταβλητή, καθώς πρέπει να προσφέρει αποθηκευτικό χώρο για αποτέλεσμα Slide 13 / 40 Slide 14 / 40 Δομές δεδομένων για τα quads (2/2) Τα quads αντιστοιχίζονται σε τύπους δεδομένων με 4 πεδία Τα ορίσματα των εντολών αντιστοιχούν σε κόμβους του AST Συνήθως χρησιμοποιούμε κάποιο τύπο έκφρασης Για τις goto εντολές χρειαζόμαστε και ένα όρισμα που να είναι quad label (φυσικός αριθμός) Τα quads αποθηκεύονται σε ένα δυναμικό πίνακα Επιτρέπονται μόνο ακέραια indices και όχι δείκτες σε quads! Κρυφές Μεταβλητές (1/2) Ο ενδιάμεσος κώδικας έχει πολύ απλές εντολές, οπότε πολύπλοκες εκφράσεις θα πρέπει να «τεμαχιστούν» σε επιμέρους υπολογισμούς με ενδιάμεσα αποτελέσματα Τα αποτελέσματα αυτά αποθηκεύονται σε κρυφές μεταβλητές Τις ονομάζουμε με τέτοιο τρόπο ώστε να μη συγκρούονται με ids της γλώσσας, π.χ. _t1, _t2 Είναι κανονικές μεταβλητές που απαιτούν δημιουργία νέου συμβόλου στο Symboltable και απενεργοποιούνται κανονικά όταν βγουν εκτός εμβέλειας Slide 15 / 40 Slide 16 / 40

5 Κρυφές Μεταβλητές (2/2) Για παράδειγμα, το x = * 3 / 4 θα γίνει ΜUL tmp1, 2, 3 (tmp1 = 2 * 3) DIV tmp2, tmp1, 4 (tmp2 = 2 * 3 / 4) ADD tmp3, 1, tmp2 (tmp3 = * 3 / 4) ASSΙGIN x, tmp3 (x = * 3 / 4) Μπορούμε να ελαχιστοποιήσουμε και τη χρήση προσωρινών μεταβλητών ΜUL tmp1, 2, 3 (tmp1 = 2 * 3) DIV tmp1, tmp1, 4 (tmp1 = 2 * 3 / 4) ADD tmp1, 1, tmp1 (tmp1 = * 3 / 4) ASSIGN x, tmp1 (x = * 3 / 4) Στην πράξη δεν μπορούμε πάντα να πετύχουμε τη βέλτιστη επαναχρησιμοποίηση κρυφών μεταβλητών Θα θεωρήσουμε απλά ότι στο τέλος κάθε statement όλες οι κρυφές μεταβλητές είναι διαθέσιμες Προαιρετικά, μπορείτε να επαναχρησιμοποιήσετε κρυφές μεταβλητές και σε αρκετά άλλα σημεία: Κλήση συναρτήσεων, κατασκευή πίνακα, μοναδιαίο μείον, λογική άρνηση, αριθμητικές και λογικές εκφράσεις Μεταβλητές (1/2) Έχουμε μεταβλητές τριών κατηγοριών Αυτές που ορίζονται εκτός συναρτήσεων, σε οποιαδήποτε εμβέλεια (ακόμη και σε block) - program variables Αυτές που ορίζονται στο σώμα μίας συνάρτησης - function locals Αυτές που ορίζονται ως τυπικά ορίσματα μίας συνάρτησης formal arguments Αυτές τις τρεις διαφορετικές κατηγορίες τις λέμε χώρους εμβέλειας - scope spaces Για κάθε μεταβλητή θα πρέπει να κρατάμε πληροφορία σχετικά με: Το scope space στον οποίο ανήκει Τη σειρά εμφάνισής του μέσα στο scope space (offset) Slide 17 / 40 Slide 18 / 40 Μεταβλητές (2/2) Το offset θα αυξάνεται μετά από την δήλωση κάθε μεταβλητής κατά 1 Ο τύπος κάθε μεταβλητής μπορεί να αλλάζει δυναμικά οπότε θεωρούμε ότι μια μεταβλητή χρειάζεται «μια θέση μνήμης» για αποθήκευση στην εικονική μηχανή Σε statically typed γλώσσες το offset θα αυξανόταν ανάλογα με τον τύπο της κάθε μεταβλητής Για κάθε scope space θα πρέπει να διατηρούμε ξεχωριστά offsets Μπαίνοντας σε ορισμό συνάρτησης θα πρέπει να ξεκινήσει καινούριο scope space για τις τοπικές μεταβλητές της Θα πρέπει να σώνουμε το τρέχον scope space μπαίνοντας στον ορισμό της και να το επαναφέρουμε βγαίνοντας από αυτή Παράδειγμα quads με δομές (1/3) Είσοδος: y = x + 1; lvalue id { = ; //lookup $id or create new $lvalue = newexpr(var_e); $lvalue->sym = ; } y: lvalue id x: lvalue id 1: const number type type var_e var_e type constnum_e numconst 1 const number { $const = newexpr(constnum_e); $const->numconst= $number; } name y offset 0 name x offset 1 Slide 19 / 40 Slide 20 / 40

6 Παράδειγμα quads με δομές (2/3) Είσοδος: y = x + 1; x+1: expr expr + expr Emitted instructions 1 : ADD x 1 _t0 quad * for expr * for x type var_e expr expr 1 + expr 2 { $expr = newexpr(arithexpr_e); $expr->sym = newtemp(); emit(add, $expr 1, $expr 2, $expr); } name x offset 1 Παράδειγμα quads με δομές (3/3) Είσοδος: y = x + 1; y=x+1: assignxpr lvalue=expr Emitted instructions 2 : ASSIGN _t0 y quad * for instruction expr * for x + 1 (expr) type arithexpr_e assignexpr lvalue = expr { emit(assign, $expr, NULL, $lvalue); //other checks and emits here as well } name _t0 offset 2 instruction op add arg1 arg2 result type constnum_e numconst 1 expr * for x + 1 (result) type arithexpr_e expr * for 1 name _t0 offset 2 op assign arg1 arg2 - expr * for y (lvalue) result type var_e name y offset 0 Slide 21 / 40 Slide 22 / 40 Δυναμικοί πίνακες (1/3) Δυναμικοί πίνακες (2/3) Οι δυναμικοί πίνακες δεν είναι «δηλωμένες» μεταβλητές, αλλά εκφράσεις που δυναμικά αντιστοιχούν σε χώρο αποθήκευσης, οπότε θέλουν ειδική μεταχείριση... x = t.a.b.c; 1: TABLEGETELEM t a _t1 // t[ a ] 2: TABLEGETELEM _t1 b _t2 // t[ a ][ b ] 3: TABLEGETELEM _t2 c _t3 // t[ a ][ b ][ c ] 4: ASSIGN _t3 x Όταν είναι r-value, μπορώ να παράγω TABLEGETELEM εντολές για το κάθε Index και να χρησιμοποιώ το αποτέλεσμα σαν το νέο στοιχείο.... t.a.b = x; 1: TABLEGETELEM t a _t1 // t[ a ] 2: TABLESETELEM _t1 b x // t[ a ][ b ] Όταν όμως είναι l-value σε εκχώρηση, πρέπει να παράγω μία TABLESETELEM εντολή για το τελευταίο index. Πώς ξέρουμε όμως αν πρέπει να παράγουμε την εντολή SET αντί για την εντολή GET έχοντας δει μόνο το t.a.b; Στα στοιχεία πίνακα, δεν παράγουμε επιτόπου κώδικα, αλλά απλά τα καταγράφουμε ως νέα expression τύπου tableelement αποθηκεύοντας τα επιμέρους table και index expressions Όταν χρησιμοποιείται ένα lvalue τύπου tableelement παράγουμε κώδικα ανάλογα με τον γραμματικό κανόνα Ως μερική έκφραση σε άλλο κανόνα (π.χ. lvalue.id ή lvalue[expr]) ή για αναγωγή σε r-value), τότε παράγουμε μία εντολή TABLEGETELEM Ως το αριστερό τμήμα μίας εκχώρησης (lvalue=expr), τότε παράγουμε μία εντολή TABLESETELEM Slide 23 / 40 Slide 24 / 40

7 Δυναμικοί πίνακες (3/3) Στην περίπτωση του έχω lvalue.id, και το lvalue είναι στοιχείο πίνακα, πρέπει να παράγουμε την εντολή που λαμβάνει αυτό το στοιχείο, καθώς το lvalue δεν χρησιμοποιείται το ίδιο για αποθήκευση. Αυτό γίνεται από την emit_iftableitem που φαίνεται δίπλα. Συναρτήσεις (1/2) Για κάθε συνάρτηση που ορίζεται πρέπει να αποθηκεύεται Ο αριθμός των συνολικών τοπικών μεταβλητών Η διεύθυνση της (αριθμός) στον ενδιάμεσο αλλά και τελικό κώδικα (αυτό σε επόμενη φάση) εν χρειάζεται να κρατήσουμε τον αριθμό των formals Μια συνάρτηση μπορεί να βρεθεί σε οποιοδήποτε scope Θα πρέπει μπαίνοντας σε αυτή να κρατάμε τον αριθμό των τοπικών μεταβλητών του τρέχοντος block ώστε να την επαναφέρουμε βγαίνοντας από αυτή Ο ενδιάμεσος κώδικας μιας συνάρτησης μπορεί να παραχθεί ανάμεσα σε άλλες εντολές Θεωρούμε ότι δεν είναι εκτελέσιμη εντολή και δε δημιουργεί πρόβλημα (παρακάμπτεται με κάποιο τρόπο) Θα επιστρέψουμε σε αυτό στην επόμενη φάση Slide 25 / 40 Slide 26 / 40 Συναρτήσεις (2/2) if statement if (expr) stmt go if skip if Slide 27 / 40 Slide 28 / 40

8 if-else statement while statement if (expr) stmt else stmt while (expr) stmt break list continue list Slide 29 / 40 Slide 30 / 40 for statement for (elist1; expr; elist2) stmt loop true false break list continue list closure Ειδικές εντολές για loops (1/3) Break Αλλάζει τη ροή ελέγχου ώστε να έχουμε άμεση έξοδο από το τρέχον loop Continue Αλλάζει τη ροή ελέγχου ώστε να σταματήσει η τρέχουσα ανακύκλωση και να ξεκινήσει αμέσως η επόμενη στο τρέχον loop Και οι δύο αυτές επιτρέπονται μόνο μέσα σε κάποιο loop Θα χρειαστεί ένας μετρητής για τα loops Θα πρέπει να σώνεται μπαίνοντας σε συναρτήσεις Και να επαναφέρεται βγαίνοντας από αυτές Slide 31 / 40 Slide 32 / 40

9 Ειδικές εντολές για loops (2/3) Τα break και continue κάνουν jump σε σημεία που δεν είναι διαθέσιμα μέσα στον ίδιο γραμματικό κανόνα (incomplete jumps) Πρέπει λοιπόν να τα κρατήσουμε κάπου και τα κάνουμε patch όταν είναι διαθέσιμα τα targets τους Εισάγουμε δύο λίστες, τις breaklist και continuelist που θα περιέχουν τους αριθμούς των quads που αντιστοιχούν σε unfinished jumps λόγω break και continue αντίστοιχα Κάνουμε patch στους γραμματικούς κανόνες των loops Παράδειγμα Ειδικές εντολές για loops (3/3) break break ; { $break.breaklist = newlist(nextquad()); emit(jump, _); } continue continue; { $ continue.contlist = newlist(nextquad()); emit(jump, _); } stmts stmt { $stmts = $stmt; } stmts stmts 1 stmt { $stmts.breaklist = merge($stmts 1.breaklist, $stmt.breaklist); $stmts. contlist = merge($stmts 1. contlist, $stmt. contlist); } Slide 33 / 40 Slide 34 / 40 Αποτίμηση εκφράσεων - Backpatching Για την αποτίμηση των λογικών εκφράσεων υπάρχουν δύο τεχνικές Ολική αποτίμηση Αποτιμάται ολόκληρη η έκφραση Π.χ. ο ενδιάμεσος κώδικας για το a < b or c < d με ολική αποτίμηση φαίνεται δίπλα Μερική αποτίμηση (short circuit evaluation) Αποτιμάται μόνο το ελάχιστο αναγκαίο τμήμα της έκφρασης από το οποίο μπορεί να εξαχθεί συμπέρασμα για την τιμή της Αυτή είναι η τεχνική ακολουθείται σε γλώσσες όπως C/C++/Java και είναι η default σημασιολογία στην alpha Απαιτεί ειδική παραγωγή κώδικα γνωστή ως backpatching Μερική αποτίμηση έκφρασης (1/5) Εισάγουμε δύο λίστες truelist και falselist που θα περιέχουν πληροφορία για τα αποτελέσματα των μερικών εκφράσεων Θα περιέχουν labels σε εντολές που πρέπει να κάνουμε jump για να αποτιμήσουμε το ελάχιστο αναγκαίο τμήμα της έκφρασης Τα labels που αντιστοιχούν σε αυτές τις εντολές προστίθενται στην κατάλληλη από τις δύο λίστες Καθώς παράγεται ο ενδιάμεσος κώδικας για την έκφραση οι JUMP εντολές δεν συμπληρώνονται (incomplete jumps) ε γνωρίζουμε από πριν που πρέπει να κάνουμε jump Τα jumps συμπληρώνονται αργότερα από τη backpatch backpatch(list, quad) κάθε incomplete jump που περιέχεται στη λίστα θα συμπληρωθεί με το quad που δίνεται Slide 35 / 40 Slide 36 / 40

10 Μερική αποτίμηση έκφρασης (2/5) Μερική αποτίμηση έκφρασης (3/5) Γραμματική Στον 1 ο κανόνα, αν κάποιο από τα Ε1 και Ε2 είναι true τότε και το Ε θα είναι true, άρα η συνολική truelist προκύπτει συνδυάζοντας τις επιμέρους. Aν το Ε1 είναι false, τότε πρέπει να εξεταστεί το Ε2, άρα η συνολική falselist προκύπτει από το E2. Όμοια και τα άλλα. Παράδειγμα: a < b or c < d and e < f Γίνεται reduced το a < b από το E id1 relop id2 Γίνεται reduced το c < d από το E id1 relop id2 Γίνεται reduced το e < f από το E id1 relop id2 Γίνεται reduce από το E E1 and M E2 (M= 5) Γίνεται reduce από το E E1 or M E2 (M=3) 1: IF_LESS a b _ 2: JUMP _ 3 3: IF_LESS c d _ 5 4: JUMP _ 5: IF_LESS e f _ 6: JUMP _ Η έκφραση Backpatch({3}, Backpatch({2}, είναι αληθής, 5) 3) αν εκτελεστούν οι JUMP εντολές με label 1 ή 5 ενώ είναι ψευδής True αν list: εκτελεστούν { 1, 3 5 } 5 } οι JUMP False εντολές list: με { label 4, 2 6 } 6 } 4 ή 6 Slide 37 / 40 Slide 38 / 40 Μερική αποτίμηση έκφρασης (4/5) Όταν μια λογική έκφραση χρησιμοποιηθεί θα πρέπει να προστεθούν extra εντολές για να δώσουν τελικά ένα boolean αποτέλεσμα Επίσης θα πρέπει να γίνουν κατάλληλα patched τα υπόλοιπα incomplete jumps που βρίσκονται στις truelist και falselist 1 : IF_LESS a b 7 x = a < b or c < d and e < f Η έκφραση είναι αληθής, αν εκτελεστούν οι JUMP εντολές με label 1 ή 5 ενώ είναι ψευδής αν εκτελεστούν οι JUMP εντολές με label 4 ή 6 Τα jumps με label 1 και 5 θα γίνουν patched στο ASSIGΝ true και αυτά με label 4 και 6 στο ASSIGN false. 2 : JUMP 3 3 : IF_LESS c d 5 4 : JUMP 9 5 : IF_LESS e f 7 6 : JUMP 9 7 : ASSIGN TRUE _t0 8 : JUMP 10 9 : ASSIGN FALSE _t0 10: ASSIGN _t0 x Μερική αποτίμηση έκφρασης (5/5) Extra εντολές χρειάζονται επίσης όταν τα operands της λογικής έκφρασης δεν είναι ήδη boolean Π.χ. x = a and b; y = f() or g() or h(); z = not x; Κάθε non-boolean operand θα πρέπει να μετατραπεί σε boolean με ένα true-test φτιάχνοντας παράλληλα τις truelist και falselist που του αντιστοιχούν x = a and not b Το a είναι αληθές αν είναι ίσο με TRUE, αλλιώς είναι ψευδές. Αρα παράγουμε το IF_EQ (1) που ανήκει στην truelist, και το JUMP (2) που ανήκει στη falselist. Ομοίως για το b, απλά το not αλλάζει τις λίστες και τελικά το label 3 ανήκει στην falselist και το 4 στην truelist. 1 : IF_EQ a TRUE 3 2 : JUMP 7 3 : IF_EQ b TRUE 7 4 : JUMP 5 5 : ASSIGN TRUE _t0 6 : JUMP 8 7 : ASSIGN FALSE _t0 8 : ASSIGN _t0 x Slide 39 / 40 Slide 40 / 40

a = false; else a = 3.33; b = (a and c); //?

a = false; else a = 3.33; b = (a and c); //? HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Παραγωγή Ενδιάμεσου Κώδικα Ι ΑΣΚΩΝ Αντώνιος Σαββίδης

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

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο Runtime Checking (1/3) Η γλώσσα alpha είναι μια dynamic typing γλώσσα (ο τύπος μιας μεταβλητής αλλάζει ακολουθώντας τον τύπο της τιμής που κάθε φορά αποθηκεύεται

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

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

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

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

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του

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

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

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

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

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

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

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

Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος

Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Symbol Table & Scopes Ι ΑΣΚΩΝ Αντώνιος Σαββίδης

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα Από τον ενδιάμεσο κώδικα στον τελικό (1/2) Τα ορίσματα των εντολών ενδιάμεσου κώδικα είναι του τύπου expr*. Αυτές οι εκφράσεις θα πρέπει

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

HY340, 2009 Α. Σαββίδης. Slide 3 / 39. Slide 4 / 39

HY340, 2009 Α. Σαββίδης. Slide 3 / 39. Slide 4 / 39 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 5 ο Τελικός κώδικας και εικονική μηχανή ΔΙΔΑΣΚΩΝ Αντώνιος

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

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

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

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

Φροντιστήριο 5 ο Τελικός κώδικας και εικονική μηχανή. Μέρος 1 ο Περιβάλλον εκτέλεσης HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ

Φροντιστήριο 5 ο Τελικός κώδικας και εικονική μηχανή. Μέρος 1 ο Περιβάλλον εκτέλεσης HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 5 ο Τελικός κώδικας και εικονική μηχανή Ι ΑΣΚΩΝ Αντώνιος

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

Slide 6 / 43. Slide 5 / 43. Α. Σαββίδης. Α. Σαββίδης. Slide 8 / 43. Slide 7 / 43. Α. Σαββίδης. Α. Σαββίδης HY340, 2009 HY340, 2009 HY340, 2009

Slide 6 / 43. Slide 5 / 43. Α. Σαββίδης. Α. Σαββίδης. Slide 8 / 43. Slide 7 / 43. Α. Σαββίδης. Α. Σαββίδης HY340, 2009 HY340, 2009 HY340, 2009 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Symbol Table ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

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

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

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

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

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων 1 Είσοδος/Έξοδος Είσοδος/Έξοδος ανάλογα με τον τύπο του προγράμματος Πρόγραμμα

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

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

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

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 2 η : Η Γλώσσα Προγραμματισμού VB.NET (1 ο Μέρος) Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

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

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

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

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

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

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

Τι είναι ο Symbol Table. ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο. Περιεχόμενη Πληροφορία. Table. Πίνακας Συμβόλων

Τι είναι ο Symbol Table. ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο. Περιεχόμενη Πληροφορία. Table. Πίνακας Συμβόλων Τι είναι ο Symbol Table ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα (μεταβλητές

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών PHP 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #3 τελεστές 1 Σπύρος Λάλης Τελεστής ανάθεσης Το σύμβολο της ανάθεσης είναι το = προσοχή: το σύμβολο ελέγχου ισότητας είναι το == Η μορφή των προτάσεων = 1. Αποτιμάται

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

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

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

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

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

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

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

Παραγωγή Ενδιάµεσου Κώδικα. Γιώργος Μανής

Παραγωγή Ενδιάµεσου Κώδικα. Γιώργος Μανής Παραγωγή Ενδιάµεσου Κώδικα Γιώργος Μανής Παραγωγή Ενδιάµεσου Κώδικα Κώδικας σε αρχική γλώσσα Κώδικας σε ενδιάµεση γλώσσα Κώδικας σε γλώσσα µηχανής (assembly) Παραγωγή Ενδιάµεσου Κώδικα Συντακτικό δέντρο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παραγωγή Ενδιάµεσου Κώδικα

Παραγωγή Ενδιάµεσου Κώδικα Παραγωγή Ενδιάµεσου Κώδικα Παραγωγή Ενδιάµεσου Κώδικα Κώδικας σε αρχική γλώσσα Γιώργος Μανής Κώδικας σε ενδιάµεση γλώσσα Κώδικας σε γλώσσα µηχανής (assembly) Παραγωγή Ενδιάµεσου Κώδικα Ενδιάµεση Γλώσσα

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

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

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

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

Προγραμματισμός PASCAL

Προγραμματισμός PASCAL Προγραμματισμός PASCAL 1 PASCAL Η PASCAL σχεδιάστηκε από τον Worth το 1968 στη Ζυρίχη, αρχικά σαν εργαλείο για τη διδασκαλία προγραμματισμού. Είναι γλώσσα για σειριακό προγραμματισμό. 2 Απλή και εύκολη

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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

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

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις.

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

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

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής Στόχοι και αντικείμενο ενότητας Βασικές κατασκευές Γλωσσών Προγραμματισμού (ΓΠ) Δομές ελέγχου ροής προγράμματος #4.. ντολές πιλογής Προτάσεις διακλάδωσης υπό συνθήκη ντολές if, if Φωλιασμένα (nested) if

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8) Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις (Διάλεξη 8) 8-1 Τι θα δούμε σήμερα Η εντολή if else Η εντολή if else ιf - -else H εντολή switch Λογικές παραστάσεις Σχεσιακοί

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

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

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

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

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

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

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

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

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

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

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Εισαγωγή στον Προγ/μό Υπολογιστών Εισαγωγή στον Προγ/μό Υπολογιστών Διάλεξη 1 Εκφράσεις, κλητικές εκφράσεις, ονόματα Περιεχόμενα Εκφράσεις (expressions) Τελεστές (operators) της Python Κλητικές εκφράσεις (call expressions) Ονόματα (names)

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

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Σημειωματάριο Τετάρτης 18 Οκτ. 2017 Σημειωματάριο Τετάρτης 18 Οκτ. 2017 Περισσότερα για λίστες και ανακύκλωση Είδαμε σήμερα διάφορα προβλήματα και λύσεις για λίστες. Είδαμε επίσης την ανακύκλωση while. Στο επόμενο βλέπουμε πώς μπορούμε να

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Μεταβλητές Μεταβλητή ονομάζεται ένα μέγεθος

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

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

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

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

Διάλεξη 2: Εισαγωγή - Μορφοποίηση, Εκφράσεις, Επιλογή, Επανάληψη

Διάλεξη 2: Εισαγωγή - Μορφοποίηση, Εκφράσεις, Επιλογή, Επανάληψη Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 2: Εισαγωγή - Μορφοποίηση, Εκφράσεις, Επιλογή, Επανάληψη (Κεφάλαια 3-4-5-6, KNK-2ED) Ηλίας Αθανασόπουλος (Η παρουσιάση έχει

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

οµές Επιλογής Εντολές if και switch

οµές Επιλογής Εντολές if και switch οµές Επιλογής Εντολές if και switch οµή Ελέγχου Control Structure Ένας συνδυασµός ατοµικών εντολών σε µία λογική µονάδα, όπου υπάρχει µόνο ένα σηµείο εισόδου και ένα σηµείο εξόδου. οµή Ελέγχου για Επιλογή

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

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

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

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

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής email: dzavanti@cs.uoi.gr Περιεχόμενα Ορισμοί Λογικοί τελεστές f0r loops while loops if else

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

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

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής Διάλεξη 1 Πράξεις Τελεστές Έλεγχος Ροής Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Αριθμητικοί Τελεστές- Αριθμητικές Πράξεις 2 Internal use only Αριθμητικοί

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

Μεταγλωττιστές. Παραγωγή Ενδιάμεσου Κώδικα. Εργαστήριο 8. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μεταγλωττιστές. Παραγωγή Ενδιάμεσου Κώδικα. Εργαστήριο 8. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 8 Παραγωγή Ενδιάμεσου Κώδικα Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Παραγωγή Ενδιάμεσου Κώδικα Source Ο ενδιάμεσος κώδικας αποτελεί τη γλώσσα επικοινωνίας

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

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery ιαχείριση εδομένων στον Παγκόσμιο Ιστό Χρήστος ουλκερίδης

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

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

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

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές

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

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους

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

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

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

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

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών JAVASCRIPT 1 Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

Η γλώσσα προγραμματισμού EEL Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

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