1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 9 ο : ΠΙΝΑΚΕΣ ΜΕΡΟΣ 1 ο : ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΙΝΑΚΕΣ 1 & 2 ΔΙΑΣΤΑΣΕΩΝ http://eclass.sch.gr/courses/el594100/
2 ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ Τα δεδομένα ενός προβλήματος, αποθηκεύονται στον υπολογιστή. Η αποθήκευση αυτή δεν γίνεται με τυχαίο τρόπο, αλλά συστηματικά, δηλαδή χρησιμοποιώντας κάποια δομή. Η έννοια της δομής δεδομένων είναι πολύ σημαντική και ορίζεται ως: «Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών»
3 ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΕΠΙ ΤΩΝ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ Προσπέλαση (access): σε κάποιο κόμβο ώστε να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του Εισαγωγή (insertion): προσθήκη νέων κόμβων σε μια υπάρχουσα δομή Διαγραφή (deletion): αφαίρεση κόμβων από μια δομή Αναζήτηση (searching): Προσπέλαση κόμβων ώστε να βρεθεί ένας ή περισσότεροι με τα ζητούμενα χαρακτηριστικά
4 ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΕΠΙ ΤΩΝ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ (2) Ταξινόμηση (sorting): Διάταξη των κόμβων μιας δομής κατά αύξουσα ή φθίνουσα σειρά. Αντιγραφή (copying): Αντιγραφή όλων ή μέρους των κόμβων σε μια άλλη δομή. Συγχώνευση (merging): Δύο ή περισσότερες δομές συνενώνονται σε μία Διαχωρισμός (separation): Η αντίστροφη πράξη της συγχώνευσης.
ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ 5 Υπάρχει μεγάλη εξάρτηση μεταξύ της δομής δεδομένων και του αλγορίθμου που την επεξεργάζεται. Το πρόγραμμα πρέπει να θεωρεί τη δομή δεδομένων και τον αλγόριθμο ως μια αδιάσπαστη ενότητα.
6 «Να γραφεί αλγόριθμος που θα δέχεται ως είσοδο το όνομα του συνδρομητή του ΟΤΕ και θα δίνει ως έξοδο τον τηλεφωνικό του αριθμό» Λύση 1η: Δομή δεδομένων: Δημιουργείται μια ακολουθία από ζεύγη (O 1,T 1 ), (O 2, T 2 ), (O n, T n ), όπου σε κάθε ζεύγος, το Ο i είναι το όνομα και το Τ i είναι το τηλέφωνο του i-οστού συνδρομητή Αλγόριθμος: Κάνουμε αναζήτηση μέσα στην ακολουθια μέχρι να βρούμε το ζεύγος όπου το όνομα είναι το όνομα του συνδρομητή που ψάχνουμε, και εκτυπώνουμε το τηλέφωνό του. Πρόβλημα: Όταν έχουμε μια μεγάλη πόλη, η αναζήτηση αυτή είναι πολύ χρονοβόρα
7 «Να γραφεί αλγόριθμος που θα δέχεται ως είσοδο το όνομα του συνδρομητή του ΟΤΕ και θα δίνει ως έξοδο τον τηλεφωνικό του αριθμό» Λύση 2η: Δομή δεδομένων: Χρησιμοποιείται η ίδια δομή της προηγούμενης λύσης, αλλά με τους συνδρομητές να είναι ταξινομημένοι λεξικογραφικά. Επιπλέον, δημιουργούμε και μια δεύτερη ακολουθία με τα στοιχεία (Α, n 1 ), (B, n 2 ),, (Ω, n 24 ) που για κάθε γράμμα του αλφαβήτου μας δείχνει τη θέση στην πρώτη ακολουθία του πρώτου ονόματος που αρχίζει από το συγκεκριμένο γράμμα. Δηλαδή δημιουργούμε ουσιαστικά μια μορφή «περιεχομένων»
8 «Να γραφεί αλγόριθμος που θα δέχεται ως είσοδο το όνομα του συνδρομητή του ΟΤΕ και θα δίνει ως έξοδο τον τηλεφωνικό του αριθμό» Αλγόριθμος: Στη δεύτερη ακολουθία, αναζητούμε σειριακά την εγγραφή με το αρχικό γράμμα του ονόματος (έστω το γράμμα Π ). Βρίσκουμε την εγγραφή (Π, 246), οπότε μεταβαίνουμε στον κόμβο 246 της πρώτης ακολουθίας, και αναζητούμε σειριακά όλα τα ονόματα από Π μέχρι να βρούμε αυτό που αναζητούμε, και να εκτυπώσουμε το ζητούμενο τηλέφωνο.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 9 Δυναμικές Δομές: Δομές χωρίς προκαθορισμένο μέγεθος Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, Στηρίζονται στην τεχνική της δυναμικής παραχώρησης μνήμης (dynamic memory allocation). Το πλήθος των κόμβων της δομής μεταβάλλεται συνεχώς (είτε μεγαλώνει είτε μικραίνει) κατά την εκτέλεση του προγράμματος, ανάλογα με το αν εισάγονται ή διαγράφονται δεδομένα Χρησιμοποιούνται σε όλες τις σύγχρονες γλώσσες προγραμματισμού.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (2) 10 Στατικές Δομές: Δομές σταθερού και προκαθορισμένου μεγέθους Το ακριβές μέγεθος καθορίζεται τη στιγμή του προγραμματισμού, και όχι κατά τη διάρκεια της εκτέλεσης του προγράμματος Τα δεδομένα μιας στατικής δομής αποθηκεύονται σε συνεχόμενες θέσεις μνήμης Κατά την εκτέλεση του προγράμματος, το μέγεθος της δομής παραμένει πάντοτε σταθερό και πλήρως δεσμευμένο
ΠΙΝΑΚΕΣ 11 Οι στατικές δομές στην πράξη υλοποιούνται με πίνακες Υποστηρίζονται από όλες τις γλώσσες προγραμματισμού ΠΙΝΑΚΑΣ = Μια δομή που περιέχει στοιχεία του ίδιου τύπου (ακέραιους, πραγματικούς, κτλ). Η γενική αναφορά σε στοιχείο του πίνακα γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα ακολουθούμενο από την τιμή ενός ή περισσότερων δεικτών (indexes) σε παρένθεση ή αγκύλη, π.χ. Α[1]. Το πλήθος των δεικτών καθορίζεται από το πλήθος των διαστάσεων του πίνακα, και ο κάθε δείκτης καθορίζει τη θέση του στοιχείου μέσα στον πίνακα. Ένας πίνακας μπορεί να είναι μονοδιάστατος, αλλά μπορεί να έχει και περισσότερες από μία διαστάσεις.
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ 12 Έστω ότι θέλουμε να υπολογίσουμε τη μέση θερμοκρασία των 30 ημερών ενός μήνα Η πολύ απλή λύση είναι το ακόλουθο τμήμα προγράμματος: Σύνολο 0 ΓΙΑ Ημέρα ΑΠΟ 1 ΜΕΧΡΙ 30 ΔΙΑΒΑΣΕ Θερμοκρασία Σύνολο Σύνολο + Θερμοκρασία ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Μέση_Θερμ Σύνολο/30 Καθηγητής Πληροφορικής ΠΕ19
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ 13 Αν χρειαζόμασταν παραπάνω υπολογισμούς, όπως π.χ. το πλήθος των ημερών του μήνα με θερμοκρασία χαμηλότερη από τη μέση τιμή Θα έπρεπε να καταχωρήσουμε ξανά όλες τις θερμοκρασίες Μια λύση θα ήταν να βάλουμε 30 μεταβλητές (Θερμοκρ1, Θερμοκρ2,, Θερμοκρ30) και μετά να τις συγκρίνουμε Θα χρειαζόμασταν 30 εντολές ΔΙΑΒΑΣΕ και 30 βρόχους ΑΝ Η καταλληλότερη λύση για το πρόβλημα αυτό είναι οι πίνακες. Καθηγητής Πληροφορικής ΠΕ19
ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ 14 Καθηγητής Πληροφορικής ΠΕ19
ΠΙΝΑΚΕΣ 15 Κάθε πίνακας έχει υποχρεωτικά δεδομένα ΤΟΥ ΙΔΙΟΥ ΤΥΠΟΥ Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές, στο τμήμα δήλωσης μεταβλητών Εκτός από τον τύπο του πίνακα, πρέπει να δηλώνεται και το μέγεθός του, ώστε να δεσμευθούν οι αντίστοιχες (και συνεχόμενες) θέσεις μνήμης ΟΡΙΣΜΟΣ: Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται με ένα κοινό όνομα. Κάθε ένα από τα αντικείμενα που απαρτίζουν τον πίνακα λέγεται στοιχείο του πίνακα. Η αναφορά σε ατομικά στοιχεία του πίνακα γίνεται με το όνομα του πίνακα ακολουθούμενο από ένα δείκτη. Καθηγητής Πληροφορικής ΠΕ19
ΜΟΝΟΔΙΑΣΤΑΤΟΣ ΠΙΝΑΚΑΣ 16 Απλός μονοδιάστατος πίνακας 5 θέσεων 1 2 3 4 5 33 28 77 93 23 Α[1] Α[2] Α[3] Α[4] Α[5]
17 Παράδειγμα: Να διαβαστούν και να αποθηκευθούν σε πίνακα 200 αριθμοί. Έπειτα ο αλγόριθμος να εμφανίζει τα περιεχόμενα του πίνακα Αλγόριθμος Πίνακας Για i από 1 μέχρι 200 Εμφάνισε «Δώσε τον», i, «o αριθμό» Διάβασε table[i] Τέλος_επανάληψης Για i από 1 μέχρι 200 Εμφάνισε table[i] Τέλος_επανάληψης Τέλος Πίνακας
18 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ?????!! Αρχικά τα περιεχόμενα του πίνακα έχουν απροσδιόριστες τιμές, αφού δεν τους έχει δοθεί κάποια τιμή
19 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ??? 0?
20 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ 6?? 0?
21 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ 6 8? 0?
22 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ 6 8 8 0?
23 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ 6 8 8 0 2
24 Να συμπληρωθουν τα στοιχεία του πίνακα Β εκτελώντας το ακόλουθο τμήμα αλγορίθμου Β[4] 0 Χ 1 Β[Χ] Β[4]+6 Β[Χ+1] Β[Χ]+2 Β[Χ+2] Β[Χ+1] Β[5] Β[4]+2 Β[5] Β[5] + Χ 6 8 8 0 3
Να σχεδιασθεί αλγόριθμος που θα διαβάζει και θα καταχωρεί σε πίνακα 100 αριθμούς και θα βρίσκει τη μικρότερη τιμή του πίνακα 25 Αλγόριθμος Ελάχ_Πίνακα Για i από 1 μέχρι 100 Διάβασε table[i] Τέλος_επανάληψης Min table[1] Για i από 2 μέχρι 100 Αν table[i] < Min τότε Min table[i] Τέλος_αν Τέλος_επανάληψης Εκτύπωσε Min Τέλος Ελάχ_Πίνακα ΠΡΟΣΟΧΗ ΣΤΑ ΟΡΙΑ ΤΗΣ ΕΠΑΝΑΛΗΨΗΣ, ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΒΓΑΙΝΕΙ ΕΞΩ ΑΠΌ ΤΑ ΟΡΙΑ ΤΟΥ ΜΕΓΕΘΟΥΣ ΤΟΥ ΠΙΝΑΚΑ 1.ΓΙΑ ΤΟ ΠΡΩΤΟ ΣΤΟΙΧΕΙΟ Η ΣΥΓΚΡΙΣΗ ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ, ΑΡΑ ΞΕΚΙΝΑΜΕ ΑΠΌ ΤΟ 2Ο 2. ΜΠΟΡΟΥΜΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΠΑΛΙ ΤΟ i ΓΙΑ ΜΕΤΡΗΤΗ
26 Να γραφεί αλγόριθμος που θα διαβάζει το μέσο όρο 140 μαθητών, και θα υπολογίζει το γενικό μέσο όρο για όλη την τάξη. Αλγόριθμος Μέσος_Όρος S 0 Για i από 1 μέχρι 140 Διάβασε Μ[i] S S + M[i] Τέλος_επανάληψης MO S/140 Εμφάνισε MO Τέλος Μέσος_Όρος ΥΠΕΝΘΥΜΙΣΗ: Η ΜΕΤΑΒΛΗΤΗ ΤΟΥ ΜΕΣΟΥ ΟΡΟΥ ΔΕΝ ΜΠΟΡΕΙ ΝΑ ΕΧΕΙ ΤΟ ΟΝΟΜΑ Μ.Ο. ΓΙΑΤΙ ΔΕΝ ΕΊΝΑΙ ΑΠΟΔΕΚΤΟ!!!!
Τι εμφανίζει ο παρακάτω αλγόριθμος; 27 Για i από 1 μέχρι 4 Αν i mod 2 =0 τότε Εμφάνισε Π[i], Π[i+1] αλλιώς Χ Π[i mod 2] Εμφάνισε i, X Τέλος_αν Τέλος_επανάληψης 20 30-10 50 30 i X Εμφανίζεται
Τι εμφανίζει ο παρακάτω αλγόριθμος; 28 Για i από 1 μέχρι 4 Αν i mod 2 =0 τότε Εμφάνισε Π[i], Π[i+1] αλλιώς Χ Π[i mod 2] Εμφάνισε i, X Τέλος_αν Τέλος_επανάληψης 20 30-10 50 30 i X Εμφανίζεται 1 20 1, 20
Τι εμφανίζει ο παρακάτω αλγόριθμος; 29 Για i από 1 μέχρι 4 Αν i mod 2 =0 τότε Εμφάνισε Π[i], Π[i+1] αλλιώς Χ Π[i mod 2] Εμφάνισε i, X Τέλος_αν Τέλος_επανάληψης 20 30-10 50 30 i X Εμφανίζεται 1 20 1, 20 2 20 30, -10
Τι εμφανίζει ο παρακάτω αλγόριθμος; 30 Για i από 1 μέχρι 4 Αν i mod 2 =0 τότε Εμφάνισε Π[i], Π[i+1] αλλιώς Χ Π[i mod 2] Εμφάνισε i, X Τέλος_αν Τέλος_επανάληψης 20 30-10 50 30 i X Εμφανίζεται 1 20 1, 20 2 20 30, -10 3 20 3, 20
Τι εμφανίζει ο παρακάτω αλγόριθμος; 31 Για i από 1 μέχρι 4 Αν i mod 2 =0 τότε Εμφάνισε Π[i], Π[i+1] αλλιώς Χ Π[i mod 2] Εμφάνισε i, X Τέλος_αν Τέλος_επανάληψης 20 30-10 50 30 i X Εμφανίζεται 1 20 1, 20 2 20 30, -10 3 20 3, 20 4 20 50,30
Σε μία κατασκήνωση 100 μαθητών, κάθε μαθητής έχει ένα δικό του μοναδικό αριθμό (1 έως 100). Να φτιάξετε αλγόριθμο που θα ελέγχει το ύψος του κάθε μαθητή, και στο τέλος θα μας δίνει τον ψηλότερο και τον κοντότερο, καθώς και τον αριθμό τους. 32 Αλγόριθμος Κατασκήνωση Δεδομένα // table// min_h table[1] max_h table[1] min 1 max 1 Για i από 2 μέχρι 100 Αν table[i]<min_h τότε min_h table[i] min i Τέλος_αν Αν table[i]>max_h τότε max_h table[i] max i Τέλος_αν Τέλος_επανάληψης Εκτύπωσε min, min_h, max, max_h Τέλος Κατασκήνωση Θεωρούμε ως δεδομένο τον πίνακα που περιέχει το ύψος των μαθητών Αυτό δεν μπορούμε να το χρησιμοποιήσουμε σε πρόγραμμα!!!!! Χρησιμοποιείται μόνο σε αλγορίθμους. Αποφεύγουμε να το χρησιμοποιούμε!! Οφείλουμε βέβαια να το αναγνωρίζουμε όταν δοθεί σε μια άσκηση
33 Δίνονται δυο μονοδιάστατοι πίνακες Α και Β 5 θέσεων. Να κατασκευαστεί αλγόριθμος που θα διαβάζει τα στοιχεία των πινάκων, και θα αποθηκεύει το άθροισμα του κάθε ζεύγους στοιχείων της ίδιας θέσης, στην αντίστοιχη θέση ενός τρίτου πίνακα Γ. Αλγόριθμος Αθρ_Πινάκων Για i από 1 μέχρι 5 Διάβασε Α[i], B[i] Γ[i] Α[i]+ B[i] Τέλος_επανάληψης Εμφάνισε Ο νέος πίνακας περιέχει τα εξής στοιχεία Για i από 1 μέχρι 5 Εμφάνισε Γ[i], Τέλος_επανάληψης Τέλος Αθρ_Πινάκων
ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ 34 Καθηγητής Πληροφορικής ΠΕ19
ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ 35 Ο πίνακας αυτός έχει θερμοκρασίες 30 ημερών, για δέκα πόλεις, δηλαδή περιέχει συνολικά 300 θερμοκρασίες. Για να προσδιοριστεί κάθε τιμή, απαιτούνται δύο δείκτες, ένας για την ημέρα και ένας για την πόλη. Για την επεξεργασία αυτών των δεδομένων, χρησιμοποιούμε ένα δισδιάστατο πίνακα Ο πρώτος δείκτης δείχνει τη γραμμή (ημέρα) και ο δεύτερος τη στήλη (Πόλη) Καθηγητής Πληροφορικής ΠΕ19
ΔΙΣΔΙΑΣΤΑΤΟΣ ΠΙΝΑΚΑΣ 36 Το κάθε στοιχείο του δισδιάστατου πίνακα, προσδιορίζεται από τη γραμμή και τη στήλη στην οποία ανήκει 1 2 3 4 5 1 2 3 4 5
ΔΙΣΔΙΑΣΤΑΤΟΣ ΠΙΝΑΚΑΣ 37 Το κάθε στοιχείο του δισδιάστατου πίνακα, προσδιορίζεται από τη γραμμή και τη στήλη στην οποία ανήκει 1 2 3 4 5 1 2 3 4 5 Β[1,1] Β[1,2] Β[1,3] Β[1,4] Β[1,5] Β[2,1] Β[2,2] Β[2,3] Β[2,4] Β[2,5] Β[3,1] Β[3,2] Β[3,3] Β[3,4] Β[3,5] Β[4,1] Β[4,2] Β[4,3] Β[4,4] Β[4,5] Β[5,1] Β[5,2] Β[5,3] Β[5,4] Β[5,5]
ΔΙΣΔΙΑΣΤΑΤΟΣ ΠΙΝΑΚΑΣ 38 Το κάθε στοιχείο του δισδιάστατου πίνακα, προσδιορίζεται από τη γραμμή και τη στήλη στην οποία ανήκει 1 2 3 4 5 1 2 3 4 5 28 45 67 5 3 787 66 4 3 2 78 97 55 44 33 90 12 22 37 54 56 57 67 89 9
39 Δίνονται δυο δισδιάστατοι πίνακες Α και Β διαστάσεων 3Χ5. Να κατασκευαστεί αλγόριθμος που θα διαβάζει τα στοιχεία των πινάκων, και θα αποθηκεύει το άθροισμα του κάθε ζεύγους στοιχείων της ίδιας θέσης, στην αντίστοιχη θέση ενός τρίτου πίνακα Γ. Αλγόριθμος Αθρ_Πινάκων Για i από 1 μέχρι 3 Για j από 1 μέχρι 5 Διάβασε Α[i,j], B[i,j] Γ[i,j] Α[i,j]+ B[i,j] Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // Γ // Τέλος Αθρ_Πινάκων
40 Δίδεται ο δισδιάστατος πίνακας table με m γραμμές n στήλες. Να βρεθεί το άθροισμα κατά γραμμή, κατά στήλη και συνολικά. Αλγόριθμος Αθρ_Πίνακα Δεδομένα // m, n, table // sum 0 Για i από 1 μέχρι m row[i] 0 Τέλος_επανάληψης Για j από 1 μέχρι n col[j] 0 Τέλος_επανάληψης Για i από 1 μέχρι m Για j από 1 μέχρι n sum sum + table[i,j] row[i] row[i] + table[i,j] col[j] col[j] + table[i,j] Τέλος_επανάληψης Τέλος_επανάληψης Αποτελέσματα // row, col, sum // Τέλος Αθρ_Πίνακα
ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΠΙΝΑΚΩΝ 41 Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές θέσεις μνήμης. Άσκοπη χρήση μεγάλων πινάκων, σε κάποιο μεγάλο πρόγραμμα, ενδέχεται να προκαλέσει μέχρι και αδυναμία εκτέλεσής του. Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Οι πίνακες είναι στατικές δομές και απαιτείται να οριστεί το μέγεθός τους στην αρχή του προγράμματος, και παραμένει υποχρεωτικά σταθερό καθ όλη τη διάρκεια εκτέλεσης του προγράμματος. Η απόφαση για τη χρήση ή όχι πινάκων για τη διαχείριση των δεδομένων σε δεδομένο πρόβλημα είναι κυρίως θέμα εμπειρίας. Καθηγητής Πληροφορικής ΠΕ19
ΤΥΠΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ 42 Υπολογισμός αθροισμάτων στοιχείων του πίνακα Εύρεση του μέγιστου ή του ελάχιστου στοιχείου Ταξινόμηση των στοιχείων του πίνακα Αναζήτηση ενός στοιχείου του πίνακα Σειριακή αναζήτηση Δυαδική αναζήτηση Συγχώνευση δύο πινάκων Καθηγητής Πληροφορικής ΠΕ19
43 ΚΑΝΟΝΕΣ ΧΡΗΣΗΣ ΕΜΦΩΛΕΥΜΕΝΩΝ ΒΡΟΧΩΝ Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει να ολοκληρώνεται πρώτος. Η είσοδος σε κάθε βρόχο γίνεται ΥΠΟΧΡΕΩΤΙΚΑ από την αρχή του Δε μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσότερων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.
ΑΡΑΙΟΙ ΠΙΝΑΚΕΣ: ΠΙΝΑΚΕΣ ΜΕ ΠΑΝΩ ΑΠΌ 80% ΤΩΝ ΘΕΣΕΩΝ ΜΕ ΤΙΜΗ 0. 44 Αντί να αποθηκεύσουμε το μεγάλο πίνακα με τα πολλά μηδενικά, για τα ν στοιχεία που ΔΕΝ είναι μηδέν, φτιάχνουμε ένα μονοδιάστατο πίνακα 3*ν θέσεων, όπου θα κρατάμε την τιμή του στοιχείου, και τη θέση του (i,j)
45 ΑΡΑΙΟΙ ΠΙΝΑΚΕΣ (3) Να κατασκευαστεί αλγόριθμος που θα επιστρέφει τα στοιχεία στην αρχική τους θέση με βάση τον μονοδιάστατο πίνακα Αλγόριθμος Επαναφορά Δεδομένα //sp, k, m, n/ Για i από 1 μέχρι m Για j από 1 μέχρι n Α[i,j] 0 Τέλος_επανάληψης Τέλος_επανάληψης Για i από 1 μέχρι k με_βήμα 3 line sp[i] col sp[i+1] A[line,col] sp[i+2] Τέλος_επανάληψης Τέλος Επαναφορά
46 ΑΡΑΙΟΙ ΠΙΝΑΚΕΣ (4) ΝΑ ΚΑΤΑΣΚΕΥΑΣΤΕΙ ΑΛΓΟΡΙΘΜΟΣ ΠΟΥ ΘΑ ΕΠΙΣΤΡΕΦΕΙ ΤΗΝ ΤΙΜΗ ΤΟΥ ΣΤΟΙΧΕΙΟΥ ΤΗΣ ΘΕΣΗΣ [L,M] ΤΟΥ ΑΡΧΙΚΟΥ ΠΙΝΑΚΑ ΜΕ ΒΑΣΗ ΤΟ ΝΈΟ ΠΙΝΑΚΑ Αλγόριθμος Ευρεση_τιμής Δεδομένα //sp, n/ flag 0 k 0 Όσο flag=0 επανάλαβε i sp[3*k+1] j sp[3*k+2] Αν i=l και j=m τότε result sparse [3*k-3] flag 1 αλλιώς_αν i>l ή (i=l και j >M) τότε result 0 flag 1 αλλιώς k k + 1 Τέλος_αν Τέλος_επανάληψης Αποτελέσματα //result// Τέλος Ευρεση_τιμής
47 ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΔΕΙΓΜΑ Θερμοκρασίες ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Θερμοκρασία[30], Μέση, Σύνολο ΑΚΕΡΑΙΕΣ: i, Ημέρες ΑΡΧΗ Σύνολο 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 ΓΡΑΨΕ Δώσε τη θερμοκρασία ΔΙΑΒΑΣΕ Θερμοκρασία[i] Σύνολο Σύνολο + Θερμοκρασία[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Μέση Σύνολο/30 Ημέρες 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 ΑΝ Θερμοκρασία[i] < Μέση ΤΟΤΕ Ημέρες Ημέρες+1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μέση Θερμοκρασία:, Μέση ΓΡΑΨΕ Ημέρες με θερμοκρασία χαμηλότερη της μέσης:, Ημέρες ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Καθηγητής Πληροφορικής ΠΕ19
ΠΑΡΑΔΕΙΓΜΑ 48 Να γραφεί πρόγραμμα το οποίο να υπολογίζει τα βασικά στατιστικά μεγέθη, τη μέση τιμή, την τυπική απόκλιση και τη διάμεσο τιμή Ν ακεραίων αριθμών, όπου το Ν είναι από 2 μέχρι 100. Καθηγητής Πληροφορικής ΠΕ19
49 Διάμεσος: Για να βρεθεί η διάμεσος, πρέπει να ταξινομήσουμε τα στοιχεία του πίνακα σε αύξουσα σειρά, και η διάμεσος είναι η τιμή εκείνη του πίνακα για την οποία οι μισοί αριθμοί είναι μικρότεροι και οι άλλοι μισοί μεγαλύτεροι. Αν το πλήθος των αριθμός είναι περιττός, διάμεσος είναι ο μεσαίος αριθμός Αν το πλήθος των αριθμών είναι άρτιος, τότε διάμεσος είναι το ημιάθροισμα των δύο μεσαίων Καθηγητής Πληροφορικής ΠΕ19
50 ΠΡΟΓΡΑΜΜΑ Στατιστική ΜΕΤΑΒΛΗΤΕΣ ΑΡΧΗ ΑΚΕΡΑΙΕΣ: i, Ν, Χ[100], Άθροισμα, Άθροισμα_2, Βοηθητική ΠΡΑΓΜΑΤΙΚΕΣ: ΜΤ, Τυπ_Απόκλιση, Διάμεσος! Εισαγωγή δεδομένων ΓΡΑΨΕ Δώσε το πλήθος των αριθμών (Μέγιστο 100) ΔΙΑΒΑΣΕ Ν ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν ΓΡΑΨΕ Δώσε τον,i, ό αριθμό ΔΙΑΒΑΣΕ Χ[i] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ! Υπολογισμός αθροισμάτων Άθροισμα 0 Άθροισμα_2 0 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν Άθροισμα Άθροισμα +Χ[i] Άθροισμα_2 Άθροισμα_2 + Χ[i]^2 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Καθηγητής Πληροφορικής ΠΕ19
51 ΜΤ Άθροισμα/Ν!Υπολογισμός τυπικής απόκλισης Τυπ_Απόκλιση Τ_Ρ(Άθροισμα_2/Ν ΜΤ^2)!Ταξινόμηση των στοιχείων του πίνακα ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N ΓΙΑ j ΑΠΟ N ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1 ΑΝ X[j-1] > X[j] ΤΟΤΕ! Αντιμετάθεση των στοιχείων j και j-1 Βοηθητική X[j-1] X[j-1] X[j] X[j] Βοηθητική ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ!! j ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ!! i!υπολογισμός διαμέσου ΑΝ Ν MOD 2 =0 TOTE Διάμεσος (X[N/2]+X[N/2+1])/2 ΑΛΛΙΩΣ Διάμεσος X[(N+1)/2] ΤΕΛΟΣ_ΑΝ ΓΡΑΨΕ Πλήθος τιμών =, Ν, Μέση Τιμή =, ΜΤ ΓΡΑΨΕ Τυπική Απόκλιση =, Τυπ_Απόκλιση ΓΡΑΨΕ Διάμεσος =, Διάμεσος ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Καθηγητής Πληροφορικής ΠΕ19
ΠΑΡΑΔΕΙΓΜΑ 52 Να γραφεί πρόγραμμα που θα διαβάζει για 10 πόλεις τη θερμοκρασία της κάθε ημέρας για ένα μήνα (30 ημέρες) και να υπολογίζει τη μέση θερμοκρασία κάθε πόλης με βάση τον πίνακα θερμοκρασιών. Επίσης, για κάθε πόλη, να υπολογίζει πόσες ημέρες η θερμοκρασία ήταν κατώτερη από την αντίστοιχη μέση. Καθηγητής Πληροφορικής ΠΕ19
53 ΠΡΟΓΡΑΜΜΑ Θερμοκρασίες2 ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Θερμοκρασία[30,10], Μέση[10] ΑΚΕΡΑΙΕΣ: I, J, Ημέρες, Σύνολο ΑΡΧΗ ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 30 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 10 ΔΙΑΒΑΣΕ Θερμοκρασία[I,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 10 Σύνολο 0 ΓΙΑ I ΑΠΟ 1 ΜΕΧΡΙ 30 Σύνολο Σύνολο+ Θερμοκρασία[I,J] ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ Μέση[J] Σύνολο/30 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 10 Ημέρες 0 ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 30 ΑΝ Θερμοκρασία[I,J] < Μέση[J] ΤΟΤΕ Ημέρες Ημέρες + 1 ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ Μέση Θερμοκρασία, J, Πόλης:, Μέση[J] ΓΡΑΨΕ Ημέρες με θερμοκρασία χαμηλότερη της μέσης:,ημέρες ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Καθηγητής Πληροφορικής ΠΕ19