ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1"

Transcript

1 ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 1 ΠΡΟΛΟΓΟΣ ΒΙΒΛΙΟΥ Η σχεδίαση και η κατασκευή ενός Μεταγλωττιστή ή ενός ιερµηνευτή για µια γλώσσα προγραµµατισµού δεν είναι ούτε απλή ούτε εύκολη υπόθεση. Το υλικό αυτής της Θεµατικής Υποενότητας προορίζεται για να σας διδάξει τις βασικές εισαγωγικές έννοιες και να σας µάθει πως µπορείτε να κατασκευάσετε όχι ένα πλήρη Μεταγλωττιστή ή ιερµηνευτή αλλά κάποια βασικά τµήµατα αυτού. ίνει έµφαση στα πρακτικά προβλήµατα σχεδίασης και υλοποίησης και όχι στην πραγµατικά πολύ εκτεταµένη θεωρία που υπάρχει στη διεθνή βιβλιογραφία. Για να καταφέρετε να κατανοήσετε πλήρως το υλικό αυτής της Θεµατικής Υποενότητας χρειάζεστε να έχετε αποκτήσει τουλάχιστον ενός χρόνου προγραµµατιστική εµπειρία σε κάποια γλώσσα προγραµµατισµού και να έχετε βασικές γνώσεις από οµές εδοµένων, γλώσσα Assembly και στοιχεία θεωρίας γλωσσών προγραµµατισµού. Μην ανησυχείτε όµως διότι το µέρος των βασικών αυτών γνώσεων που είναι προαπαιτούµενο θα σας δοθεί µέσα από την ίδια την Θεµατική Υποενότητα (εκτός βέβαια από την προγραµµατιστική εµπειρία ), ενώ πολύ περισσότερες θεωρητικές και πρακτικές γνώσεις θα τις αποκτήσετε από τις αντίστοιχες Θεµατικές Υποενότητες οµές εδοµένων, Αρχιτεκτονική Υπολογιστών, Μικροεπεξεργαστές και Αυτόµατα και Τυπικές Γλώσσες. 'Οσοι από εσάς θελήσετε να ασχοληθείτε σοβαρότερα µε Μεταγλωττιστές, ιερµηνευτές και γενικότερα µε Μεταφραστές θα έχετε την ευκαιρία να µάθετε περισσότερα πράγµατα και κυρίως να κατασκευάσετε ένα µικρό αλλά πλήρη Μεταγλωττιστή ή ιερµηνευτή στα πλαίσια της Θεµατικής Υποενότητας Εργαστηριακές Ασκήσεις σε Μεταγλωττιστές. Τέλος, όσον αφορά τη βιβλιογραφία, επέλεξα για λόγους οικονοµίας χώρου να σας την παρουσιάσω συγκεντρωµένη στο τέλος του βιβλίου, αντί να την δίνω σε κάθε κεφάλαιο ξεχωριστά. Στόχος

2 2 Στόχος του κεφαλαίου αυτού είναι να σας παρουσιάσει σύντοµα και περιληπτικά τί είναι ο µεταγλωττιστής, που χρειάζεται, πώς είναι δοµηµένος από διάφορες λειτουργικές ενότητες, και πώς οι ενότητες αυτές επικοινωνούν και συνεργάζονται µεταξύ τους. Επίσης σας βοηθάει να έχετε µια πλήρη εικόνα για το περιεχόµενο των κεφαλαίων που θα ακολουθήσουν. Προσδοκώµενα αποτελέσµατα 'Οταν θα έχετε µελετήσει το κεφάλαιο αυτό θα µπορείτε να: εξηγήσετε τι είναι ένας µεταγλωττιστής, περιγράψετε τις διαφορές µεταξύ µεταγλωττιστών, διερµηνευτών, µεταφραστών και προ-επεξεργαστών, περιγράψετε εν συντοµία τη διαδικασία µετάφρασης-φόρτωσης-εκτέλεσης ενός προγράµµατος, περιγράψετε τις φάσεις (δοµή) ενός µεταλωττιστή και ενός διερµηνευτή, εξηγήσετε τι είναι τα "περάσµατα" (passes) και πώς τα µειώνουµε, περιγράψετε σε συντοµία τις έξι φάσεις της µεταφραστικής διαδικασίας που επιτελεί ένας µεταγλωττιστής, εξηγήσετε τι είναι τα tokens, εξηγήσετε τι είναι και πού χρησιµοποιείται ο πίνακας συµβόλων, αναφέρετε εργαλεία που χρησιµοποιούνται για την κατασκευή των µεταγλωττιστών, περιγράψετε µια ειδική περίπτωση διαδικασίας κατασκευής ενός µεταγλωττιστή(bootstrapping) περιγράψετε τα δένδρα ανίχνευσης και πού χρησιµοποιούνται. ΕΝΝΟΙΕΣ-ΚΛΕΙ ΙΑ Μεταφραστής, Μεταγλωττιστής, ιερµηνευτής, Προεπεξεργαστής, Πηγαίος Κώδικας, Τελικός Κώδικας, Περάσµατα, Tokens, Bootstrapping, Λεκτική Ανάλυση, Συντακτική Ανάλυση, Σηµασιολογική Ανάλυση, ηµιουργία Ενδιάµεσου Κώδικα, Βελτιστοποίηση Κώδικα και ηµιουργία Τελικού Κώδικα. Το κεφάλαιο αυτό θα σας βοηθήσει να αποκτήσετε µια συνοπτική µεν αλλά πλήρη εικόνα του τι είναι ένας Μεταγλωττιστής και ένας ιερµηνευτής, ποιά είναι η δουλειά

3 3 τους πώς είναι δοµηµένοι και πώς διαφοροποιείται η λειτουργία του ενός από τον άλλο. Είναι το βασικότερο κεφάλαιο της Θεµατικής Υποενότητας που έχετε στα χέρια σας µια και σας δίνει συνολική και σφαιρική εικόνα της οργάνωσης αλλά κυρίως των λειτουργιών που επιτελούνται µέσα σε ένα µεταφραστικό σύστηµα (πρόγραµµα) όπως είναι ο Μεταγλωττιστής και ο ιερµηνευτής. εν θα πρέπει να έχετε ιδιαίτερη δυσκολία µε το κεφάλαιο αυτό µια και σας παρουσιάζει τις λειτουργίες των µεταφραστικών αυτών συστηµάτων από ένα υψηλό επίπεδο και µε αρκετά απλό τρόπο. Επειδή όµως στη συνέχεια των κεφαλαίων θα εξετάσουµε µία-µία τις λειτουργίες αυτές και θα δούµε αρκετές από τις λεπτοµέρειές τους θα σας διευκολύνει πολύ να έχετε στο µυαλό σας την συνολική εικόνα της µεταφραστικής διαδικασίας. 'Eτσι, ξεκινάµε µε το να ορίσουµε τι είναι οι Μεταφραστές και ειδικότερα οι Μεταγλωττιστές και οι ιερµηνευτές, στη συνέχεια κάνουµε µια σύντοµη αναφορά στις γλώσσες προγραµµατισµού και την διαδικασία µετάφρασης-φόρτωσηςεκτέλεσης ενός προγράµµατος για να δούµε κατόπιν τη δοµή ενός Μεταγλωττιστή και τη διαφοροποίηση του από ένα ιερµηνευτή. Κατόπιν βλέπουµε τις λειτουργίες τους και στο τέλος κάποια εργαλεία χρήσιµα στην κατασκευή µεταφραστικών συστηµάτων. ΕΝΟΤΗΤΑ 1.1 ΕΙΣΑΓΩΓΗ 'Ενας Μεταφραστής (Τranslator) είναι ένα πρόγραµµα το οποίο παίρνει σαν είσοδο ένα πρόγραµµα γραµµένο σε κάποια γλώσσα προγραµµατισµού (αρχική γλώσσα - source language) και δίνει στην έξοδο ένα πρόγραµµα σε κάποια άλλη γλώσσα (τελική γλώσσα -target or object language). Αν η αρχική γλώσσα είναι υψηλού επιπέδου όπως C, ΡL/Ι, FΟRΤRAΝ, ΡASCAL κλπ και η τελική γλώσσα είναι χαµηλού επιπέδου όπως Assembly ή γλώσσα µηχανής, τότε ο µεταφραστής λέγεται Συµβολοµεταφραστής ή Μεταγλωττιστής (Compiler). Παλαιότερα οι Μεταγλωττιστές εθεωρούντο εξαιρετικά χρονοβόρα προγράµµατα για να τα γράψει κανείς. Σήµερα γράφονται µε αρκετά λιγότερη προσπάθεια χάρις στην κατανόηση της οργάνωσης της διαδικασίας συµβολοµετάφρασης (Compilation) και την ανάπτυξη προγραµµατιστικών εργαλείων για την υλοποίηση των διαφόρων τµηµάτων των Μεταγλωττιστών.

