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

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

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

Transcript

1 Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Τρίτη Σειρά Ασκήσεων 27 Δεκεμβρίου 2016 Μέρος Α. (παράδοση: τέλος εξεταστικής Ιανουαρίου ή Σεπτεμβρίου) Άσκηση 1: Έστω ένα απόσπασμα γραμματικής σε συμβολισμό EBNF 1 που περιγράφει τη γλώσσα C: stmt (CASE CONST : )* expression ; (CASE CONST : )* IF ( expression ) stmt [ELSE stmt] (CASE CONST : )* WHILE ( expression ) stmt (CASE CONST : )* SWITCH ( expression ) stmt (CASE CONST : )* RETURN [expression] ; (CASE CONST : )* BREAK ; (CASE CONST : )* CONTINUE ; { (stmt)* } όπου με κεφαλαία παριστάνονται τερματικά σύμβολα της γραμματικής, ενώ άλλοι κανόνες μη τερματικών συμβόλων της γραμματικής δε θα μας απασχολήσουν. Στη γραμματική αυτή δε φαίνονται οι πιο κάτω περιορισμοί: Η χρήση ετικέτας CASE επιτρέπεται μόνο σε εντολές που περιέχονται άμεσα σε εντολή SWITCH, και όχι στο εσωτερικό φωλιασμένων αυτής εντολών IF ή WHILE. Η εντολή BREAK μπορεί να εμφανίζεται μόνο στο εσωτερικό μιας εντολής WHILE ή μιας εντολής SWITCH, συμπεριλαμβανομένων φωλιασμένων αυτών εντολών. Η εντολή CONTINUE μπορεί να εμφανίζεται μόνο στο εσωτερικό μιας εντολής WHILE, συμπεριλαμβανομένων φωλιασμένων αυτής εντολών. Α. Να τροποποιήσετε κατάλληλα την παραπάνω γραμματική, ώστε οι παραγόμενες συμβολοσειρές να πληρούν αυτούς τους περιορισμούς. Β. Αντί της τροποποίησης του ερωτήματος Α, σχεδιάστε τη σημασιολογική ανάλυση που πρέπει να εφαρμοστεί στους υπάρχοντες κανόνες για την ικανοποίηση των περιορισμών, χρησιμοποιώντας κατάλληλα κατηγορήματα ή καθολικές μεταβλητές. Γ. Αν επιπλέον των παραπάνω, υπήρχε περιορισμός μέγιστου βάθους φωλιάσματος εντολών IF, WHILE και SWITCH, πχ. 5, εξηγήστε (α) πώς θα ενσωματώνατε έναν τέτοιο περιορισμό στη γραμματική και (β) πώς θα τον εφαρμόζατε μέσω σημασιολογικής ανάλυσης. Συγκρίνετε και σχολιάστε τις δύο μεθόδους. Άσκηση 2: Θεωρήστε την ακόλουθη δομή κώδικα C, εμφανώς κακογραμμένη: while (E1) { 1 Στο συμβολισμό EBNF οι τελεστές * και ( ) έχουν την ίδια λειτουργία που έχουν στις κανονικές εκφράσεις, ενώ ο τελεστής [ ] δηλώνει την προαιρετική χρήση του ορίσματός του. Προσέξτε ότι σύμβολα σε αποστρόφους (πχ. '(', ']', κοκ) είναι τερματικά σύμβολα της γραμματικής και όχι τελεστές EBNF.

2 2 do { E2; if (E3) while (E4) E5; else E6; E7;} while (E8); E9; for (E10; E11; E12) { if (E13) break; E14; if (E15) if (E16) E17; else continue; else E18; E19; } E20; if (E21) if (E22) break; else E23; E24; } όπου Ε1 έως E24 είναι εκφράσεις της C, είτε ως απλές εντολές είτε ως λογικές εκφράσεις σε σύνθετες εντολές if, if-else, while, do-while και for. Η μετάφραση της δομής αυτής δίνει μια ακολουθία κώδικα, όπου i1 έως i25 είναι ετικέτες στις οποίες ξεκινά ο αντίστοιχος κώδικας των παραπάνω εκφράσεων, με την τελευταία να ξεκινά τον κώδικα που ακολουθεί τη συνολική δομή. Κατά τη διαδικασία μετάφρασης, για κάθε λογική έκφραση Β διατηρούμε δύο διευθύνσεις, την B.true και την B.false, οι οποίες αντιστοιχούνται στις ετικέτες κώδικα όπου κατευθύνεται η ροή του προγράμματος για αληθή και για ψευδή τιμή της έκφρασης. Επίσης, για κάθε εντολή S διατηρούμε μια διεύθυνση, την S.next, η οποία αντιστοιχείται στην ετικέτα κώδικα όπου κατευθύνεται η ροή του προγράμματος μετά την εκτέλεση της εντολής. Α. Με δεδομένες τις παραπάνω ετικέτες i1 έως i25, βρείτε ποιες από αυτές αναφέρονται με τις διευθύνσεις true, false και next καθεμίας από τις εκφράσεις Ε1 έως Ε24. Αν η έκφραση νοείται ως λογική έκφραση, τότε δεν ορίζεται η διεύθυνση next, ενώ αν η έκφραση νοείται ως εντολή, τότε δεν ορίζονται οι διευθύνσεις true και false. Β. Βρείτε όλες τις σύνθετες εντολές (if, while, for και μπλοκ εντολών) που υπάρχουν στον παραπάνω κώδικα, και για καθεμία από αυτές βρείτε ποιες ετικέτες αναφέρονται με τις διευθύνσεις next αυτών των εντολών. Άσκηση 3: Θεωρήστε την παρακάτω γραμματική των εκφράσεων κάποιας γλώσσας προγραμματισμού, παρόμοιας με τη γλώσσα C: expression expression OPER expression expression PREFIX expression expression expression POSTFIX expression expression? expression : expression expression expression [ expression ] expression expression ( expression ) expression ID expression CONSTANT expression ( expression )

