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

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

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

Πέτρος Κ.

ΠΡΟΓΡΑΜΜΑ ΠΕΝΤΕ_ΑΡΙΘΜΟΙ_ΣΕ_ΣΤΟΙΒΑ
ΜΕΤΑΒΛΗΤΕΣ
	ΑΚΕΡΑΙΕΣ: 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
	ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Έχω τους εξής προβληματισμούς για το παραπάνω:

1. Είναι σωστό να έχω πρόσβαση στην top μέσα στο κυρίως πρόγραμμα; Αν μέσα στο κυρίως πρόγραμμα ένας μαθητής γράψει top <-- top -1 θα το θεωρήσουμε λάθος;

2. Είναι σωστό να έχω πλήρη πρόσβαση στον πίνακα Stack μέσα από το κυρίως πρόγραμμα; Αυτό δεν ακυρώνει την λογική της στοίβας; Αν ένας μαθητής γράψει το παρακάτω μέσα στο κυρίως πρόγραμμα το θεωρούμε λάθος;

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
	ΓΡΑΨΕ Stack[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


ether

#16
Υλοποίηση εισαγωγής και εξαγωγής σε ουρά με κυκλική διαχείριση.
Στο συνημμένο ένα πρόγραμμα που εισάγει και εξάγει στοιχεία από την ουρά.

ΔΙΑΔΙΚΑΣΙΑ εισαγωγη(ουρα, εμπρος, πισω, στοιχειο, εγινε) 
ΣΤΑΘΕΡΕΣ
  ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ = 3
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ουρα[ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ], στοιχειο
  ΑΚΕΡΑΙΕΣ: εμπρος, πισω
  ΛΟΓΙΚΕΣ: εγινε
ΑΡΧΗ
  ΑΝ ειναιΓεματηΟυρα(εμπρος, πισω, ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) ΤΟΤΕ
    εγινε <- ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
    πισω <- (πισω mod ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) + 1
    ουρα[πισω] <- στοιχειο
    ΑΝ ειναιΑδειαΟυρα(εμπρος, πισω, ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) ΤΟΤΕ
      εμπρος <- πισω
    ΤΕΛΟΣ_ΑΝ
    εγινε <- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΔΙΑΔΙΚΑΣΙΑ εξαγωγη(ουρα, εμπρος, πισω, στοιχειο, εγινε) 
ΣΤΑΘΕΡΕΣ
  ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ = 3
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: ουρα[ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ], στοιχειο
  ΑΚΕΡΑΙΕΣ: εμπρος, πισω
  ΛΟΓΙΚΕΣ: εγινε
ΑΡΧΗ
  ΑΝ ειναιΑδειαΟυρα(εμπρος, πισω, ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) ΤΟΤΕ
    εγινε <- ΨΕΥΔΗΣ
  ΑΛΛΙΩΣ
    στοιχειο <- ουρα[εμπρος] 
    ΑΝ μεγεθοςΟυρας(εμπρος, πισω, ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) = 1 ΤΟΤΕ
      εμπρος <- 0
      πισω <- 0
    ΑΛΛΙΩΣ
      εμπρος <- (εμπρος mod ΧΩΡΗΤΙΚΟΤΗΤΑ_ΟΥΡΑΣ) + 1
    ΤΕΛΟΣ_ΑΝ
    εγινε <- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


ΣΥΝΑΡΤΗΣΗ μεγεθοςΟυρας(εμπρος, πισω, χωρητικοτητα): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: εμπρος, πισω, χωρητικοτητα
ΑΡΧΗ
  ΑΝ εμπρος = 0 ΤΟΤΕ
    μεγεθοςΟυρας <- 0
  ΑΛΛΙΩΣ_ΑΝ πισω >= εμπρος ΤΟΤΕ
    μεγεθοςΟυρας <- πισω - εμπρος + 1
  ΑΛΛΙΩΣ
    μεγεθοςΟυρας <- πισω + χωρητικοτητα - εμπρος + 1
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΣΥΝΑΡΤΗΣΗ ειναιΑδειαΟυρα(εμπρος, πισω, χωρητικοτητα): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: εμπρος, πισω, χωρητικοτητα
ΑΡΧΗ
  ειναιΑδειαΟυρα <- μεγεθοςΟυρας(εμπρος, πισω, χωρητικοτητα) = 0
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


ΣΥΝΑΡΤΗΣΗ ειναιΓεματηΟυρα(εμπρος, πισω, χωρητικοτητα): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: εμπρος, πισω, χωρητικοτητα
ΑΡΧΗ
  ειναιΓεματηΟυρα <- μεγεθοςΟυρας(εμπρος, πισω, χωρητικοτητα) = χωρητικοτητα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Diotima

#17
@ Πέτρος Κ.
Στη ΓΛΩΣΣΑ όταν εκτελείται ένα πρόγραμμα στα μόνα που έχει πρόσβαση είναι οι μεταβλητές του προγράμματος. Γενικά έχουμε μόνο τοπικές μεταβλητές.
Στην άσκηση αυτή το ίδιο το πρόγραμμα δημιουργεί τον πίνακα Stack, είναι δικός του πίνακας. Την ώρα που καλεί τις διαδικασίες ΩΘΗΣΗ ή ΑΠΩΘΗΣΗ, εκείνη ακριβώς τη στιγμή, δεσμεύεται χώρος για τις παραμέτρους των διαδικασιών και για όλες τις μεταβλητές τους. Δηλαδή όταν ξεκινάει η εντολή ΚΑΛΕΣΕ ΩΘΗΣΗ (Stack, number, top, done) οι τιμές των παραμέτρων που έχει αυτή η ΚΑΛΕΣΕ (και οι οποίες είναι μεταβλητές του προγράμματος) μεταφέρονται στις αντίστοιχες παραμέτρους της διαδικασίας ΩΘΗΣΗ(Stack, item, top, done) οι οποίες είναι διαφορετικές μεταβλητές εκείνη την ώρα από τις παραμέτρους κλήσης του προγράμματος, ας συμπίπτουν τα ονόματα κάποιων. Όσο εκτελείται η διαδικασία έχουμε δύο πίνακες Stack στη μνήμη, έναν του προγράμματος και έναν της διαδικασίας. Όταν τελειώσει η διαδικασία ΩΘΗΣΗ οι τιμές των δικών της τοπικών μεταβλητών-παραμέτρων επιστρέφονται με αντιστοίχηση κατά σειρά στις παραμέτρους του προγράμματος και στη συνέχεια αποδεσμεύεται η μνήμη από όλες τις μεταβλητές της διαδικασίας, οπότε αυτές χάνονται. Έτσι λειτουργούν οι παράμετροι στη ΓΛΩΣΣΑ. Οπότε η τιμή της top αλλά και η ίδια η στοίβα Stack για να διατηρούν τις τιμές τους καθ' όλη τη διάρκεια εκτέλεσης του προγράμματος πρέπει να ανήκουν στο πρόγραμμα. Ένα υποπρόγραμμα δε μπορεί να διατηρήσει τις τιμές των μεταβλητών του στη μνήμη, διότι αυτές χάνονται όταν τελειώνει η εκτέλεση του.
Προφανώς και μπορεί να επηρεαστεί λοιπόν η τιμή της top μέσα στο πρόγραμμα αλλά αυτό θα μπορούσε να δημιουργήσει λάθος αποτέλεσμα στη λειτουργία του προγράμματος όσον αφορά τη χρήση της στοίβας που χρησιμοποιεί.
Αν το πρόγραμμα δεν είχε πρόσβαση στην top τότε οι διαδικασίες δε θα ήξεραν την τιμή της κάθε φορά που γίνεται μια νέα κλήση τους.
Πολύ κατατοπιστική πάνω στις ερωτήσεις σου είναι η παράγραφος 10.5.3 του σχολικού βιβλίου.
Στην τελευταία ερώτηση όχι, γιατί να είναι λάθος, μπορεί να ζητείται και ως ερώτημα από μια άσκηση. Όπως είπα πριν ο πίνακας Stack είναι πίνακας του προγράμματος.

tasospap

Ωραία όλα αυτά που λέτε παραπάνω. Αλλά ξέρετε πως ηχούν στα αυτιά ενός μαθητή 17 χρονών;

Σαν τις δηλώσεις του αντιπροέδρου του Εδεσσαϊκού!

tsak

Παράθεση από: tasospap στις 12 Ιουλ 2015, 06:58:05 ΜΜ
Ωραία όλα αυτά που λέτε παραπάνω. Αλλά ξέρετε πως ηχούν στα αυτιά ενός μαθητή 17 χρονών;

Σαν τις δηλώσεις του αντιπροέδρου του Εδεσσαϊκού!

Πιο ευστοχη απαντηση δεν θα μπορουσε να δοθει!

Εαν πρωτα δεν διευκρινιστει τουλαχιστον για την ουρα, αν θα χρησιμοποιησουμε την λογικη του βιβλιου μαθητη ή αυτην του βιβλιου καθηγητη, νομιζω οτι ουτε σε ασκησεις μπορουμε να προχωρησουμε. Εδω εχουμε μπλοκαρει εμεις και θα παμε να  περασουμε τα περι κυκλικης ουρας στους μαθητες? Και μαλιστα σε ενα κοινο πλεον πιο αδυνατο σε σχεση με αλλες χρονιες  :-[

Diotima

#20
Παράθεση από: Πέτρος Κ. στις 12 Ιουλ 2015, 12:44:02 ΜΜ
ΠΡΟΓΡΑΜΜΑ ΠΕΝΤΕ_ΑΡΙΘΜΟΙ_ΣΕ_ΣΤΟΙΒΑ
ΜΕΤΑΒΛΗΤΕΣ
	ΑΚΕΡΑΙΕΣ: 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
	ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Έχω τους εξής προβληματισμούς για το παραπάνω:

1. Είναι σωστό να έχω πρόσβαση στην top μέσα στο κυρίως πρόγραμμα; Αν μέσα στο κυρίως πρόγραμμα ένας μαθητής γράψει top <-- top -1 θα το θεωρήσουμε λάθος;

2. Είναι σωστό να έχω πλήρη πρόσβαση στον πίνακα Stack μέσα από το κυρίως πρόγραμμα; Αυτό δεν ακυρώνει την λογική της στοίβας; Αν ένας μαθητής γράψει το παρακάτω μέσα στο κυρίως πρόγραμμα το θεωρούμε λάθος;

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
	ΓΡΑΨΕ Stack[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


Οι ερωτήσεις σου για μη πρόσβαση στην top και στον πίνακα Stack με προβλημάτισαν και έδωσα την εξής λύση ώστε να μην υπάρχει πρόσβαση από το πρόγραμμα.
Μετατρέπω το πρόγραμμα σε διαδικασία με τον ίδιο κώδικα και παράμετρο τη done:

ΔΙΑΔΙΚΑΣΙΑ ΠΕΝΤΕ_ΑΡΙΘΜΟΙ_ΣΕ_ΣΤΟΙΒΑ(done)

και γράφω το πρόγραμμα:

ΠΡΟΓΡΑΜΜΑ ΧΡΗΣΗ_ΣΤΟΙΒΑΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΛΟΓΙΚΕΣ: flag
ΑΡΧΗ
  ΚΑΛΕΣΕ ΠΕΝΤΕ_ΑΡΙΘΜΟΙ_ΣΕ_ΣΤΟΙΒΑ(flag)
  ΑΝ  flag=ΑΛΗΘΗΣ ΤΟΤΕ                 
    ΓΡΑΨΕ 'Όλα Οk!'                     
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Υπήρξε πρόβλημα στη στοίβα!'
  ΤΕΛΟΣ_ΑΝ                                     
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

οπότε εκτελούνται τα ίδια και το πρόγραμμα δεν έχει πρόσβαση ούτε στην top ούτε στον πίνακα Stack. Μπορεί τελικά να πρέπει να διδάξουμε ασκήσεις με αυτή τη λογική;;;; Ίδωμεν!

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

Rathaniel

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

Diotima

#22
Παράθεση από: Rathaniel στις 14 Ιουλ 2015, 05:19:57 ΜΜ
H κυκλική διαχείριση ουράς, είναι εκτός τόπου και χρόνου (θα έλεγα και εκτός ύλης) για μαθητές Γ' Λυκείου.
Το πιθανότερο είναι ένας πίνακας σταθερού μεγάλου μεγέθους με ασ πούμε όριο μεγέθους ουράς 20 στοιχεία.
Τουλάχιστον σύμφωνα με την θεωρία του βιβλίου μαθητή.
Στο ότι η κυκλική διαχείριση της ουράς είναι πολύ δύσκολη για ένα μαθητή της Γ' Λυκείου συμφωνώ απόλυτα. Επίσης δύσκολη για ένα μαθητή της Γ' Λυκείου είναι όλη η επιπρόσθετη ύλη που μπήκε με τους επιπλέον αλγορίθμους ταξινόμησης, αναζήτησης, η θεωρία πολυπλοκότητας αλγορίθμων κ.τ.λ. Όχι ότι δε συμφωνώ με την αναβάθμιση της ύλης του μαθήματος. Αυτό όμως που θα έλεγα ότι είναι εκτός τόπου και χρόνου είναι το σχολικό δίωρο φέτος με το οποίο αυτή η ύλη δε βγαίνει με τίποτα  όπως επίσης εκτός τόπου και χρόνου είναι και το μονόωρο της Β'.
Όσον αφορά τις ασκήσεις που παραθέτουμε εδώ, νομίζω ότι αυτό είναι το όνομα του θέματος που συζητείται, "Ασκήσεις σε στοίβα και ουρά" και δυστυχώς αυτή τη στιγμή βαδίζουμε στα τυφλά περιμένοντας οδηγίες και επιπλέον σημειώσεις που δεν ξέρουμε  πότε θα έρθουν. Και έχουμε και την οδηγία να είναι οι ασκήσεις προγράμματα σε ΓΛΩΣΣΑ και όχι ψευδογλώσσα που έχει το βιβλίο του καθηγητή.
Θέλω να πιστεύω ότι ακολουθώ τουλάχιστον το βιβλίο του μαθητή που είναι για μένα το πιο σημαντικό που έχω στα χέρια μου (και όχι το βιβλίο του καθηγητή που έχει και πολλά λάθη).
Με βάση λοιπόν τη σελίδα 62 που είναι η σχετική βλέπω ότι γράφει:

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

Δε μου διευκρινίζει αν ο ελεύθερος χώρος που πρέπει να ελέγχεται αν υπάρχει για την εισαγωγή, είναι στο πίσω μέρος του πίνακα, αλλά αν είναι στον πίνακα.
Και ελεύθερος χώρος δεν υπάρχει στον πίνακα για εισαγωγή, μόνο όταν είναι γεμάτος από την πρώτη μέχρι και την τελευταία θέση.
Γι αυτό και ασχολήθηκα με τέτοια άσκηση και όχι για να περάσω όπως κάποιος έγραψε παραπάνω τα περί κυκλικής ουράς στους μαθητές.
Ποιος μαθητής της Γ' μπορεί να παρακολουθήσει αυτή τη στιγμή τέτοιες ασκήσεις;
Μπορείτε εσείς σας παρακαλώ να μου υποδείξετε ποια σελίδα και παράγραφος του σχολικού σας παραπέμπει στο "εκτός ύλης" για να τη δω καλύτερα;

tsak

Παράθεση από: Diotima στις 14 Ιουλ 2015, 09:40:15 ΜΜ
Με βάση λοιπόν τη σελίδα 62 που είναι η σχετική βλέπω ότι γράφει:

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

Δε μου διευκρινίζει αν ο ελεύθερος χώρος που πρέπει να ελέγχεται αν υπάρχει για την εισαγωγή, είναι στο πίσω μέρος του πίνακα, αλλά αν είναι στον πίνακα.
Και ελεύθερος χώρος δεν υπάρχει στον πίνακα για εισαγωγή, μόνο όταν είναι γεμάτος από την πρώτη μέχρι και την τελευταία θέση.
Γι αυτό και ασχολήθηκα με τέτοια άσκηση και όχι για να περάσω όπως κάποιος έγραψε παραπάνω τα περί κυκλικής ουράς στους μαθητές.
Ποιος μαθητής της Γ' μπορεί να παρακολουθήσει αυτή τη στιγμή τέτοιες ασκήσεις;
Μπορείτε εσείς σας παρακαλώ να μου υποδείξετε ποια σελίδα και παράγραφος του σχολικού σας παραπέμπει στο "εκτός ύλης" για να τη δω καλύτερα;

Τουλάχιστον σ' αυτό νομίζω είναι ξεκάθαρα τα πράγματα. Οι μαθητές διδάσκονται την στατική ουρά και για τα εισαγωγή/εξαγωγή λέει:
"Για την εισαγωγή ενός νέου στοιχείου στην ουρά αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή αποθηκεύεται το στοιχείο. Αντίστοιχα για τη λειτουργία της εξαγωγής, εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόμενο στοιχείο που πρόκειται να εξαχθεί".

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

Για εμένα ασκήσεις με ουρά/στοίβα, μόνο σε επίπεδο υποπρογραμμάτων θα μπορούσαν να τεθούν όπου οι λειτουργίες εισαγωγή-εξαγωγή-ωθηση-απώθηση θα υλοποιηθούν σε ξεχωριστά υποπρογράμματα. Θα περίμενα να δοθεί μια τέτοια κατεύθυνση. Όπως όλοι μας όμως πρέπει να πάρουμε σαφείς διευκρινίσεις.
Η κυκλική ουρά θα ήταν ένα ενδιαφέρον θέμα αλλά νομίζω ότι ξεφεύγουμε.

ether

#24
Συνημμένες δυο ασκήσεις και ενδεικτική λύση τους

tsak

Μία άσκηση και από εμένα με ουρά. Δεκτά οποιαδήποτε σχόλια.

tsak

Παράθεση από: morfeus στις 12 Ιουλ 2015, 12:04:58 ΜΜ
Γράψτε πρόγραμμα που διαβάζει χαρακτήρα προς χαρακτήρα μία πρόταση και ελέγχει αν οι παρενθέσεις που ανοίγουν είναι ίσες με αυτές που κλείνουν. Μία καλή προσέγγιση είναι να χρησιμοποιήσετε μία στοίβα. Όταν διαβαστεί μία αριστερή παρένθεση πρέπει να εισάγεται στην στοίβα και όταν διαβαστεί μία δεξιά παρένθεση πρέπει μία αριστερή να απωθείται από την στοίβα. Αν η στοίβα είναι κενή στο τέλος της πρότασης σημαίνει ότι η πρόταση είναι σωστή συντακτικά όσο αναφορά τον αριθμό των παρενθέσεων

"Κλέβω" και την παραπάνω άσκηση του συναδέλφου τροποποιώντας την μερικώς για την αντιμετώπιση και άλλων σεναρίων. Παραθέτω και τη λύση της.


ether

Συνημμένη η ιδέα των συναδέλφων στην περίπτωση που μπορεί να έχουμε τρία είδη παρενθέσεων () [] {}

tsak

Παράθεση από: ether στις 22 Ιουλ 2015, 11:44:50 ΜΜ
Συνημμένη η ιδέα των συναδέλφων στην περίπτωση που μπορεί να έχουμε τρία είδη παρενθέσεων () [] {}

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

ether

Εγώ σκέφτομαι να μην τους κάνω προγραμματιστικές ασκήσεις σε στοίβα και ουρά πριν κάνουμε τα υποπρογράμματα.