ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 08 / 02 / 2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ - Α. ΚΑΤΡΑΚΗ - Π. ΣΙΟΤΡΟΠΟΣ ΘΕΜΑ Α ΑΠΑΝΤΗΣΕΙΣ A1. 1-Σωστό 2-Λάθος 3-Σωστό 4-Λάθος 5-Λάθος A2. 1. Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. (σελ. 54 σχολικό βιβλίο) 2. Υλικού, Γλωσσών προγραμματισμού, Δομών Δεδομένων, Ανάλυσης Δεδομένων. (σελ. 53-54 σχολικό βιβλίο) A3. ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 3 ΓΙΑ Υ ΑΠΟ 5 ΜΕΧΡΙ Ι ΜΕ_ΒΗΜΑ -1 ΑΝ Π[Υ-1] < Π[Υ] ΤΟΤΕ ΠΡΟΣΩΡΙΝΗ Π[Υ-1] Π[Υ-1] Π[Υ] Π[Υ] ΠΡΟΣΩΡΙΝΗ A4. 1. Ο δείκτης εμπρός (front) έχει τιμή 1, ενώ ο δείκτης πίσω (rear) έχει τιμή 4 2. ΘΟΔΩΡΗΣ ΦΩΤΗΣ ΓΙΑΝΝΗΣ ΓΙΩΤΑ ΡΑΝΙΑ 3. Ο δείκτης εμπρός (front)έχει τιμή 2, ενώ ο δείκτης πίσω (rear) έχει τιμή 6 A5. 1 στ 2 γ 3 ζ 4 β 5 δ 6 α 7 ε Σελίδα 1 από 7
ΘΕΜΑ Β B1. 1. Ο ρόλος της μεταβλητής Ν είναι, να αποτελεί το πόσες φορές θα διαβαστούν από το πληκτρολόγιο τιμές στην αριθμητική μεταβλητή Χ. Ο ρόλος της μεταβλητής Ζ είναι ο μέσος όρος των αριθμητικών τιμών που δόθηκαν στην μεταβλητή Χ. 2. ΠΡΟΓΡΑΜΜΑ Β1_Ερώτημα ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι, Ν ΠΡΑΓΜΑΤΙΚΕΣ: Χ[100], Υ, Ζ ΑΡΧΗ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΔΙΑΒΑΣΕ Ν ΜΕΧΡΙΣ_ΟΤΟΥ (Ν > = 2) ΚΑΙ (Ν < = 100) ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΔΙΑΒΑΣΕ Χ[Ι] Υ 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν Υ Υ + Χ[Ι] Ζ Υ / Ν ΓΡΑΨΕ Ζ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατήρηση: ο υπολογισμός της συνολικής τιμής των στοιχείων του πίνακα θα μπορούσε να γίνεται και μέσα στην επανάληψη όπου δημιουργούνται τα στοιχεία του πίνακα ως εξής: Υ 0 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν ΔΙΑΒΑΣΕ Χ]Ι] Υ Υ + Χ[Ι] B2. Σελίδα 2 από 7 1. Επειδή ο αλγόριθμος δεν λαμβάνει υπόψη τα όρια του πίνακα στην συνθήκη της Όσο, στην περίπτωση που το 22 δεν υπάρχει σε καμία θέση του πίνακα τότε το Ι θα ξεπεράσει το Ν (λαμβάνοντας την τιμή Ν+1) και θα βρεθούμε να ψάχνουμε σε θέση του πίνακα που δεν υπάρχει. 2. Για να βρούμε το 22 με σωστό τρόπο πρέπει να χρησιμοποιηθεί ο παρακάτω αλγόριθμος της σειριακής αναζήτησης
Αλγόριθμος Αναζήτηση Δεδομένα // ΠΙΝ, Ν // Θέση 0 Βρέθηκε Ψευδής Ι 1 Όσο (Ι< = Ν) και (Βρέθηκε = Ψευδής) επανάλαβε Αν ΠΙΝ[Ι] =22 τότε Θέση Ι Βρέθηκε Αληθής Αλλιώς Ι Ι +1 Τέλος_επανάληψης Αποτελέσματα // Θέση, Βρέθηκε // Τέλος Αναζήτηση ΘΕΜΑ Γ Σελίδα 3 από 7 Ενδεικτική απάντηση Αλγόριθμος Εταιρεία_Κινητής_Τηλεφωνίας πελάτες 0! πελάτες προς επεξεργασία πελάτες_καρτ 0! πελάτες καρτοκινητής πελάτες_με_πάγιο 0! πελάτες με συμβόλαιο παγίου! Ερώτημα Γ1! εισάγω πρώτα το ονοματεπώνυμο του πελάτη που θα επεξεργαστώ σίγουρα Διάβασε ονεπ! χτίζω το βρόχο που θα επεξεργαστεί το άγνωστο πλήθος πελατών Αρχή_επανάληψης πελάτες πελάτες +1! εισάγω τον τύπο συμβολαίου εξασφαλίζοντας την ορθότητα εισαγωγής της τιμής Αρχή_επανάληψης Διάβασε τύπος_συμβ Μέχρις_ότου τύπος_συμβ = K ή τύπος_συμβ = Σ! Ερώτημα Γ2! Αν ο πελάτης έχει συμβόλαιο καρτοκινητής Αν τύπος_συμβ = Κ τότε! να το βάλω στο πλήθος των πελατών καρτοκινητής πελάτες_καρτ πελάτες_καρτ +1! επεξεργάζομαι το 12μηνο. Φτιάχνω βρόχο γνωστού πλήθους επαναλήψεων συνολικό_πληρωτέο_ποσό 0! Ερώτημα Γ3 Για μήνα από 1 μέχρι 12! εισάγω τον αριθμό κλήσεων κάθε μήνα Διάβασε αρ_κλήσεων! αφού μου ζητά διάρκεια (σε δευτερόλεπτα) άρα επανάληψη συνολικό_κόστος_κλήσεων 0
Για κλήση από 1 μέχρι αρ_κλήσεων! εισάγω τη διάρκεια (σε δευτερόλεπτα) κάθε κλήσης Διάβασε δευτ! ελάχιστο κόστος κλήσεων μήνα κόστος_κλήσης 30 * 0.01! αν ξεπερνάει το ελάχιστο το κόστος διαμορφώνεται διαφορετικά Αν δευτ > 30 τότε κόστος_κλήσης δευτ * 0.01! να μην ξεχάσω να το αθροίσω στον συνολικό αθροιστή συνολικό_κόστος_κλήσεων συνολικό_κόστος_κλήσεων + κόστος_κλήσης Τέλος_επανάληψης! εισάγω τον αριθμό μηνυμάτων του μήνα Διάβασε αρ_μηνύματων! υπολογισμός κόστους μηνυμάτων μήνα κόστος_μηνυμάτων αρ_μηνύματων * 0.02! υπολογίζω πληρωτέο ποσό πελάτη του μήνα πληρωτέο_ποσό_μήνα συνολικό_κόστος_κλήσεων + κόστος_μηνυμάτων! Ερώτημα Γ3. Εμφανίζω μηνιαίο πληρωτέο ποσό πελάτη Εμφάνισε πληρωτέο_ποσό_μήνα! να μην ξεχάσω να το αθροίσω στον γενικό αθροιστή συνολικό_πληρωτέο_ποσό συνολικό_πληρωτέο_ποσό + πληρωτέο_ποσό_μήνα Τέλος_επανάληψης! για τους 12 μήνες! Ερώτημα Γ5.β Αν πελάτες_καρτ =1 τότε μαχ συνολικό_πληρωτέο_ποσό πλήρωσε_πιο_πολλά ονεπ Αλλιώς Αν συνολικό_πληρωτέο_ποσό > μαχ τότε μαχ συνολικό_πληρωτέο_ποσό πλήρωσε_πιο_πολλά ονεπ Αλλιώς! αν ο πελάτης έχει συμβόλαιο πάγιου πελάτες_με_πάγιο πελάτες_με_πάγιο +1! για ερώτημα Γ5.γ! εισαγωγή επόμενου, και κάποια φορά τελευταίου, ονοματεπωνύμου πελάτη Διάβασε ονεπ Μέχρις_ότου ονεπ = ΤΕΛΟΣ! Ερώτημα Γ5.α: Εμφάνιση ποσού που εισέπραξε η εταιρεία από πελάτες καρτοκινητής. Εμφάνισε συνολικό_πληρωτέο_ποσό! Ερώτημα Γ5.β: Εμφάνιση πελάτη καρτοκινητής που το 12μηνο πλήρωσε τα πιο πολλά Εμφάνισε πλήρωσε_πιο_πολλά! Ερώτημα Γ5.γ :Ποσοστό (%) πελατών επί του συνόλου, που είχαν συμβόλαιο με πάγιο ποσοστό (πελάτες_με_πάγιο / πελάτες) * 100 Εμφάνισε ποσοστό Τέλος Εταιρεία_Κινητής_Τηλεφωνίας Παρατηρήσεις που αφορούν τη λύση του θέματος Γ: (α) Τα ονόματα των άλλων μεταβλητών που χρησιμοποιήθηκαν είναι ενδεικτικά. Σελίδα 4 από 7
(β) Τα ενημερωτικά μηνύματα τόσο κατά την είσοδο όσο και την έξοδο είναι προαιρετικά και υπάρχουν για να γίνει ο αλγόριθμος ποιος φιλικός προς το χρήστη. (γ) Τα σχόλια είναι προαιρετικά και χρησιμοποιούνται για διευκόλυνση του χρήστη. (δ) Ο έλεγχος εγκυρότητας όπου χρειάζεται μπορεί να γίνει αποκλειστικά με την δομή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ ή την ΟΣΟ..ΕΠΑΝΑΛΑΒΕ (ε) Το τμήμα αλγορίθμου που υπολογίζει τον πελάτη με συμβόλαιο καρτοκινητής που πλήρωσε συνολικά στο 12μηνο το μεγαλύτερο ποσό θα μπορούσε να υλοποιηθεί και με το εξής τμήμα εντολών:! Ερώτημα Γ5.β Αν συνολικό_πληρωτέο_ποσό > μαχ τότε μαχ συνολικό_πληρωτέο_ποσό πλήρωσε_πιο_πολλά ονεπ Αφού προηγουμένως στην αρχή του αλγορίθμου έχουμε δώσει αρχική τιμή στην μεταβλητή μαχ μια πολύ μικρή πλαστή τιμή ( που δεν πρόκειται να λάβει ποτέ η μεταβλητή συνολικό_πληρωτέο_ποσό πχ. έστω -1) ΘΕΜΑ Δ. Σελίδα 5 από 7 Ενδεικτική απάντηση ΠΡΟΓΡΑΜΜΑ Εκδήλωση! Ερώτημα Γ1. Τμήμα δηλώσεων ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Ι, Υ, ΑΤΟΜΑ[8], ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[8], ΜΑΧ, θέση, πλ ΠΡΑΓΜΑΤΙΚΕΣ: ΤΙΜΗ[8], ΠΡΟΣΦΟΡΑ[10], προσ1, σύνολο, πλεόνασμα ΧΑΡΑΚΤΗΡΕΣ: ΧΟΡΗΓΟΣ[10], προσ2 ΛΟΓΙΚΕΣ: βρέθηκε ΑΡΧΗ! Ερώτημα Γ2. Εισαγωγή χωρητικότητας διαθέσιμων χώρων ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 8 ΓΡΑΨΕ Δώστε τη χωρητικότητα του, Ι, -ου διαθέσιμου χώρου ΔΙΑΒΑΣΕ ΑΤΟΜΑ[Ι]! Έλεγχος εγκυρότητας με χρήση δομής επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ ΑΝ ΑΤΟΜΑ[Ι] < = 0 ΤΟΤΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μη έγκυρη τιμή χωρητικότητας, Προσπαθήστε πάλι ΔΙΑΒΑΣΕ ΑΤΟΜΑ[Ι] ΜΕΧΡΙΣ_ΟΤΟΥ ΑΤΟΜΑ[Ι] > 0! Εισαγωγή τιμής ενοικίασης καθενός από τους διαθέσιμους χώρους ΓΡΑΨΕ Δώστε τη τιμή ενοικίασης του, Ι, -ου διαθέσιμου χώρου ΔΙΑΒΑΣΕ ΤΙΜΗ[Ι]! Ερώτημα Γ3. Εισαγωγή επωνυμίας και προσφοράς χορηγών ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ Δώστε την επωνυμία του, Ι, -ου χορηγού ΔΙΑΒΑΣΕ ΧΟΡΗΓΟΣ[Ι] ΓΡΑΨΕ Δώστε την προσφορά του, Ι, -ου χορηγού ΔΙΑΒΑΣΕ ΠΡΟΣΦΟΡΑ[Ι]! Ερώτημα Γ4.! Από τη στιγμή που οι τιμές των χώρων δεν αφορούν τα ίδια άτομα υπολογίζουμε πόσα άτομα! αναλογούν σε ένα ευρώ ενοικίασης για να έχουμε μια κοινή βάση, και το αποτέλεσμα! καταχωρίζεται στον μονοδιάστατο πίνακα ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 8 ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] ΑΤΟΜΑ[Ι] / ΤΙΜΗ[Ι]! Υπολογίζουμε το μέγιστο στοιχείο και τη θέση αυτού στον πίνακα ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ! για να δούμε ποιος χώρος μας συμφέρει. ΜΑΧ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[1] θέση 1 ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 8 ΑΝ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] > ΜΑΧ ΤΟΤΕ ΜΑΧ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] θέση Ι! Ερώτημα Γ4. Ταξινομώ σε φθίνουσα διάταξη τις προσφορές των χορηγών για να έχω! τις μεγαλύτερες χορηγίες στις πρώτες θέσεις για να εξασφαλίσω αθροίζοντας, το! ελάχιστο (αν υπάρχει) πλήθος χορηγών που θα καλύψουν την συμφέρουσα τιμή χώρου. ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 10 ΓΙΑ Υ ΑΠΟ 10 ΜΕΧΡΙ Ι ΜΕ_ΒΗΜΑ -1 ΑΝ ΠΡΟΣΦΟΡΑ[Υ-1] < ΠΡΟΣΦΟΡΑ[Υ] ΤΟΤΕ προσ1 ΠΡΟΣΦΟΡΑ[Υ-1] ΠΡΟΣΦΟΡΑ[Υ-1] ΠΡΟΣΦΟΡΑ[Υ] ΠΡΟΣΦΟΡΑ[Υ] προσ1! Ταυτόχρονη αντιμετάθεση επωνυμιών προσ2 ΧΟΡΗΓΟΣ[Υ-1] ΧΟΡΗΓΟΣ[Υ-1] ΧΟΡΗΓΟΣ[Υ] ΧΟΡΗΓΟΣ[Υ] προσ2! Εύρεση ελάχιστου πλήθους χορηγών σύνολο 0 πλ 0 βρέθηκε ΨΕΥΔΗΣ Ι 1 ΟΣΟ (Ι < = 10) ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ σύνολο σύνολο + ΠΡΟΣΦΟΡΑ[Ι] πλ πλ + 1 ΑΝ σύνολο > = ΤΙΜΗ[θέση] ΤΟΤΕ βρέθηκε ΑΛΗΘΗΣ Σελίδα 6 από 7
ΑΛΛΙΩΣ Ι Ι +1! Εμφάνιση αποτελεσμάτων ΑΝ βρέθηκε = ΨΕΥΔΗΣ ΤΟΤΕ ΓΡΑΨΕ Δεν βρέθηκαν χορηγοί ΑΛΛΙΩΣ ΓΡΑΨΕ Επωνυμίες χορηγών που θα προτιμηθούν ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ πλ ΓΡΑΨΕ ΧΟΡΗΓΟΣ[Ι] πλεόνασμα σύνολο ΤΙΜΗ[θέση] ΑΝ πλεόνασμα > 0 ΤΟΤΕ ΓΡΑΨΕ Υπάρχει πλεόνασμα της τάξης των:, πλεόνασμα, ευρώ ΑΛΛΙΩΣ ΓΡΑΨΕ Δεν υπάρχει πλεόνασμα ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Παρατηρήσεις που αφορούν τη λύση του θέματος Δ: (α) Εκτός από τα ονόματα των πινάκων που δίνονται από την εκφώνηση τα ονόματα των άλλων μεταβλητών που χρησιμοποιήθηκαν είναι ενδεικτικά. (β) Τα σχόλια είναι προαιρετικά και χρησιμοποιούνται για διευκόλυνση του χρήστη. (γ) Ο έλεγχος εγκυρότητας όπου χρειάζεται μπορεί να γίνει αποκλειστικά με την δομή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ ή την ΟΣΟ..ΕΠΑΝΑΛΑΒΕ. (δ) Το τμήμα προγράμματος ΜΑΧ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[1] θέση 1 ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 8 ΑΝ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] > ΜΑΧ ΤΟΤΕ ΜΑΧ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] θέση Ι Θα μπορούσε να γραφεί ισοδύναμα σαν: ΜΑΧ -1 ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 8 ΑΝ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] > ΜΑΧ ΤΟΤΕ ΜΑΧ ΑΤΟΜΑ_ΑΝΑ_ΕΥΡΩ[Ι] θέση Ι Σελίδα 7 από 7