Mathman.gr

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

AE-M16-21

Πίνακες

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

Στα πλαίσια του μαθήματος, αντιμετωπίσαμε προβλήματα στα οποία, για παράδειγμα, έπρεπε να βρούμε το μέσο όρο 10 αριθμών (έστω οι βαθμοί των μαθητών μιας τάξης). Όπως φαίνεται στον παρακάτω αλγόριθμο, η ανάγνωση των 10 αριθμών γίνεται με τη χρήση μιας μόνο μεταβλητής x, η οποία σε κάθε εκτέλεση του βρόχου λαμβάνει μια τιμή χάνοντας την προηγούμενη που είχε στην μνήμη. Το πρόβλημα υπολογισμού του μέσου όρου λύνεται τελικά με επιτυχία χάριν στην μεταβλητή s της οποίας η τιμή αυξάνεται  αθροίζοντας σε κάθε επανάληψη την τιμή της μεταβλητής x.

Αλγόριθμος Αριθμοί

s <-- 0

Για i από 1 μέχρι 10

Διάβασε x

s <-- s + x

Τέλος_επανάληψης

MO <-- s/10

Εμφάνισε s, MO

Τέλος Αριθμοί

 

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

Αλγόριθμος Μέγιστο

Διάβασε x

max <-- x

Για i από 2 μέχρι 10

Διάβασε x

Αν x > max τότε

max <-- x

Τέλος_αν

Τέλος_επανάληψης

Εμφάνισε max

Τέλος Μέγιστο

 

Δεν είναι, όμως, όλα τα προβλήματα τόσο απλά ώστε η χρήση μόνο μίας μεταβλητής να είναι αρκετή.

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

 

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

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

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

Κάθε μία θέση ενός πίνακα αντιστοιχεί σε μια μεταβλητή. Ο πίνακας έχει ένα συμβολικό όνομα (πχ Α) το οποίο ακολουθούμενο από την τιμή ενός ή περισσοτέρων δεικτών σε αγκύλες παραπέμπει σε μια συγκεκριμένη θέση του (πχ Α[3], Α[2, 1]).

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

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

 


sideBar



You are here: Mathman