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

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

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

Πέτρος Κ.

Δεν έχω καταλάβει τι εννοεί ο ποιητής;

Είδα στο βιβλίο του καθηγήτή ότι υπάρχουν οι αλγόριθμοί για Ωθηση / Απώθηση και Εισαγωγή / Εξαγωγή για τις ΔΤ3 και ΔΤ4.
α) Οι μαθητές θα τους θεωρούν δεδομένους ως υποπρόγραμματα και θα τους χρησιμοποιούν στα προγράμματά τους;
β) Θα πρέπει οι μαθητές να ξέρουν να τους υλοποιούν σε ΓΛΩΣΣΑ;
γ) Γιατί στην Ωθηση και Απώθηση δίνει δεδομένο το TOP? Αυτή η μεταβλήτή λογικά είναι εσωτερική της δομής και δεν είναι προσπελάσιμη απ'έξω!
δ) Ο πίνακας Stack πως και που θα δηλωθεί;
ε) Πως μπορώ να χρησιμοποιήσω 2 ή περισσότερες στοίβες σε ένα πρόγραμμα; Πώς δηλώνω μία στοίβα σε ΓΛΩΣΣΑ;

Rathaniel

α) Πολύ αμφιβάλλω για τους αλγορίθμους σε υποπρογράμματα.
β)Πιστεύω πως ναι θα πρέπει. Το πρόβλημα όμως θα πρέπει να είναι με πολύ καλή περιγραφή για να καταλάβει κάποιος τις απαιτήσεις στοίβας-ουράς.Ειδικά όμως για την ουρά θα πρέπει το πρόβλημα που δίνεται να έχει αρκετές παραδοχές. Ο τρόπος υλοποίησης της ουράς στο βιβλίο είναι εντελώς λάθος προγραμματιστικά (γιατί κανονικά γίνεται με δείκτες), οπότε θα πρέπει να ελαχιστοποιηθούν οι απαιτήσεις από το πρόβλημα.
γ)Αν θεωρείται δεδομένο, τότε στο πρόβλημα θα πρέπει να λεει ότι το δίνει ο χρήστη με Διάβασε. Συμφωνω με την προσπελασιμότητα, η top θα αλλάζει από μόνη της από το πρόγραμμα.
δ)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΟΣ: Stack[20]
το πρόβλημα θα πρέπει υποχρεωτικά να περιγράφει το μέγεθος της στοίβας.   
ε)Για την δήλωση, σου απάντησα στο δ. Τώρα η χρήση έχει καποια τυποποιημένη διαδικασία προγραμματιστική (έλεγχοι υπερχείλισης-υποχείλισης με χρήση της top, αλλαγή της top, κοκ), αλλά όλα εξαρτούνται από την περιγραφή του προβλήματος. Για το "2 ή περισσότερες" θα έλεγα ότι μπορεί να έχεις δύο στοίβες σαν να είναι δύο παράλληλοι πίνακες (ονόματα βιβλίων και βάρη βιβλίων) , ή να είναι δύο στοίβες διαφορετικές (Στοίβα_βιβλίων1  και Στοίβα_βιβλίων2) και να ελέγχεται σε ποιά από τις δύο έγιναν οι περισσότερες λειτουργίες, ή αν στο τέλος μιας επαναληπτικής διαδικασίας η Στοίβα1 έχει περισσότερα βιβλία από την άλλη.

Η χρήση στοίβας σε πρόγραμμα δεν θα δημιουργήσει πρόβλημα. Τώρα για την ουρά.....
Χρηστίδης Αλέξανδρος,
Μηχανικός Επ/κών και Πλη/κών Συστημάτων,
Msc Στα Προηγμένα Συστήματα Πληροφορικής

Sergio

Η υλοποίηση της στοίβας με πίνακα δε νομίζω πως θα προβληματίσει τους μαθητές.

Για την ουρά διατηρώ κάποιες επιφυλάξεις λόγω της "κυκλικής" λειτουργίας των δεικτών front και rear όταν η υλοποίηση γίνεται με πίνακα ..  :-\
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

Πέτρος Κ.

Αναρωτιέμαι, πώς θα απαντήσουμε στην παρακάτω άσκηση:

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο, χρησιμοποιώντας δομή στοίβας, να διαβάζει 5 αριθμούς και να τους εμφανίζει με αντίστροφη σειρά.

nikolasmer

Παράθεση από: Πέτρος Κ. στις 10 Ιουλ 2015, 09:16:40 ΜΜ
Αναρωτιέμαι, πώς θα απαντήσουμε στην παρακάτω άσκηση:

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο, χρησιμοποιώντας δομή στοίβας, να διαβάζει 5 αριθμούς και να τους εμφανίζει με αντίστροφη σειρά.

