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

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: ΨΥΛΛΟΣ ΣΩΤΗΡΗΣ στις 30 Μαρ 2009, 12:45:39 ΜΜ

Τίτλος: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: ΨΥΛΛΟΣ ΣΩΤΗΡΗΣ στις 30 Μαρ 2009, 12:45:39 ΜΜ
Όταν καλούμε συνάρτηση στη στοίβα χρόνου εκτέλεσης αποθηκεύετε η επόμενη διεύθυνση?
Π.χ

   κ.π
12  κ <--φ(χ) + 3
13

Θα αποθηκευτεί το 12 ή το 13
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: evry στις 30 Μαρ 2009, 01:57:33 ΜΜ
Λογικά όχι γιατί η κλήση της συνάρτησης αποτελεί ουσιαστικά τον υπολογισμό μιας παράστασης. Στη συνέχεια πρέπει να επιστρέψει στο ίδιο σημείο την τιμή που επιστρέφει η συνάρτηση και να εκτελεστεί η εντολή που περιέχει την κλήση της συνάρτησης
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: ΨΥΛΛΟΣ ΣΩΤΗΡΗΣ στις 30 Μαρ 2009, 05:03:00 ΜΜ
Συμφωνώ απόλυτα
Άρα η θεωρία θα έπρεπε να έλεγε αποθηκεύεται η επόμενη διεύθυνση όταν καλούμε διαδικασία ενώ σε συνάρτηση η ίδια.
Πολύ το φοβάμαι κάτι τέτοιο αν μπει να προκαλέσει σύγχυση.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: ntzios kostas στις 30 Μαρ 2009, 05:57:40 ΜΜ
Σε αυτό το θέμα μόνο να κοιτάξεις τον τίτλο της συγκεκτιμένης παραγράφου θα δεις ότι υπάρχει πρόβλημα. Η χρήση στοίβας στην κλήση διαδικασιών
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: P.Tsiotakis στις 30 Μαρ 2009, 10:02:42 ΜΜ
Συμφωνώ με τους προλαλήσαντες.

Πάντως είναι απλή λογική αυτό που λέει ο Ευρυπίδης. Μπορεί να μπει μόνο με διαδικασίες!!
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: alkisg στις 30 Μαρ 2009, 11:35:49 ΜΜ
Παράθεση από: psilossotiris στις 30 Μαρ 2009, 12:45:39 ΜΜ
Όταν καλούμε συνάρτηση στη στοίβα χρόνου εκτέλεσης αποθηκεύετε η επόμενη διεύθυνση?

Η στοίβα χρόνου εκτέλεσης δεν έχει καμία σχέση με γραμμές ή high level εντολές, άρα δεν αποθηκεύεται ούτε το 12 ούτε το 13.
Αποθηκεύεται η διεύθυνση μνήμης RAM της επόμενης (ή της τρέχουσας) εντολής μηχανής - αυτή συνήθως δείχνεται από κάποιον καταχωρητή (σε αρχιτεκτονική x86 ονομάζεται IP, Instruction Pointer).
Το ίδιο ισχύει και για διαδικασίες και για συναρτήσεις, αφού και οι δύο υλοποιούνται με εντολή call.
Συνήθως αποθηκεύεται η επόμενη θέση μνήμης (επειδή η τρέχουσα μπορεί να έχει μεταβλητό μέγεθος οπότε η ίδια ξέρει καλύτερα πόσο να αυξήσει τον IP) αλλά αυτό δεν είναι και απόλυτο.

Δεν κοίταξα πρόσφατα το σχετικό σημείο θεωρίας για να δω πώς (και αν) αντιστοιχούν στο σχολικό εγχειρίδιο τα παραπάνω. Πάντως αν γράφει για γραμμές κώδικα είναι λάθος.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: Neo στις 30 Μαρ 2009, 11:53:34 ΜΜ
 8) ::)
Παράθεση από: alkisg στις 30 Μαρ 2009, 11:35:49 ΜΜ
Παράθεση από: psilossotiris στις 30 Μαρ 2009, 12:45:39 ΜΜ
Όταν καλούμε συνάρτηση στη στοίβα χρόνου εκτέλεσης αποθηκεύετε η επόμενη διεύθυνση?

