Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Ασκήσεις. Ασκήσεις με παραβίαση κριτηρίων Σε αυτές τις ασκήσεις εξετάζουμε με τη σειρά:  Περατότητα (εάν υπάρχει δομή επανάληψης)  Καθοριστικότητα (εάν.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ασκήσεις. Ασκήσεις με παραβίαση κριτηρίων Σε αυτές τις ασκήσεις εξετάζουμε με τη σειρά:  Περατότητα (εάν υπάρχει δομή επανάληψης)  Καθοριστικότητα (εάν."— Μεταγράφημα παρουσίασης:

1 Ασκήσεις

2 Ασκήσεις με παραβίαση κριτηρίων Σε αυτές τις ασκήσεις εξετάζουμε με τη σειρά:  Περατότητα (εάν υπάρχει δομή επανάληψης)  Καθοριστικότητα (εάν υπάρχει δομή επιλογής)  Είσοδος, εάν π.χ. κάποιες μεταβλητές συμμετέχουν σε εκφράσεις και δεν έχουν πάρει προηγουμένως τιμή.  Έξοδος, εάν π.χ. εμφανίζεται κάτι σε μια ομάδα εντολών μιας δομής επιλογής αλλά όχι σε μια άλλη της ίδιας επιλογής.

3 Παραβίαση κριτηρίων Δίνεται το παρακάτω τμήμα αλγορίθμου. Τι κριτήρια παραβιάζει; Να δικαιολογήσετε την απάντησή σας. Διάβασε Χ S <- 0 Όσο Χ<=7 επανάλαβε F <- (Χ^2+1)/(Χ-1) Εκτύπωσε F S <- S+ F Τέλος_επανάληψης Εκτύπωσε Χ, S ΑΠΑΝΤΗΣΗ Παραβιάζει το κριτήριο της περατότητας, διότι η μεταβλητή Χ δε μεταβάλλεται εντός της απανάληψης, άρα δεν αλλάζει η συνθήκη της Όσο. Παραβιάζει το κριτήριο της καθοριστικότητας, διότι αν χ=1 ο παρονομαστής Χ-1 γίνεται 0.

4 Μετατροπή από Όσο σε Μέχρις_ότου Γ<-1 Πλ <-0 Διάβασε αριθμός Όσο (αριθμός<>0) και (Πλ 0) και (Πλ<10) επανάλαβε Γ<-Γ*αριθμός Γ<-Γ*αριθμός Πλ <- Πλ+1 Πλ <- Πλ+1 Διάβασε αριθμός Διάβασε αριθμόςΤέλος_επανάληψης Εμφάνισε Γ Γ<-1 Πλ <-0 Διάβασε αριθμός Αν (αριθμός<>0) και (Πλ<10) τότε Αρχή_επανάληψης Γ<-Γ*αριθμός Πλ <- Πλ+1 Διάβασε αριθμός Μέχρις_ότου (αριθμός=0) ή (Πλ=10) Τέλος_αν Εμφάνισε Γ Ο έλεγχος …Πλ<10 στην Αν ήταν περιττός στη συγκεκριμένη περίπτωση

5 Μετατροπή από Όσο σε Μέχρις_ότου i  1 X  256 Όσο (i <= 5) Επανέλαβε X  X / 2 X  X / 2 i  i + 1 i  i + 1Τέλος_Επανάληψης i  1 X  256 Αρχή_επανάληψης X  X / 2 i  i + 1 Μέχρις_ότου i>5 Ο έλεγχος Aν i<=5 πριν τη Μέχρις_ότου ήταν περιττός στη συγκεκριμένη περίπτωση αφού είναι βέβαιο ότι ισχύει την 1 η φορά…

6 Μετατροπή από Μέχρις_ότου σε Όσο Διάβασε κ Σ <- 0 Αρχή_επανάληψης Διάβασε α Διάβασε α Σ <- Σ+α Σ <- Σ+α Μέχρις_ότου Σ>κ Εμφανισε Σ Διάβασε κ Σ <- 0 Διάβασε α Σ <- Σ+α Όσο Σ<=κ επανάλαβε Διάβασε α Σ <- Σ+α Τέλος_επανάληψης Τοποθετήσαμε της εντολές του βρόχου μια φορά πριν την Όσο, ώστε να εκτελεστούν τουλάχιστον μια φορά, όπως απαιτεί η Μέχρις_ότου…

7 Μετατροπή από Όσο σε Για i  1 X  0 Όσο (i <= 10) Επανέλαβε X  X * i + 2 X  X * i + 2 i  i + 2 i  i + 2Τέλος_Επανάληψης Εμφάνισε X X  0 Για i από 1 μέχρι 10 με_βήμα 2 X  X * i + 2 Τέλος_Επανάληψης Εμφάνισε X Παρατηρούμε την αρχική τιμή του μετρητή που βρίσκεται στην Όσο και την τελική του τιμή (με βάση τη συνθήκη) οι οποίες «συμμετέχουν» στις εντολές του βρόχου. Η μεταβολή του μετρητή εντός της Όσο γίνεται βήμα στη Για.

8 Μετατροπή από Όσο σε Για i  20 X  0 Όσο (i > 0) Επανέλαβε i  i - 3 i  i - 3 X  X + i X  X + i Ψ  Χ * Χ Ψ  Χ * ΧΤέλος_Επανάληψης Εμφάνισε X, Ψ X  0 Για i από 20 μέχρι 1 με_βήμα -3 X  X + (i-3) Ψ  Χ * Χ Τέλος_Επανάληψης Εμφάνισε X, Ψ Παρατηρούμε ότι η μεταβολή του μετρητή i γίνεται στην αρχή της Όσο με αποτέλεσμα στις πράξεις παρακάτω να είναι ήδη μειωμένη η τιμή κατά 3 από αυτήν που ξεκινάει στην επανάληψη. Επομένως κάνουμε την παραπάνω αλλαγή στις εντολές, χωρίς να αλλάξουμε τη i αφού αλλάζει πριν το Τέλος_επανάληψης με την εντολή με_βήμα -3

9 Μετατροπή από Όσο σε Για Y  2 X  1 Όσο X<=25 Επανάλαβε Υ  Χ+4 Χ  Χ+3 Ζ  Υ+Χ^2 Τέλος_επανάληψης Εμφάνισε Ζ Υ  2 Για Χ από 1 μέχρι 25 με_βήμα 3 Υ  Χ + 4 Ζ  Υ + (Χ + 3) ^ 2 Τέλος_επανάληψης Εμφάνισε Ζ Η αλλαγή στην τελευταία εντολή του βρόχου γίνεται για παρόμοιους λόγους με την προηγούμενη άσκηση.

10 Μετατροπή από Αρχή_επανάληψης σε Για Εντολές1 i  2 Αρχή_επανάληψηςΕντολές2 i  i+2 Μέχρις_ότου i=12 Εντολές3 Εντολές1 Για i από 2 μέχρι 10 με_βήμα 2 Εντολές2 Τέλος_επανάληψης Εντολές3 Παρατηρούμε ότι ο μετρητής μεταβάλλεται κατά 2 και γι’ αυτό έχουμε με_βήμα 2. Επιπλέον έχουμε μέχρι 10, διότι για i=12 η επανάληψη σταματάει σύμφωνα με τον αλγόριθμο της εκφώνησης. Εναλλακτικά, μετατρέπουμε σε Όσο και από την Όσο πάμε στη Για.

11 Μετατροπή από Αρχή_επανάληψης σε Για Χ  Α Αρχή_επανάληψης Χ  Χ+2 Εκτύπωσε Χ Μέχρις_ότου Χ>=Μ Εκτύπωσε Α+2 !για την περίπτωση Α>Μ Για Χ από Α+4 μέχρι Μ+1 με_βήμα 2 Εκτύπωσε Χ Τέλος_επανάληψης Παρατηρούμε ότι ο μετρητής μεταβάλλεται κατά 2 και γι’ αυτό έχουμε με_βήμα 2. Όμως μεταβάλλεται στην αρχή, οπότε εκτυπώνεται η νέα του πλέον τιμή εντός του βρόχου (η 1 η τιμή που εκτυπώνεται είναι η Α+2, μετά η Α+4 κλπ). Για το λόγο αυτό ξεκινάμε από Α+2. Επειδή τερματίζει η επανάληψη όταν Χ>=Μ έχουμε μέχρι Μ+1 για να καλύψουμε κάθε περίπτωση τιμών Α και Μ.

12 Μετατροπή από Για σε Όσο και Μέχρις_ότου α ← 0 Για i από 100 μέχρι 1 με_βήμα -2 α ← α + 2^i α ← α + 2^i Εκτύπωσε α Εκτύπωσε αΤέλος_επανάληψης α ← 0 i ← 100 Όσο i>=1 επανάλαβε α ← α + 2^i Εκτύπωσε α i ← i- 2 Τέλος_επανάληψης α ← 0 i ← 100 Αρχή_επανάληψης !είναι περιττός ο α ← α + 2^i !έλεγχος Αν i>=1 Εκτύπωσε α !πριν την Αρχή_.... i ← i- 2 Μέχρις_ότου i<1

13 Άκηση με Πίνακα Τιμών ΧΥΖΙ Εκτυπ ώνεται , ,

14 Άκηση με Πίνακα Τιμών

15 Πίνακας Τιμών Για τις εντολές 1, 6 και 7 να συμπληρώσετε με σταθερές τιμές. Για την εντολή 4 να συμπληρώσετε με τελεστή και για τις 2, 3, 5 εντολές να συμπληρώσετε με μεταβλητές.ΕντολέςΜνήμηΕπανάληψηΑΒΓΧΥΣ 1 A  B  Α – Γ  Α mod Β 0 4 X  όχι Ψευδής Αληθής 5 Αν Χ <> Ψευδής τότε Σ  0 Σ  0 Υ  10 Υ  10αλλιώς Α  10 Α  10Τέλος_Αν100 6 Σ  1 i  4 Όσο i <= 12 επανάλαβε Σ  Σ + i Σ  Σ + i i  i + 4 i  i + 4Τέλος_επανάληψης5 1η1η1η1η η2η2η2η η3η3η3η 7 Γ  1 Για i από 13 μέχρι 23 με_βήμα 10 Γ  Γ + i Γ  Γ + iΤέλος_επανάληψης η1η1η1η η2η2η2η

16 ΕντολέςΜνήμηΕπανάληψηΑΒΓΧΥΣ 1 A  B  Α – Γ  Α mod Β 0 4 X  όχι Ψευδής Αληθής 5 Αν Χ <> Ψευδής τότε Σ  0 Σ  0 Υ  10 Υ  10αλλιώς Α  10 Α  10Τέλος_Αν Σ  1 i  4 Όσο i <= 12 επανάλαβε Σ  Σ + i Σ  Σ + i i  i + 4 i  i + 4Τέλος_επανάληψης 5 1η1η1η1η η2η2η2η η3η3η3η 7 Γ  1 Για i από 13 μέχρι 23 με_βήμα 10 Γ  Γ + i Γ  Γ + iΤέλος_επανάληψης η1η1η1η η2η2η2η

17 Πίνακες τιμών με Υποπρογράμματα ΠΡΟΓΡΑΜΜΑ Κλήση_Υποπρογραμμάτων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: α, β, χ ΑΡΧΗ α <-1 β <- 2 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ α<= 4 ΤΟΤΕ ΑΝ α<= 4 ΤΟΤΕ ΚΑΛΕΣΕ Διαδ1(α, β, χ) ΚΑΛΕΣΕ Διαδ1(α, β, χ) ΑΛΛΙΩΣ ΑΛΛΙΩΣ χ <- Συν1(α, β) χ <- Συν1(α, β) ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ α, β, χ ΓΡΑΨΕ α, β, χ ΜΕΧΡΙΣ_ΟΤΟΥ χ>11 ΓΡΑΨΕ χ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Διαδ1 (λ, κ, μ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: κ, λ, μ ΑΡΧΗ κ <- κ+1 λ <- λ+3 μ <- κ+λ ΤΕΛΟΣ_ΔΙΑΔΙ ΚΑΣΙΑΣ ΣΥΝΑΡΤΗΣΗ Συν1(ε, ζ): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ε, ζ ΑΡΧΗ ζ <- ζ+2 ε <- ε*2 Συν1 <- ε+ζ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Να γράψετε στο τετράδιό σας τις τιμές που θα εμφανιστούν κατά την εκτέλεση του προγράμματος. Πρόγρ.Διαδ1Συν1 αβχλκμεζΣυν1 Εμφανί ζεται 12 4, 3, , 4, , 4,

18 Λύση ΠρόγραμμαΔιαδ1Συν1 αβχλκμεζΣυν1 Εμφαν ίζεται 12 4, 3, , 4, , 4,

19 Σημαντικά στα υποπρογράμματα  Όταν έχουμε επιστροφή από διαδικασία ΠΑΝΤΑ θα επιστρέφουμε τις τιμές των τυπικών παραμέτρων στις αντίστοιχες πραγματικές, αφού Η ΔΙΑΔΙΚΑΣΙΑ ΜΟΝΟ ΕΠΙΣΤΡΕΦΕΙ ΑΠΟΤΕΛΕΣΜΑΤΑ ΜΕΣΩ ΠΑΡΑΜΕΤΡΩΝ.  Το παραπάνω ΔΕΝ ΙΣΧΥΕΙ ΓΙΑ ΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ. Οι ΣΥΝΑΡΤΗΣΕΙΣ ΔΕΝ ΕΠΙΣΤΡΕΦΟΥΝ ΤΙΜΕΣ μέσω των παραμέτρων.

20 Από Δ.Ρ. σε κώδικα Αλγόριθμος Φοιτητές_Ετος s1 <- 0 s2 <- 0 s3 <- 0 Για i από 1 μέχρι 200 Διάβασε Ε Αν Ε = 1 τότε s1 <- s1+1 αλλιώς_αν Ε = 2 τότε s2 <- s2+1 αλλιώς_αν Ε = 3 τότε s3 <- s3+1 Τέλος_αν Τέλος_επανάληψης Εκτύπωσε s1, s2, s3 Τέλος Φοιτητές_Ετος

21 Από Δ.Ρ. σε κώδικα (εναλλακτικά) Αλγόριθμος Φοιτητές_Ετος s1 <- 0 s2 <- 0 s3 <- 0 i<- 1 Όσο i <= 200 επανάλαβε Διάβασε Ε Αν Ε = 1 τότε s1 <- s1+1 αλλιώς_αν Ε = 2 τότε s2 <- s2+1 αλλιώς_αν Ε = 3 τότε s3 <- s3+1 Τέλος_αν I <- i+1 Τέλος_επανάληψης Εκτύπωσε s1, s2, s3 Τέλος Φοιτητές_Ετος

22 Από Δ.Ρ. σε κώδικα

23

24

25

26 Από κωδικοποίηση σε Δ.Ρ.

27

28 Άσκηση με άγνωστο πλήθος επαναλήψεων (34.18)  Στην παρακάτω άσκηση η επανάληψη εξαρτάται (κατά το ένα μέρος) από μια τιμή που διαβάζεται επαναληπτικά.

29 Αλγόριθμος Εταιρεία Έπιβάτες <- 0 Έπιβάτες <- 0 Σύνολο <- 0 Σύνολο <- 0 Διάβασε όνομα Διάβασε όνομα Όσο (όνομα <> ‘’τέλος’’) και (Επιβάτες ‘’τέλος’’) και (Επιβάτες < 2500) επανάλαβε Διάβασε κωδικός Διάβασε κωδικός Αν κωδικός = ‘’Κ’’ τότε κόστος <- 45 κόστος <- 45 Αλλιώς_αν (κωδικός = ‘’Σ’’) ή (κωδικός = ‘’Π’’) τότε κόστος <- 26 κόστος <- 26Αλλιώς κόστος <- 32 κόστος <- 32Τέλος_αν Επιβάτες <- Επιβάτες + 1 Σύνολο <- Σύνολο + κόστος Εκτύπωσε ‘’Κόστος εισιτηρίου: ‘’, κόστος Διάβασε όνομα Τέλος_επανάληψης Τέλος_επανάληψης Εκτύπωσε ‘’Εισπράξεις: ‘’, Σύνολο Εκτύπωσε ‘’Εισπράξεις: ‘’, Σύνολο Εκτύπωσε ‘’Πλήθος επιβατών:’’, Επιβάτες Εκτύπωσε ‘’Πλήθος επιβατών:’’, Επιβάτες Τέλος Εταιρεία

30

31 Άσκηση με άγνωστο πλήθος επαναλήψεων (34.20)  Στην παρακάτω άσκηση η επανάληψη δεν εξαρτάται από κάτι που διαβάζεται επαναληπτικά. Η ποσότητα που επηρεάζει την επανάληψη μεταβάλλεται κατάλληλα εντός αυτής.

32 Αλγόριθμος Εγκυκλοπαίδεια ποσό <- 1 χρήματα <- 0 μέρες <- 0 Όσο χρήματα < 200 και μέρες < 30 επανάλαβε μέρες <- μέρες + 1 χρήματα <- χρήματα + ποσό ποσό <- ποσό Τέλος_επανάληψης Αν χρήματα < 200 τότε Εμφάνισε "Απομένουν: ", χρήματα Αλλιώς Εμφάνισε "Ημέρες: ", μέρες Εμφάνισε "Περισσεύει ποσό: ", χρήματα Τέλος_αν μέσο <- χρήματα / μέρες Εμφάνισε "Ποσό ημερησίως: ", μέσο Τέλος Εγκυκλοπαίδεια

33

34 Επαναληπτική άσκηση στη δομή επανάληψης (max, min κλπ) Ένας επιχειρηματίας αποφάσισε να διαθέσει ένα σημαντικό ποσό για φιλανθρωπικούς σκοπούς αγοράζοντας πακέτα ρύζι. Να γίνει αλγόριθμος που: Α) θα διαβάζει το ποσό που θέλει να διαθέσει ο επιχειρηματίας Β) θα διαβάζει επαναληπτικά τη μάρκα και την τιμή του κάθε πακέτου Γ) θα εμφανίζει τη μάρκα του πιο ακριβού πακέτου Δ) θα εμφανίζει την τιμή του πιο φτηνού πακέτου Ε) θα υπολογίζει και θα εμφανίζει πόσα πακέτα ρύζι κόστιζαν πάνω από 2 €. ΣΤ) θα εμφανίζει πόσα πακέτα ρύζι αγόρασε συνολικά ο επιχειρηματίας Ζ) θα εμφανίζει μήνυμα «Εξάντλησε όλο το ποσό» αν δεν περίσσεψαν καθόλου χρήματα. Ο αλγόριθμος τερματίζει όταν εξαντληθεί όλο το ποσό ή όταν δεν φτάνει για να αγοράσει και άλλο πακέτο ή όταν δοθεί αρνητική τιμή.