3 3 όπου οι τελεστές περιγράφονται με τις λεκτικές μονάδες OPER, PREFIX και POSTFIX, καθώς και με τα σύμβολα [ ], ( ) και? :. Στον τελευταίο κανόνα οι παρενθέσεις δεν αποτελούν τελεστή. Η αναλυτική προσεταιριστικότητα για όλους τους τελεστές της γλώσσας δίνεται στον παρακάτω πίνακα. Οι τελεστές με ένα τελούμενο δίνονται στις 3 πρώτες γραμμές μετά τη λεκτική μονάδα που τους περιγράφει. Η προτεραιότητα των τελεστών καθορίζεται από τη σειρά που αυτοί βρίσκονται στον πίνακα, από τη μεγαλύτερη προς τη μικρότερη. Τελεστές στην ίδια σειρά έχουν την ίδια προτεραιότητα. Η προσεταιριστικότητα που ορίζεται για τους τελεστές POSTFIX ++ και POSTFIX -- έχει νόημα μόνο για συνδυασμό αυτών με τους τελεστές δύο τελούμενων της ίδιας προτεραιότητας. Σύμβολο τελεστή Προσεταιριστικότητα [] (). > POSTFIX ++ Αριστερή PREFIX ++ - PREFIX & * + ~! - * / % Αριστερή + Αριστερή << >> Αριστερή < > <= >= Αριστερή ==!= Αριστερή & Αριστερή ^ Αριστερή Αριστερή && Αριστερή Αριστερή?: Δεξιά = *= /= %= += = <<= >>= &= ^= = Δεξιά, Αριστερή Α. Εξετάστε την πιο πάνω γραμματική και αναγράψτε σε αριθμημένη λίστα τις συγκρούσεις ελάττωσης-ολίσθησης ή ελάττωσης-ελάττωσης που θα εμφανιστούν κατά την ανάλυση από κάποιο συντακτικό αναλυτή τύπου LR. Δεν είναι αναγκαίο να κατασκευάσετε καταστάσεις ή πίνακα συντακτικής ανάλυσης, αν είστε εξοικειωμένοι με γραμματικές της πιο πάνω μορφής, και αρκεί να δώσετε τα στοιχεία που θα εμφανίσουν την κάθε σύγκρουση. Β. Αν κάποιος λεκτικός αναλυτής διαχωρίζει ιδανικά τα σύμβολα, και επιστρέφει τις λεκτικές μονάδες σε κάποιον συντακτικό αναλυτή τύπου LR, δώστε το δέντρο έκφρασης που αντιστοιχεί στην ανάλυση καθεμιάς από τις πιο κάτω εκφράσεις της γλώσσας: 1. x=(++a[i+1].f,y)?y=*b[i+2]=g(z->a[j--+2].f,**m.o) c->k[j*3]:*b[j] 2. *(a[(k-1)%n].g(*f->p*u.w(a[k**t+1]->m))---y)=b+c.i++*d->e.r[i+j]*g 3. d[k[i*a[j+2]->n(*p.u[j],b-1)-1]]==0?s<<=1,x:(t,x=a[j-----i]->m[j]) 4. *n.a(g(--b+(*u->x[t[i%*k-1]]=*(j+p->q[s[i+j-k].a]++))))=*x.c[i]-y Κάντε οποιεσδήποτε υποθέσεις για την τοποθέτηση των μεταβλητών και την οργάνωση των σύνθετων δομών στο χώρο δεδομένων του προγράμματος, είτε καθολικό/στατικό (G) είτε τοπικό/στοίβας (L). Σημειώστε πάνω σε κάθε κόμβο που προκύπτει μετά από επίλυση σύγκρουσης τον αριθμό της σύγκρουσης αυτής από τη λίστα του προηγούμενου ερωτήματος. Άσκηση 4-5: Έστω το παρακάτω απόσπασμα κώδικα C: while (k >= 0) { a[i+1][k=k-2] = --a[i+1][k--] + x*b[i][c[w->m[++j]]]; b[i++][c[w->m[j]]] = y*a[i][k] + ++x*b[i-1][c[w->m[j--]]+1]; c[w->m[j+1]] += y*(a[i--][k+1] x*b[i+1][c[w->m[j+1]]+1]); }

4 4 όπου: (α) οι πίνακες a, b και c είναι δηλωμένοι ως καθολικές μεταβλητές τύπου int[100][10], int[100][100] και int[100], αντίστοιχα, (β) η βαθμωτή μεταβλητή w είναι δηλωμένη ως καθολική τύπου pointer που δείχνει σε τύπο struct με ένα πεδίο πίνακα m τύπου int[10] σε μετατόπιση 16 από την αρχή της δομής, (γ) οι βαθμωτές μεταβλητές x και y είναι δηλωμένες τοπικά ως στατικές τύπου int, και (δ) οι βαθμωτές μεταβλητές i, j και k είναι δηλωμένες τοπικά ως τύπου int. Οι δηλώσεις των πιο πάνω μεταβλητών είναι οι πρώτες που εμφανίζονται στον αντίστοιχο χώρο δεδομένων, με την σειρά που αυτές αναφέρθηκαν, χωρίς να υπολογίζουμε τις αρχικές δεσμευμένες θέσεις του εγγραφήματος δραστηριοποίησης της μονάδας που μας απασχολεί, όπου τοποθετούνται η διεύθυνση επανόδου, η τιμή αποτελέσματος και οι παράμετροι κλήσης της μονάδας. Θεωρήστε ότι οι παρενέργειες μιας έκφρασης εκτελούνται ακριβώς στο σημείο της έκφρασης όπου εμφανίζονται 2. 4Α. Δώστε έναν ενδιάμεσο κώδικα σε μορφή αφηρημένου συντακτικού δέντρου (ΑΣΔ) για τον παραπάνω αρχικό κώδικα. Θεωρήστε τη συνηθισμένη γραμματική και σημασιολογία της γλώσσας C, με την τροποποίηση που προαναφέρθηκε. Ειδικότερα, θεωρήστε ότι η εντολή ε- πανάληψης while έχει τη σύνταξη που περιγράφεται από τον κανόνα: while T_WHILE ( expression ) statement και τη γνωστή σημασιολογία που καθορίζει ότι η έκφραση αποτιμάται πριν από κάθε επανάληψη, με το αποτέλεσμά της να διακόπτει την εκτέλεση του βρόχου, αν έχει τιμή που να αντιστοιχεί στο λογικό 0. Σημειώστε σε κάθε κόμβο αναγνωριστικού και τελεστών [] και -> αν η αναφορά είναι δεξιάς ή αριστερής προσπέλασης. 4Β. Σχεδιάστε ένα σχήμα μετασχηματισμού του δέντρου της εντολής while για παραγωγή τελικού κώδικα. Το σχήμα αυτό πρέπει να μετασχηματίζει τον κόμβο της εντολής while σε κάποιο δέντρο με κόμβους απλούστερων εντολών διακλάδωσης και άμεσου άλματος. Εφαρμόστε το σχήμα που βρήκατε στο δέντρο της εντολής while που δώσατε στο προηγούμενο ερώτημα, και δώστε το νέο ενδιάμεσο κώδικα που προκύπτει. 4Γ. Αν η τελική γλώσσα μετάφρασης είναι η γλώσσα MIPS, μετασχηματίστε κατάλληλα τον ενδιάμεσο κώδικα σε ΑΣΔ χαμηλότερου επιπέδου. Ειδικότερα: (α) αναπτύξτε τους κόμβους τελεστή [] σε συνδυασμούς κόμβων πρόσθεσης και πολλαπλασιασμού, προσθέτοντας κόμβους φόρτωσης για δεξιές προσπελάσεις, (β) αναπτύξτε τους κόμβους τελεστή -> σε συνδυασμούς κόμβων φόρτωσης και πρόσθεσης, προσθέτοντας επιπλέον κόμβους φόρτωσης για δεξιές προσπελάσεις, (γ) ενοποιήστε συνδυασμούς κόμβων, είτε για πράξεις με άμεσα τελούμενα, είτε για προσπελάσεις μνήμης με σταθερή μετατόπιση από την αρχή του αντίστοιχου χώρου δεδομένων, όταν το άμεσο τελούμενο ή η μετατόπιση έχουν κατάλληλο μέγεθος, και (δ) εφαρμόστε υποβιβασμό ισχύος σε κόμβους σύνθετων πράξεων, μετασχηματίζοντάς τους σε κόμβους ή συνδυασμούς κόμβων πιο απλών πράξεων πρόσθεσης, αφαίρεσης και ολίσθησης. Υποθέστε ότι όλα τα αντικείμενα των τύπων int και pointer έχουν μέγεθος 4 bytes και ότι η τοποθέτηση αυτών στο χώρο δεδομένων είναι ευθυγραμμισμένη. Υποθέστε ακόμα ότι οι δεσμευμένες θέσεις του εγγραφήματος δραστηριοποίησης που μας απασχολεί καταλαμβάνουν χώρο 16 bytes. 4Δ. Προχωρήστε σε δέσμευση καταχωρητών στον τελικό ενδιάμεσο κώδικα, ξεχωριστά για κάθε εντολή εντολή while και τρεις εντολές έκφρασης, με τη μέθοδο χρωματισμού του γράφου αλληλεπιδράσεων, ώστε να βρείτε τον ελάχιστο αριθμό απαιτούμενων καταχωρητών. Θεωρήστε ότι για τη δέσμευση καταχωρητών διατίθενται οι καταχωρητές γενικού σκοπού από τον $2 έως και τον $25. 2 Η κλασική C δεν ορίζει επακριβώς πότε εκτελούνται οι παρενέργειες μιας έκφρασης μεταξύ της αρχής και του τέλους της, κι έτσι μια έκφραση όπως η ++i+i δεν έχει μονοσήμαντο αποτέλεσμα, καθώς η δεύτερη εμφάνιση του i μπορεί να δίνει είτε τη νέα είτε την παλαιά τιμή του!

