Ιεραρχία πράξεων

Ξεκίνησε από papalouk, 15 Νοε 2004, 10:05:30 ΠΜ

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

papalouk

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

π.χ. 3 * 4 mod 5 * 2 (= 2  ,   24   ή   4)

αν θεωρήσουμε ότι τα * , mod έχουν ίδια προτεραιότητα τότε η σωστή απάντηση είναι το 4 (ξεκινώντας τις πράξεις από αριστερά). Ισχύει όμως αυτό; Υπάρχει κάτι σχετικό στα σχολικά βιβλία;

Ποια η σχέση συγκριτικών (>, <, <=,...) και λογικών τελεστών;

Οι λογικοί τελεστές έχουν όλοι την ίδια προτεραιότητα;

Για όλα τα ερωτήματα υπάρχουν καλώς ορισμένες απαντήσεις στην επιστήμη των μαθηματικών. Αυτό που ρωτάω είναι πως προκύπτουν αυτές (ή άλλες) απαντήσεις από τα σχολικά βιβλία.

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

P.Tsiotakis

Στη σελίδα 166 στο σχολικό βιβλίο ορίζεται η σχέση μεταξύ των τελεστών

1. αριθμητικοί
2. συγκριτικοί
3. λογικοί

Το πρόβλημα είναι με τα div mod. Στο βιβλίο της Β λυκείου ορίζει το mod (ανεπαρκώς) αλλά το div δεν ορίζεται πουθενά

Προσωπικά θεωρώ (και λέω στα παιδιά) την πιο απλή υποδειξη που εξάγεται από την λογική

Τα div και mod υποννοούν διαίρεση άρα έχουν την ίδια προτεραιότητα με αυτή (και με τον πολλαπλασιασμό). Άρα αν σε μια έκφραση υπάρχουν μόνο αυτά, η εκτέλεση γίνεται από αριστερά προς τα δεξιά

Αυτά είναι σκέψεις που μπορεί εύκολα να κάνει ένας μαθητής

Επομένως, κατά την προσωπική μου άποψη

3 * 4 mod 5 * 2 = 12 mod 5 * 2 = 2 * 2 = 4

Με εκτίμηση,

papalouk

Ευχαριστώ για την άμεση απόκριση,
θα επιμείνω λίγο ακόμα, όχι πως έχει πρακτικά σημασία (ευελπιστώ ότι σε εξετάσεις οι αοριστίες θα παρακάμπτονται με χρήση παρενθέσεων). Απλά όταν λέω στους μαθητές ότι κάτι δεν ορίζεται σαφώς στο βιβλίο, η ερώτηση που ακολουθεί είναι "κι εμείς στις εξετάσεις τι θα κάνουμε;". Ως προς αυτό με καλύπτει η απάντηση του Παναγιώτη για τα *,/,mod,div (ίδια προτεραιότητα).
Ωστόσο, η σελίδα 166 ορίζει Αριθμητικοί>Συγκριτικοί και Αριθμητικοί>Λογικοί από το οποίο δεν εξάγεται Συγκριτικοί>Λογικοί (συμφωνώ βέβαια με την προτεραιότητα που έδωσε ο Παναγιώτης, αν βασίζεται και σε κάποια λυμένη άσκηση π.χ. στο βιβλίο καθηγητή τα πράγματα θα ήταν απλούστερα...)
Επίσης, πως σας φαίνεται η επόμενη "εσωτερική" προτεραιότητα στους λογικούς τελεστές (η οποία αναφέρεται σε πολλά βοηθήματα).
1.  ΌΧΙ
2.  ΚΑΙ
3.  Ή

Απ' όσο γνωρίζω είναι σωστή, αν λάβουμε υπόψη τις επόμενες αντιστοιχίες

ΚΑΙ -- *
Ή   -- +

μιας και το φερε η κουβέντα, χρησιμοποιεί κάποιος την προηγούμενη αντιστοιχία εμπλουτισμένη με την ΑΛΗΘΗΣ -- 1, ΨΕΥΔΗΣ -- 0 ως βοήθεια στους μαθητές για αποτίμηση πολύπλοκων λογικών εκφράσεων;
(π.χ. ΑΛΗΘΗΣ ΚΑΙ ΨΕΥΔΗΣ ταυτίζεται με 1*0=0 άρα ΨΕΥΔΗΣ)
Από διδακτικής άποψης ρωτάω. Έχω παρατηρήσει ότι κάποιοι (μάλλον λίγοι μαθητές) προτιμούν αυτή τη λύση από το να απομνημονεύουν τον πίνακα αληθείας των λογικών τελεστών.

Με εκτίμηση

 




P.Tsiotakis



Στη σελίδα 166 λέει οτι οι αριθμητικοί εκτελούνται πρώτα από τους συγκριτικούς. Επίσης οτι συγκριτικοί πρώτα από τους λογικούς. Αυτό είναι ξεκάθαρο

Για τον πίνακα αληθείας με προτάσεις " βρέχει ή χιονίζει παίρνω ομπρέλα" καταλαλβαίνουν τους λογικούς τελεστές δεν χρειάζεται 0, 1 Ψευδής - αληθής κ.λ.π.


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

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

