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

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

Κεφάλαιο 5 Αξιωματική Σημασιολογία και Απόδειξη Ορθότητας Προγραμμάτων

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

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

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

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

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

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

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Στοιχειώδης προγραμματισμός σε C++

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Τύποι δεδομένων, τελεστές, μεταβλητές

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

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

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

Βασικά Στοιχεία της Java

Θέματα Προγραμματισμού Η/Υ

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

HY118-Διακριτά Μαθηματικά. Προτασιακός Λογισμός. Προηγούμενη φορά. Βάσεις της Μαθηματικής Λογικής. 02 Προτασιακός Λογισμός

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

Ανάλυση της Ορθότητας Προγραμμάτων

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

HY118-Διακριτά Μαθηματικά

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Ανάλυση της Ορθότητας Προγραμμάτων

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

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

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

Βασικά Στοιχεία της Java

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

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

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

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

n true false if t then t else t u t t b t emptylist cons t t t t λx.t u ::= head tail isempty

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

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

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

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

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

Σημειώσεις Λογικής I. Εαρινό Εξάμηνο Καθηγητής: Λ. Κυρούσης

Πληροφορική ΙΙ Θεματική Ενότητα 6

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

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

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

for for for for( . */

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

Δυναμικός προγραμματισμός για δέντρα

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

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Ψευδοκώδικας. November 7, 2011

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10)

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

4. Ο,τιδήποτε δεν ορίζεται με βάση τα (1) (3) δεν είναι προτασιακός τύπος.

Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος

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

Transcript:

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

Εισαγωγή - 1 Μία κλασσική γλώσσα προγραμματισμού αποτελείται από: Εκφράσεις (των οποίων η τιμή πρέπει να απποτιμηθεί) Εντολές (οι οποίες εκτελούνται και αλλάζουν την κατάσταση του υπολογιστή) 2

Εισαγωγή - 2 Βασική σημασιολογική έννοια Κατάσταση Τιμές, που έχουν οι μεταβλητές στη μνήμη του υπολογιστή Η τιμή μίας έκφρασης του προγράμματος εξαρτάται από την παρούσα κατάσταση του υπολογιστή Αλλαγή κατάστασης (π.χ. με καταχώρηση νέας τιμής σε μία από τις μεταβλητές του προγράμματος) 3

Προστακτικές Γλώσσες Δομές ελέγχου Καθορίζουν την πορεία εκτέλεσης εντολών ενός προγράμματος Π.χ. If-then-else, for, while Υποστηρίζονται από προστακτικές γλώσσες 4

Συντακτικό Απλή προστακτική γλώσσα Υποστήριξη δύο τύπων δεδομένων Τιμές αληθείας (Boolean) Φυσικούς αριθμούς (Natural) Εισαγωγή και άλλων τύπων χωρίς πρόβλημα Int, real, char Τρεις κατηγορίες συντακτικών στοιχείων Λογικές εκφράσεις Αριθμητικές εκφράσεις Εντολές 5

Βασικές Αριθμητικές και Λογικές Εκφράσεις Αριθμητικές Σταθερά (0) Τελεστής (succ) Παράγει τον επόμενο φυσικό αριθμό Λογικές Σταθερά true Εκφράσεις, που παράγονται με χρήση τελεστών (not, and, κλπ) Προσθήκη επιπλέον συμβόλων (πχ false,1,2 κλπ) και τελεστών χωρίς πρόβλημα 6

Κύριες Εντολές «Κενή» εντολή (skip) Δεν έχει κανένα αποτέλεσμα Σύνθεση εντολών Συμβολισμός με «;» Μηχανισμός βρόγχου Ο βρόγχος for N do C εκτελείται υπολογίζοντας την τιμή της αριθμητικής έκφρασης Ν και μετά εκτελώντας το σώμα C τόσες φορές όσες είναι η τιμή της αριθμητικής έκφρασης. Ο βρόγχος ονομάζεται οριστικός, γιατί ο αριθμός των επαναλήψεων καθορίζεται πριν την εκτέλεση του. 7

Εντολές Η γλώσσα δεν διαθέτει (αρχικά) μηχανισμούς αλλαγής της κατάστασης ούτε μεταβλητές. 8

