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

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

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

Transcript

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

2 1. Εισαγωγή Η εργασία προγραµµατισµού του µαθήµατος «ΠΛΗ Θεωρία Υπολογισµού» έχει ως στόχο τη βαθύτερη κατανόηση της χρήσης και εφαρµογής θεωρητικών εργαλείων, όπως οι κανονικές εκφράσεις και οι γραµµατικές χωρίς συµφραζόµενα, στο πρόβληµα της µεταγλώττισης (compilation) γλωσσών προγραµµατισµού. Συγκεκριµένα, η εργασία αφορά στη σχεδίαση και υλοποίηση των αρχικών σταδίων ενός µεταγλωττιστή (compiler) για τη φανταστική γλώσσα FhP, η οποία περιγράφεται αναλυτικά παρακάτω. Για την υλοποίηση της εργασίας θα χρησιµοποιήσετε τη γλώσσα C και τα εργαλεία flex και bison τα οποία είναι διαθέσιµα ως ελεύθερο λογισµικό. Η εργασία θα περιλαµβάνει δύο τµήµατα: 1. Υλοποίηση λεκτικού αναλυτή για την γλώσσα FhP µε χρήση flex 2. Υλοποίηση συντακτικού αναλυτή για τη γλώσσα FhP µε χρήση bison Η προθεσµία παράδοσης της εργασίας είναι η Τρίτη 18 εκεµβρίου 2007, 11:59µµ. Παρατηρήσεις 1. Η εργασία θα εκπονηθεί από οµάδες φοιτητών το πολύ δύο ατόµων. Τα ονόµατα των οµάδων και οι αντίστοιχοι αριθµοί µητρώου πρέπει να δηλωθούν µέχρι το τέλος Νοεµβρίου µε σας στο 2. Για την εκπόνηση της εργασίας µπορούν να χρησιµοποιηθούν υπολογιστές του Εργαστηρίου Συστηµάτων Λογισµικού (softnet) ή εναλλακτικά υπολογιστές του Μηχανογραφικού Κέντρου και προσωπικοί υπολογιστές. Για λογαριασµούς πρόσβασης στο softnet απευθυνθείτε στον κ. Αργυρόπουλο. Μπορείτε επίσης να χρησιµοποιήσετε τους δικούς σας υπολογιστές στο σπίτι είτε σε περιβάλλον Linux είτε σε Windows (µέσω CygWin). 3. Η παράδοση της εργασίας θα γίνει ηλεκτρονικά µέσα από την ιστοσελίδα του µαθήµατος. Το παραδοτέο αρχείο (.zip,.tar,.rar) θα πρέπει να φέρει τα επώνυµα της οµάδας στο filename (π.χ. Argyropoulos_Lagoudakis.zip). 4. Εκτός από τον κώδικα, το παραδοτέο σας θα πρέπει να περιλαµβάνει και µια συνοπτική αναφορά (δακτυλογραφηµένη, PDF µορφή) που θα εξηγεί τις τεχνικές που χρησιµοποιήθηκαν και τις ιδιαιτερότητες της εργασίας σας. 5. Η αξιολόγηση της εργασίας θα γίνει ατοµικά και θα περιλαµβάνει εξέταση καλής λειτουργίας του παραδοτέου προγράµµατος καθώς και προφορική εξέταση στο χώρο του Εργαστηρίου Συστηµάτων Λογισµικού (softnet) στις 20 και 21 εκεµβρίου σε ώρες που θα ανακοινωθούν. Είναι αποκλειστικά δική σας ευθύνη να εξασφαλίσετε τη σωστή λειτουργία του παραδοτέου προγράµµατος στους υπολογιστές του εργαστηρίου. 6. Οι ηµεροµηνίες παράδοσης είναι αυστηρές και οι εκπρόθεσµες εργασίες δε θα γίνονται δεκτές. Μη παράδοση της εργασίας οδηγεί σε απώλεια του αντιστοίχου ποσοστού από τον τελικό βαθµό του µαθήµατος. σελ. 2/15

