προτεραιότητα τελεστών

Ξεκίνησε από petran, 23 Οκτ 2009, 12:16:13 ΜΜ

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

P.Tsiotakis

To "απο αριστερά προς τα δεξιά" είναι ο καθολικός τρόπος υλοποίησης πράξεων μεταξύ ΙΔΙΑΣ ιεραρχίας τελεστών.

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

Τώρα, αν βρούμε κάποια αναφορά στο βιβλίο που να το αναιρεί αυτό κανένα πρόβλημα...

evry


Η λογική με την οποία σε κάποιες περιπτώσεις το ΚΑΙ προηγείται του Η βασίζεται στην αντιστοιχία που υπάρχει μεταξύ των πράξεων σύζευξη-πολλαπλασιασμός και διάζευξη-πρόσθεση. Αν κάποιος θέσει αντί για true το 1 και αντί για false το 0 θα δει αυτή την αντιστοιχία. Για παράδειγμα ένα γινόμενο αριθμών είναι διάφορο του μηδενός αν και μονον αν όλοι είναι διάφοροι του μηδενός. Ομοίως μια σύζευξη πολλών λογικών όρων είναι αληθής αν και μόνον αν είναι όλοι αληθείς (διάφοροι του ψευδούς.)
   Προφανώς δεν μιλάω για κάποια αντιστοιχία με αυστηρά μαθηματικό τρόπο, αλλά δίνω διαισθητικά ένα παράδειγμα για να φανεί η σχέση μεταξύ αυτών των πράξεων.
   Φυσικά στο δικό μας το μάθημα τα ΚΑΙ, Η έχουν την ίδια προτεραιότητα, λέμε και στους μαθητές να χρησιμοποιούν παρενθέσεις και έχουμε όλοι μας το κεφάλι μας ήσυχο :)
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

karaberis

Με αφορμή το ερώτημά μου, και μετά τις αντίθετες απαντήσεις από αξιόλογους συναδέλφους

ΠαράθεσηΗ λογική με την οποία σε κάποιες περιπτώσεις το ΚΑΙ προηγείται του Η βασίζεται στην αντιστοιχία που υπάρχει μεταξύ των πράξεων σύζευξη-πολλαπλασιασμός και διάζευξη-πρόσθεση. Αν κάποιος θέσει αντί για true το 1 και αντί για false το 0 θα δει αυτή την αντιστοιχία. Για παράδειγμα ένα γινόμενο αριθμών είναι διάφορο του μηδενός αν και μονον αν όλοι είναι διάφοροι του μηδενός. Ομοίως μια σύζευξη πολλών λογικών όρων είναι αληθής αν και μόνον αν είναι όλοι αληθείς (διάφοροι του ψευδούς.)
   Προφανώς δεν μιλάω για κάποια αντιστοιχία με αυστηρά μαθηματικό τρόπο, αλλά δίνω διαισθητικά ένα παράδειγμα για να φανεί η σχέση μεταξύ αυτών των πράξεων.
   Φυσικά στο δικό μας το μάθημα τα ΚΑΙ, Η έχουν την ίδια προτεραιότητα, λέμε και στους μαθητές να χρησιμοποιούν παρενθέσεις και έχουμε όλοι μας το κεφάλι μας ήσυχο

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

Συνεχίζοντας τον προβληματισμό μου (από τις απαντήσεις σας ήδη σχημάτισα την εικόνα οτι δεν συμφωνείτε καθαρά μόνο για τυπικούς λόγους) έκανα μια σύντομη αναζήτηση στο διαδίκτυο για τους ορισμούς μερικών από τις πιο "διαδεδομένες" γλώσσες (pascal και Delphi, quick και Visual Basic, Jave, C++, Python, SQL), και η σειρά είναι:

ΝΟΤ, AND, OR (και πάλι διορθώστε με αν κάνω κάποιο λάθος).

Παρόλο που (ξαναλέω) δεν μπόρεσα να βρω κάτι στα σχολικά βιβλία που να το υπονοεί ή να το διατυπώνει με σαφήνεια, ρωτάω γιατί πρέπει να λέμε στα παιδιά κάτι που ΔΕΝ ισχύει σε όλες αυτές τις γλώσσες, επειδή το παρέλειψε το "θαυματουργό" σχολικό βιβλίο;

Τέλος, στο παράρτημα της Pascal που υπάρχει στο τετράδιο του μαθητή (Σελ. 182), αναφέρονται (για την Pascal) οι λογικοί τελεστές με τη σειρά που ανέφερα παραπάνω.

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

ΠαράθεσηΚαι τελευταίο επιχείρημα: https://alkisg.mysch.gr/steki/index.php?topic=912.msg8645#msg8645

Αγνοήστε το μήνυμα αν δεν έχετε τίποτα καινούργιο να προσθέσετε.

Φιλικά

P.Tsiotakis

Ήδη ο Νίκος και ο Ευριπίδης είχαν γράψει για τις πραγματικές γλώσσες προγραμματισμού...

Μέχρι πριν 2 χρόνια συζητάγαμε τα ίδια για τα div mod! Ώσπου ήρθε διευκρίνηση από το ΠΙ πως στα πλαίσια του σχολικού μας μαθήματος δε μας αφορούν πραγματικά προγραμματιστικά περιβάλλοντα αλλά η λογική της αλγοριθμικής...

Σε αυτά τα πλαίσια θεωρώ τους τελεστές και, ή αδερφάκια...

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