35

36 Αλγόριθμος Φιλανθρωπία Αρχή_επανάληψης Αρχή_επανάληψης Διάβασε ποσό Διάβασε ποσό Μέχρις_ότου ποσό > 0 Μέχρις_ότου ποσό > 0 Έξοδα <- 0 Έξοδα <- 0 πακέτα <- 0 πακέτα <- 0 πακέτα_2 <- 0 πακέτα_2 <- 0 max <- -1 !μια πολύ μικρή τιμή max <- -1 !μια πολύ μικρή τιμή min < !μια πολύ μεγάλη τιμή min < !μια πολύ μεγάλη τιμή Διάβασε τιμή Διάβασε τιμή Όσο Έξοδα + τιμή = 0 επανάλαβε Όσο Έξοδα + τιμή = 0 επανάλαβε Διάβασε μάρκα Διάβασε μάρκα πακέτα <- πακέτα + 1 Αν τιμή > max τότε max <- τιμή max <- τιμή maxM <- μάρκα maxM <- μάρκαΤέλος_αν Αν τιμή < min τότε min <- τιμή min <- τιμήΤέλος_αν Έξοδα <- Έξοδα + τιμή Αν τιμή > 2 τότε πακέτα_2 <- πακέτα_2 + 1 πακέτα_2 <- πακέτα_2 + 1Τέλος_αν Διάβασε τιμή Τέλος_επανάληψης Αν Έξοδα = ποσό τότε Εμφάνισε ‘’Εξαντλήθηκε όλο το ποσό’’ Τέλος_αν Εμφάνισε ‘’Πλήθος πακέτων με κόστος μεγαλύτερο των 2 € : ‘’, πακέτα_2 Αν πακέτα > 0 τότε ! δικλείδα ασφαλείας για max, min… Εμφάνισε ‘’Η μάρκα του πιο ακριβού: ‘’, maxM Εμφάνισε ‘’Η τιμή του πιο φτηνού:’’, min Τέλος_αν Τέλος Φιλανθρωπία

