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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

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

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

Κατηγορηματικός Λογισμός (ΗR Κεφάλαιο )

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

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

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

Ονοματεπώνυμο: Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Δομή Ακολουθίας και Επιλογής Κεφ: 2.1, 2.3, , 6.3, , 8.1, 8.1.

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

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Επαναληπτικές Ασκήσεις Χειµερινό Εξάµηνο 2014

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

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

18/ 07/ Σελίδα 1 6

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Τάξη: Γ Λυκείου Κατεύθυνση: Τεχνολογική Μάθημα: Ανάπτυξη Εφαρμογών σε Προγ/κό Περιβάλλον Είδος Εξέτασης: Διαγώνισμα Ημερομηνία Εξέτασης:

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

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

Σελίδα 1 από 7 ΔΙΑΓΩΝΙΣΜΑ ΕΚΠ. ΕΤΟΥΣ ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

7. Βασικά στοιχεία προγραµµατισµού.

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

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

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

Κεφ 2. Βασικές Έννοιες Αλγορίθμων

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

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

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Επαναληπτικές Ασκήσεις Χειμερινό Εξάμηνο 2016

Προτεινόμενα Θέματα ΑΕΠΠ

ΘΕΜΑ 1ο Α. Να γράψετε στο τετράδιό σας τον αριθµό κάθε πρότασης και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι λανθασµένη.

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

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

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / Γ Λυκείου ΗΜΕΡΟΜΗΝΙΑ: ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ- Α.ΚΑΤΡΑΚΗ - Π.ΣΙΟΤΡΟΠΟΣ

ΙΑΓΩΝΙΣΜΑ ΑΝΑΠΤΥΞΗΣ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΠΟΦΟΙΤΟΙ) Κυριακή

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Δομή Ακολουθίας

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

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

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

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

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

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Α2. Να αναφέρετε ονομαστικά: i) τα αλγοριθμικά κριτήρια ii) τους τρόπους αναπαράστασης αλγορίθμου. (μονάδες 10)

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

ΜΑΘΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΚΑΙ ΛΟΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΗΛΙΑΣΚΟΣ ΦΡΟΝΤΙΣΤΗΡΙΑ. Τεχνολογικής Κατεύθυνσης Προγραμματισμός Γ Λυκείου Μέρος 2 ο ΥΠΗΡΕΣΙΕΣ ΠΑΙΔΕΙΑΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ ΣΤΕΦΑΝΟΣ ΗΛΙΑΣΚΟΣ

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

IMPLICIT NONE INTEGER :: a, b, c

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

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

2.1 Διαιρετότητα, ισοϋπόλοιποι αριθμοί. q Z, a = b q + r.

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

1 Ο Λύκειο Ρόδου. Β ΓΕΛ ΕισΑρχΕπ Η/Υ. Γεωργαλλίδης Δημήτρης

Επαναληπτικό Διαγώνισμα στη Δομή Ακολουθίας και Δομή Επιλογής

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

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Εισαγωγικά στοιχεία αλγορίθμων -Δομή Ακολουθίας Δομή Επιλογής ΗΜΕΡΟΜΗΝΙΑ 10/ 07/ 2017 ΟΝΟΜΑΤ/ΜΟ ΒΑΘΜΟΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

Μονάδες 4. β. x=20 και y=10

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

ΔΟΚΙΜΑΣΤΙΚΟ ΤΕΣΤ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 26 ΑΠΡΙΛΙΟΥ 2017 ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΤΕΣΣΕΡΕΙΣ (4)

Εισαγωγή στους Αλγόριθμους

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

Κεφάλαιο 1. Τι θα μάθουμε σήμερα: -AND, OR, NOT. -Ενσωματωμένες συναρτήσεις. -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD. -Προτεραιότητα πράξεων

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Επαναληπτικές Ασκήσεις

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

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

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

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

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙΔΕΣ

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

Transcript:

Άσκηση 1 (15 μονάδες) Σειρά Προβλημάτων 5 Λύσεις Να δώσετε προδιαγραφές (τριάδες Hoare) για τα πιο κάτω προγράμματα: (α) Ένα πρόγραμμα το οποίο παίρνει ως δεδομένο εισόδου δύο πίνακες Α και Β και ελέγχει κατά πόσο περιέχουν κάποιο κοινό στοιχείο. (β) Ένα πρόγραμμα το οποίο παίρνει ως δεδομένο εισόδου δύο πίνακες Α και Β και επιστρέφει τη μακρύτερη κοινή τους αρχική ακολουθία. (γ) Ένα πρόγραμμα το οποίο παίρνει ως δεδομένο εισόδου ένα πίνακα Α και τον ταξινομεί. (α) Έστω M και N σταθερές που αντιστοιχούν στα μεγέθη των πινάκων A και B. Υποθέτουμε ότι το πρόγραμμα υπολογίζει την τιμή της μεταβλητής result η οποία τελικά θα περιέχει την λογική τιμή που εκφράζει κατά πόσο οι δύο πίνακες περιέχουν κάποιο κοινό στοιχείο. {M 0 N 0 C { i, 0 i < M j, 0 j < N A[i] = B[j] result = true (β) Έστω M και N σταθερές που αντιστοιχούν στα μεγέθη των πινάκων A και B. Υποθέτουμε ότι το πρόγραμμα υπολογίζει την τιμή της μεταβλητής result η οποία τελικά θα περιέχει την ακέραια τιμή για την οποία Α[0..result] είναι η μακρύτερη κοινή αρχική υποακολουθία των Α και Β. {M 0 /\ N 0 C { 0 result < min(m, N) ( i, 0 i result : A[i] = B[i]) A[result+1] B[result+1] (γ) Έστω M σταθερά που αντιστοιχεί στο μέγεθος του πίνακα A. {A = [x 1,,x M], M 0 C {( i, 0 i < M 1 : Α[i] Α[i+1]) {A[i] 0 i < M = {x 1,,x M Άσκηση 2 (α) Να αποδείξετε την ορθότητα της προδιαγραφής = par { x = x 0 y = y 0 P { x y 0 όπου ο κώδικας του Ρ δίνεται πιο κάτω. if (x > 0) if (y > 0) x := y + 1; x := y - x; Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 1 από 7

{ x = x 0 y = y 0 Προσυνθήκη { (x + y > 0 x + y + y y 0 ) (x + y 0 [y > 0 y+1 y 0 y 0 y (x + y) y 0 ]) Συνεπαγωγή * { (x > 0 x + y y 0 ) (x 0 [ y > 0 y+1 y 0 y 0 y x y 0 ]) if (x > 0) { x + y y 0 { x y 0 { y > 0 y+1 y 0 y 0 y x y 0 if (y > 0) { y+1 y 0 x := y + 1; { x y 0 { y x y 0 x := y - x; { x y 0 { x y 0 Κανόνας if Σχετικά με τη Συνεπαγωγή (*) σημειώνουμε ότι: Αφού y = y 0: x + y > 0 x + y + y y 0 x + y > 0 x + y + y y Αφού y = y 0: x + y > 0 x + y 0 True x + y 0 [(y > 0 y+1 y 0) (y 0 y (x + y) y 0) ] x + y 0 [(y > 0 y+1 y) (y 0 y (x + y) y )] x + y 0 [(y > 0 true) (y 0 y (x + y) y ) ] x + y 0 [true (y 0 y (x + y) y) ] x + y 0 [y 0 (x + y) 0 ] x + y 0 [y 0 x + y 0 ] True (β) Θεωρήστε τη συνάρτηση gcd(x,y) η οποία επιστρέφει τον μέγιστο κοινό διαιρέτη ανάμεσα στις τιμές Χ και Υ ικανοποιεί τις πιο κάτω προτάσεις: (X>Y) gcd(x,y)=gcd(x Y,Y) gcd(x,y) = gcd(y,x) gcd(x,x) = X Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 2 από 7

Αποδείξτε την πιο κάτω προδιαγραφή υπό την έννοια της μερικής ορθότητας: {(A>0) (B>0) (gcd(a,b)=gcd(x,y)) while A>B A := A-B; while B>A B := B-A {(0<B) (B A) (gcd(a,b)=gcd(x,y)) Αμετάβλητη συνθήκη πρώτου βρόχου: 0 < B gcd(a,b) = gcd(x,y) Αμετάβλητη συνθήκη δεύτερου βρόχου: gcd(a,b) = gcd(x,y) {Α > 0 B > 0 gcd(a,b) = gcd(x,y) Προσυνθήκη { B > 0 gcd(a,b) = gcd(x,y) Συνεπαγωγή while (A > B) { { B > 0 gcd(a,b) = gcd(x,y) Α > Β Αμετ. Συνθ. και Φρουρός { B > 0 gcd(a Β,B) = gcd(x,y) Συνεπαγωγή 1 A = A-B; { B > 0 gcd(a,b) = gcd(x,y) { B > 0 gcd(a,b) = gcd{x,y Α Β Καν. partial while {0 < B gcd(a,b) = gcd(x,y) Συνεπαγωγή while (B > A) { {0 < B gcd(a,b) = gcd(x,y) B > A Αμετ. Συνθ. και Φρουρός {0 < B A gcd(a,b A) = gcd(x,y) Συνεπαγωγή 2 B = B-A; {0 < B gcd(a,b) = gcd(x,y) Αξίωμα ανάθεσης { B A 0 < B gcd(a,b) = gcd(x,y) Καν. partial while Σημειώστε ότι για την απόδειξη των συνεπαγωγών 1 και 2 χρησιμοποιούνται οι προτάσεις που δόθηκαν στην άσκηση αναφορικά με τη συνάρτηση gcd. Συγκεκριμένα, με δεδομένο ότι gcd(a,b) = gcd(x,y) και B > A προκύπτει το gcd(a, B A) = gcd(x,y) ως εξής: gcd(x,y) = gcd(a,b) = gcd(b,a) = gcd(b A,A) = gcd(a, B A) Άσκηση 3 (α) Να αποδείξετε την ορθότητα της πρότασης = tot { n 0 C { m =, k = { A{i] 0 i < n, A[i] < 50 όπου ο κώδικας του C δίνεται πιο κάτω. k := 0; m := 0; i := 0; while (i < n){ if (A[i] < 50) k++; Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 3 από 7

i++; m := m/n; Αμετάβλητη Συνθήκη: i n m= k = { A[j] 0 j < i, A[j] < 50 Μεταβλητή Έκφραση: i { n 0 { 0 n 0 = 0 = { A[j] 0 j < 0, A[j] < 50 0 0 Συνεπαγωγή k := 0; { 0 n 0 = k = { A[j] 0 j < 0, A[j] < 50 0 0 m := 0; { 0 n m= k = { A[j] 0 j < 0, A[j] < 50 0 0 i := 0; { i n m= k = { A[j] 0 j < i, A[j] < 50 0 i while (i < n){ { i < n i n m= k = { A[j] 0 j < i, A[j] < 50 0 i = E 0 Αμετ. Συνθ. και Φρουρός και Μετ. Έκφραση { A[i]<50 i +1 n m + A[i] = k+1 = { A[j] 0 j < i+1, A[j] < 50 A[i] 50 i+1 n m+a[i]= k= {A[j] 0 j<i+1, A[j]<50 0 i+1<e 0 Συνεπαγωγή if (A[i] < 50) { i+1 n m+a[i] = k+1 = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 k++; { i+1 n m + A[i] = k = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 { i +1 n m= k = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 { i +1 n m + A[i] = k = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 { i +1 n m= k = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 { i +1 n m= k = { A[j] 0 j < i+1, A[j] < 50 0 i + 1< E 0 Κανόνας if i++; { i n m= k = { A[j] 0 j < i, A[j] < 50 0 i < E 0 { i n i n m= k = { A[j] 0 j < i, A[j] < 50 Καν. total while { m= k = { A{i] 0 i < n, A[i] < 50 Συνεπαγωγή m := m/n; { m = k = { A{i] 0 i < n, A[i] < 50 Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 4 από 7

(β) Να αποδείξετε την ορθότητα της προδιαγραφής = tot {x = a n = b n 0 C {p = a b όπου ο κώδικας του C δίνεται πιο κάτω. p := 1; while (n!= 0) if (n mod 2 = 1) then p := p*x p := p; n := n div 2; x := x*x Χρησιμοποιούμε ως αμετάβλητη συνθήκη την η = p x n = a b και ως μεταβλητή έκφραση την n. {x = a n = b n 0 { x n = a b 0 n Συνεπαγωγή p := 1; {p x n = a b 0 n while (n!= 0) {p x n = a b n 0 0 n = Ε 0 {[n mod 2 0 p x 2 n div2+1 = a b 0 n div 2 < Ε 0 ] [n mod 2 = 0 p x 2 n div2 = a b 0 n div 2 < Ε 0] if (n mod 2 = 1) { px (x x) n div2 = a b 0 n div 2 < Ε 0 then p := p*x Αμ. Συν., Μετ. Εκφρ. και Φρουρός Συνεπαγωγή { p (x x) n div2 = a b 0 n div 2 < Ε 0 { p (x x) n div2 = a b 0 n div 2 < Ε 0 p := p; { p (x x) n div2 = a b 0 n div 2 < Ε 0 { p (x x) n div2 = a b 0 n div 2 < Ε 0 Κανόνας if n := n div 2; { p (x x) n = a b 0 n < E 0 x := x*x { p x n = a b 0 n < E 0 {p x n = a b n = 0 Καν. Total while {p = a b Συνεπαγωγή Άσκηση 4 (α) Θεωρήστε τα πιο κάτω αξιώματα για τον τελεστή της ανάθεσης: (i) { p X:= E { p[e/x] (ii) { p[e/x] X:= E {p (iii) { p X:= E { p X = E (iv) { p X = E X:= E { p Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 5 από 7

Να αποφασίσετε ποια από τα αξιώματα είναι ορθά. Για κάθε ορθό αξίωμα να δώσετε ένα σύντομο επιχείρημα που να υποστηρίζει την ορθότητά του και για κάθε λανθασμένο αξίωμα να δώσετε ένα αντιπαράδειγμα. (β) Για οποιαδήποτε μεταβλητή Χ, ας γράψουμε Χ++ για την έκφραση η οποία υπολογίζεται ως την τιμή Χ+1 χωρίς όμως να μεταβάλλεται η τιμή της μεταβλητής Χ. Για παράδειγμα, αν η μεταβλητή Χ έχει την τιμή 3, εκτέλεση της εντολής Υ := Χ++ έχει ως αποτέλεσμα το Υ να πάρει την τιμή 4 χωρίς να αλλάξει η τιμή του Χ. Να εξηγήσετε γιατί εισαγωγή του πιο πάνω τύπου εκφράσεων στην γλώσσα while θα έχει ως αποτέλεσμα να χάσει την εγκυρότητά του το αξίωμα της ανάθεσης (διαφάνεια 9 13). (γ) Θεωρήστε τον τελεστή X += E o οποίος ορίζεται ως Χ := Χ+Ε. Να ορίσετε ένα καινούριο αξίωμα για αυτόν τον τελεστή και να συζητήσετε σύντομα την ορθότητά του. (δ) Να γράψετε ένα αξίωμα για την εντολή ταυτόχρονης ανάθεσης Χ 1, Χ 2,, Χ n := E 1, E 2, E n. (Η εντολή αυτή έχει ως αποτέλεσμα, αφού υπολογιστούν οι τιμές των εκφράσεων E 1, E 2, E n, να ανατεθούν ταυτόχρονα αυτές οι τιμές στις μεταβλητές Χ 1, Χ 2,, Χ n.) Ποια η ασθενέστερη προσυνθήκη της ταυτόχρονης ανάθεσης Χ 1, Χ 2,, Χ n := E 1, E 2, E n και ποια της ακολουθίας αναθέσεων Χ 1:= E 1; Χ 2:= E 2; ; Χ n := E n ; Λύση (i) { p X:= E { p[e/x] Το αξίωμα είναι λάθος. Για παράδειγμα η χρήση του θα μας οδηγούσε στο συμπέρασμα ότι { Χ = Ε+1 X:= E { Ε = Ε+1 που είναι προφανώς λανθασμένο. (ii) { p[e/x] X:= E {p Το αξίωμα είναι ορθό: Αν κάποια συνθήκη p ισχύει μετά από την ανάθεση X:= E για τη μεταβλητή Χ τότε η συνθήκη αυτή θα πρέπει να ήταν αληθής και πριν από την ανάθεση για το Ε. (iii) { p X:= E { p X = E Το αξίωμα είναι λάθος. Για παράδειγμα η χρήση του θα μας οδηγούσε στο συμπέρασμα ότι { Χ = Ε+1 X:= E { Χ=Ε+1 Χ=Ε που είναι προφανώς λανθασμένο. (iv) { p X = E X:= E { p Το αξίωμα είναι ορθό. Προφανώς αν η εκτέλεση της ανάθεσης ξεκινήσει από μια κατάσταση όπου p και X = E, η ανάθεση δεν θα αλλάξει την κατάσταση του προγράμματος (το Χ είχε την τιμή Ε από την αρχή) επομένως η συνθήκη p θα συνεχίσει να ικανοποιείται. (β) H εκφώνηση της άσκηση περιείχε τυπογραφικό λάθος. Η σωστή εκφώνηση είναι η εξής: Για οποιαδήποτε μεταβλητή Χ, ας γράψουμε Χ++ για την έκφραση η οποία υπολογίζεται ως την τιμή Χ+1 καθώς αυξάνει κατά 1 τη τιμή της μεταβλητής Χ. Για παράδειγμα, αν η μεταβλητή Χ έχει την τιμή 3 εκτέλεση της εντολής Υ := Χ++ έχει ως αποτέλεσμα τόσο το Υ όσο και το Χ να πάρουν την τιμή 4. Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 6 από 7

Να εξηγήσετε γιατί εισαγωγή του πιο πάνω τύπου εκφράσεων στην γλώσσα while θα έχει ως αποτέλεσμα να χάσει την εγκυρότητά του το αξίωμα της ανάθεσης (διαφάνεια 9 13). Η εισαγωγή της έκφρασης αυτής στη γλώσσα έχει σαν αποτέλεσμα να χάσει την εγκυρότητά του το αξίωμα της ανάθεσης γιατί σε μία ανάθεση είναι δυνατόν να αλλάξουν ταυτόχρονα οι τιμές δύο και όχι μίας μεταβλητής, κάτι που δεν λαμβάνει υπόψη του ο κανόνας. Για παράδειγμα, ο υπάρχων κανόνας θα μας δώσει προδιαγραφές όπως την { Χ + 1 = Χ Υ:= Χ++ { Υ = Χ που προφανώς είναι λανθασμένη. (γ) O τελεστής X += E έχει οριστεί ως Χ := Χ+Ε. Κατάλληλο αξίωμα για την απόδειξη της ορθότητας προδιαγραφών που αφορούν τον τελεστή αυτό είναι το: {p[χ+e/x] X += E {p Το αξίωμα αυτό προκύπτει από το αξίωμα του τελεστή της ανάθεσης και τον ορισμό του τελεστή υπό μελέτη. (δ) Ακολουθεί αξίωμα για την εντολή ταυτόχρονης ανάθεσης: {p[e 1, E 2, E n / Χ 1, Χ 2,, Χ n] Χ 1, Χ 2,, Χ n := E 1, E 2, E n {p Παρατηρούμε ότι ενώ η ασθενέστερη προσυνθήκη της ταυτόχρονης ανάθεσης Χ 1, Χ 2,, Χ n := E 1, E 2, E n είναι η p[e 1, E 2, E n / Χ 1, Χ 2,, Χ n], η ασθενέστερη προσυνθήκη της ακολουθίας αναθέσεων Χ 1:= E 1; Χ 2:= E 2; ; Χ n := E n είναι η ( ((p[e n / Χ n])[ E n 1 / Χ n 1]) )[ E 1 / Χ 1] Έτσι, για παράδειγμα, ισχύει ότι {3=3, Χ+1=5 Χ,Υ:=3, Χ+1 {X=3, Y=5 που μας δίνει ως ασθενέστερη προσυνθήκη την Χ=4 ενώ {Y+1=3, Υ+2 = 5 Χ:= Y+1; {X=3, Χ+1=5 Υ:=Χ+1 {X=3, Y=5 που μας δίνει ως ασθενέστερη προσυνθήκη την Y = 2 Υ = 3 false. Σειρά Προβλημάτων 5 Χειμερινό Εξάμηνο 2017 Σελίδα 7 από 7