ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα Ονοματεπώνυμο: ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμίας από τις παρακάτω προτάσεις 1-5 και, δίπλα, τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ, αν η πρόταση είναι λανθασμένη. 1. Ο διερμηνευτής εντοπίζει μόνο τα συντακτικά λάθη ενός προγράμματος, ενώ ο μεταγλωττιστής και τα λογικά. 2. Ο χρόνος εκτέλεσης ενός αλγορίθμου εξαρτάται και απ' τη γλώσσα προγραμματισμού που θα χρησιμοποιηθεί. 3. Κατά την εκτέλεση ενός προγράμματος, αν η στοίβα χρόνου εκτέλεσης περιέχει δύο τιμές, αυτό σημαίνει ότι ένα υποπρόγραμμα που έχει κληθεί από το κύριο πρόγραμμα έχει καλέσει με τη σειρά του ένα άλλο υποπρόγραμμα. 4. Ο χωρισμός ενός προγράμματος σε μικρότερα αυτοτελή τμήματα επιτρέπει μεν τη γρήγορη διόρθωσή του, καθιστά όμως δυσκολότερη την κατανόηση τού τρόπου λειτουργίας του. 5. Οι δυναμικές δομές δεδομένων μπορούν να επεκτείνονται και να συρρικνώνονται κατά τη διάρκεια εκτέλεσης του προγράμματος. 6. Υπάρχει τουλάχιστον μια τιμή της μεταβλητής Α για την οποία η μεταβλητή Β θα πάρει την τιμή 7. Αν Α mod 3 = 3 τότε Β 7 αλλιώς Β 77 7. Σε μια ουρά στην οποία ο δείκτης FRONT που δείχνει το πρώτο στοιχείο έχει την τιμή 4 και ο δείκτης REAR που δείχνει το τελευταίο έχει την τιμή 6, μπορεί να γίνει εξαγωγή το πολύ 3 φορές αν στο μεταξύ δε γίνει καμία εισαγωγή. 8. Αν Α, Β είναι λογικές εκφράσεις τότε η έκφραση (Α ΚΑΙ ΟΧΙ Α) Ή Β έχει πάντα ως αποτέλεσμα την τιμή της έκφρασης Β. 9. Σε έναν αλγόριθμο στον οποίο υπάρχει μόνο η δομή ακολουθίας, κάθε εντολή εκτελείται ακριβώς μία φορά. 10. Η αναφορά Θ[3, 2, 4, 5] αφορά στοιχείο τετραδιάστατου πίνακα. Α2. α. Να δώσετε τον ορισμό της εμβέλειας. β. Αναφέρετε επιγραμματικά πόσα είδη εμβέλειας έχουμε. 0 γ. Αναλύστε την εμβέλεια εκείνη που χρησιμοποιείται στην ΓΛΩΣΣΑ. Ποια πλεονεκτήματα έχει; Μονάδες 3 Α3. Συμπληρώστε τον παρακάτω πίνακα αναγράφοντας τις κατάλληλες πολυπλοκότητες Εντολή/Αλγόριθμος/Είδος/Πολυώνυμο Γραμμική Πολυπλοκότητα ΓΙΑ Χ ΑΠΟ 1 ΜΕΧΡΙ 5 Υ Χ+2 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Υ Σειριακή Αναζήτηση ( ) Πολυπλοκότητα Ο(n) Μονάδες 3
Α4. Να γραφεί πρόγραμμα το οποίο να ωθεί σε μία στοίβα 50 θέσεων, 50 ονόματα. Έπειτα να δίνεται από τον χρήστη ένα όνομα και να πραγματοποιείται αναζήτηση αυτού του ονόματος στην στοίβα. Αν βρεθεί να εμφανίζεται το μήνυμα «ΒΡΕΘΗΚΕ» και η θέση που βρέθηκε, ενώ αν δεν βρεθεί να εμφανίζεται το μήνυμα «ΔΕΝ ΒΡΕΘΗΚΕ». Παρατηρήσεις: Η στοίβα να υλοποιηθεί με πίνακα 50 θέσεων. Τονίζεται ότι άμεση προσπέλαση στη στοίβα-πίνακα μπορεί να γίνεται μόνο στο στοιχείο της κορυφής της. Αυτό σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί αλγόριθμος αναζήτησης πίνακα και ότι το πρόγραμμα σας πρέπει να στηριχτεί μόνο στις δύο λειτουργίες της στοίβας. Να γράψετε τη Διαδικασία ΩΘΗΣΗ η οποία δέχεται μία στοίβα, έναν αριθμό που δείχνει το πάνω στοιχείο και ένα στοιχείο. Η διαδικασία ωθεί το στοιχείο στη στοίβα και επιστρέφει την νέα στοίβα. Δεν χρειάζεται να γίνεται έλεγχος για υπερχείλιση Να γράψετε τη Διαδικασία ΑΠΩΘΗΣΗ η οποία δέχεται μία στοίβα, έναν αριθμό που δείχνει το πάνω στοιχείο και επιστρέφει το στοιχείο που θα απωθήσει. Στην θέση του στοιχείου που απωθεί να τοποθετεί στην στοίβα το κενό ( ). Δεν χρειάζεται να γίνεται έλεγχος για υποχείλιση. Θεωρείστε ότι όλα τα ονόματα είναι μοναδικά και ότι μόλις βρεθεί το όνομα προς αναζήτηση η διαδικασία θα πρέπει να σταματά. Υπόδειξη: Χρησιμοποιείστε βοηθητική στοίβα (πίνακα), στην οποία θα μπορείτε να ωθείτε στοιχεία τα οποία απωθείτε από την κύρια στοίβα και αντίστροφα να απωθείτε στοιχεία της, που θα τα ωθείτε πίσω στην κύρια στοίβα. Στο τέλος η κύρια στοίβα πρέπει να περιέχει και πάλι τα 50 ονόματα. Α5. Αλγόριθμος ΘΕΜΑ_Α5 2 Σ 0 Κ 20 Διάβασε Χ ΟΣΟ Κ>5 και Χ>0 ΕΠΑΝΑΛΑΒΕ ΑΝ Χ mod 10 = 5 TOTE Σ Σ+Χ ΤΕΛΟΣ_ΑΝ Κ Κ 3 Σ Σ+Κ Διάβασε Χ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Σ Τέλος ΘΕΜΑ_Α5 1. Ποιο είναι το μέγεθος εισόδου του παραπάνω αλγορίθμου. 2. Πότε παρουσιάζεται η χειρότερη περίπτωση του παραπάνω αλγορίθμου. 3. Πόσες πράξεις γίνονται στην χειρότερη περίπτωση.
ΘΕΜΑ Β Β1. Δίνεται το παρακάτω τμήμα αλγορίθμου: Για i από 1 μέχρι 4 Εμφάνισε "*" Για j από 1 μέχρι i Εμφάνισε "+" Για k από 100 μέχρι 200 α. Πόσοι χαρακτήρες "*" εμφανίζονται; (μονάδα 1) β. Πόσοι χαρακτήρες "+" εμφανίζονται; (μονάδες 2) γ. Πόσοι χαρακτήρες "#" εμφανίζονται; (μονάδες 3) Β2. Δίνεται το παρακάτω τμήμα αλγορίθμου: ΑΝ Χ-Α_Μ(Χ)<0.5 ΤΟΤΕ Υ Α_Μ(Χ) ΑΛΛΙΩΣ Υ Α_Μ(Χ)+1 ΤΕΛΟΣ_ΑΝ Να γράψετε συμπληρωμένη την παρακάτω εντολή εκχώρησης, ώστε να έχει το ίδιο αποτέλεσμα με το παραπάνω τμήμα εντολών. Υ Α_Μ( + ) Β3. Δίνεται το παρακάτω τμήμα αλγορίθμου που χρησιμοποιεί ένα μονοδιάστατο πίνακα Α[20]. Ο πίνακας περιέχει άρτιους και περιττούς θετικούς ακεραίους, σε τυχαίες θέσεις. Το τμήμα αλγορίθμου δημιουργεί ένα νέο πίνακα Β[20] στον οποίο υπάρχουν πρώτα οι άρτιοι και μετά ακολουθούν οι περιττοί. Να γράψετε στο τετράδιό σας τον αλγόριθμο συμπληρώνοντας τα κενά: Κ 0 Για i από... μέχρι... Αν Α[i] mod 2 = 0 τότε Κ... Β[...] A[i] Για i από... μέχρι... Αν Α[i] mod 2 =... τότε... Β[...] A[...] 0
ΘΕΜΑ Γ Μία εταιρεία ανάπτυξης λογισμικού σχεδιάζει έναν κειμενογράφο για κινητές συσκευές, με τον οποίο ένας χρήστης μπορεί να γράψει κείμενο μέχρι 500 χαρακτήρες, δίνοντας τη δυνατότητα καταμέτρησης γραμμάτων, λέξεων και προτάσεων. Οι λέξεις του κειμένου χωρίζονται με έναν χαρακτήρα κενό ( ) και οι προτάσεις τελειώνουν με μία τελεία. Θεωρήστε ότι υπάρχει ένα κύριο πρόγραμμα το οποίο καταχωρίζει στον πίνακα Γ[24] τους χαρακτήρες από το Α εώς και το Ω σε αλφαβητική σειρά και καλεί τη διαδικασία «ΚΕΙΜΕΝΟΓΡΑΦΟΣ» που υλοποιεί τον κειμενογράφο. Να γράψετε την διαδικασία «ΚΕΙΜΕΝΟΓΡΑΦΟΣ» η οποία: Γ1. Δέχεται τον πίνακα γραμμάτων Γ. Γ2. Διαβάζει έναν-έναν τους χαρακτήρες που πληκτρολογεί ο χρήστης στον κειμενογράφο. Το τέλος του διαβάσματος πραγματοποιείται, όταν διαβαστεί ο χαρακτήρας θαυμαστικό (!) ή έχουν πληκτρολογηθεί ακριβώς 500 χαρακτήρες (μαζί με το θαυμαστικό). Θεωρήστε ότι ο χρήστης πληκτρολογεί κεφαλαία ελληνικά γράμματα. Θεωρήστε επίσης ότι έχουν γραφεί ολοκληρωμένες προτάσεις, και ότι το θαυμαστικό μπαίνει πάντα μετά από τελεία. Γ3. Εμφανίζει το πλήθος των λέξεων και το πλήθος των προτάσεων του κειμένου. Μονάδες 4 Γ4. Εμφανίζει το πλήθος των λέξεων που έχει η μεγαλύτερη πρόταση του κειμένου. Θεωρήστε ότι η μεγαλύτερη πρόταση είναι μοναδική. Γ5. Εμφανίζει τη συχνότητα εμφάνισης του κάθε χαρακτήρα στον κειμενογράφο, από το Α έως και το Ω, αρχίζοντας από αυτόν με την μεγαλύτερη συχνότητα εμφάνισης. Γ6. Εμφανίζει το μήνυμα «ΠΛΗΡΗΣ», στην περίπτωση που ο κειμενογράφος δεν χωράει άλλους χαρακτήρες, διαφορετικά, υπολογίζει και εμφανίζει πόσους χαρακτήρες μπορεί να πληκτρολογήσει ακόμα ο χρήστης.
ΘΕΜΑ Δ Ένα ηλεκτρονικό κατάστημα καταχωρεί το πλήθος των πωλήσεων των προϊόντων του για κάθε μήνα ενός έτους. Να κατασκευαστεί πρόγραμμα το οποίο: Δ1. Να καταχωρεί στον πίνακα ΚΩΔ[100] τους 100 κωδικούς των προϊόντων κάνοντας έλεγχο να είναι μεταξύ του 1000 και του 1999. Δ2. Να καταχωρεί στον πίνακα ΠΩΛ[100,12] το πλήθος των μηνιαίων πωλήσεων κάθε προϊόντος κάνοντας έλεγχο να μην έχουν αρνητικές τιμές. Δ3. Να υπολογίζει το σύνολο των χρημάτων που εισέπραξε το κατάστημα αν θεωρήσουμε ότι για τους 6 πρώτους μήνες χρεώνει το κάθε προϊόν με 10 ενώ για τους επόμενους έξι μήνες το χρεώνει με 12. Να εμφανίζει τον κωδικό και το σύνολο για κάθε προϊόν. Δ4. Να γίνεται αναζήτηση ενός κωδικού ενός προϊόντος και αν βρεθεί να εμφανίζεται το πλήθος των πωλήσεων για τους μήνες Ιούνιος, Ιούλιος, Αύγουστος. Αν δεν βρεθεί να εμφανίζεται κατάλληλο μήνυμα. 2 Σημείωση: Αν χρησιμοποιηθούν αλγόριθμοι ταξινόμησης και αναζήτησης αυτοί να είναι ο αλγόριθμος ταξινόμησης με επιλογή και ο αλγόριθμος δυαδικής αναζήτησης