3 2. Η γλώσσα προγραµµατισµού FhP Η γλώσσα FhP βασίζεται στη γλώσσα PHP. Λόγω οµοιοτήτων της FhP µε την PHP, η περιγραφή τονίζει κυρίως σηµεία όπου οι δύο γλώσσες διαφέρουν. Σε περιπτώσεις πιθανής ασάφειας µπορείτε να ανατρέξετε στην περιγραφή της PHP. Κάθε πρόγραµµα σε γλώσσα FhP είναι ένα σύνολο από λεκτικές µονάδες, οι οποίες είναι διατεταγµένες µε βάση κάποιους συντακτικούς κανόνες, όπως περιγράφονται παρακάτω. 2.1 Λεκτικές Μονάδες Οι λεκτικές µονάδες της γλώσσας FhP χωρίζονται στις παρακάτω κατηγορίες: Τις λέξεις κλειδιά, οι οποίες είναι οι παρακάτω: if else while for do switch case continue default return exit break integer int float real double boolean bool string echo print function true false and or xor Ειδικά για τις λέξεις κλειδιά, τα πεζά γράµµατα θεωρούνται ίδια µε τα αντίστοιχα κεφαλαία, εποµένως για παράδειγµα η λέξη κλειδί else θα πρέπει να µπορεί να αναγνωριστεί και σαν Else ή ELSe ή ElsE κ.τ.λ. Τα αναγνωριστικά (ονόµατα µεταβλητών και συναρτήσεων), τα οποία αποτελούνται από ένα πεζό ή κεφαλαίο γράµµα του λατινικού αλφαβήτου, πιθανώς ακολουθούµενο από µια σειρά πεζών ή κεφαλαίων γραµµάτων, δεκαδικών ψηφίων ή χαρακτήρων υπογράµµισης (underscore). Tα αναγνωριστικά δεν πρέπει να συµπίπτουν µε τις λέξεις κλειδιά που αναφέρθηκαν παραπάνω. Παραδείγµατα: x y1 angle my_value Distance_02 Οι ακέραιες σταθερές χωρίς πρόσηµο, που αποτελούνται από ένα ή περισσότερα δεκαδικά ψηφία χωρίς περιττά µηδενικά στην αρχή. Παραδείγµατα: Οι πραγµατικές σταθερές χωρίς πρόσηµο, που αποτελούνται από ένα ακέραιο µέρος, ένα κλασµατικό µέρος και ένα προαιρετικό εκθετικό µέρος. Το ακέραιο µέρος αποτελείται από ένα ή περισσότερα δεκαδικά ψηφία χωρίς περιττά µηδενικά. Το κλασµατικό µέρος αποτελείται από το χαρακτήρα της υποδιαστολής (.) ακολουθούµενο από ένα ή περισσότερα δεκαδικά ψηφία. Τέλος, το εκθετικό µέρος αποτελείται από το πεζό ή κεφαλαίο γράµµα E, ένα προαιρετικό πρόσηµο + ή - και ένα ή περισσότερα δεκαδικά ψηφία και πάλι χωρίς περιττά µηδενικά. Παραδείγµατα: e E e-3 σελ. 3/15

