Aσκήσεις σε στοίβα και ουρά σε ΓΛΩΣΣΑ

Ξεκίνησε από Πέτρος Κ., 22 Ιουν 2015, 08:53:23 ΜΜ

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

bugman

Στις ασκήσεις σου δεν έχεις όμως το τι θα  επιστρέφει το πρόγραμμα σε περίπτωση υπερχείλισης-υποχείλισης! Και επιπλέον και οι δυο ασκήσεις ζητούν ουσιαστικά την επανάληψη του κώδικα για την ουρά! Δεν είναι κάπως κουραστικό αυτό; (αν πέσουν μαζί...δηλαδή;)

mokasa

#106
Θα ήθελα κάποια σχόλια - παρατηρήσεις για τις ασκήσεις, αν κάποιος έχει χρόνο και διάθεση, ευχαριστώ!
(EDIT) Διόρθωσα το αρχείο, ζητώ συγνώμη για την καθυστέρηση. Επίσης αφαίρεσα μια άσκηση με ουρά, καθώς στις πρόσφατες οδηγίες αναφέρεται ότι ασκήσεις σε γλώσσα με χρήση πίνακα μπορούν να υλοποιηθούν μόνο για τη δομή της στοίβας.

NiColas1957


gthal

Παράθεση από: Lorien στις 04 Νοε 2015, 09:24:07 ΜΜ
Θα ήθελα κάποια σχόλια - παρατηρήσεις για τις ασκήσεις, αν κάποιος έχει χρόνο και διάθεση, ευχαριστώ!
Το αρχείο σου έχει κάποιο πρόβλημα (μηδενικό μέγεθος??)
Φιλικά,
Γιώργος Θαλασσινός

gpapargi

Το ερώτημα για μένα είναι το πόσο θα το τραβήξουμε. Το πιο καλό θα ήταν να μπουν ασκήσεις που δικαιολογούν τη χρήση στοίβας-ουράς. Πχ σε πίνακα 2 διαστάσεων υπάρχουν μόνο 0 και 1. Όσα 1 είναι γειτονικά αποτελούν μια νησίδα. Να δίνεται μια θέση που έχει 1 και να βρίσκουμε το πλήθος των 1 που περιλαμβάνει η συγκεκριμένη νησίδα.
Αν περιγράψουμε τον τρόπο χρήσης ουράς στην άσκηση, γίνεται (πχ βρίσκεις τους γείτονες του αρχικού σημείου που είναι 1, τους βάζεις σε μια ουρά και μετά βγάζεις από την ουρά ένα στοιχείο και βάζεις τους γείτονες του κλπ κλπ). Επίσης ασκήσεις που βγαίνουν αναδρομικά μπορούν να χρησιμοποιηθούν σαν παραδείγματα στοίβας αφού η αναδρομή και η στοίβα συνδέονται. Αλλά το θέμα είναι πόσο θέλουμε και πόσο πρέπει να το τραβήξουμε.

Γιάννης Αναγνωστάκης

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

Όπου έχει προκύψει ανάγκη για απώθηση, κάνετε αντικατάσταση της τιμής που απωθείται με άλλη (π.χ stack[top]<-- '-', όπως κάνουν στην άσκηση - υπόδειγμα των οδηγιών); Και απο που στην εκφώνηση αυτή των οδηγιών προκύπτει 'ανάγκη' για αντικατάσταση του αριθμού κυκλοφορίας με '-'

Επίσης αν θέλει ένας μαθητής να  εμφανίσει τα περιεχόμενα μίας στοίβας , δεν μπορεί  απλά να κάνει μία επανάληψη απο 1 μέχρι top (ή αντίστροφα); Γιατί πρέπει να εφαρμόσει τον αλγόριθμο της απώθησης;

Και αφού υλοποιούμε τις στοίβες με πίνακες, γιατί να μην επιτρέπεται ας πούμε μία αντιμετάθεση τιμών; μία ταξινόμηση; Πως αντιμετωπίζουμε τους μαθητές που ρωτάνε αυτές τις εύλογες απορίες;