Η στοίβα χρόνου εκτέλεσης δεν έχει καμία σχέση με γραμμές ή high level εντολές, άρα δεν αποθηκεύεται ούτε το 12 ούτε το 13.
Αποθηκεύεται η διεύθυνση μνήμης RAM της επόμενης (ή της τρέχουσας) εντολής μηχανής - αυτή συνήθως δείχνεται από κάποιον καταχωρητή (σε αρχιτεκτονική x86 ονομάζεται IP, Instruction Pointer).
Το ίδιο ισχύει και για διαδικασίες και για συναρτήσεις, αφού και οι δύο υλοποιούνται με εντολή call.
Συνήθως αποθηκεύεται η επόμενη θέση μνήμης (επειδή η τρέχουσα μπορεί να έχει μεταβλητό μέγεθος οπότε η ίδια ξέρει καλύτερα πόσο να αυξήσει τον IP) αλλά αυτό δεν είναι και απόλυτο.

Δεν κοίταξα πρόσφατα το σχετικό σημείο θεωρίας για να δω πώς (και αν) αντιστοιχούν στο σχολικό εγχειρίδιο τα παραπάνω. Πάντως αν γράφει για γραμμές κώδικα είναι λάθος.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: evry στις 31 Μαρ 2009, 12:42:22 ΠΜ
Στο βιβλίο μιλάει ξεκάθαρα για την "αμέσως επόμενη διεύθυνση του κυρίου προγράμματος"

Το κορυφαίο όμως είναι ότι ενώ ο τίτλος λέει "Η χρήση στοίβας στην κλήση διαδικασιών" μέσα στο πλαίσιο λέει ξεκάθαρα

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

Ποιά κοινή λογική που έλεγα εγώ και ποιά γλώσσα μηχανής που λέει ο Άλκης? αφού το λέει το βιβλίο τελεία και παύλα.

Αυτό που μου αρέσει πάντως με το βιβλίο δεν είναι μόνο ότι έχει αρκετά πράγματα τα οποία δεν ισχύουν στον πραγματικό κόσμο της πληροφορικής αλλά ότι πηγαίνει και κόντρα στην κοινή λογική.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: alkisg στις 31 Μαρ 2009, 07:07:41 ΠΜ
Κώδικας [Επιλογή]

12: α <- ΗΜ(χ) * ΣΥΝ(χ)
13: ...


Η γραμμή 12 αντιστοιχεί σε π.χ. 20 εντολές μηχανής.
Περιέχει δύο κλήσεις συναρτήσεων.
Δεν είναι δυνατόν να αποθηκεύεται η ίδια διεύθυνση στη στοίβα (το 12 ή το 13 στο παραπάνω παράδειγμα) και για τις δύο αυτές κλήσεις.
Θα έπρεπε τουλάχιστον να αποθηκεύεται "διεύθυνση επιστροφής: μετά την πρώτη κλήση συνάρτησης της 12 γραμμής"
ή "διεύθυνση επιστροφής: μετά την δεύτερη κλήση συνάρτησης της 12 γραμμής".

Γι' αυτό λέω ότι δεν υπάρχει αντιστοιχία στοίβας κλήσεων με high level εντολές - αφού μια high level εντολή μπορεί να περιέχει πολλές κλήσεις.
Σύμφωνοι, να στηρίξουμε το διδακτικό πακέτο, αλλά με κάποιο όριο, να μη φτάνουμε στο σημείο να λέμε παράλογες ή ανυπόστατες θεωρίες...

Απλά εννούνται τα παρακάτω έντονα γράμματα:
"Όταν μια διαδικασία ή συνάρτηση καλείται από το κύριο πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση της μνήμης RAM, που αντιστοιχεί στην επόμενη εντολή μηχανής του κυρίου προγράμματος που ονομάζεται διεύθυνση επιστροφής..."
:P :P :P :D :D :D

