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

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

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

Κεφάλαιο 7: Υπορουτίνες

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

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

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

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

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

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

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

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

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

Υποπρογράµµατα Συναρτήσεις. Στόχοι Μαθήµατος. Οι µαθητές να µπορούν:

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

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

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΠΡΟΓΡΑΜΜΑ ΠΑΙΔΑΓΩΓΙΚΗΣ ΚΑΤΑΡΤΙΣΗΣ 2 η ΕΡΓΑΣΙΑ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

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

Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού

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

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

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

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

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

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

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

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή

{ int a = 5; { int b = 7; a = b + 3;

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

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

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

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

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

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

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

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

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

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

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

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

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

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

Κεφάλαιο 12 : ΕΡΓΑΣΤΗΡΙΑΚΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑ 03 Συναρτήσεις

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

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

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

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

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

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

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

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

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

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ÏÌÉÊÑÏÍ ÖÑÏÍÔÉÓÔÇÑÉÏ ÊÏÑÄÅËÉÏ

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

Πρόβλημα 37 / σελίδα 207

ιαφάνειες παρουσίασης #5 (β)

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

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

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

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

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

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

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

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

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

ιαφάνειες παρουσίασης #3

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

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

Transcript:

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1

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

Βασικές Διεργασίες Μεταγλωττιστή Ανάλυση πηγαίου προγράμματος Σύνθεση τελικού προγράμματος στόχου Κατευθυνόμενος από το συντακτικό Η διαδικασία μεταγλώττισης ενός πηγαίου προγράμματος καθορίζεται σχεδόν αποκλειστικά από τη συντακτική δομή του 3

Λεκτική Ανάλυση Λειτουργία κατά την οποία ένα τμήμα του μεταγλωττιστή (λεκτικός αναλυτής) διαβάζει το πηγαίο πρόγραμμα χαρακτήρα προς χαρακτήρα. Οι χαρακτήρες ομαδοποιούνται σε ανεξάρτητες οντότητες πχ λέξεις-κλειδιά, μεταβλητές, αριθμοί κλπ. 4

Παράδειγμα Ο λεκτικός αναλυτής διαβάζει την εντολή: height := base+old *10; Η εντολή χωρίζεται στις οντότητες «height», «:=», «base», «+», «old», «*», «10» και «;». Ο λεκτικός αναλυτής πραγματοποιεί και άλλες αρχικές διεργασίες, που διευκολύνουν τις επόμενες φάσεις της μεταγλώττισης. 5

Συντακτική Ανάλυση Η ακολουθία από ανεξάρτητες οντότητες μεταβιβάζεται στον συντακτικό αναλυτή Ελέγχει αν η ακολουθία σχηματίζει συντακτικά ορθές φράσεις της πηγαίας γλώσσας Η πληροφορία, που διαθέτει για αυτό, είναι ένα σύνολο κανόνων, που περιγράφουν το συντακτικό της πηγαίας γλώσσας και έχουν μορφή επεκτεταμένης γραμματικής χωρίς συμφραζόμενα 6

Συντακτική Ανάλυση Αν εντοπισθεί λάθος στο συντακτικό εξάγεται κατάλληλο διαγνωστικό μήνυμα Σε πολλές περιπτώσεις λάθους ο συντακτικός αναλυτής ξεπερνά το λάθος και συνεχίζει τη διαδικασία Στο τέλος έχει σχηματισθεί ένα συντακτικό δέντρο, που χρησιμοποιείται στην επόμενη φάση της μεταγλώττισης 7

Σημασιολογική Ανάλυση Έλεγχος της στατικής σημασιολογίας κάθε φράσης του πηγαίου προγράμματος. Πχ για μία εντολή ανάθεσης ελέγχεται η δήλωση όλων των μεταβλητών, που θα χρησιμοποιηθούν Μετάφραση στην περίπτωση, που είναι σωστά Παραγωγή ενδιάμεσου κώδικα, που υλοποιεί τη συγκεκριμένη εντολή 8

Βελτιστοποίηση Ο ενδιάμεσος κώδικας μετασχηματίζεται σε ισοδύναμο και περισσότερο αποδοτικό κώδικα. Η φάση αποτελείται από υπο-φάσεις, που επαναλαμβάνονται Επιτρέπεται στον προγραμματιστή να απενεργοποιήσει τη φάση των βελτιστοποιήσεων 9

Παραγωγή Τελικού Κώδικα Μετατροπή ενδιάμεσου κώδικα σε εκτελέσιμο κώδικα μηχανής Απαιτείται λεπτομερής γνώση χαρακτηριστικών μηχανής στην οποία θα εκτελεσθεί ο κώδικας-στόχος Απλούστευση της διαδικασίας με συνένωση φάσεων παραγωγής ενδιάμεσου και τελικού κώδικα 10

Διαδικασίες (procedures) Χαρακτηριστικό σύγχρονων γλωσσών προγραμματισμού Επιτρέπει την ονομασία τμημάτων του κώδικα και «κλήση» τους από άλλα σημεία του προγράμματος Το τμήμα αυτό του κώδικα ονομάζεται σώμα της διαδικασίας Έχει σύνολο από τυπικές παραμέτρους Καλείται με πραγματικές παραμέτρους Το σώμα της εκτελείται (ενεργοποίηση) 11

Αναδρομή Μία διαδικασία ονομάζεται αναδρομική όταν καλεί η ίδια τον εαυτό της ή όταν καλεί κάποια άλλη διαδικασία, που μέσω σειράς κλήσεων ξανακαλεί την αρχική διαδικασία. 12

Μέθοδοι Περάσματος Παραμέτρων Τρόποι αντικατάστασης των τυπικών παραμέτρων μιας διαδικασίας από πραγματικές 13

Κλήση με Τιμή Οι τυπικές παράμετροι της διαδικασίας που καλείται παίρνουν την τιμή των πραγματικών παραμέτρων Βήματα Υπολογισμός της τιμής της έκφρασης Ε (έστω υ) Εκτέλεση του σώματος της διαδικασίας p. Όταν συναντάται η τυπική παράμετρος της p (έστω x), αντικαθίσταται με την προϋπολογισμένη τιμή υ. 14

Παράδειγμα 6.1 Έστω η διαδικασία function square(x:integer):integer; begin square := x*x; end; Αν καλέσουμε τη συνάρτηση square ως square(2+3) υπολογίζεται η τιμή 2+3=5 και αρχίζει η εκτέλεση του σώματος της διαδικασίας. Όταν συναντηθεί η έκφραση x*x, τα x αντικαθίστανται από το 5 και επιστρέφει η τιμή 25. 15

Παράδειγμα 6.2 Έστω η διαδικασία procedure change (x,y: integer); var z:integer; begin end; z:=x; x:=y; y:=z; Η κλήση change (a,b), όπου a,b μεταβλητές τύπου integer, δεν έχει κανένα αποτέλεσμα πάνω στις μεταβλητές a και b. 16

Κλήση με αναφορά Οι τυπικές παράμετροι μιας διαδικασίας γίνονται συνώνυμες με τη θέση στη μνήμη αντίστοιχων πραγματικών παραμέτρων Pascal Η λέξη-κλειδί var κάνει την τυπική παράμετρο x να φιλοξενεί στη διάρκεια των κλήσεων τη διεύθυνση της αντίστοιχης πραγματικής παραμέτρου 17

Παράδειγμα 6.3-1 Έστω η διαδικασία procedure swap(var x:integer; var y:integer); var z:integer; begin z:=x; x:=y; y:=z; end; 18

Παράδειγμα 6.3-2 Κλήση της μορφής swap(a,b) με a και b μεταβλητές τύπου integer αποτέλεσμα ανταλλαγή τιμών των μεταβλητών a και b Κλήση με αναφορά πραγματοποιείται C με χρήση δεικτών Java βασική μέθοδος περάσματος παραμέτρων, όταν πρόκειται για πέρασμα αντικειμένων 19

Κλήση με Όνομα Ιστορικό ενδιαφέρον Βασική μέθοδος κλήσης στην Algol 60 Σημερινή χρήση Παρόμοια μέθοδος κλήσης στις συναρτησιακές γλώσσες προγραμματισμού 20

Συνοπτική Περιγραφή Μεθόδου Κλήσης με Όνομα Αντικατάσταση πραγματικών παραμέτρων ως κείμενο στο σώμα της διαδικασίας στα σημεία εμφάνισης αντίστοιχων τυπικών παραμέτρων Αλλαγή ονομάτων των μεταβλητών της διαδικασίας για να μην υπάρχουν μεταβλητές πραγματικών παραμέτρων με το ίδιο όνομα 21

Συνοπτική Περιγραφή Μεθόδου Κλήσης με Όνομα Αντικατάσταση του σώματος της διαδικασίας στο σημείο αρχικής κλήσης Αλλαγή ονομάτων των μεταβλητών της διαδικασίας για να μην υπάρχουν τοπικές μεταβλητές στο σημείο κλήσης με το ίδιο όνομα 22

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

Παράδειγμα 6.4 Αναδρομικός υπολογισμός του παραγοντικού ενός φυσικού αριθμού function f(n:integer): integer; begin end; if n=0 then f:=1 else f:=n*f(n-1); 24

Ενεργοποίηση Μία αναδρομική διαδικασία μπορεί να έχει περισσότερες από μία ταυτόχρονες ενεργοποιήσεις Δικό της χώρο στη μνήμη, για να εκτελεσθεί Τοπικές μεταβλητές ανεξάρτητες από αυτές των υπόλοιπων ενεργοποιήσεων 25

Δέντρο Ενεργοποιήσεων Η ροή ελέγχου ανάμεσα στις ενεργοποιήσεις διαδικασιών δημιουργεί ένα νοητό δέντρο Όταν η ενεργοποίηση p καλεί την q, τότε ο κόμβος του δέντρου για την p έχει τον κόμβο για την q ως παιδί του. Αν η p καλεί την q πριν την r, τότε ο κόμβος για την r εμφανίζεται δεξιά από τον κόμβο για την q. 26

Εγγραφή ενεργοποίησης Τα δεδομένα των ενεργοποιήσεων μαζεύονται σε μία δομή, που ονομάζεται εγγραφή ενεργοποίησης. Οι εγγραφές τοποθετούνται η μία μετά την άλλη σε μία κατάλληλη μεγαλύτερη δομή, που ονομάζεται στοίβα. 27