το αποτέλεσμα μιας πράξης μπορεί να εκχωρηθεί σε μια σταθερά;

Ξεκίνησε από sarg, 11 Οκτ 2010, 03:29:38 ΜΜ

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

sarg

στην ιστοσελίδα του συναδέφου κ Τσιωτάκη αναφέρεται σαν Λάθος η πρόταση:
Το αποτέλεσμα μιας πράξης μπορεί να εκχωρηθεί σε μια σταθερά.
Αναρωτιέμαι αν στην περίπτωση ενός προγράμματος (που έχουν καλύτερη "υπόσταση" οι μεταβλητές)
είναι σωστή η παραπάνω πρόταση, με την έννοια ότι δίνω - με τη μορφή πράξης - μία αρχική τιμή στην σταθερά μου
και στη συνέχεια προφανώς δεν μεταβάλλεται.
περιμένω και τις δικές σας απόψεις.


ntzios kostas

Δεν ξέρω αν κατάλαβα καλά. Θεωρείς ότι αν στο σώμα των εντολών υπάρχει για παράδειγμα η εντολή  χ<-5 και το χ δεν μεταβληθεί τότε το χ πρέπει να το θεωρήσουμε σταθερά; 
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας...

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

Εννοείς π.χ.  αν θα γινόταν:  (?)

ΣΤΑΘΕΡΕΣ
   κ=3*30

Μπορεί σε κάποιες γλώσσες, αλλά στη ΓΛΩΣΣΑ όχι. Άλλωστε το '=' δεν έχει την έννοια της εκχώρησης!

(Φοβερό αυτό με τη ΓΛΩΣΣΑ! Ακόμα και ο Θεός μόνο με ένα κεφαλαίο γράμμα γράφεται!)

alkisg

@sarg: εφόσον μπορείς να δώσεις τιμή κατά την εκτέλεση, δεν θεωρείται σταθερά, ακόμα κι αν δεν μεταβληθεί στη συνέχεια. Θεωρείται μεταβλητή.

@Νίκος: γιατί όχι; π.χ. ο διερμηνευτής το υποστηρίζει, εφόσον το 3*30 μπορεί να αποτιμηθεί πριν την εκτέλεση του προγράμματος: https://alkisg.mysch.gr/ΓΛΩΣΣΑ/Μέρη_προγράμματος/.
Δεν θυμάμαι αν είχα βρει σχετικό παράδειγμα στο βιβλίο, αλλά γιατί να μην επιτρέπεται;

sarg

Παράθεση από: ntzios kostas στις 11 Οκτ 2010, 04:15:45 ΜΜ
Δεν ξέρω αν κατάλαβα καλά. Θεωρείς ότι αν στο σώμα των εντολών υπάρχει για παράδειγμα η εντολή  χ<-5 και το χ δεν μεταβληθεί τότε το χ πρέπει να το θεωρήσουμε σταθερά; 
όχι

εννοώ αυτό ακριβώς που είπε ο alkisg.
Δηλ. δηλώνωντας μια σταθερά στη ΓΛΩΣΣΑ μπορείς να της δώσεις τιμή μέσω μιας πράξης.
Απλά κατάλαβα ότι είναι λάθος η πρόταση επειδή αναφέρει το εκχωρεί το οποίο δεν είναι το ίδιο με το = (όπως αναφέρει ο Νίκος)


ευχαριστώ για τις απαντήσεις

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

Παράθεση από: alkisg στις 11 Οκτ 2010, 06:45:47 ΜΜ
@Νίκος: γιατί όχι; π.χ. ο διερμηνευτής το υποστηρίζει, εφόσον το 3*30 μπορεί να αποτιμηθεί πριν την εκτέλεση του προγράμματος: https://alkisg.mysch.gr/ΓΛΩΣΣΑ/Μέρη_προγράμματος/.
Δεν θυμάμαι αν είχα βρει σχετικό παράδειγμα στο βιβλίο, αλλά γιατί να μην επιτρέπεται;

