Η γλώσσα Pazcal Μεταγλωττιστές

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

Download "Η γλώσσα Pazcal Μεταγλωττιστές"

Transcript

1 Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 01 Θέμα εργασίας Η γλώσσα Pazcal Μεταγλωττιστές Διδάσκοντες: Βοηθοί: Νίκος Παπασπύρου Κωστής Σαγώνας Άγγελος Γιάντσιος Γιάννης Τσιούρης Αθήνα, Απρίλιος 01

2

3 ΘΕΜΑ: Να σχεδιαστεί και να υλοποιηθεί από κάθε ομάδα δυο σπουδαστών ένας μεταγλωττιστής για τη γλώσσα Pazcal. Γλώσσα υλοποίησης μπορεί να είναι μια από τις C/C++, Java, SML, OCaml ή Haskell. Η επιλογή κάποιας άλλης γλώσσας υλοποίησης μπορεί να γίνει κατόπιν συνεννόησης με τους διδάσκοντες. Επιτρέπεται να χρησιμοποιηθούν και επίσης συνιστάται η χρήση εργαλείων, π.χ. flex/ml-lex/ocamllexalex, bison/ml-yacc/ocamlyacchappy, JavaCC, κ.λπ. Περισσότερες πληροφορίες σχετικές με αυτά τα εργαλεία θα δοθούν στις παραδόσεις. Παραδοτέα, ημερομηνίες και βαθμολόγηση Τα τμήματα του μεταγλωττιστή φαίνονται στον παρακάτω πίνακα. Τις αντίστοιχες ημερομηνίες παράδοσης θα βρείτε στο Moodle. Τμήμα του μεταγλωττιστή Μονάδες Bonus Λεκτικός αναλυτής 0. Συντακτικός αναλυτής Σημασιολογικός αναλυτής Ενδιάμεσος κώδικας Βελτιστοποίηση Τελικός κώδικας Συνολική εργασία και έκθεση.0.0 Για τα διάφορα τμήματα της εργασίας πρέπει να παραδίδεται εμπρόθεσμα από κάθε ομάδα ο αντίστοιχος κώδικας σε ηλεκτρονική μορφή, καθώς και σαφείς οδηγίες για την παραγωγή ενός εκτελέσιμου προγράμματος επίδειξης της λειτουργίας του αντίστοιχου τμήματος, από τον κώδικα αυτόν. Καθυστερημένες ασκήσεις θα βαθμολογούνται με μικρότερο βαθμό, αντιστρόφως ανάλογα προς το χρόνο καθυστέρησης. Παρακαλούμε, μην παραδίδετε τυπωμένες εργασίες!! Προαιρετικά τμήματα και μονάδες bonus Το σύνολο των μονάδων της παρούσας εργασίας είναι. Από αυτές, οι μονάδες είναι bonus (που σημαίνει ότι το σύνολο μονάδων του μαθήματος είναι ) και αντιστοιχούν σε τμήματα της εργασίας που είναι προαιρετικά. Συγκεκριμένα: (0%) (0%) Πραγματικοί αριθμοί (REAL). Δομή switch. (0%) Βελτιστοποίηση ενδιάμεσου κώδικα. Οτιδήποτε απαιτεί ανάλυση ροής ελέγχου ή/και ανάλυση ροής δεδομένων. (0%) Δέσμευση καταχωρητών και βελτιστοποίηση τελικού κώδικα.

4 Περιεχόμενα 1 Περιγραφή της γλώσσας Pazcal 1.1 Λεκτικές μονάδες Τύποι δεδομένων Δομή του προγράμματος Σταθερές Μεταβλητές Ρουτίνες Εκφράσεις L-values Σταθερές Τελεστές Κλήση συναρτήσεων Εντολές Προκαθορισμένες ρουτίνες Είσοδος και έξοδος Μαθηματικές συναρτήσεις Συναρτήσεις μετατροπής Συναρτήσεις διαχείρισης συμβολοσειρών Πλήρης γραμματική της Pazcal Παραδείγματα 1.1 Πες γειά! Οι πύργοι του Hanoi Πρώτοι αριθμοί Ταξινόμηση με τη μέθοδο της φυσαλίδας Μέση τιμή τυχαίας μεταβλητής Οδηγίες για την παράδοση 0

5 Περιγραφή της γλώσσας Pazcal Η γλώσσα Pazcal είναι μια απλή γλώσσα προστακτικού προγραμματισμού είναι αυτή που διδάσκεται στο πρώτο εξάμηνο της ΣΗΜΜΥ από φέτος. Βασίζεται σε ένα γνήσιο υποσύνολο της ISO C (ή της ISO C++), με αρκετές απλοποιήσεις και μερικά macros που κατά σύμβαση γράφονται με κεφαλαία γράμματα για να ξεχωρίζουν και που εδώ εμφανίζονται ως ενσωματωμένα στη γλώσσα. Τα κύρια χαρακτηριστικά της Pazcal εν συντομία είναι τα εξής: Σύνταξη εντολών και εκφράσεων παρόμοια με αυτή της C. Συναρτήσεις με τους κανόνες εμβέλειας της C. Βασικοί τύποι δεδομένων για ακέραιους και πραγματικούς αριθμούς, λογικές τιμές και χαρακτήρες. Πίνακες με γνωστό ή άγνωστο μέγεθος. Βιβλιοθήκη συναρτήσεων. Περισσότερες λεπτομέρειες για τη γλώσσα δίνονται στις παραγράφους που ακολουθούν. Λόγω των πολλών ομοιοτήτων της Pazcal με τη C/C++, τόσο από πλευράς σύνταξης όσο και από πλευράς σημασιολογίας, η περιγραφή θα είναι σύντομη με εξαίρεση τα σημεία όπου οι γλώσσες διαφέρουν. 1.1 Λεκτικές μονάδες Οι λεκτικές μονάδες της γλώσσας Pazcal χωρίζονται στις παρακάτω κατηγορίες (προσοχή στη διάκριση μεταξύ πεζών και κεφαλαίων γραμμάτων): Τις λέξεις κλειδιά, οι οποίες είναι οι παρακάτω: and bool break case char const continue default do DOWNTO else false FOR FORM FUNC if int MOD NEXT not or PROC PROGRAM REAL return STEP switch TO true while WRITE WRITELN WRITESP WRITESPLN Τα ονόματα, τα οποία αποτελούνται από ένα πεζό ή κεφαλαίο γράμμα του λατινικού αλφαβήτου, πιθανώς ακολουθούμενο από μια σειρά πεζών ή κεφαλαίων γραμμάτων, δεκαδικών ψηφίων ή χαρακτήρων υπογράμμισης (underscore). Τα πεζά γράμματα θεωρούνται διαφορετικά από τα αντίστοιχα κεφαλαία, επομένως τα ονόματα foo, Foo και FOO είναι όλα διαφορετικά. Επίσης, τα ονόματα δεν πρέπει να συμπίπτουν με τις λέξεις κλειδιά που αναφέρθηκαν παραπάνω. Οι ακέραιες σταθερές χωρίς πρόσημο, που αποτελούνται από ένα ή περισσότερα δεκαδικά ψηφία. Απαγορεύεται μία μη μηδενική ακέραια σταθερά να αρχίζει με μηδέν. Παραδείγματα ακέραιων σταθερών είναι τα ακόλουθα: 0 00 αλλά όχι: Τις πραγματικές σταθερές χωρίς πρόσημο, που αποτελούνται από ένα ακέραιο μέρος, ένα κλασματικό μέρος και ένα προαιρετικό εκθετικό μέρος. Το ακέραιο μέρος αποτελείται από ένα ή περισσότερα δεκαδικά ψηφία. Το κλασματικό μέρος αποτελείται από το χαρακτήρα. της υποδιαστολής, ακολουθούμενο από ένα ή περισσότερα δεκαδικά ψηφία. Τέλος, το εκθετικό μέρος αποτελείται από το πεζό ή κεφαλαίο γράμμα E, ένα προαιρετικό πρόσημο + ή - και ένα ή περισσότερα δεκαδικά ψηφία. Παραδείγματα πραγματικών σταθερών είναι τα ακόλουθα:.0.e1 0.0e e