5 5 4Ε. Δώστε έναν τελικό κώδικα MIPS για τον παραπάνω κώδικα, παράγοντας μέχρι τρεις εντολές για κάθε κόμβο του τελικού ενδιάμεσου κώδικα, χρησιμοποιώντας τους καταχωρητές που βρήκατε στο προηγούμενο ερώτημα. Θεωρήστε ότι ο καταχωρητής $1 είναι διαθέσιμος για προσωρινή αποθήκευση κάποιας τιμής που χρησιμοποιείται από εντολή του ίδιου κόμβου, όταν δε μπορεί να χρησιμοποιηθεί ο δεσμευμένος καταχωρητής του κόμβου. Τέλος, θεωρήστε ότι οι καταχωρητές $28 ($gp) και $29 ($sp) περιέχουν τις αρχικές διευθύνσεις του χώρου στατικών δεδομένων και του ενεργού εγγραφήματος δραστηριοποίησης, αντίστοιχα. 5ΣΤ. Βρείτε όλες τις κοινές υποεκφράσεις στο συνολικό ενδιάμεσο κώδικα του ερωτήματος Γ, αφού μελετήσετε προσεκτικά τις αλλαγές στις διάρκειες ζωής των μεταβλητών που συμμετέχουν σε αυτόν. Ειδικότερα: (α) χρησιμοποιήστε συμβολική ανάλυση των υποεκφράσεων που περιέχουν μεταβλητές που αλλάζουν τιμή, ώστε να εντοπίσετε κοινές υποεκφράσεις που δε βρίσκονται με απλή διαπέραση του ενδιάμεσου κώδικα, και (β) εφαρμόστε διάδοση αντιγράφων όπου μπορείτε, ώστε να αποφύγετε άσκοπες φορτώσεις από τη μνήμη. Μετασχηματίστε τον ενδιάμεσο κώδικα, ώστε οι κοινές υποεκφράσεις να εμφανίζονται μόνο μια φορά. Όπου είναι απαραίτητο, μετακινήστε κατάλληλα την εφαρμογή ενός τελεστή αύξησης ή μείωσης, ώστε να διαχωρίσετε τις τιμές των εκφράσεων από τις παρενέργειές τους 3. 5Ζ. Ένας κώδικας που δεν αλλάζει τιμή κατά την εκτέλεση ενός βρόχου λέμε ότι είναι αναλλοίωτος στην εκτέλεση του βρόχου και μπορεί να εκτελεστεί πριν την είσοδο στο βρόχο. Ένας κώδικας παύει να είναι αναλλοίωτος, μόλις (α) του αποδοθεί νέα τιμή με κάποια ανάθεση αν είναι αριστερής προσπέλασης, ή (β) αναφερθεί σε κώδικα που δεν είναι αναλλοίωτος. Δώστε έναν αλγόριθμο εύρεσης και μετακίνησης αναλλοίωτου κώδικα στον ενδιάμεσο κώδικα μορφής αφηρημένου συντακτικού δέντρου μιας εντολής επανάληψης while. Εφαρμόστε τον αλγόριθμό σας στον κώδικα που βρήκατε στο προηγούμενο ερώτημα μετά την απαλοιφή των κοινών υποεκφράσεων. Βρείτε έτσι τον αναλλοίωτο κώδικα στην εκτέλεση του βρόχου, μετακινήστε τον πριν από την εντολή επανάληψης, και δώστε τον ενδιάμεσο κώδικα που προκύπτει. 5Η. Προχωρήστε σε νέα δέσμευση καταχωρητών στο συνολικό τελικό ενδιάμεσο κώδικα με τη μέθοδο χρωματισμού του γράφου αλληλεπιδράσεων, ώστε να βρείτε τον ελάχιστο αριθμό απαιτούμενων καταχωρητών. Αριθμήστε τους κόμβους με τη σειρά αποτίμησής τους από αριστερά προς τα δεξιά, και κατασκευάστε το γράφο αλληλεπιδράσεων με προσοχή, επειδή μετά την εύρεση των κοινών υποεκφράσεων και του αναλλοίωτου κώδικα, η διάρκεια ζωής κάποιων κόμβων είναι αυξημένη και ξεπερνά τα όρια των επιμέρους δέντρων έκφρασης. Θεωρήστε και πάλι ότι για τη δέσμευση καταχωρητών διατίθενται οι καταχωρητές γενικού σκοπού από τον $2 έως και τον $25. 5Θ. Δώστε ένα νέο τελικό κώδικα MIPS για τον παραπάνω κώδικα, παράγοντας μέχρι τρεις εντολές για κάθε κόμβο του τελικού ενδιάμεσου κώδικα, με τη σειρά αρίθμησης που κάνατε, και χρησιμοποιώντας τους καταχωρητές που βρήκατε στο προηγούμενο ερώτημα. Κάντε τις ίδιες υποθέσεις με εκείνες του ερωτήματος Ε. 5Ι. Να συγκρίνετε τους δύο τελικούς κώδικες MIPS που δώσατε, με βάση το συνολικό αριθμό εντολών, καθώς και τον αριθμό εντολών και προσπελάσεων μνήμης στο σώμα του βρόχου. Άσκηση 6: Θεωρήστε το πιο κάτω πρόγραμμα σε κάποια γλώσσα προγραμματισμού που υποστηρίζει φωλιασμένα υποπρογράμματα με στατικό δέσιμο: program main(); a,b: integer; function p(name x: integer; var y,z: integer): integer; a: integer; 3 Για παράδειγμα, η συμβολική ανάλυση μπορεί να εντοπίσει τις εκφράσεις p[i] και p[i++] ως κοινές υποεκφράσεις, όταν εμφανίζονται με αυτή τη σειρά χωρίς ενδιάμεση αλλαγή τιμής του i, όμως για να απαλείψει τη δεύτερη, θα πρέπει να προσθέσει σε κατάλληλο σημείο την έκφραση i++.

