Λύσεις Σειράς Ασκήσεων 5

Σχετικά έγγραφα
Λύσεις Σειράς Ασκήσεων 5

Λύσεις Σειράς Ασκήσεων 5

Σειρά Προβλημάτων 5 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Λύσεις Σειράς Ασκήσεων 5

Λύσεις Σειράς Ασκήσεων 5

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

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

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

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

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

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

Λύσεις Σειράς Ασκήσεων 4

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

Ασκήσεις Επανάληψης Λύσεις

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

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

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Ασκήσεις Επανάληψης Λύσεις

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

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Σειρά Προβλημάτων 1 Λύσεις

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

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

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

Μεθόδων Επίλυσης Προβλημάτων

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

for for for for( . */

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

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

Σειρά Προβλημάτων 3 Λύσεις

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

Σειρά Προβλημάτων 3 Λύσεις

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

Σειρά Προβλημάτων 5 Λύσεις

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

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

Δομές ελέγχου & επανάληψης

Σειρά Προβλημάτων 1 Λύσεις

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

Δομές Επανάληψης. Εισαγωγή στη C++

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

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

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

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

Σειρά Προβλημάτων 5 Λύσεις

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

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

9. Εντολές επανάληψηςκαι η εντολή

Πληροφορική 2. Αλγόριθμοι

ΔΙΑΛΕΞΗ ΙΙ ΕΝΑ ΒΗΜΑ ΠΑΡΑΠΑΝΩ ΜΕ SCRATCH ΕΠΙΛΕΓΩΝΤΑΣ & ΕΠΑΝΑΛΑΜΒΑΝΟΝΤΑΣ

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Σειρά Προβλημάτων 1 Λύσεις

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

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

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

A3. Μονάδες 5 Α4. Μονάδες 10 ΘΕΜΑ B. Β1. writeln Περιεχόμενα Εντολή Αποτελέσματα Παραμέτρων Μονάδες 20 ΘΕΜΑ Γ.

Εντολές επιλογής Επαναλήψεις (if, switch, while)

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

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

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

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

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

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

Εισαγωγή στην Αριθμητική Ανάλυση

Σειρά Προβλημάτων 4 Λύσεις

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Επαναληπτικές Διαδικασίες

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

Αυτοματοποιημένη Επαλήθευση

Μαθηματική Λογική (προπτυχιακό) Εξέταση Ιανουαρίου 2018 Σελ. 1 από 5

Υπολογισμός - Εντολές Επανάληψης

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

Η Δομή Επανάληψης. Εισαγωγή στην δομή επανάληψης Χρονική διάρκεια: 3 διδακτικές ώρες

Σειρά Προβλημάτων 4 Λύσεις

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

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

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

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

Transcript:

Άσκηση Λύσεις Σειράς Ασκήσεων 5 Έστω P και Q συνθήκες και S ένα πρόγραμμα. Να εξηγήσετε με λόγια τις πιο κάτω προδιαγραφές (i) με την έννοια της μερικής ορθότητας και (ii) με την έννοια της ολικής ορθότητας. (α) { P } S { true } (β) { P } S { false } (γ) { false } S { Q } Λύση (α) Με την έννοια της μερικής ορθότητας η προδιαγραφή δηλώνει ότι αν το πρόγραμμα S ξεκινήσει την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη Ρ τότε, αν τερματίσει θα ικανοποιεί τη συνθήκη true. Αφού όμως η συνθήκη true ικανοποιείται τετριμμένα σε κάθε κατάσταση ενός προγράμματος, η συγκεκριμένη προδιαγραφή, υπό την έννοια της μερικής ορθότητα δεν επιβάλλει οποιοδήποτε περιορισμό και ικανοποιείται για οποιαδήποτε S και P. Mε την έννοια της ολικής ορθότητας η προδιαγραφή δηλώνει ότι κάθε φορά που το πρόγραμμα ξεκινά την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη Ρ, τότε θα τερματίσει. (β) Με την έννοια της μερικής ορθότητας η προδιαγραφή δηλώνει ότι αν το πρόγραμμα S ξεκινήσει την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη Ρ τότε, αν τερματίσει, θα ικανοποιεί τη συνθήκη false. Αφού όμως η συνθήκη true δεν ικανοποιείται σε καμιά κατάσταση ενός προγράμματος, η συγκεκριμένη προδιαγραφή, υπό την έννοια της μερικής ορθότητας εκφράζει ότι κάθε φορά που το πρόγραμμα S ξεκινά την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη P τότε δεν τερματίζει. Mε την έννοια της ολικής ορθότητας η προδιαγραφή δηλώνει ότι κάθε φορά που το πρόγραμμα ξεκινά την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη Ρ, τότε θα τερματίσει σε μια κατάσταση που ικανοποιεί τη συνθήκη false. Αυτό όμως δεν είναι εφικτό και επομένως η προδιαγραφή αυτή δεν ικανοποιείται από κανένα πρόγραμμα. (γ) Με την έννοια της μερικής ορθότητας η προδιαγραφή δηλώνει ότι αν το πρόγραμμα S ξεκινήσει την εκτέλεσή του σε μια κατάσταση που ικανοποιεί τη συνθήκη false τότε, αν τερματίσει θα ικανοποιεί τη συνθήκη P. Αφού όμως η συνθήκη false δεν ικανοποιείται σε καμιά κατάσταση ενός προγράμματος, η συγκεκριμένη προδιαγραφή, ικανοποιείται τετριμμένα από οποιοδήποτε πρόγραμμα και μετασυνθήκη. Το ίδιο ισχύει και για την έννοια της ολικής ορθότητα. Άσκηση 2 Να γράψετε πρόγραμμα S το οποίο να χρησιμοποιεί τις μεταβλητές x και y και να ικανοποιεί την προδιαγραφή tot {x = a y = b} S {z = exp(a,b) x = a y = b}, όπου exp(m,0) = exp(m,n+) = m exp(m,n) Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα

Λύση Ορίζουμε το ζητούμενο πρόγραμμα S ως εξής: n := x; m := 0; z := ; while (m < y){ m := m + ; z := z * n; } και αποδεικνύουμε την ορθότητα του όπως φαίνεται πιο κάτω χρησιμοποιώντας ως αμετάβλητη συνθήκη και μεταβλητή έκφραση τις εξής: η = z = exp(m,n) x = a y = b n y m = x E = y n { x = a y = b 0 y } { = exp(x,0) x = a y = b 0 y x = x } m := x; { = exp(m,0) x = a y = b 0 y m = x } Κανόνας Ανάθεσης n := 0; { = exp(m,n) x = a y = b n y m = x } Κανόνας Ανάθεσης z := ; { z = exp(m,n) x = a y = b n y m = x 0 y n } Κανόνας Ανάθεσης while (n < y){ { z = exp(m,n) x = a y = b n y n < y m = x 0 y n = E 0 } Αμ. Συνθ., Μετ. Εκφρ. & Φρουρός { z m = exp(m,n+) x = a y = b n + y m = x 0 y n < E 0 } n := n + ; { z m = exp(m,n) x = a y = b n y m = x 0 y n < E 0 } Κανόνας Ανάθεσης z := z * m; { z = exp(m,n) x = a y = b n y m = x 0 y n < E 0 } Κανόνας Ανάθεσης } { z = exp(m,n) x = a y = b n y y n m = x } Κανόνας total while { z = exp(a,b) x = a y = b } Άσκηση 3 (35 μονάδες) Να αποδείξετε την ορθότητα των πιο κάτω προδιαγραφών με την έννοια της ολικής ορθότητας. (α) Θα χρησιμοποιήσουμε ως αμετάβλητη συνθήκη και μεταβλητή έκφραση τις η = (a = b a 2 = n) (a < b a 2 < n b 2 ) E = b a Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα 2

{ n 0 n x n n } { [(0 = n 0 2 = n) (0 < n 0 < n n 2 )] 0 b a } a := 0; { [(a = n a 2 = n) (a < n a 2 < n n 2 )] 0 b a } Κανόνας Ανάθεσης b := n; { [(a = b a 2 = n) (a < b a 2 < n b 2 )] 0 b a } Κανόνας Ανάθεσης while (b a > ) { { [(a = b a 2 = n) (a < b a 2 < n b 2 ) b a > ] 0 b a = E 0 } Αμ. Συνθ, Φρουρός, Μετ. Εκφρ. { [(a+b)div 2] 2 < n ((a+b)div 2 < b [(a+b)div 2] 2 < n b 2 0 b (a+b)div 2 < E 0 ) [(a+b)div 2] 2 > n (a < (a+b)div 2 a 2 < n [(a+b)div 2] 2 0 (a+b)div 2 a < E 0 } mid := (a + b) div 2; { mid 2 < n (mid < b mid 2 < n b 2 0 b mid < E 0 ) mid 2 > n (a < mid a 2 < n mid 2 0 mid a < E 0 } if (mid * mid = n) { mid 2 = n} {[(mid = mid mid 2 = n) (mid < mid mid 2 < n mid 2 )] 0 mid mid < E 0 } a := mid; { [(a = mid a 2 = n) (a < mid a 2 < n mid 2 )] 0 mid a < E 0 } Κανόνας Aνάθεσης b := mid; { [(a = b a 2 = n) (a < b a 2 < n b 2 )] 0 b a < E 0 } Κανόνας Aνάθεσης else { mid 2 < n (mid < b mid 2 < n b 2 0 b mid < E 0 ) mid 2 n (a < mid a 2 < n mid 2 0 mid a < E 0 } { mid 2 < n [(mid = b mid 2 = n) (mid < b mid 2 < n b 2 )] 0 b mid < E 0 ) mid 2 n (a = mid a 2 = n) (a < mid a 2 < n mid 2 )] 0 mid a < E 0 } if (mid * mid < n) else { [(mid = b mid 2 = n) (mid < b mid 2 < n b 2 )] 0 b mid < E 0 } a := mid; { [(a = b a 2 = n) (a < b a 2 < n b 2 )] 0 b a < E 0 } Κανόνας Aνάθεσης { [(a = mid a 2 = n) (a < mid a 2 < n mid 2 )] 0 mid a < E 0 } b := mid; { [(a = b a 2 = n) (a < b a 2 < n b 2 )] 0 b a < E 0 } Κανόνας Aνάθεσης { [(a = b a 2 = n) (a < b a 2 < n b 2 ) ] 0 b a < E 0 } Κανόνας if { (a = b a 2 = n) (a < b a 2 < n b 2 ) 0 b a < E 0 } Κανόνας if { [(a = b a 2 = n) (a < b a 2 < n b 2 )] (b a) } Κανόνας Total while { (a = b a a = n) (a+ = b a a < n b b n) } Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα 3

(β) Για διευκόλυνση στην κατανόηση θα δοθεί πρώτα η απόδειξη για τη μερική ορθότητα και στη συνέχεια για την ολική ορθότητα. Για την απόδειξη της μερικής ορθότητας χρησιμοποιούμε ως αμετάβλητες συνθήκες: Εσωτερικός βρόχος: x n! = a! n fact = (n y + ) x y Εξωτερικός βρόχος: fact n! = a! n 0 Η απόδειξη έχει ως εξής: { n = a a 0 } { n! = a! n 0 } fact := ; { fact n! = a! n 0 } Κανόνας Ανάθεσης while (n > ){ { fact n! = a! n 0 n > } Αμ. Συνθ. και Φρουρός { fact n! = a! n fact = (n n + ) fact n } x := fact; { x n! = a! n fact = (n n + ) x n } Κανόνας Ανάθεσης y := n; { x n! = a! n fact = (n y + ) x y } Κανόνας Ανάθεσης while (y > ) { x n! = a! n fact = (n y + ) x y y > } Αμ. Συνθ. και Φρουρός { x n! = a! n fact + x = (n y + + ) x y } fact := fact + x; { x n! = a! n fact = (n y + + ) x y } Κανόνας Ανάθεσης y := y-; { x n! = a! n fact = (n y + ) x y } Κανόνας Ανάθεσης { x n! = a! n fact = (n y + ) x y y } Κανόνας Total while { fact (n )! = a! (n ) 0 } (αποδείξτε το!) n := n-; { fact n! = a! n 0 } Κανόνας Ανάθεσης { fact n! = a! n 0 n } Κανόνας Total while { fact = a! } Στην απόδειξη ολικής ορθότητας θα χρειαστεί να ενδυναμώσουμε την αμετάβλητη συνθήκη του εσωτερικού βρόχου και να ορίσουμε σχετικές μεταβλητές εκφράσεις. Συγκεκριμένα, για τον εσωτερικό βρόχο έχουμε Αμετάβλητη συνθήκη: x n! = a! n fact = (n y + ) x y 0 n < E 0 Μεταβλητή Έκφραση: y και για τον εξωτερικό: Αμετάβλητη συνθήκη: fact n! = a! n 0 Μεταβλητή Έκφραση: n Ακολουθεί η απόδειξη. Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα 4

{ n = a a 0 } { n! = a! n 0 } fact := ; { fact n! = a! n 0 } Κανόνας Ανάθεσης while (n > ){ { fact n! = a! n 0 n > 0 n = E 0 } Αμ. Συνθ., Φρουρός & Mετ. Εκφρ. { fact n! = a! n fact = (n n + ) fact n 0 n < E 0 } x := fact; { x n! = a! n fact = (n n + ) x n 0 n < E 0 } Κανόνας Ανάθεσης y := n; { x n! = a! n fact = (n y + ) x y 0 n < E 0 0 y } Κανόνας Ανάθεσης while (y > ) { x n! = a! n fact = (n y + ) x y y > 0 n < E 0 0 y = F 0 } Αμ. Συνθ., Φρουρός & Mετ. Εκφρ. { x n! = a! n fact + x = (n y + + ) x y 0 n < E 0 0 y < F 0 } fact := fact + x; { x n! = a! n fact = (n y + + ) x y 0 n < E 0 0 y < F 0 } Κανόνας Ανάθεσης y := y-; { x n! = a! n fact = (n y + ) x y 0 n < E 0 0 y < F 0 } Κανόνας Ανάθεσης { x n! = a! n fact = (n y + ) x y 0 n < E 0 y } Κανόνας Total while { fact (n )! = a! (n ) 0 0 n < E 0 } (αποδείξτε το!) n := n-; { fact n! = a! n 0 0 n < E 0 } Κανόνας Ανάθεσης { fact n! = a! n 0 n } Κανόνας Total while { fact = a! } Άσκηση 4 (30 μονάδες) Θέλουμε να προσθέσουμε στη γλώσσα WHILE (διαφάνεια 9 5) εντολές της μορφής: do B C B n C n od Οι εντολές αυτές εκτελούνται ως εξής: () Εφόσον τουλάχιστον μια από τις λογικές εκφράσεις Β,,Β n, υπολογίζεται ως αληθής, έστω η B i, τότε επιλέγεται για εκτέλεση η αντίστοιχη εντολή C i και επαναλαμβάνεται το βήμα. Αν υπάρχουν περισσότερες από μια εκφράσεις ανάμεσα στις Β,,Β n, οι οποίες υπολογίζονται ως αληθείς τότε επιλέγεται μη ντετερμινιστικά μια από τις αντίστοιχες εντολές για εκτέλεση. Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα 5

(2) Αν καμιά από τις λογικές εκφράσεις Β,,Β n, δεν υπολογίζεται ως αληθής, τότε η εκτέλεση της εντολής τερματίζει. (α) Να προτείνετε κανόνα για την ανάλυση προδιαγραφών που σχετίζονται με την εντολή αυτή. Ο καινούριος κανόνας για την εντολή είναι ο εξής: { Bi 0 E E0} Ci { 0 E E0} { 0 E} do B C,..., B C { B... B } n n do - loop (β) Να αποδείξετε την πιο κάτω προδιαγραφή. Θα χρησιμοποιήσουμε ως αμετάβλητη συνθήκη φ = True και ως μεταβλητή έκφραση την 3 max(x,y,z) (x+y+z). {true} { 3 max(x,y,z) (x+y+z) 0 } do x<y { x<y 0 3 max(x,y,z) (x+y+z) = E 0 } { 0 3 max(x+,y,z) (x++y+z) < E 0 } x:= x+ { 0 3 max(x,y,z) (x+y+z) < E 0 } y<z { y<z 0 3 max(x,y,z) (x+y+z) = E 0 } { 0 3 max(x,y+,z) (x+y++z) < E 0 } y:= y+ { 0 3 max(x,y,z) (x+y+z) < E 0 } z<x { z<x 0 3 max(x,y,z) (x+y+z) = E 0 } { 0 3 max(x,y,z+) (x+y+z+) < E 0 } z:= z+ { 0 3 max(x,y,z) (x+y+z) < E 0 } od {true (x<y) (y<z) (z<x)} {x = y = z Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 205 Σελίδα 6