ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ 1. Ποιες από τις παρακάτω εντολές είναι σωστές; α) if A + B then Y := X Λάθος γιατί η έκφραση Α + Β δεν µπορεί να είναι τύπου Boolean β) if P = Q then A := B B := A Σωστή γ) if X > Y then if Y < Y then A := B Σωστή δ) if X := Y then Y := X Λάθος γιατί το Χ := Υ είναι µια εντολή ανάθεσης τιµής σε µεταβλητή και όχι έκφραση τύπου Boolean ε) if X > 0 then A = B Λάθος γιατί το A = B είναι µια συσχέτιση και όχι µια εντολή στ) if X > Y then X := Y; Y := X Λάθος γιατί πριν από το υπάρχει ; 2. Ένας αλγόριθµος προβλέπει, ότι η µεταβλητή Y πρέπει να πάρει τις παρακάτω τιµές, ανάλογα µε τις τιµές των µεταβλητών A και Β Y = A + 100, αν Α >= 0 και Β = 0 Υ = Β + 5, αν Α >= 0 και Β <> 0 Υ = Β 5, αν Α < 0 και Β = 0 Υ = Α 100, αν Α < 0 και Β <> 0 Δώστε τις αντίστοιχες εντολές σε Pascal if (A>=0) AND (B=0) then Y := A + 100; if (A>=0) AND (B<>0) then Y := B + 5; if (A<0) AND (B=0) then Y := B - 5; if (A<0) AND (B<>0) then Y := A - 100; 1
3. Ποια µαθηµατική συνάρτηση υλοποιούν οι παρακάτω εντολές; Για Α = 3 Β = 2 C = 7 D = 1 έχουµε if A > B then 3>2 True Y := A Y = 3 Y := B; if C > Y then 7 > 3 True Y := C; Y = 7 if D > Y then Y := D; 1 > 7 False Αν Α = 3, Β = 2, C = 7 και D = 1 ποια θα είναι η τιµή της µεταβλητής Υ µετά την εκτέλεση των παραπάνω εντολών; Από τον παραπάνω πίνακα φαίνεται ότι για τις δοσµένες τιµές των µεταβλητών, µετά το πέρας της εκτέλεσης η µεταβλητή Y θα έχει την τιµή 7. Είναι επίσης εύκολο να δείτε ότι οι παραπάνω εντολές υλοποιούν την συνάρτηση εύρεσης µεγίστου τεσσάρων αριθµών ΜΑΧ(Α,Β,C,D) 4. Δίνεται το παρακάτω τµήµα προγράµµατος Pascal readln(a,b); a=5 b=10 a = 10 b = 5 a := a b; a = -5 a = 5 b := a+b; b = 5 b = 10 c := b; c = 5 c = 10 if a > c then -5>5 False 5 > 10 false c := a; writeln( a=,a, b=,b, c=,c); a=-5, b=5, c=5 a=5, b=10, c=10 Αν οι µεταβλητές a,b,c είναι ακέραιοι τι θα τυπώσει η εντολή writeln για κάθε µία από τις παρακάτω περιπτώσεις εισόδου; α) a=5, b=10 β) a=10, b=5 Όπως φαίνεται στον παραπάνω πίνακα 5. Δίνεται το παρακάτω τµήµα προγράµµατος Pascal readln(a,b); a=6 b=3 a=4 b=4 if a > 5 then 6>5 True 4 > 5 False b := 2*a+b b=15 a := 2*b+a; a = 12 writeln( a=,a, b=,b); a=6,b=15 a=12,b=4 Αν οι µεταβλητές a,b,c είναι ακέραιοι τι θα τυπώσει η εντολή writeln για κάθε µία από τις παρακάτω περιπτώσεις εισόδου; 2
α) a=6, b=3 β) a=4, b=4 Όπως φαίνεται στον παραπάνω πίνακa 6. Να βρεθεί το αποτέλεσµα των παρακάτω λογικών εκφράσεων, αν είναι Α = 2 Β = 3 και C = Αληθής a. (A > B) AND C e. (A < 0) AND (A < 2) b. (A < B) OR NOT (A = B) AND C c. (A > 1) AND NOT C d. (A <= 3) AND ((B A) 0 OR NOT C) a. (2>3)ANDTrue = False AND True = False; f. NOT (B = 3) g. (B = 3) AND C b. (2 < 3) OR NOT (2=3) AND True = True OR True AND True = True OR True = True c. (2 > 1) AND NOT True= True AND False = False d. e. (2 < 0) AND (2 < 2) = False AND False = False f. NOT (3 = 3) = False g. (3 = 3) AND True = True AND True = True 7. Δίνεται το ακόλουθο τµήµα προγράµµατος Για Χ = 1 Υ = 2 Ζ = 3 έχουµε if Χ > Υ then if Υ > Ζ then if Χ > Ζ then writeln(χ) writeln(υ) writeln(ζ) 1 > 2 False Τι θα εµφανίσει για Χ = 1, Υ = 2, Ζ = 3 Όπως φαίνεται από τον παραπάνω πίνακα δεν θα εµφανιστεί τίποτα 3
8. Να βρεθεί η τιµή της µεταβλητής k µετά την εκτέλεση των ακόλουθων εντολών: α) k:=0; k=0 a=5 b=10 c=15 If a>=b Then 5>10 False k:=2; k=2 β) k:=0; If (a > b div 2) and (a < b a) or (a <> b) Then k:=2; Η τιµή της λογικής έκφρασης της εντολής if είναι (a > b div 2) and (a < b a) or (a <> b) = (5 > 10 div 2) and (5 < 10-5) or (5 <> 10) = (5 > 5) and (5 < 5) or True = false and false or true = true άρα θα εκτελεστεί η εντολή και συνεπώς η µεταβλητή k θα έχει την τιµή 1 γ) k:=0; If a > b div 2 Then 5 > 10 div 2 false if a < b a Then if a<>b Then k:=3 k:=2 k:=4; k = 4 4
δ) k:=0; If (a < b) and (b < c) Then if (c < a) or (a >= b a) Then k:=2 k:=3; Η τιµή της έκφρασης (a < b) and (b < c) θα είναι (5 < 10) and (10 < 15) = true and true = true Η τιµή της έκφρασης (c < a) or (a >= b a) είναι (15 < 5) or (5 >= 10 5) = false or (5 >= 5) = false or true = true Συνεπώς θα εκτελεστεί η εντολή k := 1 5