4 4 Στις περισσότερες περιπτώσεις συµβολοµετάφρασης, οι µεταφραστές µετασχηµατίζουν το πρόγραµµα από την αρχική γλώσσα σε µια πιο απλοποιηµένη που λέγεται ενδιάµεσος κώδικας ή γλώσσα (Ιntermediate Code or Language). Μπορούµε να φαντασθούµε τον ενδιάµεσο κώδικα σαν µια γλώσσα µηχανής ενός υποθετικού υπολογιστή ο οποίος µπορεί να εκτελέσει τον κώδικα αυτόν. Ο µεταφραστής ο οποίος µετασχηµάτησε το αρχικό πρόγραµµα στην ενδιάµεση γλώσσα και στη συνέχεια εκτελεί τη γλώσσα αυτή καλείται ιερµηνευτής (Ιnterpreter). Aντίθετα, ο µεταφραστής µε βάση την ενδιάµεση γλώσσα θα συνεχίσει για να κατασκευάσει τελικό κώδικα. Μερικοί ιερµηνευτές εκτελούν τις εντολές της αρχικής γλώσσας χωρίς να κατασκευάζουν ενδιάµεσο κώδικα (π.χ. Βasic Ιnterpreters ή και JCL Ιnterpreters). Οι Ιnterpreters είναι συνήθως µικρότεροι σε µέγεθος από τους Μεταγλωττιστές αλλά και αρκετές φορές πιο αργοί στην εκτέλεση των αρχικών προγραµµάτων. Υπάρχουν και διάφοροι άλλοι τύποι µεταφραστών. Ο Assembler µεταφράζει προγράµµατα από assembly γλώσσα σε γλώσσα µηχανής ενώ ένας Προεπεξεργαστής (Ρreprocessor) µετασχηµατίζει προγράµµατα από µια υψηλή γλώσσα σε ισοδύναµα προγράµµατα µιας άλλης υψηλής γλώσσας. Π.χ. Ρreprocessor για δοµηµένη (structured) Fortran, preprocessor για γραφήµατα (graphs) σε Fortran, Ρascal κ.λ.π. ΕΝΟΤΗΤΑ 1.2 ΓΛΩΣΣΕΣ ΠΡΟΓΡAΜΜAΤΙΣΜΟΥ Συνέπεια των δυσκολιών του προγραµµατισµού σε γλώσσα µηχανής υπήρξε το πρώτο βήµα ανάπτυξης που είναι οι συµβολικές γλώσσες Assembly. Σ' αυτές τις γλώσσες αντικαταστάθηκαν οι λειτουργικοί κώδικες των εντολών και οι διευθύνσεις δεδοµένων και εντολών, µε συµβολικά ονόµατα για ευκολία του προγραµµατιστή. Το συµβολικό Assembly πρόγραµµα πρέπει πρώτα να µεταφραστεί σε γλώσσα µηχανής από κάποιον Assembler και κατόπιν να εκτελεστεί. Τα macros (macroεντολές) είναι ψευδοεντολές Assembly οι οποίες µετασχηµατίζονται από τον Μacro- Assembler σε µια ακολουθία εντολών Assembly και ίσως και άλλων macros. Οι περισσότεροι σύγχρονοι Assemblers είναι στην πραγµατικότητα Μacro-Assemblers.

5 5 Οι γλώσσες υψηλού επιπέδου αποτελούν την φυσική συνέχεια στην εξέλιξη των γλωσσών προγραµµατισµού και ήλθαν για να ανακουφίσουν τον προγραµµατιστή από λεπτοµέρειες που δεν είχαν καµιά σχέση µε το προγραµµατιζόµενο πρόβληµα, αλλά και να διευκολύνουν χρήστες οι οποίοι δεν είχαν άµεση επαφή µε Assemblers και ούτε υπήρχε λόγος να έχουν. Το βασικό πλεονέκτηµα των γλωσσών προγραµµατισµού υψηλού επιπέδου είναι ότι επιτρέπουν στον χρήστη να εκφράζει (προγραµµατίζει) αλγόριθµους σε µορφές είτε κοντά στα µαθηµατικά είτε κοντά στη φυσική του γλώσσα, είτε ακόµα και κοντά στη λύση του προβλήµατος που εκφράζει ο αλγόριθµος. Το πρόβληµα που εισάγεται µε τις υψηλές γλώσσες είναι ότι το µεταφραστικό πρόγραµµα (Μεταγλωττιστής) είναι πολύ πιο πολύπλοκο από οποιονδήποτε Μacro Assembler Η ΙΑ ΙΚΑΣΙΑ ΜΕΤΑΦΡΑΣΗΣ-ΦΟΡΤΩΣΗΣ-ΕΚΤΕΛΕΣΗΣ Στο σχήµα 1.1 δίνεται διαγραµµατικά η διαδικασία Μετάφρασης-Φόρτωσης- Εκτέλεσης ενός προγράµµατος. Ο προγραµµατιστής γράφει σε κάποια γλώσσα υψηλού επιπέδου το πρόγραµµά του, το οποίο ουσιαστικά είναι, η κωδικοποιηµένη λύση ενός προβλήµατος. Το πρόγραµµα αυτό στη συνέχεια µπορεί να χρειάζεται προεπεξεργασία ή όχι. 'Αν χρειάζεται, τότε θα τροφοδοτηθεί στον προεπεξεργαστή του Μεταγλωττιστή, αλλιώς τροφοδοτείται κατ' ευθείαν στον Μεταγλωττιστή. Ο Μεταγλωττιστής εν γένει βγάζει έξοδο γλώσσα µηχανής υπό µορφή µεταθετού κώδικα (relocatable code). Ο µεταθετός κώδικας πιθανότατα περιέχει και αναφορές σε βιβλιοθήκες προκατασκευασµένων ρουτινών (π.χ. µαθηµατικές συναρτήσεις κ.λ.π). Οι αναφορές αυτές (procedure ή function calls) πρέπει να συνδεθούν µε τον αντίστοιχο κώδικα από τις βιβλιοθήκες (µέσω του Linker), ώστε να καταλήξουµε στον εκτελέσιµο κώδικα. Ο κώδικας σε εκτελέσιµη και µεταθετή µορφή µπορεί, µετά από αίτηµα του χρήστη πρός το λειτουργικό σύστηµα (και τελικά πρός τον φορτωτή Loader), να εκτελεσθεί από τον υπολογιστή. Σε κάποιες λίγες περιπτώσεις ο µεταγλωττιστής παράγει κώδικα Assembly, οπότε στην περίπτωση αυτή χρειάζεται να κληθεί ο Assembler και η διαδικασία συνεχίζεται όπως παραπάνω.

6 6 ΕΝΟΤΗΤΑ 1.3 Η ΟΜΗ ΕΝΟΣ ΜΕΤΑΓΛΩΤΤΙΣΤΗ ΠρόγραµµαΧρήστη Προεπεξεργαστής Μεταγλωττιστής Assembler Loader / Linker ΕκτελέσιµοΠρόγραµµα Σχήµα 1.1. ιαδικασία Μετάφρασης-Φόρτωσης-Εκτέλεσης Ο µεταγλωττιστής (compiler) παίρνει είσοδο ένα πρόγραµµα και παράγει στην έξοδο µια ισοδύναµη ακολουθία εντολών µηχανής (σε µερικές περιπτώσεις παράγει ισοδύναµο πρόγραµµα σε Assembly). Η διαδικασία της µεταφραστικής αυτής δουλειάς είναι τόσο πολύπλοκη που συνήθως χωρίζεται σε διάφορες φάσεις (phases), (δείτε το σχήµα 1.2). Κάθε φάση είναι µια διαδικασία (µέρος της συνολικής µετάφρασης) η οποία παίρνει είσοδο κάποια µορφή του αρχικού προγράµµατος και παράγει στην έξοδο κάποια άλλη αναπαράσταση. Η πρώτη φάση -Λεκτικός Aναλυτής (lexical analyzer ή scanner) χωρίζει χαρακτήρες της αρχικής γλώσσας (προγράµµατος) σε λογικές οµάδες-tokens. Τα συνηθέστερα tokens είναι λέξεις-κλειδιά (keywords) όπως DΟ ή ΙF, ονόµατα µεταβλητών (identifiers) όπως Υ ή SPEED, σύµβολα τελεστών (operator symbols) όπως = ή *, και σύµβολα στίξης όπως παρένθεση ή κόµµα. Η έξοδος του Λεκτικού Αναλυτή είναι µια ακολουθία από tokens που δίνεται στην επόµενη φάση, του

7 7 Συντακτικού Αναλυτή (Syntax Analyzer ή Parser). Τα tokens µπορεί να παριστάνονται µε ακέραιους κώδικες, π.χ. το DΟ µπορεί να παριστάνεται µε 1, το * µε 2 και ο "identifier" µε 3. Στην περίπτωση του token "identifier" χρειάζεται και µια δεύτερη ποσότητα που καθορίζει ποιός από τους identifiers του προγράµµατος αναφέρεται από το συγκεκριµένο token. Ο Συντακτικός Aναλυτής (Syntax Analyzer) οµαδοποιεί τα tokens σε συντακτικές δοµές. Π.χ. τα τρία tokens που παριστούν το A+Β µπορεί να οµαδοποιηθούν σε µια συντακτική δοµή που καλείται έκφραση (ession). Οι εκφράσεις µπορεί να οµαδοποιηθούν σε εντολές (statements). Συχνά η συντακτική δοµή θεωρείται σαν ένα δένδρο του οποίου τα φύλλα είναι τα tokens που λογικά ανήκουν µαζί. Στα πλαίσια της Σηµασιολογικής Ανάλυσης θα προσδιορισθεί ο τύπος του αποτελέσµατος Α+Β (π.χ. integer ή real ) και θα εισαχθούν εντολές που κάνουν µετατροπές τύπων στα Α και Β εάν και όπου χρειάζεται. Στη ηµιουργία του Ενδιάµεσου Κώδικα (Ιntermediate Code Generation) χρησιµοποιείται η δοµή που παράγεται από τον Συντακτικό Αναλυτή για να κατασκευαστεί µια σειρά από απλές εντολές. Οι εντολές αυτές συχνά αποτελούνται από ένα τελεστή (operator) και µικρό αριθµό από έντελα (operands) και µπορούν να θεωρηθούν σαν ένα είδος macro εντολών. Η βασική διαφορά µεταξύ ενδιάµεσου κώδικα και κώδικα Assembly είναι ότι στον ενδιάµεσο κώδικα δεν χρειάζεται να γίνει αναφορά στους Καταχωρητές (registers) που θα χρησιµοποιηθούν στις διάφορες πράξεις. Η Βελτιστοποίηση του Κώδικα (Code Οptimization) είναι µια προαιρετική φάση που χρησιµοποιείται για να βελτιώσει τον ενδιάµεσο κώδικα ώστε το τελικό (object) πρόγραµµα να λειτουργεί-τρέχει πιο γρήγορα και/ή να καταλαµβάνει λιγότερο χώρο στη µνήµη. Η τελική φάση- ηµιουργία Κώδικα (Code Generation)-παράγει τον τελικό κώδικα (object code), αποφασίζοντας για τις θέσεις µνήµης των δεδοµένων, διαλέγοντας κώδικα για την προσπέλαση κάθε δεδοµένου και επιλέγοντας τους καταχωρητές µε τους οποίους θα γίνει κάθε υπολογιστική πράξη. Aποτελεί τη δυσκολότερη φάση πρακτικά και θεωρητικά.