Δεν θα έλεγα πως μπορεί να έχει νόημα μια τέτοια άσκηση με αυτή την εκφώνηση
Μερεντίτης Νικόλαος
Πληροφορικός

Κανένας

Παράθεση από: Πέτρος Κ. στις 10 Ιουλ 2015, 09:16:40 ΜΜ
Αναρωτιέμαι, πώς θα απαντήσουμε στην παρακάτω άσκηση:

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο, χρησιμοποιώντας δομή στοίβας, να διαβάζει 5 αριθμούς και να τους εμφανίζει με αντίστροφη σειρά.
Πέτρο, πέντε ωθήσεις και μετά πέντε απωθήσεις.
Νικηφόρος Μανδηλαράς
ΓΕΛ Νάξου "Μανώλης Γλέζος"
https://blogs.sch.gr/nobody/

Diotima

Παράθεση από: Πέτρος Κ. στις 10 Ιουλ 2015, 09:16:40 ΜΜ
Αναρωτιέμαι, πώς θα απαντήσουμε στην παρακάτω άσκηση:

Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ το οποίο, χρησιμοποιώντας δομή στοίβας, να διαβάζει 5 αριθμούς και να τους εμφανίζει με αντίστροφη σειρά.
Κι εγώ δε νομίζω ότι έχει νόημα αυτή η διατύπωση άσκησης σαν εφαρμογή της στοίβας. Λύνεται απλά χωρίς τις λειτουργίες της στοίβας. Θα ήταν καλύτερα νομίζω να ζητείται να γίνει ώθηση 5 αριθμών σε μια στοίβα και απώθηση τους στη συνέχεια.
Εμένα αυτό που με προβληματίζει και σε σχέση με τη συζήτηση που γίνεται εδώ είναι η εξής παρατήρηση από τη διδακτέα-εξεταστέα ύλη:

"Να προστεθούν ασκήσεις στη στοίβα και ουρά που επίσης θα υλοποιηθούν απ'ευθείας σε ΓΛΩΣΣΑ και με την πρόσθεση της ενότητας 3.9 που θα διδαχθεί."

Γιατί συνδέουν τις ασκήσεις σε στοίβα και ουρά με την ενότητα 3.9;
Μήπως εννοούν ότι θα διδαχθούν με τη δομή της λίστας;
Παρακάτω βέβαια οι παρατηρήσεις λένε:

"Οι δυναμικές δομές της ενότητας 3.9 (λίστες, δένδρα, γράφοι) να διδαχθούν αποκλειστικά ως θεωρία."
Μήπως λοιπόν οι δυναμικές δομές διδαχθούν θεωρητικά μόνο και ασκήσεις σε αυτές θα γίνουν μόνο για τη στοίβα και την ουρά;
Αν είναι έτσι βέβαια, τότε η υλοποίηση της στοίβας και της ουράς με πίνακα στο 3ο κεφάλαιο δε θα συμφωνεί με τις ασκήσεις.
Νομίζω λοιπόν ότι χρειάζονται απαραίτητα διευκρινήσεις για τις παρατηρήσεις και δε μπορούμε να βγάλουμε σίγουρα συμπεράσματα τώρα. Αν δε διευκρινιστούν αυτά δε μπορούμε να σκεφτόμαστε ασκήσεις.

Πέτρος Κ.

Παράθεση από: Diotima στις 10 Ιουλ 2015, 11:30:23 ΜΜ
Λύνεται απλά χωρίς τις λειτουργίες της στοίβας. Θα ήταν καλύτερα νομίζω να ζητείται να γίνει ώθηση 5 αριθμών σε μια στοίβα και απώθηση τους στη συνέχεια.

Το ξέρω ότι λύνεται πιο απλά χωρίς στοίβα. Αλλά εγώ θέλω να δώ στην πράξη πώς δηλώνουμε την στοίβα σε ένα πρόγραμμα σε ΓΛΩΣΣΑ και πώς εκτελούμε τα push και pop...

petrosp13

Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Diotima

Αυτό δε μπορώ να καταλάβω Πέτρο:

"Να προστεθούν ασκήσεις στη στοίβα και ουρά που επίσης θα υλοποιηθούν απ'ευθείας σε ΓΛΩΣΣΑ και με την πρόσθεση της ενότητας 3.9 που θα διδαχθεί."

Γιατί συνδέονται, στην παραπάνω οδηγία που δόθηκε, οι ασκήσεις σε στοίβα και ουρά με την πρόσθεση της ενότητας 3.9 που έχει να κάνει με δυναμικές δομές δεδομένων, ενώ η στοίβα και ουρά παρουσιάζονται στο 3ο ως στατικές δομές αφού υλοποιούνται με χρήση πινάκων. Μπορείς εσύ να βγάλεις νόημα από αυτό;