37 Δομή επανάληψης – χρήση div και mod (35.20) Αλγόριθμος Αποταμίευση αποτ <- 0 αποτ <- 0 μ <- 0 μ <- 0 Όσο αποτ < επανάλαβε Όσο αποτ < επανάλαβε αποτ <- αποτ + 30*2*2.70 μ <- μ+1 Αν μ mod 12 = 4 τότε !Απρίλιος Διάβασε ΔώροΠ Διάβασε ΔώροΠ αποτ <- αποτ + ΔώροΠ αποτ <- αποτ + ΔώροΠ Αλλιώς_αν μ mod 12 = 0 τότε !Δεκέμβριος Διάβασε ΔώροΧ Διάβασε ΔώροΧ αποτ <- αποτ + ΔώροΧ αποτ <- αποτ + ΔώροΧ αποτ <- αποτ *αποτ αποτ <- αποτ *αποτΤέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης έτη <- μ div 12 έτη <- μ div 12 μήνες <- μ mod 12 μήνες <- μ mod 12 Εμφάνισε "Το ποσό συγκεντρώνεται σε: ", έτη, "έτη και: ", μήνες, "μήνες." Εμφάνισε "Το ποσό συγκεντρώνεται σε: ", έτη, "έτη και: ", μήνες, "μήνες." Τέλος Αποταμίευση