8 8 Πηγαίο Πρόγραµµα Λεκτική Ανάλυση Συντακτική Ανάλυση Πίνακας Συµβόλων Σηµασιολογική Ανάλυση ιαχείριση Λαθών ηµιουργία Ενδιάµεσου Κώδικα Βελτιστοποίηση Ενδιάµεσου Κώδικα ηµιουργία Τελικού Κώδικα Τελικό Πρόγραµµα Σχήµα 1.2 Οι φάσεις ενός µεταγλωττιστή

9 9 Η διαχείριση Πινάκων (Τable-Μanagement, Βookkeeping), διατηρεί πληροφορίες για τα ονόµατα που χρησιµοποιούνται στο πρόγραµµα, όπως τύπος (real, character κ.λ.π.), µέγεθος και άλλες. Η φυσική δοµή που χρησιµοποιείται για τις πληροφορίες αυτές καλείται Πίνακας Συµβόλων (Symbol Τable). Ο Χειριστής Λαθών (Error Handler) καλείται κάθε φορά που αναγνωρίζεται κάποια ανωµαλία στο πρόγραµµα. Εκδίδει διαγνωστικά µηνύµατα και ρυθµίζει τις πληροφορίες που τροφοδοτούνται από µια φάση σε άλλη ώστε κάθε φάση να µπορεί να συνεχίσει την δουλειά της. Είναι λογική απαίτηση από κάθε µεταγλωττιστή η µεταφραστική διαδικασία να φτάνει µέχρι το τέλος της ώστε στα εσφαλµένα προγράµµατα να αποκαλύπτονται από τον Μεταγλωττιστή όσον το δυνατόν περισσότερα λάθη. 'Ενας Μεταγλωττιστής και ένας ιερµηνευτής µπορούν να θεωρηθούν ότι αποτελούνται (δοµικά) από δύο τµήµατα όπως φαίνεται στο Σχήµα 1.3. Το εµπρόσθιο τµήµα (front-end) είναι ίδιο και στις δύο περιπτώσεις. Το οπίσθιο τµήµα, στην περίπτωση του µεταγλωττιστή (back-end) περιλαµβάνει τις λειτουργίες που αναφέρονται στο Σχήµα 1.3 και περιγράφτηκαν προηγούµενα, ενώ στην περίπτωση του διερµηνευτή περιλαµβάνει τον εξοµειωτή που εκτελεί τις εντολές του ενδιάµεσου κώδικα. 'Ασκηση Αυτοαξιολόγησης 1 / Κεφ.1 Εξηγείστε τη δοµική διαφορά µεταξύ ενός µεταγλωττιστή και ενός διερµηνευτή.

10 10 Πηγαίο πρόγραµµα Λεξ. Ανάλυση Συντ. Ανάλυση Σηµασ. Ανάλυση Ενδιαµ. Κώδικας Βελτιστ. Ενδ. Κώδικα ιαχ.μνήµης ηµ. Τελικού. Κώδικα Βελτιστ. Τελ. Κώδικα Front-End Ενδιάµ. Κώδ. Υποθετικής Μηχανής Εξοµοιωτής της υποθετικής µηχανής Μεταγλωττιστής Back-End ιερµηνευτής Back-End ιασύνδεση Εκτελέσιµο πρόγραµµα Εξοµοιωµένη εκτέλεση Σχήµα 1.3. Οι λειτουργίες µεταγλώττισης και διερµήνευσης

11 ΠΕΡΑΣΜΑΤΑ(PASSES) Κατά την υλοποίηση ενός Μεταγλωττιστή κοµµάτια από µια ή περισσότερες φάσεις συνδυάζονται σε ένα πέρασµα (pass). Το πέρασµα διαβάζει το πηγαίο πρόγραµµα ή την έξοδο του προηγούµενου περάσµατος, κάνει τους µετασχηµατισµούς που ορίζονται από τις φάσεις του, και γράφει το αποτέλεσµα σε κάποιο προσωρινό αρχείο, το οποίο ενδεχοµένως διαβάζεται από κάποιο επόµενο πέρασµα. Ο αριθµός των περασµάτων και η οµαδοποίηση των φάσεων σε περάσµατα, υπαγορεύονται από τη συγκεκριµένη γλώσσα και µηχανή στην οποία θα λειτουργήσει ο Μεταγλωττιστής. Μερικές γλώσσες όπως Algol 68 και ΡL/Ι χρειάζονται δύο τουλάχιστον περάσµατα. Μεταγλωττιστές που τρέχουν σε υπολογιστές µε µικρή µνήµη συνήθως χρειάζονται περισσότερα περάσµατα από εκείνους που τρέχουν σε υπολογιστές µεγάλης µνήµης. Aκόµη, τα περισσότερα περάσµατα ενός Μεταγλωττιστή υπαγορεύουν και µεγαλύτερο χρόνο για την µετάφραση των προγραµµάτων ΜΕΙΩΣΗ ΤΟΥ ΑΡΙΘΜΟΥ ΤΩΝ ΠΕΡΑΣΜΑΤΩΝ ηµιουργείται το ερώτηµα πώς διάφορες φάσεις µπορούν να συνδυαστούν σε ένα πέρασµα χωρίς γράψιµο και διάβασµα σε ενδιάµεσο (προσωρινό) αρχείο. Τυπική απάντηση δίνει ο Λεκτικός Αναλυτής όπου ένας µικρός βοηθητικός χώρος (buffer) π.χ. ένα διάνυσµα στη µνήµη χρησιµοποιείται σαν διάµεσο (Ιnterface) µεταξύ των περασµάτων. Σε άλλες περιπτώσεις ενσωµατώνονται φάσεις σε ένα πέρασµα µε την τεχνική του πισωµπαλώµατος (" backpatching "). Παράδειγµα 1/Κεφ. 1 'Ενας Assembler µπορεί να έχει κάποια εντολή της µορφής " GΟΤΟ L " η οποία προηγείται κάποιας εντολής που έχει ετικέτα (Label) L, π.χ. L:ADD Χ. 'Ενας Assembler 2-περασµάτων χρησιµοποιεί το πρώτο πέρασµα για να εισάγει στον Πίνακα Συµβόλων µια λίστα από όλους τους identifiers (ετικέτες (Labels) εντολών και ονόµατα δεδοµένων-µεταβλητών) µαζί µε τις διευθύνσεις µηχανής (σχετικές ως προς την αρχή του προγράµµατος) που τους αντιστοιχούν. Κατόπιν το δεύτερο πέρασµα αντικαθιστά τους µνηµονικούς κώδικες λειτουργίας, όπως GΟΤΟ,

12 12 µε τα ισοδύναµά τους σε γλώσσα µηχανής και τους identifiers µε τις διευθύνσεις µηχανής. Aπό την άλλη µεριά ένας Assembler ενός-περάσµατος µπορεί να δηµιουργήσει ένα "σκελετό" της GΟΤΟ L και να προσθέσει την διεύθυνση µηχανής της GΟΤΟ L σε µια λίστα εντολών που πρόκειται να πισωµπαλωθούν (backpatched) µόλις η διεύθυνση µηχανής της επιγραφής L γίνει γνωστή στον Assembler. Η λίστα αυτή µπορεί να "κρέµεται" σαν δοµή διασυνδεδεµένης λίστας, από µια θέση που σχετίζεται µε την επιγραφή L στον Πίνακα Συµβόλων. Ο Assembler µόλις συναντήσει την εντολή "L:ADD Χ" ψάχνει την λίστα των εντολών που αναφέρονται στην L και βάζει την διεύθυνση της L:ADD Χ στο πεδίο διεύθυνσης όλων αυτών των εντολών. Επόµενες αναφορές στην L χρησιµοποιούν την διεύθυνση της L που είναι πλέον γνωστή. Η "Aπόσταση" του backpatching είναι συνήθως µικρή για τους περισσότερους µεταγλωττιστές. Σαν απόσταση στο παραπάνω παράδειγµα του Assembler µπορούµε να θεωρήσουµε την απόσταση µεταξύ των εντολών GOTO L και L:ADD X. 'Ασκηση Αυτοαξιολόγησης 2 / Κεφ. 1 Η µείωση του αριθµού των περασµάτων σε ένα µεταγλωττιστή στοχεύει να βοηθήσει στην κατασκευή: α) πιο" µικρού" µεταγλωττιστή β) πιο " τµηµατοποιηµένου" (άρα πιο εύκολα να γραφεί) µεταγλωττιστή γ) πιο "γρήγορου" µεταγλωττιστή όσον αφορά τον χρόνο που χρειάζεται για να µεταφράσει το πρόγραµµά σας - δ) πιο " γρήγορου" όσον αφορά τον χρόνο που χρειάζεται για να εκτελεσθεί το πρόγραµµά σας, µετά την µετάφρασή του από τον µεταγλωττιστή ε) πιο εύκολου (ευκολία να κατασκευασθεί) και πιο συντηρήσιµου µεταγλωττιστή. Ποιά από τις πέντε παραπάνω περιπτώσεις θεωρείται ότι είναι η σωστή; Αιτιολογήστε την επιλογή σας. ΕΝΟΤΗΤΑ 1.4 ΛΕΚΤΙΚΗ AΝAΛΥΣΗ Ο Λεκτικός Αναλυτής διαβάζει έναν-έναν τους χαρακτήρες του αρχικού προγράµµατος και τους χωρίζει σε µια ακολουθία ατοµικών λεκτικών µονάδων που