petrosp13

Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Diotima

Συμφωνώ μαζί σου Πέτρο, μετά από πολύ σκέψη και μελέτη όσων είναι στο βιβλίο μαθητή και καθηγητή, μάλλον η σύνδεση της στοίβας και της ουράς με την παράγραφο 3.9 στη διατύπωση ήταν άστοχη, μπορεί ακόμα και ο άνθρωπος που την έγραψε να είχε στο μυαλό του δυναμικούς πίνακες ή και τίποτα από αυτά, οπότε σταματώ να προβληματίζομαι. Από κάπου πρέπει να ξεκινήσουμε. Αν τυχόν αύριο ανατραπούν τα πράγματα βλέπουμε.

Diotima

Έφτιαξα δύο διαδικασίες για ώθηση και απώθηση των αριθμών και ένα πρόγραμμα που τις καλεί και υλοποιεί την άσκηση που τέθηκε παραπάνω. Το πρόγραμμα χρησιμοποιεί μια στοίβα με 100 θέσεις.

ΠΡΟΓΡΑΜΜΑ ΠΕΝΤΕ_ΑΡΙΘΜΟΙ_ΣΕ_ΣΤΟΙΒΑ
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Stack[100], i, top, number, item
   ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
   top <-- 0
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
      ΔΙΑΒΑΣΕ number
      ΚΑΛΕΣΕ ΩΘΗΣΗ (Stack, number, top, done)
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
      ΚΑΛΕΣΕ ΑΠΩΘΗΣΗ (Stack, item, top, done)
      ΓΡΑΨΕ item
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΩΘΗΣΗ (Stack, item, top, done)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Stack[100], item, top
   ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
   ΑΝ top < 100 ΤΟΤΕ
      top <-- top + 1
      Stack[top] <-- item
      done <-- ΑΛΗΘΗΣ
   ΑΛΛΙΩΣ
      done <-- ΨΕΥΔΗΣ
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΠΩΘΗΣΗ (Stack, item, top, done)
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Stack[100], item, top
   ΛΟΓΙΚΕΣ: done
ΑΡΧΗ
   ΑΝ top <> 0 ΤΟΤΕ    ! ή top > = 1
      item <-- Stack[top]
      top <-- top - 1
      done <-- ΑΛΗΘΗΣ
   ΑΛΛΙΩΣ
      done <-- ΨΕΥΔΗΣ
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Diotima

Επισυνάπτω ένα αρχείο με την πρώτη και δεύτερη άσκηση που έγραψα που είναι αυτή:
α) Να γράψετε πρόγραμμα που θα διαβάζει 10 ακεραίους αριθμούς και θα κάνει εισαγωγή των αριθμών σε μια ουρά 10 θέσεων, στη συνέχεια να εξαχθούν 6 αριθμοί οι οποίοι θα εμφανίζονται με τη σειρά που εξάγονται και να εισαχθούν άλλοι 3 ακέραιοι αριθμοί.
Να εμφανιστούν κατά σειρά οι αριθμοί που βρίσκονται στο τέλος μέσα στην ουρά.
β) Το πρόγραμμα θα καλεί τις διαδικασίες ΕΙΣΑΓΩΓΗ και ΕΞΑΓΩΓΗ που θα υλοποιούν τις αντίστοιχες λειτουργίες της ουράς τις οποίες και θα γράψετε. Αν η ουρά γεμίσει αλλά έχει άδειες θέσεις μπροστά, τότε να μεταφέρονται τα στοιχεία που βρίσκονται στην ουρά μπροστά ώστε να συνεχίζεται η διαδικασία της εισαγωγής.
Θα επιστρέφονται από τις διαδικασίες οι λογικές τιμές ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ αναλόγως αν η εισαγωγή ή η εξαγωγή στοιχείου στην ουρά έγιναν επιτυχώς ή όχι.

tdrivas

Γράψτε πρόγραμμα που διαβάζει χαρακτήρα προς χαρακτήρα μία πρόταση και ελέγχει αν οι παρενθέσεις που ανοίγουν είναι ίσες με αυτές που κλείνουν. Μία καλή προσέγγιση είναι να χρησιμοποιήσετε μία στοίβα. Όταν διαβαστεί μία αριστερή παρένθεση πρέπει να εισάγεται στην στοίβα και όταν διαβαστεί μία δεξιά παρένθεση πρέπει μία αριστερή να απωθείται από την στοίβα. Αν η στοίβα είναι κενή στο τέλος της πρότασης σημαίνει ότι η πρόταση είναι σωστή συντακτικά όσο αναφορά τον αριθμό των παρενθέσεων
Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas