ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i Να μετατρέψετε τις ενέργειες που δίνονται παρακάτω σε εντολές της «ΓΛΩΣΣΑΣ» χρησιμοποιώντας αποκλειστικά και μόνο την εντολή εκχώρησης (χωρίς δομή επιλογής ή επανάληψης). 1. Αύξησε το 3ο στοιχείο του πίνακα κατά 30%. 2. Μείωσε το τελευταίο στοιχείο του πίνακα κατά το ήμισυ. 3. Τριπλασίασε το πρώτο στοιχείο του πίνακα. 4. Εκχώρησε στη μεταβλητή ΒΡΕΘΗΚΕ την τιμή ΑΛΗΘΗΣ αν το 6ο στοιχείο του πίνακα είναι θετικός αριθμός αλλιώς την τιμή ΨΕΥΔΗΣ. 5. Εκχώρησε στη λογική μεταβλητή ΒΡΕΘΗΚΕ τιμή διαφορετική από αυτή που έχει. 6. Εκχώρησε στη μεταβλητή i το ακέραιο μέρος του 2ου στοιχείου του πίνακα. ΘΕΜΑ 2 α) Τα παρακάτω τμήματα αλγορίθμων εκτελέστηκαν μια φορά το καθένα και έδωσαν όλα την ίδια έξοδο. Να βρείτε ποια τιμή πληκτρολογήθηκε ως είσοδος κατά την εκτέλεση καθενός από αυτά. A B Γ Δ Αν Ν=28 Τότε Εμφάνισε 32 Αλλιώς Εμφάνισε 10 Τέλος_Αν Σ 1 Για i Από 1 Μέχρι Ν Σ Σ + 1 Τέλος_Επανάληψης Εμφάνισε Σ Σ 1 Για i Από 1 Μέχρι Ν Σ Σ *2*i Τέλος_Επανάληψης Εμφάνισε Σ 16 Σ 22 Για i Από 1 Μέχρι Ν Σ Σ + i Τέλος_Επανάληψης Εμφάνισε Σ β) Να συμπληρωθούν τα κενά έτσι, ώστε το κάθε τμήμα αλγορίθμου, να γεμίζει έναν πίνακα Α με τους αριθμούς 1, 2, 3, 4,...,8. 1. Για Χ από 1 μέχρι 8 Α[ ] Χ 1
Τέλος_επανάληψης 2. Για ι από 8 μέχρι 1 με_βήμα -1 Α[ ] Τέλος_επανάληψης 3. Χ 1 Όσο Χ <= επανάλαβε Α[ ] Χ Χ + 1 Τέλος_επανάληψης 4. Χ 1 Αρχή_επανάληψης Χ Χ + 1 Α[ ] Μέχρις_ότου > 8 ΘΕΜΑ 3 ίνεται ο παρακάτω αλγόριθµος που διαχειρίζεται τα στοιχεία ενός πίνακα Π[5000] µε βαθµούς 1000 µαθητών σε πέντε µαθήµατα για τον καθένα. ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 5000 ΑΝ (Ι MOD 5 = 1) ΚΑΙ (Ι DIV 5 > 0) TOTE ΓΡΑΨΕ Ο ΜΑΘΗΤΗΣ, Ι DIV 5 EXEI ΜΕΣΟ ΟΡΟ, S/5 S Π[Ι] ΑΛΛΙΩΣ S S + Π [Ι] A. Να συµπληρωθούν τα κενά στον παρακάτω αλγόριθµο έτσι ώστε να επιφέρουν το ίδιο αποτέλεσµα µε τον πάνω : ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ. (1) ΜΕ ΒΗΜΑ. (2) ΓΙΑ J ΑΠΌ... (3) ΜΕΧΡΙ.. (4) S S + Π [ ] (5) ΓΡΑΨΕ Ο ΜΑΘΗΤΗΣ, Ι, ΕΧΕΙ ΜΕΣΟ ΟΡΟ S/5 2
ΘΕΜΑ 4 πίνακα Π[50,50]: ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 50 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 50 ΑΝ Ι = J TOTE S S+ Π[Ι,J] Να επιφέρετε το ίδιο αποτέλεσµα χωρίς τη χρήση εµφωλευµένης επανάληψης. ΘΕΜΑ 5 πίνακα Π[50,50]: ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 50 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 50 ΑΝ Ι < J TOTE S S+ Π[Ι,J] Να επιφέρετε το ίδιο αποτέλεσµα µε τον παρακάτω αλγόριθµο αφού συµπληρώσετε κενά. ΓΙΑ I ΑΠΟ ΜΕΧΡΙ ΓΙΑ J ΑΠΟ.. ΜΕΧΡΙ. S S +.. ΘΕΜΑ 6 πίνακα Π[50,50]: ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 50 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 50 ΑΝ Ι > J TOTE S S+ Π[Ι,J] 3
Να επιφέρετε το ίδιο αποτέλεσµα µε τον παρακάτω αλγόριθµο αφού συµπληρώσετε κενά. ΓΙΑ I ΑΠΟ ΜΕΧΡΙ ΓΙΑ J ΑΠΟ.. ΜΕΧΡΙ. S S +.. ΘΕΜΑ 7 πίνακα Π[50,50] κατά στήλη: ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 50 S[ j ] 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50 ΑΝ i > j TOTE S[ j ] S[ j ]+ Π[i,j] Να επιφέρετε το ίδιο αποτέλεσµα µε τον παρακάτω αλγόριθµο αφού συµπληρώσετε κενά. ΓΙΑ i ΑΠΟ ΜΕΧΡΙ S[ i ] 0 ΓΙΑ j ΑΠΟ.. ΜΕΧΡΙ. S[ i ] S[ i ] +.. 4
ΘΕΜΑ 8 ίνεται το παρακάτω πρόγραµµα µε αριθµηµένες ορισµένες γραµµές : ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ8 ΜΕΤΑΒΛΗΤΕΣ 0. ΑΚΕΡΑΙΕΣ : Σ, Ι, Π, Κ1, Κ2, Χ, Λ[.] ΑΡΧΗ 1. Σ 0 2. Π 1 3. Κ1 0 4. Κ2 1 5. ΟΣΟ Σ<=120 ΚΑΙ Π<=120 6. ΙΑΒΑΣΕ Χ 7. ΑΝ Χ>10 ΤΟΤΕ 8. Κ2 Κ2 +1 9. Λ[ ] Χ 10. 11. Σ Σ + Χ 12. ΑΝ Χ<0 ΤΟΤΕ 13. Κ1 Κ1 + 1 14. 15. Π Π + 2 16. 17. ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ. 18. ΓΡΑΨΕ Λ[Ι] 19 20. ΓΡΑΨΕ Σ 21. ΓΡΑΨΕ Π 22. ΓΡΑΨΕ Χ 23. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Απαντήστε στα παρακάτω ερωτήµατα : 1. Ποια µεταβλητή υπολογίζει το πλήθος των αρνητικών αριθµών; 2. Ποια (όχι πόσα) στοιχεία περιλαµβάνει ο πίνακας Λ; 3. Συµπληρώστε το κενό στην εντολή 0 4. Αν στην εντολή 20 εµφανιστεί 100 τι θα εµφανιστεί στην εντολή 21; 5. Ποια είναι η χειρότερη περίπτωση του τµήµατος του αλγόριθµου που περιλαµβάνει την επανάληψη ΌΣΟ (πόσες επαναλήψεις θα γίνουν στην χειρότερη περίπτωση); 6. Πόσες πράξεις συνολικά θα γίνουν µέσα στην ΟΣΟ στη χειρότερη περίπτωση; 7. Στην περίπτωση που γίνουν λιγότερες επαναλήψεις από αυτές της χειρότερης περίπτωσης που απαντήσατε στο ερώτηµα 5 µπορεί να στην εντολή 22 να εµφανιστεί αρνητικός αριθµός ;( απαντήστε µε ΝΑΙ ή ΟΧΙ και αιτιολογήστε) 8. Συµπληρώστε το κενό στην εντολή 17. 5
ΘΕΜΑ 9 Απαντήστε γράφοντας Σ ή Λ αν νοµίζετε πως οι παρακάτω προτάσεις είναι αληθείς ή ψευδείς: 1.Το να υπολογίσω την τάξη ενός αλγόριθµου αποτελεί τον εκ των υστέρων τρόπο µέτρησης της επίδοσης ενός αλγόριθµου. 2.Ένας αλγόριθµος τάξης Ο(n 2 ) είναι αποδοτικότερος από έναν αλγόριθµο τάξης Ο(n 3 ) ανεξάρτητα από τον υπολογιστή που εκτελείται ο καθένας. 3.Ένας αλγόριθµος τάξης Ο(n 2 ) είναι αποδοτικότερος από έναν αλγόριθµο τάξης Ο(n 3 ) ανεξάρτητα από το πρόβληµα που επιλύει ο καθένας. 4.Ένας αλγόριθµος που χρειάζεται το µισό χρόνο εκτέλεσης από έναν άλλο είναι αποδοτικότερος σε κάθε περίπτωση.. 5.Ένας αλγόριθµος που χρειάζεται το µισό χρόνο εκτέλεσης από έναν άλλο είναι αποδοτικότερος ανεξάρτητα από τον υπολογιστή που εκτελείται. 6.Ένας αλγόριθµος που χρειάζεται το µισό χρόνο εκτέλεσης από έναν άλλο είναι αποδοτικότερος ανεξάρτητα από το µέγεθος των δεδοµένων. 7.Ένας αλγόριθµος αναζήτησης τάξης Ο(n) είναι αποδοτικότερος από έναν άλλον αλγόριθµο αναζήτησης τάξης Ο(log 2 n) 8.Ο αλγόριθµος σειριακής αναζήτησης είναι αποδοτικότερος από αυτόν της δυαδικής αναζήτησης. 9.Οι τεχνητές γλώσσες εξελίσοονται γρηγορότερα από τις φυσικές. 10. Τα συντακτικά λάθη επιδιορθώνονται γρήγορα και εύκολα αλλά για τα λογικά λάθη η επιδιόρθωση είναι µια επίπονη διαδικασία 11. Πλεονέκτηµα του διερµηνευτή είναι ότι το πρόγραµµα εκτελείται γρηγορότερα 12. Τα σύγχρονα προγραµµατιστικά περιβάλλοντα χρησιµοποιούν µικτές υλοποιήσεις διερµηνευτή και µεταγλωττιστή 13. Σ' ένα σύγχρονο προγραµµατιστικό περιβάλλον απαιτείται η παρουσία συντάκτη για την συγγραφή του κειµένου των εντολών 14. Για την επιδιόρθωση των λογικών λαθών πολλές φορές ο προγραµµατιστής καλείται να εκτελέσει το πρόγραµµά του επανειληµµένα 15. Σ' ένα σύγχρονο προγραµµατιστικό περιβάλλον µε µεταγλωττιστή η ύπαρξη του συνδέτη είναι προαιρετική 16. Οι βιβλιοθήκες χρησιµεύουν στη διόρθωση των συντακτικών λαθών. 17. Η παράλειψη µιας εντολής Τέλος_Επανάληψης είναι λογικό λάθος 18. Η χρήση της εντολής ΜΟ α + β + γ / 3 αντί της ΜΟ (α + β + γ) / 3 είναι συντακτικό λάθος 19. Τα λογικά λάθη ενός προγράµµατος εµφανίζονται κατά τη µεταγλώττιση 20. Ο εντοπισµός των συντακτικών λαθών σε ένα πρόγραµµα γίνεται από τον µεταγλωττιστή (compiler) 21. Στον δοµηµένο προγραµµατισµό χρησιµοποιούµε: α) την εντολή goto β) µόνο τις βασικές αλγοριθµικές δοµές γ) τις δοµές δεδοµένων δ) τις βασικές αλγοριθµικές δοµές και σπανίως την εντολή goto ΘΕΜΑ 10 Έστω ότι θέλουµε να κάνουµε αναζήτηση σε µη ταξινοµηµένο πίνακα 500 θέσεων. Απαντήστε στα παρακάτω ερωτήµατα µε Σ ή Λ: 1. Μπορώ να κάνω σειριακή αναζήτηση. 2. Μπορώ να κάνω δυαδική αναζήτηση. 3. Αν κάνω πρώτα ταξινόµηση µετά µπορώ να κάνω σειριακή αναζήτηση. 6
4. Αν κάνω πρώτα ταξινόµηση µετά µπορώ να κάνω δυαδική αναζήτηση. 5. Αν κάνω πρώτα ταξινόµηση µετά είναι αποδοτικότερο να κάνω σειριακή αναζήτηση. 6. Αν κάνω πρώτα ταξινόµηση µετά είναι αποδοτικότερο να κάνω δυαδική αναζήτηση. 7. Αν κάνουµε µία µόνο αναζήτηση είναι αποδοτικότερο πρώτα να κάνουµε ταξινόµηση και µετά αναζήτηση. 8. Αν κάνουµε µία µόνο αναζήτηση είναι αποδοτικότερο να κάνουµε κατευθείαν αναζήτηση. 9. Αν κάνουµε συνεχώς αναζητήσεις είναι αποδοτικότερο πρώτα να κάνουµε ταξινόµηση και µετά τις αναζητήσεις. 10. Αν κάνουµε συνεχώς αναζητήσεις είναι αποδοτικότερο να κάνουµε κατευθείαν τις αναζητήσεις. ΘΕΜΑ 11 Έχουµε να κάνουµε µί και µόνο αναζήτηση σε έναν µη ταξινοµηµένο πίνακα 4 θέσεων και οι παρακάτω συνδυασµοί επιλογών: Α) να κάνουµε σειριακή αναζήτηση Β) να κάνουµε ταξινόµηση και µετά δυαδική αναζήτηση. Ποια από τις Α και Β είναι αποδοτικότερη επιλογή. Μετά από πόσες αναζητήσεις γίνεται αποδοτικότερη η άλλη;. 7