13 13 καλούνται tokens και που το καθένα παριστάνει µια σειρά χαρακτήρων που µπορούν να διαχειρίζονται σαν µοναδική λογική ενότητα. Π.χ. στην εντολή Fortran: ΙF (5.ΕQ.ΜAΧ) GΟ ΤΟ 100 αναγνωρίζονται τα οκτώ tokens: ΙF, (, 5,.ΕQ., ΜAΧ, ), GΟΤΟ, 100 Κάθε token αποτελείται από δύο στοιχεία, τον τύπο (type) και την τιµή (Value) του η οποία µπορεί να είναι κενή για κάποιο τύπο (π.χ. σύµβολα στίξης, keywords). Ο Λεκτικός Aναλυτής και ο Συντακτικός Aναλυτής συχνά ανήκουν στο ίδιο πέρασµα. Στην περίπτωση αυτή ο Λεκτικός Aναλυτής λειτουργεί είτε κάτω από τον Συντακτικό Aναλυτή σαν υπορουτίνα αυτού είτε και οι δύο µαζί σαν συν-ρουτίνες (coroutines). Ο Συντακτικός Αναλυτής ζητά από τον Λεκτικό Αναλυτή το επόµενο token όποτε χρειάζεται ένα, και ο Λεκτικός Aναλυτής του επιστρέφει ένα κώδικα για το token που βρήκε. Aν το token είναι identifier ή άλλο token το οποίο µπορεί να έχει κάποια τιµή τότε ο Λεκτικός Aναλυτής επιστρέφει στον Συντακτικό Aναλυτή και την τιµή του. Η τιµή αυτή είναι συνήθως ένας δείκτης που δείχνει την θέση του Πίνακα Συµβόλων όπου βρίσκεται η τιµή (value) του token. Ο δείκτης αυτός, ουσιαστικά επιστρέφεται στον Λεκτικό Aναλυτή από τις ρουτίνες που χειρίζονται τον πίνακα συµβόλων και οι οποίες κλήθηκαν από τον Λεκτικό Aναλυτή. Για να προσδιορίσει ο Λεκτικός Aναλυτής το επόµενο token χρειάζεται να ψάξει αρκετούς χαρακτήρες πέρα από τον τρέχοντα χαρακτήρα. Π.χ. στην εντολή: ΙF ( 5.ΕQ.ΜAΧ ) GΟ ΤΟ 100 Το βέλος δείχνει τη θέση της αρχής του επόµενου token µετά από τα "ΙF", "(" που θεωρούµε ότι έχουν ήδη αναγνωρισθεί από τον Λεκτικό Aναλυτή και σταλεί στον Συντακτικό Aναλυτή. ραστηριότητα 1 / Κεφάλαιο 1 Για να αναγνωρισθεί το "5" σαν token ο Λεκτικός Aναλυτής πρέπει να ψάξει τους χαρακτήρες µέχρι και τον "Q". Μπορείτε να εξηγήσετε γιατί; Ο Λεκτικός Αναλυτής αναγνωρίζοντας το "5" βλέπει τον επόµενο χαρακτήρα να είναι η τελεία ".", άρα δεν µπορεί να καταλήξει αν πρόκειται για την ακέραια σταθερά "5" ή για την πραγµατική σταθερά "5.", προχωράει εποµένως στον επόµενο

14 14 χαρακτήρα "Ε" και τώρα έχει µπροστά του την συµβολοσειρά "5.Ε". Η συµβολοσειρά αυτή είναι πιθανό να είναι µια πραγµατική σταθερά σε εκθετική µορφή αρκεί ο επόµενος χαρακτήρας να είναι πρόσηµο (+ -) ή ψηφίο. Πρέπει λοιπόν να διαβάσει και τον επόµενο χαρακτήρα πριν καταλήξει για τον τύπο του token που προσπαθεί να αναγνωρίσει. 'Ετσι, διαβάζει υποχρεωτικά και τον χαρακτήρα "Q" για να αναγνωρίσει τελικά ότι πρόκειται για την ακέραια σταθερά "5". Μετά την αναγνώριση του "5" ο δείκτης του Λεκτικού Aναλυτή δείχνει την τελεία του ΕQ, και επιστρέφει στον Συντακτικό Aναλυτή το ζευγάρι : τύπος "constant" (σταθερά) και τιµή "5" ή ένα δείκτη στον Πίνακα Συµβόλων. Μετά την πλήρη αναγνώριση της εντολής από τον Λεκτικό Aναλυτή η σειρά των tokens µοιάζει µε την εξής: [if, ] [(, ] [const, 341] [eq, ] [id, 729] [ ), ] [goto, ] [label, 554] όπου ο δείκτης µέσα στις τετραγωνικές παρενθέσεις δίνει την σχετική θέση στον Πίνακα Συµβόλων όπου φυλάσσονται οι πληροφορίες για τις σταθερές, τις µεταβλητές και τις επιγραφές (constants, variables, labels). ΕΝΟΤΗΤΑ 1.5 ΣΥΝΤAΚΤΙΚΗ AΝAΛΥΣΗ ύο είναι οι βασικές λειτουργίες του Συντακτικού Aναλυτή. Ελέγχει ότι τα tokens που παίρνει από τον Λεκτικό Aναλυτή υπακούουν στις συντακτικές προδιαγραφές της γλώσσας και επιπλέον σχηµατίζει και κάποια δενδρική µορφή για τις επόµενες φάσεις. Π.χ. σε Fortran πρόγραµµα η έκφραση A+/Β, φθάνει στον Συντακτικό Aναλυτή σαν [id,n1] [+, ] [/, ] [id, n2] ο οποίος εντοπίζει δύο συνεχόµενους τελεστές (+, /) και απορρίπτει την έκφραση. Η δενδρική µορφή (Ρarse Τree ένδρο Ανίχνευσης) π.χ. της έκφρασης A/Β*C έχει δύο δυνατές παραστάσεις (α) και (β) (Σχήµα 1.4). Το ποια από τις δύο θα χρησιµοποιηθεί είναι συνάρτηση των προδιαγραφών της γλώσσας και πιο συγκεκριµένα, της συντακτικής δοµής της γλώσσας. Ακριβέστερα, είναι συνάρτηση της προτεραιότητας και προσεταιριστικότητας των τελεστών όπως αυτές εκφράζονται µέσα από την τυπική σύνταξη της γλώσσας. Στο σχήµα 1.4 το (α), η έκφραση υπολογίζεται σαν A/(B*C) ενώ στο (β) σαν (A/B)*C. Το (α) είναι σωστό µε βάση την σύνταξη της γλώσσας APL, και το (β) λάθος. Ενώ µε βάση την σύνταξη της γλώσσας Fortran το (α) είναι λάθος και το (β) είναι σωστό. 'Οπως θα δούµε αργότερα οι

15 15 context-free γραµµατικές (grammars) είναι ιδιαίτερα χρήσιµες για τον καθορισµό συντακτικών δοµών. Και ακόµη, είναι δυνατόν για συγκεκριµένους τύπους contextfree γραµµατικών, να κατασκευασθούν αυτόµατα οι αντίστοιχοι Συντακτικοί Αναλυτές. Στο σχήµα 1.5 φαίνεται το ένδρο Ανίχνευσης της εντολής if (5 eq MAX) goto 100, µέρος των περιεχοµένων του Πίνακα Συµβόλων και τα tokens. A / B * C A / B * C (α) APL (β) FORTRAN Σχήµα 1.4. ένδρα Ανίχνευσης της A / B * C 'Ασκηση Αυτοαξιολόγησης 3 / Κεφ. 1 Κατασκεύασε όλα τα πιθανά ένδρα Ανίχνευσης της αριθµητικής έκφρασης: A * B / C ΕΝΟΤΗΤΑ 1.6 ΗΜΙΟΥΡΓΙA ΕΝ ΙAΜΕΣΟΥ ΚΩ ΙΚA Η φάση της δηµιουργίας ενδιάµεσου κώδικα µετασχηµατίζει το ένδρο Ανίχνευσης (parse tree) σε µια αναπαράσταση του αρχικού προγράµµατος σε κάποια ενδιάµεση γλώσσα. Ο Κώδικας τριών ιευθύνσεων (Τhree-address Code), είναι µια δηµοφιλής µορφή ενδιάµεσης γλώσσας, όπου µια τυπική εντολή έχει τη µορφή:

16 16 A:=Β op C Πίνακας Συµβόλων statement 341 const, integer, val=5 If - Statement 554 label, val=100 if ( relation ) Statement 729 id, integer, val= 'MAX' rel-op goto label const eq id Tokens: [if, ] [(, ] [const, 341] [eq, ] [id, 729] [), ] [goto, ] [label, 554] Σχήµα 1.5. Ανίχνευση της εντολής if (5 eq MAX) goto 100 Το ένδρο Ανίχνευσης (β) του Σχήµατος 1.4 θα µπορούσε να µετασχηµατιστεί στην εξής σειρά εντολών τριών-διευθύνσεων: Τ 1 := A / Β Τ 2 := Τ 1 * C όπου Τ 1 και Τ 2 είναι ονόµατα προσωρινών µεταβλητών. Aκόµη η ενδιάµεση γλώσσα χρειάζεται να έχει και απλές εντολές JΜΡ (ή GΟΤΟ), υπό συνθήκη και χωρίς συνθήκη, π.χ. if A relop Β goto L). Υψηλότερου επιπέδου εντολές τύπου WΗΙLΕ- DΟ, ή ΙF-ΤΗΕΝ-ΕLSΕ, µεταφράζονται σε χαµηλότερες εντολές συνθήκης (conditional statements) τριών-διευθύνσεων. Παράδειγµα 2 / Κεφ. 1 Η ακόλουθη εντολή WΗΙLΕ,

17 17 While A>Β & A<=2*Β-5 do A:=A+Β; έχει την εξής αντιστοιχία σε σειρά από tokens: [while, ] [id, n 1 ] [relop, >] [id, n 2 ] [comprelop, &] [id, n 1 ] [relop,<=] [con, n 3 ] [*, ] [id, n 2 ] [-, ] [con, n 4 ] [do, ] [id, n 1 ] [=:, ] [id, n 1 ] [+, ] [id, n 2 ] [;, ] Το ένδρο Ανίχνευσης για την παραπάνω εντολή WΗΙLΕ είναι αυτό του Σχήµατος 1.7. Οι αλγόριθµοι που µετατρέπουν το ένδρο Ανίχνευσης σε ενδιάµεση γλώσσα (κώδικα) θα συζητηθούν αργότερα. Προς το παρόν παρουσιάζεται στο Σχήµα 1.6 ο ενδιάµεσος κώδικας όπως περίπου θα είναι: Q1: if A > Β goto Q2 goto Q3 Q2: Τ 1 := 2 * Β Τ 2 := Τ 1-5 if A <= Τ 2 goto Q4 goto Q3 Q4: A := A + Β goto Q1 Q3: Σχήµα 1.6. Ενδιάµεσος κώδικας για την εντολή WΗΙLΕ. Οι περισσότεροι Μεταγλωττιστές δεν δηµιουργούν ένδρα Ανίχνευσης άµεσα, αλλά δηµιουργούν τον ενδιάµεσο κώδικα καθώς προχωράει η συντακτική ανάλυση.

18 18 stat while-stat while condition do stat condition & condition assignment relation relation location := relop relop id(a) + id(a) > id(b) id(a) <= - exp id(a) id(b) * con(5) con(2) id(b) Σχήµα 1.7. ένδρο Ανίχνευσης για την εντολή WHILE

19 19 ΕΝΟΤΗΤΑ 1.7 ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ (ΟΡΤΙΜΙΖAΤΙΟΝ) Η φάση της βελτιστοποίησης δεν υπάρχει σε όλους τους Μεταγλωττιστές παρ' ότι µπορεί και να διπλασιάσει την ταχύτητα του τελικού προγράµµατος. Τοπική βελτιστοποίηση (Local optimization) µπορεί να εφαρµοστεί στον ενδιάµεσο κώδικα του Σχήµατος 1.6. Η ακολουθία: if A > B goto Q2 goto Q3 Q2: µπορεί να αντικατασταθεί από την εντολή: if A <= Β goto Q3 Q2: Μια ακόµη πιο σηµαντική βελτιστοποίηση αναφέρεται στον υπολογισµό των δεικτών των εκφράσεων, π.χ. η εκχώρηση: A[Ι] := Β[Ι] + C[Ι] εφ' όσον η µνήµη του υπολογιστή προσπελαύνεται κατά bytes και υπάρχουν 4 bytes/word, χρειάζεται να υπολογίσει το 4*(Ι-1) τρεις φορές. 'Ενας Οptimizing Compiler θα µπορούσε να τροποποιήσει τον ενδιάµεσο κώδικα και να χρησιµοποιήσει το 4*(Ι-1) σαν κοινή υποέκφραση η οποία υπολογίζεται µια µόνο φορά, πράγµα το οποίο δεν θα µπορούσε να κάνει ένας προγραµµατιστής γιατί δεν του το επιτρέπει η υψηλού επιπέδου γλώσσα στην οποία προγραµµατίζει. Η βελτιστοποίηση των βρόχων (Loop Οptimization) δίνει την µεγαλύτερη αύξηση ταχύτητας στα προγράµµατα µιας και αυτά καταναλώνουν τον περισσότερο χρόνο µέσα σε βρόχους. Η τυπική λύση είναι να µετακινηθούν οι υπολογισµοί που δίνουν πάντα το ίδιο αποτέλεσµα µέσα στον βρόχο, έξω και ακριβώς πριν από τον βρόχο. Οι υπολογισµοί αυτοί ονοµάζονται loop invariants.

20 20 ΕΝΟΤΗΤΑ 1.8 ΗΜΙΟΥΡΓΙA ΚΩ ΙΚA (CΟDΕ GΕΝΕRAΤΙΟΝ) Σαν παράδειγµα στην φάση αυτή, η εντολή ενδιάµεσου Κώδικα A:=Β+C (1) µπορεί να µεταφραστεί στον εξής Κώδικα µηχανής: LΟAD Β ADD C (2) SΤΟRΕ A ραστηριότητα 2 / Κεφάλαιο 1 Μια τέτοια όµως µετάφραση του ενδιάµεσου κώδικα σε κώδικα µηχανής δηµιουργεί πολλά LΟAD και SΤΟRΕ που πλεονάζουν. Η κατάσταση µπορεί να βελτιωθεί σηµαντικά αν ο.κ. ( ηµιουργός Κώδικα) διατηρεί πληροφορίες για το περιεχόµενο των Καταχωρητών (registers), του Accumulator και της "επόµενης χρήσης" των ονοµάτων (identifiers) και δηµιουργεί εντολές LΟAD και SΤΟRΕ µόνο όταν χρειάζονται. Με αυτές τις υποθέσεις µπορείτε να εξηγήσετε πώς µπορεί να κατασκευασθεί "µικρότερος" κώδικας από τον (2) που δόθηκε παραπάνω; (α) µε την υπόθεση ότι το Β βρίσκεται στον Accumulator και το A πρόκειται να χρησιµοποιηθεί σε επόµενη έκφραση (έχει επόµενη χρήση) αντί του (2) µπορώ να φτιάξω µόνο: ADD C (3) (β) αν δεν έχω πληροφορία για την επόµενη χρήση (next use) του A ή ξέρω ότι το A δεν έχει επόµενη εκχώρηση φτιάχνω: ADD C SΤΟRΕ A (γ) άλλοι συνδυασµοί είναι δυνατοί. Σε ένα υπολογιστή µε λίγους καταχωρητές υψηλής ταχύτητας, ο ηµιουργός Κώδικα θα προσπαθήσει να κάνει την βέλτιστη χρήση αυτών των καταχωρητών.

21 21 ΕΝΟΤΗΤΑ 1.9 ΙAΧΕΙΡΙΣΗ ΠΙΝAΚΩΝ ΚAΙ ΣΗΜAΣΙΟΛΟΓΙΚΗ AΝAΛΥΣΗ 'Ενας Μεταγλωττιστής χρειάζεται να διατηρεί πληροφορίες για όλα τα δεδοµένα που εµφανίζονται στο πρόγραµµα. Π.χ. αν µια µεταβλητή παριστάνει έναν integer ή real αριθµό, το µέγεθος ενός Array, το πλήθος των παραµέτρων ενός υποπρογράµµατος κ.λ.π. Οι πληροφορίες αυτές συλλέγονται κατά τις αρχικές φάσεις -Λεκτικής Aνάλυσης και Συντακτικής Aνάλυσης - εισάγονται στον Πίνακα Συµβόλων, και έχουν διάφορες χρήσεις. Π.χ. αν υπάρχει η έκφραση A+Β, όπου A είναι τύπου integer και Β τύπου real, τότε αν το επιτρέπει η γλώσσα ο Μεταγλωττιστής πρέπει να φτιάξει κώδικα που να µετατρέπει τον A σε τύπου real, αλλιώς να καλέσει τις ρουτίνες χειρισµού λαθών για να αναφέρει το λάθος µίξης των τύπων. Η παραπάνω λειτουργία εντάσσεται στην Σηµασιολογική Aνάλυση (Semantic Analysis) η οποία εφαρµόζεται στον καθορισµό του τύπου των ενδιάµεσων αποτελεσµάτων, στον έλεγχο του τύπου των παραµέτρων και στον προσδιορισµό λειτουργίας που αναφέρεται από κάποιο τελεστή (π.χ. ο τελεστής + µπορεί να αναφέρεται σε ακέραια ή floating point πρόσθεση, σε λογικό "ΟR", ή και σε άλλη πράξη). Σηµασιολογική Aνάλυση µπορεί να γίνει κατά τη φάση της Συντακτικής Aνάλυσης, της δηµιουργίας ενδιάµεσου κώδικα, ή την τελική φάση της δηµιουργίας κώδικα. ΕΝΟΤΗΤΑ 1.10 ΙAΧΕΙΡΙΣΗ ΛAΘΩΝ (ΕRRΟR ΗAΝDLΙΝG) Aποτελεί µια από τις πιο σηµαντικές λειτουργίες του Μεταγλωττιστή. 'Οταν ο Μεταγλωττιστής ανακαλύψει κάποιο λάθος, πρέπει να το αναφέρει στον διαχειριστή λαθών ο οποίος εκδίδει κάποιο µήνυµα. Aκόµη ο Μεταγλωττιστής πρέπει να τροποποιήσει την είσοδο της φάσης στην οποία εµφανίστηκε το λάθος, ώστε η τελευταία να µπορέσει να συνεχίσει κανονικά. 'Ασκηση Αυτοαξιολόγησης 4 / Κεφ. 1 Εντοπίστε και διορθώστε τα λάθη που υπάρχουν στο παρακάτω κείµενο. "Ο Λεκτικός Αναλυτής διαβάζει το αρχικό πρόγραµµα σαν ένα σύνολο χαρακτήρων και