Αν το δούμε αυστηρά, το βιβλίο στη σελ 149 εκεί που μιλάει για τις συμβολικές σταθερές, αναφέρει ότι: "Η ΓΛΩΣΣΑ επιτρέπει την αντιστοίχιση σταθερών τιμών με ονόματα" και στην σελ. 150 ότι: "Αποδίδει ονόματα σε σταθερές τιμές.". Δεν μιλάει για εκφράσεις...

Από την άλλη δεν επιμένω. Είναι θέμα ορισμού της γλώσσας. Να σε ρωτήσω: Την απόδοση της τιμής σε ποια φάση την έχεις υλοποιήσει; Στη φάση της μεταγλώττισης ή στην έναρξη της εκτέλεσης;

Πάντως, είτε έτσι είτε αλλιώς, όπως είπα και παραπάνω το βιβλίο αυτό δεν το αναφέρει ως "εκχώρηση" αλλά ως "αντιστοίχιση"...

Για την εντολή εκχώρησης, στη σελ. 154, αναφέρει: "Η εντολή εκχώρησης χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά τη διάρκεια εκτέλεσης του προγράμματος." οπότε για την αρχική ερώτηση του sarg νομίζω δεν τίθεται θέμα

sstergou

Ναι αλλά άλλο σταθερή τιμή άλλο κυριολεκτική σταθερά.

Νομίζω ότι οι εκφράσεις τέτοιου τύπου μπορούν να θεωρηθούν ως σταθερές τιμές.

alkisg

Παράθεση από: Νίκος Αδαμόπουλος στις 11 Οκτ 2010, 11:32:03 ΜΜ
Να σε ρωτήσω: Την απόδοση της τιμής σε ποια φάση την έχεις υλοποιήσει; Στη φάση της μεταγλώττισης ή στην έναρξη της εκτέλεσης;
Της μεταγλώττισης.

evry

Αν πάρουμε τοις μετρητοίς αυτά που λέει το βιβλίο θα έπρεπε να απαγορεύουμε και εντολές της μορφής   
Γράψε 3*6  ή Γράψε 4*χ
αφού στην σχετική παράγραφο δεν αναφέρεται σε εκφράσεις. Το βιβλίο δεν είναι ευαγγέλιο σε πολλά σημεία έχει λάθη (π.χ. εκεί που ορίζει την Java σαν γλώσσα κατανεμημένου προγραμματισμού και όχι σαν γλώσσα γενικού σκοπού)

Η έκφραση 4*40+9^4 είναι σταθερά η μεταβλητή? προφανώς είναι σταθερά άρα μπορεί να εκχωρηθεί σε σταθερά. Τόσο απλά.
Αν δούμε τη σταθερά σαν το #define της C τότε σκεφτείτε ότι όπου υπάρχει το όνομα της σταθέρας απλά γίνεται αντικατάσταση με αυτή την σταθερή έκφραση. Το αν αυτή υπολογίζεται πριν ή μετά είναι και θέμα βελτιστοποίησης.
  Σε οποιαδήποτε περίπτωση δεν νομίζω ότι υπάρχει σοβαρό επιχείρημα που να αποτρέπει κάποιον από το να χρησιμοποίησει σταθερές εκφράσεις σε σταθερά μόνο και μόνο επειδή δεν έχει το βιβλίο αντίστοιχο παράδειγμα.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

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

Όπως είπα ήδη και παραπάνω δεν επιμένω! Από την άλλη δεν βρίσκω και κάποιο λόγο να μας απασχολεί κάτι τέτοιο στο επίπεδο του μαθήματος της ΑΕΠΠ... Και εν πάση περιπτώσει δεν θα έφτανα στο να το δείξω στους μαθητές...

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

κι εγώ πιστεύω ότι αποτελεί ένα θέμα "φλου", που μάλλον δε πρέπει να μας απασχολήσει παρά μόνο για να διευρύνουμε τις προσωπικές μας απόψεις.
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

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