55
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΙΝΑΚΕΣ 142 www.mathman.gr [email protected] ΘΕΩΡΙΑ Θ 64. Τι είναι τα “δεδομένα” και πως προκύπτει η πληροφορία; Τα δεδομένα είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η πληροφορία προκύπτει από τη συλλογή και τον συσχετισμό ακατέργαστων δεδομένων. Θ 65. Με τι ασχολείται η Θεωρία Πληροφοριών; Η Θεωρία Πληροφοριών ασχολείται με την μέτρηση, την κωδικοποίηση και την μετάδοση της πληροφορίας. Θ 66. Από ποιες σκοπιές μελετά τα δεδομένα η Πληροφορική; Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές: Υλικού. Το υλικό της μηχανής επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη με διάφορες αναπαραστάσεις όπως τη δυαδική, τον κώδικα ΑSCII κ.α. Γλωσσών προγραμματισμού. Αφού οι γλώσσες προγραμματισμού υψηλού επιπέδου επιτρέπουν τη χρήση διάφορων τύπων μεταβλητών για να περιγράψουν ένα δεδομένο. Δομών Δεδομένων. Καθώς οι δομές δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Παραδείγματα δομών δεδομένων είναι ο πίνακας, η εγγραφή (που μπορεί να περιγράφει ένα είδος, ένα πρόσωπο κλπ. Η εγγραφή αποτελείται από τα πεδία που αποθηκεύουν χαρακτηριστικά διαφορετικού τύπου, όπως για παράδειγμα ο κωδικός, η περιγραφή κλπ. ), το αρχείο (που αποτελείται από ένα σύνολο εγγραφών. Μία επιτρεπτή λειτουργία σε ένα αρχείο είναι η σειριακή προσπέλαση όλων των εγγραφών του) κ.α. Ανάλυσης Δεδομένων. Αφού η Πληροφορική μελετά τους τρόπους καταγραφής και αλληλοσυσχέτισης των δεδομένων ώστε να αναπαραστήσει πραγματικά γεγονότα. Για παράδειγμα, οι τεχνολογίες των Βάσεων Δεδομένων, της Μοντελοποίησης Δεδομένων και της Αναπαράστασης Γνώσης ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων. Θ 67. Τι είναι Δομή Δεδομένων; Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Θ 68. Ποιες είναι οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων; Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes). Οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων είναι: Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του. Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή. Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή. Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα. Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή. Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή. Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης. Κεφάλαιο 3 ο Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 9 ο Πίνακες

AEPP 2013_3_pinakes

  • Upload
    -

  • View
    343

  • Download
    1

Embed Size (px)

DESCRIPTION

Ε;ΕΕ Ε ; ; ΕΔΦΔΦΦ ΦΔ ΔΦ Φ

Citation preview

Page 1: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 142

www.mathman.gr [email protected]

ΘΕΩΡΙΑ Θ 64. Τι είναι τα “δεδομένα” και πως προκύπτει η πληροφορία; Τα δεδομένα είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η πληροφορία προκύπτει από τη συλλογή και τον συσχετισμό ακατέργαστων δεδομένων. Θ 65. Με τι ασχολείται η Θεωρία Πληροφοριών; Η Θεωρία Πληροφοριών ασχολείται με την μέτρηση, την κωδικοποίηση και την μετάδοση της πληροφορίας. Θ 66. Από ποιες σκοπιές μελετά τα δεδομένα η Πληροφορική; Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές:

• Υλικού. Το υλικό της μηχανής επιτρέπει στα δεδομένα ενός προγράμματος να αποθηκεύονται στην κύρια μνήμη με διάφορες αναπαραστάσεις όπως τη δυαδική, τον κώδικα ΑSCII κ.α.

• Γλωσσών προγραμματισμού. Αφού οι γλώσσες προγραμματισμού υψηλού επιπέδου επιτρέπουν τη χρήση διάφορων τύπων μεταβλητών για να περιγράψουν ένα δεδομένο.

• Δομών Δεδομένων. Καθώς οι δομές δεδομένων είναι ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών λειτουργιών επί αυτών. Παραδείγματα δομών δεδομένων είναι ο πίνακας, η εγγραφή (που μπορεί να περιγράφει ένα είδος, ένα πρόσωπο κλπ. Η εγγραφή αποτελείται από τα πεδία που αποθηκεύουν χαρακτηριστικά διαφορετικού τύπου, όπως για παράδειγμα ο κωδικός, η περιγραφή κλπ. ), το αρχείο (που αποτελείται από ένα σύνολο εγγραφών. Μία επιτρεπτή λειτουργία σε ένα αρχείο είναι η σειριακή προσπέλαση όλων των εγγραφών του) κ.α.

• Ανάλυσης Δεδομένων. Αφού η Πληροφορική μελετά τους τρόπους καταγραφής και αλληλοσυσχέτισης των δεδομένων ώστε να αναπαραστήσει πραγματικά γεγονότα. Για παράδειγμα, οι τεχνολογίες των Βάσεων Δεδομένων, της Μοντελοποίησης Δεδομένων και της Αναπαράστασης Γνώσης ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.

Θ 67. Τι είναι Δομή Δεδομένων; Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Θ 68. Ποιες είναι οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων; Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes). Οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων είναι:

• Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του.

• Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή. • Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται

από μία δομή. • Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να

εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα. • Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. • Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής

αντιγράφονται σε μία άλλη δομή. • Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή. • Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.

Κεφάλαιο 3ο – Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 9ο – Πίνακες

Page 2: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 143

www.mathman.gr [email protected]

Θ 69. Ποια είναι η σχέση μεταξύ αλγόριθμων και δομών δεδομένων; Κάθε βασική λειτουργία επί μιας δομής δεδομένων υλοποιείται με μία ή περισσότερες εντολές αλγόριθμου. Η δομή δεδομένων και ο αλγόριθμος θεωρούνται ως μία αδιάσπαστη ενότητα για το πρόγραμμα. Η παρατήρηση αυτή δικαιολογεί την εξίσωση που διατυπώθηκε από τον Wirth

Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Θ 70. Ποια είναι τα χαρακτηριστικά των δυναμικών δομών δεδομένων; Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης. Αυτό έχει σαν αποτέλεσμα οι δομές αυτές να μην έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων να μεταβάλλεται. Θ 71. Ποια είναι τα χαρακτηριστικά των στατικών δομών δεδομένων; Στις στατικές δομές δεδομένων το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος. Επιπλέον, τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Θ 72. Τι ονομάζουμε πίνακα, τι στοιχείο ενός πίνακα και πως αναφερόμαστε σε ένα ατομικό στοιχείο του πίνακα; Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου (δηλαδή ακέραιους, πραγματικούς κλπ), τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία ενός πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. Οι δείκτες παίρνουν πάντα ακέραιες τιμές. Θ 73. Ποιοι πίνακες ονομάζονται μονοδιάστατοι και ποιοι πολυδιάστατοι; Μονοδιάστατοι ονομάζονται οι πίνακες που για την αναφορά των στοιχείων τους χρησιμοποιούν μόνο ένα δείκτη, ενώ πολυδιάστατοι αυτοί που χρησιμοποιούν περισσότερους από ένα δείκτη. Θ 74. Για ποιο λόγο χρησιμοποιούνται οι πίνακες; Οι πίνακες χρησιμοποιούνται επειδή είναι ένας βολικός τρόπος για τη διαχείριση πολλών δεδομένων ίδιου τύπου. Θ 75. Ποια είναι τα μειονεκτήματα της χρήσης των πινάκων;

• Οι πίνακες απαιτούν μνήμη καθώς δεσμεύουν από την αρχή του προγράμματος πολλές θέσεις μνήμης. Αυτό έχει σαν αποτέλεσμα σε ένα μεγάλο και σύνθετο πρόβλημα, η χρήση πολλών και μεγάλων πινάκων να οδηγήσει σε αδυναμία εκτέλεσής του.

• Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος καθώς είναι στατικές δομές και το μέγεθός τους πρέπει να καθορίζεται στην αρχή του προγράμματος, ενώ παραμένει σταθερό κατά την εκτέλεσή του.

Θ 76. Ποιες είναι οι τυπικές επεξεργασίες που μπορούμε να κάνουμε σε έναν πίνακα; Οι τυπικές επεξεργασίες που μπορούμε να κάνουμε σε έναν πίνακα είναι:

• Ο υπολογισμός αθροισμάτων στοιχείων του πίνακα και ο υπολογισμός μέσων όρων. • Η εύρεση του μεγίστου ή του ελαχίστου στοιχείου του πίνακα. • Η ταξινόμηση των στοιχείων του πίνακα. • Η αναζήτηση ενός στοιχείου του πίνακα. • Η συγχώνευση δύο πινάκων (δημιουργία ενός ταξινομημένου πίνακα από τα στοιχεία δύο ή

περισσότερων ταξινομημένων πινάκων). Θ 77. Πότε δεν απαιτείται η χρήση πίνακα; Δεν απαιτείται η χρήση πίνακα αν ισχύει τουλάχιστον μια από τις παρακάτω προϋποθέσεις:

Page 3: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 144

www.mathman.gr [email protected]

• Έχουμε να διαχειριστούμε λίγες μεταβλητές (πχ ένα πρόγραμμα το οποίο διαβάζει 3 αριθμούς, υπολογίζει και εμφανίζει τον μεγαλύτερο)

• Διαβάζουμε πολλά δεδομένα μέσα από μια επανάληψη και κάθε δεδομένο που διαβάζουμε το επεξεργαζόμαστε πριν τελειώσει η επανάληψη και δε το ξαναχρησιμοποιούμε. Χρησιμοποιούμε δηλαδή μία μόνο μεταβλητή και διαβάζοντας μία νέα τιμή, η προηγούμενη τιμή της μεταβλητής χάνεται χωρίς αυτό να μας ενοχλεί (πχ ένα πρόγραμμα το οποίο διαβάζει 100 αριθμούς και εμφανίζει το μέσο όρο τους ή ένα πρόγραμμα το οποίο διαβάζει 100 αριθμούς και εμφανίζει τον μεγαλύτερο)

Θ 78. Πότε απαιτείται η χρήση πίνακα; Η χρήση πίνακα είναι απαραίτητη μόνο όταν διαβάζουμε πολλά δεδομένα μέσα από μια επανάληψη και δεν μπορούμε να τα επεξεργαστούμε πριν τα διαβάσουμε όλα (πχ ένα πρόγραμμα το οποίο διαβάζει 100 αριθμούς και τους εμφανίζει αρχίζοντας από τον τελευταίο, βλέπε Ε 126, ή να εμφανίζει τους 5 μεγαλύτερους). Θ 79. Που και πως δηλώνεται ένας πίνακας στο τμήμα δηλώσεων ενός προγράμματος; Ένας πίνακας δηλώνεται στο τμήμα δηλώσεων ενός προγράμματος:

• (που;) στο τμήμα μεταβλητών και στον τύπο δεδομένων ο οποίος αντιστοιχεί στα δεδομένα που θα αποθηκευτούν στα στοιχεία του

• (πως;) με το όνομά του και το μέγεθός του (θετικοί ακέραιοι, διάφοροι του 0) σε αγκύλες. Πχ ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α[10,12]

ΜΕΘΟΔΟΛΟΓΙΑ Μ 40) Πίνακες Η έννοια του πίνακα στην επιστήμη της πληροφορικής είναι πολύ στενά συνδεδεμένη με τους πίνακες όπως τους γνωρίζουμε από τα μαθηματικά, χωρίς όμως να είναι και ταυτόσημη. Στα πλαίσια του μαθήματος, αντιμετωπίσαμε προβλήματα στα οποία, για παράδειγμα, έπρεπε να βρούμε το μέσο όρο 10 αριθμών (έστω οι βαθμοί των μαθητών μιας τάξης). Όπως φαίνεται στο διπλανό αλγόριθμο, η ανάγνωση των 10 αριθμών γίνεται με τη χρήση μιας μόνο μεταβλητής x, η οποία σε κάθε εκτέλεση του βρόχου λαμβάνει μια τιμή χάνοντας την προηγούμενη που είχε στην μνήμη. Το πρόβλημα υπολογισμού του μέσου όρου λύνεται τελικά με επιτυχία χάριν στην μεταβλητή s της οποίας η τιμή αυξάνεται αθροίζοντας σε κάθε επανάληψη την τιμή της μεταβλητής x. Ανάλογη λύση δίνεται στο διπλανό αλγόριθμο για την εύρεση μέγιστης τιμής μεταξύ 10 αριθμών (πχ βαθμών). Δεν είναι, όμως, όλα τα προβλήματα τόσο απλά ώστε η χρήση μόνο μίας μεταβλητής να είναι αρκετή. Αν για παράδειγμα θέλουμε να βρεθούν οι 3 μεγαλύτερες τιμές από ένα σύνολο 10 αριθμών και πολύ περισσότερο η θέση στην οποία παρατηρείται η καθεμιά (πχ τα ονόματα των τριών μαθητών με τους μεγαλύτερους βαθμούς), θα ήταν προτιμότερο να χρησιμοποιήσουμε ισάριθμες μεταβλητές (δηλαδή 10), να τις ταξινομήσουμε σε αύξουσα σειρά και να εμφανίσουμε τις τρεις τελευταίες από αυτές.

Αλγόριθμος Αριθμοί s 0 Για i από 1 μέχρι 10 Διάβασε x s s + x Τέλος_επανάληψης MO s/10 Εμφάνισε s, MO Τέλος Αριθμοί

Αλγόριθμος Μέγιστο Διάβασε x max x Για i από 2 μέχρι 10 Διάβασε x Αν x > max τότε max x Τέλος_αν Τέλος_επανάληψης Εμφάνισε max Τέλος Μέγιστο

Page 4: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 145

www.mathman.gr [email protected]

Ανάλογα, ο αλγόριθμος ο οποίος θα διαβάζει 100 ακέραιους αριθμούς και θα τους εμφανίζει ανάποδα από τη σειρά που διαβάστηκαν δεν μπορεί να υλοποιηθεί με μία μόνο μεταβλητή x, αφού όταν θα έχει διαβαστεί και ο 100ος αριθμός και τον εμφανίσουμε, όλοι οι υπόλοιποι που είχαν διαβαστεί (99ος, 98ος

ΜΕΘΟΔΟΛΟΓΙΑ

… ) δεν υπάρχουν πλέον στην μνήμη (ήταν προηγούμενες τιμές της x). Επίσης, ένα σχετικό πρόβλημα που αντιμετωπίσαμε στην Μ …… ήταν ότι τα δεδομένα έπρεπε να εισαχθούν από τον χρήστη για δεύτερη φορά κατά την εκτέλεση του αλγορίθμου. Με χρήση πινάκων, τα δεδομένα είναι διαθέσιμα στην μνήμη για περαιτέρω επεξεργασία μέχρι και το τέλος του αλγορίθμου. Ο πίνακας λοιπόν σαν μια δομή δεδομένων, είναι ένας τρόπος (“τέχνασμα”) να αποθηκεύουμε, να βρίσκουμε και να επεξεργαζόμαστε πολλές τιμές (τις τιμές πολλών μεταβλητών) ταυτόχρονα και αποτελεσματικά. Κάθε μία θέση ενός πίνακα αντιστοιχεί σε μια μεταβλητή. Ο πίνακας έχει ένα συμβολικό όνομα (πχ Α) το οποίο ακολουθούμενο από την τιμή ενός ή περισσοτέρων δεικτών σε αγκύλες παραπέμπει σε μια συγκεκριμένη θέση του (πχ Α[3], Α[2, 1]). Ο πίνακας είναι μια στατική δομή δεδομένων (προκαθορισμένο μέγεθος) και τα στοιχεία του πρέπει να είναι του ίδιου τύπου (πχ μόνο ακέραιοι). Για αυτούς, αλλά και για άλλους λόγους η χρήση πινάκων δεν είναι η πιο ιδανική λύση στην ανάπτυξη σύγχρονων εφαρμογών, βάσει των πραγματικών απαιτήσεων ενός σύνθετου επαγγελματικού προβλήματος. Επειδή όμως αποτελούν τον θεμέλιο λίθο των υπολοίπων δομών δεδομένων και είναι ευκολότερη η κατανόησή και υλοποίησή τους, έχουν καθιερωθεί από εκπαιδευτικής απόψεως σε όλα τα εισαγωγικά μαθήματα δομών δεδομένων και γλωσσών προγραμματισμού. Ακολουθούν τμήματα αλγορίθμων που χρησιμοποιούμε στους πίνακες. Για να είναι πιο σύντομη και κατανοητή η παρουσίαση τους, δίνεται έμφαση μόνο στο τμήμα εκείνο του αλγορίθμου που επιτελεί την συγκεκριμένη λειτουργία στον πίνακα (πχ αναζήτηση, ταξινόμηση). Στις ασκήσεις ο αλγόριθμος πρέπει να είναι πλήρης.

Μ 41) Μονοδιάστατοι πίνακες (α) Προσοχή: Οι δείκτες ενός πίνακα είναι πάντα ακέραιοι. 1. Εισαγωγή στοιχείων σε πίνακα: Μονοδιάστατος πίνακας Α (n θέσεων) Δεδομένα // n // Για i από 1 μέχρι n Διάβασε Α[i] Τέλος_επανάληψης ΠΡΟΣΟΧΗ: Όταν γράφουμε ΠΡΟΓΡΑΜΜΑ, το μέγεθος του πίνακα δηλώνεται στο τμήμα δήλωσης μεταβλητών και σταθερών, άρα καθορίζεται κατά τον προγραμματισμό και όχι κατά την εκτέλεση. Σε καμία περίπτωση δεν εισάγεται από τον χρήστη κατά την εκτέλεση!

1. Ισοδύναμο τμήμα αλγορίθμου (ΜΟΝΟ σε ΨΕΥΔΟΚΩΔΙΚΑ) είναι η εντολή Δεδομένα // Α, n //, αλλά την χρησιμοποιούμε συνήθως όταν η εκφώνηση λέει «Δίνεται πίνακας … » .

ΠΡΟΓΡΑΜΜΑ Ασκ_ ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[30], x ………

ΠΡΟΓΡΑΜΜΑ Ασκ_ ΣΤΑΘΕΡΕΣ Ν = 30 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Α[N], x

7 3 2 5 3

A A[1] A[2] A[3] A[4] A[5]

Page 5: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 146

www.mathman.gr [email protected]

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

K 144) Να μετατραπεί το ακόλουθο τμήμα αλγορίθμου σε πρόγραμμα: Αλγόριθμος K Για i από 1 μέχρι 90 Αρχή_επανάληψης Διάβασε Φ[i] Μέχρις_ότου Φ[i] = “Α” ή Φ[i] = “Κ” Τέλος_επανάληψης πλήθος 0 Για i από 1 μέχρι 90 Αν Φ[i] = “Α” τότε πλήθος πλήθος + 1 Τέλος_αν Τέλος_επανάληψης ποσ πλήθος*100/90 Εμφάνισε “ΑΓΟΡΙΑ”, ποσ Τέλος K K 145) Να γράψετε στο τετράδιό σας τους αριθμούς 1,2,3,4 της Στήλης Α και δίπλα ένα από τα γράμματα α, β, γ, δ, ε, στ της Στήλης Β που αντιστοιχεί στον σωστό ορισμό.

Στήλη Α Στήλη Β

1. Προσθήκη νέων κόμβων σε μία υπάρχουσα δομή. α. Προσπέλαση β. Αντιγραφή γ. Διαγραφή δ. Αναζήτηση ε. Εισαγωγή στ. Ταξινόμηση

2. Οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά. 3. Πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του.

4. Όλοι οι κόμβοι ή μερικοί από τους κόμβους μιας δομής αντιγράφονται σε μία άλλη δομή. ΣΗΜΕΙΩΣΗ: Δύο (2) στοιχεία της Στήλης Β δεν χρησιμοποιούνται.

(ΕΠΑΝ 2008)

ΜΕΘΟΔΟΛΟΓΙΑ Μ 42) Μονοδιάστατοι πίνακες (β) Εμφάνιση στοιχείων από πίνακα: Μονοδιάστατος πίνακας Α (n θέσεων) το n είναι γνωστό από την εισαγωγή στοιχείων (σε ψευδοκώδικα) Για i από 1 μέχρι n Εμφάνισε Α[i] Τέλος_επανάληψης

Ισοδύναμο τμήμα αλγορίθμου (ΜΟΝΟ σε ΨΕΥΔΟΚΩΔΙΚΑ) είναι η εντολή Αποτελέσματα // Α, n //, αλλά σπάνια χρειάζεται στη λύση ασκήσεων.

Page 6: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 147

www.mathman.gr [email protected]

i A[i] sum MO 0 1 7 7 2 3 10 3 2 12 4 5 17 5 3 20 4 6

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Ε 131) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει 100 ακέραιους αριθμούς και θα τους εμφανίζει ανάποδα από τη σειρά που διαβάστηκαν. Ε 132) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει τα στοιχεία ενός μονοδιάστατου πίνακα Α[100] και θα εμφανίζει το διπλάσιο όλων των στοιχείων του. Ε 133) Να γραφεί αλγόριθμος ο οποίος θα καταχωρεί 100 ακέραιους αριθμούς σε έναν μονοδιάστατο πίνακα και θα εμφανίζει το διπλάσιο όλων των στοιχείων, αλλά ανάποδα από τη σειρά που εισήχθησαν. Ε 134) Να γραφεί αλγόριθμος ο οποίος θα δημιουργεί έναν πίνακα 100 θέσεων στον οποίο τα στοιχεία που βρίσκονται σε περιττή θέση του θα έχουν την τιμή 1 και τα στοιχεία που βρίσκονται σε άρτια θέση την τιμή 0. Ε 135) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα B[50], θα υπολογίζει και θα εμφανίζει πόσα στοιχεία είναι περιττά και πόσα άρτια.

ΜΕΘΟΔΟΛΟΓΙΑ Μ 43) Μονοδιάστατοι πίνακες (γ) Εύρεση αθροίσματος και μέσου όρου όλων των στοιχείων του πίνακα: Μονοδιάστατος πίνακας Α (n θέσεων) Δεδομένα // Α, n // sum 0 Για i από 1 μέχρι n sum sum + A[i] Τέλος_επανάληψης MO sum/n Παρατηρήσεις: Παρόμοια περίπτωση με τον υπολογισμό μέσου όρου γνωστού πλήθους αριθμών με χρήση μιας μεταβλητής (βλέπε Μ 28).

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 136) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 1000 θέσεων, θα υπολογίζει και θα εμφανίζει το άθροισμα των στοιχείων του. Ε 137) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 50 θέσεων, θα υπολογίζει και θα εμφανίζει τον μέσο όρο των στοιχείων του. Ε 138) Μια εταιρεία διαθέτει τη λίστα με τα ονόματα των 20 υπαλλήλων της και τις συνολικές ώρες που εργάσθηκαν τον τελευταίο μήνα. Να γραφεί αλγόριθμος ο οποίος θα: α) διαβάσει τα δεδομένα και να τα αποθηκεύσει σε 2 παράλληλους πίνακες, β) υπολογίσει και να εμφανίσει το συνολικό χρηματικό ποσό που χρειάζεται για την μισθοδοσία όλων των υπαλλήλων (ωριαία αποζημίωση 12 €).

7 3 2 5 3

A

+ Δεδομένα // n //

sum 0 Για i από 1 μέχρι n Διάβασε Α[i] sum sum + A[i] Τέλος_επανάληψης MO sum/n

Page 7: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 148

www.mathman.gr [email protected]

γ) εμφανίσει το όνομα του 4ου υπαλλήλου, τις ώρες εργασίας του και τον μισθό του. Ε 138) Να χρησιμοποιηθεί η κατάλληλη δομή δεδομένων για να αποθηκεύει τους βαθμούς 30 μαθητών στο μάθημα της πληροφορικής και να υπολογίζει τον μέσο όρο των βαθμών καθώς και το πλήθος των μαθητών που έχουν βαθμό μεγαλύτερο από 18. Ε 139) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει τα ονόματα και τους βαθμούς 30 μαθητών, και θα εμφανίζει τα ονόματα των μαθητών που ο βαθμός τους είναι μεγαλύτερος από το μέσο όρο των βαθμών της τάξης. Ε 140) Ένας όμιλος πώλησης αυτοκινήτων καταχωρεί σε πίνακα 100 θέσεων τις τιμές των μοντέλων αυτοκινήτων που διακινεί και σε δεύτερο πίνακα την ονομασία κάθε μοντέλου αυτοκινήτου. Να γραφεί αλγόριθμος ο οποίος θα: α) διαβάζει τους πίνακες, β) δημιουργεί νέο πίνακα που θα περιέχει σε κάθε θέση του μια από τις λέξεις “Φθηνό”, “Κανονικό”, “Ακριβό” ανάλογα με το αν η τιμή του αντίστοιχου μοντέλου αυτοκινήτου είναι μικρότερη από 15000 €, μεταξύ 15001 και 25000 € ή μεγαλύτερη ή ίση από 25001 €, γ) υπολογίζει και εμφανίζει το ποσοστό των ακριβών αυτοκινήτων, δ) υπολογίζει και εμφανίζει το μέσο όρο πώλησης των φθηνών αυτοκινήτων. Ε 141) Οι εκατό (100) υπάλληλοι μιας εταιρείας εργάζονται 40 ώρες την εβδομάδα. Κάθε ώρα υπερωρίας αμείβεται με 5 € (ευρώ). Να γράψετε αλγόριθμο ο οποίος:

Α. Για καθένα από τους υπαλλήλους της εταιρείας

α. διαβάζει το όνομά του και για κάθε μέρα από τις πέντε (5) εργάσιμες της εβδομάδας διαβάζει τις ώρες εργασίας του.

β. υπολογίζει τις εβδομαδιαίες ώρες εργασίας του. γ. εάν έχει εργαστεί περισσότερο από 40 ώρες την εβδομάδα, εμφανίζει το όνομά του και υπολογίζει

και εμφανίζει την αμοιβή του για τις υπερωρίες του. Β. Υπολογίζει και εμφανίζει, στο τέλος, το πλήθος των υπαλλήλων που έχουν εργαστεί λιγότερο από 40

ώρες την εβδομάδα.

(ΕΣΠ 2006)

Page 8: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 149

www.mathman.gr [email protected]

i A[i] A[i]< min min Οθόνη 7 2

2 4 αληθής 4 3 2 αληθής 2 4 8 ψευδής 5 2 ψευδής 6

Αλγόριθμος Ελάχιστο_ Πίνακα Δεδομένα // Α, n // min Α[1] ! θέση_min 1 Για i από 2 μέχρι n Αν Α[i] < min τότε min Α[i] ! θέση_min i Τέλος_αν Τέλος_επανάληψης Εμφάνισε min ! , θέση_min Τέλος Ελάχιστο_Πίνακα

ΜΕΘΟΔΟΛΟΓΙΑ M 44) Εύρεση ελάχιστου στοιχείου πίνακα (ομοίως για μέγιστο):

Παρατηρήσεις: Ισχύουν όλα όσα αναφέρθηκαν στην εύρεση ελαχίστου χωρίς χρήση πινάκων (βλέπε Μ 31). Η μόνη αξιοσημείωτη διαφορά επισημαίνεται στο γεγονός ότι η είσοδος των δεδομένων γίνεται μόνο στην αρχή (Διάβασε A[i]) όπου τα δεδομένα αποθηκεύονται και είναι διαθέσιμα για επεξεργασία ανά πάσα στιγμή, χωρίς να απαιτείται η εισαγωγή τους άλλη φορά.

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 142) Να γραφεί αλγόριθμος ο οποίος θα: α) καταχωρεί σε δύο μονοδιάστατους πίνακες 1000 θέσεων τα ονόματα και τις αντίστοιχες τιμές των προϊόντων που διαθέτει ένα σούπερ μάρκετ β) διαβάζει το πλήθος των διαφορετικών προϊόντων που αγοράζει ένας πελάτης, την ονομασία και την ποσότητα του καθενός γ) να βρίσκει τα προϊόντα στον πίνακα με τα ονόματα, και να υπολογίζει και εμφανίζει το συνολικό χρηματικό ποσό που πρέπει να πληρώσει. Ε 143) Να γραφεί αλγόριθμος ο οποίος θα δέχεται μια πρόταση το πολύ 100 χαρακτήρων και θα εμφανίζει τον αριθμό των λέξεων από τις οποίες αποτελείται. Ο κενός χαρακτήρας χωρίζει τις λέξεις και η τελεία δηλώνει το τέλος της πρότασης αν δεν έχουν εξαντληθεί οι θέσεις του πίνακα. Ε 144) Να γραφεί αλγόριθμος ο οποίος θα καταχωρεί n ακέραιους αριθμούς σε μονοδιάστατο πίνακα, θα υπολογίζει και θα εμφανίζει το ελάχιστο στοιχείο και την (πρώτη) θέση στην οποία παρατηρείται. Ε 145) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει τις θερμοκρασίες 30 ημερών, θα τις καταχωρεί σε έναν πίνακα, θα υπολογίζει και θα εμφανίζει την μέγιστη θερμοκρασία, καθώς και την ημέρα που παρατηρήθηκε. Ε 146) Δίνονται η έκταση, ο πληθυσμός και το όνομα καθεμιάς από τις 15 χώρες της Ευρωπαϊκής Ένωσης. Να αναπτύξετε αλγόριθμο που

α) θα διαβάζει τα παραπάνω δεδομένα,

7 4 2 8 2

A

Για i από 1 μέχρι n Αν A[i] = min τότε Εμφάνισε i Τέλος_αν Τέλος_επανάληψης

Δεδομένα // n // Για i από 1 μέχρι n Διάβασε A[i] Τέλος_επανάληψης

Page 9: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 150

www.mathman.gr [email protected]

β) θα εμφανίζει τη χώρα με τη μεγαλύτερη έκταση, γ) θα εμφανίζει τη χώρα με το μικρότερο πληθυσμό και δ) θα εμφανίζει το μέσο όρο του πληθυσμού των 15 χωρών της Ευρωπαϊκής Ένωσης.

(ΕΣΠ 2002) Ε 147) Να γραφεί αλγόριθμος ο οποίος θα καταχωρεί n ακέραιους αριθμούς σε μονοδιάστατο πίνακα, θα υπολογίζει και θα εμφανίζει το μέγιστο στοιχείο καθώς και τη θέση (ή τις θέσεις) στην οποία παρατηρείται. Ε 148) Σε μία κατασκήνωση υπάρχουν 300 παιδιά και καθένα από αυτά έχει μοναδικό αριθμό από το 1 έως και το 300 που του αντιστοιχεί. Για κάθε παιδί είναι γνωστή η ηλικία του. Να χρησιμοποιηθεί η δομή του πίνακα για να αποθηκεύονται οι ηλικίες των παιδιών και να βρεθεί ο κατάλληλος αλγόριθμος υπολογισμού του μικρότερου και του μεγαλύτερου σε ηλικία παιδιού και να εκτυπώνεται τόσο η ηλικία όσο και ο κωδικός του μικρότερου και του μεγαλύτερου παιδιού. (ΔΤ1_3) Ε 149) Σε μια διαδρομή τρένου υπάρχουν 20 σταθμοί (σε αυτούς περιλαμβάνονται η αφετηρία και ο τερματικός σταθμός). Το τρένο σταματά σε όλους τους σταθμούς. Σε κάθε σταθμό επιβιβάζονται και αποβιβάζονται επιβάτες. Οι πρώτοι επιβάτες επιβιβάζονται στην αφετηρία και στον τερματικό σταθμό αποβιβάζονται όλοι οι επιβάτες. Να κατασκευάσετε αλγόριθμο, ο οποίος να διαχειρίζεται την κίνηση των επιβατών. Συγκεκριμένα: Α. Να ζητάει από το χρήστη τον αριθμό των ατόμων που επιβιβάστηκαν σε κάθε σταθμό, εκτός από τον τερματικό, και να τον εισάγει σε πίνακα ΕΠΙΒ[19]. Β. Να εισάγει σε πίνακα ΑΠΟΒ[19] τον αριθμό των ατόμων που αποβιβάστηκαν σε κάθε σταθμό, εκτός από τον τερματικό, ως εξής: Για την αφετηρία να εισάγει την τιμή μηδέν (0) και για τους υπόλοιπους σταθμούς να ζητάει από τον χρήστη τον αριθμό των ατόμων που αποβιβάστηκαν. Γ. Να δημιουργεί πίνακα ΑΕ[19], στον οποίο να καταχωρίζει τον αριθμό των επιβατών που βρίσκονται στο τρένο, μετά από κάθε αναχώρησή του. Δ. Να βρίσκει και να εμφανίζει τον σταθμό από τον οποίο το τρένο αναχωρεί με τον μεγαλύτερο αριθμό επιβατών. (Να θεωρήσετε ότι από κάθε σταθμό το τρένο αναχωρεί με διαφορετικό αριθμό επιβατών).

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2009)

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ K 146) Έστω πρόβλημα που αναφέρει: «...Να κατασκευάσετε αλγόριθμο που θα ζητάει τις ηλικίες 100 ανθρώπων και να εμφανίζει το μέσο όρο ηλικίας τους...». Δίνονται οι παρακάτω προτάσεις. Για κάθε μία πρόταση να γράψετε στο τετράδιό σας το αντίστοιχο γράμμα και δίπλα τη λέξη ΣΩΣΤΟ ή ΛΑΘΟΣ, αν θεωρείτε ότι η πρόταση είναι σωστή ή λανθασμένη αντίστοιχα. α. Πρέπει να χρησιμοποιηθεί πίνακας. β. Είναι δυνατόν να χρησιμοποιηθεί πίνακας. γ. Είναι δυνατόν να χρησιμοποιηθεί η εντολή Όσο. δ. Είναι δυνατόν να χρησιμοποιηθεί η εντολή Για. ε. Η εντολή Για είναι η καταλληλότερη.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2009)

Page 10: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 151

www.mathman.gr [email protected]

K 147) Δίνεται ο μονοδιάστατος πίνακας C με έξι στοιχεία που έχουν αντίστοιχα τις παρακάτω τιμές: 2, 5, 15, -1, 32, 14

και το παρακάτω τμήμα αλγορίθμου: min 100 max -100 Για i από 1 μέχρι 6 με_βήμα 2 A C[i] B C[i+1] Αν A < B τότε Lmin A Lmax B αλλιώς Lmin B Lmax A Τέλος_αν Αν Lmin < min τότε min Lmin Τέλος_αν Αν Lmax > max τότε max Lmax Τέλος_αν Εκτύπωσε Α, Β, Lmin, Lmax, min, max Τέλος_επανάληψης D max*min Εκτύπωσε D Να εκτελέσετε το παραπάνω τμήμα αλγορίθμου και να γράψετε στο τετράδιό σας: α. Τις τιμές των μεταβλητών A, B, Lmin, Lmax, min και max, όπως και αυτές που εκτυπώνονται σε κάθε επανάληψη. β. Την τιμή της μεταβλητής D που εκτυπώνεται.

(Πανελλήνιες Εξετάσεις 2004) K 148) Δίνεται μονοδιάστατος πίνακας Α, 10 θέσεων, ο οποίος στις θέσεις 1 έως 10 περιέχει αντίστοιχα τους αριθμούς : 3, 8, 5, 9, 2, 4, 1, 6, 0, 7. Δίνεται επίσης το ακόλουθο τμήμα αλγορίθμου: κ 10 Για i από 2 μέχρι 5 κ κ – 2 Α[i-1] Α[κ+i-3] Εμφάνισε i, κ, Α[i+1], Α[κ-1] Τέλος_επανάληψης Ποιες τιμές εμφανίζονται καθώς εκτελείται το παραπάνω τμήμα αλγορίθμου;

Page 11: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 152

www.mathman.gr [email protected]

K 149) Δίνεται μονοδιάστατος πίνακας Α, 10 θέσεων, ο οποίος στις θέσεις 1 έως 10 περιέχει αντίστοιχα τους αριθμούς : 15, 3, 0, 5, 16, 2, 17, 8, 19, 1. Δίνεται επίσης το ακόλουθο τμήμα αλγορίθμου: Για i από 1 μέχρι 9 με_βήμα 2 κ ((i+10) mod 10) + 1 Α[i] Α[κ] Εμφάνισε i, κ, Α[i], Α[κ] Τέλος_επανάληψης Ποιες τιμές εμφανίζονται καθώς εκτελείται το παραπάνω τμήμα αλγορίθμου; (ΕΠΑΝ 2002) Κ 150) Δίνεται το παρακάτω τμήμα αλγορίθμου: Για i από 2 μέχρι 3 Για j από 7 μέχρι i με_βήμα -1 Αν Α[j-1] < A[j] τότε A[j] Α[j]/2 αλλιώς A[j] -A[j] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αν ο πίνακας Α έχει τα περιεχόμενα :

50 110 20 40 120 80 60 ποια θα είναι τα περιεχόμενα του πίνακα A μετά την εκτέλεση του παραπάνω τμήματος αλγορίθμου ; K 151) Δίνεται το παρακάτω τμήμα αλγορίθμου με αριθμημένες εντολές για εύκολη αναφορά σε αυτές. Κάθε εντολή περιέχει ένα ή δύο κενά (σημειωμένα με …), που το καθένα αντιστοιχεί σε μία σταθερά ή μία μεταβλητή ή έναν τελεστή. Επίσης δίνεται πίνακας όπου κάθε γραμμή αντιστοιχεί στη διπλανή εντολή του τμήματος αλγορίθμου και κάθε στήλη σε μία θέση μνήμης (μεταβλητή). Η κάθε γραμμή του πίνακα παρουσιάζει το αποτέλεσμα που έχει η εκτέλεση της αντίστοιχης εντολής στη μνήμη: συγκεκριμένα, δείχνει την τιμή της μεταβλητής την οποία επηρεάζει η εντολή.

Page 12: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 153

www.mathman.gr [email protected]

Να γράψετε στο τετράδιό σας τον αριθμό της καθεμιάς εντολής και δίπλα να σημειώσετε τη σταθερά, τη μεταβλητή, ή τον τελεστή που πρέπει να αντικαταστήσει το κάθε κενό της εντολής ώστε να έχει το αποτέλεσμα που δίνεται στον πίνακα, ως εξής: Α. Για τις εντολές 1 και 2, να σημειώσετε σταθερές τιμές. Β. Για τις εντολές 3,7,10 και 11, να σημειώσετε τελεστές, και για τις υπόλοιπες, να σημειώσετε μεταβλητές.

(ΕΠΑΝ 2007)

Κ 152) Δίνεται το παρακάτω τμήμα αλγορίθμου: ΜΑΧ ← Α[1] ΜΙΝ ← Α[1] ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΑΝ Α[i] < ΜΙΝ ΤΟΤΕ ΜΙΝ ← Α[i] ΑΛΛΙΩΣ ΑΝ Α[i] > MAX TOTE ΜΑΧ ← Α[i] ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΕΜΦΑΝΙΣΕ

ΜΙΝ, ΜΑΧ Να μετατρέψετε το παραπάνω τμήμα αλγορίθμου σε ισοδύναμο με χρήση της δομής επανάληψης ΟΣΟ ... ΕΠΑΝΑΛΑΒΕ.

(ΕΣΠ 2008)

Page 13: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 154

www.mathman.gr [email protected]

Κ 153) Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Χ, Ζ[15] ΠΡΑΓΜΑΤΙΚΕΣ: Ω Να μετατρέψετε τις ενέργειες που δίνονται παρακάτω σε εντολές της «ΓΛΩΣΣΑΣ»: α. Εκχώρησε την τιμή -3 στη μεταβλητή Χ. β. Εκχώρησε την τιμή της μεταβλητής Χ στις πρώτες πέντε θέσεις του πίνακα Ζ. γ. Εμφάνισε τις τιμές των δύο πρώτων θέσεων του πίνακα Ζ. δ. Εκχώρησε στη μεταβλητή Ω τον μέσο όρο των τιμών των δύο τελευταίων θέσεων του πίνακα Ζ. ε. Αν 1 ≤ Χ ≤ 15 εμφάνισε την τιμή της θέσης Χ του πίνακα Ζ.

(ΕΠΑΝ 2009)

ΜΕΘΟΔΟΛΟΓΙΑ Μ 45) Δισδιάστατοι πίνακες (α) Σε δισδιάστατο πίνακα, ο πρώτος δείκτης αναφέρεται πάντα στις γραμμές και ο δεύτερος στις στήλες. Συνηθίζουμε να γράφουμε Α[i,j], δηλαδή να μετράμε τις γραμμές με το i και τις στήλες με το j, χωρίς αυτό να σημαίνει ότι τα ονόματα των μεταβλητών δεν μπορούν να χρησιμοποιηθούν και αντίστροφα. Συνηθίζουμε επίσης να μετράμε στον εξωτερικό βρόχο τις γραμμές (m) και στον εσωτερικό τις στήλες (n). Συνεπώς η προσπέλαση των στοιχείων του πίνακα ξεκινά από το πρώτο αριστερά (j=1) στην πρώτη γραμμή (i=1) και συνεχίζει με φορά προς τα δεξιά. Όταν το j πάρει την τιμή n για πρώτη φορά, ο εσωτερικός βρόχος τερματίζεται και στον εξωτερικό το i γίνεται 2, δηλαδή “κατεβαίνουμε” στη δεύτερη γραμμή κοκ. 1. Εισαγωγή στοιχείων σε πίνακα: Δισδιάστατος πίνακας Α (mxn θέσεων) Δεδομένα // m, n // Για i από 1 μέχρι m Για j από 1 μέχρι n Διάβασε Α[i,j] Τέλος_επανάληψης Τέλος_επανάληψης 2. Εμφάνιση στοιχείων από πίνακα: Δισδιάστατος πίνακας Α (mxn θέσεων) τα m, n είναι γνωστά από την εισαγωγή στοιχείων (σε ψευδοκώδικα) Για i από 1 μέχρι m Για j από 1 μέχρι n Εμφάνισε Α[i,j] Τέλος_επανάληψης Τέλος_επανάληψης

Ισοδύναμο τμήμα αλγορίθμου είναι η εντολή Αποτελέσματα // Α //, αλλά σπάνια χρειάζεται στη λύση ασκήσεων.

Ισοδύναμο τμήμα αλγορίθμου (ΜΟΝΟ σε ΨΕΥΔΟΚΩΔΙΚΑ) είναι η εντολή Δεδομένα // Α, m, n //, αλλά την χρησιμοποιούμε συνήθως όταν η εκφώνηση λέει «Δίνεται πίνακας … » .

2 4 3 0 1 0 2 0 1 2 1 3 3 8 0

A

Page 14: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 155

www.mathman.gr [email protected]

i j A[i,j] sum MO 0 1 1 2 2 1 2 4 6 1 3 3 9 1 4 0 9 1 5 1 10 2 1 0 10 2 2 2 12 2 3 0 12 2 4 1 13 2 5 2 15 3 1 1 16 3 2 3 19 3 3 3 22 3 4 8 30 3 5 0 30 2

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Ε 150) Να γραφεί αλγόριθμος ο οποίος θα δέχεται τα στοιχεία δύο πινάκων 4 γραμμών και 3 στηλών και θα υπολογίζει και θα εμφανίζει έναν καινούριο πίνακα με στοιχεία το άθροισμα των στοιχείων των δύο πινάκων. Ε 151) Να γραφεί αλγόριθμος ο οποίος θα δέχεται τα στοιχεία δύο πινάκων 10 γραμμών και 12 στηλών και θα υπολογίζει έναν καινούριο πίνακα με στοιχεία τη διαφορά των στοιχείων των δύο πινάκων. Ε 152) Να γραφεί αλγόριθμος ο οποίος θα δέχεται τα στοιχεία δύο πινάκων 6 γραμμών και 5 στηλών και θα υπολογίζει έναν καινούριο πίνακα με στοιχεία το γινόμενο των στοιχείων των δύο πινάκων. Ε 153) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει ένα πίνακα 10x7 εμφανίζει την 5η στήλη και κατόπιν την 8η

ΜΕΘΟΔΟΛΟΓΙΑ Μ 46) Δισδιάστατοι πίνακες (β) 1. Εύρεση αθροίσματος και μέσου όρου όλων των στοιχείων του πίνακα:

γραμμή αυτού του πίνακα.

Δισδιάστατος πίνακας Α (mxn θέσεων) τα m, n είναι γνωστά από την εισαγωγή στοιχείων (σε ψευδοκώδικα) Δεδομένα // Α, m, n // sum 0 Για i από 1 μέχρι m Για j από 1 μέχρι n sum sum + A[i,j] Τέλος_επανάληψης Τέλος_επανάληψης MO sum/(m*n)

2 4 3 0 1 0 2 0 1 2 1 3 3 8 0

A

+

Page 15: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 156

www.mathman.gr [email protected]

2. Εύρεση αθροίσματος και μέσου όρου του πίνακα κατά γραμμές: Δισδιάστατος πίνακας Α (mxn θέσεων) τα m, n είναι γνωστά από την εισαγωγή στοιχείων (σε ψευδοκώδικα) Για i από 1 μέχρι m row[i] 0 Τέλος_επανάληψης Για i από 1 μέχρι m Για j από 1 μέχρι n row[i] row[i] + A[i,j] Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι m MOrow[i] row[i]/n Τέλος_επανάληψης

Για i από 1 μέχρι m row[i] 0 Για j από 1 μέχρι n row[i] row[i] + A[i,j] Τέλος_επανάληψης MOrow[i] row[i]/n Τέλος_επανάληψης

3. Εύρεση αθροίσματος και μέσου όρου του πίνακα κατά στήλες: Δισδιάστατος πίνακας Α (mxn θέσεων) τα m, n είναι γνωστά από την εισαγωγή στοιχείων (σε ψευδοκώδικα) Για j από 1 μέχρι n col[j] 0 Τέλος_επανάληψης Για j από 1 μέχρι n Για i από 1 μέχρι m col[j] col[j] + A[i,j] Τέλος_επανάληψης Τέλος_επανάληψης Για j από 1 μέχρι n MOcol[j] col[j]/m Τέλος_επανάληψης

Για j από 1 μέχρι n col[j] 0 Για i από 1 μέχρι m col[j] col[j] + A[i,j] Τέλος_επανάληψης MOcol[j] col[j]/m Τέλος_επανάληψης

2 4 3 0 1 0 2 0 1 2 1 3 3 8 0

10 5 15

2 1 3

A

row MOrow

Ο πρώτος βρόχος μπορεί να παραληφθεί και η εντολή row[i] 0 μπορεί να τοποθετηθεί στο διπλό βρόχο, πρώτη στην ομάδα εντολών του εξωτερικού.