4 Οι λογικές σταθερές (boolean), που αποτελούνται από τις λέξεις-τιµές true ή false. Οι σταθερές συµβολοσειρές (strings), που αποτελούνται είτε από µια ακολουθία κοινών χαρακτήρων µέσα απλά εισαγωγικά, είτε από µια ακολουθία κοινών χαρακτήρων ή ακολουθιών διαφυγής µέσα σε διπλά εισαγωγικά. Οι σταθερές συµβολοσειρές δεν µπορούν να εκτείνονται σε περισσότερες από µια γραµµές του προγράµµατος. Οι ακολουθίες διαφυγής ξεκινούν µε το χαρακτήρα \ (backslash) και περιγράφονται στον Πίνακα 1. Παραδείγµατα: abc "Route 66" "Hello world!\n" "Item:\t\"Laser Printer\"\nPrice:\t142\$\n" Χαρακτήρας Περιγραφή \n χαρακτήρας αλλαγής γραµµής (line feed) \t χαρακτήρας στηλοθέτησης (TAB) \\ χαρακτήρας \ (backslash) \' χαρακτήρας ' (απλό εισαγωγικό) \" χαρακτήρας " (διπλό εισαγωγικό) \$ χαρακτήρας $ (δολάριο) Πίνακας 1. Ακολουθίες διαφυγής (escape sequences) Τους τελεστές, οι οποίοι είναι οι παρακάτω: = > <!= >= <= + - * / % = -= *= /= %= &&! ==. and or xor Τους διαχωριστές, οι οποίοι είναι οι παρακάτω: { ; ( ) :, [ ]? Τις γραµµές εξωτερικού κώδικα, οι οποίες είναι ξεχωριστές γραµµές κώδικα στο αρχείο του προγράµµατος που δεν βρίσκονται ανάµεσα στα tags έναρξης και τερµατισµού της FhP (, ). Εκτός από τις λεκτικές µονάδες που προαναφέρθηκαν, ένα πρόγραµµα FhP µπορεί επίσης να περιέχει τα παρακάτω, τα οποία αγνοούνται (δηλαδή τα αναγνωρίζετε αλλά δεν κάνετε τίποτα για αυτά): Κενούς χαρακτήρες, δηλαδή ακολουθίες αποτελούµενες από κενά διαστήµατα (space), χαρακτήρες στηλοθέτησης (tab), χαρακτήρες αλλαγής γραµµής (line feed) ή χαρακτήρες επιστροφής στην αρχή της γραµµής (carriage return). Σχόλια, τα οποία αρχίζουν µε την ακολουθία χαρακτήρων /* και τερµατίζονται µε την πρώτη µετέπειτα εµφάνιση της ακολουθίας χαρακτήρων */. Κατά συνέπεια, τα σχόλια δεν επιτρέπεται να είναι φωλιασµένα. Στο εσωτερικό τους επιτρέπεται η εµφάνιση οποιουδήποτε χαρακτήρα. σελ. 4/15

5 Σχόλια γραµµής, το οποία αρχίζουν µε την ακολουθία χαρακτήρων // και εκτείνονται ως το τέλος της τρέχουσας γραµµής. 2.2 Συντακτική οµή Ένα πρόγραµµα FhP µπορεί να βρίσκεται µέσα σε ένα αρχείο.fhp και να αποτελείται από τα παρακάτω: ηλώσεις συναρτήσεων Εντολές εν υπάρχει κανένας περιορισµός στην σειρά µε την οποία εµφανίζονται αυτά. Για παράδειγµα, ένα πρόγραµµα θα µπορεί να έχει στην αρχή µια σειρά εντολών, στη συνέχεια δηλώσεις συναρτήσεων, µετά ξανά εντολές, ξανά συναρτήσεις, κ.ο.κ. Μέσα στο αρχείο.fhp µπορούν να υπάρχουν µηδέν ή περισσότερα µη συνεχόµενα τµήµατα προγράµµατος σε FhP. Κάθε τµήµα βρίσκεται ανάµεσα στα tags και (tags έναρξης και τερµατισµού της FhP). Όλα τα υπόλοιπα περιεχόµενα του αρχείου απλά θα προωθούνται ως γραµµές εξωτερικού κώδικα χωρίς να ελέγχονται για σύνταξη. Όλα τα τµήµατα προγράµµατος σε FhP αποτελούν µια ενότητα η οποία ακολουθεί συγκεκριµένους συντακτικούς κανόνες. εν επιτρέπεται η ύπαρξη φωλιασµένων tags έναρξης και τερµατισµού. Παράδειγµα: if ($true_or_false) { <p>the value of $true_or_false is true.</p> else { <p>the value of $true_or_false is false.</p> Παρακάτω περιγράφονται αναλυτικά όλα τα δοµικά συστατικά που µπορεί να περιλαµβάνονται σε ένα πρόγραµµα της γλώσσας FhP Τύποι δεδοµένων Η FhP υποστηρίζει τέσσερις βασικούς τύπους δεδοµένων: integer: ακέραιοι αριθµοί boolean: λογικές τιµές string: χαρακτήρες float: πραγµατικοί αριθµοί Μεταβλητές εν υπάρχουν δηλώσεις µεταβλητών. Η αναγνώρισή τους γίνεται αυτόµατα τη στιγµή που θα χρησιµοποιηθούν για πρώτη φορά. Οι µεταβλητές της γλώσσας FhP είναι της µορφής: σελ. 5/15

6 $<αναγνωριστικό_όνοµα_µεταβλητής> Ο τύπος κάθε µεταβλητής καθορίζεται από τον τύπο των δεδοµένων που θα της καταχωρήσουµε αλλά το θέµα αυτό δε θα µας απασχολήσει σε αυτή την εργασία. Το όνοµα της µεταβλητής είναι case-sensitive. Παραδείγµατα µεταβλητών είναι: $i = 0; /* µεταβλητή τύπου integer */ $y = 4.2; /* µεταβλητή τύπου float */ $c = "This is a string \n"; /* µεταβλητή τύπου string */ $f = false; /* µεταβλητή τύπου boolean */ Εκτός από τους βασικούς τύπους, η FhP υποστηρίζει επίσης µονοδιάστατους ή πολυδιάστατους πίνακες. εν υπάρχει δήλωση πινάκων. Τα στοιχεία των πινάκων της γλώσσας είναι της µορφής: $<αναγνωριστικό_όνοµα>[<δείκτης1>][<δείκτης2>]...[<δείκτηςν>] Οι δείκτες µπορούν να είναι: - Θετικός ακέραιος - Μεταβλητή - Έκφραση Παραδείγµατα στοιχείων πινάκων είναι: $matrix[1][5] $y[$k][($k+2)*$n] Συναρτήσεις Κάθε συνάρτηση είναι µια δοµική µονάδα που αποτελείται από την επικεφαλίδα ακολουθούµενη από το σώµα της. Στην επικεφαλίδα αναφέρεται η λέξη κλειδί function, το όνοµα της συνάρτησης και οι τυπικές της παράµετροι µέσα σε παρενθέσεις. Οι παρενθέσεις είναι υποχρεωτικές ακόµα και αν µία συνάρτηση δεν έχει τυπικές παραµέτρους. Το σώµα µιας συνάρτησης περικλείεται µέσα σε άγκιστρα {. Το σώµα µιας συνάρτησης µπορεί να αποτελείται από δηλώσεις συναρτήσεων και εντολές χωρίς περιορισµό στη σειρά µε την οποία εµφανίζονται. Αν η συνάρτηση επιστρέφει τιµή τότε το σώµα της θα πρέπει να περιέχει τουλάχιστον την εντολή επιστροφής return. Οι εντολές περιγράφονται στην ενότητα Ακολουθεί παράδειγµα συνάρτησης µε σώµα: function foo ($arg_1, $arg_2,..., $arg_n) { echo "Example function.\n"; return $retval; Εκφράσεις και Τελεστές Οι εκφράσεις (expressions) είναι το πιο σηµαντικό κοµµάτι µιας γλώσσας προγραµµατισµού. Οι πιο βασικές µορφές εκφράσεων είναι οι σταθερές και οι µεταβλητές. Πιο σύνθετες µορφές εκφράσεων είναι αυτές που προκύπτουν µε τη χρήση των τελεστών. Οι τελεστές της FhP διακρίνονται σε τελεστές µε ένα όρισµα και τελεστές µε δύο ορίσµατα. Από τους πρώτους, ορισµένοι γράφονται πριν το όρισµα (prefix) και σελ. 6/15

7 ορισµένοι µετά (postfix), ενώ οι δεύτεροι γράφονται πάντα µεταξύ των ορισµάτων (infix). Η αποτίµηση των ορισµάτων των τελεστών µε δυο ορίσµατα γίνεται από αριστερά προς τα δεξιά. Στον Πίνακα 2 ορίζεται η προτεραιότητα και η προσεταιριστικότητα των τελεστών της FhP. Προηγούνται οι τελεστές που εµφανίζονται πιο ψηλά στον πίνακα. Όσοι τελεστές βρίσκονται στο ίδιο κελί έχουν την ίδια προτεραιότητα. Τελεστές Περιγραφή Ορίσµατα Θέση Προσεταιριστικότητα! Λογική άρνηση 1 prefix Αύξηση, µείωση 1 prefix, postfix + - Πρόσηµα 1 prefix (int) (float) (string) (boolean) Τύποι cast 1 prefix * / % Πολλαπλασιαστικοί τελεστές 2 infix, αριστερή + -. Προσθετικοί τελεστές 2 infix, αριστερή == > < <= >=!= Σχεσιακοί τελεστές 2 infix, χωρίς σύνδεση &&, and Λογική σύζευξη 2 infix, αριστερή, or Λογική διάζευξη 2 infix, αριστερή xor Λογική αποκλειστική διάζευξη 2 infix, αριστερή = += -= /= %= *= Τελεστές ανάθεσης 2 infix, δεξιά Πίνακας 2. Προτεραιότητα και προσεταιριστικότητα των τελεστών της FhP Παραδείγµατα σωστών εκφράσεων: -$a // αντίθετος της µεταβλητής $a $a + $b * $b / $a // αριθµητική έκφραση ($b = 4) + 5 // τελεστές ανάθεσης µε αριθµητικούς ($a < $b) && ($c!= $d) // τελεστές λογικοί µε σχεσιακούς $a + ($c!= $d) // τελεστές αριθµητικοί µε σχεσιακούς $b = $a. "World!" // συνένωση - παράθεση συµβολοσειρών $a + $b[1][$k][($k+1)*2] // αριθµητική έκφραση µε πίνακα σελ. 7/15

8 2.2.5 Εντολές Οι εντολές που υποστηρίζει η γλώσσα FhP είναι οι ακόλουθες (κάθε απλή εντολή της γλώσσας FhP τερµατίζει µε το διαχωριστικό ;): Η κενή εντολή (;) που δεν κάνει καµία ενέργεια. Η εντολή ανάθεσης $l = e;, όπου $l είναι µία µεταβλητή και e µια έκφραση όπως ορίζεται και στην PHP. Υποστηρίζονται δύο είδη εντολών ανάθεσης: - Απλή εντολή ανάθεσης, π.χ. $i = $k + 2; - Εντολή ανάθεσης µε χρήση casting, π.χ. $i = (integer) $k; Τα επιτρεπόµενα casts είναι τα: (int), (integer) - cast σε integer (bool), (boolean) - cast σε boolean (float), (double), (real) - cast σε float (string) - cast σε string Η σύνθετη εντολή, που αποτελείται από µια σειρά έγκυρων εντολών ανάµεσα σε άγκιστρα {. Η εντολή ελέγχου if ( e ) s 1 else s 2 όπου e είναι µια έκφραση και τα s 1, s 2 είναι έγκυρες (απλές ή σύνθετες) εντολές. Το τµήµα else είναι προαιρετικό. H εντολή ελέγχου switch ( e ) { ; case e 1 : s 1 case e n : s n default : s d όπου e, e 1,, e n είναι εκφράσεις, s 1,, s n, s d είναι σειρές από έγκυρες απλές εντολές χωρίς άγκιστρα { και n 0. Η εντολή βρόχου while ( e ) s όπου e είναι µια έκφραση και το s είναι έγκυρη εντολή. Η εντολή βρόχου for ( e1; e2; e3 ) s. Οι εκφράσεις e1,e2,e3 είναι προαιρετικές και τo s πρέπει να είναι έγκυρη εντολή. H εντολή διακοπής break;, που προκαλεί την άµεση έξοδο από τον πιο εσωτερικό βρόχο, όπως ακριβώς και στη PHP. H εντολή διακοπής exit e;, που προκαλεί την άµεση έξοδο από το πρόγραµµα και επιστρέφει στο standard output την τιµή της έκφρασης e ως µήνυµα για τον λόγο εξόδου. Είναι σωστή η χρήση της εντολής διακοπής exit; χωρίς την έκφραση e στην περίπτωση που δεν επιστρέφεται κάποιο µήνυµα εξόδου. σελ. 8/15

9 H εντολή συνέχειας continue; προκαλεί την συνέχεια του βρόχου µέσα στον οποίο βρίσκεται, όπως ακριβώς και στη PHP. Η εντολή επιστροφής return e; τερµατίζει την εκτέλεση της τρέχουσας συνάρτησης και επιστρέφει την τιµή της έκφρασης e ως αποτέλεσµα της συνάρτησης. Είναι σωστή η χρήση της εντολής επιστροφής return; χωρίς την έκφραση e στην περίπτωση που η συνάρτηση δεν επιστρέφει κάποια τιµή. Η εντολή κλήσης µιας συνάρτησης f(e 1,..,e n );, όπου f είναι το όνοµα της συνάρτησης και e 1,..,e n είναι εκφράσεις που αντιστοιχούν στα δηλωθέντα ορίσµατα Προκαθορισµένες συναρτήσεις Η FhP υποστηρίζει ένα σύνολο προκαθορισµένων συναρτήσεων, οι οποίες βρίσκονται στη διάθεση του προγραµµατιστή. Παρακάτω, δίνονται οι επικεφαλίδες τους: print( e ); ή print e; echo( e ); ή echo e; ; Παραδείγµατα print("hello World"); echo "Hello World"; print $foo; echo($foo); print($f1, $f2); // Λάθος συντακτικό!! Γραµµές εξωτερικού κώδικα Η FhP υποστηρίζει την παρεµβολή γραµµών εξωτερικού κώδικα, οι οποίες αναγνωρίζονται σαν ξεχωριστές λεκτικές µονάδες και προωθούνται στο standard output χωρίς να ελέγχεται η εσωτερική της δοµή. Οι γραµµές εξωτερικού κώδικα µπορούν να πάρουν τη θέση οποιαδήποτε απλής εντολής χωρίς όµως να χρειάζεται ο τερµατισµός τους µε το διαχωριστικό ;. (Στην παρούσα εργασία δεν µας ενδιαφέρει ο τρόπος που εκτελούνται οι γραµµές εξωτερικού κώδικα). 3. Αναλυτική περιγραφή εργασίας 3.1 Τα εργαλεία Για να ολοκληρώσετε επιτυχώς την εργασία του µαθήµατος χρειάζεται να γνωρίζετε καλά προγραµµατισµό σε C, flex και bison. Τα εργαλεία flex και bison έχουν αναπτυχθεί στα πλαίσια του προγράµµατος GNU και µπορείτε να τα βρείτε σε όλους τους κόµβους του διαδικτύου που διαθέτουν λογισµικό GNU (π.χ. Περισσότερες πληροφορίες και σύνδεσµοι σχετικοί µε τα δύο αυτά εργαλεία υπάρχουν στην ιστοσελίδα του µαθήµατος (www.intelligence.tuc.gr/~theory). σελ. 9/15

10 Στο λειτουργικό Linux (οποιαδήποτε διανοµή) τα εργαλεία αυτά είναι ενσωµατωµένα, οπότε δεν χρειάζεται να κατεβάσετε ή να εγκαταστήσετε κάτι! Τα εγχειρίδια των εργαλείων µπορείτε να τα κατεβάσετε από τη σελίδα του µαθήµατος. Οι οδηγίες χρήσης που δίνονται παρακάτω έχουν δοκιµαστεί στη διανοµή Linux του εργαστηρίου, πιθανόν όµως να υπάρχουν µικροδιαφορές σε άλλα συστήµατα. 3.2 Τρόπος προσέγγισης της εργασίας Για τη δική σας διευκόλυνση στην κατανόηση των εργαλείων που θα χρησιµοποιήσετε καθώς και του τρόπου µε τον οποίο τα εργαλεία αυτά συνεργάζονται, προτείνουµε την υλοποίηση της εργασίας του µαθήµατος σε δύο φάσεις η φάση: Λεκτική ανάλυση Το αποτέλεσµα της λεκτικής ανάλυσης θα είναι ένα πρόγραµµα το οποίο θα παίρνει σαν είσοδο ένα πρόγραµµα της γλώσσας FhP και θα αναγνωρίζει τις λεκτικές µονάδες (tokens) στο αρχείο αυτό. Η έξοδός του θα είναι µία λίστα από τα tokens που διάβασε και ο χαρακτηρισµός τους. Για παράδειγµα, για είσοδο $i = $k + 2; η έξοδος του προγράµµατός σας θα πρέπει να είναι token ID: $i token EQUAL: = token ID: $k token ADDOP: + token INT: 2 token SEMICOLON: ; Σε περίπτωση µη αναγνωρίσιµης λεκτικής µονάδας θα πρέπει να τυπώνεται κατάλληλο µήνυµα λάθους και να τερµατίζει η λεκτική ανάλυση. Για να φτιάξετε ένα λεκτικό αναλυτή θα χρησιµοποιήσετε το εργαλείο flex και τον compiler gcc. ώστε man flex στη γραµµή εντολής για να δείτε το manual του flex. Τα αρχεία µε κώδικα του flex έχουν προέκταση.l. Για να κάνετε compile και να τρέξετε τον κώδικά σας ακολουθήστε τις οδηγίες που δίνονται παρακάτω. 1. Γράψτε τον κώδικα flex σε ένα αρχείο µε προέκταση.l, π.χ. mylexer.l. 2. Κάντε compile, γράφοντας flex mylexer.l στη γραµµή εντολής. 3. ώστε ls για να δείτε το αρχείο lex.yy.c που παράγεται από τον flex. 4. Κάντε compile το lex.yy.c µε την εντολή gcc -o mycompiler lex.yy.c lfl 5. Αν δεν έχετε λάθη στο mylexer.l, παράγεται το εκτελέσιµο mycompiler. 6. Τρέξτε το µε./mycompiler < example.fhp, για το πρόγραµµα example.fhp. Κάθε φορά που αλλάζετε το mylexer.l θα πρέπει να κάνετε όλη την διαδικασία: flex mylexer.l gcc -o mycompiler lex.yy.c -lfl./mycompiler < example.fhp Εποµένως είναι καλή ιδέα να φτιάξετε ένα script για να κάνει όλα τα παραπάνω. σελ. 10/15

11 η φάση: Συντακτική ανάλυση Το αποτέλεσµα της συντακτικής ανάλυσης θα είναι ένα πρόγραµµα το οποίο θα παίρνει σαν είσοδο ένα αρχείο της γλώσσας FhP και θα αναγνωρίζει αν αυτό το πρόγραµµα ακολουθεί τους συντακτικούς κανόνες της FhP. Στην έξοδο θα αναπαράγει τα αποτελέσµατα της λεκτικής ανάλυσης (λίστα από λεκτικές µονάδες και κατηγορίες και πιθανά λεκτικά λάθη) και στο τέλος ένα µήνυµα ότι το πρόγραµµα που δόθηκε είναι συντακτικά σωστό ή διαφορετικά ο αριθµός γραµµής όπου διαγνώσθηκε το πρώτο λάθος, το περιεχόµενο της γραµµής µε το λάθος και προαιρετικά ένα κατατοπιστικό µήνυµα διάγνωσης. Για παράδειγµα, για τη λανθασµένη είσοδο... $i = $k η έξοδος του προγράµµατός σας θα πρέπει να είναι Syntax error in line 56: $i = $k + 2 ή Syntax error in line 56: $i = $k + 2 (semicolon expected) (όπου line 56 είναι ο αριθµός της γραµµής µέσα στο αρχείο συµπεριλαµβανοµένων των γραµµών σχολίων ή εξωτερικού κώδικα.) Για να φτιάξετε ένα συντακτικό αναλυτή θα χρησιµοποιήσετε το εργαλείο bison και τον compiler gcc. ώστε man bison για να δείτε το manual του bison. Τα αρχεία µε κώδικα του bison έχουν προέκταση.y. Για να κάνετε compile και να τρέξετε τον κώδικά σας ακολουθήστε τις οδηγίες που δίνονται παρακάτω. 1. Υποθέτουµε ότι έχετε ήδη έτοιµο τον λεκτικό αναλυτή στο mylexer.l. 2. Γράψτε τον κώδικα bison σε αρχείο µε προέκταση.y, π.χ. myanalyzer.y. 3. Για να ενώσετε το flex µε το bison πρέπει να κάνετε τα εξής: a. Βάλτε τα αρχεία mylexer.l και myanalyzer.y στο ίδιο directory. b. Βγάλτε την συνάρτηση main από το flex αρχείο και φτιάξτε µια main στο bison αρχείο. Για αρχή το µόνο που χρειάζεται να κάνει η καινούρια main είναι να καλεί µια φορά την µακροεντολή του bison yyparse(). H yyparse() τρέχει επανειληµµένα την yylex() και προσπαθεί να αντιστοιχίσει κάθε token που επιστρέφει o λεκτικός αναλυτής στη γραµµατική που έχετε γράψει στο συντακτικό αναλυτή. Επιστρέφει 0 για επιτυχή τερµατισµό και 1 για λανθασµένο τερµατισµό. c. Αφαιρέστε τα defines που είχατε κάνει για τα tokens στο flex ή σε κάποιο άλλο.h αρχείο. Αυτά θα δηλωθούν τώρα στο bison αρχείο ένα σε κάθε γραµµή µε την εντολή %token. Όταν κάνετε compile to myanalyzer.y θα δηµιουργείται αυτόµατα και ένα αρχείο µε όνοµα myanalyzer.tab.h. To αρχείο αυτό θα πρέπει να το κάνετε include στο αρχείο mylexer.l και έτσι ο flex θα καταλαβαίνει τα ίδια tokens µε τoν bison. 4. Κάντε compile bison -d myanalyzer.y flex mylexer.l gcc -o mycompiler lex.yy.c myanalyzer.tab.c -lfl./mycompiler <test.fhp σελ. 11/15

12 Προσοχή! Πρέπει πρώτα να κάνετε compile το myanalyzer.y και µετά το mylexer.l γιατί το myanalyzer.tab.h γίνεται include στο mylexer.l. Κάθε φορά που αλλάζετε το mylexer.l και myanalyzer.y θα πρέπει να κάνετε όλη την διαδικασία. Είναι καλή ιδέα να φτιάξετε ένα script για όλα τα παραπάνω. 3.3 Παραδοτέο Το παραδοτέο για την εργασία του µαθήµατος θα περιέχει τα παρακάτω αρχεία: mylexer.l: To αρχείο flex. myanalyzer.y: To αρχείο bison. team.txt: Τα ονόµατα σας µε τους αριθµούς µητρώου. grammar.txt: Η γραµµατική χωρίς συµφραζόµενα που χρησιµοποιήσατε. report.pdf: Συνοπτική (δακτυλογραφηµένη) αναφορά που θα εξηγεί τις τεχνικές που χρησιµοποιήσατε και τις ιδιαιτερότητες της εργασίας σας. correctx.fhp, X=1,2,3: Σωστά (λεκτικά και συντακτικά) προγράµµατα της γλώσσας FhP (προαιρετικό). wrongx.fhp, X=1,2,3: Λανθασµένα (λεκτικά ή συντακτικά) προγράµµατα της FhP (προαιρετικό). Είναι δική σας ευθύνη να αναδείξετε τη δουλειά σας µέσα από αντιπροσωπευτικά προγράµµατα της γλώσσας FhP. Κατά τη διάρκεια της εξέτασης της εργασίας σας θα γίνουν τα εξής: Μεταγλώττιση των παραδοτέων προγραµµάτων: Ανεπιτυχής µεταγλώττιση θα σηµαίνει µεγάλη µείωση στον τελικό βαθµό της εργασίας σας. Έλεγχος εκτελέσιµου τόσο στα παραδείγµατα προγραµµάτων του Παραρτήµατος όσο και σε άλλα άγνωστα σε σας παραδείγµατα: Η καλή εκτέλεση αυτών των παραδειγµάτων θα επηρεάσει σηµαντικά το τελικό βαθµό της εργασίας σας. Έλεγχος εκτελέσιµου µε τα παραδείγµατα προγραµµάτων σε FhP που έχετε δώσει εσείς: Μόνο σε περίπτωση που θέλετε να αναδείξετε κάτι από τη δουλειά σας. Ερωτήσεις σχετικά µε την υλοποίηση και τα παραδοτέα κείµενα. Θα πρέπει να είστε σε θέση να εξηγήσετε θέµατα σχεδιασµού, επιλογών και τρόπων υλοποίησης. 4. Επίλογος Στη διάρκεια του εξαµήνου θα δοθούν διευκρινίσεις όπου χρειάζεται. Για ερωτήσεις µπορείτε να απευθύνεστε στον κ. Αργυρόπουλο. Γενικές απορίες καλό είναι να αποστέλλονται στη λίστα του µαθήµατος για να τις βλέπουν και οι συνάδελφοί σας. Καλή επιτυχία! σελ. 12/15

13 ΠΑΡΑΡΤΗΜΑ 1. Παραδείγµατα προγραµµάτων της FhP 1.1 Hello World! <html> <head> <title>fhp Test</title> </head> <body> echo "<p>hello World</p>"; </body> </html> Προτεινόµενο αποτέλεσµα λεκτικής συντακτικής ανάλυσης: Token EXTERNAL_CODE_LINE:<html> Token EXTERNAL_CODE_LINE:<head> Token EXTERNAL_CODE_LINE:<title>PHP Test</title> Token EXTERNAL_CODE_LINE:</head> Token EXTERNAL_CODE_LINE:<body> Token RESERVED_FUNCTION:echo Token STRING: <p>hello World</p> Token SEMICOLON:; Token EXTERNAL_CODE_LINE:</body> Token EXTERNAL_CODE_LINE:</html> Your program is syntactically correct! 1.2 Πρώτοι αριθµοί Το παρακάτω παράδειγµα προγράµµατος στη γλώσσα FhP είναι ένα πρόγραµµα που υπολογίζει τους πρώτους αριθµούς µεταξύ 1 και n, όπου το n καθορίζεται από το χρήστη. Λαµβάνεται υπόψη ότι οι αριθµοί 2 και 3 είναι πρώτοι, και στη συνέχεια εξετάζονται µόνο οι αριθµοί της µορφής 6k±1, όπου k ακέραιος αριθµός. function prime($n){ if ($n < 0) $result = prime(-$n); else if ($n < 2) $result = false; else if ($n == 2) $result = true; else if ($n % 2 == 0) $result = false; else { $i = 3; $isprime = true; while ( $isprime && $i <= $n / 2 ) { $isprime = ($n % $i!=0); $i = $i+2; σελ. 13/15

14 $result = $isprime; return $result; $limit = readinteger(); $counter = 0; if ($limit >= 2) { $counter = $counter + 1; echo('2 '); if ($limit >= 3) { $counter = $counter + 1; echo('3 '); $number = 6; while ($number <= $limit) { if (prime($number-1)) { $counter = $counter + 1; echo number-1; echo ' '; if (($number!= $limit) && prime($number+1){ $counter = $counter + 1; echo $number+1; echo ' '; $number = $number + 6; echo("\ntotal: "); echo $counter; 1.3 Άλλο παράδειγµα $check = "test"; $check.= $filename; if ($test == $check) { print("<html><body>"); print("you are already registered."); print("</body></html>"); else { $rated = "test"; $rated.= $filename; setcookie(test, $rated, time()+86400); <HTML><BODY><br> You are a new user so I recorded your id. </BODY></HTML> $status = getuserstatus($u); σελ. 14/15

15 switch ( $status ) { case '0' : case '1' : updatesystem(0); break; case '2' : updatesystem(0); break; default : echo "No Permissions"; 1.4 Παράδειγµα µε συντακτικό λάθος 1 <html> 2 <head> 3 <title>fhp Test</title> 4 </head> 5 <body> 6 7 // Missing parenthesis. 8 echo ("<p>hello World</p>"; 9 10 </body> 11 </html> Προτεινόµενο αποτέλεσµα λεκτικής συντακτικής ανάλυσης: Token EXTERNAL_CODE_LINE:<html> Token EXTERNAL_CODE_LINE:<head> Token EXTERNAL_CODE_LINE:<title>PHP Test</title> Token EXTERNAL_CODE_LINE:</head> Token EXTERNAL_CODE_LINE:<body> Syntax error in line 8: echo ("<p>hello World</p>; ή Syntax error in line 8: echo ("<p>hello World</p>; (Missing parenthesis) σελ. 15/15

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

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

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

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

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009 ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΘΠ06 Μεταγλωττιστές Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009 Βοηθοί: Χαράλαμπος Νικολάου(charnik)

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

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

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών & Μηχανικών Υπολογιστών Τομέας Πληροφορικής ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών & Μηχανικών Υπολογιστών Τομέας Πληροφορικής ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ Χειμερινό Εξάμηνο 2005-2006 Διδάσκων: Μιχαήλ Γ. Λαγουδάκης Προγραμματιστική Εργασία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

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

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

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

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

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

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 5.1-5.3: Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 9-1 οµές Έλεγχου Προγράµµατος Μέχρι τώρα είδαµε τις ακόλουθες δοµές έλεγχου (program control structure) ενός προγράµµατος

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 012. JavaScripts

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

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

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

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

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

Visual Basic Βασικές Έννοιες

Visual Basic Βασικές Έννοιες Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas

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

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

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 2 Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές Σύνοψη Το κεφάλαιο αυτό εισάγει τον αναγνώστη σε βασικές έννοιες που είναι χρήσιμες για την απόκτηση μιας πρώτης εμπειρίας με την Python. Προαπαιτούμενη

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

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

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

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

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

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

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

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

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

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

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

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

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

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

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

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

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2009-20010 Προθεσµία: 15/11/09, 23:59 Στόχοι Χρήση συναρτήσεων Χρήση µονοδιάστατων πινάκων Διαχείριση συµβολοσειρών Φορµαρισµένη έξοδος δεδοµένων

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Μορφές Εντολών Είδη εντολών Απλές εντολές Εκτελούν κάποια ενέργεια Εντολές ελέγχου Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Εντολές και παραστάσεις Μιαεντολήείναιμιαπαράστασηπου ακολουθείται

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

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

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

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

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

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 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Αυτό-αξιολόγηση 1η: 08/02/2006 1

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

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) 1 ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004) ιάλεξη 1 1.1 ΕΙΣΑΓΩΓΗ ΣΤΗ FORTRAN 77 Ένα πρόγραµµα σε οποιαδήποτε γλώσσα προγραµµατισµού δεν τίποτα άλλο από µια σειρά εντολών που πρέπει

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

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

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

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C Εισαγωγή στη Γλώσσα C Η C είναι µια δοµηµένη (structured ) γλώσσα ηλαδή ένα C πρόγραµµα αποτελείται από υποπρογράµµατα τα οποία ονοµάζονται συναρτήσεις ( functions ), όπου η κάθε συνάρτηση εκτελεί µια

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

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

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

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

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

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

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

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

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

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

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

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

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

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