ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 04/03/2012 ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α Α1. Α2. 1. ΛΑΘΟΣ 1 στ 2. ΣΩΣΤΟ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΛΑΘΟΣ 5 α Α3. α. (σελ. 193-194) Υπολογισμός αθροίσματος στοιχείων πίνακα Εύρεση μέγιστου/ελάχιστου Ταξινόμηση Αναζήτηση Συγχώνευση β. (σελ. 181-182) Προσπέλαση Διαγραφή Εισαγωγή Διαχωρισμός Αντιγραφή Α4. 1 2 3 4 5 6 Καληνύχτα Πρωί Μεσημέρι Βράδυ «Καληνύχτα» και «Βράδυ» Α5. Β Σελίδα 1 από 10
ΘΕΜΑ Β. Β1. Ο πίνακας Α που προκύπτει: ΔΕΙΚΤΗΣ 1 2 3 4 5 ΤΙΜΗ ΣΤΟΙΧΕΙΟΥ 0 1 2 4 6 Β2. Ι Υ Χ Ζ Κ Λ 1 2 5 3 4 2 4 7 7 5 10 2 2 5-9 -2 2 4-1 17 5 10 3 2-2 20 5 10 4 10-18 -4 4 ΘΕΜΑ Γ. ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ! ερώτημα Γ1 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ΕΡΓ, Ι, Υ, ΕΡΓ_ΚΥ ΠΡΑΓΜΑΤΙΚΕΣ: ΥΠΕΡ,ΤΕΛΙΚΟ[30], ΠΡΟΣ_ΤΕΛ, ΠΟΣΟΣΤΟ ΧΑΡΑΚΤΗΡΕΣ: ΟΝΕΠ[30], ΗΜΕΡΑ, ΠΡΟΣ_ΟΝ ΑΡΧΗ! Γ4 ερώτημα ΕΡΓ_ΚΥ 0! ερώτημα Γ2 ΓΙΑ ΕΡΓ ΑΠΟ 1 ΜΕΧΡΙ 30 ΓΡΑΨΕ Δώσε ονοματεπώνυμο, ΕΡΓ, -ου εργαζόμενου ΔΙΑΒΑΣΕ ΟΝΕΠ[ΕΡΓ] ΓΡΑΨΕ Δώσε τις υπερωρίες του ΔΙΑΒΑΣΕ ΥΠΕΡ! έλεγχος εγκυρότητας της τιμή για τις υπερωρίες ΑΝ ΥΠΕΡ < 0 Ή ΥΠΕΡ > 4 ΤΟΤΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μη έγκυρη τιμή για τις υπερωρίες. Προσπαθήστε ξανά ΔΙΑΒΑΣΕ ΥΠΕΡ ΜΕΧΡΙΣ_ΟΤΟΥ ΥΠΕΡ >= 0 ΚΑΙ ΥΠΕΡ < = 4 Σελίδα 2 από 10
ΑΝ ΥΠΕΡ <> Ο ΤΟΤΕ ΓΡΑΨΕ Δώσε την ημέρα που πραγματοποίησε τις υπερωρίες του ΔΙΑΒΑΣΕ ΗΜΕΡΑ ΑΝ (ΗΜΕΡΑ < > Κ ) ΚΑΙ (ΗΜΕΡΑ < > Σ )ΚΑΙ (ΗΜΕΡΑ< > ΚΥ ) ΤΟΤΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μη έγκυρη τιμή ημέρας. Προσπαθήστε ξανά. ΔΙΑΒΑΣΕ ΗΜΕΡΑ ΜΕΧΡΙΣ_ΟΤΟΥ (ΗΜΕΡΑ = Κ ) Ή (ΗΜΕΡΑ= Σ ) Ή (ΗΜΕΡΑ = ΚΥ )! ερώτημα Γ3 ΑΝ ΗΜΕΡΑ = Κ ΤΟΤΕ ΤΕΛΙΚΟ[ΕΡΓ] 8 * 4 + ΥΠΕΡ *(4 + 4 * 0.25) ΑΛΛΙΩΣ_ΑΝ ΗΜΕΡΑ = Σ ΤΟΤΕ ΤΕΛΙΚΟ[ΕΡΓ] 8 * 4 + ΥΠΕΡ *(4 + 4 * 0.5) ΑΛΛΙΩΣ ΤΕΛΙΚΟ[ΕΡΓ] 8 * 4 + ΥΠΕΡ *(4 + 4 * 1) ΕΡΓ_ΚΥ ΕΡΓ_ΚΥ + 1! Γ4 ερώτημα ΑΛΛΙΩΣ ΤΕΛΙΚΟ[ΕΡΓ] 8 * 4 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ! Γ4 ερώτημα ΠΟΣΟΣΤΟ (ΕΡΓ_ΚΥ / 30) * 100 ΓΡΑΨΕ Το ποσοστό(%) των εργαζομένων την Κυριακή είναι:, ΠΟΣΟΣΤΟ, %! Γ5 ερώτημα ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 30 ΓΙΑ Υ ΑΠΟ 30 ΜΕΧΡΙ Ι ΜΕ_ΒΗΜΑ -1 ΑΝ ΤΕΛΙΚΟ[ Υ-1] < ΤΕΛΙΚΟ[ Υ ] ΤΟΤΕ! φθίνουσα ταξινόμηση! Αντιμετάθεση τελικών ημερομισθίων ΠΡΟΣ_ΤΕΛ ΤΕΛΙΚΟ[Υ-1] ΤΕΛΙΚΟ[Υ-1] ΤΕΛΙΚΟ[Υ] ΤΕΛΙΚΟ[Υ] ΠΡΟΣ_ΤΕΛ! Ταυτόχρονη αντιμετάθεση των ονομάτων για να μη χαθεί η αντιστοιχία θέσης ΠΡΟΣ_ΟΝ ΟΝΕΠ[Υ-1] ΟΝΕΠ[Υ-1] ΟΝΕΠ[Υ] ΟΝΕΠ[Υ-1] ΠΡΟΣ_ΟΝ Σελίδα 3 από 10
! έλεγχος ισότητας τελικών ημερομισθίων ΑΝ ΤΕΛΙΚΟ[Υ-1] = ΤΕΛΙΚΟ [Υ] ΤΟΤΕ! έλεγχος αν τα ονόματα δεν είναι αλφαβητικά ΑΝ ΟΝΕΠ[Υ-1] > ΟΝΕΠ [Υ] ΤΟΤΕ! αντιμετάθεση μόνο των ονοματεπωνύμων ΠΡΟΣ_ΟΝ ΟΝΕΠ[Υ-1] ΟΝΕΠ[Υ-1] ΟΝΕΠ[Υ] ΟΝΕΠ[Υ] ΠΡΟΣ_ΟΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ! εμφάνιση ονομάτων και δίπλα τα τελικά ημερομίσθια ΓΙΑ ΕΡΓ ΑΠΟ 1 ΜΕΧΡΙ 30 ΓΡΑΨΕ Ονοματεπώνυμο:, ΟΝΕΠ[ΕΡΓ], Τελικό ημερομίσθιο:, ΤΕΛΙΚΟ[ΕΡΓ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατηρήσεις: 1. Τα ονόματα των μεταβλητών που χρησιμοποιήθηκαν είναι ενδεικτικά. Επίσης, τα σχόλια που υπάρχουν στον παραπάνω αλγόριθμο είναι προαιρετικά και χρησιμοποιούνται για διευκόλυνση του αναγνώστη. 2. Ο έλεγχος ορθής καταχώρισης των υπερωριών θα μπορούσε να γίνει ως εξής: ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Δώσε τις υπερωρίες του ΔΙΑΒΑΣΕ ΥΠΕΡ ΜΕΧΡΙΣ_ΟΤΟΥ ΥΠΕΡ >= 0 ΚΑΙ ΥΠΕΡ < = 4 3. Ο έλεγχος ορθής καταχώρισης της ημέρας υπερωριών θα μπορούσε να γίνει ως εξής: ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Δώσε την ημέρα που πραγματοποίησε τις υπερωρίες του ΔΙΑΒΑΣΕ ΗΜΕΡΑ ΜΕΧΡΙΣ_ΟΤΟΥ (ΗΜΕΡΑ = Κ ) Ή (ΗΜΕΡΑ= Σ ) Ή (ΗΜΕΡΑ = ΚΥ ) ΘΕΜΑ Δ 1 Αλγόριθμος ΧΡΩΜΑΤΕΞ 2! ερώτημα Δ1 3 Για Ι από 1 μέχρι 30 4 Διάβασε ΠΡΟΪΟΝΤΑ[ Ι ] Σελίδα 4 από 10
5 Τέλος_επανάληψης 6 Για Ι από 1 μέχρι 100 7 Διάβασε ΠΩΛΗΤΕΣ[ Ι ] 8 Για Υ από 1 μέχρι 30 9 Διάβασε ΠΩΛΗΣΕΙΣ[ Ι, Υ ] 10 Τέλος_επανάληψης 11 Τέλος_επανάληψης 12! ερώτημα Δ2 13 ΜΑΧ ΠΩΛΗΣΕΙΣ[1, 22] 14 ΘΕΣΗ 1 15 Για Ι από 2 μέχρι 100 16 Αν ΜΑΧ < ΠΩΛΗΣΕΙΣ[Ι, 22] τότε 17 ΜΑΧ ΠΩΛΗΣΕΙΣ[Ι, 22] 18 ΘΕΣΗ Ι 19 Τέλος_επανάληψης 20 Εμφάνισε όνομα 22 ου προϊόντος:, ΠΡΟΪΟΝΤΑ[22] 21 Εμφάνισε πωλητές με καλύτερες πωλήσεις σε αυτό το προϊόν 22 Εμφάνισε ΠΩΛΗΤΕΣ[ΘΕΣΗ] 23 Για Ι από 1 μέχρι 100 24 Αν ΜΑΧ = ΠΩΛΗΣΕΙΣ[ Ι, 22] και ΘΕΣΗ < > Ι τότε 25 Εμφάνισε ΠΩΛΗΤΕΣ[ Ι ] 26 Τέλος_αν 27 Τέλος_επανάληψης 28! ερώτημα Δ3 29 Διάβασε ΟΝΟΜΑ 30 Ι 1 31 ΘΕΣΗ 0 32 ΒΡΕΘΗΚΕ Ψευδής 33 Όσο ( Ι < = 100) και (ΒΡΕΘΗΚΕ = Ψευδής) επανάλαβε 34 Αν ΟΝΟΜΑ = ΠΩΛΗΤΕΣ [ Ι ] τότε 35 ΘΕΣΗ Ι 36 ΒΡΕΘΗΚΕ Αληθής 37 Αλλιώς 38 Ι Ι + 1 39 Τέλος_επανάληψης 40 Αν ΒΡΕΘΗΚΕ = Αληθής τότε 41 ΚΑΛ ΠΩΛΗΣΕΙΣ[ΘΕΣΗ, 1] 42 ΧΕΙΡ ΠΩΛΗΣΕΙΣ[ΘΕΣΗ, 1] 43 Για Υ από 2 μέχρι 30 Σελίδα 5 από 10
44 Αν ΠΩΛΗΣΕΙΣ[ΘΕΣΗ, Υ] > ΚΑΛ τότε ΚΑΛ ΠΩΛΗΣΕΙΣ[ΘΕΣΗ. Υ] 45 Αν ΠΩΛΗΣΕΙΣ[ΘΕΣΗ, Υ] < ΧΕΙΡ τότε ΧΕΙΡ ΠΩΛΗΣΕΙΣ[ΘΕΣΗ. Υ] 46 Τέλος_επανάληψης 47 Εμφάνισε ΚΑΛ, ΧΕΙΡ 48 Αλλιώς 49 Εμφάνισε το όνομα που δόθηκε δεν αντιστοιχεί σε πωλητή της εταιρείας 50 Τέλος_αν 51! ερώτημα Δ4 52 Για Υ από 1 μέχρι 30 53 ΣΠ[ Υ ] 0! πίνακας συνολικών πωλήσεων κάθε προϊόντος 54 Για Ι από 1 μέχρι 100 55 ΣΠ[ Υ ] ΣΠ[ Υ ] + ΠΩΛΗΣΕΙΣ[ Ι, Υ ] 56 Τέλος_επανάληψης 57 Τέλος_επανάληψης 58! ταξινόμηση κατά φθίνουσα διάταξη του πίνακα ΣΠ 59 Για Ι από 2 μέχρι 30 60 Για Υ από 30 μέχρι Ι με_βήμα -1 61 Αν ΣΠ[Υ -1] < ΣΠ[ Υ ] τότε 62 Αντιμετάθεσε ΣΠ[Υ-1], ΣΠ[Υ] 63! για να μην χαθεί η αντιστοιχία με τα ονόματα των προϊόντων 64 Αντιμετάθεσε ΠΡΟΪΟΝΤΑ[Υ-1], ΠΡΟΪΟΝΤΑ[Υ] 65 Τέλος_αν 66 Τέλος_επανάληψης 67 Τέλος_επανάληψης 68 Για Ι από 1 μέχρι 5 69 Εμφάνισε ΠΡΟΪΟΝΤΑ[ Ι ] 70 Τέλος_επανάληψης 71 Τέλος ΧΡΩΜΑΤΕΞ Παρατηρήσεις: 1. Τα ονόματα των μεταβλητών που χρησιμοποιήθηκαν (εξαιρουμένων εκείνων που αναφέρονται στην εκφώνηση) είναι ενδεικτικά. Επίσης, τα σχόλια που υπάρχουν στον παραπάνω αλγόριθμο είναι προαιρετικά και χρησιμοποιούνται για διευκόλυνση του αναγνώστη. 2. Οι εντολές εμφάνισης αποτελεσμάτων του ερωτήματος Δ2 θα μπορούσαν να γίνουν ως εξής: Εμφάνισε ΠΡΟΙΟΝΤΑ[22] Για Ι από 1 μέχρι 100 Αν ΜΑΧ = ΠΩΛΗΣΕΙΣ[Ι, 22] τότε Εμφάνισε ΠΩΛΗΤΕΣ[Ι] Σελίδα 6 από 10
Τέλος_αν Τέλος_επανάληψης Σελίδα 7 από 10
3. Το ερώτημα Δ3 θα μπορούσε να γίνει ως εξής: Διάβασε ΟΝΟΜΑ Ι 1 ΒΡΕΘΗΚΕ Ψευδής Όσο ( Ι < = 100) και (ΒΡΕΘΗΚΕ = Ψευδής) επανάλαβε Αν ΟΝΟΜΑ = ΠΩΛΗΤΕΣ[Ι] τότε ΒΡΕΘΗΚΕ Αληθής ΚΑΛ ΠΩΛΗΣΕΙΣ[I, 1] ΧΕΙΡ ΠΩΛΗΣΕΙΣ[I, 1] Για Υ από 2 μέχρι 30 Αν ΠΩΛΗΣΕΙΣ[I, Υ] > ΚΑΛ τότε ΚΑΛ ΠΩΛΗΣΕΙΣ[I. Υ] Αν ΠΩΛΗΣΕΙΣ[I, Υ] < ΧΕΙΡ τότε ΧΕΙΡ ΠΩΛΗΣΕΙΣ[I. Υ] Τέλος_επανάληψης Εμφάνισε ΚΑΛ, ΧΕΙΡ Αλλιώς Ι Ι + 1 Τέλος_αν Τέλος_επανάληψης Αν ΒΡΕΘΗΚΕ = Ψευδής τότε Εμφάνισε το όνομα που δόθηκε δεν αντιστοιχεί σε πωλητή της εταιρείας Τέλος_αν 4. Η εντολή Αντιμετάθεσε ΠΡΟΙΟΝΤΑ[Υ-1], ΠΡΟΙΟΝΤΑ[Υ] θα μπορούσε να γίνει ως εξής: TempΠΡΟΙΟΝΤΑ ΠΡΟΙΟΝΤΑ[Υ-1] ΠΡΟΙΟΝΤΑ[Υ-1] ΠΡΟΙΟΝΤΑ[Υ] ΠΡΟΙΟΝΤΑ[Υ] TempΠΡΟΙΟΝΤΑ Όπου TempΠΡΟΙΟΝΤΑ είναι το όνομα της βοηθητικής μεταβλητής (η επιλογή του ονόματος της είναι τυχαία) για την αντιμετάθεση τιμών μεταξύ των στοιχείων ΠΡΟΙΟΝΤΑ[Υ-1] και ΠΡΟΙΟΝΤΑ[Υ]. 5. Η εντολή Αντιμετάθεσε ΣΠ[Υ-1], ΣΠ[Υ] θα μπορούσε να γίνει ως εξής: TempΣΠ ΣΠ[Υ-1] ΣΠ[Υ-1] ΣΠ[Υ] ΣΠ[Υ] TempΣΠ Όπου TempΣΠ είναι το όνομα της βοηθητικής μεταβλητής (η επιλογή του ονόματος της είναι τυχαία) για την αντιμετάθεση τιμών μεταξύ των στοιχείων ΣΠ[Υ-1] και ΣΠ[Υ]. 6. Η εντολή Αντιμετάθεσε μπορεί να χρησιμοποιηθεί μόνο όταν ο αλγόριθμος κωδικοποιείται σε "ψευδογλώσσα" και ΟΧΙ όταν κωδικοποιείται σε "ΓΛΩΣΣΑ". Σελίδα 8 από 10