εύτερη γενιά: γλώσσα assembly

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραμματισμού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

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

Α. Ερωτήσεις Ανάπτυξης

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

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

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

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

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

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

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

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

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

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

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

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

6. 1 Η έννοια του προγράμματος

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

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

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

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

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

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

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

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

Αρχές Προγραμματισμού Υπολογιστών

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

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

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

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

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Αρχιτεκτονικές Υπολογιστών

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

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

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

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

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

Κλάσεις και Αντικείµενα

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

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

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

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

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

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

Εισαγωγή στην πληροφορική

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

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

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

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

Transcript:

ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Γενιές γλωσσών προγραµµατισµού (Σχήµα 6.1) 6.1 Ιστορική εξέλιξη 6.2 Παραδοσιακές έννοιες προγραµµατισµού 6.3 ιαδικασιακές µονάδες 6.4 Υλοποίηση γλώσσας 6.5 Αντικειµενοστρεφής προγραµµατισµός 6.6 Προγραµµατισµός ταυτόχρονων δραστηριοτήτων 6.7 ηλωτικός προγραµµατισµός 1 2 εύτερη γενιά: γλώσσα assembly Χαρακτηριστικά µίας γλώσσας assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων Χρήση µνηµονικών ονοµάτων για την αναπαράσταση εντολών. Ονόµατα για όλους τους καταχωρητές. Τα αναγνωριστικά (identifiers) είναι περιγραφικά ονόµατα για τις θέσεις µνήµης, τα οποία επιλέγονται από τον προγραµµατιστή. Υπάρχει ακριβής αντιστοιχία µεταξύ των εντολών της µηχανής και των εντολών assembly. O προγραµµατιστής πρέπει να σκέφτεται σε γλώσσα µηχανής. Εγγενώς εξαρτηµένη από τη µηχανή. Η µετάφραση σε γλώσσα µηχανής γίνεται από ένα πρόγραµµα που ονοµάζεται assembler. 3 4

Παράδειγµα γλώσσας assembly Τρίτη γενιά γλωσσών Γλώσσα µηχανής 156C 166D 5056 30CE C000 Γλώσσα assembly LD R5, Price LD R6, ShippingCharge ADDI R0, R5 R6 ST R0, TotalCost HLT Υψηλού επιπέδου αρχέτυπα. Ανεξάρτητες από τη µηχανή (τις περισσότερες φορές). Παραδείγµατα: FORTRAN, COBOL Κάθε αρχέτυπο ανταποκρίνεται σε µία µικρή ακολουθία εντολών γλώσσας µηχανής. Μεταφράζεται σε γλώσσα µηχανής από ένα πρόγραµµα που λέγεται compiler (µεταγλωττιστής). 5 6 Η εξέλιξη των προγραµµατιστικών µοντέλων (Σχήµα 6.2) Τα διάφορα µοντέλα Θεµελιωδώς διαφορετικές προσεγγίσεις στη κατασκευή λύσεων σε προβλήµατα!! Προστακτικό µοντέλο (imperative, procedural programming) Παραδοσιακή προσέγγιση Γλώσσα µηχανής Κεφ 2 ηλωτικό µοντέλο (declarative prog.) Υλοποιείται ένας γενικός αλγόριθµος επίλυσης προβληµάτων Προγραµµατισµός: διατύπωση του συγκεκριµένου προβλήµατος στην µορφή που επιλύει ο ανωτέρω αλγόριθµος Αλγόριθµος ανακαλύπτει τις λύσεις 7 8

Τα διάφορα µοντέλα (συν.) Συναρτησιακό µοντέλο (functional programming) Πρόγραµµα = συνάρτηση που µετασχηµατίζει εισόδους σε εξόδους Προγραµµατισµός: σύνθεση αυτής της συνάρτησης από απλούστερες Αντικειµενοστρεφές µοντέλο (object oriented prog.) Κατά βάση προστακτικό µοντέλο Μονάδες δεδοµένων = ενεργά αντικείµενα Παράδειγµα: λίστα ονοµάτων Παραδοσιακός προγραµµατισµός: λίστα = σύνολο δεδοµένων, προγραµµατιστής υπεύθυνος να κατασκευάσει αλγ. προσπέλασης OOP: λίστα = αντικείµενο = δεδοµένα + διαδικασίες χειρισµού Επίπεδο αφαίρεσης: δεν µας ενδιαφέρει η υλοποίηση, ελεγχόµενη προσπέλαση ηµιουργία ιεραρχιών (κληρονοµικότητα) 9 Μια συνάρτηση για τον ισολογισµό µπλοκ επιταγών η οποία έχει κατασκευαστεί από απλούστερες συναρτήσεις (Σχήµα 6.3) (Find_diff (Find_sum Old_balance Credits) (Find_sum Debits)) (First (Sort List)) 10 Η σύνθεση ενός τυπικού προστακτικού προγράµµατος ή προγραµµατιστικής µονάδας (Σχήµα 6.4) ηλώσεις µεταβλητών σε C, C++, C# και Java (Σχήµα 6.5) float Length, Width; int Price, Tax, Total; char Symbol 11 12