6 6 function f(y: integer): integer; b,c: integer; a := a+1; if (g(y<=0)) then return 2; return 2*x + p(y--/2,b,c) b*c; end function; function g(name i: integer): integer; if (b < 3) then return 1; return i; end function; a := b++; y := f(x); z := y*f(x) a; return a; end function; a := 1; b := 6; p(a+b--,a,b); print(a,b); end program. Οι παράμετροι στην κλήση υποπρογραμμάτων μεταδίδονται κατ αναφορά εάν της δήλωσής τους προηγείται η λέξη-κλειδί var, κατ όνομα εάν της δήλωσής τους προηγείται η λέξη-κλειδί name ή κατ αξία σε άλλη περίπτωση. Κάθε συνάρτηση του παραπάνω προγράμματος σχηματίζει εγγράφημα δραστηριοποίησης, το οποίο περιέχει με τη σειρά (α) το σύνδεσμο προσπέλασης, (β) τη διεύθυνση επανόδου, (γ) την τιμή αποτελέσματος, (δ) τις τυπικές παραμέτρους και (ε) τις τοπικές μεταβλητές. Οι τυπικές παράμετροι και οι τοπικές μεταβλητές καταλαμβάνουν θέσεις με τη σειρά που εμφανίζονται στον κώδικα. Η αποτίμηση των εκφράσεων του κώδικα γίνεται αυστηρά από αριστερά προς τα δεξιά, με τις όποιες παρενέργειες να εκτελούνται ακριβώς στο σημείο όπου εμφανίζονται. Η επίλυση των μη τοπικών αναφορών γίνεται με τη μέθοδο του συνδέσμου προσπέλασης. Α. Να δώσετε τον ενδιάμεσο κώδικα σε μορφή ΑΣΔ για το κυρίως πρόγραμμα και τις δύο συναρτήσεις του παραπάνω αρχικού κώδικα. Αναλύστε την εντολή if κατά τα γνωστά, ενώ θεωρήστε ότι η εντολή return δημιουργεί κόμβο τύπου return_stmt με μοναδικό παιδί τον κόμβο της έκφρασης-ορίσματος της εντολής. Η print() είναι συνάρτηση βιβλιοθήκης Ε/Ε με παραμέτρους κατ αξία. Β. Μια υλοποίηση περάσματος παραμέτρου κατ όνομα είναι με πέρασμα δύο στοιχείων: (α) του περιβάλλοντος στο οποίο γίνονται οι αποτιμήσεις της παραμέτρου, δηλαδή ενός δείκτη στην αρχή του εγγραφήματος δραστηριοποίησης του καλούντος περιβάλλοντος, και (β) κώδικα με τον οποίο γίνονται οι αποτιμήσεις αυτές, δηλαδή μιας διεύθυνσης κατάλληλου υποπρογράμματος που εκτελεί την αποτίμηση στο περιβάλλον αυτό. Έτσι, για την παράμετρο κατ όνομα του παραπάνω κώδικα αποσυνδέστε τα υποδέντρα υπολογισμού των αντίστοιχων πραγματικών παραμέτρων και δημιουργήστε ανεξάρτητα ΑΣΔ υλοποίησης αυτών των υποπρογραμμάτων. Αντικαταστήστε τις πραγματικές παραμέτρους του αρχικού ενδιάμεσου κώδικα με κόμβους κλήσης του αντίστοιχου υποπρογράμματος, όπου σαν παράμετρος θα περνάει ο πιο πάνω δείκτης. Γ. Προχωρήστε σε απλή δέσμευση καταχωρητών στον ενδιάμεσο κώδικα του προηγούμενου ερωτήματος για παραγωγή τελικού κώδικα MIPS. Θεωρήστε ότι διατίθενται όλοι οι καταχωρητές γενικού σκοπού από τον $2 έως και τον $25. Όμως, οι καταχωρητές $4 έως $7 πρέπει να χρησιμοποιούνται για πέρασμα παραμέτρων, ο καταχωρητής $2 πρέπει να χρησιμοποιείται για επιστροφή αποτελέσματος, ενώ ο καταχωρητής $3 πρέπει να χρησιμοποιείται για πέρασμα του συνδέσμου προσπέλασης κατά την κλήση μιας συνάρτησης. Οι καταχωρητές $16 έως $23 πρέπει να διατηρούν την τιμή τους κατά την κλήση μιας συνάρτησης, οπότε αν δεσμεύονται, πρέπει να αποθηκεύονται σε βοηθητικές θέσεις στη στοίβα με την είσοδο στη συνάρτηση και να ξαναφορτώνονται πριν την έξοδο από τη συνάρτηση. Αν το μέγεθος λέξης είναι 4 bytes, ποιο

7 7 είναι το μέγεθος εγγραφήματος δραστηριοποίησης για καθεμία από τις μονάδες του κώδικα, συμπεριλαμβανομένων των υποπρογραμμάτων αποτίμησης των παραμέτρων κατ όνομα; Υ- πόδειξη: Αν ένας κόμβος έχει διάρκεια ζωής που περιλαμβάνει κάποια κλήση συνάρτησης, τότε είναι σκόπιμο γι αυτόν τον κόμβο να δεσμεύεται καταχωρητής που διατηρεί την τιμή του κατά την κλήση. Δ. Δώστε έναν τελικό κώδικα MIPS για τον παραπάνω κώδικα, χρησιμοποιώντας τους καταχωρητές που βρήκατε στο προηγούμενο ερώτημα. Όπου χρειάζεστε κάποιο βοηθητικό καταχωρητή, χρησιμοποιήστε τον $1. Μην ξεχάσετε τις εντολές διαχείρισης της στοίβας στην είσοδο και στην έξοδο των συναρτήσεων, για ενεργοποίηση και απενεργοποίηση του αντίστοιχου εγγραφήματος δραστηριοποίησης, τις εντολές διαχείρισης των συνδέσμων προσπέλασης, καθώς και τις εντολές φόρτωσης και αποθήκευσης των βοηθητικών θέσεων στη στοίβα που πιθανά χρησιμοποιείτε. Εκτός των παραπάνω καταχωρητών, υποθέστε ότι ο καταχωρητής $31 χρησιμοποιείται για αποθήκευση της διεύθυνσης επανόδου στην κλήση συναρτήσεων, ο καταχωρητής $28 χρησιμοποιείται για να δείχνει την αρχή του χώρου στατικών δεδομένων, και ο καταχωρητής $29 χρησιμοποιείται για να δείχνει την τρέχουσα κορυφή στοίβας που είναι και η αρχή του ενεργού εγγραφήματος δραστηριοποίησης. Ε. Τροποποιήστε τον κώδικα του προηγούμενου ερωτήματος, ώστε αντί περάσματος κατ ό- νομα, η λέξη name να προσδιορίζει πέρασμα κατ ανάγκη. Δώστε μόνο το τροποποιημένο μέρος του κώδικα. ΣΤ. Να επαναλάβετε τα δύο προηγούμενα ερωτήματα, ώστε αντί περάσματος κατ αναφορά, η λέξη var να προσδιορίζει πέρασμα κατ αξία και αποτέλεσμα. Ζ. Να βρείτε τι τυπώνεται από καθέναν από τους τέσσερεις πιο πάνω κώδικες, σχεδιάζοντας με το χέρι τη στοίβα εκτέλεσης ανά περίπτωση, και δείχνοντας την εξέλιξή της μέχρι τον τερματισμό της εκτέλεσης του κώδικα. Η (εργαστηριακή). Να επαληθεύσετε τα αποτελέσματα του προηγούμενου ερωτήματος, περνώντας τους τέσσερεις κώδικες από κάποιον προσομοιωτή MIPS (για παράδειγμα τον SPIM ή τον MARS), αφού προσθέσετε τον κώδικα για την κλήση του κυρίως προγράμματος, και τροποποιήστε τον κώδικα κλήσης της συνάρτησης print() για πραγματική εκτύπωση ανάλογα με τον προσομοιωτή. Να παραδώσετε ηλεκτρονικά τους τελικούς κώδικες MIPS αναφέροντας και ποιον προσομοιωτή χρησιμοποιήσατε. Άσκηση 7-8 (προαιρετική συμπληρωματική του Σημ. Αναλυτή της εργασίας): Οι πιο κάτω κανόνες ορίζουν τη γραμματική κάποιας γλώσσας προγραμματισμού: P DS P S DS D ; S ; D D ; D I : T I I, id id T itype ftype btype T array [ IL ] of T record D end * T S S ; S E := E S while E do P end if E then P end with E do P end E inum fnum bnum id E E [ EL ] E. id * E ( Ε ) E E and E E or E not E E E = E E < E E > E E E + E E - E E * E Ε / Ε Ε % Ε EL EL, E E IL IL, inum inum Ένα πρόγραμμα της γλώσσας αυτής είναι ένα μπλοκ δηλώσεων-εντολών, δηλαδή μια ακολουθία ανάμικτων δηλώσεων και εντολών, η οποία τελειώνει υποχρεωτικά σε εντολή.

