Ημερομηνία: 1/03/15 Διάρκεια διαγωνίσματος: 180 Εξεταζόμενο μάθημα: Προγραμματισμός (Δομή Επανάληψης) Υπεύθυνος καθηγητής: Παπαδόπουλος Πέτρος ΘΕΜΑ 1 ο Α. Να χαρακτηρίσετε τις παρακάτω προτάσεις ως σωστές η λανθασμένες. 1. Ένας πίνακας έχει σταθερό μέγεθος και μεταβαλλόμενο περιεχόμενο. 2. Ο δείκτης ενός μονοδιάστατου πίνακα πρέπει να είναι πάντα i. 3. Η θέση ενός στοιχείου σε ένα δισδιάστατο πίνακα προσδιορίζεται από 2 αριθμούς. 4. Ένας πίνακας Α[10,100] δεν είναι τετραγωνικός. 5. Το στοιχείο Α[26,26] βρίσκεται πάνω στην κύρια διαγώνιο ενός πίνακα Α[78,78]. 6. Ο αλγόριθμος σειριακής αναζήτησης εντοπίζει πάντα την τιμή που ζητάμε σε ένα πίνακα. 7. Όταν ένας άνθρωπος ψάχνει ένα τηλέφωνο στον τηλεφωνικό κατάλογο, ουσιαστικά χρησιμοποιεί τον αλγόριθμο σειριακής αναζήτησης. 8. Η δυαδική αναζήτηση εφαρμόζεται αποκλειστικά σε ταξινομημένους πίνακες. 9. Ο αλγόριθμος ταξινόμησης ευθείας ανταλλαγής δεν μπορεί να χρησιμοποιηθεί σε πίνακες με αλφαριθμητικά δεδομένα. 10. Κάθε υποπρόγραμμα πρέπει να έχει μια είσοδο και μια έξοδο. 11. Μια συνάρτηση επιστρέφει τιμές μέσω παραμέτρων. 12. Μια συνάρτηση μπορεί να χρησιμοποιηθεί για να ταξινομήσει έναν μονοδιάστατο πίνακα. 13. Οι συναρτήσεις επιστρέφουν πάντα έναν αριθμό με το όνομα τους.
14. Μια διαδικασία μπορεί να καλέσει μια συνάρτηση. Μονάδες 7 Β. Σχεδιάστε τον πίνακα Α[5,5] όπως αυτός θα προκύψει μετά την εκτέλεση του παρακάτω αλγορίθμου. (Δεν απαιτείται πίνακας τιμών) Αλγόριθμος Πίνακας Για i από 1 μέχρι 5 Για j από 1 μέχρι 5 Α[i,j] '*' Α[3,3] 'Ρ' Για i από 2 μέχρι 4 Για j από 2 μέχρι 4 a i + j Αν (a mod 2 < > 0) τότε Αν (a = 5) τότε Α[i,j] 'H' Αλλιώς Α[i,j] 'Α' Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Τέλος Πίνακας Μονάδες 4 Γ.1. Ο παρακάτω κώδικας δίνει τιμή σε έναν δισδιάστατο πίνακα A[4,4]. Να σχεδιάσετε τον πίνακα μετά την εκτέλεση των εντολών αυτών. (Δεν απαιτείται πίνακας τιμών) ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4 Α[i,j] 17 - (i - 1) * 4 - j Μονάδες 4 Γ.2. Να συμπληρώσετε τα κενά στον παρακάτω κώδικα ώστε να δίνει τις ίδιες ακριβώς τιμές στον πίνακα Α[4,4]. κ. ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4 Α[i,j]. κ.
Μονάδες 4 Δ. Να γραφεί αλγόριθμος που να δημιουργεί τον παρακάτω πίνακα Α: 1 2 3 4 5 1 11 12 13 14 15 2 21 22 23 24 25 3 31 32 33 34 35 4 41 42 43 44 45 5 51 52 53 54 55 Μονάδες 6 E. Να γραφεί αλγόριθμος που με δεδομένο έναν πίνακα Α[10], θα δημιουργεί έναν πίνακα Β[10] που θα περιέχει τα μη μηδενικά στοιχεία του πίνακα Α στην αρχή του πίνακα Β και όλα τα μηδενικά στοιχεία του πίνακα Α στο τέλος. Παράδειγμα: 1 2 3 4 5 6 7 8 9 10 A 8 0 0 7 0 6 0 0 0-4 1 2 3 4 5 6 7 8 9 10 B 8 7 6-4 0 0 0 0 0 0 Μονάδες 7 ΣΤ. Να αναλύσετε τα μειονεκτήματα της χρήσης πινάκων στα προγράμματα. Μονάδες 5 Ζ. Να αναφέρετε τους κανόνες που ισχύουν ανάμεσα στις τυπικές και πραγματικές παραμέτρους. Μονάδες 3 ΘΕΜΑ 2 ο Δίνεται το παρακάτω πρόγραμμα και δυο υποπρογράμματα. ΠΡΟΓΡΑΜΜΑ Υποπρογράμματα ΑΚΕΡΑΙΕΣ: Έτος, α, β, x ΔΙΑΒΑΣΕ Έτος α (Έτος - 2000) mod 10 β 3 _ΕΠΑΝΑΛΗΨΗΣ
ΑΝ (β mod 2 = 0) ΤΟΤΕ ΚΑΛΕΣΕ Δ1(α,β,x) ΑΛΛΙΩΣ x Σ1(α,β) β β - 1 ΓΡΑΨΕ x ΜΕΧΡΙΣ_ΟΤΟΥ (β < 0) ΓΡΑΨΕ 'Καλή επιτυχία' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΔΙΑΔΙΚΑΣΙΑ Δ1(κ, λ, μ) ΑΚΕΡΑΙΕΣ: κ, λ, μ ΑΝ λ > 1 ΤΟΤΕ μ λ - 2 ΑΛΛΙΩΣ μ κ ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ ΣΥΝΑΡΤΗΣΗ Σ1(κ,λ): ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: κ, λ λ λ + 7 Σ1 λ div κ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Α. Να βρεθεί τι εμφανίζεται με την εκτέλεση του προγράμματος και των υποπρογραμμάτων. Είσοδος θα είναι ο αριθμός της φετινής χρονιάς. (Να γίνει πίνακας τιμών) Μονάδες 6 Β. Να ξαναγράψετε το πρόγραμμα, ώστε να επιτελεί την ίδια λειτουργία χρησιμοποιώντας διαδικασία στη θέση της συνάρτησης και συνάρτηση στη θέση της διαδικασίας. Να υλοποιηθούν και τα νέα υποπρογράμματα. Μονάδες 8 Γ. Να ξαναγράψετε το πρόγραμμα που δόθηκε αρχικά, ώστε να επιτελεί την ίδια λειτουργία χωρίς τη χρήση υποπρογραμμάτων. Μονάδες 6 ΘΕΜΑ 3 ο Η εφαρμογή Εορτολόγιο χρησιμοποιεί τους εξής πίνακες: Τον πίνακα ΟΝ[1000] που αποθηκεύει 1000 ελληνικά ονόματα. Τον παράλληλο πίνακα Γ[1000,2] που αποθηκεύει την ημερομηνία της γιορτής του αντίστοιχου ονόματος από τον πίνακα ΟΝ. Στην πρώτη στήλη αποθηκεύεται η μέρα και στην δεύτερη ο μήνας. Παράδειγμα: Γ
Να γραφεί πρόγραμμα που: ΟΝ 1 2 1 87 ΓΙΩΡΓΟΣ 23 4 438 ΚΑΤΕΡΙΝΑ 25 11 1000 Α. Θα διαβάζει τους πίνακες ΟΝ και Γ. Μονάδα 1 Β. Θα διαβάζει ένα όνομα και καλώντας την συνάρτηση Εορτή που περιγράφεται στο ερώτημα Ε, θα εντοπίζει την θέση του μέσα στον πίνακα ΟΝ και κατόπιν θα εντοπίζει από τον πίνακα Γ την ημερομηνία που γιορτάζει αυτό το όνομα και θα την εμφανίζει στην μορφή μέρα/μήνας (π.χ. 23/4, 25/11). Θεωρήστε ότι το όνομα που θα δοθεί, θα υπάρχει στον πίνακα ΟΝ. Μονάδες 2 Γ. Θα διαβάζει έναν αριθμό μήνα και καλώντας την διαδικασία Μήνας που περιγράφεται στο ερώτημα Ζ, θα εμφανίζει πόσα ονόματα γιορτάζουν τον συγκεκριμένο μήνα. Μονάδες 2 Δ. Θα διαβάζει μια ημερομηνία με την χρήση δυο μεταβλητών (για την μέρα και τον μήνα) και θα τοποθετεί τα ονόματα που γιορτάζουν μέσα στις επόμενες 10 μέρες από αυτή την ημερομηνία σε έναν νέο πίνακα με όνομα ΔΕΚΑ. Να μην τοποθετηθούν στον πίνακα ΔΕΚΑ ονόματα που γιορτάζουν σε άλλο μήνα από αυτόν που δόθηκε (δηλαδή όχι ονόματα που γιορτάζουν τον επόμενο μήνα). Στο τέλος, να εμφανιστούν όλα τα ονόματα του πίνακα ΔΕΚΑ. Μονάδες 5 Ε. Να γραφεί η συνάρτηση Εορτή που θα δέχεται τον πίνακα ΟΝ και ένα όνομα και θα επιστρέφει την θέση στην οποία υπάρχει αυτό το όνομα. Να χρησιμοποιηθεί ο αλγόριθμος της σειριακής αναζήτησης. Μονάδες 5
Ζ. Να γραφεί η διαδικασία Μήνας που θα δέχεται τους πίνακες ΟΝ και Γ και έναν αριθμό μήνα και εμφανίζει όλα τα ονόματα που γιορτάζουν τον συγκεκριμένο μήνα. Η διαδικασία θα επιστρέφει το πλήθος των ονομάτων που γιορτάζουν τον συγκεκριμένο μήνα. Μονάδες 5 ΘΕΜΑ 4 ο Το Παγκόσμιο Κύπελλο ποδοσφαίρου, γνωστό και ως Μουντιάλ, διοργανώνεται κάθε 4 χρόνια ανελλιπώς από το 1950 μέχρι και το 2014. Το Μουντιάλ αποτελεί ένα τουρνουά στο οποίο συμμετέχουν ομάδες μετά από προκριματικούς αγώνες. Στα Μουντιάλ συμμετείχαν συνολικά 77 διαφορετικές ομάδες σε 17 διοργανώσεις μέχρι και την τελευταία διοργάνωση που έγινε το 2014. Θέλουμε να γράψουμε έναν αλγόριθμο που θα χρησιμοποιεί τους παρακάτω πίνακες: Τον πίνακα Ο[77] που αποθηκεύει το όνομα κάθε ομάδας που συμμετείχε σε Μουντιάλ και τον πίνακα Θ[77,17] που για κάθε χρονιά που έγινε Μουντιάλ από το 1950 μέχρι το 2014, αποθηκεύει τη θέση που κατέλαβε η κάθε ομάδα, θεωρώντας ότι τα αποτελέσματα του 1950 μπαίνουν στην 1η στήλη, του 1954 στη 2η... και του 2014 στην 17 η. Σε περίπτωση που μια ομάδα δε συμμετείχε σε κάποια διοργάνωση από αυτές, θα αποθηκεύεται το 0 στην αντίστοιχη θέση του πίνακα Θ[77,17]. Για παράδειγμα, ο τελικός του Μουντιάλ του 2014 ήταν Γερμανία-Αργεντινή (κέρδισε η Γερμανία) και ο τελικός του 2010 ήταν Ισπανία-Ολλανδία (κέρδισε η Ισπανία). Στα 2 αυτά Μουντιάλ, δεν συμμετείχε π.χ. η Αυστρία. Η εικόνα των δυο πινάκων θα είναι η παρακάτω: Ομάδα Θέση ΑΥΣΤΡΙΑ 0 0 ΓΕΡΜΑΝΙΑ 1... ΙΣΠΑΝΙΑ 1
ΟΛΛΑΝΔΙΑ 2 ΑΡΓΕΝΤΙΝΗ 2 1950 1954 2010 2014 Να γράψετε αλγόριθμο ο οποίος : Α. Διαβάζει τους πίνακες Ο και Θ. Μονάδα 1 Β. Να εμφανίζει την ομάδα ή τις ομάδες με τις περισσότερες συμμετοχές σε τελικό. Μονάδες 4 Γ. Για κάθε μια διοργάνωση, να εμφανίζεται η χρονιά και το ζευγάρι του τελικού. Πρώτα να εμφανίζεται η νικήτρια ομάδα. Π.χ., για το 2014 πρέπει να εμφανιστεί 2014: Γερμανία- Αργεντινή. Μονάδες 4 Δ. Να εμφανίζει τις χώρες που συμμετείχαν σε όλα τα Μουντιάλ. Αν δεν υπάρχουν τέτοιες χώρες, να εμφανίζεται αντίστοιχο μήνυμα. Μονάδες 5 Ε. Να εμφανίζεται μια λίστα με τις χώρες που κατέκτησαν το τρόπαιο, ταξινομημένες ως προς τον αριθμό των κατακτήσεων, δηλαδή πρώτα θα εμφανιστεί η χώρα με τις περισσότερες κατακτήσεις. Σε περίπτωση ίδιου αριθμού κατακτήσεων, προηγείται η χώρα με τις περισσότερες συμμετοχές σε τελικό. Μονάδες 6 Καλή επιτυχία
ΘΕΜΑ 1 Ο Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Διαγωνίσματος Α. (Μονάδες 7) 1. Σωστό 2. Λάθος 3. Σωστό 4. Σωστό 5. Σωστό 6. Λάθος 7. Λάθος 8. Σωστό 9. Λάθος 10. Σωστό 11. Λάθος 12. Λάθος 13. Λάθος 14. Σωστό Β. (Μονάδες 4) * * * * * * * Η * * * Η Ρ Α * * * Α * * * * * * * Γ1. (Μονάδες 4) Γ2. (Μονάδες 4) 1 2 3 4 1 16 15 14 13 2 12 11 10 9 3 8 7 6 5 4 4 3 2 1 κ 16 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4 Α[i,j] κ κ κ - 1 Δ (Μονάδες 6) Αλγόριθμος ΤρόποςΑ Για i από 1 μέχρι 5 Για j από 1 μέχρι 5 Α[i,j] i * 10 + j Τέλος ΤρόποςΑ Αλγόριθμος ΤρόποςΒ κ 11 Για i από 1 μέχρι 5 Για j από 1 μέχρι 5 Α[i,j] κ κ κ + 1 κ κ + 5 Τέλος ΤρόποςΒ
Ε. (Μονάδες 7) Αλγόριθμος ΤρόποςΑ Δεδομένα //Α// κ 1 Για i από 1 μέχρι 10 Αν (Α[i] < > 0) τότε Β[κ] Α[i] κ κ + 1 Για i από κ μέχρι 10 Β[i] 0 Τέλος ΤρόποςΑ Αλγόριθμος ΤρόποςΒ Δεδομένα //Α// κ 1 λ 10 Για i από 1 μέχρι 10 Αν (Α[i] < > 0) τότε Β[κ] Α[i] κ κ + 1 Αλλιώς Β[λ] Α[i] λ λ - 1 Τέλος ΤρόποςΒ Ζ. (Μονάδες 5) Σημειώσεις. 7.5. Ζ. (Μονάδες 3) Σημειώσεις. 8.8. ΘΕΜΑ 2 ο Α. (Μονάδες 6) ΠΡΟΓΡΑΜΜΑ ΔΙΑΔΙΚΑΣΙΑ ΣΥΝΑΡΤΗΣΗ Έτος α β x κ λ μ κ λ Σ1 2015 5 3 5 3 Έξοδος 2 2 10 2 2 5 2 2 5 2 0 0 1 0 5 2 0 1 9 1 1 5 0 1 5 0 5 5 5-1 Καλή επιτυχία
Β. (Μονάδες 8) ΠΡΟΓΡΑΜΜΑ Υποπρογράμματα ΑΚΕΡΑΙΕΣ: Έτος, α, β, x ΔΙΑΒΑΣΕ Έτος α (Έτος - 2000) mod 10 β 3 _ΕΠΑΝΑΛΗΨΗΣ ΑΝ (β mod 2 = 0) ΤΟΤΕ x Σ1(α,β) ΑΛΛΙΩΣ ΚΑΛΕΣΕ Δ1(α,β,x) β β - 1 ΓΡΑΨΕ x ΜΕΧΡΙΣ_ΟΤΟΥ (β < 0) ΓΡΑΨΕ 'Καλή επιτυχία' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ Σ1(κ, λ): ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: κ, λ ΑΝ λ > 1 ΤΟΤΕ Σ1 λ - 2 ΑΛΛΙΩΣ Σ1 κ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΔΙΑΔΙΚΑΣΙΑ Δ1(κ,λ,μ) ΑΚΕΡΑΙΕΣ: κ, λ, temp, μ temp λ + 7 μ temp div κ ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ Γ. (Μονάδες 6) ΠΡΟΓΡΑΜΜΑ Υποπρογράμματα ΑΚΕΡΑΙΕΣ: Έτος, α, β, x ΔΙΑΒΑΣΕ Έτος α (Έτος - 2000) mod 10 β 3 _ΕΠΑΝΑΛΗΨΗΣ ΑΝ (β mod 2 = 0) ΤΟΤΕ x (α + 7) div κ ΑΛΛΙΩΣ ΑΝ (α > 1) ΤΟΤΕ x β 2 ΑΛΛΙΩΣ x α β β - 1 ΓΡΑΨΕ x ΜΕΧΡΙΣ_ΟΤΟΥ (β < 0) ΓΡΑΨΕ 'Καλή επιτυχία' ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΠΡΟΓΡΑΜΜΑ Θέμα3 ΑΚΕΡΑΙΕΣ: i, j, Γ[1000,2],θέση, x, Day, Month, κ ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[1000], Όνομα, ΔΕΚΑ[1000] ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000!Α ΔΙΑΒΑΣΕ ΟΝ[i] ΓΙΑ ΥΥ ΑΠΟ 1 ΜΕΧΡΙ 2 ΔΙΑΒΑΣΕ Γ[i,ΥΥ] ΔΙΑΒΑΣΕ Όνομα!Β θέση Εορτή(ΟΝ,Όνομα) ΓΡΑΨΕ Γ[θέση,1], /, Γ[θέση,2] ΔΙΑΒΑΣΕ x!γ ΚΑΛΕΣΕ Μήνας(ΟΝ,Γ,x,πλ) ΓΡΑΨΕ πλ, γιορτάζουν ΔΙΑΒΑΣΕ Day, Month!Δ κ 1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000 ΑΝ (Γ[i,2] = Month) ΚΑΙ (Γ[i,1] >= Day) ΚΑΙ (Γ[i,1] <= Day + 10) ΤΟΤΕ ΔΕΚΑ[κ] ΟΝ[i] κ κ + 1 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ κ 1 ΓΡΑΨΕ ΔΕΚΑ[i] ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΥΝΑΡΤΗΣΗ Εορτή (ΟΝ, Όνομα): ΑΚΕΡΑΙΑ ΑΚΕΡΑΙΕΣ: θέση, i ΛΟΓΙΚΕΣ: βρέθηκε ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[1000], Όνομα θέση 0 βρέθηκε ΨΕΥΔΗΣ i 1 ΟΣΟ (i <= 1000) ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ ΑΝ (ΟΝ[i] = Όνομα) ΤΟΤΕ βρέθηκε ΑΛΗΘΗΣ θέση i ΑΛΛΙΩΣ i i + 1
Εορτή θέση ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ ΔΙΑΔΙΚΑΣΙΑ Μήνας(ΟΝ,Γ,x,πλ) ΑΚΕΡΑΙΕΣ: πλ, i, x, Γ[1000,2] ΧΑΡΑΚΤΗΡΕΣ: ΟΝ[1000] πλ 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000 ΑΝ (Γ[i,2] = x) ΤΟΤΕ ΓΡΑΨΕ ΟΝ[i] πλ πλ + 1 ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ Αλγόριθμος Θέμα4 Για i από 1 μέχρι 77!Α Διάβασε Ο[i] Για j από 1 μέχρι 17 Διάβασε Θ[i,j] Για i από 1 μέχρι 77!Β Τ[i] 0 Για υυ από 1 μέχρι 17 Αν (Θ[i,j] = 1 ή Θ[i,j] = 2) τότε Τ[i] Τ[i] + 1 max T[1] Για i από 2 μέχρι 17 Αν (Τ[i] > max) τότε max Τ[i] max T[1] Για i από 1 μέχρι 17 Αν (Τ[i] = max) τότε Εμφάνισε Ο[i] χρονιά 1950!Γ Για j από 1 μέχρι 17 Για i από 1 μέχρι 77
Αν (Θ[i,j] = 1) τότε winner Ο[i] Αλλιώς_Αν (Θ[i,j] = 2) τότε loser O[i] Εμφάνισε χρονιά, :, Winner, -, Loser χρονιά χρονιά + 4 βρέθηκε ψευδής!δ Για i από 1 μέχρι 77 πλ 0 Για j από 1 μέχρι 17 Αν (Θ[i,j] < > 0) τότε πλ πλ + 1 Αν (πλ = 17) τότε Εμφάνισε Ο[i] βρέθηκε αληθής Αν (βρέθηκε = ψευδής) τότε Εμφάνισε Δεν βρέθηκαν χώρες Για i από 1 μέχρι 77!Ε Κ[i] 0 Για j από 1 μέχρι 17 Αν (Θ[i,j] = 1) τότε Κ[i] Κ[i] + 1 Για i από 2 μέχρι 77 Για j από 77 μέχρι i με_βήμα -1 Αν (Κ[j] > Κ[j 1) τότε temp1 Κ[j] Κ[j] Κ[j 1] Κ[j 1] temp1 temp2 O[j] O[j] O[j 1] O[j 1] temp2 temp1 T[j] T[j] T[j 1] T[j 1] temp1 Αλλιώς_Αν (Κ[j] = Κ[j 1] και Τ[j] > Τ[j 1]) τότε O[j] O[j 1] O[j 1] temp2 temp1 T[j] T[j] T[j 1] T[j 1] temp1 Για i από 1 μέχρι 77 Αν (Κ[i] > 0) τότε Εμφάνισε Ο[i] Τέλος Θέμα4