Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομές δεδομένων => Μήνυμα ξεκίνησε από: katkal στις 05 Φεβ 2020, 12:28:51 ΠΜ

Τίτλος: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: katkal στις 05 Φεβ 2020, 12:28:51 ΠΜ
Καλησπέρα. Διαβάζω για τις στοίβες και τις διαφορές  που έχουν με τους πίνακες αλλά δεν μπορώ να καταλάβω πότε  και γιατί ένας προγραμματιστής θα χρησιμοποιήσει την δομή δεδομένων που λέγεται στοίβα.  Και γιατί να μην χρησιμοποιήσει έναν πίνακα,  όπου ο πίνακας και περισσότερες λειτουργίες έχει (εισαγωγή , διαγραφή κλπ) και άμεση πρόσβαση στα στοιχεία του έχει.
Μπορείτε να μου δώσετε ένα παράδειγμα;
Ευχαριστώ.
Τίτλος: Απ: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: ApoAntonis στις 05 Φεβ 2020, 12:44:16 ΠΜ
η απάντηση που αναζητάς -υποθέτω είσαι μαθητής; - υπάρχει γραμμένη στο βιβλίο σου
Ποιόοοοοοο από όλα;;;;; ακούω να ρωτάς.

Σελίδα 182 βιβλίο 1


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

edit:
Αν είσαι πράγματι μαθητής, τότε μάλλον δεν θα το γνωρίζεις αυτό:
Σε πραγματικές γλώσσες προγραμματισμού υπάρχει η δυνατότητα οι πίνακες να λειτουργούν ως δυναμικές δομές.
Οπότε αυτό που κυρίως μας ενδιαφέρει στις στοίβες, δεν είναι η υλοποίηση αυτή καθ'αυτή,
αλλά ο τρόπος λειτουργίας τους.
Τίτλος: Απ: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: akalest0s στις 05 Φεβ 2020, 02:53:35 ΠΜ
Η βασική λειτουργία στα κουμπιά "πίσω/εμπρός", σε έναν browser. Ξέρεις, αυτά με τα οποία πηγαίνεις πίσω ή μπροστά στο ιστορικό. Ουσιαστικά αποτελούν υλοποίηση μιας στοίβας.
Ομοίως και για τις λειτουργίες των undo/redo, σε προγράμματα τύπου ms-word.
Τίτλος: Απ: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: George Eco στις 05 Φεβ 2020, 04:24:03 ΠΜ
Παράθεση από: akalest0s στις 05 Φεβ 2020, 02:53:35 ΠΜ
Η βασική λειτουργία στα κουμπιά "πίσω/εμπρός", σε έναν browser. Ξέρεις, αυτά με τα οποία πηγαίνεις πίσω ή μπροστά στο ιστορικό. Ουσιαστικά αποτελούν υλοποίηση μιας στοίβας.
Ομοίως και για τις λειτουργίες των undo/redo, σε προγράμματα τύπου ms-word.

Πολύ ωραία παραδείγματα.
Τίτλος: Απ: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: gpapargi στις 05 Φεβ 2020, 12:40:51 ΜΜ
Παράθεση από: katkal στις 05 Φεβ 2020, 12:28:51 ΠΜ
Καλησπέρα. Διαβάζω για τις στοίβες και τις διαφορές  που έχουν με τους πίνακες αλλά δεν μπορώ να καταλάβω πότε  και γιατί ένας προγραμματιστής θα χρησιμοποιήσει την δομή δεδομένων που λέγεται στοίβα.  Και γιατί να μην χρησιμοποιήσει έναν πίνακα,  όπου ο πίνακας και περισσότερες λειτουργίες έχει (εισαγωγή , διαγραφή κλπ) και άμεση πρόσβαση στα στοιχεία του έχει.
Μπορείτε να μου δώσετε ένα παράδειγμα;
Ευχαριστώ.


Φαντάσου ότι φτιάχνεις ένα πρόγραμμα που διασχίζει ένα λαβύρινθο.  Σε κάθε διασταύρωση παίρνεις ένα δρόμο και πετάς τους άλλους σε μια στοίβα. Όταν βρεθείς σε αδιέξοδο και θέλεις να πας πίσω, παίρνεις το πρώτο στοιχείο από τη στοίβα. Αυτό γίνεται γιατί θέλεις να δοκιμάσεις άλλο μονοπάτι στην τελευταία διασταύρωση και όχι στην πρώτη.
Γενικά όπου μπορείς να βρεις ένα πρόβλημα που χειρίζεσαι τα δεδομένα  με την ανάποδη σειρά αποθήκευσης, θέλεις στοίβα.
Πχ πας σε μια υπηρεσία και θέλεις το χαρτί Α. Σου λένε ότι για να σου δώσουν το Α πρέπει πρώτα να τους πας το Β. Πας να πάρεις το Β και σου λένε ότι για να πάρεις το Β πρέπει πρώτα να τους πας το Γ κλπ. Μόλις πάρεις το Γ δεν πας στο Α, αλλά πας στο Β. Τα Α, Β, Γ κλπ μπαίνουν σε στοίβα γιατί επιστρέφεις σε αυτά με την αντίστροφη σειρά με την οποία σου ζητήθηκαν. 
Τέτοιου τύπου παραδείγματα φαντάζομαι ζητάς.
Τίτλος: Απ: Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;
Αποστολή από: tdrivas στις 05 Φεβ 2020, 12:44:18 ΜΜ
Πέρα από back και Undo, επίσης σε:

-Memory Management
-Backtracking, π.χ. exhaustive searching
-Language processing, π.χ. Αναδρομή, συντακτικός έλεγχος, postfix/prefix