Τα στοιχεία καθεμίας από τις m γραμμές είναι σε πλήθος ίσα με τις στήλες του πίνακα, δηλαδή n.

Δίνουμε στα στοιχεία του βοηθητικού πίνακα αρχικές τιμές για να εκτελεστούν χωρίς πρόβλημα την πρώτη φορά οι εντολές του διπλού βρόχου (περιέχονται στο δεξί μέλος των εντολών εκχώρησης).

2 4 3 0 1 0 2 0 1 2 1 3 3 8 0 3 9 6 9 3 1 3 2 3 1

MOcol

col

Τα στοιχεία καθεμίας από τις n στήλες είναι σε πλήθος ίσα με τις γραμμές του πίνακα, δηλαδή m.

A

Ο πρώτος βρόχος μπορεί να παραληφθεί και η εντολή col[j] 0 μπορεί να τοποθετηθεί στο διπλό βρόχο, πρώτη στην ομάδα εντολών του εξωτερικού.

Page 16: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 157

www.mathman.gr [email protected]

1 -1 7 1 1

6 2 0 8 -2

4 9 3 3 0

3 5 -4 2 1

0 1 2 0 1

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Ε 154) Να γραφεί αλγόριθμος ο οποίος θα υπολογίζει και θα εμφανίζει το άθροισμα της 5ης στήλης ενός πίνακα 1000x1000. Ε 155) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 5x5 και θα εμφανίζει το άθροισμα των τετραγώνων των στοιχείων της 3ης γραμμής του. Ε 156) Ένα κατάστημα υπολογιστών θέλει να επεξεργαστεί τα δεδομένα των πωλήσεών του. Να γραφεί αλγόριθμος ο οποίος : α) θα αποθηκεύει σε κατάλληλους πίνακες τις ονομασίες 5 μοντέλων υπολογιστών, τα ονόματα 7 πωλητών και τον αριθμό υπολογιστών από κάθε μοντέλο που πούλησε καθένας από τους 7 πωλητές του. θα υπολογίζει και θα εμφανίζει: β) το όνομα και το σύνολο πωλήσεων του τρίτου μοντέλου υπολογιστή γ) το όνομα και τον μέσο όρο πωλήσεων του 6ου

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

K 154) Δίνεται ο διπλανός πίνακας και το παρακάτω τμήμα προγράμματος:

πωλητή. Ε 157) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα m γραμμών και n στηλών και θα υπολογίζει το άθροισμα κατά γραμμή, κατά στήλη και συνολικά.

sum 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5 ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5 ΑΝ i = j ΤΟΤΕ sum sum + A[i,j] ΑΛΛΙΩΣ A[i,j] 0 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ sum

Αυτό το τμήμα προγράμματος χρησιμοποιεί τον πίνακα Α με τις τιμές των στοιχείων του, όπως αυτές φαίνονται παραπάνω. α. Να σχεδιάσετε στο τετράδιό σας τον πίνακα Α με τις τιμές που θα έχουν τα στοιχεία του μετά την εκτέλεση του τμήματος προγράμματος. β. Ποια είναι η τιμή της μεταβλητής sum που θα εμφανιστεί; (ΕΣΠ 2003)

Page 17: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 158

www.mathman.gr [email protected]

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Ε 158) Δίνεται πίνακας Π δύο διαστάσεων, που τα στοιχεία του είναι ακέραιοι αριθμοί με Ν γραμμές και Μ στήλες. Να αναπτύξετε αλγόριθμο που να υπολογίζει το ελάχιστο στοιχείο του πίνακα.

(Πανελλαδικές Εξετάσεις 2001) Ε 159) Να γραφεί αλγόριθμος ο οποίος θα καταχωρεί mxn ακέραιους αριθμούς σε δισδιάστατο πίνακα m γραμμών και n στηλών, θα υπολογίζει και θα εμφανίζει το μέγιστο στοιχείο και την (πρώτη) θέση στην οποία παρατηρείται. Ε 160) Να γραφεί αλγόριθμος ο οποίος θα καταχωρεί mxn ακέραιους αριθμούς σε δισδιάστατο πίνακα m γραμμών και n στηλών, θα υπολογίζει και θα εμφανίζει το ελάχιστο στοιχείο καθώς και την θέση (ή τις θέσεις) στην οποία παρατηρείται. Ε 161) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 50x100, θα υπολογίζει και θα εμφανίζει το ποσοστό των μηδενικών στοιχείων. Ε 162) Κατά τη διάρκεια ενός πρωταθλήματος μπάσκετ καταγράφεται ο αριθμός πόντων που έχουν βάλει 5 παίκτες σε 5 διαφορετικά παιχνίδια. Να γραφεί αλγόριθμος που θα σε βοηθήσει να κρατήσεις σε ένα δισδιάστατο πίνακα αυτά τα στοιχεία και στη συνέχεια να υπολογίσεις τον παίκτη που έχει πετύχει το μεγαλύτερο αριθμό πόντων από όλα τα παιχνίδια. (ΔΣ2_3) Ε 163) Μια αλυσίδα ξενοδοχείων έχει 5 ξενοδοχεία. Σε ένα μονοδιάστατο πίνακα ΞΕΝΟΔΟΧΕΙΑ[5] καταχωρούνται τα ονόματα των ξενοδοχείων. Σε ένα άλλο δισδιάστατο πίνακα ΕΙΣΠΡΑΞΕΙΣ[5,12] καταχωρούνται οι εισπράξεις κάθε ξενοδοχείου για κάθε μήνα του έτους 2001, έτσι ώστε στην i γραμμή καταχωρούνται οι εισπράξεις του i ξενοδοχείου. Να αναπτύξετε αλγόριθμο, ο οποίος :

α. διαβάζει τα στοιχεία των δύο πινάκων β. εκτυπώνει το όνομα κάθε ξενοδοχείου και τις ετήσιες εισπράξεις του για το έτος 2001. γ. εκτυπώνει το όνομα του ξενοδοχείου με τις μεγαλύτερες εισπράξεις για το έτος 2001.

(ΕΠΑΝ 2002) Ε 164) Σε ένα σχολείο η Γ’ Λυκείου έχει 100 μαθητές και κάθε μαθητής εξετάζεται σε 15 μαθήματα. Να γραφεί αλγόριθμος ο οποίος θα διαβάζει τους 15 βαθμούς κάθε μαθητή και θα εμφανίζει τον αριθμό μητρώου του μαθητή με τον μεγαλύτερο βαθμό απολυτηρίου καθώς και τον κωδικό του μαθήματος στο οποίο παρατηρήθηκε συνολικά η μεγαλύτερη αποτυχία. Ε 165) Μια ομάδα μπάσκετ που αποτελείται από 10 παίκτες έχει δώσει 15 αγώνες. Να γραφεί αλγόριθμος ο οποίος θα δέχεται τους πόντους που σημείωσε κάθε παίκτης σε κάθε αγώνα, θα εμφανίζει τον παίκτη που σημείωσε τους περισσότερους πόντους καθώς και το σύνολο των πόντων που πέτυχε η ομάδα σε κάθε αγώνα. Ε 166) Σε τρεις πίνακες αποθηκεύουμε το επίθετο, την ηλικία και το φύλο 90 μαθητών. Το φύλο μπορεί να είναι Α ή Κ και η ηλικία αριθμός από 10 ως και 18. Να γραφεί αλγόριθμος που θα: α) Διαβάζει τους πίνακες. Κατά την εισαγωγή των στοιχείων να γίνεται έλεγχος ορθής καταχώρησης φύλου και ηλικίας. β) Υπολογίζει το ποσοστό (%) των αγοριών και το ποσοστό (%) των κοριτσιών και θα τα εμφανίζει μετά τις λέξεις ΑΓΟΡΙΑ και ΚΟΡΙΤΣΙΑ αντίστοιχα. γ) Εμφανίζει το όνομα του νεότερου μαθητή.

Page 18: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 159

www.mathman.gr [email protected]

Ε 167) Μια αλυσίδα κινηματογράφων έχει δέκα αίθουσες. Τα ονόματα των αιθουσών καταχωρούνται σε ένα μονοδιάστατο πίνακα και οι μηνιαίες εισπράξεις κάθε αίθουσας για ένα έτος καταχωρούνται σε πίνακα δύο διαστάσεων. Να γράψετε αλγόριθμο ο οποίος: α. να διαβάζει τα ονόματα των αιθουσών β. να διαβάζει τις μηνιαίες εισπράξεις των αιθουσών αυτού του έτους γ. να υπολογίζει τη μέση μηνιαία τιμή των εισπράξεων για κάθε αίθουσα δ. να βρίσκει και να εμφανίζει τη μικρότερη μέση μηνιαία τιμή ε. να βρίσκει και να εμφανίζει το όνομα ή τα ονόματα των αιθουσών που έχουν την ανωτέρω μικρότερη μέση μηνιαία τιμή. Παρατήρηση: Θεωρήστε ότι οι μηνιαίες εισπράξεις είναι θετικοί αριθμοί.

(Πανελλαδικές Εξετάσεις 2003) Ε 168) Μια εταιρεία αποθηκεύει (20) προϊόντα σε δέκα (10) αποθήκες. Να γράψετε πρόγραμμα στη γλώσσα προγραμματισμού “ΓΛΩΣΣΑ”, το οποίο: α. περιέχει τμήμα δήλωσης των μεταβλητών του προγράμματος β. εισάγει σε μονοδιάστατο πίνακα τα ονόματα των είκοσι προϊόντων γ. εισάγει σε πίνακα δύο διαστάσεων Π[20,10] την πληροφορία που αφορά στην παρουσία ενός προϊόντος σε μια αποθήκη (καταχωρούμε την τιμή 1 στην περίπτωση που υπάρχει το προϊόν στην αποθήκη και την τιμή 0, αν το προϊόν δεν υπάρχει στην αποθήκη). δ. υπολογίζει σε πόσες αποθήκες υπάρχει το κάθε προϊόν ε. τυπώνει το όνομα κάθε προϊόντος και το πλήθος των αποθηκών στις οποίες υπάρχει το προϊόν.

(Πανελλαδικές Εξετάσεις 2002)

Ε 169) Σε ένα πανεπιστημιακό τμήμα εισήχθησαν κατόπιν γενικών εξετάσεων 235 φοιτητές προερχόμενοι από την ΤΕΧΝΟΛΟΓΙΚΗ ή τη ΘΕΤΙΚΗ κατεύθυνση.

Να αναπτύξετε αλγόριθμο, ο οποίος:

α. Για καθένα από τους 235 φοιτητές διαβάζει:

• το ονοματεπώνυμό του,

• τα μόρια εισαγωγής του,

• την κατεύθυνσή του, η οποία μπορεί να είναι «ΤΕΧΝΟΛΟΓΙΚΗ» ή «ΘΕΤΙΚΗ», ελέγχοντας την εγκυρότητα εισαγωγής της

και καταχωρίζει τα δεδομένα αυτά σε τρεις πίνακες.

β. Υπολογίζει και εμφανίζει:

1. το μέσο όρο των μορίων εισαγωγής των φοιτητών που προέρχονται από την ΤΕΧΝΟΛΟΓΙΚΗ κατεύθυνση.

2. το ποσοστό των φοιτητών, που προέρχονται από την ΤΕΧΝΟΛΟΓΙΚΗ κατεύθυνση.

3. την κατεύθυνση, από την οποία προέρχεται ο φοιτητής με τα περισσότερα μόρια εισαγωγής (να θεωρήσετε ότι δεν υπάρχει περίπτωση ισοβαθμίας).

4. τα ονοματεπώνυμα των φοιτητών που προέρχονται από την ΤΕΧΝΟΛΟΓΙΚΗ κατεύθυνση, για τους οποίους τα μόρια εισαγωγής τους είναι περισσότερα από το μέσο όρο των μορίων εισαγωγής των φοιτητών που προέρχονται από την ΤΕΧΝΟΛΟΓΙΚΗ κατεύθυνση.

(ΕΣΠ 2007)

Page 19: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 160

www.mathman.gr [email protected]

Ε 170) Σε ένα Μετεωρολογικό Σταθμό καταγράφονται ανά ημέρα και ώρα η θερμοκρασία του περιβάλλοντος για μία εβδομάδα. Να γράψετε αλγόριθμο που: α. Διαβάζει: • τα ονόματα των επτά ημερών της εβδομάδας και τα καταχωρεί σε μονοδιάστατο πίνακα. • τη θερμοκρασία για κάθε ημέρα της εβδομάδας και κάθε ώρα της ημέρας και την καταχωρεί σε δισδιάστατο πίνακα, ελέγχοντας οι τιμές της θερμοκρασίας να είναι από –20 μέχρι και 50. β. Υπολογίζει για κάθε ημέρα τη μέση θερμοκρασία και την καταχωρεί σε μονοδιάστατο πίνακα. γ. Βρίσκει και εμφανίζει τη μέγιστη μέση θερμοκρασία της εβδομάδας από τον πίνακα των μέσων θερμοκρασιών. δ. Βρίσκει και εμφανίζει την ημέρα της εβδομάδας με τη μέγιστη μέση θερμοκρασία (να θεωρήσετε ότι υπάρχει μόνο μία τέτοια ημέρα). ε. Υπολογίζει και εμφανίζει το πλήθος των ημερών της εβδομάδας που είχαν μέση θερμοκρασία μεγαλύτερη των 20 oC.

(ΕΠΑΝ ΕΣΠ 2007) Ε 171) Μία Νομαρχία διοργάνωσε το 2008 σεμινάριο εθελοντικής δασοπυρόσβεσης, το οποίο παρακολούθησαν 500 άτομα. Η Πυροσβεστική Υπηρεσία ζήτησε στοιχεία σχετικά με την ηλικία, το φύλο και το μορφωτικό επίπεδο εκπαίδευσης κάθε εθελοντή, προκειμένου να εξαγάγει στατιστικά στοιχεία. Να γραφεί αλγόριθμος, ο οποίος: α. διαβάζει για κάθε άτομο:

• το ονοματεπώνυμο, • το έτος γέννησης (χωρίς να απαιτείται έλεγχος εγκυρότητας), • το φύλο, με αποδεκτές τιμές το “Α” για τους άνδρες και το “Γ” για τις γυναίκες, • το μορφωτικό επίπεδο εκπαίδευσης, με αποδεκτές τιμές “Π”, “Δ” ή “Τ”, που αντιστοιχούν σε

Πρωτοβάθμια, Δευτεροβάθμια ή Τριτοβάθμια Εκπαίδευση, και τα καταχωρίζει σε κατάλληλους μονοδιάστατους πίνακες.

β. υπολογίζει και εμφανίζει το πλήθος των ατόμων με ηλικία μικρότερη των 30 ετών. γ. υπολογίζει και εμφανίζει το ποσοστό των γυναικών με επίπεδο Τριτοβάθμιας Εκπαίδευσης στο σύνολο των εθελοντριών. δ. εμφανίζει τα ονόματα των ατόμων με τη μεγαλύτερη ηλικία.

(ΕΠΑΝ ΕΣΠ 2008) Ε 172) Ένας επενδυτής διέθεσε 10.000 € για την αγορά ορισμένων τεμαχίων 10 διαφορετικών μετοχών. Να γράψετε αλγόριθμο ο οποίος: α. Για καθεμία από τις 10 μετοχές διαβάζει • το όνομα της μετοχής, • το πλήθος των τεμαχίων της μετοχής, που κατέχει ο επενδυτής, ελέγχοντας το πλήθος να είναι θετικός αριθμός, και καταχωρίζει τα δεδομένα αυτά σε σχετικούς πίνακες. β. Για καθεμία από τις 10 μετοχές και για καθεμία από τις πέντε (5) εργάσιμες ημέρες της εβδομάδας διαβάζει την τιμή ενός τεμαχίου της μετοχής και την αποθηκεύει σε κατάλληλο πίνακα δύο διαστάσεων, ελέγχοντας η τιμή του τεμαχίου να είναι θετικός αριθμός. γ. Για καθεμία από τις 10 μετοχές υπολογίζει τη μέση εβδομαδιαία τιμή του τεμαχίου της και την αποθηκεύει σε μονοδιάστατο πίνακα. δ. Υπολογίζει και εμφανίζει τη συνολική αξία όλων των τεμαχίων όλων των μετοχών του επενδυτή, την τελευταία ημέρα της εβδομάδας. ε. Υπολογίζει εάν ο επενδυτής στο τέλος της εβδομάδας έχει κέρδος ή ζημία ή καμία μεταβολή σε σχέση με το αρχικό ποσό που διέθεσε, εμφανίζοντας κατάλληλα μηνύματα.

(ΕΣΠ 2008)

Page 20: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 161

www.mathman.gr [email protected]

Ε 173) Σε ένα Δήμο υπάρχουν 4 σταθμοί μέτρησης ενός συγκεκριμένου ατμοσφαιρικού ρύπου. Η καταγραφή της τιμής του ρύπου γίνεται ανά ώρα και σε 24ωρη βάση. Οι αποδεκτές τιμές του ρύπου κυμαίνονται από 0 έως και 100. Να γραφεί αλγόριθμος, ο οποίος:

α. για κάθε σταθμό και για κάθε ώρα του 24ώρου διαβάζει την τιμή του ρύπου και την καταχωρίζει σε πίνακα διαστάσεων 4x24, ελέγχοντας την εγκυρότητα κάθε τιμής,

β. για κάθε ώρα του 24ώρου υπολογίζει και εμφανίζει τη μέση τιμή του ρύπου από τους 4 σταθμούς.

γ. για κάθε σταθμό βρίσκει και εμφανίζει τη μέγιστη και την ελάχιστη τιμή του ρύπου στο 24ωρο.

δ. βρίσκει και εμφανίζει τη μέγιστη τιμή του ρύπου στη διάρκεια του 24ώρου, καθώς και την ώρα και τον αριθμό του σταθμού που σημειώθηκε η τιμή αυτή. (Να θεωρήσετε ότι η τιμή αυτή είναι μοναδική στον πίνακα).

(ΕΠΑΝ ΕΣΠ 2008)

ΘΕΩΡΙΑ Θ 80.Τι είναι στοίβα, πως λειτουργεί και ποιες οι βασικές της λειτουργίες; Η στοίβα είναι μια δομή δεδομένων που η επεξεργασία των στοιχείων της γίνεται με την μέθοδο Τελευταίο μέσα, πρώτο έξω (LIFO). Οι κυριότερες λειτουργίες σε μία στοίβα είναι η ώθηση στοιχείου στην κορυφή της και η απώθηση στοιχείου από την κορυφή της. Μια στοίβα μπορεί να υλοποιηθεί με ένα μονοδιάστατο πίνακα. Για τον προσδιορισμό της κορυφή της χρησιμοποιείται μια βοηθητική μεταβλητή (με όνομα συνήθως top, δηλαδή κορυφή) για να δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην στοίβα. Για την εισαγωγή ενός νέου στοιχείου στη στοίβα (ώθηση) αρκεί να αυξηθεί η μεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα για την εξαγωγή ενός στοιχείου από τη στοίβα (απώθηση) εξέρχεται πρώτα το στοιχείο που δείχνει η μεταβλητή top και στη συνέχεια η top μειώνεται κατά ένα για να δείχνει τη νέα κορυφή. Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει, αν η στοίβα είναι γεμάτη, οπότε λέγεται ότι συμβαίνει υπερχείλιση της στοίβας. Αντίστοιχα, η διαδικασία απώθησης ελέγχει, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν γίνεται υποχείλιση της στοίβας. Θ 81.Τι είναι ουρά, πως λειτουργεί και ποιες οι βασικές της λειτουργίες; Η ουρά είναι μια δομή δεδομένων που η επεξεργασία των στοιχείων της γίνεται με την μέθοδο Πρώτο μέσα, πρώτο έξω (FIFO). Οι κυριότερες λειτουργίες σε μία ουρά είναι η εισαγωγή στοιχείου στο πίσω άκρο της ουράς και η εξαγωγή στοιχείου από το εμπρός άκρο της ουράς. Σε αντίθεση με τη δομή της στοίβας, στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο front (εμπρός) και ο rear (πίσω) δείκτης, που μας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε. Μια ουρά μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου πίνακα. Για την εισαγωγή ενός νέου στοιχείου στην ουρά αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή αποθηκεύεται το στοιχείο. Αντίστοιχα για τη λειτουργία της εξαγωγής, εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί. Σε κάθε περίπτωση όμως, πρέπει να ελέγχεται πριν από οποιαδήποτε ενέργεια, αν υπάρχει ελεύθερος χώρος στον πίνακα για την εισαγωγή και αν υπάρχει ένα τουλάχιστον στοιχείο για την εξαγωγή.

Page 21: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 162

www.mathman.gr [email protected]

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

K 155) Στον παρακάτω πίνακα η Στήλη Α περιέχει δομές δεδομένων και η Στήλη Β περιέχει λειτουργίες. Να γράψετε στο τετράδιό σας τους αριθμούς της Στήλης Α και δίπλα τα γράμματα της Στήλης Β που αντιστοιχούν σωστά. Ας σημειωθεί ότι σε κάποιες δομές δεδομένων μπορεί να αντιστοιχούν περισσότερες από μία λειτουργίες.

Στήλη Α Στήλη Β 1. Ουρά α. Απώθηση

2. Στοίβα β. Εξαγωγή γ. Ώθηση δ. Εισαγωγή

K 156) Να γράψετε στο τετράδιό σας τους αριθμούς της Στήλης Α και δίπλα σε κάθε αριθμό ένα από τα γράμματα της Στήλης Β, ώστε να προκύπτει η σωστή αντιστοίχιση (στη Στήλη Β περισσεύουν δύο γράμματα). (ΕΠΑΝ ΕΣΠ 2005)

Στήλη Α Στήλη Β

1. Ουρά α. Δομή επιλογής

2. x 1 Όσο x < 5 επανάλαβε Εμφάνισε x x x + 1 Τέλος_επανάληψης

β. Δομή επανάληψης

3. Στοίβα γ. FIFO

4. Επίλεξε … τέλος_επιλογών δ. LIFO

5. ΚΑΙ ε. Αριθμητικός Τελεστής

στ. Λογικός Τελεστής

ζ. Συνάρτηση

K 157) Να γράψετε στο τετράδιό σας καθέναν από τους αριθμούς της Στήλης Α και δίπλα του ένα γράμμα

της Στήλης Β, ώστε να προκύπτει η σωστή αντιστοίχιση. (ΕΣΠ 2008)

Στήλη Α Στήλη B

1. Ουρά α. Ώθηση

2. Λογικός τελεστής β. ΑΛΗΘΗΣ

3. Στοίβα γ. ΚΑΙ

4. Λογική σταθερά δ. Δύο δείκτες

Page 22: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 163

www.mathman.gr [email protected]

K 158) Δίνεται η παρακάτω ακολουθία αριθμών: 25, 8, 12, 14, 71, 41, 1. Τοποθετούμε τους αριθμούς σε στοίβα και σε ουρά. (ΕΠΑΝ 2006)

1. Ποια λειτουργία θα χρησιμοποιηθεί για την τοποθέτηση των αριθμών στη στοίβα και ποια για την τοποθέτησή τους στην ουρά; 2. Να σχεδιάσετε τις δύο δομές (στοίβα και ουρά) μετά την τοποθέτηση των αριθμών.

3. Ποια λειτουργία θα χρησιμοποιηθεί για την έξοδο αριθμών από τη στοίβα και ποια για την έξοδό τους από την ουρά; 4. Πόσες φορές θα πρέπει να γίνει η παραπάνω λειτουργία στη στοίβα και πόσες στην ουρά για να εξέλθει ο αριθμός 71; K 159) Σε μία ουρά 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Μ, Κ, Δ, Α, Σ στην πρώτη, δεύτερη, τρίτη , τέταρτη και πέμπτη θέση αντίστοιχα. (ΕΣΠ 2004)

α. Να προσδιορίσετε τις τιμές των δεικτών της παραπάνω ουράς. β. Στη συνέχεια να αφαιρέσετε ένα στοιχείο από την ουρά. Ποιος δείκτης μεταβάλλεται και ποια η νέα του τιμή; γ. Τέλος να τοποθετήσετε το στοιχείο Λ στην ουρά. Ποιος δείκτης μεταβάλλεται και ποια η νέα του τιμή;

ΘΕΩΡΙΑ Θ 82. Από ποιους παράγοντες εξαρτώνται οι μέθοδοι αναζήτησης σε πίνακα; Οι μέθοδοι αναζήτησης σε πίνακα εξαρτώνται κυρίως από το, αν ο πίνακας είναι ταξινομημένος ή όχι. Μια άλλη παράμετρος είναι, αν ο πίνακας περιέχει στοιχεία που είναι όλα διάφορα μεταξύ τους ή όχι. Θ 83. Ποια είναι η πιο απλή μορφή αναζήτησης στοιχείου σε πίνακα και πως λειτουργεί; Η πιο απλή μορφή αναζήτησης στοιχείου σε πίνακα είναι η σειριακή ή γραμμική μέθοδος. Στη σειριακή αναζήτηση γίνεται προσπέλαση στα στοιχεία του πίνακα με τη σειρά (δομή επανάληψης), ξεκινώντας από το πρώτο και φτάνοντας μέχρι το τελευταίο αν χρειαστεί. Κάθε φορά ελέγχεται αν το τρέχον στοιχείο του πίνακα είναι ίσο με τη ζητούμενη τιμή.

Page 23: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 164

www.mathman.gr [email protected]

Αλγόριθμος Sequential_Search Δεδομένα // table, key, n // done ψευδής position 0 i 1 Όσο done = ψευδής και i <= n επανάλαβε Αν table[i] = key τότε done αληθής position i αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // done, position // Τέλος Sequential_Search

Θ 84. Να περιγράψετε τον αλγόριθμο σειριακής αναζήτησης με ψευδοκώδικα. Θ 85. Σε ποιες περιπτώσεις είναι δικαιολογημένη η χρήση του αλγορίθμου της σειριακής αναζήτησης; Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου:

• ο πίνακας είναι μη ταξινομημένος, • ο πίνακας είναι μικρού μεγέθους (για παράδειγμα λιγότερα από 20 στοιχεία), • η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια.

Θ 86. Τι γνωρίζεται για την μέθοδο δυαδικής αναζήτησης; Η μέθοδος δυαδικής αναζήτησης (ο αλγόριθμος της είναι εκτός ύλης) εφαρμόζεται σε ταξινομημένους πίνακες και είναι πιο αποτελεσματική από την μέθοδο σειριακής αναζήτησης.

ΜΕΘΟΔΟΛΟΓΙΑ M 47) Εύρεση ζητούμενης τιμής σε πίνακα (σειριακή αναζήτηση): Για την ύπαρξη ενός στοιχείου σε πίνακα κάνουμε σειριακή αναζήτηση. Στον παρακάτω αλγόριθμο αναζητείται η τιμή της μεταβλητής key (ζητούμενη τιμή) στον μη ταξινομημένο μονοδιάστατο πίνακα table. Η αναζήτηση τερματίζεται όταν βρεθεί για πρώτη φορά η ζητούμενη τιμή, θεωρώντας ότι κάθε στοιχείο μπορεί να υπάρχει περισσότερες από μία φορές στον πίνακα.

Δεδομένα // n // Διάβασε key Για i από 1 μέχρι n Διάβασε table[i] Τέλος_επανάληψης

Αν done = ψευδής τότε Εμφάνισε “Δεν βρέθηκε” αλλιώς Εμφάνισε “Βρέθηκε στη θέση”, position Τέλος αν

Page 24: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 165

www.mathman.gr [email protected]

Αλγόριθμος Sequential_Search Δεδομένα // table, key, n // done ψευδής position 0 i 1 Όσο done = ψευδής και i <= n επανάλαβε Αν table[i] = key τότε done αληθής position i αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αποτελέσματα // done, position // Τέλος Sequential_Search Παρατηρήσεις: Αν κατά την εκτέλεση του αλγορίθμου, η τιμή της μεταβλητής done γίνει Αληθής (άρα η συνθήκη table[i] = key έγινε Αληθής για κάποιο i), η αναζήτηση είναι επιτυχής, διακόπτεται η εκτέλεση της δομής επανάληψης και η μεταβλητή position επιστρέφει τη θέση του στοιχείου στον πίνακα όπου βρέθηκε η ζητούμενη τιμή (δηλαδή, έναν αριθμό από 1 ως n). Για τον τρόπο που μια δεύτερη συνθήκη διακόπτει τη δομή επανάληψης, βλέπε Μ 38. Αν η δομή επανάληψης τερματιστεί επειδή η συνθήκη i <= n έγινε Ψευδής (συνεπώς η μεταβλητή i έχει πάρει την τιμή n+1 και έχουμε ‘‘βγει’’ από τον πίνακα), αυτό σημαίνει ότι η τιμή της λογικής μεταβλητής done (βρέθηκε) έχει παραμείνει Ψευδής (συνεπώς και η τιμή της μεταβλητής position έχει παραμείνει επίσης 0) και η αναζήτηση είναι ανεπιτυχής (μήνυμα “Δεν βρέθηκε”). Για παράδειγμα, έστω ότι η ζητούμενη τιμή είναι 2 (key = 2) και ο πίνακας table είναι n=5 θέσεων Στον παρακάτω πίνακα καταγράφονται οι τιμές των μεταβλητών και των λογικών συνθηκών Κάποιος μπορεί να παρατηρήσει στον παραπάνω αλγόριθμο (ο οποίος παρουσιάζεται με την ίδια μορφή και στο βιβλίο του μαθητή) ότι η ταυτόχρονη χρήση των μεταβλητών done και position είναι μάλλον περιττή. Ακολουθούν μερικές βασικές παραλλαγές αυτού του αλγορίθμου που χρησιμοποιούν μία ή καμία από τις δύο αυτές μεταβλητές. Δεν πρέπει όμως να απομνημονευθούν όλες σαν ξεχωριστές περιπτώσεις, αφού με μικρές διαφοροποιήσεις μπορούν να προκύψουν άλλες τόσες. Είναι πολύ πιο εύκολο να ξεκινά κάποιος από την αρχική μορφή του αλγόριθμου σειριακής αναζήτησης και έχοντας τον κατανοήσει πολύ καλά όσον αφορά την λειτουργία του, να κάνει τις κατάλληλες αλλαγές, προσαρμόζοντας τον κάθε φορά στις απαιτήσεις του προβλήματος. Αυτό προϋποθέτει να έχουμε αναπτύξει την ικανότητα να επαληθεύουμε ότι τα τμήματα αλγορίθμου που γράφουμε λύνουν το πρόβλημα (εισάγουμε κάποια δεδομένα και παρακολουθούμε τις τιμές των μεταβλητών κατά την εκτέλεση του αλγόριθμου μέχρι τέλους).

Δεδομένα // n // Διάβασε key Για i από 1 μέχρι n Διάβασε table[i] Τέλος_επανάληψης

Αν done = ψευδής τότε Εμφάνισε “Δεν βρέθηκε” αλλιώς Εμφάνισε “Βρέθηκε στη θέση”, position Τέλος_αν

7 4 2 8 6

table

done i position done = ψευδής i <= n table[i] = key ψευδής 1 0 αληθής αληθής ψευδής

2 αληθής αληθής ψευδής αληθής 3 3 αληθής αληθής αληθής

ψευδής αληθής

Page 25: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 166

www.mathman.gr [email protected]

Αλγόριθμος Sequential_Search_β Δεδομένα // table, key, n // position 0 i 1 Όσο position = 0 και i <= n επανάλαβε Αν table[i] = key τότε position i αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν position = 0 τότε Εμφάνισε “Δεν βρέθηκε” αλλιώς Εμφάνισε “Βρέθηκε στη θέση”, position Τέλος_αν Τέλος Sequential_Search_β

Αλγόριθμος Sequential_Search_γ Δεδομένα // table, key, n // i 1 Όσο i <= n επανάλαβε Αν table[i] = key τότε Εμφάνισε “Βρέθηκε στη θέση”, i i n + 5 αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν i = n + 1 τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_γ

Αλγόριθμος Sequential_Search_α Δεδομένα // table, key, n // done ψευδής i 1 Όσο done = ψευδής και i <= n επανάλαβε Αν table[i] = key τότε done αληθής αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν done = ψευδής τότε Εμφάνισε “Δεν βρέθηκε” αλλιώς Εμφάνισε “Βρέθηκε στη θέση”, i Τέλος_αν Τέλος Sequential_Search_α

Και στις τρεις περιπτώσεις α, β, γ, η εκτέλεση των εντολών done αληθής, position i και i n + 5 αντίστοιχα, γίνεται όταν βρεθεί η ζητούμενη τιμή. Κάθε μία αλλάζει την τιμή των αντίστοιχων (σύνθετων) λογικών συνθηκών από Αληθής σε Ψευδής, οπότε και τερματίζονται οι βρόχοι επανάληψης (είχαμε θεωρήσει ότι κάθε στοιχείο υπάρχει μία μόνο φορά στον πίνακα και αφού βρέθηκε δεν υπάρχει νόημα να συνεχιστεί η αναζήτηση). Στις συγκεκριμένες εντολές και στις λογικές συνθήκες οφείλεται επίσης το ότι η χρήση της σύνθετης δομής επιλογής Αν … τότε … αλλιώς … Τέλος_αν δίνει σωστά αποτελέσματα. Στις περιπτώσεις α και β θα μπορούσε να χρησιμοποιηθεί και απλή δομή επιλογής Αν … τότε … Τέλος_αν, με την εντολή i i + 1 να ακολουθεί την Τέλος_αν. Στην περίπτωση α, όμως, μετά την εύρεση της ζητούμενης τιμής στη θέση i, η τιμή του αυξάνεται κατά ένα και συνεπώς θα πρέπει να εμφανίζεται η θέση i – 1. Στην β περίπτωση δεν υπάρχει τέτοιο θέμα, αφού η σωστή θέση έχει εκχωρηθεί σε άλλη μεταβλητή (position) πριν την μεταβολή

της i κατά ένα. Στην περίπτωση γ, αφού εμφανίσουμε τη σωστή θέση i όπου βρέθηκε η ζητούμενη τιμή, αυξάνουμε την τιμή για το i όσο χρειάζεται για να αλλάξει η τιμή της συνθήκης i <= n σε Ψευδής (πχ i n + 5, αν και το n + 1 θα ήταν αρκετό). Αν το i έχει την τιμή n + 1, σημαίνει ότι ο πίνακας ‘‘εξαντλήθηκε’’ κατά την αναζήτηση και η ζητούμενη τιμή δεν βρέθηκε. Αν κάποια στοιχεία εμφανίζονται στον πίνακα περισσότερες από μία φορές τότε το πρόβλημα μπορεί να απαιτεί όχι μόνο την επιβεβαίωση ότι βρέθηκε η ζητούμενη τιμή στον πίνακα και την εμφάνιση της πρώτης θέσης που βρέθηκε, αλλά όλες τις θέσεις στις οποίες βρίσκεται (άσκηση 171). Ο αρχικός αλγόριθμος (άσκηση 170) και οι παραλλαγές του πρέπει να τροποποιηθούν ως εξής: η μεταβλητή done, η οποία διακόπτει την εκτέλεση του βρόχου (ουσιαστικά την αναζήτηση) όταν βρεθεί η ζητούμενη τιμή, είναι περιττή και η αναζήτηση συνεχίζεται μέχρι το τέλος του πίνακα ελέγχοντας μόνο με τη συνθήκη i <= n. Προσοχή: Σ’ αυτήν την περίπτωση δεν μπορούμε να χρησιμοποιήσουμε τη σύνθετη δομή επιλογής Αν … τότε … αλλιώς … Τέλος_αν όπως στις περιπτώσεις α, β και γ. Όταν βρεθεί για πρώτη φορά η ζητούμενη τιμή, η τιμή της μεταβλητής i δε θα αλλάξει, οι συνθήκες στις δομές Όσο και Αν θα είναι πάντα Αληθής και θα ακολουθήσει ένας ατέρμων βρόχος. Η δομή επιλογής Αν … τότε … αλλιώς … Τέλος_αν θα ήταν σωστή αν γραφόταν όπως στην περίπτωση δ. Δηλαδή, η αύξηση της μεταβλητής i θα εκτελεστεί είτε η συνθήκη table[i] = key είναι Αληθής ή Ψευδής. Επομένως, θα ήταν πιο σωστό να γραφεί η i i + 1 μόνο μία φορά μετά την Τέλος_αν μιας απλής επιλογής (περίπτωση ε). Επειδή, το πλήθος των επαναλήψεων είναι γνωστό, η δομή επανάληψης Όσο μπορεί να μετατραπεί σε ισοδύναμη Για όπως φαίνεται στην περίπτωση στ.

done αληθής Τέλος_αν i i + 1

i - 1

Επιλέχθηκε μεγαλύτερο από n + 1

i n + 5 Τέλος_αν i i + 1

Page 26: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 167

www.mathman.gr [email protected]

Αλγόριθμος Sequential_Search_στ Δεδομένα // table, key, n // position 0 Για i από 1 μέχρι n Αν table[i] = key τότε Εμφάνισε “Βρέθηκε στη θέση”, i position i Τέλος_αν Τέλος_επανάληψης Αν position = 0 τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_στ

Αλγόριθμος Sequential_Search_δ Δεδομένα // table, key, n // position 0 i 1 Όσο i <= n επανάλαβε Αν table[i] = key τότε Εμφάνισε “Βρέθηκε στη θέση”, i position i i i + 1 αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν position = 0 τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_δ

Αλγόριθμος Sequential_Search_ε Δεδομένα // table, key, n // position 0 i 1 Όσο i <= n επανάλαβε Αν table[i] = key τότε Εμφάνισε “Βρέθηκε στη θέση”, i position i Τέλος_αν i i + 1 Τέλος_επανάληψης Αν position = 0 τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_ε

Αξιοσημείωτο είναι ότι η μεταβλητή position έχει το ρόλο σημαίας χωρίς να είναι λογική μεταβλητή: αν η τιμή της παραμείνει 0 (η αρχική) τότε συμπεραίνουμε ότι η ζητούμενη τιμή δεν βρέθηκε. Αν μετά το τέλος της επανάληψης έχει οποιαδήποτε άλλη τιμή, τότε συμπεραίνουμε ότι η ζητούμενη τιμή βρέθηκε. Παρατηρούμε δηλαδή ότι στην τιμή 0 της position αντιστοιχεί η τιμή Ψευδής της done και όλες οι άλλες τιμές 1, 2, 3… (όχι 0) στην τιμή Αληθής (όχι Ψευδής). Για παράδειγμα, έστω ότι η ζητούμενη τιμή είναι 2 (key = 2) και ο πίνακας table είναι n=5 θέσεων Στον παρακάτω πίνακα καταγράφονται οι τιμές των μεταβλητών και των λογικών συνθηκών, όπως προκύπτουν από την εκτέλεση του αλγόριθμου ε

7 4 2 8 2

table

position i i <= n table[i] = key Οθόνη 0 1 αληθής ψευδής 2 αληθής ψευδής

3 3 αληθής αληθής Βρέθηκε στη θέση 3 4 αληθής ψευδής

5 5 αληθής αληθής Βρέθηκε στη θέση 5 6 ψευδής

position i αλλιώς i i + 1 Τέλος_αν

Page 27: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 168

www.mathman.gr [email protected]

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

K 160) Δίνεται η παρακάτω ακολουθία εντολών που στοχεύει στην υλοποίηση ενός αλγορίθμου αναζήτησης κάποιου στοιχείου Χ σε πίνακα Π με Ν στοιχεία: Αλγόριθμος Αναζήτηση Δεδομένα //Π,Ν,Χ// flag ψευδής Ι 1 Όσο Ι ≤ Ν και flag=ψευδής επανάλαβε Αν Π[Ι]=Χ τότε flag αληθής Τέλος_αν Τέλος_επανάληψης Αποτελέσματα //flag// Τέλος Αναζήτηση 1. Ποιο αλγοριθμικό κριτήριο δεν ικανοποιεί η παραπάνω ακολουθία εντολών; Να αιτιολογήσετε την απάντησή σας. 2. Να διορθώσετε την παραπάνω ακολουθία εντολών έτσι ώστε να υλοποιεί σωστά την αναζήτηση.

(ΕΠΑΝ 2007) K 161) Ποια η λειτουργία των παρακάτω τμημάτων αλγορίθμου; Να σχεδιάσετε τους πίνακες. Για i από 1 μέχρι 4 MIN[i] Π[i,1] Για j από 1 μέχρι 6 Αν Π[i,j] < MIN[i] τότε MIN[i] Π[i,j] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης ---------------------------------- Για j από 1 μέχρι 6 max Π[1,j] Για i από 1 μέχρι 4 Αν Π[i,j] > max τότε max Π[i,j] Τέλος_αν Τέλος_επανάληψης MAXI[j] max Τέλος_επανάληψης

Page 28: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 169

www.mathman.gr [email protected]

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ

Ε 174) Να γραφεί ο αλγόριθμος σειριακής αναζήτησης της τιμής key σε μονοδιάστατο μη ταξινομημένο πίνακα table n θέσεων. Η αναζήτηση να τερματίζεται όταν βρεθεί για πρώτη φορά η ζητούμενη τιμή, θεωρώντας ότι κάθε στοιχείο μπορεί να υπάρχει περισσότερες από μία φορές στον πίνακα. Ε 175) Να γραφεί ο αλγόριθμος σειριακής αναζήτησης της τιμής key σε μονοδιάστατο μη ταξινομημένο πίνακα table n θέσεων και να εμφανίζονται όλες οι θέσεις στις οποίες βρίσκεται η ζητούμενη τιμή. Ε 176) Στη βιβλιοθήκη ενός σχολείου υπάρχουν πολλά βιβλία σχετικά με τη γεωγραφία και τα ταξίδια. Έστω ότι κάθε βιβλίο έχει ένα μοναδικό κωδικό και καταχωρείται σε ηλεκτρονικό υπολογιστή ο τίτλος και ο συγγραφέας κάθε βιβλίου. Να γραφεί αλγόριθμος που θα διαβάζει το όνομα ενός συγγραφέα και θα βρίσκει τον κωδικό (ή τους κωδικούς) και τον τίτλο (ή τους τίτλους) των βιβλίων αυτού του συγγραφέα που υπάρχουν στη βιβλιοθήκη. (ΔΣ4_4) Ε 177) Στην προηγούμενη άσκηση (………) είχες ασχοληθεί με την ταξινόμηση των δίσκων των CD σου σε χρονολογική σειρά. Να επεκτείνεις τον αλγόριθμο έτσι ώστε να υπάρχει η δυνατότητα να βρίσκεις εάν ένα CD με συγκεκριμένο τίτλο υπάρχει στη συλλογή σου ή όχι, δίνοντας τον τίτλο του (σειριακή αναζήτηση). (ΔΣ2_4) Ε 178) Να γραφεί ο αλγόριθμος σειριακής αναζήτησης της τιμής key σε δισδιάστατο πίνακα table mxn θέσεων. Ε 179) Δίνεται πίνακας Ν θέσεων. Ένας μονοδιάστατος πίνακας είναι το ουδέτερο στοιχείο της πρόσθεσης πινάκων αν όλα τα στοιχεία του είναι μηδέν. Να γραφεί αλγόριθμος ο οποίος θα ελέγχει αν ο πίνακας είναι το ουδέτερο στοιχείο της πρόσθεσης και θα εμφανίζει κατάλληλα μηνύματα. Ε 180) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει δύο πίνακες 5 στοιχείων και θα ελέγχει αν οι δύο πίνακες είναι ίσοι, δηλ. αν τα αντίστοιχα στοιχεία τους είναι ίσα ένα προς ένα, και θα εμφανίζει κατάλληλα μηνύματα. Ε 181) Δίνεται πίνακας Α[Ν] ακέραιων και θετικών αριθμών, καθώς και πίνακας Β[Ν-1] πραγματικών και θετικών αριθμών. Να γραφεί αλγόριθμος, ο οποίος θα ελέγχει αν κάθε στοιχείο Β[i] είναι ο μέσος όρος των στοιχείων Α[i] και A[i+1], δηλαδή αν Β[i] = (Α[i] + A[i+1])/2. Σε περίπτωση που ισχύει, τότε να εμφανίζεται το μήνυμα “Ο πίνακας Β είναι ο τρέχων μέσος του Α”, διαφορετικά να εμφανίζεται το μήνυμα “Ο πίνακας Β δεν είναι ο τρέχων μέσος του Α”. Για παράδειγμα, έστω ότι τα στοιχεία του πίνακα Α είναι 1, 3, 5, 10, 15 και ότι τα στοιχεία του πίνακα Β είναι 2, 4, 7.5, 12.5. Τότε ο αλγόριθμος θα εμφανίσει το μήνυμα “Ο πίνακας Β είναι ο τρέχων μέσος του Α”, διότι 2=(1+3)/2, 4=(3+5)/2, 7.5=(5+10)/2, 12.5=(10+15)/2.

(Πανελλαδικές Εξετάσεις 2005)

Page 29: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 170

www.mathman.gr [email protected]

Αλγόριθμος Φυσαλίδα Δεδομένα // table, n // Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα -1 Αν table[j-1] > table[j] τότε temp table[j-1] table[j-1] table[j] table[j] temp Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Φυσαλίδα

ΘΕΩΡΙΑ

Θ 87. Τι είναι η ταξινόμηση και ποιος ο σκοπός της; Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση ή διάταξη. Συνήθως η σειρά αυτή είναι η αύξουσα τάξη της τιμής των μεγεθών προς ταξινόμηση. Σκοπός της ταξινόμησης είναι να διευκολυνθεί στη συνέχεια η αναζήτηση των στοιχείων του ταξινομημένου πίνακα. Θ 88. Σε ποια αρχή βασίζεται η μέθοδος της ταξινόμησης ευθείας ανταλλαγής; H μέθοδος της ταξινόμησης ευθείας ανταλλαγής βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων, μέχρις ότου διαταχθούν όλα τα στοιχεία. Σύμφωνα με τη μέθοδο αυτή κάθε φορά γίνονται διαδοχικές προσπελάσεις στον πίνακα και μετακινείται το μικρότερο κλειδί της ακολουθίας προς το αριστερό άκρο του πίνακα. Αν ο πίνακας θεωρηθεί σε κατακόρυφη θέση αντί σε οριζόντια και οι ακέραιοι θεωρηθούν ως φυσαλίδες σε μία δεξαμενή νερού με βάρη σύμφωνα με την τιμή τους, τότε κάθε προσπέλαση στον πίνακα έχει ως αποτέλεσμα την άνοδο της φυσαλίδας στο κατάλληλο επίπεδο βάρους. Γι’ αυτό το λόγο, η μέθοδος είναι επίσης γνωστή ως ταξινόμηση φυσαλίδας. Θ 89. Ποιοι άλλοι αλγόριθμοι υπάρχουν για ταξινόμηση; Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης. Για την ταξινόμηση δεδομένων έχουν εκπονηθεί πάρα πολλοί αλγόριθμοι. Άλλοι σχετικά απλοί αλγόριθμοι είναι η ταξινόμηση με επιλογή και η ταξινόμηση με παρεμβολή. Ο πιο γρήγορος αλγόριθμος ταξινόμησης είναι η “γρήγορη ταξινόμηση” (quicksort). Θ 90. Να περιγράψετε τον αλγόριθμο ταξινόμησης ευθείας ανταλλαγής με ψευδοκώδικα.

