Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 2 Εισαγωγή - 1 Μία κλασσική γλώσσα προγραμματισμού αποτελείται από: – Εκφράσεις (των οποίων η τιμή πρέπει να απποτιμηθεί) – Εντολές (οι οποίες εκτελούνται και αλλάζουν την κατάσταση του υπολογιστή)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 3 Εισαγωγή - 2 Βασική σημασιολογική έννοια – Κατάσταση Τιμές, που έχουν οι μεταβλητές στη μνήμη του υπολογιστή Η τιμή μίας έκφρασης του προγράμματος εξαρτάται από την παρούσα κατάσταση του υπολογιστή Αλλαγή κατάστασης (π.χ. με καταχώρηση νέας τιμής σε μία από τις μεταβλητές του προγράμματος)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 4 Προστακτικές Γλώσσες Δομές ελέγχου – Καθορίζουν την πορεία εκτέλεσης εντολών ενός προγράμματος – Π.χ. If-then-else, for, while – Υποστηρίζονται από προστακτικές γλώσσες
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 5 Συντακτικό Απλή προστακτική γλώσσα – Υποστήριξη δύο τύπων δεδομένων Τιμές αληθείας (Boolean) Φυσικούς αριθμούς (Natural) – Εισαγωγή και άλλων τύπων χωρίς πρόβλημα Int, real, char – Τρεις κατηγορίες συντακτικών στοιχείων Λογικές εκφράσεις Αριθμητικές εκφράσεις Εντολές
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 6 Βασικές Αριθμητικές και Λογικές Εκφράσεις Αριθμητικές – Σταθερά (0) – Τελεστής (succ) Παράγει τον επόμενο φυσικό αριθμό Λογικές – Σταθερά true – Εκφράσεις, που παράγονται με χρήση τελεστών (not, and, κλπ) Προσθήκη επιπλέον συμβόλων (πχ false,1,2 κλπ) και τελεστών χωρίς πρόβλημα
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 7 Κύριες Εντολές «Κενή» εντολή (skip) – Δεν έχει κανένα αποτέλεσμα Σύνθεση εντολών – Συμβολισμός με «;» Μηχανισμός βρόγχου – Ο βρόγχος “for N do C” εκτελείται υπολογίζοντας την τιμή της αριθμητικής έκφρασης Ν και μετά εκτελώντας το σώμα C τόσες φορές όσες είναι η τιμή της αριθμητικής έκφρασης. Ο βρόγχος ονομάζεται οριστικός, γιατί ο αριθμός των επαναλήψεων καθορίζεται πριν την εκτέλεση του.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 8 Εντολές Η γλώσσα δεν διαθέτει (αρχικά) μηχανισμούς αλλαγής της κατάστασης ούτε μεταβλητές.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 9 Συντακτικό Δίνεται με τη βοήθεια context-free γραμματικής – Το σύμβολο C αναπαριστά μία εντολή Β μία λογική έκφραση Ν μία αριθμητική έκφραση
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 10 Κανόνες Παραγωγής Εντολών C::= skip | C o ; C 1 | for N do C | if B then C o else C 1 | (C)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 11 Κανόνες Παραγωγής Λογικών Εκφράσεων Β ::= true | not B | B o and B 1 | N o < N 1 | N o = N1 | B o = B 1 | if B then B o else B 1 | (B)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 12 Κανόνες Παραγωγής Αριθμητικών Εκφράσεων N ::= 0 | succ N | if B then N o else N 1 | (N)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 13 Σημασιολογία - 1 Βασική είναι η έννοια της κατάστασης (state) – Αναπαριστά τη μνήμη υπολογιστή – Η τιμή μιας έκφρασης σε μία προστακτική γλώσσα προγραμματισμού εξαρτάται από τις μεταβλητές της έκφρασης. – Οι τιμές των μεταβλητών φυλάσσονται στη μνήμη του υπολογιστή Η γλώσσα όπως ορίσθηκε δεν διαθέτει μεταβλητές και εντολές ανάθεσης
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 14 Σημασιολογία - 2 Η γλώσσα όμως θα επεκταθεί και έχουν ήδη εισαχθεί απλές εντολές Η σημασιολογία της γλώσσας δίνεται με βάση την έννοια της κατάστασης
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 15 Σημασιολογία - 3 Έστω σύνολο καταστάσεων S Το νόημα μιας – Έκφρασης της γλώσσας είναι μία συνάρτηση η οποία για κάθε κατάσταση του υπολογιστή δίνει την τιμή της έκφρασης σε σχέση με την κατάσταση αυτή – Εντολής είναι μία συνάρτηση η οποία μετασχηματίζει την τρέχουσα κατάσταση του υπολογιστή σε μία νέα κατάσταση
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 16 Συναρτήσεις C [[ · ]] – Δίνει νόημα στις εντολές της γλώσσας Β [[ · ]] – Δίνει νόημα στις λογικές εκφράσεις N [[ · ]] – Δίνει νόημα στις αριθμητικές εκφράσεις Οι συναρτήσεις αυτές ορίζονται αναδρομικά και ο ορισμός καθεμίας χρησιμοποιεί τις υπόλοιπες
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 17 Ορισμός Συνάρτησης Β [[ · ]] Β [[true]]s = true true, if B [[B]]s =false B [[not B]]s = false, if B [[B]]s =true true, if B [[B o ]]s =true and B [[B o and B 1 ]]s = B [[B 1 ]]s =true false, otherwise
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 18 Ορισμός Συνάρτησης Β [[ · ]] true, if N [[N o ]]s < N [[N 1 ]]s B [[N o < N 1 ]]s = false, otherwise true, if N [[N o ]]s = N [[N 1 ]]s B [[N o = N 1 ]]s = false, otherwise
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 19 Ορισμός Συνάρτησης Β [[ · ]] true, if B [[B o ]]s = B [[B 1 ]]s B [[B o = B 1 ]]s = false, otherwise B [[B o ]]s, if B [[B]]s = true B [[ if B then B o else B 1 ]]s = B [[B 1 ]]s, otherwise B [[(B)]]s= B [[B]]s
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 20 Ορισμός Συνάρτησης N [[ · ]] N [[0]]s = 0 N [[succ N]]s = N [[N]]s +1 N [[N o ]]s, if B [[B]]s = true N [[ if B then N o else N 1 ]]s = N [[N 1 ]]s, otherwise N [[(N)]]s= N [[N]]s
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 21 Σημασιολογία Εντολών Δίνεται από τη συνάρτηση C [[ · ]] C [[skip]]s = s C [[C o ;C 1 ]]s = C [[C 1 ]]( C [[C o ]]s) C [[for N do C]]s = C [[C]] n (s), where n= N [[N]]s C [[C o ]]s, if B [[B]]s = true C [[ if B then C o else C 1 ]]s = C [[C 1 ]]s, otherwise C [[(C)]]s= C [[C]]s
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 22 Δομική Επαγωγή Τεχνική για αποδείξεις στη σημασιολογία Εφαρμογή της συνηθισμένης επαγωγής στην συντακτική δομή των εκφράσεων μιας γλώσσας (πιο συγκεκριμένα στο βάθος του συντακτικού δέντρου των εκφράσεων της γλώσσας)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 23 Δομική Επαγωγή Μία ιδιότητα αποδεικνύεται για κάθε – Ένα από τα πρωτόγονα στοιχεία του συντακτικού της γλώσσας – Σύνθετη έκφραση της γλώσσας με βάση την υπόθεση ότι οι εκφράσεις που την αποτελούν έχουν την ιδιότητα
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 24 Παράδειγμα 4.1 Με τη χρήση δομικής επαγωγής μπορεί να δειχθεί ότι για την δεδομένη γλώσσα (που δεν έχει εντολές ανάθεσης) ισχύει: C [[C]]s = s για κάθε εντολή C και για κάθε κατάσταση s.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 25 Παράδειγμα 4.1 Για την επαγωγική βάση αρκεί να εξετασθεί η περίπτωση C=skip, για την οποία ισχύει το ζητούμενο, καθώς C[[skip]]s=s Μένει να δειχθεί ότι ισχύει και για πιο σύνθετες εντολές με βάση ότι ισχύει για τις υποεντολές, που τις συνθέτουν. Αυτό απαιτεί την εξέταση τεσσάρων περιπτώσεων μιας σύνθετης εντολής (σύνθεση εντολών, for, if και παρενθετοποίηση).
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 26 Σύνθεση C [[C o ;C 1 ]]s = C [[C 1 ]]( C [[C o ]]s) (Semantics) = C [[C 1 ]](s) (Hypothesis) = s (Hypothesis) Οι υπόλοιπες περιπτώσεις σύνθετων εντολών μπορούν να δειχθούν με ανάλογο τρόπο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 27 Εντολές Ανάθεσης Σημαντική έλλειψη της γλώσσας η απουσία μεθόδων για προσπέλαση και αλλαγή της κατάστασης (δηλαδή της μνήμης) Για το σκοπό αυτό ορίζεται ένα σύνολο ονομάτων μεταβλητών (variable-identifiers) – Συμβολίζεται με Var – Χωρίζεται σε δύο υποσύνολα μεταβλητών Λογικές (Boolean) Αριθμητικές (Natural)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 28 Συνάρτηση π Προσδιορίζει τον τύπο της κάθε μεταβλητής Παράδειγμα: Αν i είναι μία λογική μεταβλητή, τότε π(i)=boolean, ενώ αν j είναι μία αριθμητική μεταβλητή, τότε π(j)= natural
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 29 Επέκταση Συντακτικού Επιτρέπει χρήση μεταβλητών και εντολών ανάθεσης Επεκτείνουμε κανόνες παραγωγής εκφράσεων και εντολών της γλώσσας, ως εξής: Β ::=..... | i, where i Var, π(i)=boolean Ν ::=..... | i, where i Var, π(i)=natural C ::=..... | i:= B, π(i)=boolean | i:= N, π(i)=natural
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 30 Μαθηματικός Ορισμός Συνόλου Καταστάσεων Διαισθητικά, μία κατάσταση s S είναι μία συνάρτηση, που – αντιστοιχίζει σε κάθε μεταβλητή της γλώσσας μία τιμή – πρέπει να «σέβεται» τον τύπο κάθε μεταβλητής – αντιστοιχίζει στις Λογικές μεταβλητές, λογικές τιμές Αριθμητικές μεταβλητές, αριθμητικές τιμές
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 31 Ορισμός Με βάση τις παρατηρήσεις, το σύνολο S των καταστάσεων ορίζεται ως: S ={ s: Var Nat {true, false}| s(i) Nat if π(i)= natural and s(i) {true,false} if π(i)= boolean} Η σημασιολογία της γλώσσας μπορεί να επεκταθεί, για να καλύψει μεταβλητές και εντολές ανάθεσης
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 32 Παράδειγμα Στην δεύτερη εξίσωση, το σύμβολο Ε χρησιμοποιείται για αναπαράσταση οποιασδήποτε έκφρασης της γλώσσας (λογικής ή αριθμητικής) [[i]]s = s(i) [[i :=E]]s = (s| i ↦ [[E]]s) Όπου (s| i ↦ [[E]]s) είναι μία νέα κατάσταση s’ έτσι ώστε s’(i)=[[E]]s και για κάθε άλλη μεταβλητή i’ i, s’(i’)=s(i)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 33 Παράδειγμα Η δεύτερη εξίσωση λέει ότι η εκτέλεση μίας εντολής ανάθεσης σε μία δεδομένη κατάσταση έχει ως αποτέλεσμα την παραγωγή μιας «νέας» κατάστασης στην οποία άλλαξε μόνο η τιμή της μεταβλητής, που σχετίζεται με την ανάθεση. Η νέα τιμή είναι η τιμή του δεξιού μέλους της εντολής ανάθεσης υπολογισμένη στην «παλαιά» κατάσταση.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 34 Απόδειξη Ισοδυναμίας Εντολών Η εντολή i :=( if B then E o else E 1 ) και η εντολή if B then (i:= E o ) else (i:=E 1 ) μπορούν εύκολα να αποδειχθούν ισοδύναμες με τη χρήση των παραπάνω σημασιολογικών εξισώσεων