Και τα θεωρώ καλύτερα από τις αυθαιρεσίες των βοηθημάτων

Με εκτίμηση,

redhata

Αφού οι συγκριτικοί είναι πιο πάνω από τους λογικούς, η χρήση παρενθέσεων σε συνθήκες όπως:
 Αν (α>0) ΚΑΙ (β<>0) Τότε
Θεωρείται πλεονασμός ή χάριν της αναγνωσιμότητας να προτείνεται;
rEdHaTa

Γιώργος Παπαλουκάς

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

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

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

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




gpapargi

Καλημέρα

Ο παραλληλισμός και με + και ή με * μου αρέσει γιατί γενικεύει τα πράγματα αλλά μπορεί να μπερδέψει το μαθητή ειδικά στο σημείο 1+1=1 οπότε τον αποφεύγω.
Άλλο το 1+1=2 της πρόσθεσης στο δεκαδικό σύστημα (και το 1+1=10 στο δυαδικό) και άλλο το 1+1=1 της άλγεβρας boole.  
Αν δω ότι κάποιος τραβάει και περισσεύει χρόνος μπορεί να του το αναφέρω (μέχρι στιγμής πάντως δε βρήκα την ευκαιρία).

Προσωπικά εξηγώ τις έννοιες των «και» «ή» και «όχι» με παραδείγματα της καθημερινής ζωής έτσι ώστε ο μαθητής να καταλάβει ότι οι λογικοί τελεστές είναι στην ουσία πράγματα που ήδη γνωρίζει. Προσοχή θέλει το θέμα της αποκλειστικής διάζευξης που πολύ το μπλέκουν στην αρχή με τη διάζευξη «ή».
Αφού κατανοήσει ο μαθητής τη φυσική σημασία μετά μπορεί εύκολα να ξέρει ότι πχ ότι
Α ή Ψ = Α κλπ

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

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

Φιλικά

redhata

Μπορεί να είναι και λεπτομέρεια, αλλά με δεδομένη την ιεραρχία του βιβλίου για τους τελεστές,  η παρακάτω λογική έκφραση:
α>0 ΚΑΙ ΟΧΙ β > α
(πόσο) λάθος είναι;
αφού η σωστή(συντακτικά) είναι:
α > 0 ΚΑΙ (ΟΧΙ β > α)

ps: οι παρενθέσεις στις συγκρίσεις έχουν παραληφθεί, λόγω της προτεραιότητας των συγκριτικών    
      τελεστών και δεν αφορούν τη συγκεκριμένη ερώτηση.

rEdHaTa

P.Tsiotakis

#8
Το όχι Α αντιστρέφει την επόμενη λογική πρόταση, το Α δηλαδή

Με εκτίμηση,


alkisg

#9
Παιδιά το βιβλίο γράφηκε (υποθέτω) υπό το πρίσμα του να μάθουν οι μαθητές αλγοριθμική και δεν καθήσαν οι συγγραφείς να "κοσκινίσουν" κάθε φράση τους, όπως γίνεται με τα επίσημα specifications των γλωσσών προγραμματισμού. Εννοώ ότι αν προσπαθήσουμε να "πιαστούμε" από διάφορες φράσεις του βιβλίου τότε φυσικά και θα βρούμε ένα σωρό αντιφάσεις.

Δηλαδή: αν υποθέσουμε π.χ. ότι οι συγγραφείς είχαν στο νου τους αυτό που λέει ο Παναγιώτης (δηλαδή προτεραιότητα από αριστερά προς τα δεξιά όταν δεν ορίζεται διαφορετικά), τότε οδηγούμαστε σε αδιέξοδο.

Ο τελεστής ΟΧΙ είναι ΜΟΝΑΔΙΑΙΟΣ τελεστής και φυσικά και θα πρέπει να έχει μεγαλύτερη προτεραιότητα από το ΚΑΙ ή το Η, που είναι ΔΥΑΔΙΚΟΙ. Αλλιώς όπως σωστά επισημαίνει ο redhata η [glossa]α > 0 ΚΑΙ ΟΧΙ β > α[/glossa] ΔΕΝ μπορεί να αποτελέσει έκφραση της ΓΛΩΣΣΑΣ, γιατί από αριστερά προς τα δεξιά καλούμαστε να κάνουμε πράξη μεταξύ του «α > 0» και του σκέτου «ΟΧΙ», χωρίς το «β > α»... ΦΥΣΙΚΑ θα πρέπει ΠΡΩΤΑ να αποτιμηθεί το "ΟΧΙ β > α" και ΜΕΤΑ το ΚΑΙ, οπότε οδηγηθήκαμε στο λογικότατο συμπέρασμα που ισχύει σε όλες (όσες ξέρω) τις γλώσσες προγραμματισμού, ότι το ΟΧΙ έχει μεγαλύτερη προτεραιότητα από το ΚΑΙ. Εξάλλου ξανακοίταξα επί τούτου το κεφάλαιο 7 και ΔΕΝ βρήκα να λέει ότι ισχύει ΓΕΝΙΚΑ το "από αριστερά προς τα δεξιά", αλλά ΜΟΝΟ για τους αριθμητικούς τελεστές ίσης προτεραιότητας (σελ. 154).