Δεδομένα // n // Για i από 1 μέχρι n Διάβασε table[i] Τέλος_επανάληψης

Για i από 1 μέχρι n Εμφάνισε table[i] Τέλος_επανάληψης

Page 30: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 171

www.mathman.gr [email protected]

ΜΕΘΟΔΟΛΟΓΙΑ Μ 48) Ταξινόμηση πίνακα (φυσαλίδα): Αλγόριθμος Φυσαλίδα Δεδομένα // table, n // Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα -1 Αν table[j-1] > table[j] τότε temp table[j-1] table[j-1] table[j] table[j] temp Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // table // Τέλος Φυσαλίδα Παρατηρήσεις: Η ταξινόμηση ευθείας ανταλλαγής βασίζεται στην σύγκριση και ανταλλαγή γειτονικών στοιχείων. Στον παραπάνω αλγόριθμο, αν η λογική συνθήκη table[j-1] > table[j] είναι Αληθής, δηλαδή το j-1 στοιχείο είναι μεγαλύτερο από το j –οστό στοιχείο, τότε θα εκτελεστεί η ομάδα εντολών αντιμετάθεσης και το μικρότερο στοιχείο θα ανέβει κατά μία θέση στον πίνακα. Ο διπλός βρόχος δεν δηλώνει ύπαρξη δισδιάστατου πίνακα, αλλά εξυπηρετεί την ολοκλήρωση αυτής της μεθόδου ταξινόμησης ως εξής: Η τιμή της μεταβλητής i στον εξωτερικό βρόχο παίρνει αρχικά την τιμή 2 και παραμένει σταθερή μέχρις ότου η τιμή της μεταβλητής j στον εσωτερικό βρόχο να πάρει όλες τις τιμές από n μέχρι i= 2. Αυτό σημαίνει ότι σε πρώτη φάση θα γίνουν οι συγκρίσεις ζευγών γειτονικών στοιχείων ξεκινώντας από το τέλος του πίνακα (table[n-1] , table[n]) και θα φτάσουν στο ζεύγος table[1] , table[2] (είναι τα table[j-1] , table[j] όταν το j παίρνει την τελευταία τιμή i=2). Τελικά, στην πρώτη θέση του πίνακα (table[1]) “αναδύεται” (ανεβαίνει) το μικρότερο στοιχείο του πίνακα που δε θα συμμετέχει στις επόμενες συγκρίσεις. Στην συνέχεια, η τιμή της μεταβλητής i γίνεται 3 και παραμένει σταθερή μέχρις ότου η τιμή της μεταβλητής j στον εσωτερικό βρόχο να πάρει όλες τις τιμές από n μέχρι i= 3. Σ’ αυτή τη δεύτερη φάση θα γίνουν οι συγκρίσεις ζευγών γειτονικών στοιχείων ξεκινώντας από το τέλος του πίνακα και φτάνοντας στο ζεύγος table[2] , table[3] (είναι τα table[j-1] , table[j] όταν το j πάρει την τελευταία τιμή i=3). Τελικά, στη δεύτερη θέση του πίνακα (table[2]) “αναδύεται” το αμέσως μικρότερο στοιχείο του πίνακα, το οποίο επίσης δε θα συμμετέχει στις επόμενες συγκρίσεις (το i μεγαλώνει κατά ένα άρα το j παίρνει λιγότερες τιμές). Η διαδικασία αυτή συνεχίζεται όταν ολοκληρωθούν και οι συγκρίσεις για i = n.

Δεδομένα // n // Για i από 1 μέχρι n Διάβασε table[i] Τέλος_επανάληψης

temp table[j] table[j] table[j-1] table[j-1] temp Δεν έχει σημασία πιο στοιχείο του πίνακα θα εκχωρηθεί πρώτο στην temp. Η αντιμετάθεση θα γίνει ούτως ή άλλως.

table[j-1] > table[j] : αύξουσα σειρά table[j-1] < table[j] : φθίνουσα σειρά table[j] < table[j-1] : αύξουσα σειρά table[j] > table[j-1] : φθίνουσα σειρά

Page 31: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 172

www.mathman.gr [email protected]

Στο παράδειγμα που ακολουθεί, ο πίνακας table είναι (n=) 4 θέσεων, και αποτελείται από τα στοιχεία 9, 8, 7 και 6.

Η τιμή της μεταβλητής i είναι 2 και η τιμή της μεταβλητής j παίρνει διαδοχικά τις τιμές από (n=) 4 μέχρι (i=) 2. Λόγω των τιμών του j οι συγκρίσεις ξεκινούν από το τέλος του πίνακα. Η συνθήκη ελέγχεται 3 φορές (j = 4, 3, 2) και εκτελείται η αντιμετάθεση των τιμών. Η τιμή 6 θα φτάσει την πρώτη θέση του πίνακα.

Με τον ίδιο τρόπο (για i=3) το 7 με δύο συγκρίσεις (j = 4, 3) τη δεύτερη θέση,

ενώ (για i=4) με μία σύγκριση (j = 4) το 8 καταλήγει στην τρίτη και το 9 στην τέταρτη θέση.

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ K 162) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα Σ αν είναι σωστή ή το Λ αν είναι λανθασμένη.

1. Ο πίνακας που χρησιμοποιεί ένα μόνο δείκτη για την αναφορά των στοιχείων του ονομάζεται μονοδιάστατoς.

2. Ο πίνακας είναι μία δυναμική δομή δεδομένων. 3. Τα στοιχεία ενός πίνακα μπορεί να είναι διαφορετικού τύπου. 4. Σε μία δυναμική δομή δεδομένων τα δεδομένα αποθηκεύονται υποχρεωτικά σε συνεχόμενες θέσεις

μνήμης. 5. Η ταξινόμηση είναι μια από τις βασικές λειτουργίες επί των δομών δεδομένων. 6. Τα στοιχεία ενός πίνακα μπορούν να αποτελούνται από δεδομένα διαφορετικού τύπου. 7. Σκοπός της συγχώνευσης δύο ταξινομημένων πινάκων είναι η δημιουργία ενός τρίτου

ταξινομημένου πίνακα, που περιέχει τα στοιχεία των δύο πινάκων. 8. Η σειριακή αναζήτηση χρησιμοποιείται αποκλειστικά στους ταξινομημένους πίνακες.

9 8 7 6

table 9 8 6 7

9 6 8 7

6 9 8 7

i = 2 j= 4 j= 3 j= 2

6 9 7 8

6 7 9 8

6 9 8 7

i = 3 j= 4 j= 3

7 temp

table[3] > table[4]

i = 4

6 7 9 8

6 7 8 9

j= 4

j-1

j

j-1 j

… Για i από 2 μέχρι n Για j από n μέχρι i με_βήμα -1 Αν table[j-1] > table[j] τότε temp table[j-1] table[j-1] table[j] table[j] temp Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης …

Page 32: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 173

www.mathman.gr [email protected]

9. Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο γρήγορος αλγόριθμος ταξινόμησης. 10. Σε ένα μεγάλο και σύνθετο πρόγραμμα, η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει

ακόμη και σε αδυναμία εκτέλεσης του προγράμματος. 11. Οι δυναμικές δομές έχουν σταθερό μέγεθος. 12. Η ουρά και η στοίβα μπορούν να υλοποιηθούν με δομή πίνακα. 13. Η εξαγωγή (dequeue) στοιχείου γίνεται από το εμπρός άκρο της ουράς. 14. Η απώθηση (pop) στοιχείου γίνεται από το πίσω άκρο της στοίβας. 15. Κατά τη διαδικασία της ώθησης πρέπει να ελέγχεται αν η στοίβα είναι γεμάτη. 16. Η ώθηση (push) στοιχείου είναι μία από τις λειτουργίες της ουράς. 17. Οι λειτουργίες ώθηση και απώθηση είναι οι κύριες λειτουργίες σε μία στοίβα. 18. Όταν γίνεται σειριακή αναζήτηση κάποιου στοιχείου σε έναν μη ταξινομημένο πίνακα και το

στοιχείο δεν υπάρχει στον πίνακα, τότε υποχρεωτικά προσπελαύνονται όλα τα στοιχεία του πίνακα. 19. Σε μια στατική δομή το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά την

εκτέλεση του προγράμματος. 20. Η μέθοδος της σειριακής αναζήτησης δικαιολογείται στην περίπτωση που ο πίνακας είναι μη

ταξινομημένος και μικρού μεγέθους. 21. Η μέθοδος επεξεργασίας FIFO εφαρμόζεται στη λειτουργία της ουράς. 22. Η προσπέλαση είναι μια από τις βασικές πράξεις επί των δομών δεδομένων. 23. Η εγγραφή είναι δομή δεδομένων η οποία αποτελείται από πεδία που αποθηκεύουν χαρακτηριστικά. 24. Η δυναμική παραχώρηση μνήμης χρησιμοποιείται στις στατικές δομές δεδομένων. 25. Με τη λειτουργία της συγχώνευσης, δύο ή περισσότερες δομές δεδομένων συνενώνονται σε μία

ενιαία δομή. 26. Η στοίβα χρησιμοποιεί δύο δείκτες. 27. Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα 28. Η δυναμική παραχώρηση μνήμης χρησιμοποιείται στις δομές των πινάκων. 29. Η λειτουργία της ώθησης σχετίζεται με τη δομή της στοίβας.

30. Ο πίνακας είναι μία δομή που μπορεί να περιέχει στοιχεία διαφορετικού τύπου.

31. Οι λειτουργίες ώθηση και απώθηση είναι οι κύριες λειτουργίες σε μια ουρά.

32. Η ταξινόμηση των στοιχείων ενός πίνακα με τη μέθοδο της φυσαλίδας βασίζεται στην αρχή της

σύγκρισης και αντιμετάθεσης ζευγών γειτονικών στοιχείων του πίνακα.

33. Η μέθοδος της σειριακής αναζήτησης δικαιολογείται στην περίπτωση που ο πίνακας είναι μη

ταξινομημένος και μικρού μεγέθους.

Κ 163) Δίνεται ο παρακάτω αλγόριθμος: ΓΙΑ i ΑΠΟ ..... ΜΕΧΡΙ n ΓΙΑ j ΑΠΟ ...... ΜΕΧΡΙ ...... ΜΕ_ΒΗΜΑ ...... ΑΝ Α[j] ...... Α[j-1] ΤΟΤΕ temp←A[j] Α[......]←Α[......] Α[......]←temp ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Να γράψετε στο τετράδιό σας τον παραπάνω αλγόριθμο κατάλληλα συμπληρωμένο, έτσι ώστε να υλοποιεί την ταξινόμηση της φυσαλίδας με αύξουσα σειρά.

(ΕΠΑΝ ΕΣΠ 2008)

Page 33: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 174

www.mathman.gr [email protected]

K 164) Ο μονοδιάστατος αριθμητικός πίνακας Table έχει τα ακόλουθα στοιχεία:

1η 2 θέση η 3 θέση η 4 θέση η 5 θέση η θέση

43 72 -4 63 56

Δίνεται το παρακάτω τμήμα αλγορίθμου :

Για Ι από 2 μέχρι 5 Για J από 5 μέχρι Ι με_βήμα -1 Αν Table[J-1] < Table[J] τότε Αντιμετάθεσε Table[J-1], Table[J] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης Να μεταφερθεί στο τετράδιό σας ο ακόλουθος πίνακας και να συμπληρωθεί για όλες τις τιμές του J, που αντιστοιχούν σε I=2 και Ι=3. (ΕΣΠ 2002)

Πίνακας

Ι J 1 2η 3η 4η 5η η

2 5 43 72 -4 63 56

3

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 182) Να γραφεί ο αλγόριθμος ταξινόμησης φυσαλίδας σε μονοδιάστατο πίνακα table n θέσεων. Τα στοιχεία του πίνακα να ταξινομηθούν σε αύξουσα σειρά, δηλαδή από το μικρότερο στο μεγαλύτερο στοιχείο. Ε 183) Να γραφεί ο αλγόριθμος ταξινόμησης φυσαλίδας σε μονοδιάστατο πίνακα table n θέσεων. Τα στοιχεία του πίνακα να ταξινομηθούν σε φθίνουσα σειρά, δηλαδή από το μεγαλύτερο στο μικρότερο στοιχείο. Ε 184) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 100 θέσεων και θα εμφανίζει τους 5 μεγαλύτερους αριθμούς του πίνακα. Ε 185) Να γραφεί αλγόριθμος ο οποίος θα διαβάζει έναν πίνακα 100 θέσεων και θα εμφανίζει τους 5 μεγαλύτερους αριθμούς του πίνακα. Να γίνουν μόνο οι απαιτούμενες επαναλήψεις (περάσματα). (τροποποίηση της Ασκ 185)

Page 34: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 175

www.mathman.gr [email protected]

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

K 165) Το παρακάτω πρόγραμμα συγχωνεύει τα ταξινομημένα στοιχεία δύο πινάκων Α, Β σε έναν πίνακα Γ. Τι θα εμφανίσει αν στον πίνακα Α εισάγουμε διαδοχικά τα στοιχεία 2, 6, 9 (δηλαδή Ν=3) και στον πίνακα Β τα 3, 4, 8, 11, 19 (δηλαδή Μ=5); ΠΡΟΓΡΑΜΜΑ Συγχώνευση ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α[100], Β[100], Γ[200], I, J, K, N, M, Λ ΑΡΧΗ ΓΡΑΨΕ ‘Δώσε το πλήθος των στοιχείων που θα εισάγουμε στον πίνακα Α (< 100)’ ΔΙΑΒΑΣΕ N ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ N ΔΙΑΒΑΣΕ A[I] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ ‘Δώσε το πλήθος των στοιχείων που θα εισάγουμε στον πίνακα B (< 100)’ ΔΙΑΒΑΣΕ M ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ M ΔΙΑΒΑΣΕ B[I] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ I 1 J 1 K 1 ΌΣΟ I <= Ν ΚΑΙ J <= M ΕΠΑΝΑΛΑΒΕ ΑΝ A[I] < Β[J] ΤΟΤΕ Γ[Κ] A[I] K K + 1 I I + 1 ΑΛΛΙΩΣ Γ[Κ] Β[J] K K + 1 J J + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΝ I > N ΤΟΤΕ ΓΙΑ Λ ΑΠΟ Κ ΜΕΧΡΙ Ν+Μ Γ[Λ] Β[J] J J + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΛΛΙΩΣ ΓΙΑ Λ ΑΠΟ Κ ΜΕΧΡΙ Ν+Μ Γ[Λ] A[I] I I + 1 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΑΝ ΓΙΑ Λ ΑΠΟ 1 ΜΕΧΡΙ Ν+Μ ΓΡΑΨΕ Γ[Λ] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Page 35: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 176

www.mathman.gr [email protected]

ΜΕΘΟΔΟΛΟΓΙΑ

M 49) Ταξινόμηση σε παράλληλους μονοδιάστατους πίνακες Ιδιαίτερη προσοχή δίνουμε όταν αποθηκεύουμε δεδομένα σε δύο ή περισσότερους μονοδιάστατους πίνακες και τα στοιχεία του ενός σχετίζονται με τα στοιχεία του άλλου ή των άλλων ένα προς ένα. Σε μια τέτοια περίπτωση, η ταξινόμηση γίνεται με βάση τον ένα πίνακα, αλλά η αντιμετάθεση πρέπει να εκτελείται και στους άλλους πίνακες για να διατηρηθεί αναλλοίωτη η αρχική συσχέτιση. Προς αποφυγή λαθών, χρησιμοποιούμε κι άλλες μεταβλητές πχ temp1, temp2, αφού τα δεδομένα από πίνακα σε πίνακα μπορεί να είναι διαφορετικού τύπου πχ όνομα (χαρακτήρες) και ηλικία (ακέραιος).

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 186) Μία οικολογική οργάνωση διαθέτει στοιχεία για το ποσοστό των δασών για 50 διαφορετικές χώρες. Χρειάζεται να πάρει απόφαση για να διοργανώσει μία εκδήλωση διαμαρτυρίας στις 10 χώρες που έχουν το χαμηλότερο ποσοστό δασών. Να δοθεί αλγόριθμος που θα ταξινομεί τα ποσοστά δασών των χωρών με χρήση της μεθόδου ευθείας ανταλλαγής και θα εκτυπώνει τις 10 χώρες στις οποίες θα διοργανωθούν εκδηλώσεις. (ΔΤ6_3) Ε 187) Ένας μαθητής έχει μια συλλογή από δίσκους CD και για κάθε CD έχει καταγράψει στον υπολογιστή τον τίτλο και την χρονιά έκδοσής του. Να ταξινομηθούν τα CD με βάση την χρονιά τους και να υπολογισθεί ο αριθμός των CD που έχει ο μαθητής με χρονολογία έκδοσης πριν από το 1995. (ΔΣ4_3) Ε 188) Για την ανάδειξη του επταμελούς (7) Διοικητικού Συμβουλίου ενός Πολιτιστικού Συλλόγου υπάρχουν 20 υποψήφιοι. Να γράψετε αλγόριθμο ο οποίος: α. διαβάζει τα ονόματα των υποψηφίων και τα αποθηκεύει σε πίνακα. β. διαβάζει για κάθε υποψήφιο τον αριθμό των ψήφων που έλαβε και τον αποθηκεύει σε πίνακα. γ. εμφανίζει τα ονόματα των εκλεγέντων μελών του Διοικητικού Συμβουλίου κατά φθίνουσα σειρά ψήφων (να θεωρηθεί ότι δεν υπάρχουν περιπτώσεις ισοψηφίας). δ. διαβάζει το όνομα ενός υποψηφίου και ελέγχει αν ο συγκεκριμένος εκλέγεται ή όχι, εμφανίζοντας κατάλληλο μήνυμα.

(ΕΣΠ 2008)

Ο(νομα) Η(λικία) Χρήστου 23 Αντωνίου 31 Δημητρίου 20 Θεοδώρου 19

Ταξινόμηση με βάση την Ηλικία Ο(νομα) Η(λικία) Θεοδώρου 19 Δημητρίου 20 Χρήστου 23 Αντωνίου 31

Για i από 2 μέχρι 4 Για j από 4 μέχρι i με_βήμα -1 Αν Η[j-1] > Η[j] τότε temp Η[j] Η[j] Η[j-1] Η[j-1] temp temp1 O[j] O[j] O[j-1] O[j-1] temp1 Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 2 μέχρι 4 Για j από 4 μέχρι i με_βήμα -1 Αν Ο[j-1] > Ο[j] τότε temp Ο[j] Ο[j] Ο[j-1] Ο[j-1] temp temp1 Η[j] Η[j] Η[j-1] Η[j-1] temp1 Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Ταξινόμηση με βάση το Ονομα Ο(νομα) Η(λικία) Αντωνίου 31 Δημητρίου 20 Θεοδώρου 19 Χρήστου 23

Page 36: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 177

www.mathman.gr [email protected]

Αλγόριθμος Sequential_Search_ζ Δεδομένα // table, key, n // done ψευδής i 1 Όσο done=ψευδής και i <= n επανάλαβε Αν table[i] = key τότε done αληθής αλλιώς_αν table[i] > key τότε i n + 1 αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν done = ψευδής τότε Εμφάνισε “Δεν βρέθηκε” αλλιώς Εμφάνισε “Βρέθηκε στη θέση”, i Τέλος_αν Τέλος Sequential Search ζ

Αλγόριθμος Sequential_Search_η Δεδομένα // table, key, n // i 1 Όσο i <= n επανάλαβε Αν table[i] = key τότε Εμφάνισε “Βρέθηκε στη θέση”, i i n + 5 αλλιώς_αν table[i] > key τότε i n + 1 αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν i < n + 5 τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_η

Αλγόριθμος Sequential_Search_θ Δεδομένα // table, key, n // done ψευδής i 1 Όσο i <= n επανάλαβε Αν table[i] = key τότε done αληθής Εμφάνισε “Βρέθηκε στη θέση”, i αλλιώς_αν table[i] > key τότε i n + 1 Τέλος_αν i i + 1 Τέλος_επανάληψης Αν done = ψευδής τότε Εμφάνισε “Δεν βρέθηκε” Τέλος_αν Τέλος Sequential_Search_θ

ΜΕΘΟΔΟΛΟΓΙΑ M 50) Εύρεση ζητούμενης τιμής σε ταξινομημένο πίνακα: Μια άλλη περίπτωση αναζήτησης είναι τα στοιχεία του πίνακα να είναι ταξινομημένα, έστω σε αύξουσα σειρά, οπότε ο αλγόριθμος πρέπει να σταματήσει, μόλις συναντήσει κάποιο στοιχείο που είναι μεγαλύτερο από το αναζητούμενο. Για παράδειγμα, ο πίνακας Α περιέχει πέντε αταξινόμητους ακεραίους. Για την επιτυχή αναζήτηση της τιμής 1 απαιτούνται 3 προσπελάσεις. Αντίθετα, για την αναζήτηση της (ανύπαρκτης) τιμής 2 απαιτούνται 5 προσπελάσεις στον πίνακα, δηλαδή σάρωση ολόκληρου του πίνακα. Ο πίνακας Β περιέχει τα ίδια στοιχεία αλλά σε ταξινομημένη μορφή. Στον πίνακα αυτό η επιτυχής αναζήτηση της τιμής 1 απαιτεί 1 προσπέλαση και η ανεπιτυχής αναζήτηση για την τιμή 2 τερματίζει μετά την δεύτερη προσπάθεια και την ανάγνωση του αριθμού 3. Η περίπτωση ζ είναι σχεδόν ίδια με την α: ελέγχει μια λογική συνθήκη παραπάνω (table[i] > key) μέσα στην πολλαπλή δομή επιλογής (Αν … τότε … αλλιώς_αν … αλλιώς … Τέλος_αν), η οποία διακόπτει έμμεσα την αναζήτηση (δομή επανάληψης Όσο) όταν συναντήσει κάποιο στοιχείο που είναι μεγαλύτερο από το αναζητούμενο (δίνει την τιμή n + 1 στο i οπότε η i <= n γίνεται ψευδής). Με την ίδια λογική προκύπτει η περίπτωση η από την γ και η περίπτωση θ από την ε. Οι περιπτώσεις ζ και η χρησιμοποιούνται όταν κάθε στοιχείο υπάρχει μία μόνο φορά στον πίνακα, ενώ η περίπτωση θ χρησιμοποιείται αν κάποια στοιχεία εμφανίζονται στον πίνακα περισσότερες από μία φορές. Προσοχή: η χρήση της συνθήκης key >= table[i] στη δομή Όσο μαζί με την i <= n (με ταυτόχρονη απομάκρυνση της table[i] > key από τη δομή επιλογής), μοιάζει να δίνει επίσης σωστή και πιο σύντομη αλγοριθμική λύση στο πρόβλημα. Στην περίπτωση όμως που η ζητούμενη τιμή δεν υπάρχει στον πίνακα, το i