38 Εύρεση των 2 μικρότερων τιμών σε άγνωστο πλήθος αριθμών (με γνωστό εύρος των τιμών π.χ. 0-20) Αλγόριθμος Δύο_Μικρότεροι low1 <- 22 low2 <- 22 Διάβασε χ Όσο χ <> -1 επανάλαβε Αν χ < low1 τότε Αν χ < low1 τότε low2 <- low1 low1 <- χ low1 <- χ Αλλιώς_αν χ low1 τότε Αλλιώς_αν χ low1 τότε low2 <- χ Τέλος_αν Τέλος_αν Διάβασε χ Διάβασε χΤέλος_επανάληψης Αν low1 <> 22 τότε Εμφάνισε low1 Εμφάνισε low1Τέλος_αν Αν low2 <> 22 τότε Εμφάνισε low2 Εμφάνισε low2Τέλος_αν Τέλος Δύο_Μικρότεροι Παρατηρήσεις: Εκτελέστε τον αλγόριθμο π.χ για τις εξής τιμές: 6, 4, 7, 2, 5, 3, 2, 3, 2, 1 Με παρόμοιο τρόπο εντοπίζουμε τις 2 μεγαλύτερες τιμές. Παρόμοια για περισσότερες Min/max τιμές. Ο αλγόριθμος καλύπτει και ισοβαθμίες

39 Άσκηση (ΔΕ4 κεφ 8 τετράδιο μαθητή)

40 Ταξινόμηση Φυσαλίδας  Στον πίνακα Α εφαρμόζεται φθίνουσα ταξινόμηση σύμφωνα με τον αλγόριθμο φυσαλίδας. Στον αλγόριθμο αυτό θεωρούμε ότι ο εξωτερικός βρόχος χρησιμοποιεί τη μεταβλητή Ι και ο εσωτερικός τη μεταβλητή J.  Στον πίνακα Α εφαρμόζεται φθίνουσα ταξινόμηση σύμφωνα με τον αλγόριθμο φυσαλίδας. Στον αλγόριθμο αυτό θεωρούμε ότι ο εξωτερικός βρόχος χρησιμοποιεί τη μεταβλητή Ι και ο εσωτερικός τη μεταβλητή J.  Να συμπληρώσετε τον ακόλουθο πίνακα τιμών για τις μεταβλητές και τα στοιχεία του πίνακα.

41 Επαναληπτική άσκηση στους πίνακες Ένα δάσκαλος οδήγησης θέλει να οργανώσει τις ώρες μαθήματος και τους πελάτες που έχει. Έτσι αναθέτει σε εσάς έναντι μεγάλης αμοιβής να γράψετε πρόγραμμα το οποίο θα εκτελεί τις παρακάτω λειτουργίες: Α) θα διαβάζει τα ονόματα των 120 πελατών του γραφείου και θα τα καταχωρεί σε μονοδιάστατο πίνακα Β) θα διαβάζει τις ώρες μαθήματος ανά ημέρα κατά τη διάρκεια του Απριλίου (χ30) για κάθε πελάτη και θα τις καταχωρεί σε δισδιάστατο πίνακα, αφού πρώτα ελέγξει ότι είναι θετικός αριθμός. Γ) Θα υπολογίζει και θα εμφανίζει τις συνολικές ώρες μαθήματος για κάθε περιττή ημέρα του μήνα. Δ) θα υπολογίζει και θα εμφανίζει πόσες ημέρες ο κάθε πελάτης δεν έκανε καθόλου μάθημα. Ε) θα εμφανίζει το όνομα ή τα ονόματα των πελατών με τις περισσότερες μέρες χωρίς μάθημα. ΣΤ) θα εμφανίζει ανά πελάτη ποια ημέρα πραγματοποίησε τις περισσότερες ώρες μάθημα Ζ) θα καταχωρεί σε νέο πίνακα τα ονόματα των πελατών με τις μηδενικές συνολικά ώρες μάθημα. Η) θα ταξινομεί και θα εμφανίζει κατά αλφαβητική σειρά τα ονόματα των παραπάνω πελατών.