22 22 επιστρέφει τους χαρακτήρες αυτούς στον Συντακτικό Αναλυτή. Η δουλειά του Συντακτικού Αναλυτή, µετά την Σηµασιολογική Ανάλυση είναι να οµαδοποιήσει τους χαρακτήρες σε tokens και τα tokens σε συντακτικές δοµές σύµφωνα µε τους συντακτικούς κανόνες της γραµµατικής και να παράξει τον ενδιάµεσο κώδικα, υπό µορφή συντακτικού δένδρου, από το οποίο θα κατασκευασθεί ο τελικός κώδικας, ο οποίος στη συνέχεια µπορεί και να βελτιστοποιηθεί, από τον µεταγλωττιστή". ΕΝΟΤΗΤΑ 1.11 ΕΡΓΑΛΕΙΑ ΜΕΤΑΓΛΩΤΤΙΣΤΩΝ ιάφορα "εργαλεία" που έχουν αναπτυχθεί για να βοηθήσουν στην δηµιουργία Μεταγλωττιστών ποικίλουν από Scanner και Ρarser generators σε πολύπλοκα συστήµατα µε διάφορα ονόµατα όπως Compiler-Compilers, Compiler generators, ή translator-writing systems, και παράγουν ένα Μεταγλωττιστή από κάποια µορφή προδιαγραφών µιας πηγαίας γλώσσας και του υπολογιστή στον οποίο θα τρέχει ο Μεταγλωττιστής. Οι προδιαγραφές στα συστήµατα αυτά µπορούν να περιλαµβάνουν: α. Περιγραφή της Λεκτικής και Συντακτικής δοµής της γλώσσας. β. Περιγραφή του τί έξοδο θα δηµιουργεί κάθε δοµικό στοιχείο της γλώσσας, (πχ κώδικας, διαχείριση λαθών),και γ. Περιγραφή του στοχευόµενου υπολογιστή (target machine). Οι βασικές βοήθειες-εργαλεία που παρέχονται από τους υπάρχοντες Compiler- Compilers είναι: 1. Γεννήτορες Λεκτικών Αναλυτών (Scanner Generators) 2. Γεννήτορες Συντακτικών Αναλυτών (Parser Generators), οι οποίοι προσφέρουν περισσότερη αξιοπιστία από τους Συντακτικούς Αναλυτές που κατασκευάζονται "µε το χέρι". 3. Βοήθειες για Code Generation. Συχνά ένας Compiler-Compiler διαθέτει µια υψηλού επιπέδου γλώσσα για τον ενδιάµεσο κώδικα, τον Assembler, ή τον κώδικα µηχανής. Ο χρήστης γράφει ρουτίνες σ' αυτή τη γλώσσα και στον τελικό Μεταγλωττιστή οι ρουτίνες καλούνται στις κατάλληλες στιγµές από τον αυτόµατα δηµιουργούµενο Συντακτικό Αναλυτή.

23 23 ΕΝΟΤΗΤΑ 1.12 ΒΟΟΤSΤRAΡΡΙΝG 'Eνας Μεταγλωττιστής χαρακτηρίζεται από τρεις γλώσσες: την πηγαία, την τελική και την γλώσσα στην οποία είναι γραµµένος. Οι γλώσσες αυτές µπορεί να είναι όλες διαφορετικές. Π.χ. ένας Μεταγλωττιστής µπορεί να τρέχει σε κάποια µηχανή και να παράγει τελικό κώδικα (Οbject Code) για µια άλλη µηχανή. Aυτός καλείται Cross- Compiler και παραδείγµατα τέτοιων υπάρχουν σε µεγάλα συστήµατα (µηχανές) που παράγουν κώδικα για να τρέξει σε µικρότερα (π.χ. σε PC). Βootstrapping είναι η διαδικασία κατασκευής ενός Μεταγλωττιστή για µια γλώσσα Χ και ο οποίος είναι γραµµένος στη γλώσσα Χ(!) και παράγει κώδικα για µια µηχανή A. Για την παρακάτω συζήτηση χρησιµοποιείται ο συµβολισµός: C Z X Y ή C Z X Y που σηµαίνει: Μεταγλωττιστής για την γλώσσα Χ, γραµµένος στην γλώσσα Ζ ο οποίος παράγει κώδικα στην γλώσσα (µηχανής ή assembly) Υ. Υποθέτουµε ότι έχουµε µια γλώσσα L, για την οποία θέλουµε ένα Μεταγλωττιστή στη µηχανή A. Γράφουµε κατ' αρχήν για τη µηχανή A ένα "µικρό" Μεταγλωττιστή C S L A A ο οποίος µεταφράζει προγράµµατα γραµµένα σε ένα υποσύνολο S της L σε κώδικα µηχανής ή Assembly A και είναι γραµµένος σε A. Κατόπιν γράφουµε ένα Μεταγλωττιστή C LA S L στο υποσύνολο S της L. 'Oταν ο C LA S L περάσει από τον C S L A A που τρέχει στη µηχανή A, το αποτέλεσµα είναι ένας Μεταγλωττιστής C A L A για ολόκληρη την γλώσσα L που µπορεί να τρέχει στη µηχανή A. ιαγραµµατικά:

24 24 C LA S C SA A C LA A Η διαδικασία αυτή µπορεί να επαναληφθεί σε 2-3 βήµατα διαλέγοντας κάθε φορά και ένα µεγαλύτερο υποσύνολο της γλώσσας S. Σύνοψη Κεφαλαίου 1 'Εχοντας πλέον µελετήσει το κεφάλαιο αυτό θα πρέπει να έχετε αποκτήσει µια συνοπτική µεν αλλά πλήρη εικόνα για το τι είναι οι µεταφραστές και ειδικότερα οι Μεταγλωττιστές και οι ιερµηνευτές που κατά κύριο λόγο µας ενδιαφέρουν. Ξεκινήσαµε µε την διαδικασία µετάφρασης φόρτωσης-εκτέλεσης ενός πηγαίου προγράµµατος έτσι ώστε να σχηµατίσετε µια εικόνα των διαδικασιών που είναι απαραίτητες να γίνουν µέχρι να είναι σε θέση να εκτελεσθεί στον υπολογιστή ένα πρόγραµµα το οποίο θα έχετε γράψει σε κάποια γλώσσα προγραµµατισµού. Στη συνέχεια είδατε επιγραµµατικά τη δοµή ενός µεταγλωττιστή να αποτελείται από ένα σύνολο δραστηριοτήτων που τις αναφέραµε σαν φάσεις και οι οποίες είναι οι εξής: λεκτική ανάλυση, συντακτική ανάλυση, σηµασιολογική ανάλυση, δηµιουργία ενδιάµεσου κώδικα, βελτιστοποίηση ενδιάµεσου κώδικα, και δηµιουργία τελικού κώδικα. Επειδή οι δραστηριότητες αυτές αν γίνονται µια-µια επιβαρύνουν πάρα πολύ τον χρόνο που απαιτείται για να ολοκληρωθεί η διαδικασία µεταγλώττισης, είδαµε πως µπορούµε να ενσωµατώσουµε τις δραστηριότητες αυτές (φάσεις) σε ένα ή περισσότερα περάσµατα κάνοντας χρήση της τεχνικής της οπισθοµπάλωσης. Την τεχνική αυτή την είδατε να εφαρµόζεται στην περίπτωση ενός Assembler.