7 4 1 8 3

Α

1 3 4 7 8

Β

i n + 1 Τέλος_αν i i + 1

i n + 1 Τέλος_αν i i + 1

Page 37: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 178

www.mathman.gr [email protected]

... Όσο key >= table[i] και done=ψευδής και i <= n επανάλαβε ... Όσο key >= table[i] και i <= n επανάλαβε ... Όσο key <> table[i] και i <= n επανάλαβε ...

ΛΑΘΟΣ

θα πάρει τελικά την τιμή n + 1, αλλά ο πίνακας είναι n θέσεων, το table[n+1] δεν υπάρχει (συνεπώς δεν υπολογίζεται) και οδηγεί σε λάθος (καθιστά αδύνατη την ολοκλήρωση του αλγόριθμου).

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ Κ 166) Στην άσκηση ………, υπολογίσαμε και εκτυπώσαμε το πλήθος των CDs που κυκλοφόρησαν πριν το 1995, αφού είχε προηγηθεί ταξινόμηση σε αύξουσα σειρά με βάση την χρονολογία κυκλοφορίας. Να τροποποιηθεί έτσι ώστε να διακόπτεται η δομή επανάληψης για να μην γίνονται περιττοί έλεγχοι. k 0 Για i από 1 μέχρι n Αν X[i] < 1995 τότε k k + 1 Τέλος_αν Τέλος_επανάληψης Εμφάνισε k

Page 38: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 179

www.mathman.gr [email protected]

Κ 167) Δίνεται ο πίνακας table:

1 7 11 20 35 78 99 Ο οποίος είναι ταξινομημένος με αύξουσα διάταξη. Αν αναζητούμε στον πίνακα αυτό π.χ. τον αριθμό 15, ποιο είναι το ελάχιστο πλήθος επαναλήψεων που απαιτείται ώστε να απαντήσουμε ότι δεν υπάρχει στον πίνακα. Περιγράψτε τη σκέψη σας. Να συμπληρώσετε τις εντολές που λείπουν από τον αλγόριθμο σειριακής αναζήτησης, ώστε να λειτουργεί βέλτιστα σε ταξινομημένο πίνακα αποφεύγοντας τις περιττές επαναλήψεις, κατά την αναζήτηση κάποιου στοιχείου. Όσο (done = ψευδής) και (i <= Ν) επανάλαβε Αν (table[i] = key) τότε done αληθής Αλλιώς_αν (table[i] > key) τότε i N+1 Αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 189) Να γραφεί ο αλγόριθμος σειριακής αναζήτησης της τιμής key στον μονοδιάστατο ταξινομημένο (με αύξουσα σειρά) πίνακα table n θέσεων, ο οποίος όμως θα τερματίζει νωρίτερα την αναζήτηση στην περίπτωση που θα βρεθεί στοιχείο μεγαλύτερο από τη ζητούμενη τιμή. Ε 190) Δίνονται δύο μονοδιάστατοι πίνακες Α και Β, Ν θέσεων. Να γραφεί αλγόριθμος ο οποίος θα αντιμεταθέτει τα στοιχεία τους, δηλ. στο Α[1] θα εκχωρηθεί η τιμή του Β[1], ενώ το Β[1] θα πάρει την τιμή Α[1], κ.ο.κ. Ε 191) Δίνεται πίνακας Α 8x6. Να γραφεί αλγόριθμος ο οποίος θα ανταλλάσσει τα στοιχεία της 4ης και 5ης

γραμμής του πίνακα Α. Ε 192) Σε πίνακα 10 θέσεων εισάγουμε τον αριθμό ταυτότητας των υπαλλήλων μιας εταιρείας και σε δεύτερο πίνακα εισάγουμε για κάθε υπάλληλο τις αποδοχές του κατά τη διάρκεια του τελευταίου έτους. Οι αποδοχές εισάγονται ανά μήνα. Να γραφεί αλγόριθμος ο οποίος θα: α) διαβάζει τους πίνακες, ελέγχοντας ότι οι αποδοχές είναι μη αρνητικές β) ελέγχει αν υπάρχει υπάλληλος με ταυτότητα “Ν123456” και αν υπάρχει θα εμφανίζει τις αποδοχές του ανά μήνα. Αν δεν υπάρχει υπάλληλος με αυτόν τον αριθμό ταυτότητας θα εμφανίζει το μήνυμα “Δεν υπάρχει ο αρ. ταυτ.”, γ) υπολογίζει το μέσο όρο αποδοχών κάθε υπαλλήλου, δ) εμφανίζει τον αριθμό ταυτότητας των 3 υπαλλήλων που πήραν τα περισσότερα χρήματα στο έτος.

Page 39: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 180

www.mathman.gr [email protected]

Ε 193) Σε έναν αγώνα δισκοβολίας συμμετέχουν 20 αθλητές. Κάθε αθλητής έκανε μόνο μία έγκυρη ρίψη που καταχωρείται ως επίδοση του αθλητή και εκφράζεται σε μέτρα. Να αναπτύξετε αλγόριθμο που α. να διαβάζει για κάθε αθλητή το όνομα και την επίδοσή του, β. να ταξινομεί τους αθλητές ως προς την επίδοσή τους, γ. να εμφανίζει τα ονόματα και τις επιδόσεις των τριών πρώτων αθλητών, αρχίζοντας από εκείνον με την καλύτερη επίδοση, δ. να εμφανίζει τα ονόματα και τις επιδόσεις των πέντε τελευταίων αθλητών, αρχίζοντας από εκείνον με την καλύτερη επίδοση.

(ΕΣΠ 2004) Σημείωση: Να θεωρήσετε ότι δεν υπάρχουν αθλητές με την ίδια ακριβώς επίδοση. Ε 194) Κατά τη διάρκεια πρωταθλήματος μπάσκετ μια ομάδα που αποτελείται από 12 παίκτες έδωσε 20 αγώνες, στους οποίους συμμετείχαν όλοι οι παίκτες. Να αναπτύξετε αλγόριθμο ο οποίος: α) να διαβάζει τα ονόματα των παικτών και να τα αποθηκεύει σε μονοδιάστατο πίνακα β) να διαβάζει τους πόντους που σημείωσε κάθε παίκτης σε κάθε αγώνα και να τους αποθηκεύει σε πίνακα δυο διαστάσεων γ) να υπολογίζει για κάθε παίκτη το συνολικό αριθμό πόντων του σε όλους τους αγώνες και το μέσο όρο πόντων του δ) να εκτυπώνει τα ονόματα των παικτών της ομάδας και το μέσο όρο πόντων του κάθε παίκτη ταξινομημένα με βάση το μέσο όρο τους κατά φθίνουσα σειρά. (ΕΠΑΝ 2003) Ε 195) Για την πρώτη φάση της Ολυμπιάδας Πληροφορικής δήλωσαν συμμετοχή 500 μαθητές. Οι μαθητές διαγωνίζονται σε τρεις γραπτές εξετάσεις και βαθμολογούνται με ακέραιους βαθμούς στη βαθμολογική κλίμακα από 0 έως και 100. Να γράψετε αλγόριθμο ο οποίος: α. Να διαβάζει τα ονόματα των μαθητών και να τα αποθηκεύει σε μονοδιάστατο πίνακα. β. Να διαβάζει τους τρεις βαθμούς που έλαβε κάθε μαθητής και να τους αποθηκεύει σε δισδιάστατο πίνακα. γ. Να υπολογίζει το μέσο όρο των βαθμών του κάθε μαθητή. δ. Να εκτυπώνει τα ονόματα και δίπλα τους το μέσο όρο των βαθμών τους ταξινομημένα με βάση τον μέσο όρο κατά φθίνουσα σειρά. Σε περίπτωση ισοβαθμίας η σειρά ταξινόμησης των ονομάτων να είναι αλφαβητική. ε. Να υπολογίζει και να εκτυπώνει το πλήθος των μαθητών με το μεγαλύτερο μέσο όρο. Παρατήρηση: Θεωρήστε ότι οι βαθμοί των μαθητών είναι μεταξύ του 0 και του 100 και ότι τα ονόματα των μαθητών είναι γραμμένα με μικρά γράμματα.

(Πανελλαδικές Εξετάσεις 2004) Ε 196) Σ’ ένα διαγωνισμό συμμετέχουν 100 υποψήφιοι. Κάθε υποψήφιος διαγωνίζεται σε 50 ερωτήσεις πολλαπλής επιλογής. Να αναπτύξετε αλγόριθμο που να κάνει τα παρακάτω: α. Να καταχωρεί σε πίνακα ΑΠ[100,50] τα αποτελέσματα των απαντήσεων του κάθε υποψηφίου σε κάθε ερώτηση. Κάθε καταχώρηση μπορεί να είναι μία από τις παρακάτω:

i. Σ αν είναι σωστή η απάντηση ii. Λ αν είναι λανθασμένη η απάντηση και iii. Ξ αν ο υποψήφιος δεν απάντησε

Να γίνεται έλεγχος των δεδομένων εισόδου. β. Να βρίσκει και να τυπώνει τους αριθμούς των ερωτήσεων που παρουσιάζουν το μεγαλύτερο βαθμό δυσκολίας, δηλαδή έχουν το μικρότερο πλήθος σωστών απαντήσεων. γ. Αν κάθε Σ βαθμολογείται με 2 μονάδες, κάθε Λ με –1 μονάδα και κάθε Ξ με 0 μονάδες, τότε

i. Να δημιουργεί ένα μονοδιάστατο πίνακα ΒΑΘ[100], κάθε στοιχείο του οποίου θα περιέχει αντίστοιχα τη συνολική βαθμολογία ενός υποψηφίου.

ii. Να τυπώνει το πλήθος των υποψηφίων που συγκέντρωσαν βαθμολογία μεγαλύτερη από 50. (Πανελλαδικές Εξετάσεις 2005)

Page 40: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 181

www.mathman.gr [email protected]

Ε 197) Για την παρακολούθηση των θερμοκρασιών της επικράτειας κατά το μήνα Μάιο καταγράφεται κάθε μέρα η θερμοκρασία στις 12:00 το μεσημέρι για 20 πόλεις. Να σχεδιάσετε αλγόριθμο που: α. θα διαβάζει τα ονόματα των 20 πόλεων και τις αντίστοιχες θερμοκρασίες για κάθε μία από τις ημέρες του μήνα και θα καταχωρεί τα στοιχεία σε πίνακες. β. θα διαβάζει το όνομα μίας πόλης και θα εμφανίζει τη μέγιστη θερμοκρασία της στη διάρκεια του μήνα. Αν δεν υπάρχει η πόλη στον πίνακα, θα εμφανίζει κατάλληλο διαμορφωμένο μήνυμα. γ. θα εμφανίζει το πλήθος των ημερών που η μέση θερμοκρασία των 20 πόλεων ξεπέρασε τους 20 οC, αλλά όχι τους 30 οC.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2006) Ε 198) Μια δισκογραφική εταιρεία καταγράφει στοιχεία για ένα έτος για κάθε ένα από τα 20 CDs που κυκλοφόρησε. Τα στοιχεία αυτά είναι ο τίτλος του CD, ο τύπος της μουσικής που περιέχει και οι μηνιαίες του πωλήσεις (ποσά σε ευρώ) στη διάρκεια του έτους. Οι τύποι μουσικής είναι δύο: «ορχηστρική» και «φωνητική».

Να αναπτυχθεί αλγόριθμος ο οποίος:

α. Για κάθε ένα από τα 20 CDs, να διαβάζει τον τίτλο, τον τύπο της μουσικής και τις πωλήσεις του για κάθε μήνα, ελέγχοντας την έγκυρη καταχώριση του τύπου της μουσικής.

β. Να εμφανίζει τον τίτλο ή τους τίτλους των CDs με τις περισσότερες πωλήσεις τον 3ο μήνα του έτους.

γ. Να εμφανίζει τους τίτλους των ορχηστρικών CDs με ετήσιο σύνολο πωλήσεων τουλάχιστον 5000 ευρώ.

δ. Να εμφανίζει πόσα από τα CDs είχαν σύνολο πωλήσεων στο δεύτερο εξάμηνο μεγαλύτερο απ’ ό,τι στο πρώτο.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2007) Ε 199) Στο ευρωπαϊκό πρωτάθλημα ποδοσφαίρου συμμετέχουν 16 ομάδες. Κάθε ομάδα συμμετέχει σε 30 αγώνες. Να γράψετε αλγόριθμο ο οποίος: α. Διαβάζει σε μονοδιάστατο πίνακα ΟΝ[16] τα ονόματα των ομάδων. β. Διαβάζει σε δισδιάστατο πίνακα ΑΠ[16,30] τα αποτελέσματα σε κάθε αγώνα ως εξής: Τον χαρακτήρα «Ν»για ΝΙΚΗ Τον χαρακτήρα «Ι» για ΙΣΟΠΑΛΙΑ Τον χαρακτήρα «Η» για ΗΤΤΑ και κάνει τον απαραίτητο έλεγχο εγκυρότητας των δεδομένων. γ. Για κάθε ομάδα υπολογίζει και καταχωρεί σε δισδιάστατο πίνακα ΠΛ[16,3] το πλήθος των νικών στην πρώτη στήλη, το πλήθος των ισοπαλιών στη δεύτερη στήλη, και το πλήθος των ηττών στην τρίτη στήλη του πίνακα. Ο πίνακας αυτός πρέπει προηγουμένως να έχει μηδενισθεί. δ. Με βάση τα στοιχεία του πίνακα ΠΛ[16,3] υπολογίζει και καταχωρεί σε νέο πίνακα ΒΑΘ[16] τη συνολική βαθμολογία κάθε ομάδας, δεδομένου ότι για κάθε νίκη η ομάδα παίρνει τρεις βαθμούς, για κάθε ισοπαλία έναν βαθμό και για κάθε ήττα κανέναν βαθμό. ε. Εμφανίζει τα ονόματα και τη βαθμολογία των ομάδων ταξινομημένα σε φθίνουσα σειρά με βάση τη βαθμολογία.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2008) Ε 200) Σ’ ένα διαγωνισμό συμμετέχουν 5000 διαγωνιζόμενοι και εξετάζονται σε δύο μαθήματα. Να γράψετε αλγόριθμο που 1. να διαβάζει και να καταχωρίζει σε κατάλληλους πίνακες για κάθε διαγωνιζόμενο τον αριθμό μητρώου, το ονοματεπώνυμο και τους βαθμούς που πήρε στα δύο μαθήματα. Οι αριθμοί μητρώου θεωρούνται μοναδικοί. Η βαθμολογική κλίμακα είναι από 0 έως και 100. 2. να εμφανίζει κατάσταση επιτυχόντων με την εξής μορφή:

Page 41: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 182

www.mathman.gr [email protected]

Αριθ. Μητρώου Ονοματεπώνυμο Μέσος Όρος Επιτυχών θεωρείται ότι είναι αυτός που έχει μέσο όρο βαθμολογίας μεγαλύτερο ή ίσο του 60. 3. να διαβάζει έναν αριθμό μητρώου και

α. σε περίπτωση που ο αριθμός μητρώου είναι καταχωρισμένος στον πίνακα, να εμφανίζεται ο αριθμός μητρώου, το ονοματεπώνυμο, ο μέσος όρος βαθμολογίας και η ένδειξη «ΕΠΙΤΥΧΩΝ» ή «ΑΠΟΤΥΧΩΝ», ανάλογα με τον μέσο όρο. β. σε περίπτωση που ο αριθμός μητρώου δεν είναι καταχωρισμένος στον πίνακα, να εμφανίζεται το μήνυμα «Ο αριθμός μητρώου δεν αντιστοιχεί σε διαγωνιζόμενο».

(ΕΠΑΝ ΕΣΠ 2004) Σημείωση: Δεν απαιτείται έλεγχος εγκυρότητας καταχώρισης δεδομένων. Ε 201) Μια εταιρεία στατιστικών ερευνών, ρώτησε τη γνώμη 200 ατόμων για 10 θέματα. Να γραφεί αλγόριθμος ο οποίος θα διαβάζει κάθε ερώτημα καθώς και τις απαντήσεις των 200 ατόμων. Οι απαντήσεις είναι: ΝΑΙ, ΌΧΙ, ΔΕΝ ΞΕΡΩ/ΔΕΝ ΑΠΑΝΤΩ. Αφού αποθηκεύσει τα στοιχεία στους κατάλληλους πίνακες, να εμφανίζει κάθε ερώτημα μαζί με το ποσοστό των τριών διαφορετικών απαντήσεων. Ε 202) Κατά τη διάρκεια Διεθνών Αγώνων Στίβου στον ακοντισμό έλαβαν μέρος δέκα (10) αθλητές. Κάθε αθλητής έκανε έξι (6) έγκυρες ρίψεις που καταχωρούνται ως επιδόσεις σε μέτρα. Να αναπτύξετε αλγόριθμο, ο οποίος : Α. εισάγει σε πίνακα δύο διαστάσεων τις επιδόσεις όλων των αθλητών Β. υπολογίζει και καταχωρεί σε μονοδιάστατο πίνακα την καλύτερη από τις επιδόσεις κάθε αθλητή Γ. ταξινομεί τις καλύτερες επιδόσεις των αθλητών που καταχωρήθηκαν στο μονοδιάστατο πίνακα Δ. βρίσκει την καλύτερη επίδοση του αθλητή που πήρε το χάλκινο μετάλλιο (τρίτη θέση).

(ΕΠΑΝ 2001) Παρατήρηση : Υποθέτουμε ότι όλες οι επιδόσεις είναι μεταξύ τους διαφορετικές. Ε 203) Μια επιχείρηση που εμπορεύεται τηλεοράσεις διαθέτει 20 μοντέλα. Να γραφεί αλγόριθμος που: α. να διαβάζει τα ονόματα των μοντέλων και να τα αποθηκεύει σε μονοδιάστατο πίνακα. β. να διαβάζει για κάθε μοντέλο τον αριθμό των συσκευών που πουλήθηκαν κάθε μήνα, για ένα έτος, και να τον αποθηκεύει σε πίνακα δύο διαστάσεων, ελέγχοντας ώστε ο αριθμός αυτός να μην είναι αρνητικός. γ. να υπολογίζει και να εμφανίζει το σύνολο των ετήσιων πωλήσεων του κάθε μοντέλου. δ. να εμφανίζει κατά αλφαβητική σειρά τα ονόματα των μοντέλων καθώς και τον ετήσιο συνολικό αριθμό των συσκευών που πουλήθηκαν για κάθε μοντέλο.

(ΕΣΠ 2009)

Ε 204) Στις γενικές εξετάσεις, κάθε γραπτό βαθμολογείται από δύο βαθμολογητές στην κλίμακα 1-100. Όταν η διαφορά των δύο βαθμών είναι μεγαλύτερη από δώδεκα μονάδες, το γραπτό αναβαθμολογείται, δηλαδή βαθμολογείται και από τρίτο βαθμολογητή. Στα γραπτά που δεν έχουν αναβαθμολογηθεί, ο τελικός βαθμός προκύπτει από το πηλίκο της διαίρεσης του αθροίσματος των βαθμών των δύο βαθμολογητών διά δέκα. Στα γραπτά που έχουν αναβαθμολογηθεί, ο τελικός βαθμός προκύπτει με τον ίδιο τρόπο, αλλά λαμβάνονται υπόψη οι δύο μεγαλύτεροι βαθμοί. Για στατιστικούς λόγους, οι τελικοί βαθμοί (ΤΒ) κατανέμονται στις παρακάτω βαθμολογικές κατηγορίες:

1 2η 3

η 4

η 5

η 6

η

η

0 ≤ ΤΒ < 5 5 ≤ ΤΒ < 10 10 ≤ TΒ < 12 12 ≤ ΤΒ < 15 15 ≤ ΤΒ < 18 18 ≤ ΤΒ ≤ 20

Page 42: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 183

www.mathman.gr [email protected]

Σ' ένα βαθμολογικό κέντρο υπάρχουν 780 γραπτά στο μάθημα «Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον».

Οι βαθμοί των δύο βαθμολογητών έχουν καταχωριστεί στις δύο πρώτες στήλες ενός πίνακα Β[780,3]. Να γραφεί αλγόριθμος ο οποίος:

Α. Να ελέγχει, για κάθε γραπτό, αν χρειάζεται αναβαθμολόγηση. Αν χρειάζεται, να ζητάει από τον χρήστη τον βαθμό του τρίτου βαθμολογητή και να τον εισάγει στην αντίστοιχη θέση της τρίτης στήλης, διαφορετικά να εισάγει την τιμή -1. Δεν απαιτείται έλεγχος εγκυρότητας.

Β. Να υπολογίζει τον τελικό βαθμό κάθε γραπτού και να τον καταχωρίζει στην αντίστοιχη θέση ενός πίνακα Τ[780]. Γ. Να εμφανίζει τη βαθμολογική κατηγορία (ή τις κατηγορίες) με το μεγαλύτερο πλήθος γραπτών.

(ΕΠΑΝ 2009) E 205) Θεωρούμε δεδομένο τον πίνακα ΚΛΗΣΕΙΣ[10] στον οποίο έχουν καταγραφεί οι τελευταίες 10 εισερχόμενες κλήσεις που έγιναν στο κινητό σας. Δεδομένου του γεγονότος ότι κάποιος φίλος μπορεί να έχει καλέσει 2 ή περισσότερες φορές, να γραφεί αλγόριθμος ο οποίος θα εμφανίζει μία μόνο φορά τα ονόματα των φίλων που σας κάλεσαν καθώς και το πλήθος αυτών των διαφορετικών ονομάτων.

ΑΣΚΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ K 168) Στην άσκηση ………, υπολογίσαμε και εκτυπώσαμε το πλήθος των μαθητών με το μεγαλύτερο μέσο όρο χρησιμοποιώντας το ακόλουθο τμήμα αλγορίθμου. Να τροποποιηθεί έτσι ώστε να διακόπτεται η δομή επανάληψης για να μην γίνονται περιττοί έλεγχοι. n 1 max MO[1] Για i από 2 μέχρι 500 Αν MO[i] = max τότε n n + 1 Τέλος_αν Τέλος_επανάληψης Εκτύπωσε n

Page 43: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 184

www.mathman.gr [email protected]

K 169) Να γραφεί αλγόριθμος ο οποίος θα εμφανίζει μία μόνο φορά το κάθε χρώμα από αυτά που υπάρχουν στον ταξινομημένο πίνακα. Να δώσετε λύσεις με/χωρίς βοηθητικό πίνακα. Κ 170) Στην άσκηση ………, επεξεργαστήκαμε το σύνολο υπερωριών κάθε υπαλλήλου και αποφανθήκαμε αν όλοι έχουν κάνει τουλάχιστο μια ώρα υπερωρίας. Να γραφεί ισοδύναμο τμήμα αλγορίθμου με χρήση λογικής μεταβλητής. k 0 Για i από 1 μέχρι 10 Αν Υ[i] < > 0 τότε k k + 1 Τέλος_αν Τέλος_επανάληψης Αν k = 10 τότε Εμφάνισε ‘’Όλοι’’ Τέλος_αν

Κίτρινο Κίτρινο Κίτρινο Κόκκινο Κόκκινο Μπλε Μπλε Μπλε Πράσινο Πράσινο

Α

10 χ

ρώμα

τα

Page 44: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 185

www.mathman.gr [email protected]