42 Αλγόριθμος Σχολή Για i από 1 μέχρι 120 Για i από 1 μέχρι 120 Διάβασε ΟΝ[i] Διάβασε ΟΝ[i] Για j από 1 μέχρι 30 Για j από 1 μέχρι 30Αρχή_επανάληψης Διάβασε Ω[i, j] Διάβασε Ω[i, j] Μέχρις_ότου Ω[i, j] >= 0 Τέλος_επανάληψης Τέλος_επανάληψης Για j από 1 μέχρι 30 με_βήμα 2 !με ημέρες, άρα στήλες S← 0 S← 0 Για i από 1 μέχρι 120 Για i από 1 μέχρι 120 S←S + Ω[i, j] S←S + Ω[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Εμφάνισε ‘’Συνολικές ώρες μήνα:’’, S Εμφάνισε ‘’Συνολικές ώρες μήνα:’’, S Τέλος_Επανάληψης Τέλος_Επανάληψης Για i από 1 μέχρι 120 !πελάτες, άρα γρ… πλ← 0 πλ← 0 Για j από 1 μέχρι 30 Για j από 1 μέχρι 30 Αν Ω[i, j] = 0 τότε πλ←πλ + 1 πλ←πλ + 1 Τέλος_επανάληψης Τέλος_επανάληψης Εμφάνισε ‘’Μέρες χωρίς μάθημα:’’, πλ Εμφάνισε ‘’Μέρες χωρίς μάθημα:’’, πλ ΧΜ[i] <- πλ !τα χρειαζόμαστε σε επόμενο ερ… ΧΜ[i] <- πλ !τα χρειαζόμαστε σε επόμενο ερ… Τέλος_Επανάληψης Τέλος_Επανάληψης max  XM[1] Για i από 1 μέχρι 120 Αν max < XM[i] τότε max  XM[i] Τέλος_αν Τέλος_επανάληψης Για i από 1 μέχρι 120 Αν max = XM[i] τότε εμφάνισε ΟΝ[i] Τέλος_αν Τέλος_επανάληψης Στο Ε ερώτημα ζητάει αυτούς με τις περισσότερες μέρες χωρίς μάθημα. Άρα θα βρούμε το max στον XM και στη συνέχεια θα τον ξαναδιατρέξουμε και όπου το βρούμε θα εμφανίζουμε το αντίστοιχο όνομα ON[i]

43 Για i από 1 μέχρι 120 !πελάτες, άρα γρ… max  -1 max  -1 Για j από 1 μέχρι 30 Για j από 1 μέχρι 30 Αν Αν max < Ω[i, j] τότε max <- Ω[i, j] max <- Ω[i, j] Ημέρα <- j !βοηθητική αφού μας ζητάει ποια ημέρα… Ημέρα <- j !βοηθητική αφού μας ζητάει ποια ημέρα… Τέλος_επανάληψης Τέλος_επανάληψης Εμφάνισε ‘’Η ημέρα με τις περισσότερες ώρες χωρίς μάθημα’’, Ημέρα Εμφάνισε ‘’Η ημέρα με τις περισσότερες ώρες χωρίς μάθημα’’, Ημέρα Τέλος_Επανάληψης Τέλος_Επανάληψης κ <- 0 κ <- 0 Για i από 1 μέχρι 120 Για i από 1 μέχρι 120 Αν XM[i] = 30 τότε κ <- κ + 1 κ <- κ + 1 Μ[κ] <- ΟΝ[i] Μ[κ] <- ΟΝ[i] Τέλος_αν Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για i από 2 μέχρι 200 Για j από 200 μέχρι i με_βήμα -1 Για j από 200 μέχρι i με_βήμα -1 Αν Μ[j] < Μ[j-1] τότε Αν Μ[j] < Μ[j-1] τότε Αντιμετάθεσε ΣΠ[j], ΣΠ[j-1] Αντιμετάθεσε ΣΠ[j], ΣΠ[j-1] Τέλος_αν Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψηςΤέλος_επανάληψης Για i από 1 μέχρι 120 Εμφάνισε Μ[i] Τέλος_επανάληψης Τέλος Σχολή Δημιουργούμε νέο πίνακα. Αν γράφαμε πρόγραμμα θα δηλώναμε τον πίνακα Μ με το μέγιστο δυνατό πλήθος, δηλαδή: ΧΑΡΑΚΤΗΡΕΣ: Μ[120] Σε πρόγραμμα: temp <- Μ[j] M[j] <- M[j-1] M[j-1] <- temp

44

45

46

47 Άσκηση στους πίνακες Οι 100 μαθητές της Γ λυκείου βαθμολογούνται σε 15 μαθήματα. Να γραφεί αλγόριθμος ο οποίος: Α) Θα διαβάζει τα ονόματα 100 μαθητών και θα τα καταχωρεί σε πίνακα ΟΝ[100]. Στη συνέχεια θα διαβάζει το βαθμό κάθε μαθητή στα 15 μαθήματα και θα καταχωρεί τις βαθμολογίες σε πίνακα Β[100,15]. Β) Θα διαβάζει το όνομα ενός μαθητή και θα εμφανίζει το μέσο όρο βαθμολογίας του. Εάν δεν υπάρχει ο μαθητής να εμφανίζεται κατάλληλο μήνυμα Β) Θα διαβάζει το όνομα ενός μαθητή και θα εμφανίζει το μέσο όρο βαθμολογίας του. Εάν δεν υπάρχει ο μαθητής να εμφανίζεται κατάλληλο μήνυμα Γ) Θα εμφανίζει τα ονόματα των μαθητών που έχουν τις περισσότερες πρωτιές στα μαθήματα. (Λάβετε υπόψη ότι πολλοί μαθητές μπορεί να έχουν τον ίδιο βαθμό σε ένα μάθημα).