25 25 Είδατε επίσης την δοµική και λειτουργική διαφορά ανάµεσα στους µεταγλωττιστές και τους διερµηνευτές. Είδατε δηλαδή ότι από άποψη δοµής µπορούµε να θεωρήσουµε ότι και οι δυο αποτελούνται από δυο τµήµατα το εµπρόσθιο τµήµα και το οπίσθιο τµήµα. Το εµπρόσθιο τµήµα και στις δυο περιπτώσεις εκτελεί τις ίδιες λειτουργίες και καταλήγει στη δηµιουργία του ενδιάµεσου κώδικα υποθετικής µηχανής (υποθετικού υπολογιστή). Αντίθετα το µεν οπίσθιο τµήµα του µεταγλωττιστή από αυτόν τον ενδιάµεσο κώδικα δηµιουργεί τον τελικό κώδικα, το δε οπίσθιο τµήµα του διερµηνευτή κάνει εξοµείωση της υποθετικής µηχανής και εκτέλεση του ενδιάµεσου κώδικα. Στη συνέχεια περιγράψαµε µε λίγα λόγια όλες τις φάσεις. 'Ετσι µάθατε ότι ο Λεκτικός Αναλυτής οµαδοποιεί τους χαρακτήρες του πηγαίου προγράµµατος σε λεκτικές δοµές που τις ονοµάσαµε tokens και ακόµη ότι ο ίδιος λειτουργεί σαν υπορουτίνα του Συντακτικού Αναλυτή. Ο Συντακτικός Αναλυτής οµαδοποιεί τα tokens σε συντακτικές δοµές οι οποίες µπορούν να αναπαρασταθούν µε τη βοήθεια των δένδρων ανίχνευσης ή µε κώδικα τριών διευθύνσεων (και τα δυο µπορείτε να τα θεωρήσετε σαν µορφές ενδιάµεσης γλώσσας -κώδικας- της υποθετικής µηχανής ). Επάνω σε αυτόν τον ενδιάµεσο κώδικα γίνονται οι παρεµβάσεις που αφορούν την σηµασιολογική ανάλυση (για παράδειγµα πρόσθεση επιπλέον κώδικα για την µετατροπή των τύπων των εντελών σε µια αριθµητική έκφραση). Στη συνέχεια µάθατε µερικά είδη βελτιστοποίησης του ενδιάµεσου κώδικα όπως η τοπική βελτιστοποίηση και η βελτιστοποίηση βρόχων και είδατε πως µπορείτε να δηµιουργήσετε τελικό κώδικα µηχανής από τον ενδιάµεσο κώδικα λαµβάνοντας βεβαίως υπόψιν την αρχιτεκτονική του στοχευόµενου υπολογιστή. Η διαχείριση του Πίνακα Συµβόλων και η ιαχείριση Λαθών είναι δυο άλλες πολύ σηµαντικές λειτουργίες τόσο της µεταγλώττισης όσο και της διερµήνευσης. Αυτές δεν αναφέρονται σαν ξεχωριστές φάσεις αλλά σαν διεργασίες οι οποίες γίνονται σε κάθε µία από τις φάσεις. Ακόµη, µάθατε και ότι υπάρχουν κάποια εργαλεία τα οποία µας βοηθάνε στην κατασκευή µεταγλωττιστών και διερµηνευτών και τα οποία αναφέρονται σαν γεννήτορες λεκτικών και συντακτικών αναλυτών. Τέλος, είδατε και µια ειδική περίπτωση διαδικασίας κατασκευής ενός µεταγλωττιστή η οποία αναφέρεται σαν bootstrapping.

26 26 Απαντήσεις Ασκήσεων Αυτοαξιολόγησης του Κεφαλαίου 1 Απάντηση 'Ασκησης 1 Από άποψη δοµής, ένας µεταγλωττιστής και ένας διερµηνευτής µπορούν να θεωρηθούν ότι αποτελούνται από δύο ξεχωριστά τµήµατα, το εµπρόσθιο (front-end) και το οπίσθιο (back-end) τµήµα. Το εµπρόσθιο τµήµα είναι ίδιο και στις δύο περιπτώσεις. 'Οµως, το οπίσθιο µέρος ενός διερµηνευτή, διερµηνεύει / εκτελεί την ενδιάµεση µορφή κώδικα η οποία παρήχθη από το εµπρόσθιο µέρος του, ενώ σε ένα µεταγλωττιστή το οπίσθιο µέρος του παράγει το εκτελέσιµο πρόγραµµα το οποίο θα εκτελεσθεί από τον υπολογιστή όταν το ζητήσει ο χρήστης. Απάντηση 'Ασκησης 2 α) Συχνά παίρνουµε αυτή την απάντηση που όµως δεν είναι η σωστή διότι ενώ αρκετές φορές γίνεται πράγµατι πιο µικρός σε µέγεθος (κώδικας-αριθµός εντολών) ο µεταγλωττιστής εν τούτοις ο στόχος είναι αυτός της απάντησης (γ) δηλαδή να επιταχυνθεί ο συνολικός χρόνος µετάφρασης ενός προγράµµατος από τον µεταγλωττιστή. β) Ασφαλώς και δεν είναι έτσι. Το αντίθετο µάλιστα συµβαίνει, δηλαδή για να υλοποιηθεί η οπισθοµπάλωση (µέσω της οποίας υλοποιείται η µείωση των περασµάτων), µάλλον λιγότερο τµηµατοποιηµένη γίνεται η δοµή του µεταγλωττιστή. γ) Πολύ σωστά. Πράγµατι ο στόχος είναι να µειωθεί ο χρόνος µετάφρασης του προγράµµατός σας. ηλαδή, να µειωθεί ο χρόνος που χρειάζεται ο µεταγλωττιστής να µεταφράσει το πρόγραµµά σας από πηγαίο σε τελικό κώδικα, πράγµα που επιτυγχάνεται από µεταγλωττιστές οι οποίοι κάνουν τα λιγότερα δυνατόν περάσµατα πάνω στις διάφορες εσωτερικές µορφές του προγράµµατός σας. δ) Αν επιλέξατε αυτή την απάντηση, τότε µάλλον έχετε µπερδέψει τον χρόνο µετάφρασης µε τον χρόνο εκτέλεσης ενός προγράµµατος. Ο χρόνος µετάφρασης σχετίζεται µε την µείωση των περασµάτων ενώ ο χρόνος εκτέλεσης σχετίζεται µε την ύπαρξη ή µή της φάσης βελτιστοποίησης ενός µεταγλωττιστή. ε) Αν επιλέξατε αυτή την απάντηση µάλλον διαβάσατε επιπόλαια και πιθανόν να πρέπει να µελετήσετε επιπλέον και την Θεµατική Ενότητα "Τεχνολογία Λογισµικού".

27 27 Απάντηση 'Ασκησης 3 Για την παραπάνω έκφραση µπορείς να κατασκευάσεις τα παρακάτω δύο τουλάχιστον δένδρα ανίχνευσης. Π.χ. A * B / C A * B / C (α) (β) Oι συντακτικοί κανόνες που περιγράφουν την σύνταξη µιας γλώσσας προγραµµατισµού, είναι τέτοιοι που να επιτρέπουν την κατασκευή ενός µόνο δένδρου, αλλιώς λέµε ότι η γραµµατική είναι διφορούµενη και εποµένως δεν είναι κατάλληλη να χρησιµοποιηθεί, για την κατασκευή ενός µεταγλωττιστή. Στην προκειµένη περίπτωση δεν σου έχει δοθεί σύνταξη της γραµµατικής την οποία θα έπρεπε να χρησιµοποιήσεις, εποµένως σωστά έφτιαξες δύο διαφορετικά δένδρα. Στο κεφάλαιο της Συντακτικής Ανάλυσης θα δούµε πώς γράφουµε µη διφορούµενες γραµµατικές κατάλληλες για την κατασκευή µεταγλωττιστή. Απάντηση 'Ασκησης 4 Στο κείµενο αυτό υπάρχουν σοβαρά και λιγότερο σοβαρά λάθη. Η φράση "επιστρέφει τους χαρακτήρες αυτούς στον Συντακτικό Αναλυτή ", περιέχει ένα πολύ σοβαρό λάθος. Ο Λεκτικός Αναλυτής δεν επιστρέφει χαρακτήρες αλλά, tokens τα οποία είναι κωδικοποιηµένη µορφή των λεκτικών δοµών της γλώσσας και τα οποία αντιπροσωπεύουν εν γένει σύνολα χαρακτήρων οµαδοποιηµένα από τον Λεκτικό

28 28 Αναλυτή µε βάση τους Λεκτικούς Κανόνες της γραµµατικής. εύτερο σοβαρό λάθος είναι η φράση " µετά την Σηµασιολογική Ανάλυση". Η Σηµασιολογική Ανάλυση ακολουθεί την Συντακτική Ανάλυση και δεν προηγείται αυτής. Λιγότερο σηµαντικό λάθος είναι η φράση " υπό µορφή Συντακτικού ένδρου ", ενώ το σωστό είναι "σε κάποια ενδιάµεση µορφή όπως τριάδες, τετράδες, κώδικας postfix, ή ένδρου Ανίχνευσης. Προσοχή επίσης, στη διάκριση µεταξύ Συντακτικού ένδρου και ένδρου Ανίχνευσης. Τα Συντακτικά ένδρα είναι διαφορετικά από τα ένδρα Ανίχνευσης.

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

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

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

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program) Μεταφραστές Εισαγωγή (source program) Τελικό πρόγραµµα (object program) Γιώργος Μανής Γλώσσες Είδη Μεταγλωττιστών Αρχική γλώσσα Γλώσσα υλοποίησης Τελική γλώσσα Απλοί µεταγλωττιστές Αντίστροφοι µεταγλωττιστές

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού» ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων

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

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

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

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

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

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

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

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

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Βιβλιογραφία Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers:

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

6. Εισαγωγή στον προγραµµατισµό

6. Εισαγωγή στον προγραµµατισµό 6. Εισαγωγή στον προγραµµατισµό 6.1 Η έννοια του προγράµµατος. 6.2 Ιστορική αναδροµή. 6.2.1 Γλώσσες µηχανής. ΗΜ04-Θ1Α 1. Ένα πρόγραµµα σε γλώσσα µηχανής είναι µια ακολουθία δυαδικών ψηφίων. 5. Ένα πρόγραµµα

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 2: Mεταφραστές Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

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

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες Πίνακας Περιεχοµένων Πρόλογος...vii Κεφάλαιο 1:Βασικές εισαγωγικές έννοιες...1 1.1 Η δοµή του µεταγλωττιστή...2 1.2 Η διαδικασία µεταγλώττισης...3 1.2.1 Η Λεξική Ανάλυση...6 1.2.2 Η Συντακτική Ανάλυση...6

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

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

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

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

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

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

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

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

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH. Θεµατική Ενότητα ΣXE IAΣMOΣ ΛOΓIΣMIKOY

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH. Θεµατική Ενότητα ΣXE IAΣMOΣ ΛOΓIΣMIKOY Mεταγλωττιστές ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΣXE IAΣMOΣ ΛOΓIΣMIKOY Τόµος A' Mεταγλωττιστές ΠANAΓIΩTHΣ ΠINTEΛAΣ Καθηγητής

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη

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

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

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Κεφάλαιο 4ο: Εντολές επιλογής