οµές δεδοµένων Πίνακες Μεταβλητές συσχετίζονται και µε δοµές δεδοµένων Νοητικά σχήµατα / διατάξεις δεδοµένων Αλγόριθµοι προτιµούν τα δεδοµένα να είναι δοµηµένα Πίνακες Λίστες ένδρα Πως τα υλοποιούµε στη µνήµη; οµή δεδοµένων: α11 α12 α13 α21 α22 α23 γραµµή 1 γραµµή 2 γραµµή 3 Μνήµη: αρχή του πίνακα... γραµµή 1 γραµµή 2 γραµµή 3... 13 14 Λίστες ένδρα Λίστα: 10, 12, 6, 7 πρόσθεση µέλους: 10, 12, 2, 6, 7 pointer (δείκτης) T Α οµή δεδοµένων: A B C... 27 30 34 36... 10 30 12 34 6 36 7 nil... Β nil nil C D E Υλοποίηση στη µνήµη: 27 27 30 34 36 40 10 30 12 40 6 36 7 nil 2 34 D nil nil E nil nil 15 16

Ένας δισδιάστατος πίνακας δύο γραµµών και εννέα στηλών (Σχήµα 6.6) ήλωση ετερογενούς πίνακα (Σχήµα 6.7) 17 18 Ηδοµή βρόχου for και η αναπαράσταση της στις γλώσσες C++, C# και Java (Σχήµα 6.9) οµές ελέγχου και οι αναπαραστάσεις τους στις γλώσσες C, C++, C#, και Java (Σχήµα 6.8) 19 20

6.3 Η ροή ελέγχου σε ένα πρόγραµµα µε διαδικασίες (Σχήµα 6.10) Η διαδικασία ProjectPopulation σε γλώσσα C (Σχήµα 6.11) 21 22 Εκτέλεση της διαδικασίας Επίδειξη και µεταβίβαση παραµέτρων κατ αξία (Σχήµα 6.12) Εκτέλεση της διαδικασίας Επίδειξη και µεταβίβαση παραµέτρων κατ αναφορά (Σχήµα 6.13) 23 24

ΗσυνάρτησηCylinderVolume γραµµένη στη γλώσσα C (Σχήµα 6.14) 6.4 Υλοποίηση γλώσσας: Μετάφραση Χρειαζόµαστε µετάφραση για εντολές σε γλώσσα υψηλού επιπέδου δοµές δεδοµένων (υψηλού επιπέδου) i:=0; while i<n do {A[i]:=B[i]; i:=i+1} δύο στρατηγικές: διερµηνεία (interpretation) µεταγλωττισµός (compilation) 25 26 ιερµηνεία Μεταγλωττισµός Μεταφράζει και εκτελεί το πρόγραµµα υψηλού επιπέδου εντολή προς εντολή ξεκίνα από την αρχή του προγράµµατος υψηλού επιπέδου repeat µετάφρασε την επόµενη εντολή υψηλού επιπέδου εκτέλεσε την µετάφραση της εντολής µε τα αντίστοιχα δεδοµένα until τέλος προγράµµατος Compiler: µεταφράζει µία φορά το πρόγραµµα υψηλού επιπέδου (source code) σε πρόγραµµα γλώσσας µηχανής (object code) ξεκίνα από την αρχή του προγράµµατος υψηλού επιπέδου repeat µετάφρασε την επόµενη εντολή υψηλού επιπέδου until τέλος προγράµµατος κάνε τις τελικές αλλαγές στον µεταφρασµένο κώδικα ώστε να είναι έτοιµος για εκτέλεση 27 28