ΜΕΘΟΔΟΛΟΓΙΑ M 51) Ταξινόμηση σε δισδιάστατους πίνακες Στο προηγούμενο παράδειγμα θεωρήσαμε δύο μονοδιάστατους πίνακες, Όνομα και Ηλικία, αφού άλλωστε τα δεδομένα είναι χαρακτήρες και αριθμοί, δηλαδή διαφορετικού τύπου. Η ταξινόμηση γίνεται λίγο πιο πολύπλοκη όταν στη λύση του προβλήματος υπάρχει δισδιάστατος πίνακας. Ουσιαστικά χρειάζεται να γνωρίζουμε ότι στον αλγόριθμο της ταξινόμησης (και μόνο σ’ αυτόν), το j αντιστοιχεί στις γραμμές και θα χρειαστεί ένας δεύτερος δείκτης, έστω κ, για τις στήλες (το i μας είναι αδιάφορο). Ακολουθούν μερικά παραδείγματα:

Για i από 2 μέχρι 4 Για j από 4 μέχρι i με_βήμα -1 Αν A[j-1,1] > A[j,1] τότε temp A[j,1] A[j,1] A[j-1,1] A[j-1,1] temp temp A[j,2] A[j,2] A[j-1,2] A[j-1,2] temp Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 2 μέχρι 4 Για j από 4 μέχρι i με_βήμα -1 Αν Β[j-1,9] > Β[j,9] τότε temp Β[j,9] Β[j,9] Β[j-1,9] Β[j-1,9] temp Για κ από 1 μέχρι 8 temp B[j,κ] B[j,κ] B[j-1,κ] B[j-1,κ] temp Τέλος_επανάληψης Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

Για i από 2 μέχρι 4 Για j από 4 μέχρι i με_βήμα -1 Αν A[j-1,1] > A[j,1] τότε temp A[j,1] A[j,1] A[j-1,1] A[j-1,1] temp temp A[j,2] A[j,2] A[j-1,2] A[j-1,2] temp Για κ από 1 μέχρι 3 temp2 B[j,κ] B[j,κ] B[j-1,κ] B[j-1,κ] temp2 Τέλος_επανάληψης Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 206) Ένας μαθητής αποθηκεύει τα επώνυμα και τα ονόματα 50 φίλων του σε ένα πίνακα δύο διαστάσεων και τα τηλέφωνά τους σε έναν μονοδιάστατο. Να γραφεί αλγόριθμος ο οποίος θα: α) καταχωρεί τα δεδομένα στους πίνακες, β) ταξινομεί τους πίνακες με βάση το επώνυμο σε αύξουσα σειρά, γ) διαβάζει κάποιο επώνυμο και θα το αναζητά στον πίνακα. Αν βρεθεί να εμφανιστεί το όνομά του καθώς και το τηλέφωνό του. Η αναζήτηση θα διακόπτεται αν βρεθεί κάποιο επώνυμο μεγαλύτερο αλφαβητικά από το ζητούμενο. Να γραφεί επίσης μόνο το τμήμα δηλώσεων σταθερών και μεταβλητών του αντίστοιχου προγράμματος σε γλώσσα προγραμματισμού ΓΛΩΣΣΑ.

Ταξινόμηση στον πίνακα Α με βάση το Επώνυμο: Επώνυμο Όνομα Θεοδώρου Νίκος Δημητρίου Κώστας Χρήστου Γιάννης Αντωνίου Ανδρέας

Ταξινόμηση (στους πίνακες Α και Β) με βάση το Επώνυμο στον Α: Επώνυμο Όνομα Β(αθμοί) Θεοδώρου Νίκος Δημητρίου Κώστας Χρήστου Γιάννης Αντωνίου Ανδρέας

Ταξινόμηση στον πίνακα Β με βάση το ΜΟ:

Β(αθμοί) 8 Μαθήματα ΜΟ

Page 45: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 186

www.mathman.gr [email protected]

ΘΕΩΡΙΑ

Θ 91. Ποιες είναι οι Δομές Δεδομένων δευτερεύουσας μνήμης; Σε μεγάλες πρακτικές εμπορικές/επιστημονικές εφαρμογές, το μέγεθος της κύριας μνήμης δεν επαρκεί για την αποθήκευση των δεδομένων. Στην περίπτωση αυτή χρησιμοποιούνται ειδικές δομές για την αποθήκευση των δεδομένων στη δευτερεύουσα μνήμη, δηλαδή κυρίως στο μαγνητικό δίσκο. Οι ειδικές αυτές δομές ονομάζονται αρχεία (files). Θ 92. Σε τι διαφέρει η κύρια από τη δευτερεύουσα μνήμη; Μία σημαντική διαφορά μεταξύ κύριας μνήμης και μαγνητικού δίσκου (δευτερεύουσα) είναι ότι στην περίπτωση του δίσκου, τα δεδομένα δεν χάνονται, αν διακοπεί η ηλεκτρική παροχή. Τα δεδομένα των αρχείων διατηρούνται ακόμη και μετά τον τερματισμό ενός προγράμματος, κάτι που δεν συμβαίνει στην περίπτωση των δομών της κύριας μνήμης, όπως είναι οι πίνακες, όπου τα δεδομένα χάνονται όταν τελειώσει το πρόγραμμα. Θ 93. Ποια είναι τα στοιχεία των αρχείων, από τι αποτελούνται και πως ταυτοποιούνται; Τα στοιχεία ενός αρχείου ονομάζονται εγγραφές (records), όπου κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία (fields), που ταυτοποιούν την εγγραφή, και από άλλα πεδία που περιγράφουν διάφορα χαρακτηριστικά της εγγραφής. Για παράδειγμα, έστω η εγγραφή ενός μαθητή με πεδία: Αριθμός Μητρώου, Ονοματεπώνυμο, Έτος Γέννησης, Τάξη, Τμήμα. Το πεδίο Αριθμός Μητρώου ταυτοποιεί την εγγραφή και ονομάζεται πρωτεύον κλειδί (primary key) ή απλά κλειδί. Το πεδίο Ονοματεπώνυμο επίσης ταυτοποιεί την εγγραφή και γι’ αυτό αποκαλείται δευτερεύον κλειδί (secondary key), αν υπάρχει πρωτεύον κλειδί. Θ 94. Από ποιες απόψεις έχει ενδιαφέρον η αναζήτηση δεδομένων σε αρχεία (αλλά και στους πίνακες); Το πρόβλημα της αναζήτησης (searching) μίας εγγραφής με βάση την τιμή του πρωτεύοντος ή ενός δευτερεύοντος κλειδιού σε αρχεία είναι ιδιαίτερα ενδιαφέρον, αν ληφθεί υπ’ όψη η μεγάλη ποικιλία των χαρακτηριστικών τόσο της δομής (για παράδειγμα, στατική ή δυναμική, τρόπος οργάνωσης, μέσο αποθήκευσης κλπ), του τύπου των δεδομένων (για παράδειγμα, ακέραιοι, κείμενο, χαρτογραφικά δεδομένα, χρονοσειρές κλπ), όσο και της αναζήτησης (δηλαδή, με βάση το πρωτεύον ή το δευτερεύον κλειδί κλπ).

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ Ε 207) Ο αλγόριθμος της φυσαλίδας, όπως διατυπώθηκε στην παράγραφο 3.7 του σχολικού βιβλίου, έχει το μειονέκτημα ότι δεν είναι αρκετά «έξυπνος» ώστε να διαπιστώνει στην αρχή ή στο μέσο της διαδικασίας αν ο πίνακας είναι ταξινομημένος. Να σχεδιασθεί μία παραλλαγή του αλγορίθμου αυτού που να σταματά όταν διαπιστωθεί ότι τα στοιχεία του πίνακα είναι ήδη ταξινομημένα. Υπόδειξη: Να χρησιμοποιήσετε μία βοηθητική μεταβλητή που να ελέγχει στο τέλος κάθε επανάληψης του εξωτερικού βρόχου (Για i από 2 μέχρι n), αν για την τρέχουσα τιμή του i έγιναν αντιμεταθέσεις στοιχείων. (ΔΤ2_Κεφ_3) Ε 208) Ένας διαγωνισμός τραγουδιού στην Ευρώπη διεξάγεται ως εξής. Γίνεται μία πρώτη ακρόαση των τραγουδιών κάθε χώρας από την κριτική επιτροπή η οποία δίνει κάποιους βαθμούς σε κάθε τραγούδι (από 1 – 100). Έστω ότι είναι γνωστοί οι βαθμοί που δόθηκαν στο τραγούδι κάθε χώρας. Να γραφεί ένας αλγόριθμος που θα επιλέγει για τη συνέχεια στη δεύτερη φάση του διαγωνισμού τις χώρες με τη μεγαλύτερη βαθμολογία κάθε φορά ώστε το άθροισμα όλων των τραγουδιών που θα προχωρήσουν στη δεύτερη φάση να είναι μικρότερο από 1000 βαθμούς. (ΔΣ5_Κεφ_4)

Page 46: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 187

www.mathman.gr [email protected]

Ε 209) Μια εταιρεία υπολογιστών έχει 10 υπαλλήλους καθένας εκ των οποίων εργάζεται 24 ημέρες το μήνα και έχει το δικαίωμα να κάνει μία ώρα υπερωρία την ημέρα. Για να διαχειρίζεται την παραπάνω πληροφορία η εταιρεία, χρησιμοποιεί δύο πίνακες. Τον πίνακα ΟΝΟΜΑ[10] όπου αποθηκεύει τα ονόματα των υπαλλήλων και έναν πίνακα ΥΠΕΡΩΡΙΑ[10,24] όπου αποθηκεύει τις υπερωρίες των υπαλλήλων, έτσι ώστε το i-στο στοιχείο του πίνακα ΟΝΟΜΑ αντιστοιχεί στην i-οστή γραμμή του πίνακα ΥΠΕΡΩΡΙΑ. Κάθε στοιχείο του πίνακα ΥΠΕΡΩΡΙΑ έχει τιμή 1 ή 0, ανάλογα με το αν ο υπάλληλος έκανε υπερωρία την αντίστοιχη ημέρα. Δημιουργήστε πρόγραμμα που να εκτελεί τα ακόλουθα: α. Διαβάζει τους πίνακες με τα στοιχεία των ονομάτων και των υπερωριών. β. Δημιουργεί πίνακα 10 θέσεων που περιέχει το άθροισμα των υπερωριών κάθε υπαλλήλου. γ. Εμφανίζει μια λίστα με το όνομα κάθε υπαλλήλου ακολουθούμενου από τον αριθμό των υπερωριών του, ταξινομημένη κατά φθίνουσα σειρά αριθμού υπερωριών. δ. Εμφανίζει κατάλληλο μήνυμα αν όλοι οι εργαζόμενοι έκαναν μία τουλάχιστον ώρα υπερωρίας. Ε 210) Σε μία παρτίδα τάβλι ‘’έπεσαν’’ συνολικά 50 ζαριές. Να καταχωρηθούν οι ζαριές αυτές σε δισδιάστατο πίνακα Ζ 2x50 (να γίνεται έλεγχος δεδομένων ότι οι τιμές είναι μεταξύ του 1 και του 6) και έπειτα να υπολογισθεί και να εμφανισθεί το ποσοστό επί τοις εκατό εκείνων που ήταν διπλές (1-1 ή 2-2 ή … 6-6). Ε 211) Να γραφεί αλγόριθμος ο οποίος: Α) θα διαβάζει ένα πίνακα Α 100 θέσεων με τα αποτελέσματα ρίψης κέρματος (να γίνεται ο έλεγχος αποδεκτών τιμών για κορώνα ή γράμματα). Πριν την ρίψη του κέρματος, ο χρήστης θα απαντά με «ΝΑΙ» ή «ΟΧΙ» αν προτίθεται να το ρίξει το κέρμα (να γίνεται επίσης ο έλεγχος δεδομένων εισόδου) (βλέπε Ε 124) Β) θα υπολογίζει και θα εμφανίζει ποιος είναι ο νικητής (ποια από τις δύο όψεις είχε τις περισσότερες εμφανίσεις). Γ) θα υπολογίζει και θα εμφανίζει το μέγιστο πλήθος των διαδοχικών στοιχείων του πίνακα που έχουν την τιμή ‘’Κ’’ (κορώνα). Γ, Κ, Κ, Γ, Κ, Κ, Κ, Κ, Γ, Γ, Κ … Ε 212) Να γραφεί αλγόριθμος ο οποίος: Α) θα δέχεται μια πρόταση το πολύ 100 χαρακτήρων και θα εμφανίζει τον αριθμό των λέξεων από τις οποίες αποτελείται. Ο κενός χαρακτήρας χωρίζει τις λέξεις και η τελεία δηλώνει το τέλος της πρότασης αν δεν έχουν εξαντληθεί οι θέσεις του πίνακα Χ[100]. Θεωρούμε δεδομένα τα ακόλουθα:

• κάθε χαρακτήρας αποθηκεύεται σε μία θέση του πίνακα • δεν εισάγονται δύο (ή περισσότεροι) συνεχόμενοι κενοί χαρακτήρες • η πρόταση δεν μπορεί να ξεκινήσει ούτε να τελειώσει με κενό χαρακτήρα

Β) Θα ελέγχει αν στην πρόταση υπάρχει η συλλαβή ‘’θα’’ και αν υπάρχει θα εμφανίζει πόσες φορές. Αν όχι θα εμφανίζει σχετικό μήνυμα. (πχ η πρόταση ‘’έμαθα ότι οι εξετάσεις θα ξεκινήσουν στις 20 Μαΐου.’’ ) Γ) Γνωρίζοντας ότι στο πληκτρολόγιο μας, το πλήκτρο του χαρακτήρα ‘α’ είναι ελαττωματικό, να υπολογιστεί και να εμφανισθεί το μέγιστο πλήθος συνεχόμενων εμφανίσεων του χαρακτήρα ‘α’ και να εμφανισθεί σχετικό μήνυμα αν στην πρόταση υπάρχει λάθος (τουλάχιστον 2 συνεχόμενα ‘α’). (πχ η πρόταση ‘’έμααθα ότι οι εξετάσεις θα ξεκινήσουν στις 20 Μααααΐου.’’ )

Page 47: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 188

www.mathman.gr [email protected]

E 213) Σε ένα πίνακα Π[13,20] αποθηκεύουμε τα προγνωστικά 20 φιλάθλων σε 13 αγώνες που περιέχονται στο δελτίο του ΠΡΟΠΟ. Να γίνεται έλεγχος δεδομένων έτσι ώστε οι τιμές του πίνακα είναι μόνο ‘’1’’, ‘’Χ’’ ή ‘’2’’, όπου αντιστοιχούν σε νίκη της γηπεδούχου ομάδας, σε ισοπαλία ή σε νίκη της φιλοξενούμενης ομάδας αντίστοιχα. Για κάθε αγώνα να υπολογίζονται και να εμφανίζονται τα ποσοστά των προγνωστικών ‘’1’’, ‘’Χ’’ ή ‘’2’’. Να αποθηκεύεται η νικήτρια στήλη σε πίνακα Ν[13] με τα τελικά αποτελέσματα των 13 αγώνων (έλεγχος δεδομένων για τις τιμές ‘’1’’, ‘’Χ’’ ή ‘’2’’) και για κάθε φίλαθλο να ελέγχονται οι επιτυχείς προγνώσεις εμφανίζοντας μόνο εκείνες τις περιπτώσεις φιλάθλων που έχουν 11 ή περισσότερα σωστά αποτελέσματα. Ε 214) Σε κάποια χώρα της Ευρωπαϊκής Ένωσης διεξάγονται εκλογές για την ανάδειξη των μελών του Ευρωπαϊκού Κοινοβουλίου. Θεωρήστε ότι μετέχουν 15 συνδυασμοί κομμάτων, οι οποίοι θα μοιραστούν 24 έδρες σύμφωνα με το ποσοστό των έγκυρων ψηφοδελτίων που έλαβαν. Κόμματα που δεν συγκεντρώνουν ποσοστό έγκυρων ψηφοδελτίων τουλάχιστον ίσο με το 3% του συνόλου των έγκυρων ψηφοδελτίων δεν δικαιούνται έδρα. Για κάθε κόμμα, εκτός του πρώτου κόμματος, ο αριθμός των εδρών που θα λάβει υπολογίζεται ως εξής: Το ποσοστό των έγκυρων ψηφοδελτίων πολλαπλασιάζεται επί 24 και στη συνέχεια το γινόμενο διαιρείται με το άθροισμα των ποσοστών όλων των κομμάτων που δικαιούνται έδρα. Το ακέραιο μέρος του αριθμού που προκύπτει είναι ο αριθμός των εδρών που θα λάβει το κόμμα. Το πρώτο κόμμα λαμβάνει τις υπόλοιπες έδρες. Να γράψετε αλγόριθμο ο οποίος: α. να διαβάζει και να αποθηκεύει σε μονοδιάστατους πίνακες τα ονόματα των κομμάτων και τα αντίστοιχα ποσοστά των έγκυρων ψηφοδελτίων τους. β. να εκτυπώνει τα ονόματα και το αντίστοιχο ποσοστό έγκυρων ψηφοδελτίων των κομμάτων που δεν έλαβαν έδρα. γ. να εκτυπώνει το όνομα του κόμματος με το μεγαλύτερο ποσοστό έγκυρων ψηφοδελτίων. δ. να υπολογίζει και να εκτυπώνει το άθροισμα των ποσοστών όλων των κομμάτων που δικαιούνται έδρα. ε. να εκτυπώνει τα ονόματα των κομμάτων που έλαβαν έδρα και τον αντίστοιχο αριθμό των εδρών τους.

(ΕΠΑΝ 2004) Παρατηρήσεις: α) Υποθέτουμε ότι δεν υπάρχουν δύο κόμματα που να έχουν το ίδιο ποσοστό έγκυρων ψηφοδελτίων. β) Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Α_Μ(x) που επιστρέφει το ακέραιο μέρος του πραγματικού αριθμού x. γ) Τα ποσοστά να θεωρηθούν επί τοις εκατό (%). Ε 215) Για την εύρεση πόρων προκειμένου οι μαθητές της Δ΄ τάξης Εσπερινού Λυκείου να συμμετάσχουν σε εκδρομή οργανώνεται λαχειοφόρος αγορά. Οι μαθητές του Λυκείου διαθέτουν λαχνούς στα σχολεία της περιοχής τους. Διακόσιοι μαθητές από δεκαπέντε διαφορετικά σχολεία αγόρασαν ο καθένας από έναν μόνο λαχνό. Μετά από κλήρωση ένας μαθητής κερδίζει τον πρώτο λαχνό.

Να γίνει τμήμα αλγορίθμου που

α) για κάθε μαθητή που αγόρασε λαχνό να εισάγει σε μονοδιάστατο πίνακα Α 200 θέσεων το επώνυμό του και στην αντίστοιχη θέση μονοδιάστατου πίνακα Β 200 θέσεων το όνομα του σχολείου του, β) να εισάγει σε μονοδιάστατο πίνακα Σ 15 θέσεων τα ονόματα όλων των σχολείων της περιοχής και στις αντίστοιχες θέσεις μονοδιάστατου πίνακα M 15 θέσεων τις ηλεκτρονικές διευθύνσεις των σχολείων, γ) να διαβάζει το επώνυμο του μαθητή, που κέρδισε τον πρώτο λαχνό, δ) χρησιμοποιώντας τον αλγόριθμο της σειριακής αναζήτησης να προσδιορίζει τη θέση του επωνύμου του τυχερού μαθητή στον πίνακα Α. Στη συνέχεια στον πίνακα Β να βρίσκει το όνομα του σχολείου που φοιτά, ε) λαμβάνοντας υπόψη το όνομα του σχολείου που φοιτά ο τυχερός μαθητής και

Page 48: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 189

www.mathman.gr [email protected]

χρησιμοποιώντας τον αλγόριθμο της σειριακής αναζήτησης να προσδιορίζει την θέση του σχολείου στον πίνακα Σ. Στη συνέχεια στον πίνακα M να βρίσκει τη διεύθυνση του ηλεκτρονικού ταχυδρομείου του σχολείου αυτού, στ) να εμφανίζει το επώνυμο του τυχερού μαθητή, το όνομα του σχολείου του και τη διεύθυνση του ηλεκτρονικού ταχυδρομείου του σχολείου του.

(ΕΣΠ 2005) Σημείωση: Να θεωρήσετε ότι δεν υπάρχουν μαθητές με το ίδιο επώνυμο και ότι κάθε μαθητής αγόρασε έναν μόνο λαχνό. Ε 216) Σε ένα πανελλήνιο σχολικό διαγωνισμό μετέχουν 20 σχολεία. Κάθε σχολείο αξιολογεί 5 άλλα σχολεία και δεν αυτοαξιολογείται. Η βαθμολογία κυμαίνεται από 1 έως και 10. Να γραφεί τμήμα αλγορίθμου που

α) να διαβάζει τα ονόματα των σχολείων και να τα αποθηκεύει σε μονοδιάστατο πίνακα Α 20 θέσεων,

β) να εισάγει αρχικά την τιμή 0 σε όλες τις θέσεις ενός δισδιάστατου πίνακα Β 20 γραμμών και 20 στηλών.

γ) Να καταχωρίζει στον πίνακα Β τη βαθμολογία που δίνει κάθε σχολείο για 5 άλλα σχολεία. Σημείωση: Στη θέση i,j του πίνακα Β αποθηκεύεται ο βαθμός που το σχολείο i δίνει στο σχολείο j, όπως φαίνεται στο παράδειγμα που ακολουθεί.

δ) να υπολογίζει τη συνολική βαθμολογία του κάθε σχολείου και να την καταχωρίζει σε μονοδιάστατο πίνακα 20 θέσεων με όνομα SUM,

ε) να εμφανίζει τα ονόματα και τη συνολική βαθμολογία όλων των σχολείων κατά φθίνουσα σειρά της συνολικής βαθμολογίας. Παράδειγμα

Σχολείο1 Σχολείο2 ... Σχολείο5 ... Σχολείο18 Σχολείο19 Σχολείο20 Σχολείο1 ... ... Σχολείο2 10 ... 8 ... 4 8 6

... ... ... ... ... ... ... ... ... Σχολείο20 ... 4 ...

Στο ανωτέρω παράδειγμα: Το Σχολείο2 έδωσε την παρακάτω βαθμολογία: στο Σχολείο1 το βαθμό 10, στο Σχολείο5 το βαθμό 8, στο Σχολείο18 το βαθμό 4, στο Σχολείο19 το βαθμό 8, και στο Σχολείο20 το βαθμό 6. Το Σχολείο5 έχει πάρει την παρακάτω βαθμολογία: από το Σχολείο2 το βαθμό 8 και από το Σχολείο20 το βαθμό 4.

(ΕΣΠ 2005) Ε 217) Να αναπτύξετε έναν αλγόριθμο, ώστε α) να διαβάζει το πλήθος των ασθενών ενός νοσοκομείου, το οποίο δεν μπορεί να δεχτεί περισσότερους από 500 ασθενείς, β) για κάθε ασθενή να διαβάζει τις ημέρες νοσηλείας του, τον κωδικό του ασφαλιστικού του ταμείου και τη θέση νοσηλείας. Να ελέγχει την ορθότητα εισαγωγής των δεδομένων σύμφωνα με τα παρακάτω:

• οι ημέρες νοσηλείας είναι ακέραιος αριθμός μεγαλύτερος ή ίσος του 1, • τα ασφαλιστικά ταμεία είναι 10 με κωδικούς από 1 μέχρι και 10, • οι θέσεις νοσηλείας είναι Α ή Β ή Γ,