Άλλο παράδειγμα κακής "γενίκευσης" που μπορούμε να κάνουμε: σελ. 155 «Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου»... Δηλαδή η εντολή [glossa]πραγματική_μεταβλητή <-- 1 [/glossa] είναι λάθος επειδή το 1 είναι ακέραιος? (ή γενικότερα, π <-- α, με τον α ακέραιο).


Η ταπεινή μου γνώμη λοιπόν είναι:
1) Αν κάτι ορίζεται ΣΑΦΩΣ στο βιβλίο, ναι, αποτελεί "ευαγγέλιο", αλλά
2) Αν κάτι δεν ορίζεται και ΠΡΕΠΕΙ να υποθέσω κάτι, υιοθετώ τα γνωστά από τις υπόλοιπες γλώσσες προγραμματισμού, και
3) Αγνοώ κάποιες φράσεις του βιβλίου που γράφηκαν για επεξηγηματικούς λόγους και όχι σαν specification, ΑΝ ΑΥΤΕΣ "δεν στέκουν" ή έρχονται σε αντίθεση με τα υπόλοιπα που υπάρχουν στο βιβλίο (π.χ. τα παραδείγματα)

Φιλικά,
Άλκης

Υ.Γ. #1: οι τελεστές div και mod ορίζονται πολύ περιληπτικά στην σελίδα 153.

Υ.Γ. #2: @redhata: "Αφού οι συγκριτικοί είναι πιο πάνω από τους λογικούς, η χρήση παρενθέσεων σε συνθήκες όπως:
 Αν (α>0) ΚΑΙ (β<>0) Τότε
Θεωρείται πλεονασμός ή χάριν της αναγνωσιμότητας να προτείνεται;"
==> Πάντως το βιβλίο έχει ΕΝΑ ΣΩΡΟ αντίστοιχα παραδείγματα ΜΕ και ΧΩΡΙΣ να βάζει παρενθέσεις, οπότε θεωρώ ότι είτε μπουν είτε όχι είναι το ίδιο (για πολλούς μαθητές βέβαια ίσως να είναι χρήσιμες οι παρενθέσεις για κατανοησιμότητα).

P.Tsiotakis

#10
 
 
Και γω θεωρώ οτι το όχι αποτιμάται πρώτα, γιατί δεν "ενώνει" λογικές προτάσεις αλλά "κολλά" στην επόμενη πρόταση.

Το από αριστερά προς τα δεξιά αναφερόταν στο : 3 * 4 mod 5 * 2

και στο: 4>6 και 6<8 ή 3<5

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

Με εκτίμηση,

redhata

Εμένα πάντως μου φαίνεται πιο σωστό, από τη στιγμή που το βιβλίο δε λέει τίποτε για προτεραιότητα του ΟΧΙ, το ΟΧΙ να μπαίνει πάντα μέσα σε παρένθεση(εκτός αν βρίσκεται στην αρχή της λογικής έκφρασης, οπότε δε δημιουργεί πρόβλημα με ή χωρίς παρενθέσεις).
Το ΘΕΜΑ 1Γ του 2004 των Εν. Λυκ. κάπως έτσι το αντιμετωπίζει νομίζω.

ps: Αναποδιά δε λέω, αλλά ας είναι καλά το βιβλίο...  
rEdHaTa

alkisg

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

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

redhata

#13
Σε βιβλία θεωρίας προτασιακού λογισμού, άλγεβρας boole και λογικών κυκλωμάτων τα ΚΑΙ, Η ορίζονται με ίση προτεραιότητα, ενώ το ΟΧΙ ορίζεται με μεγαλύτερη προτεραιότητα για λόγους οικονομίας παρενθέσεων.
-ΛΟΓΙΚΗ, Μ. Μυτιληναίος, 1993
-Εισαγωγή στην Πληροφορική, P. Rechenberg, 1992

rEdHaTa

gpapargi

Καλημέρα

Πάντως το βιβλίο του Mano (αλλά και μια γύρα στο δίκτυο ψάχνοντας για "operator precedence") λέει στο κεφάλαιο για την άλγευρα boole ότι το και υπολογίζεται πριν το ή (παραλληλίζοντας με τον πολλαπλασιασμό και την πρόσθεση . Φαίνεται πως οι πηγές διαφωνούν!

Πάντως στο βιβλίο του Mano λέει ότι μια άλγευρα boole έχει υποχρεωτικά κάποια αξιώματα. Αλλά αυτά τα αξιώματα δεν την ορίζουν μοναδικά. Ανάλογα με το σε ποιο σύνολο θα την εφαρμόσουμε και με το πως θα ορίσουμε τους 2 τελεστές μπορούμε να έχουμε πολλές άλγευρες boole. Πάντως ξεκαθαρίζει ότι στη δίτιμη άλγευρα boole (ορισμένη στο {0,1}) το "και" προηγείται του "ή".

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