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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for for for for( . */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

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

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

οµές Επιλογής Εντολές if και switch

Σειρά Προβλημάτων 4 Ημερομηνία Παράδοσης: 13/11/13

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

Μορφοποίηση της εξόδου

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 5 Εντολές Επανάληψης for while do while. Λαμπρινίδης Γεώργιος

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

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

IMPLICIT NONE INTEGER :: a, b, c

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

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

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

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

Φροντιστήριο 6 Λύσεις

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Παίρνοντας Αποφάσεις 1

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

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

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

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

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

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

Transcript:

Άσκηση 1 (α) {x = 12 y = 7} skip {y = 7} Λύσεις Σειράς Ασκήσεων 5 Η προδιαγραφή αυτή είναι ορθή τόσο με την έννοια της μερικής ορθότητας όσο και με την έννοια της ολικής ορθότητας. Αυτό οφείλεται στο γεγονός ότι η εντολή skip τερματίζει χωρίς να μεταβάλει την κατάσταση του προγράμματος, επομένως διατηρώντας την τιμή του y ίση με 7. (β) {y = 7} skip {x = 12 y = 7} Η προδιαγραφή αυτή δεν είναι ορθή με καμιά από τις δύο έννοιες: αν και το πρόγραμμα τερματίζει δεν μπορούμε να εγγυηθούμε ότι κατά τον τερματισμό του το x θα είναι ίσο με 12 αφού δεν υπάρχει οποιαδήποτε πληροφορία που να δηλώνει ότι αυτό ισχύει κατά την εκκίνηση του προγράμματος. (γ) {x > 7} x :=2 x {x > 15} Η προδιαγραφή αυτή είναι ορθή τόσο υπό την έννοια της μερικής ορθότητας όσο και υπό την έννοιας της ολικής ορθότητας: το πρόγραμμα τερματίζει και σύμφωνα με την προσυνθήκη της προδιαγραφής, εκτέλεσή του θα οδηγήσει σε ικανοποίηση της μετασυνθήκης. (δ) {x 28 y > 1} while (x!= y) x := x+1 {x = y} Η προδιαγραφή είναι ορθή με την έννοια της μερικής ορθότητας αφού κάθε φορά που το πρόγραμμα τερματίζει οφείλει να είναι αληθής η μετασυνθήκη. Εντούτοις, το πρόγραμμα δεν τερματίζει για τιμές του y μικρότερες από το 28. Επομένως δεν έχουμε ολική ορθότητα της προδιαγραφής. (ε) {x = 3} while (x > 0) x := x+1 {x < 0} Το πρόγραμμα αυτό δεν τερματίζει ποτέ. Επομένως δεν είναι ορθό με την έννοια της ολικής ορθότητας αλλά είναι ορθό με την έννοια της μερικής ορθότητας. Άσκηση 2 (α) Η αμετάβλητη συνθήκη για το βρόχο μπορεί να επιλεχθεί ως True. Η απόδειξη έχει ως εξής: {Τrue} Αμετάβλητη Συνθήκη while True {True True} Αμετάβλητη συνθήκη και φρουρός skip; { True } {True True} Εντολή partial-while {False} Λύσεις Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2013 Σελίδα 1

(β) Η αμετάβλητη συνθήκη του βρόχου είναι η Χ Υ + S = x y. Ακολουθεί η απόδειξη της προδιαγραφής. { X = x Υ = y } { X Y + 0 = x y } S:=0; { X Y + S = x y } while (X=0) { X Y + S = x y (Χ = 0)} Αμ. Συνθήκη και Φρουρός { odd(x) X div 2 2 Y + S + Y = x y even(x) X div 2 2 Y + S = x y } if odd(χ) {X div 2 2 Y + S + Y = x y } S:= S+Y; {X div 2 2 Y + S = x y } else { X div 2 2 Y + S = x y } S:= S; { X div 2 2 Y + S = x y } {X div 2 2 Y + S = x y } Κανόνας Εντολής if Y:= 2*Y; { X div 2 Y + S = x y } X:= X div 2; { X Y + S = x y } { X Y + S = x y X = 0 } Κανόνας partial-while { S = x y } Άσκηση 3 (α) Η ασθενέστερη συνθήκη της προδιαγραφής είναι η 0 < n. Αμετάβλητη συνθήκη του βρόχου είναι x = Fib[i-2] y = p = Fib[i-1] [(3 n i n + 1) (0 < n < 3 i = 3)] και μεταβλητή έκφραση η n i + 3. Ακολουθεί η απόδειξη. Λύσεις Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2013 Σελίδα 2

{ 0 < n } { true true [3 n (0 < n < 3) 0 n 3 + 3 ]} { 1 = Fib[1] 1 = p = Fib[2] [(3 n 3 n + 1) (0 < n < 3 3 = 3) 0 n 3 + 3]} x := 1; { x = Fib[1] 1 = p = Fib[2] [(3 n 3 n + 1) (0 < n < 3 3 = 3)] 0 n 3 + 3 } y := 1; { x = Fib[1] y = p = Fib[2] [(3 n 3 n + 1) (0 < n < 3 3 = 3)] 0 n 3 + 3 } i := 3; { x = Fib[i-2] y=p=fib[i-1] [(3 n i n + 1) (0 < n < 3 i = 3)] 0 n i + 3 } while (i n){ { x = Fib[i-2] y=p=fib[i-1] [(3 n i n+1) (0 < n < 3 i = 3) i n 0 n i + 3 = E 0 } Αμ. Συνθήκη, Φρουρός και Μετ. Έκφραση { y = Fib[i-1] x+y = Fib[i] [(3 n i+1 n+1) (0 < n < 3 i + 1 = 3)] 0 n i + 2 < E 0 } p := x + y; { y = Fib[i-1] p=p=fib[i] [(3 n i+1 n+1) (0 < n < 3 i + 1 = 3)] 0 n i + 2 < E 0 } x := y; { x = Fib[i-1] p=p=fib[i] [(3 n i+1 n+1) (0 < n < 3 i + 1 = 3)] 0 n i + 2 < E 0 } y := p; { x = Fib[i-1] y=p=fib[i] [(3 n i+1 n+1) (0 < n < 3 i + 1 = 3)] 0 n i + 2 < E 0 } i := i + 1; { x = Fib[i-2] y = p = Fib[i-1] [(3 n i n+1) (0 < n < 3 i = 3)] 0 n i + 3 < E 0 } } { x = Fib[i-2] y = p = Fib[i-1] [(3 n i n+1) (0 < n < 3 i = 3)] i > n} Κανόνας total-while { y = fib(n) } (β) Η ασθενέστερη συνθήκη της προδιαγραφής είναι η 0 n. Για τον εσωτερικό βρόχο έχουμε Αμετάβλητη συνθήκη: s m n = x y 0 n 1 < E 0 Μεταβλητή Έκφραση: n και για τον εξωτερικό: Αμετάβλητη συνθήκη: s m n = x y Μεταβλητή Έκφραση: n Ακολουθεί η απόδειξη. Λύσεις Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2013 Σελίδα 3

{0 n } { 1 x y = x y 0 n } s := 1; { s x y = x y 0 n } m := x; { s m y = x y 0 n } n := y; { s m n = x y 0 n } while (n!= 0) do { s m n = x y n 0 0 n = E 0 } Αμ. Συνθ. Φρουρός, Μετ. Εκφρ. { s m n = x y 0 n 1 < E 0 0 n } while (even(n)) do { s m n = x y 0 n 1 < E 0 even (n) 0 n = Ζ 0 } { s (m 2 ) n/2 = x y 0 n/2 1 < E 0 0 n/2 < Ζ 0 } m := m*m; Αμ. Συνθ., Φρουρός, Μετ. Εκφρ. { s m n/2 = x y 0 n/2 1 < E 0 0 n/2 < Ζ 0 } n := n / 2; { s m n = x y 0 n 1 < E 0 0 n < Ζ 0 } { s m n = x y 0 n 1 < E 0 even(n) } Κανόνας total-while { s m m n-1 = x y 0 n 1 < E 0 } n := n-1; { s m m n = x y 0 n < E 0 } s := s*m { s m n = x y 0 n < E 0 } { s m n = x y n = 0 } Κανόνας total-while {s = x y } Άσκηση 4 (20 μονάδες) Κατά τη διατύπωση των καινούριων κανόνων θα κάνουμε τις εξής υποθέσεις: 1. Υποθέτουμε ότι η γλώσσα δεν περιέχει εντολές while. Αυτό δεν βλάπτει την εκφραστικότητα της γλώσσας αφού κάθε εντολή τύπου while B C μπορεί να εκφραστεί με την ισοδύναμη δομή loop if B break else C. 2. Υποθέτουμε ότι το C αποτελείται από μια εντολή if B then C else C. Αυτό δεν βλάπτει την εκφραστικότητας της γλώσσας αφού αν το C δεν περιέχει καθόλου if τότε μπορεί να γραφτεί ως if true then C else skip ενώ αν είναι της μορφής C 1 ; if B then C else C ; C 2 τότε μπορεί να γραφτεί ως if B then C 1 ; C; C 2 else C 1 ; C ; C 2. 3. Τέλος, υποθέτουμε ότι αν έχουμε την εντολή loop [if B then C else C ] τότε η εντολή break εμφανίζεται στο C και όχι στο C και συγκεκριμένα ότι η εντολή C έχει τη μορφή C ;break. Και πάλι μπορούμε να δείξουμε ότι αυτό δεν επηρεάζει την εκφραστικότητα της γλώσσας. Λύσεις Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2013 Σελίδα 4

Ο καινούριος κανόνας για την εντολή loop C είναι ο εξής: { η B } C{ φ} { η B}C'{ η} { η} loop if B then C else C' { φ} Επίσης έχουμε τον πιο κάτω κανόνα για την εντολή break: { φ } break { φ} Break Loop Στην συνέχεια θα χρησιμοποιήσουμε τον πιο πάνω κανόνα για να αποδείξουμε την ορθότητα του προγράμματος που έχει δοθεί. Θα χρησιμοποιήσουμε ως η την έκφραση a x! = x 0! { x = x 0 >0 } { 1 x! = x 0! } a:= 1; { a x! = x 0! } loop( ) if x = 1 then { a x! = x 0! x = 1} { a=x 0! } break { a=x 0! } Κανόνας break else { a x! = x 0! x 1 } { a x (x 1)! = x 0! } a:= a*x; { a (x 1)! = x 0! } x:=x-1; { a x! = x 0! } { a=x 0! } Κανόνας loop Λύσεις Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2013 Σελίδα 5