Page 49: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 190

www.mathman.gr [email protected]

γ) να υπολογίζει και να εμφανίζει το μέσο όρο ημερών νοσηλείας των ασθενών στο νοσοκομείο, δ) να υπολογίζει και να εμφανίζει για κάθε ασθενή το κόστος παραμονής που πρέπει να καταβάλει στο νοσοκομείο το ασφαλιστικό του ταμείο σύμφωνα με τις ημέρες και τη θέση νοσηλείας. Το κόστος παραμονής στο νοσοκομείο ανά ημέρα και θέση νοσηλείας για κάθε ασθενή φαίνεται στον ακόλουθο πίνακα:

Θέση Νοσηλείας Κόστος παραμονής ανά ημέρα νοσηλείας για κάθε ασθενή

Α 125 €

Β 90 €

Γ 60 €

ε) να υπολογίζει και να εμφανίζει με τη χρήση πίνακα το συνολικό κόστος που θα καταβάλει το κάθε ασφαλιστικό ταμείο στο νοσοκομείο, στ) να υπολογίζει και να εμφανίζει το συνολικό ποσό που οφείλουν όλα τα ασφαλιστικά ταμεία στο νοσοκομείο.

(ΕΠΑΝ ΕΣΠ 2005) Ε 218) Μια αεροπορική εταιρία ταξιδεύει σε 15 προορισμούς του εσωτερικού. Στα πλαίσια της οικονομικής πολιτικής που πρόκειται να εφαρμόσει, κατέγραψε το ποσοστό πληρότητας των πτήσεων για κάθε μήνα του προηγούμενου ημερολογιακού έτους. Η πολιτική έχει ως εξής: - Δεν θα γίνει καμία περικοπή σε προορισμούς, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων είναι μεγαλύτερο του 65. - Θα γίνουν περικοπές πτήσεων σε προορισμούς, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων κυμαίνεται από 40 έως και 65. Οι περικοπές θα γίνουν μόνο σε εκείνους τους μήνες που το ποσοστό πληρότητάς τους είναι μικρότερο του 40. - Θα καταργηθούν οι προορισμοί, στους οποίους το μέσο ετήσιο ποσοστό πληρότητας των πτήσεων είναι μικρότερο του 40. Να γραφεί αλγόριθμος ο οποίος: 1. Να διαβάζει τα ονόματα των 15 προορισμών και να τα αποθηκεύει σε ένα μονοδιάστατο πίνακα. 2. Να διαβάζει τα ποσοστά πληρότητας των πτήσεων των 15 προορισμών για κάθε μήνα και να τα αποθηκεύει σε δισδιάστατο πίνακα κάνοντας έλεγχο στην καταχώριση των δεδομένων, ώστε να καταχωρούνται μόνο οι τιμές που είναι από 0 έως και 100. 3. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών που δεν θα γίνει καμία περικοπή πτήσεων. 4. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών που θα καταργηθούν. 5. Να βρίσκει και να τυπώνει τα ονόματα των προορισμών, στους οποίους θα γίνουν περικοπές πτήσεων, καθώς και τους μήνες (αύξοντα αριθμό μήνα) που θα γίνουν οι περικοπές.

(ΕΠΑΝ 2005) Ε 219) Για τη διεκδίκηση μιας θέσης υποτροφίας, εξετάστηκαν και βαθμολογήθηκαν πενήντα (50) υποψήφιοι σε τρία μαθήματα. Ο υπολογισμός του τελικού βαθμού κάθε υποψηφίου γίνεται ως εξής:

Αν ο βαθμός του σε κάποιο από τα τρία μαθήματα είναι μικρότερος του 6, τότε ο τελικός βαθμός του είναι μηδέν (0). Διαφορετικά ο βαθμός του 1ου μαθήματος συμμετέχει στον υπολογισμό του τελικού βαθμού με συντελεστή 20%, ο βαθμός του 2ου

μαθήματος με συντελεστή 35% και ο βαθμός του 3ου

μαθήματος με συντελεστή 45%.

Να αναπτύξετε αλγόριθμο ο οποίος:

α. Διαβάζει τα ονόματα των 50 υποψηφίων και τα καταχωρίζει σε πίνακα.

Page 50: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 191

www.mathman.gr [email protected]

β. Διαβάζει για κάθε υποψήφιο τους βαθμούς του σε καθένα από τα τρία μαθήματα και τους καταχωρίζει σε πίνακα δύο διαστάσεων, ελέγχοντας ότι ο βαθμός κάθε μαθήματος είναι από 0 έως και 10.

γ. Υπολογίζει τον τελικό βαθμό κάθε υποψηφίου και τον καταχωρίζει σε πίνακα.

δ. Ταξινομεί τα ονόματα και τους τελικούς βαθμούς των υποψηφίων σε φθίνουσα σειρά ως προς τον τελικό βαθμό.

ε. Εμφανίζει για όσους υποψηφίους έχουν τελικό βαθμό μεγαλύτερο του μηδενός (0) το όνομα και τον τελικό βαθμό τους.

στ. Εμφανίζει το ποσοστό των υποψηφίων που έχουν τελικό βαθμό μηδέν (0).

(ΕΣΠ 2006) Ε 220) Στους προκριματικούς αγώνες ιππικού τριάθλου συμμετέχουν 16 αθλητές. Τα αγωνίσματα είναι: ιππική δεξιοτεχνία, υπερπήδηση εμποδίων και ελεύθερη ιππασία. Ο κάθε αθλητής βαθμολογείται ξεχωριστά σε κάθε ένα από τα τρία αγωνίσματα.

Να σχεδιάσετε αλγόριθμο ο οποίος:

α) καταχωρίζει σε πίνακα τις ονομασίες των τριών αγωνισμάτων, όπως αυτές δίνονται παραπάνω. β) διαβάζει για κάθε αθλητή όνομα, επίθετο, όνομα αλόγου με το οποίο αγωνίζεται και τους βαθμούς του σε κάθε αγώνισμα και θα καταχωρίζει τα στοιχεία σε πίνακες.

γ) διαβάζει το όνομα και το επίθετο ενός αθλητή και θα εμφανίζει το όνομα του αλόγου με το οποίο αγωνίστηκε και τη συνολική του βαθμολογία στα τρία αγωνίσματα. Αν δεν υπάρχει ο αθλητής, θα εμφανίζει κατάλληλα διαμορφωμένο μήνυμα. δ) εμφανίζει την ονομασία του αγωνίσματος (ή των αγωνισμάτων) με το μεγαλύτερο «άνοιγμα βαθμολογίας». Ως «άνοιγμα βαθμολογίας» να θεωρήσετε τη διαφορά ανάμεσα στην καλύτερη και στη χειρότερη βαθμολογία του αγωνίσματος.

(ΕΠΑΝ 2006)

Ε 221) Σε ένα Εσπερινό Γυμνάσιο φοιτούν 80 μαθητές. Να γραφεί αλγόριθμος ο οποίος:

α) Διαβάζει για κάθε μαθητή το ονοματεπώνυμό του, την τάξη του και τον τελικό βαθμό του και τα καταχωρεί σε μονοδιάστατους πίνακες, ελέγχοντας την ορθότητα εισαγωγής των δεδομένων σύμφωνα με τα παρακάτω:

- Οι τάξεις είναι Α ή Β ή Γ.

- Ο τελικός βαθμός είναι από 1 μέχρι και 20.

β) Εμφανίζει τα ονόματα των μαθητών της Β τάξης που έχουν τελικό βαθμό μεγαλύτερο ή ίσο του 18,5. γ) Υπολογίζει και εμφανίζει το πλήθος των μαθητών κάθε τάξης. δ) Υπολογίζει και εμφανίζει το μέσο όρο των τελικών βαθμών των μαθητών της Γ τάξης.

ε) Εμφανίζει ταξινομημένα κατά αλφαβητική σειρά τα ονοματεπώνυμα και τους αντίστοιχους τελικούς βαθμούς των μαθητών της Α τάξης.

(ΕΠΑΝ ΕΣΠ 2006)

Page 51: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 192

www.mathman.gr [email protected]

Κ 171) Έστω πίνακας table με Μ γραμμές και Ν στήλες που περιέχει αριθμητικές τιμές. Δίνεται ο παρακάτω αλγόριθμος που υπολογίζει το άθροισμα κατά γραμμή, κατά στήλη και συνολικά. 1. Αλγόριθμος Αθρ_Πίνακα 2. Δεδομένα // m, n, table // 3. sum 0 4. Για i από 1 μέχρι m 5. row [i] 0 6. Τέλος_επανάληψης 7. Για j από 1 μέχρι n 8. col [j] 0 9. Τέλος_επανάληψης 10. Για i από 1 μέχρι m 11. Για j από 1 μέχρι n 12. ………………………………………………………………… 13. ………………………………………………………………… 14. ………………………………………………………………… 15. Τέλος_επανάληψης 16. Τέλος_επανάληψης 17. Αποτελέσματα // row, col, sum // 18. Τέλος Αθρ_Πίνακα Τα αθροίσματα των γραμμών καταχωρίζονται στον πίνακα row, των στηλών στον πίνακα col και το συνολικό άθροισμα στη μεταβλητή sum. Να γράψετε στο τετράδιό σας τις εντολές που πρέπει να συμπληρωθούν στις γραμμές 12, 13 και 14, ώστε ο αλγόριθμος να επιτελεί τη λειτουργία που περιγράφτηκε.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2010)

Κ 172) Δίνεται ο πίνακας Α τεσσάρων στοιχείων με τιμές:

Α[1]=3, Α[2]=5, Α[3]=8, Α[4]=13

και το παρακάτω τμήμα αλγορίθμου:

i ← 1 j ← 4 Όσο i <= 3 επανάλαβε πρόχειρο ← Α[j] A[j] ← Α[i] Α[i] ← πρόχειρο Γράψε Α[1], Α[2], Α[3] i ← i + 1 j ← j – 1 Τέλος_επανάληψης Να γράψετε στο τετράδιό σας τις τιμές που θα εμφανισθούν κατά την εκτέλεσή του.

(ΕΠΑΝ 2011)

Page 52: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 193

www.mathman.gr [email protected]

Κ 173) Να ξαναγράψετε στο τετράδιό σας καθένα από τα παρακάτω τμήματα αλγορίθμου, χρησιμοποιώντας μόνο μία δομή επανάληψης Για ... Από .... Μέχρι και χωρίς τη χρήση δομής επιλογής.

(α) (β) i ← 1 j ← 1 Αρχή_επανάληψης Εμφάνισε Α[i,j] i ← i + 1 j ← j + 1 Μέχρις_ότου j > 100

Για i από 1 μέχρι 100 Για j από 1 μέχρι 100 Αν i = 50 τότε Εμφάνισε Α[i,j] Τέλος_αν Τέλος_επανάληψης Τέλος_επανάληψης

(ΕΠΑΝ 2011) Κ 174) Δίνεται πίνακας Π[20] με αριθμητικές τιμές. Στις μονές θέσεις βρίσκονται καταχωρισμένοι θετικοί αριθμοί και στις ζυγές αρνητικοί αριθμοί. Επίσης, δίνεται το παρακάτω τμήμα αλγορίθμου ταξινόμησης τιμών του πίνακα. Για x από 3 μέχρι 19 με_βήμα ……… Για y από ……… μέχρι ……… με_βήμα ……… Αν Π[ ……… ] < Π[ ……… ] Τότε Αντιμετάθεσε Π[ ……… ], Π[ ……… ] Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης Να μεταφέρετε στο τετράδιό σας το παραπάνω τμήμα αλγορίθμου συμπληρώνοντας τα κενά με τις κατάλληλες σταθερές, μεταβλητές ή εκφράσεις, ώστε να ταξινομούνται σε αύξουσα σειρά μόνο οι θετικές τιμές του πίνακα.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2010)

Page 53: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 194

www.mathman.gr [email protected]

Κ 175) Δίνεται ο παρακάτω ημιτελής αλγόριθμος αναζήτησης ενός αριθμού key σε έναν αριθμητικό πίνακα table N στοιχείων, στον οποίο ο key μπορεί να εμφανίζεται περισσότερες από μία φορές.

Αλγόριθμος Αναζήτηση Δεδομένα // table, N, key // Βρέθηκε ← Ψευδής ΔενΒρέθηκε ← ........................ i ← 1 Όσο ΔενΒρέθηκε = Αληθής και i<=N επανάλαβε

Αν ................................... τότε Εμφάνισε “Βρέθηκε στη θέση”, i Βρέθηκε ← ........................ Αλλιώς_αν .................................... τότε ΔενΒρέθηκε ← ........................ Τέλος_αν i ← i + 1

Τέλος_επανάληψης Αποτελέσματα // Βρέθηκε // Τέλος Αναζήτηση

Να ξαναγράψετε στο τετράδιό σας τον παραπάνω αλγόριθμο με τα κενά συμπληρωμένα, έτσι ώστε να εμφανίζονται όλες οι θέσεις στις οποίες βρίσκεται ο αριθμός key στον πίνακα table. Ο αλγόριθμος να σταματάει αμέσως μόλις διαπιστωθεί ότι ο αριθμός key δεν υπάρχει στον πίνακα. Εκμεταλλευτείτε το γεγονός ότι τα στοιχεία του πίνακα είναι ταξινομημένα σε αύξουσα σειρά.

(ΕΠΑΝ 2011) Ε 222) Το ράλλυ Βορείων Σποράδων είναι ένας αγώνας ιστοπλοΐας ανοικτής θάλασσας που γίνεται κάθε χρόνο. Στην τελευταία διοργάνωση συμμετείχαν 35 σκάφη που διαγωνίστηκαν σε διαδρομή συνολικής απόστασης 70 μιλίων. Κάθε σκάφος ανήκει σε μια από τις κατηγορίες C1, C2, C3. Επειδή στον αγώνα συμμετέχουν σκάφη διαφορετικών δυνατοτήτων, η κατάταξη δεν προκύπτει από τον «πραγματικό» χρόνο τερματισμού αλλά από ένα «σχετικό» χρόνο, που υπολογίζεται διαιρώντας τον «πραγματικό» χρόνο του σκάφους με τον «ιδανικό». Ο ιδανικός χρόνος είναι διαφορετικός για κάθε σκάφος και προκύπτει πολλαπλασιάζοντας την απόσταση της διαδρομής με τον δείκτη GPH του σκάφους. Ο δείκτης GPH αντιπροσωπεύει τον ιδανικό χρόνο που χρειάζεται το σκάφος για να καλύψει απόσταση ενός μιλίου. Να κατασκευάσετε αλγόριθμο ο οποίος Δ1. Να ζητάει για κάθε σκάφος: - το όνομά του - την κατηγορία του ελέγχοντας την ορθή καταχώρηση - τον χρόνο (σε δευτερόλεπτα) που χρειάστηκε για να τερματίσει - τον δείκτη GPH (σε δευτερόλεπτα). Δ2. Να υπολογίζει τον σχετικό χρόνο κάθε σκάφους. Δ3. Να εμφανίζει την κατηγορία στην οποία ανήκουν τα περισσότερα σκάφη. Δ4. Να εμφανίζει για κάθε κατηγορία καθώς και για την γενική κατάταξη τα ονόματα των σκαφών που κερδίζουν μετάλλιο. (Μετάλλια απονέμονται στους 3 πρώτους κάθε κατηγορίας και στους 3 πρώτους της γενικής κατάταξης). Σημείωση: Να θεωρήσετε ότι κάθε κατηγορία έχει διαφορετικό αριθμό σκαφών και τουλάχιστον τρία σκάφη.

Page 54: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 195

www.mathman.gr [email protected]

Να θεωρήσετε ότι οι σχετικοί χρόνοι των σκαφών είναι διαφορετικοί μεταξύ τους.

(ΠΑΝΕΛΛΑΔΙΚΕΣ 2010) Ε 223) Σε μια δημοτική δανειστική βιβλιοθήκη υπάρχουν 158 μέλη που δανείζονται βιβλία.

Να γραφεί αλγόριθμος που:

Δ1. α. Για κάθε μέλος διαβάζει το επώνυμο και το φύλο του (Α=άνδρας, Γ=γυναίκα) και τα αποθηκεύει στους πίνακες ΜΕΛΗ και ΦΥΛΟ, αντίστοιχα. Να γίνεται έλεγχος εγκυρότητας εισαγωγής του φύλου.

β. Για κάθε μήνα ενός έτους διαβάζει το πλήθος των βιβλίων που δανείστηκε κάθε μέλος και το αποθηκεύει στον πίνακα δύο διαστάσεων ΒΙΒΛΙΑ.

Δ2. Για κάθε μέλος υπολογίζει το συνολικό αριθμό των βιβλίων που δανείστηκε στο έτος και το αποθηκεύει στον πίνακα SUM.

Δ3. α. Υπολογίζει το συνολικό αριθμό των βιβλίων που δανείστηκαν οι άνδρες.

β. Υπολογίζει το συνολικό αριθμό των βιβλίων που δανείστηκαν οι γυναίκες. γ. Εμφανίζει κατάλληλο μήνυμα που δείχνει αν οι άνδρες ή οι γυναίκες έχουν δανειστεί τα περισσότερα βιβλία. Σε περίπτωση ίσων συνολικών αριθμών βιβλίων να εμφανίζει το μήνυμα “ΙΣΟΣ ΑΡΙΘΜΟΣ ΒΙΒΛΙΩΝ”.

Δ4. Να διαβάζει ένα επώνυμο και χρησιμοποιώντας τη σειριακή αναζήτηση, σε περίπτωση που το επώνυμο είναι αποθηκευμένο στον πίνακα ΜΕΛΗ, να εμφανίζει το σύνολο των βιβλίων που δανείστηκε στη διάρκεια του έτους. Σε περίπτωση που το επώνυμο δεν είναι αποθηκευμένο στον πίνακα να εμφανίζει το μήνυμα “ΤΟ ΕΠΩΝΥΜΟ ΑΥΤΟ ΔΕΝ ΥΠΑΡΧΕΙ”.

Σημείωση: Δεν απαιτείται κανένας άλλος έλεγχος εγκυρότητας εισαγωγής. Δεν υπάρχει συνωνυμία επωνύμων.

(ΕΣΠ 2010) Ε 224) Στην αρχή της ποδοσφαιρικής περιόδου οι 22 παίκτες μιας ομάδας, οι οποίοι αριθμούνται από 1 έως 22, ψηφίζουν για τους 3 αρχηγούς που θα τους εκπροσωπούν. Κάθε παίκτης μπορεί να ψηφίσει όσους συμπαίκτες του θέλει, ακόμα και τον εαυτό του. Τα αποτελέσματα της ψηφοφορίας καταχωρίζονται σε έναν πίνακα ΨΗΦΟΣ με 22 γραμμές και 22 στήλες, έτσι ώστε το στοιχείο ΨΗΦΟΣ[i,j] να έχει την τιμή 1, όταν ο παίκτης με αριθμό i έχει ψηφίσει τον παίκτη με αριθμό j, και τιμή 0 στην αντίθετη περίπτωση. Να γράψετε αλγόριθμο ο οποίος: Δ1. Να διαβάζει τα στοιχεία του πίνακα ΨΗΦΟΣ και να ελέγχει την ορθότητά τους με αποδεκτές τιμές 0 ή

1. Δ2. Να εμφανίζει το πλήθος των παικτών που δεν ψήφισαν κανέναν. Δ3. Να εμφανίζει το πλήθος των παικτών που ψήφισαν τον εαυτό τους. Δ4. Να βρίσκει τους 3 παίκτες που έλαβαν τις περισσότερες ψήφους και να εμφανίζει τους αριθμούς τους

και τις ψήφους που έλαβαν. Θεωρήστε ότι δεν υπάρχουν ισοψηφίες. (ΠΑΝΕΛΛΑΔΙΚΕΣ 2011)

Ε 225) Ένα εμπορικό κατάστημα έχει καταγράψει τις μηνιαίες εισπράξεις του για τα έτη 2009 και 2010. Να γράψετε αλγόριθμο ο οποίος: Γ1. Να διαβάζει τις μηνιαίες εισπράξεις για καθένα από τα δύο έτη και να τις καταχωρίζει σε αντίστοιχους

μονοδιάστατους πίνακες. Γ2. Να υπολογίζει και να εμφανίζει τη μεγαλύτερη μηνιαία είσπραξη για κάθε έτος. Θεωρήστε ότι για κάθε

έτος η τιμή αυτή είναι μοναδική. Γ3. Να εμφανίζει κατάλληλο μήνυμα στην περίπτωση που ο μήνας κατά τον οποίο σημειώθηκε η μεγαλύτερη

μηνιαία είσπραξη ήταν ο ίδιος και για τα δύο έτη. Γ4. Να εμφανίζει τον μέσο όρο των μηνιαίων εισπράξεων για κάθε έτος.

Page 55: AEPP 2013_3_pinakes

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ – ΠΙΝΑΚΕΣ 196

www.mathman.gr [email protected]

Γ5. Να υπολογίζει και να εμφανίζει το πλήθος των μηνών του έτους 2009 κατά τους οποίους η μηνιαία είσπραξη ήταν μεγαλύτερη από αυτή του αντίστοιχου μήνα του έτους 2010.

(ΕΣΠ 2011)

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ

ΚΕΦΑΛΑΙΑ 3, 9

Να δώσετε τον ορισμό της δομής δεδομένων.

(ΕΣΠ 2004) Μονάδες 3

Να αναφέρετε ονομαστικά τις βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. (2002) Μονάδες 8

Στον προγραμματισμό χρησιμοποιούνται δομές δεδομένων.

1. Τι είναι δυναμική δομή δεδομένων; (ΕΣΠ 2004) Μονάδες 3

2. Τι είναι στατική δομή δεδομένων; (ΕΣΠ 2004) Μονάδες 3

3. Να αναφερθούν οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων. (ΕΣΠ 2004) Μονάδες 8

Η ουρά είναι μία δομή δεδομένων.

1. Να δώσετε ένα παράδειγμα ουράς από την καθημερινή ζωή. (ΕΣΠ 2004) Μονάδες 3

2. Να αναφέρετε τις λειτουργίες της ουράς και τους δείκτες που απαιτούνται. (ΕΣΠ 2004) Μονάδες 3

Η «στοίβα» είναι μια δομή δεδομένων. 1. Να περιγράψετε τη «στοίβα» με ένα παράδειγμα από την καθημερινή ζωή.

(ΕΣΠ 2003) Μονάδες 6 2. Να περιγράψετε τις κύριες λειτουργίες της «στοίβας».

(ΕΣΠ 2003) Μονάδες 4 Να περιγράψετε την υλοποίηση στοίβας με τη βοήθεια μονοδιάστατου πίνακα.

(ΕΠΑΝ 2008) Μονάδες 6 Να αναφέρετε τέσσερις τυπικές επεξεργασίες που γίνονται στα στοιχεία πινάκων.

(2003) Μονάδες 4 Να αναφέρετε δύο μειονεκτήματα της χρήσης των πινάκων.

(2004) Μονάδες 4 Αναφέρατε τις περιπτώσεις που δικαιολογείται η χρήση του αλγόριθμου της σειριακής αναζήτησης.

(ΕΠΑΝ 2005) Μονάδες 6 Να αναφέρετε δύο βασικές λειτουργίες επί των δομών δεδομένων που δεν μπορούν να χρησιμοποιηθούν στους πίνακες. Να αιτιολογήσετε την απάντησή σας.

(ΕΠΑΝ 2007) Μονάδες 4