Παράθεση από: Τσιωτάκης Παναγιώτης στις 01 Νοε 2009, 02:31:41 ΜΜ
To "απο αριστερά προς τα δεξιά" είναι ο καθολικός τρόπος υλοποίησης πράξεων μεταξύ ΙΔΙΑΣ ιεραρχίας τελεστών.

χμμ, ... εξαρτάται τι εννοούμε τελεστή! Για παράδειγμα οι μαθητές ως τελεστές είχαν υπόψη μόνο τους αριθμητικούς τελεστές (και μάλλον όχι με το όνομα τελεστές). Ξαφνικά  τους μιλάμε και για συγκριτικούς αλλά και λογικούς τελεστές! Σε κάποιες γλώσσες η έννοια του τελεστή είναι ακόμα ευρύτερη. Στη C/C++ για παράδειγμα γίνεται ολίγον χαμός. Εκεί ακόμα και η εκχώρηση είναι τελεστής: Π.χ. x=y=3, όπου εκεί πάμε από δεξιά προς τα αριστερά, δηλ. το 3 εκχωρείται στο y και μετά το y στο x. Στη C/C++ έχουμε πολλούς τελεστές που πάνε από δεξιά προς τα αριστερά. Αν δείτε στο http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B στην ενότητα "Operator precedence" εκεί αναφέρει αναλυτικά ποιοι είναι Left-to-right και ποιοι Right-to-left...

Μάλιστα βλέποντας τον τελεστή !, που είναι το λογικό όχι, και έχει Right-to-left προτεραιότητα, αναρωτιέμαι αν θα ήταν επιτρεπτό (ασχέτως αν έχει κάποια χρησιμότητα!) να έχουμε τη λογική έκφραση: "όχι όχι done". Αν θα ήταν επιτρεπτό, τότε μάλλον θα έπρεπε να το υπολογίσουμε από δεξιά προς τα αριστερά.

Οκ, όλα αυτά έχουν ακαδημαϊκό ενδιαφέρον μόνο, και επί της ουσίας για το μάθημα της ΑΕΠΠ συμφωνούμε  :)

dimitra

Αγαπητοί συνάδελφοι, κάπως αργά συνεχίζω το topic, αλλά μέχρι τώρα δεν με είχε προβληματίσει η προτεραιότητα των λογικών τελεστών καθώς θεωρούσα αυτονόητο ότι είναι:
1. όχι
2. και
3. ή
...κ τώρα είδα ότι έχει ανοίξει ολόκληρη συζήτηση γι' αυτό το θέμα.
Επιμένω ότι είναι αυτή που προανέφερα κ μάλιστα όχι μόνο γιατί είναι έτσι σε όλες τις γλώσσες προγραμματισμού, αλλά γιατί είναι από τα βασικά αξιώματα της άλγεβρας Boole!!! Δείτε για παράδειγμα, στο κλασικό βιβλίο του Morris Mano, "Ψηφιακή Σχεδίαση", σελ. 57, Προτεραιότητα τελεστών.

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

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

Πάρα πολλοί συνάδελφοι έχουν επιχειρηματολογήσει πάνω σε αυτό... Όμως:

α) επειδή οι μαθητές θα βαθμολογηθούν όχι βάσει του Morris Mano αλλά βάσει του βιβλίου της ΑΕΠΠ που δεν πρόκειται να αλλάξει (ακόμα)
β) επειδή πέρα από το βιβλίο υπάρχει και το: https://alkisg.mysch.gr/steki/index.php?topic=912.msg8645#msg8645 το οποίο μας δεσμεύει τελικά
γ) επειδή δεν είναι δυνατόν άλλοι να βαθμολογούν έτσι και άλλοι γιουβέτσι
δ) επειδή δεν πρόκειται να πληγεί η επιστήμη της πληροφορικής ακολουθώντας την προτεινόμενη προτεραιότητα αλλά κι ούτε εμείς δεν θα μπορούμε να κλείσουμε μάτι από τις τύψεις
ε) και επειδή ούτε και οι μαθητές θα έχουν αποκτήσει στο τέλος κάποιο κουσούρι από κάτι τέτοιο, ώστε να έχουν πρόβλημα όταν και αν σπουδάσουν πληροφορική ή/και ασχοληθούν επαγγελματικά με τον προγραμματισμό

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

gpapargi

Παράθεση από: dimitra στις 23 Νοε 2009, 09:05:25 ΜΜ
Επιμένω ότι είναι αυτή που προανέφερα κ μάλιστα όχι μόνο γιατί είναι έτσι σε όλες τις γλώσσες προγραμματισμού, αλλά γιατί είναι από τα βασικά αξιώματα της άλγεβρας Boole!!! Δείτε για παράδειγμα, στο κλασικό βιβλίο του Morris Mano, "Ψηφιακή Σχεδίαση", σελ. 57, Προτεραιότητα τελεστών.

Από όσο θυμάμαι είχα ανοίξει παλαιότερα το βιβλίο του Mano και είχα καταλήξει σε αυτό
https://alkisg.mysch.gr/steki/index.php?topic=112.msg664#msg664
(Δες και το αμέσως προηγούμενο μήνυμα)

Πάντως όπως λέει και ο Νίκος τελικά έδωσαν διευκρίνηση. (Αν και η νοοτροπία με την οποία δόθηκαν οι διευκρινήσεις ήταν "πως θα βγάλουμε σωστό το βιβλίο σε όσο γίνεται περισσότερα σημεία". Έτσι καταλήξαμε στο να ισχύουν άλλα πράγματα στη "ΓΙΑ" σε ΓΛΩΣΣΑ και άλλα σε ψευδογλώσσα. Πολύ παιδαγωγικό!
Γιώργος Παπαργύρης