ΣΤΟΙΒΑ-ΚΛΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ

Ξεκίνησε από maryangel, 12 Απρ 2010, 01:09:22 ΜΜ

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

maryangel

Καλησπέρα σε όλους!
είμαι νέα καθηγήτρια αυτού του μαθήματος, κι έχω μια απορία...
Στο βιβλίο, στη σελ. 219 αναφέρει : "...όταν μια διαδικασία ή συνάρτηση καλείται από το κύριο πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος, ..., αποθηκεύεται από το μεταφραστή...".
Όταν όμως ενεργοποιείται μία συνάρτηση, είτε με εντολή εκχώρησης τιμής, είτε με μια εντολή εξόδου και υλοποιείται , όταν μετά επιστρέφω στο κύριο πρόγραμμα, δεν επιστρέφω στην ίδια διεύθυνση απ' όπου έφυγα;;;
Σε μερικά βοηθήματα λύνουν έτσι τις ασκήσεις, αλλά στο βιβλίο είναι πολύ κατηγορηματικό!!!
Ποιο από τα δύο είναι το σωστό;

ευχαριστώ εκ των προτέρων!

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


maryangel

Ευχαριστώ, αν και ούτε από την προηγούμενη συζήτηση, δεν υπάρχει ξεκάθαρη απάντηση..

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

Άρα, αυτό τι σημαίνει; Ότι πρόκειται για ένα από τα πολλά σημεία με ασάφειες ή/και λάθη του βιβλίου που κανείς εκτός του ΥΠΔΒΜΘ/ΠΙ δεν μπορεί να πάρει την ευθύνη και να δώσει ξεκάθαρη απάντηση-διόρθωση...  8)

evry

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

P.Tsiotakis


sdancer75

#6
Παράθεση από: maryangel στις 12 Απρ 2010, 01:09:22 ΜΜ
Καλησπέρα σε όλους!
είμαι νέα καθηγήτρια αυτού του μαθήματος, κι έχω μια απορία...
Στο βιβλίο, στη σελ. 219 αναφέρει : "...όταν μια διαδικασία ή συνάρτηση καλείται από το κύριο πρόγραμμα, τότε η αμέσως επόμενη διεύθυνση του κύριου προγράμματος, ..., αποθηκεύεται από το μεταφραστή...".
Όταν όμως ενεργοποιείται μία συνάρτηση, είτε με εντολή εκχώρησης τιμής, είτε με μια εντολή εξόδου και υλοποιείται , όταν μετά επιστρέφω στο κύριο πρόγραμμα, δεν επιστρέφω στην ίδια διεύθυνση απ' όπου έφυγα;;;
Σε μερικά βοηθήματα λύνουν έτσι τις ασκήσεις, αλλά στο βιβλίο είναι πολύ κατηγορηματικό!!!
Ποιο από τα δύο είναι το σωστό;

ευχαριστώ εκ των προτέρων!

Ισχύει αυτό που λέει το βιβλίο. Όλες οι εντολές στην πράξη μεταφράζονται σε γλώσσα μηχανής. Η εντολή του τύπου

A=sqrt(6)

σε συμβολική γλώσσα θα μεταφραστεί κάπως


0000h mov dx,6 //αντιγραφή παραμέτρου στoν καταχωρητή dx
0010h call   sqrt // κλήση της συνάρτησης
0020h mov  ax,dx  // <-- αυτό θα είναι το επόμενο σημείο του instruction pointer (ip) για την
εξαγωγή των παραμέτρων επιστροφής (αποτέλεσμα της συνάρτησης) που είναι και η επόμενη διεύθυνση μετά την κλήση της συνάρτησης
.
.
.
.


//********* Αρχή της συνάρτησης sqrt ***********
sqrt proc near



  mov dx,result // βάλε το αποτέλεσμα στον καταχωρητή dx

ret //επιστροφή στη διεύθυνση 0020 hex
//*******************************************



Αρά όπως καταλαβαίνεις το βιβλίο έχει δίκαιο.


G. Papaioannou

evry

 Άλλωστε η εντολή mov ax, dx ουσιαστικά είναι η εντολή εκχώρησης, άρα το σημείο επιστροφής δεν θα είναι στην επόμενη εντολή αλλά στην ίδια!!!
αφού η κλήση της συνάρτησης και η εκχώρηση σύμφωνα με το παράδειγμα του βιβλίου είναι στην ίδια γραμμή. Άλλωστε η γλώσσα μηχανής είναι εκτός ύλης   :)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

sdancer75