6 Πίνακας 1: Ακολουθίες διαφυγής (escape sequences). Ακολουθία διαφυγής Περιγραφή \n ο χαρακτήρας αλλαγής γραμμής (line feed) \t ο χαρακτήρας στηλοθέτησης (tab) \r ο χαρακτήρας επιστροφής στην αρχή της γραμμής (carriage return) \0 ο χαρακτήρας με ASCII κωδικό 0 \\ ο χαρακτήρας \ (backslash) \ ο χαρακτήρας (απλό εισαγωγικό) \ ο χαρακτήρας (διπλό εισαγωγικό) Τους σταθερούς χαρακτήρες, που αποτελούνται από ένα χαρακτήρα μέσα σε απλά εισαγωγικά. Ο χαρακτήρας αυτός μπορεί να είναι οποιοσδήποτε κοινός χαρακτήρας ή ακολουθία διαφυγής (escape sequence). Κοινοί χαρακτήρες είναι όλοι οι εκτυπώσιμοι χαρακτήρες πλην των απλών και διπλών εισαγωγικών και του χαρακτήρα \ (backslash). Οι ακολουθίες διαφυγής ξεκινούν με το χαρακτήρα \ (backslash) και περιγράφονται στον πίνακα 1. Παραδείγματα σταθερών χαρακτήρων είναι οι ακόλουθες: a 1 \n \ Τις σταθερές συμβολοσειρές, που αποτελούνται από μια ακολουθία κοινών χαρακτήρων ή ακολουθιών διαφυγής μέσα σε διπλά εισαγωγικά. Οι συμβολοσειρές δεν μπορούν να εκτείνονται σε περισσότερες από μια γραμμές προγράμματος. Παραδείγματα σταθερών συμβολοσειρών είναι οι ακόλουθες: abc Route Hello world!\n Name:\t\ DouglasAdams\ \nvalue:\t\n Τους τελεστές, οι οποίοι είναι οι παρακάτω: == > <!= >= <= + * / %! && ++ = += = *= /= %= Τους διαχωριστές, οι οποίοι είναι οι παρακάτω: 1 & ;. ( ) :, [ ] { Εκτός από τις λεκτικές μονάδες που προαναφέρθηκαν, ένα πρόγραμμα Pazcal μπορεί επίσης να περιέχει τα παρακάτω, τα οποία αγνοούνται: Κενούς χαρακτήρες, δηλαδή ακολουθίες αποτελούμενες από κενά διαστήματα (space), χαρακτήρες στηλοθέτησης (tab), χαρακτήρες αλλαγής γραμμής (line feed) ή χαρακτήρες επιστροφής στην αρχή της γραμμής (carriage return). Σχόλια μιας γραμμής, τα οποία αρχίζουν με την ακολουθία χαρακτήρων // και τερματίζονται με το τέλος της τρέχουσας γραμμής. Σχόλια πολλών γραμμών, τα οποία αρχίζουν με την ακολουθία χαρακτήρων /* και τερματίζονται με την ακολουθία χαρακτήρων */. Τα σχόλια αυτής της μορφής δεν επιτρέπεται να είναι φωλιασμένα.

7 Τύποι δεδομένων Η Pazcal υποστηρίζει τέσσερις βασικούς τύπους δεδομένων: int : ακέραιοι αριθμοί, bool : λογικές τιμές, char : χαρακτήρες, και REAL : πραγματικοί αριθμοί. Εκτός από τους βασικούς τύπους, η Pazcal υποστηρίζει επίσης τους παρακάτω σύνθετους τύπους, η κατασκευή των οποίων βασίζεται σε άλλους βασικούς ή σύνθετους τύπους: πίνακες (arrays), αποτελούμενοι από n στοιχεία τύπου t. Το n θα πρέπει να είναι ακέραια σταθερά με θετική τιμή και το t έγκυρος τύπος. πίνακες (arrays), αποτελούμενοι από άγνωστο αριθμό στοιχείων τύπου t. Το t πρέπει να είναι έγκυρος τύπος. Οι τύποι char και int ονομάζονται ακέραιοι τύποι. Οι ακέραιοι τύποι και ο τύπος REAL ονομάζονται αριθμητικοί τύποι. Οι βασικοί τύποι και οι τύποι πινάκων δεδομένου μεγέθους ονομάζονται πλήρεις τύποι. Αντίθετα, οι τύποι πινάκων άγνωστου μεγέθους ονομάζονται ημιτελείς τύποι. Κατά το σχηματισμό ενός τύπου πίνακα, είτε πλήρους είτε ημιτελούς, ο τύπος του στοιχείου t θα πρέπει να είναι πλήρης. Η αρίθμηση των στοιχείων ενός πίνακα ακολουθεί τη σύμβαση της C: το πρώτο στοιχείο έχει δείκτη 0, το δεύτερο 1, ενώ το τελευταίο έχει δείκτη κατά ένα μικρότερο από την πραγματική διάσταση του πίνακα. Ο αριθμός των bytes που καταλαμβάνουν τα δεδομένα κάθε πλήρους τύπου στη μνήμη του υπολογιστή, καθώς και ο ακριβής τρόπος παράστασης αυτών εξαρτώνται από την υλοποίηση της Pazcal. Κατ ελάχιστον θα πρέπει να είναι: int: μέγεθος bytes. bool: μέγεθος 1 byte, τιμές false = 0 και true = 1. char: μέγεθος 1 byte, παράσταση σύμφωνα με τον πίνακα ASCII. REAL: μέγεθος bytes, παράσταση σύμφωνα με το πρότυπο IEEE. πίνακες n στοιχείων τύπου t: μέγεθος ίσο με n επί το μέγεθος του τύπου t, τοποθέτηση σε αύξουσα σειρά διευθύνσεων. 1. Δομή του προγράμματος Ένα πρόγραμμα Pazcal αποτελείται από μία ακολουθία δηλώσεων. Κάθε δήλωση μπορεί να είναι: Ορισμός σταθεράς. Ορισμός καθολικής μεταβλητής. Δήλωση ή ορισμός ρουτίνας. Ορισμός κύριου προγράμματος. Η Pazcal ακολουθεί τους κανόνες εμβέλειας της C, όσον αφορά στην ορατότητα των ονομάτων μεταβλητών, ρουτίνων και παραμέτρων. Ειδικότερα για τον ορισμό σταθερών και μεταβλητών, η εμβέλεια ενός ονόματος αρχίζει ακριβώς από το σημείο που αναγράφεται για πρώτη φορά το όνομα.

8 Σταθερές Οι δηλώσεις σταθερών γίνονται με τη λέξη κλειδί const. Ακολουθεί ένας βασικός τύπος και ένα ή περισσότερα ονόματα σταθερών, καθένα από τα οποία συνοδεύεται από μία τιμή. Οι τιμές των σταθερών είναι σταθερές εκφράσεις, δηλαδή εκφράσεις που περιέχουν μόνο σταθερές και που μπορούν να αποτιμηθούν στο χρόνο μεταγλώττισης. Παραδείγματα δηλώσεων σταθερών είναι: const int N = 00, M = 0; const int N = N*N; const char EOLN = \n ; Μεταβλητές Οι δηλώσεις μεταβλητών γίνονται με την αναγραφή ενός βασικού τύπου, συνοδευόμενου από ένα ή περισσότερα ονόματα δηλωτών (declarators). Ένας δηλωτής μπορεί να είναι είτε ένα απλό αναγνωριστικό, είτε ένας δηλωτής πίνακα. Στη δεύτερη περίπτωση, το αναγνωριστικό του ακολουθείται από μία ή περισσότερες διαστάσεις, κάθε μία από τις οποίες περιέχει μία ακέραια έκφραση μέσα σε αγκύλες. Το πρώτο είδος δηλωτή χρησιμοποιείται για τη δήλωση μεταβλητών βασικών τύπων, ενώ το δεύτερο για τη δήλωση πινάκων. Αν ο τύπος μίας μεταβλητής είναι βασικός, τότε το όνομά της μπορεί να συνοδεύεται από μία αρχικοποίηση. Οι αρχικές τιμές των καθολικών μεταβλητών, αν υπάρχουν, πρέπει να είναι σταθερές εκφράσεις. Αντίθετα, οι αρχικές τιμές των υπόλοιπων μεταβλητών, αν υπάρχουν, μπορούν να είναι οποιεσδήποτε εκφράσεις. Οι καθολικές μεταβλητές που δε συνοδεύονται από αρχικοποίηση αυτόματα αρχικοποιούνται σε μηδενικές τιμές. Μηδενικές τιμές για τους τύπους int, bool, char και REAL θεωρούνται αντίστοιχα οι 0, false, \0 και 0.0. Για τύπους πινάκων, μηδενική τιμή θεωρείται ένας πίνακας όλα τα στοιχεία του οποίου έχουν μηδενικές τιμές. Παραδείγματα δηλώσεων μεταβλητών είναι: int i =, j, k = 1; REAL x, pi =.1, y; char s[0], t[][0]; Ρουτίνες Οι ρουτίνες διακρίνονται σε διαδικασίες (procedures) και συναρτήσεις (functions). Κάθε ρουτίνα είναι μια δομική μονάδα και αποτελείται από την επικεφαλίδα της και το σώμα της. Στη δήλωση μίας ρουτίνας μπορεί να παραλείπεται το σώμα, αργότερα όμως η ρουτίνα πρέπει να οριστεί χρησιμοποιώντας την ίδια επικεφαλίδα. Η επικεφαλίδα μίας ρουτίνας ξεκινά με μία από τις λέξεις κλειδιά PROC ή FUNC, ανάλογα αν η ρουτίνα είναι διαδικασία ή συνάρτηση. Στην περίπτωση της συνάρτησης, μετά τη λέξη κλειδί FUNC γράφεται ο τύπος επιστροφής, που πρέπει να είναι βασικός τύπος. Ακολουθεί το όνομα της ρουτίνας και οι τυπικές παράμετροι μέσα σε παρενθέσεις. Κάθε τυπική παράμετρος χαρακτηρίζεται από τον τύπο της και το όνομά της. Η δήλωση των παραμέτρων μοιάζει με τη δήλωση των μεταβλητών, χωρίς αρχικοποίηση. Τυπικές παράμετροι βασικών τύπων μπορούν να περνούν κατ αξία (by value) ή κατ αναφορά (by reference). Στη δεύτερη περίπτωση εμφανίζεται το σύμβολο & πριν από το όνομα της παραμέτρου. Τυπικές παράμετροι τύπων πίνακα περνούν υποχρεωτικά κατ αναφορά, χωρίς αναγραφή του συμβόλου &. Στις τυπικές παραμέτρους τύπου πίνακα, το μέγεθος της πρώτης διάστασης μπορεί να παραλείπεται (ημιτελής τύπος). Ακολουθούν παραδείγματα δηλώσεων ρουτίνων. PROC p1 (); PROC p (int n); PROC p (int a, int b, bool &c); FUNC REAL f1 (REAL x);

9 1 FUNC int f (char s[]); FUNC REAL f (int a[], REAL &x, REAL b[][][0]); 1. Εκφράσεις Κάθε έκφραση της Pazcal διαθέτει ένα μοναδικό τύπο. Αν η αποτίμησή της ολοκληρωθεί, τότε προκύπτει ως αποτέλεσμα μια τιμή αυτού του τύπου. Οι εκφράσεις διακρίνονται σε δύο κατηγορίες: αυτές που προκύπτουν από l-values, οι οποίες περιγράφονται στην ενότητα 1..1, και αυτές που προκύπτουν από r-values, που περιγράφονται στις ενότητες 1.. ως 1... Τα δυο αυτά είδη τιμών έχουν πάρει το όνομά τους από τη θέση τους σε μια εντολή ανάθεσης: οι l-values εμφανίζονται στο αριστερό μέλος της ανάθεσης ενώ οι r-values στο δεξιό. Οι r-values μπορούν να εμφανίζονται μέσα σε παρενθέσεις, που χρησιμοποιούνται για λόγους ομαδοποίησης L-values Οι l-values αντιπροσωπεύουν αντικείμενα που καταλαμβάνουν χώρο στη μνήμη του υπολογιστή κατά την εκτέλεση του προγράμματος και τα οποία μπορούν να περιέχουν τιμές. Τέτοια αντικείμενα είναι οι μεταβλητές και οι παράμετροι των ρουτίνων. Συγκεκριμένα: Το όνομα μιας μεταβλητής ή μιας παραμέτρου ρουτίνας είναι l-value και αντιστοιχεί στο εν λόγω αντικείμενο. Ο τύπος της l-value είναι ο τύπος του αντίστοιχου αντικειμένου. Αν l είναι μια l-value τύπου πίνακα αποτελούμενου από στοιχεία τύπου t και e είναι μια έκφραση τύπου int, τότε l[e] είναι μια l-value με τύπο t. Αν η τιμή της έκφρασης e είναι ο μη αρνητικός ακέραιος i τότε αυτή η l-value αντιστοιχεί στο στοιχείο με δείκτη i του πίνακα που αντιστοιχεί στην l. Η τιμή του i δεν πρέπει να υπερβαίνει τα πραγματικά όρια του πίνακα. Μια l-value βασικού τύπου μπορεί να χρησιμοποιηθεί ως έκφραση. Η τιμή αυτής της έκφρασης είναι ίση με την τιμή η οποία περιέχεται στο αντικείμενο που αντιστοιχεί στην l-value Σταθερές Στις r-values της γλώσσας Pazcal συγκαταλέγονται οι ακόλουθες σταθερές: Οι ακέραιες σταθερές χωρίς πρόσημο, όπως περιγράφονται στην ενότητα 1.1. Έχουν τύπο int και η τιμή τους είναι ίση με τον μη αρνητικό ακέραιο αριθμό που παριστάνουν. Οι λογικές σταθερές true και false, με τύπο bool και προφανείς τιμές. Οι πραγματικές σταθερές χωρίς πρόσημο, όπως περιγράφονται στην ενότητα 1.1. Έχουν τύπο REAL και η τιμή τους είναι ίση με τον μη αρνητικό πραγματικό αριθμό που παριστάνουν. Οι σταθεροί χαρακτήρες, όπως περιγράφονται στην ενότητα 1.1. Έχουν τύπο char και η τιμή τους είναι ίση με το χαρακτήρα που παριστάνουν. Οι σταθερές συμβολοσειρές, όπως περιγράφονται στην ενότητα 1.1. Έχουν τύπο πίνακα αποτελούμενου από n + 1 χαρακτήρες, όπου n είναι ο αριθμός χαρακτήρων που περιέχονται στη συμβολοσειρά. Κάθε τέτοια σταθερά αντιστοιχεί σε ένα σταθερό αντικείμενο τύπου πίνακα, όπου βρίσκονται αποθηκευμένοι με τη σειρά οι χαρακτήρες της συμβολοσειράς. Στο τέλος του πίνακα αποθηκεύεται αυτόματα ο χαρακτήρας \0, σύμφωνα με τη σύμβαση που ακολουθεί η γλώσσα C για τις συμβολοσειρές. Οι σταθερές συμβολοσειρές είναι το μόνο είδος σταθεράς τύπου πίνακα που επιτρέπεται στην Pazcal. Δεν επιτρέπεται να μεταβληθούν τα περιεχόμενά τους κατά το χρόνο εκτέλεσης.

10 Πίνακας : Προτεραιότητα και προσεταιριστικότητα των τελεστών της Pazcal. Τελεστές Περιγραφή Αριθμός τελουμένων Θέση και προσεταιριστικότητα +! not Πρόσημα και λογική άρνηση 1 prefix * / % MOD Πολλαπλασιασμός και διαίρεση infix, αριστερή + Πρόσθεση και αφαίρεση infix, αριστερή > < <= >= Ανισότητα infix, αριστερή ==!= Ισότητα infix, αριστερή && and Λογική σύζευξη infix, αριστερή or Λογική διάζευξη infix, αριστερή Τελεστές Οι τελεστές της Pazcal διακρίνονται σε τελεστές με ένα τελούμενο και τελεστές με δύο τελούμενα. Οι πρώτοι γράφονται πρίν το τελούμενο (prefix), ενώ οι δεύτεροι γράφονται μεταξύ των τελουμένων (infix). Η σειρά αποτίμησης των τελουμένων των τελεστών με δυο τελούμενα δεν καθορίζεται. Όλοι οι τελεστές της Pazcal έχουν ως αποτέλεσμα r-value. Οι τελεστές με ένα τελούμενο + και υλοποιούν τους τελεστές προσήμου. Το τελούμενο πρέπει να είναι αριθμητικού τύπου και το αποτέλεσμα είναι του ίδιου τύπου με το τελούμενο. Οι τελεστές! και not είναι ισοδύναμοι και υλοποιούν τη λογική άρνηση. Το τελούμενό πρέπει να είναι τύπου bool, και τον ίδιο τύπο έχει και το αποτέλεσμα. Οι τελεστές με δύο τελούμενα +,, *, /, % και MOD υλοποιούν κατά σειρά τις αριθμητικές πράξεις της πρόσθεσης, της αφαίρεσης, του πολλαπλασιασμού, της διαίρεσης (ακέραιας ή πραγματικής) και του υπόλοιπου της ακέραιας διαίρεσης. Οι τελεστές % και MOD είναι ισοδύναμοι. Τα τελούμενα όλων των παραπάνω τελεστών πρέπει να είναι εκφράσεις αριθμητικών τύπων. Στην περίπτωση των τελεστών +,, * και /, αν και τα δύο τελούμενα είναι ακέραιου τύπου τότε το αποτέλεσμα είναι τύπου int, διαφορετικά το αποτέλεσμα είναι τύπου REAL. Στην περίπτωση των τελεστών % και MOD, τα τελούμενα πρέπει να είναι ακέραιου τύπου και το αποτέλεσμα είναι τύπου int. Οι τελεστές ==,!=, <, >, <= και >= υλοποιούν τις σχέσεις ισότητας και ανισότητας μεταξύ αριθμών. Τα τελούμενα πρέπει να είναι και τα δύο αριθμητικά και το αποτέλεσμα είναι τύπου bool. Οι τελεστές && και and είναι ισοδύναμοι και υλοποιούν την πράξη της λογικής σύζευξης. Ομοίως, οι τελεστές και or είναι ισοδύναμοι και υλοποιούν την πράξη της λογικής διάζευξης. Τα τελούμενα πρέπει να είναι τύπου bool και τον ίδιο τύπο έχει και το αποτέλεσμα. Η αποτίμηση εκφράσεων που χρησιμοποιούν αυτούς τους τελεστές γίνεται με βραχυκύκλωση (short-circuit). Δηλαδή, αν το αποτέλεσμα της έκφρασης είναι γνωστό από την αποτίμηση και μόνο του πρώτου τελούμενου, το δεύτερο τελούμενο δεν αποτιμάται καθόλου. Στον πίνακα ορίζεται η προτεραιότητα και η προσεταιριστικότητα των τελεστών της Pazcal. 1.. Κλήση συναρτήσεων Αν f είναι το όνομα μιας συνάρτησης με αποτέλεσμα τύπου t, τότε η έκφραση f(e 1,..., e n ) είναι μια r-value με τύπο t. Ο αριθμός των πραγματικών παραμέτρων n πρέπει να συμπίπτει με τον αριθμό των τυπικών παραμέτρων της f. Επίσης, ο τύπος και το είδος κάθε πραγματικής παραμέτρου πρέπει να συμπίπτει με τον τύπο και τον τρόπο περάσματος της αντίστοιχης τυπικής παραμέτρου, σύμφωνα με τους παρακάτω κανόνες. Η έννοια της συμβατότητας για ανάθεση περιγράφεται στην ενότητα 1..

11 Αν η τυπική παράμετρος είναι τύπου t και περνά κατ αξία, τότε ο τύπος t της αντίστοιχης πραγματικής παραμέτρου πρέπει να είναι συμβατός για ανάθεση με τον τύπο t. Η αντιγραφή της τιμής της πραγματικής παραμέτρου στην τυπική παράμετρο γίνεται ακριβώς όπως στην ανάθεση. Αν η τυπική παράμετρος είναι τύπου t και περνά κατ αναφορά, τότε η αντίστοιχη πραγματική παράμετρος πρέπει να είναι l-value τύπου t, όπου: Αν ο τύπος t είναι βασικός τύπος ή πλήρης τύπος πίνακα, τότε πρέπει t = t. Αν ο τύπος t είναι ημιτελής τύπος πίνακα, τότε πρέπει είτε t = t, ή ο τύπος t να είναι πλήρης τύπος πίνακα με τον ίδιο τύπο στοιχείου όπως ο t. Κατά την κλήση μιας συνάρτησης, η σειρά με την οποία αποτιμώνται οι πραγματικές παράμετροι δεν καθορίζεται. 1. Εντολές Οι εντολές που υποστηρίζει η γλώσσα Pazcal είναι οι ακόλουθες: Η κενή εντολή, που δεν κάνει καμία ενέργεια. Η εντολή απλής ανάθεσης l = e, όπου l μια l-value τύπου t και e μια έκφραση τύπου t. Ο τύπος t πρέπει να είναι συμβατός για ανάθεση με τον τύπο t. Αυτή η σχέση συμβατότητας, που πρέπει να τονιστεί ότι δεν είναι συμμετρική, ορίζεται ως εξής: Κάθε βασικός τύπος είναι συμβατός για ανάθεση με τον εαυτό του. Ο τύπος int είναι συμβατός για ανάθεση με τον τύπο REAL. Στην περίπτωση αυτή, οι ακέραιες τιμές μετατρέπονται σε πραγματικές. Ο τύπος char είναι συμβατός για ανάθεση με τον τύπο int. Οι τιμές χαρακτήρων μετατρέπονται σε ακέραιες τιμές στο διάστημα από 0 έως. Ο τύπος int είναι συμβατός για ανάθεση με τον τύπο char. Οι ακέραιες τιμές μετατρέπονται σε τιμές χαρακτήρων κρατώντας μόνο τα λιγότερο σημαντικά bits τους. Η εντολή σύνθετης ανάθεσης l = e, όπου = ένας από τους τελεστές ανάθεσης +=, =, *=, /= και %=, l μια l-value αριθμητικού τύπου e μια έκφραση αριθμητικού τύπου. Η εντολή αυτή έχει ακριβώς την ίδια σημασιολογία, ως προς τον έλεγχο τύπων και ως προς την εκτέλεση, με την εντολή l = l e με τη μόνη διαφορά ότι η l-value l αποτιμάται μόνο μία φορά. Οι εντολές αύξησης l ++ και μείωσης l, που είναι ισοδύναμες με l += 1 και l = 1, αντίστοιχα. Η κλήση μιας διαδικασίας. Συντακτικά και σημασιολογικά συμπίπτει με την κλήση μιας συνάρτησης, με τη διαφορά ότι δεν υπάρχει αποτέλεσμα. Η σύνθετη εντολή, που αποτελείται από μια σειρά έγκυρων τοπικών δηλώσεων (σταθερών ή μεταβλητών) ή εντολών που περικλείονται από τα σύμβολα { και. Οι δηλώσεις και οι εντολές αυτές εκτελούνται διαδοχικά, εκτός αν κάποια από αυτές είναι εντολή άλματος. Η εμβέλεια των δηλώσεων περιορίζεται στο εσωτερικό της σύνθετης εντολής. Η εντολή ελέγχου if ( e ) s 1 else s. Η έκφραση e πρέπει να έχει τύπο bool και τα s 1, s να είναι έγκυρες εντολές. Το τμήμα else είναι προαιρετικό. Η εντολή βρόχου FOR ( i, r ) s. Η μεταβλητή ελέγχου i πρέπει να είναι τύπου int. Η περιοχή r πρέπει να είναι της μορφής: lower TO upper upper DOWNTO lower

12 lower TO upper STEP step upper DOWNTO lower STEP step όπου lower, upper και step είναι ακέραιες εκφράσεις. Αν παραλείπεται το STEP, εννοείται 1. Σε κάθε περίπτωση, τα όρια lower και upper καθώς και το βήμα step αποτιμώνται μία φορά (με σειρά που δεν καθορίζεται) πριν την εκτέλεση του βρόχου. Η τιμή του step πρέπει να είναι θετική. Η εκτέλεση του βρόχου FOR γίνεται ως εξής. Η μεταβλητή ελέγχου παίρνει την αρχική τιμή, δηλαδή lower σε περίπτωση περιοχής TO ή upper σε περίπτωση περιοχής DOWNTO. Αν η τιμή της μεταβλητής ελέγχου i είναι εντός ορίων (δηλαδή i upper σε περίπτωση περιοχής TO ή i lower σε περίπτωση περιοχής DOWNTO), τότε εκτελείται το σώμα του βρόχου. Στη συνέχεια η μεταβλητή ελέγχου παίρνει την επόμενη τιμή και ο βρόχος επαναλαμβάνεται με τον έλεγχο ορίων. Η επόμενη τιμή είναι ίση με την προηγούμενη τιμή συν την τιμή του βήματος σε περίπτωση περιοχής TO ή με την προηγούμενη τιμή μείον την τιμή του βήματος σε περίπτωση περιοχής DOWNTO. Για τον υπολογισμό της επόμενης τιμής της μεταβλητής ελέγχου δε λαμβάνεται υπόψη η τιμή της στο τέλος της προηγούμενης επανάληψης αλλά εκείνη στην αρχή της προηγούμενης επανάληψης. Αυτό είναι σημαντικό στην περίπτωση που η τιμή της μεταβλητής ελέγχου αλλάξει κατά την εκτέλεση του σώματος του βρόχου. Το παρακάτω παράδειγμα FOR (i, 1 TO ) { WRITELN(i); i += 0; WRITELN(i); 0 1 θα εκτυπώσει κατά σειρά τις τιμές 1, 1,,,,,...,, 0. Μετά την εκτέλεση του βρόχου, η τιμή της μεταβλητής ελέγχου δεν καθορίζεται. Οι εντολές βρόχων while ( e ) s και do s while ( e ) με την ίδια σημασιολογία όπως στη C. Η έκφραση e πρέπει να έχει τύπο bool και το s να είναι έγκυρη εντολή. Η εντολή switch ( e ) {..., με την ίδια σημασιολογία όπως στη C. Η έκφραση e και οι σταθερές που εμφανίζονται μετά τα case πρέπει να είναι ακέραιου τύπου. Κάθε σκέλος του switch τελειώνει με μία από τις λέξεις κλειδιά break ή NEXT. Η πρώτη διακόπτει την εκτέλεση του switch (όπως στη C) ενώ η δεύτερη συνεχίζει την εκτέλεση και στο επόμενο σκέλος (όπως η απουσία του break στη C). Η εντολή άλματος break, η οποία προκαλεί την άμεση έξοδο από τον εσωτερικότερο βρόχο FOR, while ή do...while. Η εντολή άλματος break δεν πρέπει να είναι φωλιασμένη σε σκέλος εντολής switch εσωτερικότερης της εντολής βρόχου στην οποία αντιστοιχεί, π.χ. 0 1 switch (x) { case 1: while (true) if (something()) break; break; while (true) { switch (x) { case 1: if (something()) break; break; // OK --- break the loop // exit the switch // WRONG --- break nested in switch!

13 Η εντολή άλματος continue, η οποία προκαλεί την άμεση μετακίνηση στην επόμενη επανάληψη του εσωτερικότερου βρόχου FOR, while ή do...while. Η εντολή return, που επιστρέφει τερματίζοντας την εκτέλεση της τρέχουσας ρουτίνας. Αν η ρουτίνα είναι συνάρτηση, η εντολή αυτή συνοδεύεται από μία έκφραση, η τιμή της οποίας θα επιστραφεί ως αποτέλεσμα της συνάρτησης. Οι εντολές εκτύπωσης WRITE, WRITELN, WRITESP και WRITESPLN. Η σύνταξή τους μοίαζει με κλήση διαδικασίας, όμως μπορούν να έχουν οσεσδήποτε πολλές παραμέτρους. Κάθε παράμετρος πρέπει να είναι βασικού τύπου ή τύπου πίνακα χαρακτήρων. Στη θέση οπιασδήποτε παραμέτρου των εντολών εκτύπωσης μπορούν να χρησιμοποιηθούν οι ειδικές μορφές FORM(x,w) και FORM(x,w,d) που αντιστοιχούν στα x:w και x:w:d της Pascal. Το w είναι μία έκφραση τύπου int που παριστάνει το εύρος του πεδίου (δηλαδή το ελάχιστο πλήθος χαρακτήρων που θα εκτυπωθούν, οι υπόλοιποι θα συμπληρωθούν από αριστερά με κενά διαστήματα). Το d είναι μία έκφραση τύπου int που παριστάνει το πλήθος των δεκαδικών ψηφίων που θα χρησιμοποιηθούν αν ορίζεται, τότε ο τύπος του x πρέπει να είναι REAL. Η εντολή WRITE εκτυπώνει τις τιμές των παραμέτρων τη μία μετά την άλλη, χωρίς διαχωριστικό. Η εντολή WRITELN κάνει ό,τι η WRITE αλλά στο τέλος αλλάζει γραμμή. Η εντολή WRITESP κάνει ό,τι η WRITE αλλά εκτυπώνει ένα κενό διάστημα μεταξύ των τιμών των παραμέτρων της, ανά δύο. Τέλος, η εντολή WRITESPLN κάνει ό,τι η WRITESP αλλά στο τέλος αλλάζει γραμμή. 1. Προκαθορισμένες ρουτίνες Η Pazcal υποστηρίζει ένα σύνολο προκαθορισμένων ρουτίνων, οι οποίες βρίσκονται στη διάθεση του προγραμματιστή. Οι ρουτίνες αυτές είναι ορατές σε κάθε δομική μονάδα, εκτός αν επισκιάζονται από μεταβλητές, παραμέτρους ή άλλες ρουτίνες με το ίδιο όνομα. Παρακάτω δίνονται οι επικεφαλίδες τους, όπως θα γράφονταν αν τις ορίζαμε σε Pazcal. Επίσης, εξηγείται η λειτουργία τους Είσοδος και έξοδος PROC putchar (char c); PROC puts (char s[]); PROC WRITE_INT (int n, int w); PROC WRITE_BOOL (bool b, int w); PROC WRITE_CHAR (char c, int w); PROC WRITE_REAL (REAL r, int w, int d); PROC WRITE_STRING (char s[], int w); Οι διαδικασίες putchar και puts έχουν την ίδια σημασιολογία όπως στη C. Οι υπόλοιπες διαδικασίες μπορούν να χρησιμοποιηθούν στο μεταγλωττιστή σας για την υλοποίηση των εντολών εκτύπωσης. Οι παράμετροι w και d έχουν την ίδια σημασία όπως στις ειδικές μορφές FORM. FUNC int READ_INT (); FUNC bool READ_BOOL (); FUNC int getchar (); FUNC REAL READ_REAL (); PROC READ_STRING (int size, char s[]); Αντίστοιχα, τα παραπάνω υποπρογράμματα χρησιμοποιούνται για την εισαγωγή τιμών που ανήκουν στους βασικούς τύπους της Pazcal και για την εισαγωγή συμβολοσειρών. Η διαδικασία READ_STRING χρησιμοποιείται για την ανάγνωση μιας συμβολοσειράς μέχρι τον επόμενο χαρακτήρα αλλαγής γραμμής. Οι παράμετροι της καθορίζουν το μέγιστο αριθμό χαρακτήρων (συμπεριλαμβανομένου του τελικού \0 ) που επιτρέπεται να διαβαστούν και τον πίνακα χαρακτήρων στον οποίο αυτοί θα τοποθετηθούν. Ο χαρακτήρας αλλαγής γραμμής δεν αποθηκεύεται. Αν το μέγεθος του πίνακα εξαντληθεί πριν συναντηθεί χαρακτήρας αλλαγής γραμμής, η ανάγνωση θα συνεχιστεί αργότερα από το σημείο όπου διακόπηκε. Η συνάρτηση getchar έχει την ίδια σημασιολογία όπως στη C. 1

14 Μαθηματικές συναρτήσεις FUNC int abs (int n); FUNC REAL fabs (REAL r); Η απόλυτη τιμή ενός ακέραιου ή πραγματικού αριθμού. FUNC REAL sqrt (REAL r); FUNC REAL sin (REAL r); FUNC REAL cos (REAL r); FUNC REAL tan (REAL r); FUNC REAL arctan (REAL r); FUNC REAL exp (REAL r); FUNC REAL ln (REAL r); FUNC REAL pi (); Βασικές μαθηματικές συναρτήσεις: τετραγωνική ρίζα, τριγωνομετρικές συναρτήσεις, εκθετική συνάρτηση, φυσικός λογάριθμος, ο αριθμός π. 1.. Συναρτήσεις μετατροπής FUNC REAL trunc (REAL r); FUNC REAL round (REAL r); FUNC INT TRUNC (REAL r); FUNC INT ROUND (REAL r); Η trunc επιστρέφει τον πλησιέστερο ακέραιο αριθμό, η απόλυτη τιμή του οποίου είναι μικρότερη από την απόλυτη τιμή του r. Η round επιστρέφει τον πλησιέστερο ακέραιο αριθμό. Σε περίπτωση αμφιβολίας, προτιμάται ο αριθμός με τη μεγαλύτερη απόλυτη τιμή. Οι αντίστοιχες συναρτήσεις με κεφαλαία επιστρέφουν ακέραιο αριθμό αντί πραγματικού. 1.. Συναρτήσεις διαχείρισης συμβολοσειρών FUNC int strlen (char s[]); FUNC int strcmp (char s1[], char s[]); PROC strcpy (char trg[], char src[]); PROC strcat (char trg[], char src[]); Οι συναρτήσεις αυτές έχουν ακριβώς την ίδια λειτουργία με τις συνώνυμές τους στη βιβλιοθήκη συναρτήσεων της γλώσσας C. 1

15 Πλήρης γραμματική της Pazcal Η σύνταξη της γλώσσας Pazcal δίνεται παρακάτω σε μορφή EBNF. Η γραμματική που ακολουθεί είναι διφορούμενη, οι αμφισημίες όμως μπορούν να ξεπερασθούν αν λάβει κανείς υπόψη τους κανόνες προτεραιότητας και προσεταιριστικότητας των τελεστών, όπως περιγράφονται στον πίνακα. Τα σύμβολα id, int-const, float-const, char-const και string-literal είναι τερματικά σύμβολα της γραμματικής και αντιστοιχούν στις λεκτικές μονάδες που περιγράφονται στη ενότητα module ::= ( declaration ) declaration ::= const_def var_def routine program const_def ::= const type id = const_expr (, id = const_expr ) ; var_def ::= type var_init (, var_init ) ; var_init ::= id [ = expr ] id ( [ const_expr ] ) + routine_header ::= ( PROC FUNC type ) id ( [ type formal (, type formal ) ] ) formal ::= [ & ] id id [ [ const_expr ] ] ( [ const_expr ] ) routine ::= routine_header ( ; block ) program_header ::= PROGRAM id ( ) program ::= program_header block type ::= int bool char REAL const_expr ::= expr expr ::= int-const float-const char-const string-literal true false ( expr ) l_value call unop expr expr binop expr l_value ::= id ( [ expr ] ) unop ::= + -! not binop ::= + - * / % MOD ==!= < > <= >= && and or call ::= id ( [ expr (, expr ) ] ) block ::= { ( local_def stmt ) local_def ::= const_def var_def stmt ::= ; l_value assign expr ; l_value ( ) ; call ; if ( expr ) stmt [ else stmt ] while ( expr ) stmt FOR ( id, range ) stmt do stmt while ( expr ) ; switch ( expr ) { ( ( case const_expr : ) + clause ) [ default : clause ] break ; continue ; return [ expr ] ; block write ( [ format (, format ) ] ) ; assign ::= = += -= *= /= %= range ::= expr ( TO DOWNTO ) expr [ STEP expr ] clause ::= ( stmt ) ( break ; NEXT ; ) write ::= WRITE WRITELN WRITESP WRITESPLN format ::= expr FORM ( expr, expr [, expr ] )

16 left middle right Σχήμα 1: Οι πύργοι του Hanoi. Παραδείγματα Στην παράγραφο αυτή δίνονται πέντε παραδείγματα προγραμμάτων στη γλώσσα Pazcal, η πολυπλοκότητα των οποίων κυμαίνεται σημαντικά. Για κάποια από αυτά τα παραδείγματα (ή για παρόμοια προγράμματα), μπορείτε να βρείτε τον αρχικό, τον ενδιάμεσο κώδικα (χωρίς βελτιστοποίηση), τη μορφή των εγγραφημάτων δραστηριοποίησης των δομικών μονάδων, καθώς και τον τελικό κώδικα σε αντίστοιχα φυλλάδια περιγραφής γλωσσών που δόθηκαν ως θέματα εργασίας στο ίδιο μάθημα σε προηγούμενα έτη, μέσω της ιστοσελίδας του μαθήματος, ή στο Moodle..1 Πες γειά! Το παρακάτω παράδειγμα είναι το απλούστερο πρόγραμμα στη γλώσσα Pazcal που παράγει κάποιο αποτέλεσμα ορατό στο χρήστη. Το πρόγραμμα αυτό τυπώνει απλώς ένα μήνυμα. 1 PROGRAM hello () { WRITELN( Hello world! );. Οι πύργοι του Hanoi Το πρόγραμμα που ακολουθεί λύνει το πρόβλημα των πύργων του Hanoi. Μια σύντομη περιγραφή του προβλήματος δίνεται παρακάτω. Υπάρχουν τρεις στύλοι, στον πρώτο από τους οποίους είναι περασμένοι n το πλήθος δακτύλιοι. Οι εξωτερικές διάμετροι των δακτυλίων είναι διαφορετικές και αυτοί είναι περασμένοι από κάτω προς τα πάνω σε φθίνουσα σειρά εξωτερικής διαμέτρου, όπως φαίνεται στο σχήμα 1. Ζητείται να μεταφερθούν οι δακτύλιοι από τον πρώτο στον τρίτο στύλο (χρησιμοποιώντας το δεύτερο ως βοηθητικό χώρο), ακολουθώντας όμως τους εξής κανόνες: Κάθε φορά επιτρέπεται να μεταφερθεί ένας μόνο δακτύλιος, από κάποιο στύλο σε κάποιον άλλο στύλο. Απαγορεύεται να τοποθετηθεί δακτύλιος με μεγαλύτερη διάμετρο πάνω από δακτύλιο με μικρότερη διάμετρο. Το πρόγραμμα στη γλώσσα Pazcal που λύνει αυτό το πρόβλημα δίνεται παρακάτω. Η συνάρτηση hanoi είναι αναδρομική. 1

17 PROC hanoi (char source[], char target[], char auxiliary[], int rings) { if (rings > 0) { hanoi(source, auxiliary, target, rings-1); WRITESPLN( Move from, source, to, target); hanoi(auxiliary, target, source, rings-1); PROGRAM solve () { WRITE( Please, give the number of rings: ); int numberofrings = READ_INT(); WRITELN( \nhere is the solution:\n ); hanoi( left, right, middle, numberofrings);. Πρώτοι αριθμοί Το παρακάτω παράδειγμα προγράμματος στη γλώσσα Pazcal είναι ένα πρόγραμμα που υπολογίζει τους πρώτους αριθμούς μεταξύ 1 και n, όπου το n καθορίζεται από το χρήστη. Το πρόγραμμα αυτό χρησιμοποιεί έναν απλό αλγόριθμο για τον υπολογισμό των πρώτων αριθμών. Μια διατύπωση αυτού του αλγορίθμου σε ψευδογλώσσα δίνεται παρακάτω. Λαμβάνεται υπόψη ότι οι αριθμοί και είναι πρώτοι, και στη συνέχεια εξετάζονται μόνο οι αριθμοί της μορφής k ± 1, όπου k φυσικός αριθμός. Κύριο πρόγραμμα τύπωσε τους αριθμούς και t := όσο t n κάνε τα εξής: αν ο αριθμός t 1 είναι πρώτος τότε τύπωσέ τον αν ο αριθμός t + 1 είναι πρώτος τότε τύπωσέ τον t := t + Αλγόριθμος ελέγχου (είναι ο αριθμός t πρώτος;) αν t < 0 τότε έλεγξε τον αριθμό t αν t < τότε ο t δεν είναι πρώτος αν t = τότε ο t είναι πρώτος αν ο t διαιρείται με το τότε ο t δεν είναι πρώτος i := όσο i t/ κάνε τα εξής: αν ο t διαιρείται με τον i τότε ο t δεν είναι πρώτος i := i + o t είναι πρώτος Το αντίστοιχο πρόγραμμα σε γλώσσα Pazcal είναι το εξής: 1 FUNC bool prime (int n) { if (n < 0) else if (n < ) else if (n == ) else if (n MOD == 0) else { int i; return prime(-n); return false; return true; return false; 1

18 1 FOR (i, TO n / STEP ) if (n MOD i == 0) return false; return true; PROGRAM primes () { WRITE( Please, give the upper limit: ); int limit = READ_INT(); WRITESPLN( Prime numbers between 0 and, limit); WRITELN(); int counter = 0; if (limit >= ) { WRITELN(); counter++; if (limit >= ) { WRITELN(); counter++; int number; FOR (number, TO limit STEP ) { if (prime(number-1)) { WRITELN(number-1); counter++; if (number!= limit and prime(number+1)) { WRITELN(number+1); counter++; WRITELN(); WRITESPLN(counter, prime number(s) were found. );. Ταξινόμηση με τη μέθοδο της φυσαλίδας Ο αλγόριθμος της φυσαλίδας (bubble sort) είναι ένας από τους πιο γνωστούς και απλούς αλγορίθμους ταξινόμησης. Το παρακάτω πρόγραμμα σε Pazcal ταξινομεί έναν πίνακα ακεραίων αριθμών κατ αύξουσα σειρά, χρησιμοποιώντας μια παραλλαγή αυτού του αλγορίθμου. Αν x είναι ο πίνακας που πρέπει να ταξινομηθεί και n είναι το μέγεθός του (θεωρούμε σύμφωνα με τη σύμβαση της Pazcal ότι τα στοιχεία του είναι τα x[0], x[1],..., x[n 1]), ο αλγόριθμος περιγράφεται με ψευδοκώδικα ως εξής: Αλγόριθμος της φυσαλίδας (bubble sort) επανάλαβε το εξής: για i από 0 ως n αν x[i] > x[i + 1] αντίστρεψε τα x[i] και x[i + 1] όσο μεταβάλλεται η σειρά των στοιχείων του x Το αντίστοιχο πρόγραμμα σε γλώσσα Pazcal είναι το εξής: PROC swap (int &x, int &y) { int t = x; x = y; y = t; PROC bsort (int n, int x[]) { bool changed = true; while (changed) { changed = false; int i; FOR (i, 0 TO n-) if (x[i] > x[i+1]) { swap(x[i], x[i+1]); changed = true; 1

19 PROC print (char msg[], int n, int x[]) { WRITE(msg); int i; FOR (i, 0 TO n-1) { if (i > 0) WRITE(, ); WRITE(x[i]); WRITELN(); PROGRAM bubbles () { int seed = ; int i, x[1]; FOR (i, 0 TO ) { seed = (seed * i) MOD 1; x[i] = seed; print( Initial array:, 1, x); bsort(1, x); print( Sorted array:, 1, x);. Μέση τιμή τυχαίας μεταβλητής Το πρόγραμμα που ακολουθεί υπολογίζει τη μέση τιμή μιας ακέραιας τυχαίας μεταβλητής, που μεταβάλλεται ομοιόμορφα στο διάστημα από 0 έως n 1. Η τιμή του n καθορίζεται από το χρήστη, όπως και το πλήθος k των δειγμάτων που χρησιμοποιούνται για τον υπολογισμό. 1 1 PROGRAM mean () { WRITE( Give n: ); int n = READ_INT(); WRITE( Give k: ); int k = READ_INT(); int i, seed = ; REAL sum = 0.0; FOR (i, 0 TO k-1) { seed = (seed * i) MOD n; sum += seed; 1 1 if (k > 0) WRITESPLN( Mean:, sum / k); Από την εκτέλεση του προγράμματος διαπιστώνει κανείς ότι η μέση τιμή που εκτυπώνεται διαφέρει σημαντικά από τη θεωρητική μέση τιμή (n 1)/, που θα έπρεπε να προκύπτει όταν το k γίνει αρκετά μεγάλο. Αυτό οφείλεται στον απλοϊκό αλγόριθμο που έχει χρησιμοποιηθεί για τη γέννηση ψευδοτυχαίων αριθμών, λόγω του οποίου η μεταβλητή απέχει αρκετά από το να είναι τυχαία. 1

20 Οδηγίες για την παράδοση Ο τελικός μεταγλωττιστής πρέπει να μπορεί να εξάγει κατά βούληση ενδιάμεσο και τελικό κώδικα. Εφόσον δεν έχουν καθορισθεί οι παράμετροι λειτουργίας f ή i, που εξηγούνται παρακάτω, ο μεταγλωττιστής θα δέχεται το πηγαίο πρόγραμμα από ένα αρχείο με οποιαδήποτε κατάληξη (πχ. *.pzc) που θα δίνεται ως το μοναδικό του όρισμα. Ο ενδιάμεσος κώδικας θα τοποθετείται σε αρχείο με κατάληξη *.imm και ο τελικός σε αρχείο με κατάληξη *.asm. Τα αρχεία αυτά θα βρίσκονται στον ίδιο κατάλογο και θα έχουν το ίδιο κυρίως όνομα. Π.χ. από το πηγαίο αρχείο /tmp/hello.pzc θα παράγονται τα /tmp/hello.imm και /tmp/hello.asm. To εκτελέσιμο του τελικού μεταγλωττιστή θα πρέπει να δέχεται τις παρακάτω παραμέτρους: O σημαία βελτιστοποίησης. f πρόγραμμα στο standard input, έξοδος τελικού κώδικα στο standard output. i πρόγραμμα στο standard input, έξοδος ενδιάμεσου κώδικα στο standard output. Επίσης, η τιμή που θα επιστρέφεται στο λειτουργικό σύστημα από το μεταγλωττιστή θα πρέπει να είναι μηδενική στην περίπτωση επιτυχούς μεταγλώττισης και μη μηδενική σε αντίθετη περίπτωση. Για την εύκολη ανάπτυξη του μεταγλωττιστή προτείνεται η χρήση ενός αρχείου Makefile με τα εξής (τουλάχιστον) χαρακτηριστικά: Με απλό make, θα δημιουργεί το εκτελέσιμο του τελικού μεταγλωττιστή. Με makeclean, θα σβήνει όλα ανεξαιρέτως τα αρχεία που παράγονται αυτόματα (π.χ. αυτά που παράγουν bison και flex, τα object files και το τελικό εκτελέσιμο). Ένα παράδειγμα ενός τέτοιου Μakefile, υποθέτοντας ότι γλώσσα υλοποίησης είναι η C και γίνεται χρήση των εργαλείων flex και bison, είναι το παρακάτω. CC=gcc CFLAGS=-Wall compiler: compiler.lex.o compiler.tab.o symbol.o symbolc.o $(CC) $(CFLAGS) -o compiler compiler.lex.o compiler.tab.o \ symbol.o symbolc.o compiler.lex.c: compiler.l compiler.tab.h flex -it compiler.l > compiler.lex.c compiler.tab.c compiler.tab.h: compiler.y bison -dv compiler.y clean: $(RM) *.o compiler.tab.c compiler.tab.h compiler.lex.c \ compiler core Η μορφή εμφάνισης των τετράδων και του τελικού κώδικα θα πρέπει να είναι αυτή που προτείνεται στο βιβλίο και στις διαλέξεις. Επίσης να ληφθούν υπόψη οι παρακάτω οδηγίες: Ενδιάμεσος κώδικας: να υιοθετηθεί μορφοποίηση ισοδύναμη με printf( %d: %s, %s, %s, %s\n,...) Τελικός κώδικας: προσοχή να δοθεί στη στηλοθέτηση (indentation). Να ακολουθηθεί το παρακάτω υπόδειγμα: ετικέττα: <tab> εντολή <tab> όρισμα-1, όρισμα- <tab> εντολή <tab> όρισμα-1, όρισμα- 0

Μεταγλωττιστές 2019 Θέμα εργασίας

Μεταγλωττιστές 2019 Θέμα εργασίας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας ( ) https://courses.softlab.ntua.gr/compilers/

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

Μεταγλωττιστές 2017 Θέμα εργασίας

Μεταγλωττιστές 2017 Θέμα εργασίας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 2017 Θέμα εργασίας (1932

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

Μεταγλωττιστές 2018 Θέμα εργασίας

Μεταγλωττιστές 2018 Θέμα εργασίας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας (1 ) https://courses.softlab.ntua.gr/compilers/

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

Μεταγλωττιστές 2015 Θέμα εργασίας. Η γλώσσα Tony. Sir Charles Antony (Tony) Richard Hoare (1934 ) Prof. Emeritus, Oxford University.

Μεταγλωττιστές 2015 Θέμα εργασίας. Η γλώσσα Tony. Sir Charles Antony (Tony) Richard Hoare (1934 ) Prof. Emeritus, Oxford University. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 01 Θέμα εργασίας Η γλώσσα

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

Η γλώσσα Edsger. Μεταγλωττιστές 2016 Θέμα εργασίας

Η γλώσσα Edsger. Μεταγλωττιστές 2016 Θέμα εργασίας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 2016 Θέμα εργασίας Η γλώσσα

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

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

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

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

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

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

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

Η γλώσσα Llama Μεταγλωττιστές

Η γλώσσα Llama Μεταγλωττιστές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας Η γλώσσα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin ΕΘΝΙΚΟ & ΚΑΠΟ ΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΘΠ06 Μεταγλωττιστές Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin ιδάσκων: Μανόλης Κουµπαράκης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

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

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

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

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

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

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

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

! Δεν μπορούν να λυθούν όλα τα προβλήματα κάνοντας χρήση του παρ/λου προγ/σμου ΑΡΧΗ ΝΑΙ Διάβα σε a Εκτύπ ωσε a > a 0 ΟΧΙ ΤΕΛΟΣ Σύμβολα διαγράμματος ροής 1 Ακέραιος τύπος 14 0-67 2 Πραγματικός τύπος

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

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

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

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

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ Το αναλυτικό πρόγραμμα στο οποίο βασίζεται η εξέταση είναι το αναλυτικό πρόγραμμα του Μαθήματος Κατεύθυνσης Πληροφορική Επιστήμη Η.Υ της Γ Ενιαίου Λυκείου Γενικός Σκοπός Το μάθημα κατεύθυνσης της στη Γ'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προχωρημένες έννοιες προγραμματισμού σε C

Προχωρημένες έννοιες προγραμματισμού σε C Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

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

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

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

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

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

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

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

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

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

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

Βασικές έννοιες προγραμματισμού

Βασικές έννοιες προγραμματισμού Βασικές έννοιες προγραμματισμού Αλφάβητο Γράμματα Κεφαλαία Ελληνικά ( Α Ω ) Πεζά Ελληνικά ( α ω ) Κεφαλαία Λατινικά ( A Z ) Πεζά Ελληνικά ( a z) Ψηφία 0-9 Ειδικοί χαρακτήρες ( +, -, *,/, =,.,,!, κενό )

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δεύτερη Διάλεξη Βασικά στοιχεία της γλώσσας προγραμματισμού C Μία γλώσσα προγραμματισμού όπως και μια ανθρώπινη γλώσσα μπορεί να μελετηθεί ως προς το αλφάβητό της,

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 7: Δομές Επανάληψης - Αναγνωσιμότητα 19/10/2015 Επανάληψη εκτέλεσης: while 2 while () lexpr true false body Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

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

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

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

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

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

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

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

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΜΑΗΣ 2007 - ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ ΟΔΗΓΙΕΣ: ΝΑ ΑΠΑΝΤΗΣΕΤΕ ΣΕ ΟΛΕΣ ΤΙΣ ΕΡΩΤΗΣΕΙΣ. Το εξεταστικό δοκίμιο αποτελείται από δύο Ενότητες Α και Β. ΕΝΟΤΗΤΑ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ορθή απάντηση

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

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

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

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

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

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

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

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java 1 ο & 2 o ΕΠΙΠΕΔΟ Αναλυτικό Πρόγραμμα Εξετάσεων Σελίδα: 1/20 Απρίλιος 2011 Γλωσσών Προγραμματισμού

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln,

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

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

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

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

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

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

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

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

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

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

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

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

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

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

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές Μεταβλητές 2 Δήλωση μεταβλητών Η δήλωση (declaration) πληροφορεί το μεταγλωττιστή για το όνομα και

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα: ΠΛΗΡΟΦΟΡΙΚΗ Ημερομηνία και ώρα εξέτασης: Τρίτη, 6 Ιουνίου 2006 07:30 10:30

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

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) 133 244 355 a= b= c= 3 read(d,e) 166 277 3888 ΕΡΩΤΗΣΕΙΣ 1. Να αναφέρετε μερικά από τα ιδιαίτερα χαρακτηριστικά της Pascal. 2. Ποιο είναι το αλφάβητο της Pascal; 3. Ποια είναι τα ονόματα-ταυτότητες και σε τι χρησιμεύουν; 4. Σε τι χρησιμεύει το συντακτικό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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