Σωστό - Λάθος, σωστό, αλλά λάθος...

Ξεκίνησε από George Eco, 05 Μαρ 2021, 02:01:14 ΠΜ

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

George Eco

Στο Internet βρήκα τη παρακάτω Σ/Λ ερώτηση:

Αριστερά του τελεστή εκχώρησης (<-), μπορεί να υπάρξει μόνο μεταβλητή.

Αντιμετωπίζεται απ' όλους ως ΣΩΣΤΟ.
Β Λυκείου ας πούμε το στηρίζει ξεκάθαρα στην ενότητα:
2.2.7.1 Εκχώρηση, Είσοδος και Έξοδος τιμών


Διορθώστε με αν κάνω λάθος, αλλά στη ΓΛΩΣΣΑ   δύναται να υπάρχει κι ονομασία συναρτήσεως, που ΔΕΝ είναι μεταβλητή, αλλά αναφορά στη συνάρτηση, μέσα στο σώμα της και μάλιστα είναι απαραίτητη η εκχώρηση αυτή.

Θέλω τη γνώμη σας πάνω στο θέμα αυτό..

bugman

Και το όνομα της συνάρτησης μέσα στην συνάρτηση με το ίδιο όνομα είναι μεταβλητή μόνο για καταχώρηση τιμής.
Σε όποια γλώσσα χρησιμοποιείται αυτός ο τρόπος για επιστροφή τιμής, δεν έχουμε άμεση έξοδο από τη συνάρτηση (στη Visual Basic γίνεται αυτό). Σε κάποιες γλώσσες η επιστροφή τιμής γίνεται με εντολή return για να γίνει με τη παράδοση της τιμής και τερματισμός της εκτέλεσης της συνάρτησης. Αυτός ο τρόπος όμως σπάει το δομημένο προγραμματισμό γιατί επιτρέπει την έξοδο από τη συνάρτηση από διάφορα σημεία που βάζουμε το return.

alkisg

Και το παρακάτω που περιέχει και κλήση συνάρτησης, αποδεκτό είναι...

Π[Α_Μ(Τ_Ρ(4))] <- 2

George Eco

Παράθεση από: alkisg στις 07 Μαρ 2021, 10:29:57 ΠΜ
Και το παρακάτω που περιέχει και κλήση συνάρτησης, αποδεκτό είναι...

Π[Α_Μ(Τ_Ρ(4))] <- 2

Ωραία! Ζωγράφισες Άλκη!
Αν κατάλαβα όμως καλά το παράδειγμά σου καταλήγει εν τέλει σε
Π[ι] <- 2
όπου ι ένας ακέραιος, που είναι ισοδύναμο με μεταβλητή.
Τελικά όμως έχω δίκιο  να ενίσταμαι για την ορθότητα του Σ/Λ;

alkisg

Εγώ ενίσταμαι για όλες τις ερωτήσεις που έχουν σαν στόχο να παίζουν με τις λέξεις αντί να εξετάζουν γνώσεις...
Ο επιστημονικός ορισμός του τι μπαίνει αριστερά από την "εκχώρηση τιμής" είναι "l-value". Αν θέλουν να εξισώσουν το "μεταβλητή" με το "l-value", ε... χμ.

Είναι άλλο πράγμα να εξηγούμε στους μαθητές (όπου φυσικά και είναι αποδεκτό να πούμε το "μεταβλητή" εκεί),
και άλλο να το εξετάζουμε σαν ορισμό αργότερα όταν έχουν ήδη μάθει πίνακες και συναρτήσεις.
Το Π[Α_Μ(Τ_Ρ(4))] ΔΕΝ είναι μεταβλητή. Το Π είναι μεταβλητή. Και χρησιμοποιούμε τη μεταβλητή τύπου πίνακα, συν μια έκφραση ως δείκτη, για να φτάσουμε σε ένα συγκεκριμένο στοιχείο, το οποίο αποτελεί το l-value της εντολής εκχώρησης τιμής.

bugman

Παράθεση....όπου ι ένας ακέραιος, που είναι ισοδύναμο με μεταβλητή.

