Απορία στην Στοιβα

Ξεκίνησε από konnacarmen, 08 Μαρ 2021, 08:05:28 ΜΜ

« προηγούμενο - επόμενο »

konnacarmen

καλησπέρα σε όλους, μπορεί να είναι χαζή η ερώτηση μου αλλα εχω φάει μεγάλο σκάλωμα, Ξέρουμε οτι οταν χρησιμοποιούμε για την στοίβα την διαδικασία εξαγωγής όλων των στοιχείων χρησιμοποιούμε την Μέχρις_ότου.... η ερώτηση μου ειναι μπορούμε να χρησιμοποιήσουμε πχ και την ΓΙΑ ή πρέπει επειδή την διαδάσκουμε με την συγκεκριμένη δομή επανάληψης να χρησιμοποιήσουμε αυτη??


Ευχαριστω πολυυυυυυυυυ

petrosp13

Ίσα ίσα
Μια υλοποίηση με "Για" είναι πολύ πιο λογική!
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

konnacarmen

τελεια ευχαριστω παρα πολυ

P.Tsiotakis

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

ενώ το ΓΙΑ καλύπτει μόνο το β. Προφανώς οποιαδήποτε κωδικοποίηση υλοποιεί την επεξεργασία FIFO είναι ορθή

konnacarmen

Καλησπλέρα να κάνω μια ερώτηση ακόμα.

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

parsenopoulou

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

George Eco

#6
Παράθεση από: parsenopoulou στις 26 Μαρ 2021, 03:19:29 ΜΜ
Kαλησπέρα.
Σύμφωνα με το σχολικό βιβλίο, στο κεφάλαιο 3, οι πίνακες είναι δομές κύριας μνήμης . Αφού λοιπόν η στοίβα και η ουρά υλοποιούνται με πίνακες, είναι κ αυτές δομές κύριας μνήμης, οπότε μιλάμε για προσωρινή αποθήκευση και όχι για μόνιμη όπως στην περίπτωση του σκληρού δίσκου. Άρα κατά την προσωπική μου εκτίμηση  η πρόταση είναι λάθος.

Συμφωνώ. Πολύ απλά, για να γράψεις σε σκληρό δίσκο, χρειάζεστε εντολές διαχείρισης αρχείων. Η ΓΛΩΣΣΑ δε διαθέτει τέτοες εντολές. Στη RAM υλοποιούνται οι δομές αυτές.

konnacarmen

ωραια ευχαριστω παρα πολυυυυυυ

thaaanos

#8
Παράθεση από: petrosp13 στις 08 Μαρ 2021, 08:15:48 ΜΜ
Ίσα ίσα
Μια υλοποίηση με "Για" είναι πολύ πιο λογική!
Θα διαφωνήσω εδώ για "φιλοσοφικούς" λόγους, η χρήση της στοίβας πρέπει να γίνει μέσω της εξαγωγής, μέχρις ότου να αδειάσει. (ή όσο δεν είναι άδεια να εξάγεις)
  
ΓΙΑ TOP ΑΠΟ TOP ΜΕΧΡΙ 1 ΜΕ ΒΗΜΑ -1
    ΓΡΑΨΕ ΣΤΟΙΧΕΙΑ[TOP] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Το παραπάνω όσο λιτό και απέριττο και δελεαστικό και αν είναι μου φαίνεται "κάπως". Και σίγουρα στο μάθημα "Δομές Δεδομένων" θα έπαιρνα 0 αν έγραφα κάτι τέτοιο λολ

petrosp13

Δηλαδή, θέλω να αδειάσω πλήρως μια στοίβα από την θέση ΤΟΡ μέχρι την θέση 1 και δεν θα χρησιμοποιήσω δομή Για;
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Πέτρος Κ.

Μα έτσι συμπεριφέρεσαι ανάρμοστα   :o  στην δομή. 
Είναι μία αρχοντική, καθώς πρέπει, στοίβα και εσύ της συμπεριφέρεσαι σαν να είναι ένας απλός πίνακας.  :D

Παράθεση από: petrosp13 στις 06 Απρ 2021, 02:57:25 ΜΜ
Δηλαδή, θέλω να αδειάσω πλήρως μια στοίβα από την θέση ΤΟΡ μέχρι την θέση 1 και δεν θα χρησιμοποιήσω δομή Για;

evry

Κανονικά δεν θα έπρεπε να μπορείς να χρησιμοποιήσεις δομή Για για να διατρέξεις μια στοίβα.
Αυτό που περιγράφεται στο σχολικό βιβλίο προφανώς και δεν είναι στοίβα! Είναι ένας πίνακας που τον ονομάζουν στοίβα.
Όταν λέμε στοίβα θα έπρεπε να εννοούμε τον αφηρημένο τύπο δεδομένων (ADT) Στοίβα αλλά στη ΓΛΩΣΣΑ δεν μπορούμε να κάνουμε κάτι τέτοιο διότι δεν επιτρέπει τον διαχωρισμό interface/implementation. Μετά σου λέει  κάνουμε Αλγοριθμική και μαθαίνουν και τα παιδιά απέξω ότι κάνουν και τμηματικό προγραμματισμό.
Ο ADT Στοίβα έχει τρεις λειτουργίες:
1) Pop
2) Push
3) isEmpty   (ίσως isFull)
https://en.wikipedia.org/wiki/Stack_(abstract_data_type)

Δεν έχει κάτι άλλο. Αν θέλουμε να ξέρουμε πόσα στοιχεία έχει σημαίνει ότι έχουμε δει πέρα από το πρώτο κάτι που παραβιάζει αυτές τις βασικές λειτουργίες της στοίβας.
Υπάρχουν κάποιες υλοποιήσεις που επιτρέπουν επιπλέον λειτουργίες όπως π.χ. ο υπολογισμός του μεγέθους της, όμως στην γενική μορφή δεν επιτρέπεται.
Ωστόσο αν θέλαμε να ξέρουμε πόσα είναι τα στοιχεία της και να έχουμε πρόσβαση σε όλα χωρίς να κάνουμε Pop τότε γιατί να χρησιμοποιούμε Στοίβα και όχι ένα απλό Array?
Κανονικά η σωστή χρήση Στοίβας προϋποθέτει ότι ο κώδικας που την χρησιμοποιεί δεν θα αλλάξει καθόλου είτε υλοποιείται με πίνακα είτε με δυναμική δομή.
Εμείς πάμε κατευθείαν στην υλοποίηση με πίνακα, μιλάμε για Στοίβα, προκαλούμε στους μαθητές σύγχυση αλλά ... κάνουμε Αλγοριθμική και τμηματικό προγραμματισμό.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

Παράθεση από: thaaanos στις 06 Απρ 2021, 12:43:54 ΜΜ
  
ΓΙΑ TOP ΑΠΟ TOP ΜΕΧΡΙ 1 ΜΕ ΒΗΜΑ -1
    ΓΡΑΨΕ ΣΤΟΙΧΕΙΑ[TOP] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Να προσθέσω απλά ότι υπάρχει κι άλλο πρόβλημα στο παραπάνω, καθώς μεταβάλλεται η αρχική τιμή της ΓΙΑ.

thaaanos

Παράθεση από: Νίκος Αδαμόπουλος στις 07 Απρ 2021, 10:20:01 ΠΜ
Να προσθέσω απλά ότι υπάρχει κι άλλο πρόβλημα στο παραπάνω, καθώς μεταβάλλεται η αρχική τιμή της ΓΙΑ.
Αφού δουλεύει ;)

ripper

Μια χαρά δουλεύει η ΓΙΑ, αρκεί να είναι σε αυτήν τη μορφή:

ΓΙΑ Ι ΑΠΟ ΤΟΠ ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
    ΓΡΑΨΕ Α[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΟΠ <- 0