Μεταγλωττισµός vs. ιερµηνεία Η διαδικασία της µεταγλώττισης (Σχήµα 6.15) Interpreters: το πρόγραµµα τρέχει λίγες φορές ταχύτητα όχι σηµαντική λίγη µνήµη ανακάλυψη λαθών (debugging) Compilers: το ίδιο πρόγραµµα τρέχει πολλές φορές ταχύτητα σηµαντική Πηγαίο Πρόγραµµα Λεκτικός Αναλυτής Συντακτικός Αναλυτής Γεννήτρια κώδικα Πρόγραµµα αντικείµενο 29 30 ιάγραµµα σύνταξης της εντολής αν-τότεαλλιώς του ψευδοκώδικά µας (Σχήµα 6.16) Ορισµός σύνταξης Λογική αν τότε Εντολή Παράσταση αλλιώς Εντολή Γραµµατικές: BNF σύνταξη κανόνες παραγωγής, τερµατικά, µη-τερµατικά τερµατικά σύµβολα (tokens): στοιχειώδη σύµβολα, δεν αναλύονται περισσότερο (τύποι λέξεων...) µη-τερµατικά σύµβολα: συντακτικές κατηγορίες (προτάσεις, υπο-προτάσεις,...) δυνατότητα αναδροµικών ορισµών 31 32

Παράδειγµα statement -> conditional loop assignment conditional -> if condition then statement loop -> while condition do statement assignment -> set name to expression expression -> id operator id operator -> + - condition -> id relation num relation -> eq neq id : letter (letter digit) * letter : a b c... num : digit (digit)* digit : 0 1... if : if eq : = then : then... neq :!= L G Συντακτική περιγραφή (σύνταξη προτάσεων από tokens) Λεξικογραφική περιγραφή (σύνταξη των tokens) 33 Παράδειγµα Συντακτική ανάλυση συντακτικό statement conditional δένδρο statement condition assignment relation expression operator if id neq num then set id to id + id b if b x b b! = b 1 then b set b y b to b x + y Λεξικογραφική ανάλυση 34 ιαγράµµατα σύνταξης που περιγράφουν τη δοµή µίας απλής αλγεβρικής παράστασης (Σχήµα 6.17) Το δέντρο συντακτικής ανάλυσης για τη συµβολοσειρά x+y*z σύµφωνα µε τα διαγράµµατα σύνταξης του Σχήµατος 6.17 (Σχήµα 6.18) 35 36

ύο διαφορετικά δέντρα συντακτικής ανάλυσης για την εντολή αν Β1 τότε αν Β2 τότε αλλιώς S1 αλλιώς S2 (Σχήµα 6.19) Οι φάσεις της µεταγλώττισης αφαιρεί άχρηστη πηγαίο πρόγραµµα πληροφορία σε γλώσσα υψηλού επιπέδου Λεξικογραφική ανάλυση L... bif bbx17=bmaxb-3... 41 blank space 12 πίνακας αριθµ. σταθερών τιµή θέση 3 100 4001 101 3 12 19 13 if id eq id - num Συντακτική ανάλυση G nil nil nil Γέννηση κώδικα συντακτικό δένδρο αντικείµενο πρόγραµµα σε γλώσσα µηχανής πίνακας συµβόλων όνοµα τύπος θέση στη µνήµη x17 integer 1445 y integer 1446 max integer 1447 37 38 Συντακτική ανάλυση Γέννηση κώδικα abcdbwbwbw Λεξικογραφική ανάλυση Συντακτική ανάλυση Κατασκευή συντακτικού δένδρου (parse tree) bottom up top - down tokens Γραµµατική G τερµατικά (tokens) Γέννηση κώδικα αρχικό σύµβολο κανόνας της γραµµατικής 39 statement conditional statement condition relation assignment expression operator if id neq num then set id to id + id x integer 1456 1 100 y integer 1457 1000 load 1456 1001 subtract 100 1002 jumpzero 1006 1003 load 1456 1004 add 1457 1005 store 1457 1006... module generate-expression(t) A1:= & of left child generate load A1 A2:= & of right child if op = + then generate add A2 else generate subtract A2 40

Assemblers Μια αντικειµενοστρεφής προσέγγιση στη διαδικασία της µετάφρασης-µεταγλώττισης (Σχήµα 6.20) κώδικας σε γλώσσα assembly (συµβολική γλώσσα) Παράδειγµα γραµµατικής µιας γλώσσας τύπου assembly Assembler statement -> operation address operation -> load store add... address -> id num address op num op -> + - όνοµα (id): διεύθυνση στην µνήµη = µνηµονικός τρόπος να αναφερόµαστε σε διευθύνσεις load A load 3 load A+2 κώδικας µηχανής A 500 501 502 Α <-> θέση 500 41 42 6.5 Ολόκληρη η διαδικασία προετοιµασίας ενός προγράµµατος για εκτέλεση (Σχήµα 6.21) Αντικείµενα και κλάσεις Πηγαίο Πρόγραµµα Μετάφραση Πρόγραµµα Σύνδεση Υποµονάδα Φόρτωση αντικείµενο φόρτωσης Εκτελέσιµο Πρόγραµµα Αντικείµενο είναι µία ενεργή προγραµµατιστική µονάδα που περιέχει τόσο δεδοµένα όσο και διαδικασίες. Κλάση είναι ένα πρότυπο για όλα τα αντικείµενα του ίδιου τύπου. Ένα Αντικείµενο συνήθως ονοµάζεται στιγµιότυπο (instance) της κλάσης. 43 44