8 8 Οι λέξεις-κλειδιά itype, ftype και btype παριστάνουν τους τρεις βασικούς τύπους της γλώσσας, ακέραιο, πραγματικό και λογικό, αντίστοιχα. Οι λέξεις-κλειδιά array και of ορίζουν την κατασκευή ενός σύνθετου τύπου πίνακα, πιθανά πολυδιάστατου, ενώ οι λέξεις-κλειδιά record και end ορίζουν την κατασκευή ενός σύνθετου τύπου εγγραφής. Ένας τύπος πίνακα αποτελείται από στοιχεία ίδιου τύπου και δεικτοδοτείται με τη βοήθεια του τελεστή [ ]. Αντίθετα, ένας τύπος εγγραφής αποτελείται από πεδία πιθανά διαφορετικών τύπων που α- ναφέρονται με τη βοήθεια του τελεστή.. Το σύμβολο * στα αριστερά τύπου κατασκευάζει ένα σύνθετο τύπο δείκτη προς οποιονδήποτε τύπο, ενώ στα αριστερά έκφρασης είναι τελεστής που αποδεικτοδοτεί τον αντίστοιχο δείκτη. Τα τερματικά σύμβολα inum, fnum και bnum παριστάνουν τις σταθερές τύπου itype, ftype και btype αντίστοιχα, ενώ το σύμβολο id είναι το τερματικό σύμβολο των αναγνωριστικών της γλώσσας. Οι λέξεις-κλειδιά and, or και not παριστάνουν τελεστές. Τα σύμβολα =, <, >, +, -, *, / και % είναι οι υπόλοιποι δυαδικοί τελεστές της γλώσσας. Τέλος, το σύμβολο, επιτρέπει τη δημιουργία λίστας ακεραίων σταθερών και εκφράσεων που μπορούν να είναι οι δείκτες ενός πολυδιάστατου πίνακα σε δήλωση ή αναφορά του. Οι εντολές της γλώσσας είναι η ανάθεση, η οποία υλοποιείται με τη βοήθεια του συμβόλου :=, η εντολή ελέγχου, η οποία υλοποιείται με τη βοήθεια των λέξεων-κλειδιά if then και end, ο βρόχος με συνθήκη, ο οποίος υλοποιείται με τη βοήθεια των λέξεων-κλειδιά while, do και end, και η εντολή εγγραφής, η οποία υλοποιείται με τη βοήθεια των λέξεων-κλειδιά with, do και end. Οι δηλώσεις και οι εντολές της γλώσσας ακολουθούν τους εξής σημασιολογικούς κανόνες: 1. Οι εντολές ελέγχου, βρόχου και εγγραφής δημιουργούν φωλιασμένες εμβέλειες, όπου οι δηλώσεις έχουν εμβέλεια μέχρι το τέλος της εντολής, επισκιάζοντας τυχόν δηλώσεις του ίδιου αναγνωριστικού σε κάποια εξωτερική εμβέλεια. 2. Κάθε δήλωση εισάγει το τύπο ενός ή περισσότερων αναγνωριστικών σε έναν πίνακα συμβόλων. Προϋπάρχουσα δήλωση του ίδιου αναγνωριστικού στην ίδια εμβέλεια αποτελεί σημασιολογικό σφάλμα. 3. Η αναδρομή στους κανόνες κατασκευής σύνθετων τύπων επιτρέπει φωλιάσματα, όπως για παράδειγμα στη δήλωση: x : array[10,100] of *record a,b : array[10] of fnum end Τα φωλιάσματα μπορούν να φτάσουν σε ένα μέγιστο βάθος 5 αναδρομών. 4. Οι ακέραιες σταθερές που δίνονται στην κατασκευή ενός πίνακα ορίζουν το μέγεθος του πίνακα ανά διάσταση, έτσι ώστε η αναφορά στα στοιχεία του να γίνεται ξεκινώντας από το 0 για κάθε διάσταση. Ως μέγιστη τιμή κάθε σταθεράς ορίζεται το Ένας πίνακας μπορεί να είναι πολυδιάστατος, οπότε δηλώνεται με τη βοήθεια λίστας σταθερών μεγέθους ανά διάσταση. Το μέγιστο πλήθος διαστάσεων ενός πίνακα είναι Κατά την κατασκευή μιας εγγραφής δημιουργείται ένας τοπικός πίνακας συμβόλων για τα ονόματα και τους τύπους των πεδίων της εγγραφής. Ο αριθμός των διαφορετικών πεδίων που μπορεί να έχει μια εγγραφή είναι μέχρι Τα φωλιάσματα στις εντολές βρόχου, ελέγχου και εγγραφής κι επομένως και στις αντίστοιχες εμβέλειες μπορούν να φτάσουν σε ένα μέγιστο βάθος 10 εντολών. 8. Η έκφραση συνθήκης μιας εντολής βρόχου ή ελέγχου πρέπει να είναι τύπου btype. 9. Η έκφραση μιας εντολής εγγραφής πρέπει να είναι σύνθετου τύπου εγγραφής. 10. Η εμβέλεια μιας εντολής εγγραφής αρχικοποιείται με αντιγραφή σε αυτήν του τοπικού πίνακα συμβόλων της έκφρασης-εγγραφής. 11. Αναθέσεις επιτρέπονται μεταξύ εκφράσεων του ίδιου τύπου, βασικού ή σύνθετου. Κατ εξαίρεση επιτρέπεται ανάθεση μεταξύ των τύπων itype και ftype. Το αριστερό μέλος μιας ανάθεσης επιτρέπεται να είναι μόνο έκφραση αναγνωριστικού, στοιχείου πίνακα, πεδίου εγγραφής ή αποδεικτοδότησης. 12. Χρήση αναγνωριστικού που δεν έχει δηλωθεί νωρίτερα στην ίδια ή σε εξωτερική εμβέλεια αποτελεί σημασιολογικό σφάλμα. 13. Αναφορά σε στοιχείο πίνακα με τον τελεστή [ ] επιτρέπεται μόνο αν η έκφραση έξω από τις αγκύλες είναι τύπου πίνακα και οι εκφράσεις της λίστας μέσα στις αγκύλες είναι τύπου itype ή ftype. Το αποτέλεσμα είναι του τύπου των στοιχείων του πίνακα.

9 9 14. Σε κάθε αναφορά σε στοιχείο πίνακα, το πλήθος των εκφράσεων μέσα στις αγκύλες πρέπει να είναι ίσο με το πλήθος διαστάσεων του πίνακα. 15. Αναφορά σε πεδίο εγγραφής με τον τελεστή. επιτρέπεται μόνο αν η έκφραση είναι τύπου εγγραφής, οπότε το αναγνωριστικό πρέπει να είναι ένα από τα δηλωμένα πεδία της εγγραφής. Aναφορά σε πεδίο εγγραφής χωρίς τον τελεστή. δηλαδή μόνο με το αναγνωριστικό του πεδίου γίνεται στην εμβέλεια μιας εντολής εγγραφής, και μόνο για τα πεδία της έκφρασης-εγγραφής. Το αποτέλεσμα είναι του τύπου του πεδίου που αναφέρεται. 16. Οι τελεστές [ ] και. έχουν την υψηλότερη και ίση μεταξύ τους προτεραιότητα και αριστερή προσεταιριστικότητα. 17. Αποδεικτοδότηση επιτρέπεται μόνο αν η έκφραση είναι τύπου δείκτη, οπότε το αποτέλεσμα είναι του τύπου που δεικτοδοτείται. Ο τελεστής αποδεικτοδότησης * έχει την αμέσως επόμενη προτεραιότητα μετά τους τελεστές [ ] και., και υψηλότερη από τους υπόλοιπους τελεστές. 18. Εφαρμογή των λογικών τελεστών and, or και not επιτρέπεται μόνο σε εκφράσεις τύπου btype, με ίση προτεραιότητα και με αριστερή προσεταιριστικότητα. Το αποτέλεσμα είναι επίσης τύπου btype. 19. Εφαρμογή των σχεσιακών τελεστών =, < και > επιτρέπεται μόνο μεταξύ εκφράσεων τύπου itype και ftype, όχι κατ ανάγκη του ίδιου. Το αποτέλεσμά τους είναι τύπου btype. 20. Οι σχεσιακοί τελεστές έχουν υψηλότερη προτεραιότητα από τους λογικούς τελεστές. 21. Εφαρμογή των αριθμητικών τελεστών επιτρέπεται μεταξύ εκφράσεων τύπου itype και ftype. Ο τελεστής % δεν εφαρμόζεται σε τύπο ftype. Το αποτέλεσμα της εφαρμογής ενός αριθμητικού τελεστή θα είναι τύπου ftype, αν το αριστερό τελούμενο της έκφρασης είναι ftype, αλλιώς θα είναι τύπου itype. 22. Οι πολλαπλασιαστικοί τελεστές *, /, και % έχουν υψηλότερη προτεραιότητα από τους προσθετικούς τελεστές + και -, ενώ οι τελεστές ίσης προτεραιότητας εφαρμόζονται με αριστερή προσεταιριστικότητα. Οι αριθμητικοί έχουν υψηλότερη προτεραιότητα από τους σχεσιακούς τελεστές. 23. Οι προσθετικοί τελεστές μπορούν να έχουν ως αριστερό τελούμενο και τύπο δείκτη, με τον περιορισμό ότι το δεξί τελούμενο είναι τύπου itype, ενώ το αποτέλεσμα της πράξης είναι του ίδιου τύπου δείκτη. 24. Μια έκφραση σε παρενθέσεις διατηρεί τον τύπο της έξω από τις παρενθέσεις. Για την υλοποίηση σημασιολογικού αναλυτή που να εκτελεί τους αντίστοιχους σημασιολογικούς ελέγχους, η γραμματική της γλώσσας επεκτείνεται σε S-κατηγορική με τα ακόλουθα κατηγορήματα κατ ελάχιστο: name είναι η συμβολοσειρά του ονόματος ενός αναγνωριστικού και αποτελεί συντιθέμενο κατηγόρημα του συμβόλου id. value είναι η τιμή μιας σταθεράς και αποτελεί συντιθέμενο κατηγόρημα των συμβόλων inum (ακέραια τιμή), fnum (πραγματική τιμή) και bnum (λογική τιμή true ή false ). type είναι η περιγραφή τύπου μιας έκφρασης ή δήλωσης και αποτελεί συντιθέμενο κατηγόρημα των αντίστοιχων συμβόλων Ε και Τ. Τα δύο πρώτα από τα πιο πάνω κατηγορήματα λαμβάνουν τιμή από το λεκτικό αναλυτή, ενώ το τρίτο λαμβάνει τιμή κατά τη σημασιολογική ανάλυση. Ο σημασιολογικός αναλυτής επικοινωνεί με ένα σύστημα πινάκων συμβόλων με τη βοήθεια των ακόλουθων συναρτήσεων: create () είναι η συνάρτηση που δημιουργεί και επιστρέφει έναν κενό πίνακα συμβόλων. copy() είναι η συνάρτηση που με παραμέτρους δύο πίνακες συμβόλων, αντιγράφει στον πρώτο όλες τις καταχωρήσεις του δεύτερου, στην τρέχουσα εμβέλεια. lookup() είναι η συνάρτηση που με παραμέτρους έναν πίνακα συμβόλων και ένα όνομα αναγνωριστικού, επιστρέφει την αποθηκευμένη καταχώρηση πλησιέστερης εμβέλειας για το αντίστοιχο αναγνωριστικό, ή NULL αν το όνομα δε βρεθεί στον πίνακα. addtype() είναι η συνάρτηση που με παραμέτρους έναν πίνακα συμβόλων, ένα όνομα αναγνωριστικού και μια περιγραφή τύπου, δημιουργεί και αποθηκεύει στον πίνακα μια νέα

10 10 καταχώρηση για το όνομα, επιστρέφοντας την υπάρχουσα καταχώρηση για το ίδιο όνομα στην ίδια εμβέλεια, ή NULL αν δεν υπάρχει τέτοια καταχώρηση. beginscope() και endscope() είναι δύο συναρτήσεις που με παράμετρο έναν πίνακα συμβόλων ξεκινούν και τερματίζουν μια εμβέλεια, αντίστοιχα. Η ανάλυση ενός προγράμματος ξεκινάει με έναν καθολικό πίνακα συμβόλων, ενώ ένας νέος πίνακας συμβόλων δημιουργείται για κάθε τύπο εγγραφής που δηλώνεται. Μια περιγραφή τύπου περιέχει τουλάχιστον έναν κωδικό τύπου. Αν πρόκειται για τύπο πίνακα, η περιγραφή περιέχει επιπλέον τις διαστάσεις και το μέγεθος ανά διάσταση, καθώς και ένα δείκτη σε περιγραφή τύπου των στοιχείων του πίνακα. Αν πρόκειται για τύπο εγγραφής, η καταχώρηση περιέχει επιπλέον τον αριθμό πεδίων και ένα δείκτη στον πίνακα συμβόλων της εγγραφής. Αν πρόκειται για τύπο δείκτη, η καταχώρηση περιέχει επιπλέον ένα δείκτη στον τύπο που δεικτοδοτείται. Υποθέστε ότι διαθέτετε τρεις συναρτήσεις για την κατασκευή περιγραφών: create_array() είναι η συνάρτηση που με παραμέτρους μια σταθερά πλήθους διαστάσεων, μια λίστα μεγέθους ανά διάσταση και μια περιγραφή τύπου στοιχείων, δημιουργεί και επιστρέφει την περιγραφή τύπου του αντίστοιχου τύπου πίνακα. create_record() είναι η συνάρτηση που με παράμετρο μια σταθερά πλήθους πεδίων και έναν πίνακα συμβόλων, δημιουργεί και επιστρέφει την περιγραφή τύπου του αντίστοιχου τύπου εγγραφής. create_pointer() είναι η συνάρτηση που με παράμετρο μια περιγραφή τύπου, δημιουργεί και επιστρέφει την περιγραφή τύπου του αντίστοιχου τύπου δείκτη. Για μετάφραση οδηγούμενη από τη σύνταξη: 7Α. Να εξηγήσετε ποιοι από τους παραπάνω σημασιολογικούς κανόνες ενσωματώνονται στη σύνταξη για την παραγωγή ορθού κώδικα, επιλύοντας τα διφορούμενα στοιχεία της γραμματικής, και δεν υλοποιούνται μέσα από σημασιολογικές ρουτίνες. Υπάρχουν διφορούμενα στοιχεία στη γραμματική που δεν επιλύονται μέσα από κανένα σημασιολογικό κανόνα; Αν ναι, επιλέξτε αυθαίρετα κάποια τροποποίηση στη γραμματική, ώστε να μην υπάρχουν τέτοια στοιχεία. 7Β. Για τους υπόλοιπους κανόνες, να γράψετε τις αντίστοιχες σημασιολογικές ρουτίνες, χρησιμοποιώντας κατάλληλα τα κατηγορήματα των συμβόλων της γραμματικής της, καθώς και τις παραπάνω συναρτήσεις. Επιλέξτε μια κωδικοποίηση τύπων, ορίστε πιθανά κι άλλα κατηγορήματα, και προσθέστε τις καθολικές μεταβλητές που κρίνετε αναγκαίες. Για το υπόλοιπο της άσκησης, θεωρήστε το πιο κάτω πρόγραμμα: p : ftype; a : array [10,5,100] of *btype; c: btype; b : array [1000] of ftype; stp : record x : array [5] of array[100] of *btype; y : array [50,100] of record a, b : itype end end; x, y, z : itype; p := 0.0; *a[0,2,34] := true; while not b[(y 1) % 1000] < b[y % 1000] do i, j : itype; if not *stp.x[i][j] = *a[x,(y+1) % 5,(z 1) % 100] then x := y+1 end; p := p + stp.y[2*i % 50,3*j % 100].a; k : array[100] of *btype; while c or not *(stp.x[z][stp.y[x,y].b]+j) do with stp do x[z % 5] := k; with y[i,j] do a := y[(i+1)%50,j].b + z end

11 11 end; y := y+1 end; if x>y and not b[z % 1000] > 0 or *k[x] = *a[y,x,z] then with stp do z : itype; *x[z][j] := true end end end; p := p - stp.y[stp.y[2*y % 50,(x-1) % 100].b,i].a; Εφαρμόστε τη σημασιολογική ανάλυση που υλοποιήσατε, για να διαπιστώσετε αν το πρόγραμμα αυτό είναι σημασιολογικά ορθό. Πιο συγκεκριμένα: 8Α. Να σχεδιάσετε το δέντρο συντακτικής ανάλυσης (ΔΣΑ) που αντιστοιχεί στο πιο πάνω πρόγραμμα, λαμβάνοντας υπόψη τους σημασιολογικούς κανόνες της γλώσσας που ενσωματώνονται στη σύνταξη, καθώς και την όποια τροποποίηση τυχόν κάνατε για απαλοιφή των διφορούμενων στοιχείων της γραμματικής, ώστε το προκύπτον ΔΣΑ να είναι μονοσήμαντα ορισμένο. 8Β. Να διακοσμήσετε το ΔΣΑ που σχεδιάσατε με τα κατηγορήματα των συμβόλων της γραμματικής και να αριθμήσετε στο δέντρο τη σειρά επίσκεψης των κόμβων, σύμφωνα με κάποιον συντακτικό αναλυτή τύπου LR. 8Γ. Αναγράψτε όλες τις ρουτίνες που εκτελούνται με τη σειρά που βρήκατε στο προηγούμενο ερώτημα, και βρείτε τις τιμές των αντίστοιχων συντιθέμενων κατηγορημάτων, μέχρι το τέλος του προγράμματος ή μέχρι το σημείο όπου εντοπίζετε σφάλμα. ΠΡΟΣΟΧΗ: Όλες οι ασκήσεις εκτός του κώδικα της Άσκησης 6 (ερώτημα H) να παραδοθούν χειρόγραφες. Κάθε άσκηση να παραδοθεί σε ξεχωριστές κόλλες από τις υπόλοιπες.

12 12 Μέρος Β. (ηλεκτρονική παράδοση: τέλος εξεταστικής Ιανουαρίου ή Σεπτεμβρίου) Να κατασκευάσετε το Γεννήτορα Τελικού Κώδικα (ΓΤΚ) για τη γλώσσα της εργασίας σας, ο οποίος πρέπει να καλείται μια φορά μετά την παραγωγή ενδιάμεσου κώδικα, και να παράγει τον τελικό κώδικα που αντιστοιχεί σε τυχόν πρόγραμμα εισόδου. Σαν τελική γλώσσα να χρησιμοποιήσετε τη συμβολική γλώσσα είτε του συνόλου εντολών ΙΑ32 του 8086 που περιγράφεται στο βιβλίο σας, είτε του συνόλου εντολών MIPS που διδαχθήκατε στα μαθήματα της Εισαγωγής και της Οργάνωσης Η/Υ. Ο ΓΤΚ πρέπει να προβαίνει στις ακόλουθες ενέργειες: 1. Ανάλογα με το μέγεθος αναπαράστασης σε bytes των βασικών τύπων της γλώσσας σας που υποστηρίζονται από την τελική γλώσσα, να προσθέτει στους πίνακες δέσμευσης θέσεων των χώρων δεδομένων του προγράμματος τις ακριβείς τιμές μετατόπισης κάθε θέσης από την αρχή του αντίστοιχου χώρου. 2. Να μετατρέπει κάθε κόμβο τελεστή αναφοράς σε στοιχείο πίνακα ή σε πεδίο εγγραφής/ κλάσης του ενδιάμεσου κώδικα, σε έναν ή περισσότερους κόμβους με τις ακριβείς πράξεις που πρέπει να εκτελεστούν για τον υπολογισμό των διευθύνσεων των αντίστοιχων στοιχείων ή πεδίων. 3. Να μετατρέπει κάθε κόμβο κλήσης υποπρογράμματος του ενδιάμεσου κώδικα, σε έναν ή περισσότερους κόμβους που να αντιστοιχούν στις ακριβείς ενέργειες που συνοδεύουν μια κλήση. Δηλαδή (α) αποθήκευση των τιμών των πραγματικών παραμέτρων στη στοίβα, στις προκαθορισμένες θέσεις που αντιστοιχούν στις τυπικές παραμέτρους του υποπρογράμματος, (β) άλμα με σύνδεση στον κώδικα του υποπρογράμματος, και (γ) για συναρτήσεις, την ανάγνωση της τιμής του αποτελέσματος από την αντίστοιχη θέση στη στοίβα μετά την κλήση. 4. Για κάθε βαθμωτή μεταβλητή, στοιχείο πίνακα ή πεδίο εγγραφής/κλάσης που αποτελεί τιμή δεξιάς προσπέλασης στον ενδιάμεσο κώδικα, να εισάγει έναν κόμβο αποδεικτοδότησης, δηλαδή φόρτωσης από τη διεύθυνση της μεταβλητής ή του στοιχείου ή πεδίου αυτού. 5. Να υποστηρίζει τις γνωστές συναρτήσεις εισόδου/εξόδου printf και scanf της C, με αντίστοιχα ονόματα _printf και _scanf. Έτσι, θα πρέπει να μετατρέπει τα ορίσματα των εντολών εισόδου/εξόδου που υπάρχουν στον ενδιάμεσο κώδικα σε παραμέτρους αυτών των συναρτήσεων. Ως πρώτη παράμετρο θα πρέπει να κατασκευάζει τη συμβολοσειρά περιγραφής των πεδίων εισόδου/εξόδου της εντολής, την οποία θα πρέπει να αποθηκεύει στο χώρο δεδομένων του προγράμματος, ώστε η διεύθυνσή της να γίνεται η πρώτη πραγματική παράμετρος στην κλήση της αντίστοιχης συνάρτησης. 6. Να αποδίδει προσωρινές μεταβλητές σε εκείνους τους κόμβους του ενδιάμεσου κώδικα που αντιστοιχούν σε εφαρμογή κάποιου τελεστή ή φορτώνουν κάποια τιμή από τη μνήμη. Η απόδοση των προσωρινών μεταβλητών γίνεται με αρίθμηση των αντίστοιχων κόμβων με τη σειρά αποτίμησής τους, όπως αυτή προκύπτει μετά από ανάλυση ροής ελέγχου του προγράμματος. Αν δεν έχει γίνει προηγούμενη βελτιστοποίηση, η σειρά αυτή καθορίζεται απλά από μια διαπέραση κάθε δέντρου έκφρασης του ενδιάμεσου κώδικα. 7. Να δεσμεύει καταχωρητές για την αποτίμηση κάθε έκφρασης του ενδιάμεσου κώδικα, κατασκευάζοντας με βάση την παραπάνω αρίθμηση και χρωματίζοντας το γράφο αλληλεπιδράσεων. Αν δεν έχει προηγηθεί βελτιστοποίηση που να έχει συνδέσει τα δέντρα εκφράσεων μεταξύ τους, η δέσμευση καταχωρητών γίνεται ανεξάρτητα σε κάθε έκφραση. 8. Να εισάγει κόμβους διάχυσης για αποθήκευση και επανάκτηση των τιμών των προσωρινών μεταβλητών που δε μπορούν να αντιστοιχηθούν σε καταχωρητές. Οι θέσεις αυτών θα βρίσκονται στον τοπικό χώρο δεδομένων, και μετά από τις υπόλοιπες τοπικές μεταβλητές της μονάδας, οπότε το μέγεθος του χώρου αυτού αυξάνεται ανάλογα. 9. Να εισάγει κόμβους διάχυσης σε κάθε κόμβο κλήσης υποπρογράμματος του ενδιάμεσου κώδικα, για αποθήκευση και επανάκτηση τιμών καταχωρητών που πρέπει να διατηρούν την τιμή τους μέσα από την κλήση. Όπως και προηγουμένως, δεσμεύονται θέσεις του τοπικού χώρου δεδομένων γι αυτό το σκοπό. 10. Να παράγει τον τελικό κώδικα, με βάση ένα σχέδιο για κάθε δυνατό κόμβο του ενδιάμεσου κώδικα δηλαδή κάθε δυνατό κόμβο τελεστή, κόμβο προσπέλασης μνήμης και κόμβο ε- ντολών. Ο ΓΤΚ θα πρέπει έτσι να παράγει συγκεκριμένο τελικό κώδικα για κάθε τύπο

13 13 κόμβου που συναντά, καθώς διαπερνά τον ενδιάμεσο κώδικα με τη σειρά εκτέλεσης των αντίστοιχων εντολών. Ιδιαίτερη προσοχή απαιτείται σε εισόδους και εξόδους μονάδων, ο- πότε πρέπει να γίνεται διαχείριση της στοίβας και πιθανή διάχυση για αποθήκευση και επανάκτηση τιμών καταχωρητών που δεν πρέπει να αλλάζουν τιμή μέσα στη μονάδα. Για αναφορές στη μνήμη, να χρησιμοποιούνται οι καταχωρητές $gp, $sp της MIPS και $bp, $sp του 8086, σα δείκτες στους χώρους καθολικών/στατικών δεδομένων και στοίβας, αντίστοιχα. Προαιρετικά, προσθέστε στο μεταγλωττιστή σας βελτιστοποίηση στο επίπεδο του ενδιάμεσου κώδικα. Πιο συγκεκριμένα: 1. Υλοποιήστε αποτίμηση και διάδοση σταθερών εκφράσεων. 2. Εφαρμόστε ανάλυση ροής ελέγχου και ροής δεδομένων, (α) για να βρείτε και να απαλείψετε τις κοινές υποεκφράσεις στον κώδικά σας, (β) για να εντοπίσετε και να απαλείψετε άχρηστο κώδικα, και (γ) για δέσμευση καταχωρητών συνολικά σε μια μονάδα, και όχι τοπικά σε κάθε έκφραση. 3. Διαλέξτε κάποια βελτιστοποίηση βρόχων από το βιβλίο σας και υλοποιήστε την. Ο βαθμός όποιας βελτιστοποίησης υλοποιήσετε θα προστεθεί στο βαθμό της εργασίας.

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,

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

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

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

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

Θέματα Μεταγλωττιστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Βελτιστοποίηση (i) Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη,

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση 6: Ασκήσεις Χειμερινού Εξαμήνου 2017-2018 (μέρος Β ) Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση

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

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

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

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

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,

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

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

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

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

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

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

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

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

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

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

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

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

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

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

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

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 2 ο Σύνολα Εντολών Οι εντολές που εκτελεί ο κάθε επεξεργαστής (ή οικογένεια επεξεργαστών) MIPS ARM SPARC PowerPC IA-32 Αρχιτεκτονικές συνόλου εντολών Βασικές Έννοιες Εντολές μηχανής

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

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

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Εισαγωγή - 1 Μία κλασσική γλώσσα προγραμματισμού αποτελείται από: Εκφράσεις (των

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρώτη Σειρά Ασκήσεων 27 Οκτωβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 11 Νοεμβρίου) Άσκηση 1: Θεωρήστε το ακόλουθο

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

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

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

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

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

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

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

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

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

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

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

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

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

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

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

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

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

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

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

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; } Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 1-2 Ενότητα 1: Εισαγωγή Άσκηση 1-1: Θεωρήστε μια υποθετική γλώσσα προγραμματισμού και την παρακάτω γραμματική

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

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

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

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

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

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

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

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

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

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

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 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

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

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

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές Ερωτήσεις Θεωρίας

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

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

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

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

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019 Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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