η έκφραση "ισοδύναμο με μεταβλητή" δεν έχει νόημα. Αυτό που υπάρχει στο Π[] είναι μια αριθμητική έκφραση. Μια μεταβλητή αριθμητική επιστρέφει μια αριθμητική τιμή όταν βρίσκεται σε μια αριθμητική (δεξιά) έκφραση. Μια μεταβλητή αριθμητική ως αριστερή έκφραση χρησιμοποιείται συμβολικά για να δηλώσουμε εκχώρηση αν υπάρχει τελεστής εκχώρησης. Σε κάποιες γλώσσες μπορούν να υπάρχουν και άλλοι τελεστές όπως το ++ που αυξάνει την τιμή κατά ένα, ενώ στη ΓΛΩΣΣΑ είναι πλεονασμός αλλά υποχρεωτικός να μπει το σύμβολο εκχώρησης. Το l-value λέγεται αριστερή έκφραση και το r-value δεξιά έκφραση. Στη κλήση υποπρογραμμάτων δεν έχουμε αριστερή έκφραση, αλλά όνομα υποπρογράμματος και λίστα ορισμάτων. Όταν ένα όρισμα είναι σκέτη μεταβλητή η ΓΛΩΣΣΑ στα υποπρογράμματα την αντιγράφει στη τυπική μεταβλητή και στην έξοδο από το υποπρόγραμμα την τυπική μεταβλητή την αντιγράφει πίσω στην μεταβλητή του ορίσματος. Αν όμως βάλουμε παρενθέσεις τότε αυτό δεν είναι πια μια απλή μεταβλητή αλλά μια δεξιά έκφραση.

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

Καρκαμάνης Γεώργιος

Παράθεση από: George Eco στις 05 Μαρ 2021, 02:01:14 ΠΜ
Στο Internet βρήκα τη παρακάτω Σ/Λ ερώτηση:

Αριστερά του τελεστή εκχώρησης (<-), μπορεί να υπάρξει μόνο μεταβλητή.

Αντιμετωπίζεται απ' όλους ως ΣΩΣΤΟ.
Β Λυκείου ας πούμε το στηρίζει ξεκάθαρα στην ενότητα:
2.2.7.1 Εκχώρηση, Είσοδος και Έξοδος τιμών


Διορθώστε με αν κάνω λάθος, αλλά στη ΓΛΩΣΣΑ   δύναται να υπάρχει κι ονομασία συναρτήσεως, που ΔΕΝ είναι μεταβλητή, αλλά αναφορά στη συνάρτηση, μέσα στο σώμα της και μάλιστα είναι απαραίτητη η εκχώρηση αυτή.

Θέλω τη γνώμη σας πάνω στο θέμα αυτό..

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

Γενικεύοντας όλα τα παραπάνω αριστερά μιας εντολης εκχώρησης μπορεί να υπάρχουν:
μια μεταβλητή
ένα στοιχείο του πίνακα
ένα όνομα συνάρτησης
Ολα αυτά στην πραγματικότητα είναι μεταβλητές, άρα είναι σωστή η πρόταση "Αριστέρα μιας εντολής εκχώρησης (<-), μπορεί να υπάρξει μόνο μεταβλητή."

George Eco

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

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

Με άλλα λόγια, στη πραγματικότητα υπάρχει περιορισμός ακρίβειας δεκαδικών ψηφίων.  Στη ΓΛΩΣΣΑ μιλάμε για άπειρη ακρίβεια. Απαγορεύεται ρητά στα πλαίσια του  μαθήματος να πειράξεις το μετρητή στη ΓΙΑ. Στη πραγματικότητα γίνεται. Όπως υπάρχουν κι οι continue κι exit σε βρόχους στη πραγματικότητα.  Υπάρχουν πολλά τέτοια παραδείγματα κι εκεί νομίζω πως αυτή η ερώτηση έχει χάσει το στόχο της και πιο πολλή σύγχιση θα προξενήσει σε ένα παιδί, παρά θα εξετάσει γνώση.
Τι να απαντήσει το παιδί; Αυτό που έμαθε από τη Β Λυκείου ή και πως το στοιχείο πίνακα και η συνάρτηση που ΠΟΥΘΕΝΑ δε λέει το βιβλίο πως όλα είναι μεταβλητές... είναι μεταβλητές;Εξού κι ο χιουμοριστικός τίτλος της συζήτησης. :)

Καρκαμάνης Γεώργιος

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