Στοιχεία ενός αντικειµένου Ενθυλάκωση Μεταβλητή στιγµιότυπου είναι µία µεταβλητή που βρίσκεται στο εσωτερικό ενός αντικειµένου. Μέθοδος είναι µία διαδικασία στο εσωτερικό ενός αντικειµένου. Μπορεί να χειριστεί τις µεταβλητές στιγµιότυπου ενός αντικειµένου. Μέθοδος κατασκευής (constructor) είναι µία ειδική µέθοδος που εκτελείται αυτόµατα κατά τη δηµιουργία ενός αντικειµένου από την κλάση. Ενθυλάκωση (encapsulation) είναι ένας τρόπος περιορισµού της πρόσβασης στις εσωτερικές ιδιότητες ενός αντικειµένου. Μπορεί να είναι: Ιδιωτική. ηµόσια. 45 46 Πρόσθετες ιδέες για την αντικειµενοστρέφεια Ηδοµή µίαςκλάσηςπουπεριγράφειέναόπλο λέιζερ σε ένα παιχνίδι υπολογιστών (Σχήµα 6.22) Η κληρονοµικότητα επιτρέπει σε µία κλάση να περιλαµβάνει ιδιότητες κάποιας προηγούµενης κλάσης. Ο πολυµορφισµός επιτρέπει σε µία µέθοδο που κάνει κλήση να ερµηνευτεί κατά περίπτωση από το αντικείµενο που λαµβάνει την κλήση. 47 48

Μια κλάση µε µέθοδο κατασκευής (Σχήµα 6.23) Οορισµός της κλάσης LaserClass µε χρήση ενθυλάκωσης, όπως θα εµφανιζόταν σε ένα πρόγραµµα Java ή C# (Σχήµα 6.24) 49 50 6.6. Προγραµµατισµός ταυτόχρονων δραστηριοτήτων ιάδραση µεταξύ διεργασιών Παράλληλη ή ταυτόχρονη επεξεργασία είναι η παράλληλη εκτέλεση πολλών διεργασιών. Η πραγµατική παράλληλη επεξεργασία απαιτεί πολλές CPUs κάθε µία από τις οποίες θα εκτελεί και µία διεργασία. Μπορεί να προσοµοιωθεί µε το µερισµό του χρόνου τoυ µοναδικού επεξεργαστή. Αµοιβαίος αποκλεισµός είναι µία µέθοδος που εξασφαλίζει ότι τα δεδοµένα µπορούν να προσπελαστούν από µία µόνο διεργασία τη φορά. Αυτοελεγχόµενο (mutual) λέγεται ένα στοιχείο δεδοµένων µε τη δυνατότητα να ελέγχει την πρόσβαση στον εαυτό του. 51 52

Παραγωγή διεργασιών (Σχήµα 6.25) 6.7 ηλωτικός προγραµµατισµός Επίλυση λέγεται ο συνδυασµός δύο ή περισσοτέρων προτάσεων για την παραγωγή µίας νέας λογικά ισοδύναµης πρότασης. Παράδειγµα: (P OR Q) AND (R OR Q) δίνει ως αποτέλεσµα (P OR R). Επιλυθέν ονοµάζεται η νέα πρόταση που σχηµατίζεται από την επίλυση. Μορφή όρων έχουµε σε µία πρόταση των οποίων τα θεµελιώδη στοιχεία συνδέονται µε τη λογική πράξη ΟR. Ενοποίηση είναι η διαδικασία ανάθεσης τιµών σε µεταβλητές µέσα σε µία πρόταση. 53 54 Επίλυση των προτάσεων (P OR Q) και (R OR Q) ώστε να παραχθεί η (P OR R) (Σχήµα 6.26) Επίλυση των προτάσεων (P OR Q), (R OR Q), R, και P (Σχήµα 6.27) 55 56

Prolog Γεγονός (Fact): όνοµακατηγορήµατος(ορίσµατα) Παράδειγµα: parent( bill, mary) Κανόνας (Rule): συµπέρασµα:-πρόταση :- σηµαίνει αν Παράδειγµα: wise(x) :- old(x). Παράδειγµα: faster(x, Z) :- faster(x, Y), faster(y, Z) Όλες οι προτάσεις είναι είτε γεγονότα είτε κανόνες. 57