Παράθεση από: evry στις 21 Απρ 2010, 11:26:00 ΠΜ
Άλλωστε η εντολή mov ax, dx ουσιαστικά είναι η εντολή εκχώρησης, άρα το σημείο επιστροφής δεν θα είναι στην επόμενη εντολή αλλά στην ίδια!!!
αφού η κλήση της συνάρτησης και η εκχώρηση σύμφωνα με το παράδειγμα του βιβλίου είναι στην ίδια γραμμή. Άλλωστε η γλώσσα μηχανής είναι εκτός ύλης   :)

Γιατί μπερδεύεις την κατάσταση ? Η εντολή κλήσης της συνάρτησης είναι στη διεύθυνση Α (0010 δεκαεξαδικό) όποια και αν είναι αυτή και η επόμενη εντολή όποια και αν είναι αυτή, βρίσκεται στη διεύθυνση Α+1 (0020 δεκαεξαδικό). Είναι διαφορετικές διευθύνσεις μνήμης ή όχι ? Δεν σημαίνει ότι εγώ θα διαβάσω υποχρεωτικά το αποτέλεσμα στην επόμενη εντολή  όπως λανθασμένα λές αλλά και αυτό να γίνει όπως και να το κάνεις είναι η αμέσως επόμενη εντολή.


"Άλλωστε η εντολή mov ax, dx ουσιαστικά είναι η εντολή εκχώρησης, άρα το σημείο επιστροφής δεν θα είναι στην επόμενη εντολή αλλά στην ίδια!!!"


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

Τώρα για το αν η συμβολική γλώσσα (και όχι η γλώσσα μηχανής) που έδειξα σαν παράδειγμα είναι εκτός ύλης και βέβαια είναι, το θέμα δεν είναι αυτό, αλλά αν το βιβλίο κάνει λάθος στο συγκεκριμένο σημείο. Και σου απέδειξα ότι δεν κάνει λάθος εκτός αν δεν γνωρίζεις ότι το οποιοδήποτε πρόγραμμα σε οποιαδήποτε γλώσσα προγραμματισμού μεταφράζεται τελικά σε γλώσσα μηχανής. Άρα η επεξήγηση που έδωσα ισχύει 100%.

G. Papaioannou

evry

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

Θα ήθελα επίσης να σε ρωτήσω γιατί φαίνεσαι πολύ απόλυτος στις απόψεις σου, πόσα χρόνια διδάσκεις το μάθημα;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

sdancer75

#10
Παράθεση από: evry στις 21 Απρ 2010, 08:34:57 ΜΜ
  Η συζήτηση που κάνουμε εδώ είναι στα πλαίσια του μαθήματος της Γ Λυκείου, οπότε ότι λέμε είναι στο πνεύμα αυτό. Η ιδέα είναι πως επειδή το φόρουμ το παρακολουθούν και μαθητές καλό θα ήταν ότι να λέμε να είναι τεκμηριωμένο γιατί τα παιδιά δίνουν εξετάσεις και ψάχνουν κάποια υπεύθυνη απάντηση στις απορίες τους, δεδομένου ότι το μάθημα έχει πάρα πολλές ασάφειες.
   Αν λοιπόν διαβάσεις το βιβλίο στη σχετική παράγραφο (ελπίζω να το έχεις κάνει) θα δεις ότι δεν υπάρχει πουθενά συμβολική γλώσσα αλλά μόνο διευθύνσεις στις εντολές της ΓΛΩΣΣΑΣ. Καλώς ή κακώς αυτή είναι η κατάσταση και θα πρέπει να δοθεί μια υπεύθυνη απάντηση για αυτό το θέμα. Πιστεύω πως αν διαβάσεις προσεκτικά αυτά που έγραψες θα δεις ότι δεν έχουν κανένα απολύτως νόημα μέσα στο πλαίσιο του σχολικού βιβλίου.

Θα ήθελα επίσης να σε ρωτήσω γιατί φαίνεσαι πολύ απόλυτος στις απόψεις σου, πόσα χρόνια διδάσκεις το μάθημα;

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

Το ότι δεν κατάλαβες εσύ ο ίδιος το μάθημα και τη γενικότερη αρχιτεκτονική Η/Υ είναι ένα θέμα στο οποίο έχω καταγράψει την άποψη μου  στο ίδιο forum  με θέμα «Εκπαίδευση και καθηγητές πληροφορική» και έχει σχέση με την κατάρτιση των πτυχιούχων πληροφορικής. Δες το και πες μου αν τελικά έχω δίκαιο.

