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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for for for for( . */

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

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

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

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

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

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

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

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

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

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

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

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

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

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

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

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

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

Εντολές ελέγχου ροής if, for, while, do-while

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

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

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης

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

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

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

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

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

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

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

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

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

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

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

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

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

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

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

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

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

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

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

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

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

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

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

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

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

Στην εντολή while η επανάληψη συνεχίζεται όσο η λογική έκφραση έχει τιμή false.

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

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

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

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

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

Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις.

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

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

Transcript:

Άσκηση 1 Λύσεις Σειράς Ασκήσεων 5 Να υπολογίσετε τις ασθενέστερες προσυνθήκες έτσι ώστε οι πιο κάτω προδιαγραφές να είναι ορθές σύμφωνα (i) με την έννοια της μερικής ορθότητας και (ii) με την έννοια της ολικής ορθότητας. Να αιτιολογήσετε σύντομα τις απαντήσεις σας (δεν είναι απαραίτητο να κατασκευάσετε αποδείξεις με τους κανόνες). (α) {? while x > 0 {x := x 1; y := y + 1 { x < 0 ) (β) {? x := x a; a := x-3; n := n + 1 {x = 2a n n > 0 (γ) {? if x!= 0 then y := z + 1 else y = w + 2 {y = 5 (δ) {? while True x = 0 {x = 0 Λύση (i) Μερική ορθότητα (α) Η ασθενέστερη προσυνθήκη είναι η x<0: Aν το x είναι αρνητικό κατά την εκκίνηση του προγράμματος τότε και μόνο τότε θα είναι αρνητικό κατά τον τερματισμό του. (β) Η ασθενέστερη προσυνθήκη είναι η xa= 2(xa 3) n+1 n + 1 > 0. Μπορούμε να την παραγάγουμε μέσω του συστήματος κανόνων. (γ) Η ασθενέστερη προσυνθήκη είναι η: (x 0 5 = z+1) (x = 0 5=w+2) (δ) Η ασθενέστερη προσυνθήκη είναι η true: το πρόγραμμα δεν τερματίζει ποτέ επομένως ικανοποιεί την προδιαγραφή με οποιαδήποτε προσυνθήκη. (ii) Ολική ορθότητα (α) Η ασθενέστερη προσυνθήκη είναι και πάλι {x<0: Aν το x είναι αρνητικό κατά την εκκίνηση του προγράμματος τότε και μόνο τότε θα είναι αρνητικό κατά τον τερματισμό του. Επίσης το πρόγραμμα τερματίζει. (β) Η ασθενέστερη προσυνθήκη είναι και πάλι η xa= 2(xa 3) n+1 n + 1 > 0. Το πρόγραμμα δεν περιέχει οποιοδήποτε επαναληπτικό βρόχο, επομένως τερματίζει πάντα. (γ) Η ασθενέστερη προσυνθήκη είναι και πάλι η: (x 0 5 = z+1) (x = 0 5=w+2) (δ) Η ασθενέστερη προσυνθήκη είναι η false: το πρόγραμμα δεν τερματίζει ποτέ. Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 1

Άσκηση 2 Να αποδείξετε την ορθότητα των πιο κάτω προδιαγραφών με την έννοια της μερικής ορθότητας. Λύση {x = x 0 {(x 3 0 [(x 0 < 3 x 3 = 0) (x 0 3 x 3 +1 < x 0 )] x := x-3; * { x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )] Αξίωμα ανάθεσης {(x < 0 [(x 0 < 3 1=1) (x 0 3 1 < x 0 )]) (x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )]) if (x<0) { {(x 0 < 3 1=1) (x 0 3 1 < x 0 ) x := 1; {(x 0 < 3 x=1) (x 0 3 x < x 0 ) else { { (x 0 < 3 x = 0) (x 0 3 x+1 < x 0 ) {true [(x 0 < 3 x+1=1) (x 0 3 x+1 < x 0 )] false [(x 0 < 3 10=1) (x 0 3 10 < x 0 )] if (true) { {(x 0 < 3 x+1=1) (x 0 3 x+1 < x 0 ) x := x+1; {(x 0 < 3 x=1) (x 0 3 x < x 0 ) else { {(x 0 < 3 10=1) (x 0 3 10 < x 0 ) x := 10; {(x 0 < 3 x=1) (x 0 3 x < x 0 ) {(x 0 < 3 x=1) (x 0 3 x < x 0 ) {(x 0 < 3 x=1) (x 0 3 x < x 0 ) Απόδειξη συνεπαγωγής *: Αν x 0 = 3 τότε x 3 0 [(x 0 < 3 x 3 = 0) (x 0 3 x 3 +1 < x 0 )] = x 0 3 0 [(x 0 < 3 x 0 3 = 0) (x 0 3 x 0 3 +1 < x 0 )] = x 0 3 [x 0 3 (x 0 3 2 < 0)] = x 0 3 [x 0 3 (x 0 3 true)] = x 0 3 x 0 3 = true ** Αξίωμα ανάθεσης Αξίωμα ανάθεσης Αξίωμα ανάθεσης Κανόνας εντολής if Κανόνας εντολής if Απόδειξη συνεπαγωγής **: (x<0 [(x 0 <3 1=1) (x 0 3 1 < x 0 )]) (x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )]) = (x < 0 [(x 0 < 3 true) (true)]) (x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )] = (x < 0 (true true)) (x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )] Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 2

= x 0 [(x 0 < 3 x=0) (x 0 3 x+1 < x 0 )] (β) Αμετάβλητη συνθήκη για πρώτο while: z = x + y + c Αμετάβλητη συνθήκη για δεύτερο while: z = a + y + c {true { c = 0 + 0 + c x := 0; { c = x + 0 + c y := 0; { c = x + y + c z := c; { z = x + y + c while x a { { z = x + y + c x a Αμ. Συνθήκη και Φρουρός { z + 1 = x + 1 + y + c x := x + 1; { z + 1 = x + y + c z := z + 1; { z = x + y + c { z = x + y + c x = a Κανόνας partial while { z = a + y + c while y b { { z = a + y + c y b Αμ. Συνθήκη και Φρουρός { z + 1 = a + y + 1 + c y := y + 1; { z + 1 = a + y + c z := z + 1 { z = a + y + c { z = a + y + c y = b Κανόνας partial while { z = a + b + c Άσκηση 3 (35 μονάδες) Να αποδείξετε την ορθότητα των πιο κάτω προδιαγραφών με την έννοια της ολικής ορθότητας. (α) Θα αποδείξουμε την ολική ορθότητα της προδιαγραφής χρησιμοποιώντας ως αμετάβλητη συνθήκη και μεταβλητή έκφραση τις πιο κάτω: η = j, 0 j < i, A[k] A[j] i n E = n i Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 3

{n>0 { j, 0 j < 1, A[0] A[j] 0 n 1 k := 0; { j, 0 j < 1, A[k] A[j] 0 n 1 i := 1; { j, 0 j < i, A[k] A[j] 0 n i while (i < n){ { j, 0 j < i, A[k] A[j] i n i < n 0 n i = E 0 Αμ. Συνθήκη, Φρουρός και Μετ. Έκφραση {(A[i]<A[k]) j, 0 j < i+1,a[i] A[j] i + 1 n 0 n i 1< E 0 ) {(A[i] A[k]) j, 0 j < i+1, A[k] A[j] i + 1 n 0 n i 1< E 0 ) if (A[i] < A[k]) { j, 0 j < i+1, A[i] A[j] i + 1 n 0 n i 1< E 0 k = i; { j, 0 j < i+1, A[k] A[j] i + 1 n 0 n i 1< E 0 { j, 0 j < i+1, A[k] A[j] i+1 n 0 n i 1< E 0 Κανόνας if i := i+1; { j, 0 j < i, A[k] A[j] i n 0 n i < E 0 Καν. Ανάθεσης { j, 0 j < i, A[k] A[j] i n, i n Κανόνας total while { j, 0 j < i, A[k] A[j] i = n { j, 0 j < n, A[k] A[j] (β) Για την απόδειξη χρησιμοποιούμε τα εξής: Εξωτερικός βρόχος: o Αμετάβλητη συνθήκη: S+X Y = x y o Μεταβλητή έκφραση: Χ Εσωτερικός βρόχος: o Αμετάβλητη συνθήκη: S + X Y = x y 1 X E 0 o Μεταβλητή έκφραση: X Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 4

{X = x Υ = y x 0 {0 + X Y = x y 0 X S:=0; {S + X Y = x y 0 X while (X=0) {S + X Y = x y (Χ = 0) 0 X = E 0 Αμετ. Συνθήκη, Φρουρός και Μετ. Έκφραση {S + X Y = x y 1 X E 0 0 X while odd(χ){ {S + X Y = x y 1 X E 0 odd(χ) 0 X = F 0 Αμετ. Συνθήκη, Φρουρός και Μετ. Έκφραση {S + (X div 2) 2 Y = x y 1 X div 2 E 0 0 X div 2< F 0 Y:= 2 Y; {S + (X div 2 Y = x y 1 X div 2 E 0 0 X div 2< F 0 X:= X div 2; {S + X Y = x y 1 X E 0 0 X < F 0 {S + X Y = x y 1 X E 0 odd(χ) Καν. Total while {S + Y + (X 1) Y = x y 0 X 1 < E 0 S:= S+Y; {S + (X 1) Y = x y 0 X 1 < E 0 X:= X-1 {S + X Y = x y 0 X < E 0 {S + X Y = x y X = 0 Καν. Total while {S = x y Άσκηση 4 Θέλουμε να προσθέσουμε στη γλώσσα WHILE (διαφάνεια 9 5), εντολές της μορφής: repeat C until B Οι εντολές αυτές εκτελούνται ως εξής: (1) Εκτέλεσε την εντολή C (2) Υπολόγισε την τιμή της έκφρασης Β, έστω b (3) Αν b = false τότε επέστεψε στο βήμα (1) (4) Διαφορετικά, η εκτέλεση της εντολής τερματίζει και η ροή του προγράμματος προχωρεί στην επόμενη εντολή (αν υπάρχει). (α) Να προτείνετε κανόνα για την ανάλυση προδιαγραφών της εντολής repeat υπό την έννοια της μερικής ορθότητας. Σύμφωνα με την επεξήγηση, η εντολή repeat C until B μπορεί να διατυπωθεί ως: C; while B{C Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 5

Η πιο πάνω ισοδυναμία μας επιτρέπει να προτείνουμε κανόνα για την ανάλυση προδιαγραφών για την εντολή for ως εξής: { C { η, { η B C { η repeat { repeat C until B { η B Σύμφωνα με τον κανόνα για να αποδείξουμε ότι μια εντολή repeat ξεκινώντας με την προσυνθήκη φ θα μας οδηγήσει στη μετασυνθήκη η Β, πρέπει πρώτα να αποδείξουμε ότι η πρώτη εκτέλεση του κορμού C με προσυνθήκη φ θα μας οδηγήσει σε ικανοποίηση του η ({φ C {η) ενώ, παρόμοια, κάθε επόμενη εκτέλεση του βρόχου, η οποία προφανώς γίνεται υπό την συνθήκη του Β, θα διατηρήσει την ορθότητα του η, δηλαδή {η Β C {η. Με άλλα λόγια η συνθήκη η αποτελεί μια αμετάβλητη συνθήκη για τον βρόχο. Εντούτοις παρατηρούμε ότι ο πιο πάνω κανόνας απαιτεί την απόδειξη δύο διαφορετικών προδιαγραφών για τον κορμό του βρόχου C. Για απλότητα, μπορούμε να αποδώσουμε τον κανόνα ως εξής: { C { η ( η B) { repeat C until B { η B (β) Να χρησιμοποιήσετε τον κανόνα σας από το μέρος (α) για να αποδείξετε την ορθότητα της πιο κάτω προδιαγραφής υπό την έννοια της μερικής ορθότητας. Η απόδειξη έχει ως εξής, όπου στον εξωτερικό βρόχο χρησιμοποιούμε ως αμετάβλητη συνθήκη την S = (x X) y Y= y και στον εσωτερικό βρόχο την S = (x X) y + R Y= y. {X = x Y= y {0 = (x X y Y= y S:= 0; {S = (x X y Y= y repeat {S = (x X y Y= y Χ 0 Αμ. Συνθήκη & Άρνηση φρουρού R:= 0; {S = (x X y + R Y= y repeat {S = (x X y + R Y= y R Y Αμ. Συνθήκη & Άρνηση φρουρού {S + 1 = (x X y + R + 1 Y= y S:= S+1; {S = (x X y + R + 1 Y= y R:= R+1 {S = (x X y + R Y= y until R = Y {S = (x X y + R Y= y R = Y Καν. repeat {S = (x X + 1 y Y= y X:= X-1 {S = (x X y Y= y until X = 0 {S = (x X y Y= y X = 0 Καν. repeat {S = x y Λύσεις Σειράς Προβλημάτων 5 Χειμερινό Εξάμηνο 2016 Σελίδα 6