Ειδικά στη στοίβα, νομίζω έπρεπε να το ξανασκεφτούν για χρήση της σε ασκήσεις...


pstasinos

Παράθεση από: Γιάννης Αναγνωστάκης στις 10 Απρ 2016, 12:10:13 ΠΜ
Εγώ θέλω να κάνω μία ερώτηση σε όσους έχουν διδάξει ασκήσεις με στοίβα

Όπου έχει προκύψει ανάγκη για απώθηση, κάνετε αντικατάσταση της τιμής που απωθείται με άλλη (π.χ stack[top]<-- '-', όπως κάνουν στην άσκηση - υπόδειγμα των οδηγιών); Και απο που στην εκφώνηση αυτή των οδηγιών προκύπτει 'ανάγκη' για αντικατάσταση του αριθμού κυκλοφορίας με '-'

Επίσης αν θέλει ένας μαθητής να  εμφανίσει τα περιεχόμενα μίας στοίβας , δεν μπορεί  απλά να κάνει μία επανάληψη απο 1 μέχρι top (ή αντίστροφα); Γιατί πρέπει να εφαρμόσει τον αλγόριθμο της απώθησης;

Σωστή παρατήρηση. Προσωπικά το θέμα το έχω συζητήσει αρκετά με τους μαθητές μου. Αν η άσκηση που έχουν να αντιμετωπίσουν , αρχικά γεμίζει μια στοίβα και θέλοντας να υπολογίσουν κάτι απλά την αδειάζουν , και εκεί να τελειώνει η άσκηση , τότε απλά τους έχω πει το top <- top -1 . Αλλιώς θέλει προσοχή όπως αναφέρεις.
Συμφωνώ πως απλά με μία επανάληψη , εμφανίζει κάποιος τις τιμές . Δεν έχει νόημα ο αλγόριθμος της απώθησης.
Σε ποιο υπόδειγμα οδηγιών αναφέρει την αντικατάσταση του stack[top] ; Ευχαριστώ

dski

Παράθεση από: Γιάννης Αναγνωστάκης στις 10 Απρ 2016, 12:10:13 ΠΜ
Επίσης αν θέλει ένας μαθητής να  εμφανίσει τα περιεχόμενα μίας στοίβας , δεν μπορεί  απλά να κάνει μία επανάληψη απο 1 μέχρι top (ή αντίστροφα); Γιατί πρέπει να εφαρμόσει τον αλγόριθμο της απώθησης;

Και αφού υλοποιούμε τις στοίβες με πίνακες, γιατί να μην επιτρέπεται ας πούμε μία αντιμετάθεση τιμών; μία ταξινόμηση; Πως αντιμετωπίζουμε τους μαθητές που ρωτάνε αυτές τις εύλογες απορίες;

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

Το θέμα αυτό έχει ξανατεθεί στο Στέκι πριν λίγο καιρό. Δείτε τη σχετική συζήτηση εδώ.

Γιάννης Αναγνωστάκης

Παράθεση από: dski στις 10 Απρ 2016, 01:44:30 ΠΜ
Κατά την άποψή μου στη στοίβα, ως αφηρημένη δομή δεδομένων, οι μόνες αποδεκτές ενέργειες/λειτουργίες είναι η ώθηση και η απώθηση. Οποιαδήποτε άλλη λειτουργία θα πρέπει να υλοποιείται με χρήση αυτών. Αν κανείς ορίσει και άλλες ενέργειες (π.χ. προσπέλαση και εμφάνιση των στοιχείων μέσω μιας επανάληψης) τότε η δομή δεν είναι πλέον στοίβα αλλά κάτι άλλο.

Το θέμα αυτό έχει ξανατεθεί στο Στέκι πριν λίγο καιρό. Δείτε τη σχετική συζήτηση εδώ.

Συμφωνώ μαζί σου, απλά παιδαγωγικά και διδακτικά η όλη ιστόρια 'μπάζει'...

Γιάννης Αναγνωστάκης

Παράθεση από: pstasinos στις 10 Απρ 2016, 12:26:52 ΠΜ
Σωστή παρατήρηση. Προσωπικά το θέμα το έχω συζητήσει αρκετά με τους μαθητές μου. Αν η άσκηση που έχουν να αντιμετωπίσουν , αρχικά γεμίζει μια στοίβα και θέλοντας να υπολογίσουν κάτι απλά την αδειάζουν , και εκεί να τελειώνει η άσκηση , τότε απλά τους έχω πει το top <- top -1 . Αλλιώς θέλει προσοχή όπως αναφέρεις.
Συμφωνώ πως απλά με μία επανάληψη , εμφανίζει κάποιος τις τιμές . Δεν έχει νόημα ο αλγόριθμος της απώθησης.
Σε ποιο υπόδειγμα οδηγιών αναφέρει την αντικατάσταση του stack[top] ; Ευχαριστώ

Στο παράδειγμα που υπάρχει στις επίσημες οδηγίες, στην άσκηση  με το οχηματαγωγό πλοίο

petrosp13

Η δική μου άποψη είναι ότι η στοίβα είναι απλά ένας τρόπος υλοποίησης μιας λειτουργίας, δηλαδή LIFO
Και εφόσον την υλοποιούμε με πίνακα, οτιδήποτε δεν παραβιάζει την λειτουργία LIFO, δεν είναι λάθος
Αν πχ πρέπει να εμφανίσουμε όλα τα αυτοκίνητα που υπάρχουν στο πλοίο, δεν υπάρχει κανένας λόγος να τα εμφανίσουμε από την κορυφή προς τα κάτω
Ο σκοπός της διδασκαλίας της στοίβας είναι να κατανοήσουν τα παιδιά την λειτουργία LIFO θεωρητικά και με κώδικα
Από εκεί και πέρα, οι ασκήσεις μπορούν να "ξεχειλώσουν" όπως κάθε άσκηση προγραμματισμού

ΥΓ. Για τις '-' Γιάννη, ασχολίαστο..
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

xara_pap

Εφόσον γίνεται υλόποίηση με πίνακα δεν θα σου έβγαζε σφάλμα να εμφανίσεις από 1 μεχρι Top. Όμως η λογική της στοίβας είναι ότι έχουμε προσβαση μόνο στο κορυφαίο στοιχείο της στοίβας. Άρα για να τα προσπελάσεις πρέπει να κάνεις απώθηση. Ακόμη εγώ είπα στα παιδιά για παράδειγμα σε μία άσκηση που έχει ο κυριος Καρκαμάνης με ηλεκτρονικό κατάστημα που βάζει προιόντα στο καλάθι και βγάζει κι εν τέλει ρωτάει τι λεφτα θα πληρώσει ο πελάτης, όποιος πάει να το βρεί το άθροισμα αφού τελειώσει η επανάληψη ότι πρέπει να φάινεται ξεκάθαρα ότι ο top μειώνεται σε κάθε επανάληψη κατά ένα και οχι απλως να προσθέσουν ανάποδα όλα τα στοιχεία. Μέχρι να έχουμε παραπάνω πληροφορίες καλύτερα να είμαστε όσο πιο αναλυτικοί γίνεται. Όσο για την αντικατάσταση με την παύλα γνώμη μου είναι ότι είναι βλακεία και δεν το είπα στα παιδιά μιας και στις οδηγίες έχει υλοποίηση ώθησης απώθησης και δεν την βάζει την παύλα αρα στηρίχθηκα πάνω σε αυτό παρόλο που στο ferry boat το βάζει. Τους είπα να το βάλουν μόνο αν λέει η άσκηση να αντικαταστήσεις το στοιχείο με πάυλα ή οτιδήποτε άλλο.
Αν και πιστεύω ότι φέτος μόνο θεωρητικές ασκήσεις θα βάλουν και το πολύ να κάνουμε μία ώθηση και απώθηση σε πρώτο δεύτερο θέμα πολύ απλή.