Το λέω αυτό, όχι για να σε υποτιμήσω αλλά γιατί πρέπει να εξηγήσω ακόμη και τα αυτονόητα σε κάποιον που «κρίνει» το μέλλον των αυριανών επιστημόνων, δηλαδή των παιδιών μας.
Στο κείμενο το οποίο πληκτρολογείς ή τέλος πάντων γράφεις σε μια κόλλα χαρτί και αποτελεί τον πηγαίο κώδικα της ψευδογλώσσας που διδάσκουμε στο μάθημα της Γ Λυκείου, δεν υπάρχουν διευθύνσεις μνήμης αλλά προαιρετικά μόνον ο αύξοντες αριθμοί των γραμμών ? Οι διευθύνσεις προκύπτουν μετά τη μεταγλώττιση του κειμένου και αυτό σημαίνει μετάφραση του κειμένου σε συγκεκριμένες οδηγίες προς τον επεξεργαστή δηλαδή γλώσσα μηχανής .  Μπορείς να το καταλάβεις αυτό ? Αν εσύ μπορείς να μου δείξεις στον κώδικα που γράφεις στον πίνακα κάποια διεύθυνση μνήμης να μου το πεις και μένα για να δώσω παραίτηση από καθηγητής.

Το πόσα χρόνια διδάσκω δεν παίζει κανέναν απολύτως ρόλο, αλλά αν δεν μπορείς να δεχθείς μια καλοπροαίρετη και πάνω απ' όλα τεκμηριωμένη απάντηση, τότε πως θα αντιδράσεις αν σε διορθώσει κάποιος μαθητής σου ?

Οι απόψεις μου δεν είναι απόλυτες με την έννοια που το αναφέρεις. Μετά από 16 χρόνια στην παραγωγή σαν προγραμματιστής, μετά από ανάγνωση εκατοντάδων βιβλίων (προσωπική βιβλιοθήκη 12.000 βιβλίων ηλεκτρονικών και έντυπων) και μετά από επένδυση χιλιάδων ευρώ σε εξοπλισμό, μπορείς να πεις ότι ο λόγος μου έχει μια βαρύτητα μεγαλύτερη από κάποιους άλλους. Δεν υπερβάλλω σε αυτά που ανέφερα, υπάρχουν και τέτοιοι άνθρωποι στην εκπαίδευση και γενικότερα στην Ελλάδα.
G. Papaioannou

sdancer75

G. Papaioannou

Λάμπρος Μπουκουβάλας

Ακόμη κι αν δεχθώ ότι ο Παπαϊωάννου είναι 100% σωστός στις απόψεις του, οφείλω να ομολογήσω ότι αυτός δεν είναι τρόπος συμπεριφοράς προς συνάδελφο και γενικά προς συνάνθρωπο.

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

Είμαι σίγουρος ότι γράφτηκες για να προσφέρεις θετικά με τις απόψεις σου. Τελικά Εσύ (είδες; έγραψα το Εσύ με Ε κεφαλαίο) επιδιώκεις με όσα γράφεις να αυτοπροβληθείς και όχι να χτίσεις... Είσαι σε περιβάλλον εικονικής πραγματικότητας!
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

jp

Sir G. Papaioannou, οσα περισσότερα κείμενα γράφετε τόσο φαίνεται πως ίσως είστε (μπορεί και να είστε) καταρτισμένος σχετικά με καλώδια, κώδικες κ.λ.π. αλλά από ΕΚΠΑΙΔΕΥΣΗ-ΔΙΔΑΣΚΑΛΙΑ έχετε μαύρα μεσάνυχτα.
Ευτυχώς κατ' εμέ που δεν είστε εκπαιδευτικός. Σας είπε κανείς πως η αγένεια είναι προσόν;

"Η ευγένεια είναι παράξενο νόμισμα. Όσο περισσότερο ξοδεύεις, τόσο πλουσιότερος γίνεσαι". Παλιά Γαλλική παροιμία.
To be aware is more important than what you wear!

sdancer75

Παράθεση από: jp στις 22 Απρ 2010, 10:49:48 ΠΜ
Sir G. Papaioannou, οσα περισσότερα κείμενα γράφετε τόσο φαίνεται πως ίσως είστε (μπορεί και να είστε) καταρτισμένος σχετικά με καλώδια, κώδικες κ.λ.π. αλλά από ΕΚΠΑΙΔΕΥΣΗ-ΔΙΔΑΣΚΑΛΙΑ έχετε μαύρα μεσάνυχτα.
Ευτυχώς κατ' εμέ που δεν είστε εκπαιδευτικός. Σας είπε κανείς πως η αγένεια είναι προσόν;

"Η ευγένεια είναι παράξενο νόμισμα. Όσο περισσότερο ξοδεύεις, τόσο πλουσιότερος γίνεσαι". Παλιά Γαλλική παροιμία.

Είμαι εκπαιδευτικός !
G. Papaioannou