Καλημέρα σε όλους.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: klitos στις 08 Μαΐου 2009, 09:31:46 ΠΜ
πιστευω οτι επιστρεφει στην επομενη εντολη για δυο λογους.
1ος λογος: αν επεστρεφε στην ιδια εντολη θα γινοταν παλι κληση της συναρτησης
2ος λογος: Η στοιβα χρονισμου μας λεει ποια ειναι η επομενη εντολη που θα εκτελεστει, θεωρωντας οτι οταν εκτελειται ενα υποπρογραμμα εκτελειται η εντολη του κυριου προγραμματος απο την οποια εγινε η κληση.
Αρα συμπεραινω οτι οταν τελειωνει ενα υποπρογραμμα επιστρεφουν οι τιμες στις παραμετρους και "συνεχιζεται" η εντολη απο την οια εγινε η κληση.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: evry στις 08 Μαΐου 2009, 10:25:31 ΠΜ
Αφού συνεχίζεται η ίδια εντολή μετά την κλήση, δηλαδή εκτελείται η εντολή εκχώρησης, τότε δεν πηγαίνει στην επομενη εντολή!!

Παράθεση από: klitos στις 08 Μαΐου 2009, 09:31:46 ΠΜ
Αρα συμπεραινω οτι οταν τελειωνει ενα υποπρογραμμα επιστρεφουν οι τιμες στις παραμετρους και "συνεχιζεται" η εντολη απο την οια εγινε η κληση.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: klitos στις 08 Μαΐου 2009, 10:59:59 ΠΜ
ακριβως ετσι ...γιαυτο λεω οτι η επομενη εντολη που θα εκτελεστει ειναι αυτη που ακολουθεί
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: evry στις 08 Μαΐου 2009, 12:44:11 ΜΜ
δεν κατάλαβες τι εννοώ ή δεν το διατύπωσα καλά.
Είπα ότι με το δικό σου σκεπτικό δεν θα πάει στην επόμενη εντολή αλλά θα εκτελέσει εκείνη την εντολή που εκχωρεί την τιμή της συνάρτησης που είναι στο δεξιό μέλος της εντολής εκχώρησης. Αυτή μπορεί να είναι μια εντολή μηχανής, π.χ. STORE A B ή κάτι τέτοιο, άρα σίγουρα δεν πάει στην επόμενη εντολή του κυρίου προγράμματος
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: klitos στις 08 Μαΐου 2009, 11:30:05 ΜΜ
ΕΝΤ1
υποπρογραμμα (συναρτηση ή διαδικασια)
ΕΝΤ2

Ναι ετσι...δηλαδη θα παει στην ΕΝΤ2 οταν θα τελειώσει με τις αναθεσεις τιμών (τιμες παραμετρων κλπ), πραξεις κλπ ...δηλαδη συνεχιζει την εντολη απο την οποια εφυγε ....αλλα βεβαια η ΕΠΟΜΕΝΗ εντολή θα ειναι η ΕΝΤ2 (θα επιστρεψει στην ΕΝΤ2 αφου τελειώσει με την τρεχουσα εκκρεμοτητα)
Δινω αυτη την ερμηνεια για να καλυψω το κενο στην απορια ʽαφου εκτελειται η ΕΝΤ2 μετα το τελος του υποπρογραμματος τοτε πως και ποτε επιστρεφουν οι τιμες των παραμετρων; ʽ 
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: lykos στις 08 Μαΐου 2009, 11:45:34 ΜΜ
Κι' όλη η συζήτηση, διότι έχουμε ένα προβληματικό βιβλίο...
Ενα - στην τύχη - απ' το εμπόριο να παίρναν (Pascal, Basic, C, ...), θα είχαμε το χρόνο να συζητάμε για πράγματα ουσίας! (αντί του "τι θέλει να πεί ο ποιητής". Ισως κι' αυτός να μην ξέρει ακριβώς...)

ΥΓ. Ο "ποιητής" δεν φταίει, κι' ούτε - φυσικά - τον γνωρίζω. Ούτε την διαδικασία επιλογής των Σχολ. Βιβλίων γνωρίζω. Απ' ότι φαίνεται όμως, αυτή η επιλογή δημιουργεί προβλήματα.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: P.Tsiotakis στις 09 Μαΐου 2009, 07:57:40 ΠΜ
Στη διαδικασία αποθηκεύεται η επόμενη εντολή (σελίδα 219)

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

Πάντως για τον απλό παραπάνω λόγο (οτι το βιβλίο δεν έχει συνάρτηση) θα βάλουν διαδικασία ΟΤΑΝ και ΑΝ βάλουν
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: terzantonis στις 12 Απρ 2013, 05:26:53 ΜΜ
Προσωπικά πιστεύω ότι πολύ δύσκολα θα πέσει θέμα με το συγκεκριμένο.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: Λευτέρης Δουκέρης στις 13 Απρ 2013, 05:35:12 ΜΜ
ΚΑΛΗΣΠΕΡΑ.

Ξεκάθαρα το βιβλίο λέει «
Όταν μια διαδικασία η συνάρτηση καλείται από το κυρίως πρόγραμμα , τότε η αμέσως επόμενη διεύθυνση του κυρίως προγράμματος , που ονομάζεται Διεύθυνση Επιστροφής , αποθηκεύεται από τον μεταφραστή σε μία στοίβα που ονομάζεται Στοίβα Χρόνου Εκτέλεσης ».
Αρα παρόλο που κατανοώ πλήρως τις απόψεις αυτών που διαφωνούν με το παραπάνω μιας και τεκμηριωμένα αναφέρουν τις απόψεις τους ... πιστεύω πως πρέπει να «υποκύψουμε στην ... Γραφή ... του βιβλίου.. »


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


Για  θέματα πάντως που θεωρώ ότι επιδέχονται διαφορετικής ερμηνείας (π.χ κριτήριο εισόδου που συζητούσαμε την περασμένη βδομάδα κτλ κτλ ) , είχα στείλει πριν κάποια χρόνια στο «ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ » - τότε που λεγόταν έτσι - mail με ερωτήματα πάνω στην ΑΕΠΠ. Νομίζω ότι επειδή μέχρι το 2017 που όπως λένε  μείνει το μάθημα με την σημερινή του μορφή , προτείνω να μαζέψουμε ερωτήματα και να τα αποστείλουμε σαν ομάδα πληροφορικών στο ΙΝΣΤΙΤΟΥΤΟΥ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ (Ι.Ε.Π.) (μετεξέλιξη του ΠΑΙΔΑΓΩΓΙΚΟΥ ΙΝΣΤΙΤΟΥΤΟΥ  , για να πάρουμε μια επίσημη απάντηση.
Τίτλος: Απ: Συνάρτηση και στοίβα χρόνου εκτέλεσης .
Αποστολή από: gthal στις 13 Απρ 2013, 06:32:10 ΜΜ
"αμέσως επόμενη διεύθυνση του κυρίως προγράμματος"  δεν είναι βέβαια απαραίτητο να σημαίνει "αμέσως επόμενη γραμμή του κυρίως προγράμματος" και προσωπικά θέλω να πιστεύω ότι μπορεί να είναι και στο μέσο μιας έκφρασης, της οποίας ο υπολογισμός διακόπηκε για να εκτελεστεί η συνάρτηση.
Και κάτι που έχει ξανασυζητηθεί: δεν αποθηκεύεται από το μεταφραστή φυσικά (ποιος είναι αλήθεια ο μεταφραστής αφού το βιβλίο μιλάει για μεταγλωττιστή και/ή διερμηνευτή και αυτά τα δύο τα ονομάζει "μεταφραστικά προγράμματα". Τέτοιον όρο δεν έχει ξαναχρησιμοποιήσει). Αν εννοεί "από το μεταφραστικό πρόγραμμα", τότε μπορεί να το δεχθούμε μόνο για την περίπτωση του διερμηνευτή, αφού αυτά συμβαίνουν κατά την εκτέλεση του προγράμματος και όχι κατά τη μεταγλώττισή του. Ο μεταγλωττιστής σίγουρα δεν κάνει αυτό το πράγμα!