ΘΠ06 Μεταγλωττιστές. Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin
|
|
- Ημέρα Μιχαηλίδης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 ΕΘΝΙΚΟ & ΚΑΠΟ ΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΘΠ06 Μεταγλωττιστές Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin ιδάσκων: Μανόλης Κουµπαράκης Βοηθός: Χαράλαµπος Νικολάου (charnik) 1
2 Εισαγωγή Η εργασία του µαθήµατος των µεταγλωττιστών αφορά τη σχεδίαση και υλοποίηση ενός µεταγλωττιστή για τη γλώσσα Robin η οποία περιγράφεται αναλυτικά παρακάτω. Γλώσσα υλοποίησης πρέπει να είναι η C++ ή η C (κατά προτίµηση και δική σας διευκόλυνση η C++) και τα εργαλεία flex και bison. Περισσότερες πληροφορίες σχετικά µε αυτά τα εργαλεία υπάρχουν στην ιστοσελίδα του µαθήµατος ( 1. Περιγραφή της γλώσσας Robin Η γλώσσα Robin είναι µια απλή γλώσσα προγραµµατισµού. Τα χαρακτηριστικά της εν συντοµία είναι τα εξής: βασικοί τύποι δεδοµένων για ακέραιους, χαρακτήρες και κινητής υποδιαστολής απλής ακρίβειας σύνθετοι τύποι δεδοµένων (οριζόµενοι από το χρήστη) µονοδιάστατοι πίνακες µε περιορισµένη λειτουργικότητα σύνταξη εντολών παρόµοια µε αυτή της γλώσσας C ορισµό και κλήση συναρτήσεων παρόµοια µε αυτή της γλώσσας C εµφωλιασµό µπλοκ εντολών και κανόνες εµβέλειας σύµφωνα µε τη γλώσσα C συµπερίληψη αρχείων Περισσότερες λεπτοµέρειες της γλώσσας δίνονται στις παραγράφους που ακολουθούν. 1.1 Αναγνωριστικά Τα αναγνωριστικά (identifiers) της γλώσσας Robin απαρτίζονται από γράµµατα (A..Z, a..z), ψηφία (0..9) και τον ειδικό χαρακτήρα _ (underscore). Ένα αναγνωριστικό δεν µπορεί να αρχίζει από ψηφίο. Τα πεζά γράµµατα διαφέρουν από τα αντίστοιχα κεφαλαία. Τα παρακάτω αναγνωριστικά είναι δεσµευµένα και δεν επιτρέπεται να χρησιµοποιούνται ως κοινά αναγνωριστικά. Η σηµασία τους εξηγείται σε επόµενες παραγράφους. char, int, float, else, if, main, return, void, while, record 1.2 Βασικοί τύποι δεδοµένων Οι βασικοί τύποι δεδοµένων που υποστηρίζει η γλώσσα Robin είναι τρεις: char (για χαρακτήρες), int (για ακεραίους) και float (για κινητής υποδιαστολής απλής ακρίβειας). Η χώρος µνήµης σε bytes που καταλαµβάνει ένας χαρακτήρας, ακέραιος και κινητής υποδιαστολής απλής ακρίβειας είναι 1, 4 και 4 αντίστοιχα. Οι ακέραιες σταθερές αποτελούνται από ένα προαιρετικό πρόσηµο ακολουθούµενο από ένα ή 2
3 περισσότερα δεκαδικά ψηφία. Παραδείγµατα ακέραιων σταθερών είναι τα εξής: Τις πραγµατικές σταθερές κινητής υποδιαστολής απλής ακρίβειας, που αποτελούνται από ένα ακέραιο µέρος, ένα κλασµατικό µέρος και ένα προαιρετικό εκθετικό µέρος. Το ακέραιο µέρος αποτελείται από ένα ή περισσότερα δεκαδικά ψηφία. Το κλασµατικό µέρος αποτελείται από το χαρακτήρα. της υποδιαστολής, ακολουθούµενο από ένα ή περισσότερα δεκαδικά ψηφία. Τέλος, το εκθετικό µέρος αποτελείται από το πεζό ή κεφαλαίο γράµµα E, ένα προαιρετικό πρόσηµο + ή - και ένα ή περισσότερα δεκαδικά ψηφία. Παραδείγµατα πραγµατικών σταθερών είναι τα ακόλουθα: e e e-3 Οι σταθερές τύπου χαρακτήρα αποτελούνται από έναν απλό ή ειδικό χαρακτήρα που περικλείεται από απλά εισαγωγικά. Ως απλοί χαρακτήρες θεωρούνται όλοι οι εκτυπώσιµοι χαρακτήρες πλην των εισαγωγικών (απλών και διπλών) και της ανάστροφης καθέτου \ (backslash). Οι ειδικοί χαρακτήρες χρησιµοποιούνται όπως στη γλώσσα C. Παριστάνονται ως ζεύγη χαρακτήρων, µε πρώτο την ανάστροφη κάθετο. Οι επιτρεπόµενοι ειδικοί χαρακτήρες είναι οι εξής: Χαρακτήρας Περιγραφή \n χαρακτήρας νέας γραµµής (new line) \" χαρακτήρας " (διπλό εισαγωγικό) \' χαρακτήρας ' (απλό εισαγωγικό) \0 χαρακτήρας µε ASCII κωδικό 0 \t χαρακτήρας αλλαγής στήλης (TAB) \\ χαρακτήρας \ (backslash) 1.3 Σύνθετοι τύποι δεδοµένων Η γλώσσα Robin επιτρέπει τον ορισµό σύνθετων τύπων δεδοµένων. Ένας σύνθετος τύπος δεδοµένων είναι µία συλλογή από µία ή περισσότερες µεταβλητές, πιθανώς διαφορετικών τύπων, που οµαδοποιούνται µε ένα µόνο όνοµα για ευκολία στο χειρισµό τους. Στο εξής θα ονοµάζουµε αυτές τις µεταβλητές πεδία (fields). Οι σύνθετοι τύποι δεδοµένων της γλώσσας Robin είναι αντίστοιχοι των δοµών (struct) της γλώσσας C και των εγγραφών (record) της γλώσσας Pascal. Τα πεδία ενός σύνθετου τύπου δεδοµένου της γλώσσας Robin µπορεί να έχουν τύπο µόνο κάποιο από τους βασικούς τύπους ή να είναι πίνακες βασικών τύπων. Έτσι, ένας σύνθετος τύπος δεν µπορεί να περιέχει έναν άλλο σύνθετο τύπο. Ένας σύνθετος τύπος σηµατοδοτείται µε τη δεσµευµένη λέξη record. Ένα παράδειγµα ενός σύνθετου τύπου είναι ο εξής: record point { int x; int y; 3
4 ; O παραπάνω σύνθετος τύπος αναπαριστά την έννοια του σηµείου στο επίπεδο. Κάθε σηµείο ορίζεται από τις συντεταγµένες του, την τετµηµένη και την τεταγµένη. Στον παραπάνω ορισµό αυτές αντιστοιχούν στα πεδία x και y αντίστοιχα. Μία δήλωση µεταβλητής ενός σύνθετου τύπου γίνεται ως εξής: record point p; Τα πεδία ενός σύνθετου τύπου προσπελαύνονται µε τον τελεστή. εφαρµοζόµενο πάνω σε µία µεταβλητή ενός σύνθετου τύπου και ακολουθούµενο από το όνοµα του πεδίου (π.χ. p.x ή p.y). Όλοι οι σύνθετοι τύποι ενός προγράµµατος θα πρέπει να ορίζονται πριν το κυρίως πρόγραµµα (βλ. επόµενη ενότητα). Ο χώρος µνήµης που καταλαµβάνει ένας σύνθετος τύπος εξαρτάται και υπολογίζεται αθροιστικά από τον αριθµό και το µέγεθος που καταλαµβάνουν τα πεδία του. Η Robin, όπως και η C, επιτρέπει τη δήλωση µεταβλητών µε όνοµα αυτό ενός σύνθετου τύπου δεδοµένων. 1.4 Πίνακες Εκτός από τους βασικούς και τους σύνθετους τύπους δεδοµένων, η γλώσσα Robin υποστηρίζει πίνακες (arrays) αποτελούµενους από στοιχεία των βασικών ή σύνθετων τύπων. Οι πίνακες όµως έχουν περιορισµένη λειτουργικότητα, όπως θα εξηγηθεί στις επόµενες παραγράφους. Κατά τον ορισµό µιας µεταβλητής τύπου πίνακα, πρέπει να ορίζεται το µήκος του, δηλαδή το πλήθος των στοιχείων που τον αποτελούν. Ένας πίνακας π.χ. 20 χαρακτήρων µε όνοµα name ορίζεται ως εξής: char name [20]; Τα στοιχεία του πίνακα µπορούν να προσπελαύνονται τοποθετώντας ένα δείκτη (έκφραση που επιστρέφει ακέραιο αριθµό) ανάµεσα σε αγκύλες, π.χ. name[5] Το πρώτο στοιχείο κάθε πίνακα αντιστοιχεί σε δείκτη 0, ενώ το τελευταίο σε δείκτη ίσο µε το µήκος του µείον ένα. Για τον πίνακα που ορίστηκε πιο πάνω, οι επιτρεπτές τιµές του δείκτη είναι οι ακέραιοι αριθµοί µεταξύ 0 και 19. Όπως σε κάθε γλώσσα προγραµµατισµού, έτσι και στη γλώσσα Robin ιδιαίτερα χρήσιµοι είναι οι πίνακες χαρακτήρων, που χρησιµοποιούνται για την αποθήκευση συµβολοσειρών (strings). Η Robin επιτρέπει τη χρήση σταθερών συµβολοσειρών, δηλαδή σταθερών πινάκων αποτελούµενων από χαρακτήρες. Οι συµβολοσειρές είναι ακολουθίες απλών και ειδικών χαρακτήρων που περικλείονται από διπλά εισαγωγικά. Παραδείγµατα συµβολοσειρών είναι τα εξής: "This is a string!" "Hello world!\n" "My phone number is: " Για την παράσταση των συµβολοσειρών, η γλώσσα Robin χρησιµοποιεί την ίδια σύµβαση µε τη C, δηλαδή οι συµβολοσειρές είναι ακολουθίες χαρακτήρων που τερµατίζονται µε τον 4
5 ειδικό χαρακτήρα \0 και δεν επιτρέπεται να εκτείνονται σε παραπάνω από µία γραµµή. Κατ αυτό τον τρόπο το πραγµατικό µήκος µιας συµβολοσειράς είναι κατά ένα µεγαλύτερο από το πλήθος των χαρακτήρων που την αποτελούν και πρέπει να γίνεται πρόβλεψη για τον επιπλέον χαρακτήρα. 1.5 Μονάδες προγράµµατος Ένα πρόγραµµα της γλώσσας Robin έχει τη δοµή ενός προγράµµατος C. Η γλώσσα Robin δε διαφοροποιεί τις µονάδες προγράµµατος: το κυρίως πρόγραµµα, οι διαδικασίες και οι συναρτήσεις αντιµετωπίζονται από κοινού ως συναρτήσεις, και ως τέτοιες δηλώνονται. Το κυρίως πρόγραµµα πρέπει να ονοµάζεται main και να επιστρέφει τύπο void. Σε περίπτωση που κάποια µονάδα προγράµµατος δεν επιστρέφει αποτέλεσµα, τότε δηλώνεται µε τύπο void. Επισηµαίνεται ότι µια συνάρτηση δεν µπορεί να επιστρέφει αποτέλεσµα τύπου πίνακα. Οι συναρτήσεις (όπως άλλωστε και οι µεταβλητές) πρέπει να έχουν δηλωθεί πριν χρησιµοποιηθούν. Η δήλωση αυτή µπορεί να γίνει µε δυο τρόπους: µε πλήρη ορισµό (επικεφαλίδα και κώδικας) µε απλή δήλωση (επικεφαλίδα µόνο) Στην περίπτωση δήλωσης συνάρτησης µε απλή δήλωση, ο ορισµός της θα πρέπει να παρουσιασθεί κάποια στιγµή στη συνέχεια του προγράµµατος. Σε κάθε περίπτωση η δήλωση και ο ορισµός κάθε συνάρτησης πρέπει να παρουσιάζεται µία µόνο φορά. Οι παράµετροι των συναρτήσεων µπορούν να περνούν µε δύο τρόπους: κατ αξία ή κατ αναφορά. Το πέρασµα κατ αναφορά δηλώνεται µε το σύµβολο & που προηγείται του ονόµατος της τυπικής παραµέτρου στην επικεφαλίδα της συνάρτησης, π.χ. void f (int by_value, int & by_reference) Στην περίπτωση που κάποια τυπική παράµετρος µιας συνάρτησης είναι πίνακας, στην επικεφαλίδα της συνάρτησης δεν αναγράφεται το µήκος του πίνακα. Αν είναι απαραίτητο αυτό να είναι γνωστό στη συνάρτηση, πρέπει να περνάει ως ανεξάρτητη παράµετρος. Πίνακες µπορούν να περνούν και µε τους δύο τρόπους (αξία και αναφορά). Παραδείγµατα συναρτήσεων µε τυπικές παραµέτρους τύπου πίνακα είναι οι εξής: void print (char s[]) int sum (int & values[], int size) 1.6 Εντολές Οι εντολές της γλώσσας Robin έχουν ακριβώς την ίδια µορφή µε τις αντίστοιχες εντολές της γλώσσας C. Με εξαίρεση τη σύνθετη εντολή (compound statement), πρέπει να τερµατίζονται υποχρεωτικά µε το χαρακτήρα ; (semicolon). Η εντολή εκχώρησης έχει την ίδια σύνταξη και σηµασιολογία µε την αντίστοιχη εντολή της C. Επιτρέπεται µόνο η εκχώρηση απλών τύπων: απαγορεύεται η εκχώρηση ολόκληρων πινάκων, αλλά επιτρέπεται η εκχώρηση σε στοιχεία πίνακα. Επίσης, δεν επιτρέπεται η εκχώρηση τιµής µεταξύ διαφορετικών τύπων, εκτός της περίπτωσης της εκχώρησης της τιµής ενός ακεραίου σε µία µεταβλητή τύπου κινητής υποδιαστολής. 5
6 Οι εντολές ελέγχου που επιτρέπει η γλώσσα είναι οι εξής : if ( λογική-έκφραση ) εντολή [ else εντολή ] while ( λογική-έκφραση ) εντολή Η σηµασιολογία των εντολών αυτών είναι η ίδια όπως στη γλώσσα C. Η εντολή κλήσης συνάρτησης έχει την ίδια σύνταξη και σηµασιολογία µε την αντίστοιχη εντολή της γλώσσας C. Η εντολή return χρησιµοποιείται για την επιστροφή από συνάρτηση. Όταν πρόκειται για συνάρτηση που επιστρέφει κάποιο τύπο, πρέπει να ακολουθείται από έκφραση του ίδιου τύπου µε αυτόν που επιστρέφει η συνάρτηση. 1.7 Τελεστές Οι τελεστές της γλώσσας Robin δίνονται παρακάτω. Η προτεραιότητα (precedence) και η προσεταιριστικότητα (associativity) των τελεστών αυτών είναι η ίδια µε αυτή των τελεστών της γλώσσας C (για λεπτοµέρειες ανατρέξτε στο βιβλίο των Kernighan & Ritchie, Η Γλώσσα Προγραµµατισµού C ). εν υπάρχουν τελεστές που να επιστρέφουν αποτέλεσµα τύπου χαρακτήρα ή πίνακα Αριθµητικοί τελεστές Οι αριθµητικοί τελεστές µε ένα τελούµενο της γλώσσας Robin είναι οι εξής: Τελεστής Σηµασία + Θετικό πρόσηµο (ταυτότητα) - Αρνητικό πρόσηµο (αντίθετος) Οι δυαδικοί αριθµητικοί τελεστές της γλώσσας είναι οι εξής: Τελεστής Σηµασία + Πρόσθεση ακεραίων - Αφαίρεση ακεραίων * Πολλαπλασιασµός ακεραίων / Πηλίκο ακέραιας διαίρεσης % Υπόλοιπο ακέραιας διαίρεσης Τα τελούµενα των αριθµητικών τελεστών πρέπει να είναι έγκυρες αριθµητικές εκφράσεις ακέραιου τύπου (int) ή τύπου κινητής υποδιαστολής (float). Στην περίπτωση των δυαδικών αριθµητικών τελεστών, αν και τα δύο είναι ακέραιου τύπου, τότε και το αποτέλεσµα είναι ακέραιου τύπου, διαφορετικά το αποτέλεσµα είναι τύπου κινητής υποδιαστολής, float. Στην περίπτωση του τελεστή υπολοίπου ακέραιας διαίρεσης, %, τα τελούµενα, όπως και το αποτέλεσµα της πράξης, θα πρέπει να είναι ακέραιου τύπου Σχεσιακοί τελεστές Οι σχεσιακοί τελεστές της γλώσσας Robin φαίνονται στον παρακάτω πίνακα. Τα τελούµενά τους πρέπει να είναι έγκυρες ακέραιες εκφράσεις ή χαρακτήρες. Πρέπει όµως τα δυο 6
7 τελούµενα να είναι του ίδιου τύπου. Απαγορεύονται συγκρίσεις ολόκληρων πινάκων, επιτρέπονται όµως οι συγκρίσεις στοιχείων πινάκων. Συγκρίσεις µεταξύ χαρακτήρων γίνονται µε βάση τους αντίστοιχους κωδικούς ASCII (ακέραιοι από 0 ως 255). Τελεστής Σηµασία == ίσο!= διάφορο > µεγαλύτερο < µικρότερο >= µεγαλύτερο ή ίσο <= µικρότερο ή ίσο! Τα αποτελέσµατα των σχεσιακών τελεστών είναι λογικές εκφράσεις. Οι εκφράσεις αυτές µπορούν να χρησιµοποιηθούν µόνο σε εντολές if και while. εν µπορούν να εκχωρηθούν σε µεταβλητές, να περάσουν ως παράµετροι ούτε να επιστραφούν ως αποτελέσµατα συναρτήσεων Λογικοί τελεστές Οι λογικοί τελεστές της γλώσσας Robin είναι τρεις: Τελεστής Σηµασία Λογική διάζευξη (ή) && Λογική σύζευξη (και)! Λογική άρνηση (όχι) Οι τελεστές και && είναι δυαδικοί, ενώ ο τελεστής! δέχεται ένα τελούµενο. Τα τελούµενα πρέπει να είναι έγκυρες λογικές εκφράσεις. Το αποτέλεσµα είναι επίσης λογική έκφραση Τελεστής προσπέλασης πεδίου Η Robin χρησιµοποιεί τον τελεστή προσπέλασης πεδίου,., για την αναφορά σε πεδία σύνθετων τύπων δεδοµένων. Ο τελεστής αναφοράς µπορεί να εφαρµοστεί µόνο σε τελούµενα σύνθετων τύπων δεδοµένων. 1.8 Σχόλια Τα σχόλια στη γλώσσα Robin είναι δυο ειδών. Τα κοινά σχόλια είναι ίδια µε αυτά της γλώσσας C. Περικλείονται από τις ακολουθίες χαρακτήρων /* και */ και δεν µπορούν να είναι φωλιασµένα (nested). Η γλώσσα Robin, όµως, υποστηρίζει και ένα δεύτερο τύπο σχολίων, που αρχίζουν µε την ακολουθία χαρακτήρων // και εκτείνονται ως το τέλος της γραµµής (όπως στη γλώσσα C++). 7
8 1.9 Οδηγίες προς το µεταγλωττιστή Η µοναδική οδηγία, που επιτρέπει ο µεταγλωττιστής της γλώσσας Robin είναι η οδηγία #include. Η οδηγία αυτή έχει την ίδια σηµασιολογία όπως και στη γλώσσα C, δηλαδή επιτρέπει την ανάγνωση ενός εξωτερικού αρχείου σαν αυτό να ήταν τµήµα του προγράµµατος. Πρέπει να βρίσκεται υποχρεωτικά στην αρχή του προγράµµατος. Η σύνταξή της είναι η εξής: #include "όνοµα αρχείου" Η οδηγία αυτή απευθύνεται ουσιαστικά στο λεκτικό αναλυτή. Σε περίπτωση που αυτός συναντήσει αυτή την οδηγία, θα πρέπει να σταµατήσει την ανάγνωση του αρχείου προγράµµατος, και να συνεχίσει µε την επεξεργασία του αρχείου που ζητείται να συµπεριληφθεί. Μετά το τέλος αυτού του αρχείου, ο λεκτικός αναλυτής πρέπει να συνεχίσει από το σηµείο του αρχείου προγράµµατος, στο οποίο είχε σταµατήσει. Για δική σας ευκολία, τα αρχεία που διαβάζονται µε την οδηγία #include δεν µπορούν να περιέχουν αντίστοιχες οδηγίες. Φυσικά µεµονωµένες λεκτικές µονάδες καθώς και σχόλια πρέπει να περιέχονται πλήρως σε ένα αρχείο προγράµµατος (δεν επιτρέπεται να αρχίζουν σε ένα αρχείο προγράµµατος και να τελειώνουν σε κάποιο άλλο). 2. Η γραµµατική της γλώσσας Robin Παρακάτω δίνεται η γραµµατική της γλώσσας Robin σε µορφή extended BNF. Τα τερµατικά σύµβολα αναγράφονται µε έντονους χαρακτήρες και µέσα σε διπλά εισαγωγικά. Μέσα σε γωνιακές αγκύλες αναγράφονται τα µη τερµατικά σύµβολα και κατ εξαίρεση οι λεκτικές µονάδες: <integer-constant> : ακέραια σταθερά (χωρίς πρόσηµο) <char-constant> : σταθερή τύπου χαρακτήρα <string-constant> : σταθερή συµβολοσειρά <id> : αναγνωριστικό Ακολουθεί η γραµµατική της γλώσσας. <program> <global-declaration-definition> ::= (<global-declaration-definition>)* <program-header> <compound-statement> (<function-definition>)* <record-definition> ::= <composite_type> { <composite_type> ::= record <id> ::= (<function-prototype>) (<record-definition>) (<function-definition>) (<variable-definition>) (<primitive-type-def>)+ ; 8
9 <program-header> ::= void main ( ) <function-prototype> ::= <function-header> ; <function-definition> ::= <function-header> <compound-statement> <function-header> ::= <return-type> <id> ( [<formal-params>] ) <return-type> ::= <data-type> <composite-type> void <formal-params> ::= <formal-parameter> (, <formal-parameter>)* <formal-parameter> ::= <data-type> [ & ] <id> [ [ ] ] <data-type> <composite-type> [ & ] <id> [ [ ] ] ::= int float char <variable-definition> ::= <primitive-type-def> <composite-type-def> <primitive-type-def> ::= <data-type> <def-one-variable> (, <def-one-variable>)* ; <composite-type-def> ::= <composite_type> <def-one-variable> (, <def-one-variable>)* ; <def-one-variable> ::= <id> [ [ <integer-constant> ] ] <statement> ::= <assignment> <if-statement> <while-statement> <void-function-call> <return-statement> <compound-statement> <empty-statement> <assignment> ::= <comp_l-value> = <expression> ; <comp_l-value> ::= <id>. <l-value> <l-value> <l-value> ::= <id> [ [ <expression> ] ] <if-statement> ::= if ( <b-expression> ) <statement> [ else <statement>] <while-statement> ::= while ( <b-expression> ) <statement> <void-function-call> ::= <function-call> ; <function-call> ::= <id> ( [ <actual-params> ] ) <actual-params> ::= <actual-parameter> (, <actual-parameter>)* <actual-parameter> ::= <expression> <string-constant> <return-statement> ::= return [ <expression> ] ; <empty-statement> ::= ; <compound-statement> ::= { (<variable-definition>)* (<statement>)* <b-expression> ::= <b-expression> <b-expression> <b-expression> && <b-expression> 9
10 ! <b-expression> <expression> == <expression> <expression>!= <expression> <expression> > <expression> <expression> < <expression> <expression> >= <expression> <expression> <= <expression> <expression> ::= <expression> + <expression> <expression> - <expression> <expression> * <expression> <expression> / <expression> <expression> % <expression> + <expression> - <expression> <comp_l-value> <integer-constant> <char-constant> <function-call> 3. Η βιβλιοθήκη έτοιµων συναρτήσεων Όπως και στη C, προκειµένου να υλοποιηθούν λειτουργίες που δεν υποστηρίζονται άµεσα από τη γλώσσα Robin (π.χ., είσοδος/έξοδος), χρειαζόµαστε βιβλιοθήκες έτοιµων συναρτήσεων. Στην περίπτωση της Robin θα υποθέσουµε ότι έχουµε µια standard inputoutput library που καθορίζεται από το αρχείο robin_io.rob. Το αρχείο αυτό πρέπει να περικλείεται σε κάθε πρόγραµµα που χρησιµοποιεί λειτουργίες input/output χρησιµοποιώντας την οδηγία #include. Επειδή δεν θα δηµιουργήσουµε τελικό κώδικα δεν µας ενδιαφέρει να έχουµε µια υλοποίηση των συναρτήσεων που περιλαµβάνονται στο αρχείο robin_io.rob. Για τις ανάγκες της εργασίας σας λοιπόν, απλά δηµιουργείστε ένα αρχείο robin_io.rob που να περιέχει τα πρωτότυπα των παρακάτω συναρτήσεων που υλοποιούν τις λειτουργίες input/output για τους τύπους δεδοµένων της γλώσσας Robin. void put_char (char c) Εκτυπώνει το χαρακτήρα c στο τρέχον αρχείο εξόδου. void put_int (int i) Εκτυπώνει τον ακέραιο i στο τρέχον αρχείο εξόδου σε δεκαδική µορφή. void put_float (float f) Εκτυπώνει τον δεκαδικό f στο τρέχον αρχείο εξόδου. void put_string (char s[]) Εκτυπώνει τη συµβολοσειρά s στο τρέχον αρχείο εξόδου. Η συµβολοσειρά πρέπει να τερµατίζεται µε τον ειδικό χαρακτήρα \0. char get_char () ιαβάζει και επιστρέφει ένα χαρακτήρα από το αρχείο εισόδου. Σε περίπτωση που δεν 10
11 υπάρχουν άλλοι χαρακτήρες (τέλος αρχείου) επιστρέφεται ο ειδικός χαρακτήρας \0. int get_int () ιαβάζει και επιστρέφει έναν ακέραιο αριθµό από το τρέχον αρχείο εισόδου σε δεκαδική µορφή. Αγνοούνται κενοί χαρακτήρες που πιθανώς προηγούνται του ακέραιου αριθµού. float get_float () ιαβάζει και επιστρέφει ένα δεκαδικό αριθµό από το τρέχον αρχείο εισόδου. Αγνοούνται κενοί χαρακτήρες που πιθανώς προηγούνται του δεκαδικού αριθµού. void get_string (char & s[], int size) ιαβάζει µια συµβολοσειρά από το τρέχον αρχείο εισόδου και την αποθηκεύει στη µεταβλητή s. Η µεταβλητή size περιέχει το µήκος της συµβολοσειράς s και χρησιµεύει ως όριο χαρακτήρων που µπορούν να τοποθετηθούν σε αυτή. ιαβάζονται χαρακτήρες µέχρι να εξαντληθεί το µήκος της συµβολοσειράς s ή να συναντηθεί ο ειδικός χαρακτήρας \n (τέλος γραµµής). Ο χαρακτήρας αυτός αφαιρείται από το αρχείο εισόδου, δεν τοποθετείται όµως στη συµβολοσειρά s. Η συµβολοσειρά s πάντα τερµατίζεται µε τον ειδικό χαρακτήρα \0. 4. Παραδείγµατα Στην παράγραφο αυτή δίνονται τέσσερα παραδείγµατα προγραµµάτων στη γλώσσα Robin. ίνεται επίσης ο ενδιάµεσος κώδικας, που πρέπει να παράγεται από το µεταγλωττιστή της Robin. Σηµειώνεται ότι σε καµιά φάση της µεταγλώττισης δεν έχουν γίνει βελτιστοποιήσεις. 4.1 Πες γεια! Το παρακάτω παράδειγµα είναι το απλούστερο πρόγραµµα στη γλώσσα Robin, που παράγει κάποιο αποτέλεσµα ορατό στο χρήστη. Το πρόγραµµα αυτό τυπώνει απλώς το µήνυµα: "Hello world!". #include "robin_io.rob" void main () { put_string("hello world!\n"); 4.2 Οι πύργοι του Hanoi Το πρόγραµµα που ακολουθεί λύνει το πρόβληµα των πύργων του Hanoi. Μια σύντοµη περιγραφή του προβλήµατος δίνεται παρακάτω. Υπάρχουν τρεις στύλοι, στον πρώτο από τους οποίους είναι περασµένοι n το πλήθος δακτύλιοι. Οι εξωτερικές διάµετροι των δακτυλίων είναι διαφορετικές και αυτοί είναι περασµένοι από κάτω προς τα πάνω σε αύξουσα σειρά εξωτερικής διαµέτρου, όπως φαίνεται στο Σχ.1. Ζητείται να µεταφερθούν οι δακτύλιοι από τον πρώτο στον τρίτο στύλο 11
12 left middle right Σχ.1. Οι πύργοι του Hanoi. (χρησιµοποιώντας το δεύτερο ως βοηθητικό χώρο), ακολουθώντας όµως τους εξής κανόνες : Κάθε φορά επιτρέπεται να µεταφερθεί ένας µόνο δακτύλιος, από κάποιο στύλο σε κάποιον άλλο στύλο. Απαγορεύεται να τοποθετηθεί δακτύλιος µε µεγαλύτερη διάµετρο πάνω από δακτύλιο µε µικρότερη διάµετρο. Το πρόγραµµα στη γλώσσα Robin που λύνει αυτό το πρόβληµα δίνεται παρακάτω. Η συνάρτηση hanoi είναι αναδροµική. #include "robin_io.rob" void hanoi (char source[], char target[], char auxiliary[], int rings); void move (char source[], char target[]); void main () { int NumberOfRings; put_string("please, give the number of rings : "); NumberOfRings = get_int(); put_string("\nhere is the solution :\n\n"); hanoi("left", "right", "middle", NumberOfRings); void hanoi (char source[], char target[], char auxiliary[], int rings) { if (rings < 1) return; else { hanoi(source, auxiliary, target, rings-1); move(source, target); hanoi(auxiliary, target, source, rings-1); void move (char source[], char target[]) { put_string("move from "); put_string(source); put_string(" to "); put_string(target); put_string(".\n"); 12
13 Ο ενδιάµεσος κώδικας, που πρέπει να παράγεται από το µεταγλωττιστή της Robin είναι ο εξής: 1: unit, move, -, - 2: par, "Move from ", V, - 3: call, -, -, put_string 4: par, source, V, - 5: call, -, -, put_string 6: par, " to ", V, - 7: call, -, -, put_string 8: par, target, V, - 9: call, -, -, put_string 10: par, ".\n", V, - 11: call, -, -, put_string 12: endu, move, -, - 13: unit, hanoi, -, - 14: <, rings, 1, 16 15: jump, -, -, 17 16: ret, -, -, - 17: par, source, V, - 18: par, auxiliary, V, - 19: par, target, V, - 20: -, rings, 1, $1 21: par, $1, V, - 22: call, -, -, hanoi 23: par, source, V, - 24: par, target, V, - 25: call, -, -, move 26: par, auxiliary, V, - 27: par, target, V, - 28: par, source, V, - 29: -, rings, 1, $2 30: par, $2, V, - 31: call, -, -, hanoi 32: endu, hanoi, -, - 33: unit, main, -, - 34: par, "Please, give the number of rings : ", V, - 35: call, -, -, put_string 36: par, $3, RET, - 37: call, -, -, get_int 38: :=, $3, -, NumberOfRings 39: par, "\nhere is the solution :\n\n", V, - 40: call, -, -, put_string 41: par, "left", V, - 42: par, "right", V, - 43: par, "middle", V, - 44: par, NumberOfRings, V, - 45: call, -, -, hanoi 46: endu, main, -, Πρώτοι αριθµοί Το παρακάτω παράδειγµα προγράµµατος στη γλώσσα Robin είναι ένα πρόγραµµα που υπολογίζει τους πρώτους αριθµούς µεταξύ 1 και n, όπου το n καθορίζεται από το χρήστη. Το πρόγραµµα αυτό χρησιµοποιεί έναν απλό αλγόριθµο για τον υπολογισµό των πρώτων αριθµών. Μια διατύπωση αυτού του αλγορίθµου σε ψευδογλώσσα δίνεται παρακάτω. Λαµβάνεται υπόψη ότι οι αριθµοί 2 και 3 είναι πρώτοι, και στη συνέχεια εξετάζονται µόνο οι αριθµοί της µορφής 6k±1, όπου k ακέραιος αριθµός. 13
14 Κύριο πρόγραµµα τύπωσε τους αριθµούς 2 και 3 t := 6 όσο t <= n κάνε τα εξής : αν ο αριθµός t-1 είναι πρώτος τότε τύπωσέ τον αν ο αριθµός t+1 είναι πρώτος τότε τύπωσέ τον t := t+6 Αλγόριθµος ελέγχου (είναι ο αριθµός t πρώτος;) αν t < 0 τότε έλεγξε τον αριθµό -t αν t < 2 τότε ο t δεν είναι πρώτος αν t = 2 τότε ο t είναι πρώτος αν ο t διαιρείται µε το 2 τότε ο t δεν είναι πρώτος i := 3 όσο i <= t/2 κάνε τα εξής : αν ο t διαιρείται µε τον i τότε ο t δεν είναι πρώτος i := i + 2 o t είναι πρώτος Το αντίστοιχο πρόγραµµα σε γλώσσα Robin είναι το εξής: #include "robin_io.rob" int prime (int n); void main () { int limit, number, counter; put_string("please, give the upper limit : "); limit = get_int(); put_string("prime numbers between 0 and "); put_int(limit); put_string("\n\n"); counter = 0; if (limit >= 2) { counter = counter + 1; put_string("2\n"); if (limit >= 3) { counter = counter + 1; put_string("3\n"); number = 6; while (number <= limit) { if (prime(number-1) > 0) { counter = counter + 1; put_int(number-1); put_string("\n"); if (number!= limit && prime(number+1) > 0) { counter = counter + 1; put_int(number+1); put_string("\n"); number = number + 6; put_string("\n"); put_int(counter); put_string(" prime number(s) were found.\n"); int prime (int n) { int i; 14
15 if (n < 0) return prime(-n); if (n < 2) return 0; if (n == 2) return 1; if (n % 2 == 0) return 0; i = 3; while (i <= n/2) { if (n % i == 0) return 0; i = i+2; return 1; Ο ενδιάµεσος κώδικας, που πρέπει να παράγεται από το µεταγλωττιστή της Robin δίνεται παρακάτω. 1: unit, prime, -, - 2: <, n, 0, 4 3: jump, -, -, 10 4: -, n, -, $1 5: par, $1, V, - 6: par, $2, RET, - 7: call, -, -, prime 8: retv, $2, -, - 9: ret, -, -, - 10: <, n, 2, 12 11: jump, -, -, 14 12: retv, 0, -, - 13: ret, -, -, - 14: =, n, 2, 16 15: jump, -, -, 18 16: retv, 1, -, - 17: ret, -, -, - 18: %, n, 2, $3 19: =, $3, 0, 21 20: jump, -, -, 23 21: retv, 0, -, - 22: ret, -, -, - 23: :=, 3, -, i 24: /, n, 2, $4 25: <=, i, $4, 27 26: jump, -, -, 35 27: %, n, i, $5 28: =, $5, 0, 30 29: jump, -, -, 32 30: retv, 0, -, - 31: ret, -, -, - 32: +, i, 2, $6 33: :=, $6, -, i 34: jump, -, -, 24 35: retv, 1, -, - 36: ret, -, -, - 37: endu, prime, -, - 38: unit, main, -, - 39: par, "Please, give the upper limit : ", V, - 40: call, -, -, put_string 41: par, $7, RET, - 42: call, -, -, get_int 43: :=, $7, -, limit 44: par, "Prime numbers between 0 and ", V, - 15
16 45: call, -, -, put_string 46: par, limit, V, - 47: call, -, -, put_int 48: par, "\n\n", V, - 49: call, -, -, put_string 50: :=, 0, -, counter 51: >=, limit, 2, 53 52: jump, -, -, 57 53: +, counter, 1, $8 54: :=, $8, -, counter 55: par, "2\n", V, - 56: call, -, -, put_string 57: >=, limit, 3, 59 58: jump, -, -, 63 59: +, counter, 1, $9 60: :=, $9, -, counter 61: par, "3\n", V, - 62: call, -, -, put_string 63: :=, 6, -, number 64: <=, number, limit, 66 65: jump, -, -, 97 66: -, number, 1, $10 67: par, $10, V, - 68: par, $11, RET, - 69: call, -, -, prime 70: >, $11, 0, 72 71: jump, -, -, 79 72: +, counter, 1, $12 73: :=, $12, -, counter 74: -, number, 1, $13 75: par, $13, V, - 76: call, -, -, put_int 77: par, "\n", V, - 78: call, -, -, put_string 79: <>, number, limit, 81 80: jump, -, -, 94 81: +, number, 1, $14 82: par, $14, V, - 83: par, $15, RET, - 84: call, -, -, prime 85: >, $15, 0, 87 86: jump, -, -, 94 87: +, counter, 1, $16 88: :=, $16, -, counter 89: +, number, 1, $17 90: par, $17, V, - 91: call, -, -, put_int 92: par, "\n", V, - 93: call, -, -, put_string 94: +, number, 6, $18 95: :=, $18, -, number 96: jump, -, -, 64 97: par, "\n", V, - 98: call, -, -, put_string 99: par, counter, V, - 100: call, -, -, put_int 101: par, " prime number(s) were found.\n", V, - 102: call, -, -, put_string 103: endu, main4.4, -, Ταξινόµηση µε τη µέθοδο της φυσαλίδας Ο αλγόριθµος της φυσαλίδας (bubble sort) είναι ένας από τους πιο γνωστούς και απλούς αλγορίθµους ταξινόµησης. Το παρακάτω πρόγραµµα σε Robin ταξινοµεί έναν πίνακα ακεραίων αριθµών κατ αύξουσα σειρά, χρησιµοποιώντας αυτό τον αλγόριθµο. Αν x είναι ο 16
17 πίνακας που πρέπει να ταξινοµηθεί και n είναι το µέγεθός του (θεωρούµε ότι τα στοιχεία του είναι τα x[0], x[1],..., x[n-1]), ο αλγόριθµος περιγράφεται µε ψευδοκώδικα ως εξής: Αλγόριθµος της φυσαλίδας (bubble sort) επανάλαβε το εξής για i από 0 ως n-2 αν x[i] < x[i+1] αντίστρεψε τα x[i] και x[i+1] όσο µεταβάλλεται η σειρά των στοιχείων του x Το αντίστοιχο πρόγραµµα σε γλώσσα Robin είναι το εξής : #include "robin_io.rob" void swap (int & x, int & y); void PrintArray (char msg[], int array[], int size); void BubbleSort (int & array[], int size); void main () { int i, x[16], seed; i = 0; seed = 65; while (i < 16) { seed = (seed * i) % 101; x[i] = seed; i = i + 1; PrintArray("Initial array: ", x, 16); BubbleSort(x, 16); PrintArray("Sorted array: ", x, 16); void swap (int & x, int & y) { int t; t = x; x = y; y = t; void PrintArray (char msg[], int array[], int size) { int i; put_string(msg); i = 0; while (i < size) { if (i > 0) put_string(", "); put_int(array[i]); i = i+1; put_string("\n"); void BubbleSort (int & array[], int size) { int i, changed; changed = 1; while (changed == 1) { i = 0; changed = 0; while (i < size-1) { if (array[i] < array[i+1]) { swap(array[i], array[i+1]); 17
18 changed = 1; i = i+1; Ο ενδιάµεσος κώδικας, που πρέπει να παράγεται από το µεταγλωττιστή της Robin δίνεται παρακάτω. 1: unit, swap, -, - 2: :=, x, -, t 3: :=, y, -, x 4: :=, t, -, y 5: endu, swap, -, - 6: unit, BubbleSort, -, - 7: :=, 1, -, changed 8: =, changed, 1, 10 9: jump, -, -, 27 10: :=, 0, -, i 11: :=, 0, -, changed 12: -, size, 1, $1 13: <, i, $1, 15 14: jump, -, -, 26 15: +, i, 1, $2 16: <, array[i], array[$2], 18 17: jump, -, -, 23 18: par, array[i], R, - 19: +, i, 1, $3 20: par, array[$3], R, - 21: call, -, -, swap 22: :=, 1, -, changed 23: +, i, 1, $4 24: :=, $4, -, i 25: jump, -, -, 13 26: jump, -, -, 8 27: endu, BubbleSort, -, - 28: unit, PrintArray, -, - 29: par, msg, V, - 30: call, -, -, put_string 31: :=, 0, -, i 32: <, i, size, 34 33: jump, -, -, 43 34: >, i, 0, 36 35: jump, -, -, 38 36: par, ", ", V, - 37: call, -, -, put_string 38: par, array[i], V, - 39: call, -, -, put_int 40: +, i, 1, $5 41: :=, $5, -, i 42: jump, -, -, 32 43: par, "\n", V, - 44: call, -, -, put_string 45: endu, PrintArray, -, - 46: unit, main, -, - 47: :=, 0, -, i 48: :=, 65, -, seed 49: <, i, 16, 51 50: jump, -, -, 60 51: *, seed, 137, $6 52: +, $6, 221, $7 18
19 53: +, $7, i, $8 54: %, $8, 101, $9 55: :=, $9, -, seed 56: :=, seed, -, x[i] 57: +, i, 1, $10 58: :=, $10, -, i 59: jump, -, -, 49 60: par, "Initial array: ", V, - 61: par, x, V, - 62: par, 16, V, - 63: call, -, -, PrintArray 64: par, x, R, - 65: par, 16, V, - 66: call, -, -, BubbleSort 67: par, "Sorted array: ", V, - 68: par, x, V, - 69: par, 16, V, - 70: call, -, -, PrintArray 71: endu, main, -, - 5. Στάδια της Εργασίας και Βαθµολογία Τα στάδια της εργασίας, τα αντίστοιχα τµήµατα του µεταγλωττιστή, η κατανοµή των µονάδων (6 από 10 που αντιστοιχούν στο µάθηµα), και η ηµεροµηνία παράδοσης του κάθε σταδίου φαίνονται στον παρακάτω πίνακα. Στάδιο Τµήµα του µεταγλωττιστή Μονάδες Ηµεροµηνία Παράδοσης 1 Υλοποίηση λεκτικού αναλυτή µε flex /03/ Υλοποίηση συντακτικού αναλυτή µε bison 1 12/04/ Υλοποίηση πίνακα συµβόλων και /05/2010 σηµασιολογικής ανάλυσης 4 Παραγωγή ενδιάµεσου κώδικα 2 24/05/ Παραγωγή τελικού κώδικα 2 (bonus) Συνολική εργασία 6 (max 8) Παρατηρήσεις: 1. Η εργασία θα εκπονηθεί από οµάδες φοιτητών που θα αποτελούνται από το πολύ 2 άτοµα. 2. Η εξέταση της εργασίας και η βαθµολογία θα είναι ατοµική! Η εξέτασης της εργασίας θα γίνει λίγες µέρες µετά την 24/05/2010 (λεπτοµέρειες θα δοθούν εν καιρώ). 3. Ο κώδικας που θα παραδώσετε για κάθε στάδιο θα πρέπει να περιέχει και τον κώδικα για όλα τα προηγούµενα στάδια. Στις 24/05/2010 εκτός από τον κώδικα θα πρέπει να παραδώσετε και µια αναλυτική έκθεση ανά οµάδα η οποία θα καλύπτει την εργασία στο σύνολο της και θα αναλύει τις τεχνικές που χρησιµοποιήθηκαν. Οι εκθέσεις σας δεν θα γίνουν δεκτές αν είναι γραµµένες µε το χέρι (θα πρέπει να χρησιµοποιήσετε κάποιο κειµενογράφο π.χ. Μicrosoft Word, LaTeX κλπ.). Το περιεχόµενο της έκθεσης περιγράφεται παρακάτω (Κεφ. 6.1). 19
20 4. Εκπρόθεσµες εργασίες δεν θα γίνονται δεκτές. Αν δεν παραδώσετε κάποιο στάδιο της εργασίας, χάνετε όλους τους βαθµούς που αναλογούν σ αυτό το στάδιο. 5. Η υλοποίηση της οδηγίας συµπερίληψης αρχείων #include είναι προαιρετική. 5.1 Περιεχόµενα Έκθεσης Κατά την εξέταση της εργασίας, κάθε οµάδα θα πρέπει να παραδώσει µια έκθεση (10-15 σελίδες + κώδικας) που καλύπτει όλα τα λειτουργικά τµήµατα του µεταγλωττιστή που υλοποιήθηκε: 1. Λεκτικός Αναλυτής. Να περιγράψετε προσεκτικά την επικοινωνία του λεκτικού αναλυτή µε το συντακτικό αναλυτή και να δώσετε τον κώδικα σε flex που υλοποιεί τον λεκτικό αναλυτή. 2. Συντακτικός αναλυτής. Γι αυτό το τµήµα του µεταγλωττιστή πρέπει να κάνετε τα εξής: Να δώσετε τη γραµµατική της Robin σε µορφή γραµµατικής χωρίς συµφραζόµενα. Να εξηγήσετε ποιες συγκρούσεις µετάθεσης/αναγωγής ή αναγωγής/αναγωγής υπάρχουν και πως τις αποφεύγετε στην υλοποίηση σας µε bison. Να δώσετε τον κώδικα σε bison που υλοποιεί την συντακτική ανάλυση. 3. Πίνακας συµβόλων. Να περιγράψετε προσεκτικά τι πληροφορίες αποθηκεύονται στον πίνακα συµβόλων για κάθε είδος ονόµατος της Robin, ποια µέθοδος υλοποίησης χρησιµοποιείται, και πως αντιµετωπίζεται το πρόβληµα της εµβέλειας ονοµάτων. 4. ηλώσεις ονοµάτων. Να περιγράψετε προσεκτικά τι κάνει ο µεταγλωττιστής σας για κάθε περίπτωση δήλωσης ονόµατος και να δώσετε το σχετικό κώδικα σε bison. 5. Ενδιάµεσος κώδικας για τις υπόλοιπες εντολές. Να περιγράψετε προσεκτικά τον ενδιάµεσο κώδικα που δηµιουργεί ο µεταγλωττιστής σας για κάθε άλλη εντολή και να δώσετε τον σχετικό κώδικα σε bison. 6. Έλεγχος ορθότητας προγραµµάτων και µηνύµατα λάθους. Να περιγράψετε αναλυτικά τα λάθη που εντοπίζονται από τον µεταγλωττιστή σας και τις τεχνικές που χρησιµοποιείτε για να τα αντιµετωπίσετε. Αυτή η συζήτηση είναι δυνατόν να ενσωµατωθεί στην περιγραφή των διαφόρων λειτουργικών τµηµάτων του µεταγλωττιστή. 7. Παραδείγµατα. Θα πρέπει επίσης να δώσετε τουλάχιστον 1 πρόγραµµα της Robin που έχετε χρησιµοποιήσει σαν test για κάθε χαρακτηριστικό της γλώσσας που ελέγχετε, καθώς και την έξοδο που δίνει ο µεταγλωττιστής σας γι αυτά τα προγράµµατα. Οι έλεγχοι θα πρέπει να συµπεριλαµβάνουν και περιπτώσεις λαθών και πώς ο µεταγλωττιστής σας τις αντιµετωπίζει. 20
21 Αν δεν έχετε υλοποιήσει κάποιο µέρος του µεταγλωττιστή, θα πρέπει να το εξηγήσετε καθαρά στην έκθεση σας. Αν δεν το κάνετε αυτό, θα χάσετε περισσότερες µονάδες κατά την βαθµολόγηση. 6. Επίλογος Στη διάρκεια του εξαµήνου θα δοθούν και άλλες διευκρινίσεις και αναλυτικά παραδείγµατα µεταγλώττισης. Να παρακολουθείτε τις παραδόσεις, τις ασκήσεις και την ιστοσελίδα του µαθήµατος. Καλή επιτυχία! 21
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο
Διαβάστε περισσότεραΕισαγωγή στην γλώσσα προγραμματισμού C
Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL
8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to
Διαβάστε περισσότεραΜεταγλωττιστές 2019 Θέμα εργασίας
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας ( ) https://courses.softlab.ntua.gr/compilers/
Διαβάστε περισσότεραΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού
Διαβάστε περισσότεραΜέρος 2 Κατασκευή Συντακτικού Αναλυτή
Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο
Διαβάστε περισσότεραΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009
ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΘΠ06 Μεταγλωττιστές Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009 Βοηθοί: Χαράλαμπος Νικολάου(charnik)
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού Strange
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει
Διαβάστε περισσότεραΔιάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος
Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,
Διαβάστε περισσότεραΑντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»
Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011
Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραC: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο
C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραΑλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Διαβάστε περισσότεραΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ
ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας
Διαβάστε περισσότεραΗ πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης
Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται
Διαβάστε περισσότεραΒασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος
Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των
Διαβάστε περισσότεραΜεταγλωττιστές 2015 Θέμα εργασίας. Η γλώσσα Tony. Sir Charles Antony (Tony) Richard Hoare (1934 ) Prof. Emeritus, Oxford University.
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 01 Θέμα εργασίας Η γλώσσα
Διαβάστε περισσότεραPascal, απλοί τύποι, τελεστές και εκφράσεις
Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το
Διαβάστε περισσότεραΠ. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο
Διαβάστε περισσότεραΚεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Περιεχόµενα Τύποι εδοµένων int, char, float, double Τελεστές =,+,-,*,/,% Αριθµητικές εκφράσεις
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων
Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΜεταγλωττιστές 2018 Θέμα εργασίας
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας (1 ) https://courses.softlab.ntua.gr/compilers/
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 8 ο Μετάφραση Οδηγούμενη από τη Σύνταξη Ο ΣΑ καλεί τις ρουτίνες που εκτελούν τη σημασιολογική ανάλυση και παράγουν τον ενδιάμεσο κώδικα Σημασιολογικές πληροφορίες μπορούν να μεταφέρονται
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΕργασία Προγραµµατισµού
ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 Τµήµα Ηλεκτρονικών ΠΟΛΥΤΕΧΝΕΙΟ Μηχανικών και ΚΡΗΤΗΣ Μηχανικών Υπολογιστών ΘΕΩΡΙΑ ΠΛΗ ΥΠΟΛΟΓΙΣΜΟΥ 401 Μιχαήλ ιδάσκων Γ. Λαγουδάκης Εργασία Προγραµµατισµού
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότερα3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις
3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
Διαβάστε περισσότεραΕργασία Προγραµµατισµού
ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ Εργασία Προγραµµατισµού ιδάσκων Μιχαήλ Γ. Λαγουδάκης Επιµέλεια εργασίας Σπύρος Αργυρόπουλος Χειµερινό
Διαβάστε περισσότεραΑ. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού EEL
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Διαβάστε περισσότερα- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)
Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΠαρουσίαση του εργαλείου BISON
Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο
Διαβάστε περισσότεραΗ γλώσσα Llama Μεταγλωττιστές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας Η γλώσσα
Διαβάστε περισσότεραΠ. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Προτάσεις,
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΕισαγωγή στη γλώσσα προγραμματισμού C++
Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)
Διαβάστε περισσότεραΔιάλεξη 2η: Αλγόριθμοι και Προγράμματα
Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΑπλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων
Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση
Διαβάστε περισσότεραΜεταγλωττιστές 2017 Θέμα εργασίας
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 2017 Θέμα εργασίας (1932
Διαβάστε περισσότεραΕργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση
Διαβάστε περισσότεραΒ. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript
Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)
Διαβάστε περισσότεραΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C
Σκοπός της Άσκησης ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραµµατισµού C: τη δοµή των προγραµµάτων της,
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1
Διαβάστε περισσότεραΣτην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2
Είσοδος / Έξοδος Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συνάρτηση εξόδου printf Συνάρτηση εισόδου scanf Βιβλίο µαθήµατος: Chapter 2,, Sec. 3 & 6 ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-1 Είσοδος
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών
ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο
Διαβάστε περισσότεραΗ γλώσσα Edsger. Μεταγλωττιστές 2016 Θέμα εργασίας
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 2016 Θέμα εργασίας Η γλώσσα
Διαβάστε περισσότεραΣτην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2
Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.
Διαβάστε περισσότεραΠ. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά
Διαβάστε περισσότεραΕργαστήριο 08 Εισαγωγή στo Yacc
Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση
Διαβάστε περισσότεραΚεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε
Διαβάστε περισσότεραΕισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python
Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή
Διαβάστε περισσότεραΒαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά
Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.
ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΣυναρτήσεις. Εισαγωγή
Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο
Διαβάστε περισσότεραΒασικές Αρχές Προγραμματισμού
Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον
Διαβάστε περισσότεραVisual Basic Βασικές Έννοιες
Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas
Διαβάστε περισσότεραΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων
Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών
ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C Εργαστήριο 2 Τµήµα Πληροφορικής και Τηλεπικοινωνιών οµή προγράµµατος Οδηγίες προεπεξεργαστή #include... # define... τµήµα δηλώσεων ηλωσεις και ορισµοί µεταβλητών. ηλωσεις συναρτήσεων
Διαβάστε περισσότεραΜεταβλητές, σταθερές, τύποι και δηλώσεις. Εντολές αντικατάστασης, τελεστές και παραστάσεις. Εμβέλεια και χρόνος ζωής μεταβλητών
18 Η γλώσσα προγραμματισμού C Μεταβλητές, σταθερές, τύποι και δηλώσεις Εντολές αντικατάστασης, τελεστές και παραστάσεις Η ροή του ελέγχου Δομή προγράμματος, συναρτήσεις και εξωτερικές μεταβλητές Εμβέλεια
Διαβάστε περισσότεραΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης;
Διαβάστε περισσότεραΣχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13
Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού
Διαβάστε περισσότεραint array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι
Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι
Διαβάστε περισσότεραΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)
1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει
Διαβάστε περισσότεραΔομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι
Διαβάστε περισσότεραΛεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής
Λεκτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)
Διαβάστε περισσότεραΜεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση
Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης
Διαβάστε περισσότερα5 &6. Τύποι δεδομένων, τελεστές και
Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 5 &6. Τύποι δεδομένων, τελεστές και αριθμητικές εκφράσεις Ιωάννης Κατάκης Σήμερα o Τύποι δεδομένων int, char, float, double o Τελεστές = + - * / % o Αριθμητικές
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός
Διαβάστε περισσότερα