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

Σχετικά έγγραφα
Η γλώσσα προγραμματισμού EEL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Pascal. 26 Οκτωβρίου 2011

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

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

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

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

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

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

Συναρτήσεις. Υποπρόγραμμα

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

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

Δομημένος Προγραμματισμός

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

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

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

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

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

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

Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Ημερομηνία: Πέμπτη 12 Απριλίου 2018 Διάρκεια Εξέτασης: 3 ώρες ΕΚΦΩΝΗΣΕΙΣ

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

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

for for for for( . */

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

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

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

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

Δομές Επανάληψης. Εισαγωγή στη C++

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

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

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

Δομές ελέγχου ροής προγράμματος

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

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

α. Οι συμβολοσειρές είναι μια ακολουθία από χαρακτήρες. Μια συμβολοσειρά μπορεί να αποτελείται από περισσότερες από μία λέξεις.

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

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

3 Αλληλεπίδραση Αντικειμένων

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Πληροφορική 2. Αλγόριθμοι

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

Λογισµικό (Software SW) Γλώσσες

Μονάδες 4. β. x=20 και y=10

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

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

Περιεχόμενα. Πρόλογος... 21

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

Ευφυής Προγραμματισμός

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

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

Τεχνικός Εφαρμογών Πληροφορικής

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Transcript:

Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει πλούσια στοιχεία και η κατασκευή του μεταγλωττιστή της έχει να παρουσιάσει αρκετό ενδιαφέρον, αφού περιέχονται σε αυτήν πολλές εντολές που χρησιμοποιούνται από άλλες γλώσσες, καθώς και κάποιες πρωτότυπες. Η Strange περιέχει συναρτήσεις και διαδικασίες, μετάδοση παραμέτρων με αναφορά, τιμή και αντιγραφή, αναδρομικές κλήσεις, κλπ. Επίσης, επιτρέπει φώλιασμα στη δήλωση συναρτήσεων και διαδικασιών κάτι που λίγες γλώσσες υποστηρίζουν (το υποστηρίζει η Pascal, δεν το υποστηρίζει η C). Το όνομά της οφείλεται στο γεγονός ότι περιέχει και κάποιες δομές τις οποίες δε θα έβρισκε κανείς σε κάποια πραγματική γλώσσα προγραμματισμού, αφού δεν είναι τόσο χρήσιμες, αλλά έχουν εκπαιδευτική αξία, γι αυτό και τις συμπεριέλαβε. Από την άλλη όμως πλευρά, η Strange δεν υποστηρίζει βασικά προγραμματιστικά εργαλεία όπως η δομή for καθώς και πραγματικούς αριθμούς, συμβολοσειρές και πίνακες. Οι παραλήψεις αυτές έχουν γίνει ώστε να απλουστευτεί η διαδικασία κατασκευής του μεταγλωττιστή, μία απλούστευση όμως που έχει να κάνει μόνο με τη μείωση των γραμμών του κώδικα και όχι με τη δυσκολία κατασκευής του, αφού οι δομές που υποστηρίζει είναι αυτές που παρουσιάζουν περισσότερο ενδιαφέρον όσον αφορά την υλοποίηση, ενώ η διάκριση ανάμεσα σε πραγματικούς και ακεραίους αριθμούς δεν έχει να προσφέρει κάτι εκπαιδευτικά. Λεκτικές μονάδες Το αλφάβητο της Strange αποτελείται από τα μικρά και κεφαλαία γράμματα της λατινικής αλφαβήτου («Α»,,«Ζ» και «a»,,«z»), τα αριθμητικά ψηφία («0»,,«9»), τα σύμβολα των αριθμητικών πράξεων («+», «-», «*», «/»), τους τελεστές συσχέτισης («<», «>», «=», «<=», «<=», «<>», το σύμβολο ανάθεσης «:=», τους διαχωριστές («;», «,») καθώς και τα σύμβολα ομαδοποίησης (,,«(»,«)»,«[»,«]») και διαχωρισμού σχολίων («/*»,«*/»). Μερικές λέξεις είναι δεσμευμένες: and declare do else enddeclare exit procedure function print incase if in inout not forcase program or return while copy when call 1

Οι λέξεις αυτές δε μπορούν να χρησιμοποιηθούν ως μεταβλητές. Οι σταθερές της γλώσσας είναι ακέραιες σταθερές που αποτελούνται από προαιρετικό πρόσημο και από μία ακολουθία αριθμητικών ψηφίων. Τα αναγνωριστικά της γλώσσας είναι συμβολοσειρές που αποτελούνται από γράμματα και ψηφία, αρχίζοντας όμως από γράμμα. Ο μεταγλωττιστής λαμβάνει υπόψη του μόνο τα τριάντα πρώτα γράμματα. Οι λευκοί χαρακτήρες (tab, space, return) αγνοούνται και μπορούν να χρησιμοποιηθούν με οποιονδήποτε τρόπο χωρίς να επηρεάζεται η λειτουργία του μεταγλωττιστή, αρκεί βέβαια να μη βρίσκονται μέσα σε δεσμευμένες λέξεις, αναγνωριστικά, σταθερές, ή άλλες δεσμευμένες λέξεις. Το ίδιο ισχύει και για τα σχόλια, τα οποία πρέπει να βρίσκονται ανάμεσα στα σύμβολα /* και */. Τύποι και δηλώσεις μεταβλητών Ο μοναδικός τύπος δεδομένων που υποστηρίζει η Strange είναι οι ακέραιοι αριθμοί. Οι ακέραιοι αριθμοί πρέπει να έχουν τιμές από 32768 έως 32767. Η δήλωση γίνεται με την εντολή declare. Ακολουθούν τα ονόματα των αναγνωριστικών χωρίς καμία άλλη δήλωση, αφού γνωρίζουμε ότι πρόκειται για ακέραιες μεταβλητές. Οι μεταβλητές χωρίζονται μεταξύ τους με κόμματα. Το τέλος της δήλωσης των μεταβλητών γίνεται με την εντολή enddeclare. Τελεστές και εκφράσεις Η προτεραιότητα των τελεστών από τη μεγαλύτερη στη μικρότερη είναι: (1) Μοναδικοί «not» (2) Πολλαπλασιαστικοί «*», «/» (3) Μοναδικοί προσθετικοί «+», «-» (4) Δυαδικοί προσθετικοί «+», «-» (5) Σχεσιακοί «=», «<», «>», «<>», «<=», «>=» (6) Λογικοί «and», «or» Εντολές Οι περιγραφές των εντολών είναι ενδεικτικές. Η ακριβής σύνταξή τους ορίζεται από τη γραμματική της γλώσσας που συνοδεύει την εκφώνηση. Εκχώρησης Id := expression Χρησιμοποιείται για την ανάθεση της τιμής μίας μεταβλητής ή μίας σταθεράς, ή μίας έκφρασης σε μία μεταβλητή. 2

Απόφασης if (condition) [ else ] Η εντολή απόφασης εκτιμάει εάν ισχύει η συνθήκη condition και εάν πράγματι ισχύει εκτελούνται οι εντολές που ακολουθούν. Το else δεν αποτελεί υποχρεωτικό τμήμα της εντολής και γι αυτό βρίσκεται σε αγκύλη. Οι εντολές που το ακολουθούν εκτελούνται εάν η συνθήκη condition δεν ισχύει. Τα άγκιστρα δεν είναι υποχρεωτικά, όταν έχουμε μόνο μία εντολή. Επανάληψης: do-while do while (condition) Η εντολή επανάληψης do-while εκτελεί τις εντολές που βρίσκονται ανάμεσα στα άγκιστρα και τις επαναλαμβάνει έως ότου η συνθήκη condition δεν ισχύει ή εκτελεστεί η εντολή exit. Με την εντολή exit η εκτέλεση μεταφέρεται έξω από το βρόχο. Επανάληψης: while while (condition) Η εντολή επανάληψης while εκτελεί τις εντολές που βρίσκονται ανάμεσα στα άγκιστρα και τις επαναλαμβάνει έως ότου η συνθήκη condition δεν ισχύει ή εκτελεστεί η εντολή exit. Με την εντολή exit η εκτέλεση μεταφέρεται έξω από το βρόχο. Επανάληψης: forcase forcase ( when (condition) )* Ξεκινώντας από την αρχή ελέγχονται διαδοχικά οι συνθήκες condition των μελών μέχρι να βρεθεί ότι κάποια συνθήκη ισχύει. Τότε εκτελούνται οι εντολές μέσα στα άγκιστρα για εκείνο 3

το μέλος και στη συνέχεια ο έλεγχος μεταφέρεται στην αρχή του forcase. Δηλαδή ο έλεγχος θα μεταβεί έξω από τη δομή όταν καμία από τις συνθήκες condition δεν ισχύει Επανάληψης: incase incase ( when (condition) )* Ξεκινώντας από την αρχή ελέγχονται διαδοχικά οι συνθήκες condition των μελών μέχρι να βρεθεί ότι κάποια συνθήκη ισχύει. Τότε εκτελούνται οι εντολές μέσα στα άγκιστρα για εκείνο το μέλος και στη συνέχεια ο έλεγχος μεταφέρεται στην επόμενη when. O έλεγχος θα μεταβεί έξω από τη δομή incase όταν καμία από τις συνθήκες condition δεν ισχύει Επιστροφής return (expression) Χρησιμοποιείται μέσα σε συναρτήσεις για να επιστραφεί το αποτέλεσμα της συνάρτησης. Εξόδου print(expression) Εμφανίζει στην οθόνη το αποτέλεσμα της αποτίμησης του expression Κλήσης διαδικασίας call id(actual_parameters) Καλεί τη διαδικασία id Υποπρογράμματα Η Strange υποστηρίζει συναρτήσεις και διαδικασίες function id (formal_parameters) 4

procedure id (formal_parameters) H «formal_parameters» είναι η λίστα των τυπικών παραμέτρων. Οι διαδικασίες και οι συναρτήσεις μπορούν να φωλιάσουν η μία μέσα στην άλλη και οι κανόνες εμβέλειας είναι όπως της PASCAL. Η επιστροφή της τιμής μιας συνάρτησης γίνεται με την εντολή return. Η κλήση μίας διαδικασίας γίνεται με την call Μετάδοση παραμέτρων Η Strange υποστηρίζει τρεις τρόπους μετάδοσης παραμέτρων: (1) με σταθερή τιμή. Δηλώνεται με τη λεκτική μονάδα in. Αλλαγές στην τιμή της δεν επιστρέφονται στον καλόν πρόγραμμα (2) με αναφορά. Δηλώνεται με τη λεκτική μονάδα inout. Κάθε αλλαγή στη τιμή της μεταφέρεται και στο πρόγραμμα που κάλεσε τη συνάρτηση την ώρα που γίνεται η αλλαγή. (3) με αντιγραφή. Δηλώνεται με τη λεκτική μονάδα copy. Κάθε αλλαγή στη τιμή της μεταφέρεται και στο πρόγραμμα που κάλεσε τη συνάρτηση μόλις ολοκληρωθεί η συνάρτηση. Μορφή προγράμματος program id 5