48 Αλγόριθμος Μαθητές Για i από 1 μέχρι 100 Για i από 1 μέχρι 100 Διάβασε ΟΝ[i] Διάβασε ΟΝ[i] Για j από 1 μέχρι 15 Για j από 1 μέχρι 15 Διάβασε Β[i, j] Διάβασε Β[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Διάβασε όνομα Διάβασε όνομα i ← 1 i ← 1 βρέθηκε ← Ψευδής βρέθηκε ← Ψευδής Όσο (i <= 100) και (βρέθηκε = Ψευδής) επανάλαβε Όσο (i <= 100) και (βρέθηκε = Ψευδής) επανάλαβε Αν ΟΝ[i] = όνομα τότε Αν ΟΝ[i] = όνομα τότε βρέθηκε ← Αληθής βρέθηκε ← Αληθής pos← i Αλλιώς Αλλιώς i ← i + 1 Τέλος_Αν Τέλος_Αν Τέλος_Επανάληψης Τέλος_Επανάληψης !Αν υπάρχει ο μαθητής που δόθηκε θα βρίσκεται Στη θέση pos, άρα και στην pos γραμμή Αν βρέθηκε = Αληθής τότε S← 0 Για j από 1 μέχρι 15 S←S + B[pos, j] Τέλος_επανάληψης MO <- S / 15 Εμφάνισε ‘’Μέσος όρος:’’, ΜΟ Αλλιώς Εμφάνισε ‘’Δεν υπάρχει ο μαθητής που δόθηκε’’ Τέλος_αν Στο Β ερώτημα θα πρέπει να κάνουμε κάτι για το μαθητή του οποίου το όνομα διαβάσαμε (στην όνομα). Συγκεκριμένα θα πρέπει να ασχοληθούμε με τους βαθμούς του, άρα με κάποια γραμμή. Με ποια γραμμή όμως; Με αυτήν που αντιστοιχεί στο όνομά του. Άρα θα πρέπει να αναζητήσουμε αρχικά το όνομα που διαβάσαμε στον πίνακα ΟΝ.

49 Για i από 1 μέχρι 100 Πλ[i] <- 0 Πλ[i] <- 0Τέλος_επανάληψης Για j από 1 μέχρι 15 !μαθήματα, άρα στήλες… Για j από 1 μέχρι 15 !μαθήματα, άρα στήλες… max  -1 max  -1 Για i από 1 μέχρι 100 Για i από 1 μέχρι 100 Αν max < B[i, j] τότε max <- B[i, j] max <- B[i, j] Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 100 Για i από 1 μέχρι 100 Αν max = B[i, j] τότε !βρήκαμε κάποιον Πλ[i] <- Πλ[i] +1 !με πρωτιά στο μάθημα αυτό Πλ[i] <- Πλ[i] +1 !με πρωτιά στο μάθημα αυτό Τέλος_επανάληψης Τέλος_επανάληψης Τέλος_Επανάληψης Τέλος_Επανάληψης max  Πλ[1] max  Πλ[1] Για i από 1 μέχρι 100 Για i από 1 μέχρι 100 Αν max < Πλ[i] τότε max  Πλ[i] max  Πλ[i]Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι 100 Για i από 1 μέχρι 100 Αν max = Πλ[i] τότε Εμφάνισε ΟΝ[i] Εμφάνισε ΟΝ[i]Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Τέλος Μαθητές Στο Γ ερώτημα θα πρέπει να διατρέξουμε τις στήλες του Β, αφού θα πρέπει να βρούμε το Max σε κάθε μάθημα. Στη συνέχεια όπου το εντοπίσουμε στη στήλη (άρα τη ξαναδιατρέχουμε) θα αυξάνουμε κατά 1 το μετρητή των πρωτιών του μαθητή που εντοπίστηκε (δηλαδή της γραμμή i). Άρα χρειαζόμαστε και έναν πίνακα 100 μετρητών Πλ, όσοι είναι και οι μαθητές. Στο τέλος βρίσκουμε το max στον Πλ και όπου το συναντήσουμε πλέον εμφανίζουμε το αντίστοιχο όνομα.

50

51

52 Εύρεση των 2 μικρότερων τιμών σε πίνακα που έχει όλες τις τιμές διαφορετικές Αλγόριθμος Δύο_Μικρότεροι Δεδομένα // Μ // low1 <- M[1] pos <- 1 Για i από 2 μέχρι 50 Αν M[i] < low1 τότε Αν M[i] < low1 τότε low1 <- M[i] low1 <- M[i] pos <- i pos <- i Τέλος_αν Τέλος_ανΤέλος_επανάληψης Αν pos <> 1 τότε low2 <- M[1] low2 <- M[1]αλλιώς low2 <- M[2] low2 <- M[2] Τέλος_αν Τέλος_αν Για i από 2 μέχρι 50 Αν (i <> pos και M[i] < low2) τότε low2 <- M[i] Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // low1, low2 // Τέλος Δύο_Μικρότεροι Παρατηρήσεις: Εκτελέστε τον αλγόριθμο π.χ για τις εξής τιμές: 6, 4, 7, 2, 5, 3 Με παρόμοιο τρόπο εντοπίζουμε τις 2 μεγαλύτερες τιμές του table. Σε περίπτωση ίδιων τιμών (γενική περίπτωση) θα ακολουθήσουμε τη γνωστή τακτική με τις ισοβαθμιές, αφού αρχικά κάνουμε ταξινόμηση…

53 Εύρεση των 2 μικρότερων τιμών σε πίνακα που πιθανόν έχει ίδιες τιμές Αλγόριθμος Δύο_Μικρότεροι Δεδομένα // Μ // Αύξουσα ταξινόμηση στον Μ… Εμφάνισε ‘’Η μικρότερη τιμή: ‘’, Μ[1] stop ← Ψευδής ! Ψάχνουμε να βρούμε την επόμενη μικρότερη τιμή μετά την 1 η. i ← 1 Όσο (i <= 50) και (stop = Ψευδής) επανάλαβε Όσο (i <= 50) και (stop = Ψευδής) επανάλαβε Αν Μ[i] <> Μ[1] τότε Αν Μ[i] <> Μ[1] τότε stop ← Αληθής stop ← Αληθής pos← i Αλλιώς Αλλιώς i ← i + 1 Τέλος_Αν Τέλος_ΑνΤέλος_επανάληψης Αν stop = Αληθής τότε Εμφάνισε ‘’Η 2η μικρότερη τιμή: ’’, Μ[pos] Αλλιώς Εμφάνισε ‘’Οι τιμές είναι όλες ίσες’’ Τέλος_αν Τέλος Δύο_Μικρότεροι Αν μας ζητούσαν μόνο τη 2 η μικρότερη τιμή, απλά δεν θα εμφανίζαμε το Μ[1]… Αν μας ζητούσαν και την 3 η μικρότερη θα γράφαμε και πάλι τον διπλανό κώδικα, αλλά στη σύγκριση θα είχαμε M[i] <> M[pos], αφού το M[pos] όπως προέκυψε έχει τη 2 η μικρότερη…

54 Συγχώνευση 2 ταξινομημένων πινάκων ΠΡΟΓΡΑΜΜΑ Συγχώνευση ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ:Α[100], Β[100], Γ[200], Ι, J, Κ, Ν, Μ, Λ ΑΡΧΗ ΓΡΑΨΕ ‘Δώσε το πλήθος των στοιχείων του πίνακα Α (<100)’ ΔΙΑΒΑΣΕ Ν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΔΙΑΒΑΣΕ Α[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ‘Δώσε το πλήθος των στοιχείων του πίνακα Β(<100)’ ΔΙΑΒΑΣΕ Μ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Μ ΔΙΑΒΑΣΕ Β[Ι] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

55 ! Συγχώνευση πινάκων ! Ι είναι ο δείκτης για τον πίνακα Α ! J είναι ο δείκτης για τον πίνακα Β ! Κ είναι ο δείκτης για τον πίνακα Γ Ι <- 1 J <- 1 K <- 1 ΟΣΟ Ι <= Ν ΚΑΙ J <= Μ ΕΠΑΝΑΛΑΒΕ ! Όσο και τα δύο έχουν στοιχεία ΑΝ Α[Ι] < Β[J] ΤΟΤΕ Γ[Κ] <- Α[Ι] Κ <- Κ+1 Ι <- Ι+1 ΑΛΛΙΩΣ Γ[Κ] <- Β[J] Κ <- Κ+1 J <- J +1 ΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

56 ! Μεταφορά των υπολοίπων στοιχείων του Α ή του Β ΑΝ Ι > Ν ΤΟΤΕ !Μπήκαν όλα τα στοιχεία του Α, άρα πρέπει να μπουν του Β ΓΙΑ Λ ΑΠO Κ ΜΕΧΡΙ Ν+Μ Γ[Λ] <- Β[J] J <- J +1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ ! Μπήκαν όλα τα στοιχεία του Β, άρα πρέπει να μπουν του Α ΓΙΑ Λ ΑΠO Κ ΜΕΧΡΙ Ν+Μ Γ[Λ] <- Α[Ι] Ι <- Ι+1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ_ΑΝ ! Εκτύπωση τελικού πίνακα ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ Ν+Μ ΓΡΑΨΕ Γ[Λ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Συγχώνευση

57 Εύρεση της επικρατούσας τιμής σε πίνακα Αν το εύρος των τιμών είναι γνωστό, π.χ. ακέραιοι βαθμοί από 1 έως 20 έχουμε: Αλγόριθμος Επικρατούσα_τιμή Δεδομένα //N// Δεδομένα //N// Για i από 1 μέχρι 20 Για i από 1 μέχρι 20 ΠΛ[i] <- 0 ΠΛ[i] <- 0 Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι Ν Για i από 1 μέχρι Ν Διάβασε Π[i] Διάβασε Π[i] δείκτης <- Π[i] δείκτης <- Π[i] ΠΛ[δείκτης] <- ΠΛ[δείκτης] + 1 ΠΛ[δείκτης] <- ΠΛ[δείκτης] + 1 Τέλος_επανάληψης Τέλος_επανάληψης max <- ΠΛ[1] Επικρατούσα <- 1 Για i από 2 μέχρι 20 Αν max < ΠΛ[i] τότε max <- ΠΛ[i] Επικρατούσα <- i Τέλος_αν Τέλος_επανάληψης Εμφάνισε Επικρατούσα Τέλος Επικρατούσα_τιμή

58 Εύρεση της επικρατούσας τιμής σε πίνακα Αν το εύρος των τιμών είναι άγνωστο έχουμε: Αλγόριθμος Επικρατούσα_τιμή Δεδομένα //N// Δεδομένα //N// Για i από 1 μέχρι Ν Διάβασε Π[i] Διάβασε Π[i] Τέλος_επανάληψης Τέλος_επανάληψης !στη συνέχεια εύρεση και τοποθέτηση των μοναδικών τιμών του Π σε νέο πίνακα Νέος. …Ταξινόμηση π.χ. αύξουσα και : κ<-1 κ<-1 Νέος[κ] <- Π[1] Νέος[κ] <- Π[1] Για i από 2 μέχρι Ν Για i από 2 μέχρι Ν Αν Π[i] <> Π[i-1] τότε Αν Π[i] <> Π[i-1] τότε κ <- κ+1 Νέος[κ] <- Π[i] Νέος[κ] <- Π[i] Τέλος_αν Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης !Στη συνέχεια βρίσκουμε πόσες φορές παρουσιάζεται κάθε τιμή του Νέος στον Π... !και εκχωρούμε το πλήθος σε έναν άλλο πίνακα ΠΛ Για i από 1 μέχρι κ φορές <- 0 Για j από 1 μέχρι Ν Αν Π[ j ] = Νέος[i] τότε φορές <- φορές + 1 Τέλος_αν Τέλος_επανάληψης ΠΛ[i] <- φορές Τέλος_επανάληψης !Υπολογίζουμε το max στον Πλ κρατώντας σε βοηθητική την αντίστοιχη !τιμή από τον Νέος... Τέλος Επικρατούσα_τιμή

59 Φυσαλίδα σε πίνακα και αντιμετάθεση σε δισδιάστατο Αλγόριθμος Φυσαλίδα Δεδομένα // Ν, Table, Π// !έστω ότι ο Π είναι δισδιάστατος Ν γραμμών και 2 στηλών Για i από 2 μέχρι Ν Για j από N μέχρι i με_βήμα -1 Αν (Table[j] < Table [j-1]) τότε temp  Table [j] Table [j]  Table [j-1] Table [j-1]  temp Αντιμετάθεσε Π[j-1, 1], Π[j, 1] !Γίνεται αντιμετάθεση ολόκληρων Αντιμετάθεσε Π[j-1, 2], Π[j, 2] !των γραμμών j, j-1. Οι δείκτες Αντιμετάθεσε Π[j-1, 2], Π[j, 2] !των γραμμών j, j-1. Οι δείκτες Τέλος_Αν ! J, j-1 αντιστοιχούν εδώ στις j, j-1 Τέλος_Επανάληψης ! γραμμές Τέλος_Επανάληψης Αποτελέσματα //Table, Π// Τέλος Φυσαλίδα

60 Να γραφεί αλγόριθμος ο οποίος να συγκρίνει 2 μονοδιάστατους πίνακες Α[Ν] και Β[Ν], και να εκτυπώνει το μήνυμα “ΙΣΟΙ” αν όλα τα στοιχεία τους είναι ένα προς ένα ίσα, διαφορετικά να εκτυπώνει το μήνυμα “ΟΧΙ ΙΣΟΙ”. Αλγόριθμος Σύγκριση_πινάκων Δεδομένα //Α, Β, Ν// ίσοι <- Αληθής i <- 1 Όσο (i <= N) και (ίσοι = Αληθής) επανέλαβε Αν (Α[i] <> B[i]) τότε ίσοι <- Ψευδής Αλλιώς i <- i + 1 Τέλος_ΑνΤέλος_Επανάληψης Αν (ίσοι = Αληθής) τότε Γράψε ‘Οι 2 πίνακες είναι ίσοι’ Αλλιώς Γράψε ‘Οι 2 πίνακες δεν είναι ίσοι’ Τέλος_Αν Τέλος Σύγκριση_πινάκων Πως θα γινόταν με συνάρτηση ο έλεγχος για το αν είναι ή όχι οι 2 πίνακες ίσοι (δηλαδή να επιστρέφει Αληθής ή ψευδής); Συνάρτηση ΙΣΟΤΗΤΑ (Α, Β): Λογική Μεταβλητές Ακέραιες: Α[10], Β[10], i Λογικές: ίσοι Αρχή ίσοι <- Αληθής i <- 1 Όσο (i <= N) και (ίσοι = Αληθής) επαν ά λαβε Αν (Α[i] <> B[i]) τότε ίσοι <- Ψευδής Αλλιώς i <- i + 1 Τέλος_Αν Τέλος_Επανάληψης ΙΣΟΤΗΤΑ <- ίσοι Τέλος_Συνάρτησης

61 Μετατροπή από μη δομημένο κώδικα σε δομημένο ΑΡΧΗ ΟΣΟ συνθήκη1 ΕΠΑΝΑΛΑΒΕ Εντολή 2 Εντολή 2 ΑΝ συνθήκη3 ΤΟΤΕ ΑΝ συνθήκη3 ΤΟΤΕ Εντολή4 Εντολή4 Πήγαινε στο Τέλος Πήγαινε στο Τέλος ΑΛΛΙΩΣ ΑΛΛΙΩΣ Εντολή5 Εντολή5 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ Stop <- Ψευδής ΟΣΟ συνθήκη1 και Stop = Ψευδής ΕΠΑΝΑΛΑΒΕ Εντολή 2 ΑΝ συνθήκη3 ΤΟΤΕ Εντολή4 Stop <- Αληθής ΑΛΛΙΩΣ Εντολή5 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

62 Μετατροπή από μη δομημένο κώδικα σε δομημένο ΑΡΧΗ ΑΝ συνθήκη1 ΤΟΤΕ Εντολή1 Εντολή1 ΑΝ συνθήκη2 ΤΟΤΕ ΑΝ συνθήκη2 ΤΟΤΕ Εντολή2 Εντολή2 Εντολή3 Εντολή3 Πήγαινε στην Εντολή5 Πήγαινε στην Εντολή5 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ Εντολή4 Εντολή4 Εντολή5 Εντολή5 Πήγαινε στην Αρχή Πήγαινε στην ΑρχήΤΕΛΟΣ_ΑΝΕντολή6ΤΕΛΟΣ Όσο συνθήκη1 επανάλαβε Εντολή1 ΑΝ συνθήκη2 ΤΟΤΕ Εντολή2 Εντολή3 Αλλιώς Εντολή4 Τέλος_αν Εντολή5 Τέλος_επανάληψης Εντολή6

63 Άσκηση στα υποπρογράμματα με άγνωστο πλήθος επαναλήψεων  Άσκηση /σελ. 331

64 ΠΡΟΓΡΑΜΜΑ κλήσεις ΣΤΑΘΕΡΕΣ πάγιο = 10 πάγιο = 10 ΦΠΑ = 0.19 ΦΠΑ = 0.19 πάγιο_κλήσης = 0.01 πάγιο_κλήσης = 0.01ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Διάρκεια, πλήθος, πλήθος_3 ΑΚΕΡΑΙΕΣ: Διάρκεια, πλήθος, πλήθος_3 ΠΡΑΓΜΑΤΙΚΕΣ: Σύνολο ΠΡΑΓΜΑΤΙΚΕΣ: ΣύνολοΑΡΧΗ Σύνολο <- 0 Σύνολο <- 0 πλήθος <- 0 πλήθος <- 0 πλήθος_3 <- 0 πλήθος_3 <- 0 Διάβασε Διάρκεια Διάβασε Διάρκεια Όσο Διάρκεια <> -1 επανάλαβε Όσο Διάρκεια <> -1 επανάλαβε χρέωση <- Υπολογισμός(Διάρκεια) χρέωση <- Υπολογισμός(Διάρκεια) Σύνολο <- Σύνολο + χρέωση + πάγιο_κλήσης Σύνολο <- Σύνολο + χρέωση + πάγιο_κλήσης πλήθος <- πλήθος+1 πλήθος <- πλήθος+1 Αν Διάρκεια > 180 τότε Αν Διάρκεια > 180 τότε πλήθος_3 <- πλήθος_3 + 1 πλήθος_3 <- πλήθος_3 + 1 Τέλος_αν Τέλος_αν Διάβασε Διάρκεια Διάβασε Διάρκεια Τέλος_επανάληψης Τέλος_επανάληψης Αν ζητούνταν (ή θέλαμε) η λειτουργία που γίνεται με συνάρτηση να γίνε με διαδικασία, τότε θα χρειαζόμασταν 2 παραμέτρους, μια για την είσοδο των δεδομένων (Διάρκεια) και μια για την επιστροφή του αποτελέσματος (χρέωση). Οπότε στη θέση αυτής της γραμμής θα είχαμε απλά: ΚΑΛΕΣΕ Υπολογισμός (Διάρκεια, χρέωση)

65 Σύνολο <- Σύνολο + πάγιο Σύνολο <- Σύνολο + Σύνολο*ΦΠΑ Γράψε 'Συνολική χρέωση: ', Σύνολο Γράψε 'Πλήθος κλήσεων: ', πλήθος Γράψε 'Πλήθος κλήσεων με διάρκεια πάνω απο 3 λεπτά: ', πλήθος_3 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ Υπολογισμός (Δ):ΠΡΑΓΜΑΤΙΚΗ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Δ ΠΡΑΓΜΑΤΙΚΕΣ: χρ ΑΡΧΗ Αν Δ <= 120 τότε χρ <- Δ* Αλλιώς_αν Δ 120 είναι περιττή συνθήκη... χρ <- 120* (Δ-120)* Αλλιώς χρ <- 120* * (Δ-360)* Τέλος_αν Υπολογισμός <- χρ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

66 Άσκηση στα υποπρογράμματα με γνωστό πλήθος επαναλήψεων  Άσκηση /σελ. 330

67 ΠΡΟΓΡΑΜΜΑ ομάδα ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Διάρκεια, I, b ΑΚΕΡΑΙΕΣ: Διάρκεια, I, b ΠΡΑΓΜΑΤΙΚΕΣ: Σ, συμβόλαιο, ποσοστό ΠΡΑΓΜΑΤΙΚΕΣ: Σ, συμβόλαιο, ποσοστόΑΡΧΗ Σ <- 0 Σ <- 0 Για i από 1 μέχρι 18 Για i από 1 μέχρι 18 Διάβασε όνομα Διάβασε όνομα Κάλεσε Συμμετοχή(Διάρκεια) Κάλεσε Συμμετοχή(Διάρκεια) b <- Bonus (Διάρκεια) Διάβασε συμβόλαιο Διάβασε συμβόλαιο Αν b > συμβόλαιο τότε Αν b > συμβόλαιο τότε Γράψε ‘2 δόσεις των: ', b/2 Γράψε ‘2 δόσεις των: ', b/2 Σ <- Σ + b Σ <- Σ + b ποσοστό <- 100*(b-συμβόλαιο)/συμβόλαιο ποσοστό <- 100*(b-συμβόλαιο)/συμβόλαιο Γράψε ποσοστό Γράψε ποσοστόΑλλιώς Γράψε ‘2 δόσεις των: ', συμβόλαιο/2 Γράψε ‘2 δόσεις των: ', συμβόλαιο/2 Σ <- Σ + συμβόλαιο Σ <- Σ + συμβόλαιοΤέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Γράψε ‘’Συνολικό bonus:’’, Σ Γράψε ‘’Συνολικό bonus:’’, ΣΤέλος_προγράμματος Διαδικασία Συμμετοχή(Δ) Μεταβλητές Ακέραιες: Δ, i, x Αρχή Δ <- 0 Για i από 1 μέχρι 32 Αρχή_επανάληψης Διάβασε χ Μέχρις_ότου χ>=0 και χ<=90 Δ <- Δ + χ Τέλος_επανάληψης Τέλος_διαδικασίας ΣΥΝΑΡΤΗΣΗ Βonus (Δ): ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Δ ΠΡΑΓΜΑΤΙΚΕΣ: χρ ΑΡΧΗ Επίλεξε Δ Περίπτωση > 2250 Bonus < Περίπτωση > 1350 Bonus < Περίπτωση > 900 Bonus < Περίπτωση Αλλιώς Bonus < Τέλος_επιλογών Τέλος_συνάρτησης

68

69 Άσκηση στα υποπρογράμματα με πίνακες  Άσκηση /σελ. 356

70 ΠΡΟΓΡΑΜΜΑ Μισθοδοσία_υπαλλήλων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ω[1200, 12], i ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12], Σ[1200] ΧΑΡΑΚΤΗΡΕΣ: Ο[1200] ΑΡΧΗ ΕΙΣΟΔΟΣ ΠΙΝΑΚΩΝ ΚΑΛΕΣΕ Μισθοδοσία (Ω, ΑΠ) ΚΑΛΕΣΕ Ενημέρωση (ΑΠ) ΚΑΛΕΣΕ Συνολικές (ΑΠ, Σ) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 ΓΡΑΨΕ Ο[i], Σ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Μισθοδοσία (Ω, ΑΠ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ω[1200, 12], i, j ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12] ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12 ΑΠ[i,j] <- 5*Ω[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΠΡΟΓΡΑΜΜΑ Μισθοδοσία_υπαλλήλων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ω[1200, 12], i ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12], Σ[1200] ΧΑΡΑΚΤΗΡΕΣ: Ο[1200] ΑΡΧΗ ΕΙΣΟΔΟΣ ΠΙΝΑΚΩΝ ΚΑΛΕΣΕ Μισθοδοσία (Ω, ΑΠ) ΚΑΛΕΣΕ Ενημέρωση (ΑΠ) ΚΑΛΕΣΕ Συνολικές (ΑΠ, Σ) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 ΓΡΑΨΕ Ο[i], Σ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Μισθοδοσία (Ω, ΑΠ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ω[1200, 12], i, j ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12] ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12 ΑΠ[i,j] <- 5*Ω[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ Ενημέρωση (ΑΠ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12] ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12 ΑΝ ΑΠ[i,j] <= 650 ΤΟΤΕ ΑΠ[i,j] <- ΑΠ[i,j] *ΑΠ[i,j] ΑΛΛΙΩΣ_ΑΝ ΑΠ[i,j] <= 850 ΤΟΤΕ ΑΠ[i,j] <- ΑΠ[i,j] + 75 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΔΙΑΔΙΚΑΣΙΑ Συνολικές (ΑΠ, Σ) ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: i, j ΠΡΑΓΜΑΤΙΚΕΣ: ΑΠ[1200, 12], Σ[1200], S ΑΡΧΗ ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1200 S <- 0 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 12 S <- S + ΑΠ[i,j] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Σ[i] <- S ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

71

72 Άσκηση στα υποπρογράμματα με πίνακες  Άσκηση /σελ. 372

73

74


Κατέβασμα ppt "Ασκήσεις. Ασκήσεις με παραβίαση κριτηρίων Σε αυτές τις ασκήσεις εξετάζουμε με τη σειρά:  Περατότητα (εάν υπάρχει δομή επανάληψης)  Καθοριστικότητα (εάν."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google