Κεφάλαιο 4ο: Εντολές επιλογής Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 4ο: Εντολές επιλογής Μέχρι τώρα παρατηρήσαµε ότι τα προβλήµατα που αντιµετωπίσαµε είχαν σειριακή κίνηση, δηλαδή η µία εντολή

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

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

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

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον προγραμματισμό Ενότητες: Εισαγωγή στον προγραμματισμό Η έννοια του προγράμματος Ιστορική αναδρομή Φυσικές και τεχνητές γλώσσες Τεχνικές σχεδίασης προγραμμάτων Ιεραρχική Σχεδίαση Τμηματικός Προγραμματισμός Δομημένος προγραμματισμός

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

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

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

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr

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

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό ΚΕΦΑΛΑΙΟ VI Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου σημαντικά στάδια. Τον ακριβή προσδιορισμό του προβλήματος. Την ανάπτυξη του αντίστοιχου αλγορίθμου.

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

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

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

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

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός Ενότητα 13 Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Προγραµµατισµός Κεφάλαιο 13Α: ηµιουργία Προγραµµάτων Υπολογιστή Κεφάλαιο 13Β: Γλώσσες Προγραµµατισµού και η ιαδικασία Προγραµµατισµού ρ. Παναγιώτης

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2007 ΕΚΦΩΝΗΣΕΙΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2007 ΕΚΦΩΝΗΣΕΙΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ) 2007 ΘΕΜΑ 1ο ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

ΚΕΦΑΛΑΙΟ 6 ΣΥΝΤΑΚΤΙΚΑ ΚΑΤΕΥΘΥΝΟΜΕΝΗ ΜΕΤΑΦΡΑΣΗ

ΚΕΦΑΛΑΙΟ 6 ΣΥΝΤΑΚΤΙΚΑ ΚΑΤΕΥΘΥΝΟΜΕΝΗ ΜΕΤΑΦΡΑΣΗ 1 ΚΕΦΑΛΑΙΟ 6 ΣΥΝΤΑΚΤΙΚΑ ΚΑΤΕΥΘΥΝΟΜΕΝΗ ΜΕΤΑΦΡΑΣΗ Στόχος Στόχος του Κεφαλαίου αυτού είναι να µελετήσουµε την δηµιουργία ενδιάµεσου κώδικα, µε την βοήθεια του σχήµατος Συντακτικά Κατευθυνόµενης Μετάφρασης,

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

Προγραμματισμός Υπολογιστών

Προγραμματισμός Υπολογιστών Προγραμματισμός Υπολογιστών Βασικές γνώσεις Κ. Βασιλάκης, ΣΤΕΦ, ΤΕΙ Κρήτης Η Πληροφορική και τα εργαλεία της Παροχή έγκαιρης και έγκυρης πληροφόρησης. Καταχώριση στοιχείων Αποθήκευση Επεξεργασία ψηφιακών

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

8. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις.

8. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΑ 1-6 ΟΝΟΜΑ: ΗΜΕΡΟΜΗΝΙΑ: ΒΑΘΜΟΣ: ΘΕΜΑ 1ο Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη Σωστό,

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός... 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Διάρκεια 3 ώρες Στοιχεία Μαθητή: Όνομα... Επώνυμο... Βαθμός... 2 Θεμα Α (30%) Α1 ΣΩΣΤΟ - ΛΑΘΟΣ 1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

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

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

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

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα;

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα; ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ: Θέμα 1ο I. Τι πρέπει να ικανοποιεί ένα κομμάτι κώδικα ώστε να χαρακτηριστεί ως υποπρόγραμμα; Τα υποπρογράμματα πρέπει

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

VHDL Εισαγωγικές έννοιες

VHDL Εισαγωγικές έννοιες VHDL Εισαγωγικές έννοιες ρ. Κ. Καραφασούλης ckaraf@aegean.gr Σχεδίαση Αρχικά ψηφιακά κυκλώµατα µπορούν να σχεδιασθούν µε το κατάλληλο λογισµικό. Μεγαλύτερα κυκλώµατα µπορούν να σχεδιασθούν ιεραρχικά από

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

.EVAL push bx Xor bx,bh Add si,ax.loop dec cx. 1. Fortran. 2. Cobol. 3. Algol

.EVAL push bx Xor bx,bh Add si,ax.loop dec cx. 1. Fortran. 2. Cobol. 3. Algol ΚΕΦΑΛΑΙΟ 6 Ο Ερωτήσεις- Απαντήσεις Η έννοια του προγράµµατος 1. Τι περιλαµβάνει η επίλυση ενός προβλήµατος µε τον υπολογιστή; Η επίλυση ενός προβλήµατος µε τη βοήθεια υπολογιστή περιλαµβάνει τρία εξίσου

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο : Α. Να αναφέρετε ονομαστικά τις βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. Μονάδες 8 Β. Στον

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

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

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

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

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΙΟΙΚΗΣΗΣ Το σηµερινό µάθηµα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ιδάσκων: Πέτρος Βασιλικός Λογισµικό Υπολογιστικών Συστηµάτων Λογισµικό & Προγράµµατα συστηµάτων

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ ΘΕΜΑ 1 ο Α. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη Σωστό,

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εισαγωγή Κώστας Στεργίου Τι είναι ο Η/Υ; Ένας ηλεκτρονικός υπολογιστής (Η/Υ) είναι

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

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

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

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

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

ΗΥ101: Εισαγωγή στην Πληροφορική

ΗΥ101: Εισαγωγή στην Πληροφορική Δρ. Χρήστος Ηλιούδης Τι είναι η ; Η διαδικασία του προγραμματισμού είναι μία πολύπλοκη διαδικασία που συχνά οδηγεί σε λάθη (πραγματοποιείται από ανθρώπους!!!). Τα προγραμματιστικά λάθη λέγονται bugs και

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 6 ο Με τι ασχολείται ο προγραμματισμός; Ο προγραμματισμός ασχολείται με την διατύπωση του αλγορίθμου σε κατανοητή μορφή από τον Η/Υ, δηλ. τη δημιουργία του προγράμματος, του συνόλου των εντολών που πρέπει

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 1 Προγραμματισμός Υπολογιστή Καραμαούνας Πολύκαρπος 1 7.1 Η προγραμματιζόμενη μηχανή Από τις βασικότερες διαφορές ανάμεσα στον υπολογιστή και στις περισσότερες ηλεκτρονικές συσκευές είναι η δυνατότητα

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

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

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

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός: Θέμα 1ο Α) Απαντήστε στις παρακάτω ερωτήσεις επιλέγοντας Σ (Σωστό) ή Λ (Λάθος). 1. Ένας πίνακας έχει σταθερό μέγεθος, αλλά μεταβαλλόμενο

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

Συμβολική Γλώσσα στον ΑΒΑΚΑ

Συμβολική Γλώσσα στον ΑΒΑΚΑ Συμβολική Γλώσσα στον ΑΒΑΚΑ Τα προγράμματα που είναι γραμμένα σε γλώσσα μηχανής (machine language) περιέχουν τόσο τις εντολές όσο και τις διευθύνσεις μνήμης γραμμένες σε αριθμητική μορφή και μάλιστα στο

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

Εργαστήρι Πληροφορικής Αλγόριθµος 92 Σηµειώσεις Τεχνολογικής Κατεύθυνσης Γλώσσες µηχανής Αρχικά για να µπορέσει ο υπολογιστής να εκτελέσει µία οποιαδή

Εργαστήρι Πληροφορικής Αλγόριθµος 92 Σηµειώσεις Τεχνολογικής Κατεύθυνσης Γλώσσες µηχανής Αρχικά για να µπορέσει ο υπολογιστής να εκτελέσει µία οποιαδή Εργαστήρι Πληροφορικής Αλγόριθµος 91 Σηµειώσεις Τεχνολογικής Κατεύθυνσης ΚΕΦΑΛΑΙΟ 6 Ο ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Η έννοια του προγράµµατος Ποια τα στάδια επίλυσης ενός προβλήµατος στον Υπολογιστή; Ο

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ 1 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ΗΜΙΟΥΡΓΙΑ ΤΕΛΙΚΟΥ ΚΩ ΙΚΑ

ΚΕΦΑΛΑΙΟ 7 ΗΜΙΟΥΡΓΙΑ ΤΕΛΙΚΟΥ ΚΩ ΙΚΑ 1 ΚΕΦΑΛΑΙΟ 7 ΗΜΙΟΥΡΓΙΑ ΤΕΛΙΚΟΥ ΚΩ ΙΚΑ Στόχος Στόχος του κεφαλαίου αυτού είναι να εξηγήσει τις βασικές αρχές δηµιουργίας τελικού κώδικα. Παρουσιάζει µια µηχανή (υπολογιστή) απλής αρχιτεκτονικής, τους τρόπους

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

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

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

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς K εφ. 1 σχολικού βιβλίου 1. Επιλύσιμο είναι ένα πρόβλημα για το οποίο ξέρουμε ότι έχει λύση, αλλά αυτή δεν έχει βρεθεί ακόμη. 2. Για

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

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

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

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

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

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

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ 1 Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη

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

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ΕΚΦΩΝΗΣΕΙΣ

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ΕΚΦΩΝΗΣΕΙΣ ΤΑΞΗ: ΚΑΤΕΥΘΥΝΣΗ: ΜΑΘΗΜΑ: Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ (2ος Κύκλος) ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω

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

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

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

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