Συντακτικό Δίνεται με τη βοήθεια context-free γραμματικής Το σύμβολο C αναπαριστά μία εντολή Β μία λογική έκφραση Ν μία αριθμητική έκφραση 9

Κανόνες Παραγωγής Εντολών C::= skip C o ; C 1 for N do C if B then C o else C 1 (C) 10

Κανόνες Παραγωγής Λογικών Εκφράσεων Β ::= 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) 11

Κανόνες Παραγωγής Αριθμητικών Εκφράσεων N ::= 0 succ N if B then N o else N 1 (N) 12

Σημασιολογία - 1 Βασική είναι η έννοια της κατάστασης (state) Αναπαριστά τη μνήμη υπολογιστή Η τιμή μιας έκφρασης σε μία προστακτική γλώσσα προγραμματισμού εξαρτάται από τις μεταβλητές της έκφρασης. Οι τιμές των μεταβλητών φυλάσσονται στη μνήμη του υπολογιστή Η γλώσσα όπως ορίσθηκε δεν διαθέτει μεταβλητές και εντολές ανάθεσης 13

Σημασιολογία - 2 Η γλώσσα όμως θα επεκταθεί και έχουν ήδη εισαχθεί απλές εντολές Η σημασιολογία της γλώσσας δίνεται με βάση την έννοια της κατάστασης 14

Σημασιολογία - 3 Έστω σύνολο καταστάσεων S Το νόημα μιας Έκφρασης της γλώσσας είναι μία συνάρτηση η οποία για κάθε κατάσταση του υπολογιστή δίνει την τιμή της έκφρασης σε σχέση με την κατάσταση αυτή Εντολής είναι μία συνάρτηση η οποία μετασχηματίζει την τρέχουσα κατάσταση του υπολογιστή σε μία νέα κατάσταση 15

Συναρτήσεις C[[ ]] Δίνει νόημα στις εντολές της γλώσσας Β[[ ]] Δίνει νόημα στις λογικές εκφράσεις N[[ ]] Δίνει νόημα στις αριθμητικές εκφράσεις Οι συναρτήσεις αυτές ορίζονται αναδρομικά και ο ορισμός καθεμίας χρησιμοποιεί τις υπόλοιπες 16

Ορισμός Συνάρτησης Β[[ ]] Β[[true]]s = true true, if B[[B]]s =false B[[not B]]s = false, if B[[B]]s =true B[[B o and B 1 ]]s = true, if B[[B o ]]s =true and B[[B 1 ]]s =true false, otherwise 17

Ορισμός Συνάρτησης Β[[ ]] B[[N o < N 1 ]]s = true, if N[[N o ]]s < N[[N 1 ]]s false, otherwise B[[N o = N 1 ]]s = true, if N[[N o ]]s = N[[N 1 ]]s false, otherwise 18

Ορισμός Συνάρτησης Β[[ ]] B[[B o = B 1 ]]s = true, if B[[B o ]]s = B[[B 1 ]]s false, otherwise B[[if B then B o else B 1 ]]s = B[[B o ]]s, if B[[B]]s = true B[[B 1 ]]s, otherwise B[[(B)]]s = B[[B]]s 19

Ορισμός Συνάρτησης N[[ ]] N[[0]]s = 0 N[[succ N]]s = N[[N]]s +1 N[[if B then N o else N 1 ]]s = N[[N o ]]s, if B[[B]]s = true N[[N 1 ]]s, otherwise N[[(N)]]s = N[[N]]s 20

Σημασιολογία Εντολών Δίνεται από τη συνάρτηση C[[ ]] C[[skip]]s C [[C o ;C 1 ]]s C [[for N do C]]s = s = C [[C 1 ]](C [[C o ]]s) = C [[C]] n (s), where n=n[[n]]s C[[if B then C o else C 1 ]]s = C[[C o ]]s, if B[[B]]s = true C[[(C)]]s C[[C 1 ]]s, otherwise = C[[C]]s 21

Δομική Επαγωγή Τεχνική για αποδείξεις στη σημασιολογία Εφαρμογή της συνηθισμένης επαγωγής στην συντακτική δομή των εκφράσεων μιας γλώσσας (πιο συγκεκριμένα στο βάθος του συντακτικού δέντρου των εκφράσεων της γλώσσας) 22

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

Παράδειγμα 4.1 Με τη χρήση δομικής επαγωγής μπορεί να δειχθεί ότι για την δεδομένη γλώσσα (που δεν έχει εντολές ανάθεσης) ισχύει: C[[C]]s = s για κάθε εντολή C και για κάθε κατάσταση s. 24

Παράδειγμα 4.1 Για την επαγωγική βάση αρκεί να εξετασθεί η περίπτωση C=skip, για την οποία ισχύει το ζητούμενο, καθώς C[[skip]]s=s Μένει να δειχθεί ότι ισχύει και για πιο σύνθετες εντολές με βάση ότι ισχύει για τις υποεντολές, που τις συνθέτουν. Αυτό απαιτεί την εξέταση τεσσάρων περιπτώσεων μιας σύνθετης εντολής (σύνθεση εντολών, for, if και παρενθετοποίηση). 25

Σύνθεση C [[C o ;C 1 ]]s = C [[C 1 ]](C [[C o ]]s) (Semantics) = C [[C 1 ]](s) (Hypothesis) = s (Hypothesis) Οι υπόλοιπες περιπτώσεις σύνθετων εντολών μπορούν να δειχθούν με ανάλογο τρόπο. 26

Εντολές Ανάθεσης Σημαντική έλλειψη της γλώσσας η απουσία μεθόδων για προσπέλαση και αλλαγή της κατάστασης (δηλαδή της μνήμης) Για το σκοπό αυτό ορίζεται ένα σύνολο ονομάτων μεταβλητών (variable-identifiers) Συμβολίζεται με Var Χωρίζεται σε δύο υποσύνολα μεταβλητών Λογικές (Boolean) Αριθμητικές (Natural) 27

Συνάρτηση π Προσδιορίζει τον τύπο της κάθε μεταβλητής Παράδειγμα: Αν i είναι μία λογική μεταβλητή, τότε π(i)=boolean, ενώ αν j είναι μία αριθμητική μεταβλητή, τότε π(j)= natural 28

Επέκταση Συντακτικού Επιτρέπει χρήση μεταβλητών και εντολών ανάθεσης Επεκτείνουμε κανόνες παραγωγής εκφράσεων και εντολών της γλώσσας, ως εξής: Β ::=... i, where i Var, π(i)=boolean Ν ::=... i, where i Var, π(i)=natural C ::=... i:= B, π(i)=boolean i:= N, π(i)=natural 29

Μαθηματικός Ορισμός Συνόλου Καταστάσεων Διαισθητικά, μία κατάσταση s S είναι μία συνάρτηση, που αντιστοιχίζει σε κάθε μεταβλητή της γλώσσας μία τιμή πρέπει να «σέβεται» τον τύπο κάθε μεταβλητής αντιστοιχίζει στις Λογικές μεταβλητές, λογικές τιμές Αριθμητικές μεταβλητές, αριθμητικές τιμές 30

Ορισμός Με βάση τις παρατηρήσεις, το σύνολο S των καταστάσεων ορίζεται ως: S ={ s: Var Nat {true, false} s(i) Nat if π(i)= natural and s(i) {true,false} if π(i)= boolean} Η σημασιολογία της γλώσσας μπορεί να επεκταθεί, για να καλύψει μεταβλητές και εντολές ανάθεσης 31

Παράδειγμα Στην δεύτερη εξίσωση, το σύμβολο Ε χρησιμοποιείται για αναπαράσταση οποιασδήποτε έκφρασης της γλώσσας (λογικής ή αριθμητικής) [[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) 32

Παράδειγμα Η δεύτερη εξίσωση λέει ότι η εκτέλεση μίας εντολής ανάθεσης σε μία δεδομένη κατάσταση έχει ως αποτέλεσμα την παραγωγή μιας «νέας» κατάστασης στην οποία άλλαξε μόνο η τιμή της μεταβλητής, που σχετίζεται με την ανάθεση. Η νέα τιμή είναι η τιμή του δεξιού μέλους της εντολής ανάθεσης υπολογισμένη στην «παλαιά» κατάσταση. 33

Απόδειξη Ισοδυναμίας Εντολών Η εντολή i :=( if B then E o else E 1 ) και η εντολή if B then (i:= E o ) else (i:=e 1 ) μπορούν εύκολα να αποδειχθούν ισοδύναμες με τη χρήση των παραπάνω σημασιολογικών εξισώσεων 34