Λογικοί τελεστές,div mod

Ξεκίνησε από JohnyF, 18 Οκτ 2017, 04:12:42 ΠΜ

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

JohnyF

Λοιπόν είναι ένα πολυσυζητημένο θέμα απλά θέλω να δω τι ακριβώς θα πω στα παιδιά.Το ΚΑΙ έχει μεγαλύτερη προτεραιότητα από το Η;Θεωρείται ακόμα ασάφεια , ή έχει βρεθεί κάποια λύση;Να πω οτι είναι ασάφεια,δεν αναφέρεται στο βιβλίο,οπότε δε πρόκειται να μπει χωρίς παρενθέσεις;Η να πω οτι αν σας τύχει,όπως και να το κάνετε είναι σωστό;
Επίσης το επόμενο είναι το εξής.Στο βιβλίο αναφέρει οτι το div mod χρησιμοποιεί ακεράιους.Αυτό σημαίνει ότι απαγορεύεται να κάνουμε div Mod με πραγματικόυς;Σε άαλες γλωσσες γίνεται μια χαρά.
Και πάνω στο mod,div επίσης...Αναφέρεται κάπου τι κάνουμε πχ στο -3 div 2  ;Πως θα πρέπει αν λυθεί αυτό?Στο διερμηνευτή βγάζει -2 σαν αποτέλεσμα,δηλαδή μας πάει στο -6 που είναι σωστό..Η πχ στο -5 mod -3 βγάζει 1 που θα είναι ουσιαστικά -5-(-6)..Δε νομίζω τα παιδιά πρέπει να έχουν τοσο ειδικευμένες γνώσεις έτσι;

ozorgnax

#1
Εχει βγει διευκρίνιση από το υπουργείο που λέει ότι οι αριθμοί που συμμετέχουν σε πράξεις με div και mod πρέπει να θεωρούνται θετικοί ακέραιοι.
http://dide.sam.sch.gr/keplinet/images/newsletters/aepp_div_mod.pdf

Και το έγγραφο για την προτεραιότητα των λογικών τελεστών (ουσιαστικά λέει ότι καλύτερα να χρησιμοποιούνται πάντοτε παρενθέσεις)
https://aepp.files.wordpress.com/2011/04/aepp_telestes.pdf

nikosx

Υπάρχει νέα οδηγία που λέει ότι από τη στιγμή που στο βιβλίο της Β Λ περιέχεται η ιεραρχία των λογικών τελεστώ (1.ΟΧΙ 2.ΚΑΙ 3. 'Η) είναι γνωστό και στη Γ' Λ.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

bugman

Απλός τρόπος διαπίστωσης:
ΕΜΦΑΝΙΣΕ ΑΛΗΘΗΣ Η ΨΕΥΔΗΣ ΚΑΙ ΨΕΥΔΗΣ
αν δώσει ΨΕΥΔΗΣ τότε δεν υπάρχει προτεραιότητα στο ΚΑΙ
(ΑΛΗΘΗΣ Η ΨΕΥΔΗΣ) ΚΑΙ ΨΕΥΔΗΣ = ΑΛΗΘΗΣ ΚΑΙ ΨΕΥΔΗΣ = ΨΕΥΔΗΣ
αν δώσει ΑΛΗΘΗΣ τότε η ΚΑΙ έχει προτεραιότητα και δείτε πως λειτουργεί σε διερμηνευτή:
Υπάρχουν δυο καταχωρητές, ο συσσωρευτής, και το μερικό αποτέλεσμα. Στην Αρχή μπαίνει η τιμή ΑΛΗΘΗΣ στο συσσωρευτή. Μετά βλέπει ο διερμηνευτής το "Η" και ζητάει την επόμενη συνθήκη. Η επόμενη συνθήκη ξεκινάει και αυτή με το δικό της συσσωρευτή. Βάζει λοιπόν το ΨΕΥΔΗΣ αλλά δεν επιστρέφει (όπως θα έκανε αν όλα ήταν ίδιας προτεραιότητας) και κοιτάει τι έχει ακόμα. Βλέπει το "ΚΑΙ" και τότε πάει για την επόμενη συνθήκη. Εκεί βρίσκει το ΨΕΥΔΗΣ και τίποτα άλλο. Τώρα εκτελεί το (συσσωρευτής=συσσωρευτής ΚΑΙ μερικό αποτέλεσμα), και το δίνει στη θέση "μερικό αποτέλεσμα"  της προηγούμενης κλήσης. Εκεί εκτελεί το (συσσωρευτής=συσσωρευτής Η μερικό αποτέλεσμα), το ΑΛΗΘΗΣ η ΨΕΥΔΗΣ, άρα δίνει το ΨΕΥΔΗΣ στον συσσωρευτή. Γενικά ο συσσωρευτής είναι αυτός στον οποίο βγαίνει κάποιο αποτέλεσμα. Πώς γίνεται τώρα και έχουμε διπλό συσσωρευτή; Είναι τοπική μεταβλητή, ή σε υλοποίηση η προηγούμενη τιμή φυλάσσεται σε μια στοίβα.
Ασφαλώς είναι πιο γρήγορο να έχουμε εκτέλεση χωρίς να λογαριάζουμε προτεραιότητα, επειδή για αυτή την έκφραση αρκεί ένας συσσωρευτής, ο οποίος θα συσσωρεύει το αποτέλεσμα του κάθε επόμενου τελεστή. Οι παρενθέσεις βάζουν υποχρεωτικά το σύστημα να βγάζει νέο συσσωρευτή (μπορεί να πηγαίνει η τρέχουσα τιμή σε στοίβα). Έτσι οι παρενθέσεις στη δεύτερη περίπτωση κάνουν την επιλογή που γίνονταν αυτόματα στην πρώτη περίπτωση θέμα επιλογής του προγραμματιστή.
Να γιατί όταν ζητάνε "να μπαίνουν παρενθέσεις", σημαίνει ότι "είναι επιλογή του προγραμματιστή, όχι του διερμηνευτή/γλώσσας".




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

Παράθεση από: bugman στις 18 Οκτ 2017, 03:40:09 ΜΜ
Απλός τρόπος διαπίστωσης:
ΕΜΦΑΝΙΣΕ ΑΛΗΘΗΣ Η ΨΕΥΔΗΣ ΚΑΙ ΨΕΥΔΗΣ
αν δώσει ΨΕΥΔΗΣ τότε δεν υπάρχει προτεραιότητα στο ΚΑΙ
(ΑΛΗΘΗΣ Η ΨΕΥΔΗΣ) ΚΑΙ ΨΕΥΔΗΣ = ΑΛΗΘΗΣ ΚΑΙ ΨΕΥΔΗΣ = ΨΕΥΔΗΣ
αν δώσει ΑΛΗΘΗΣ τότε η ΚΑΙ έχει προτεραιότητα και δείτε πως λειτουργεί σε διερμηνευτή:
Υπάρχουν δυο καταχωρητές, ο συσσωρευτής, και το μερικό αποτέλεσμα. Στην Αρχή μπαίνει η τιμή ΑΛΗΘΗΣ στο συσσωρευτή. Μετά βλέπει ο διερμηνευτής το "Η" και ζητάει την επόμενη συνθήκη. Η επόμενη συνθήκη ξεκινάει και αυτή με το δικό της συσσωρευτή. Βάζει λοιπόν το ΨΕΥΔΗΣ αλλά δεν επιστρέφει (όπως θα έκανε αν όλα ήταν ίδιας προτεραιότητας) και κοιτάει τι έχει ακόμα. Βλέπει το "ΚΑΙ" και τότε πάει για την επόμενη συνθήκη. Εκεί βρίσκει το ΨΕΥΔΗΣ και τίποτα άλλο. Τώρα εκτελεί το (συσσωρευτής=συσσωρευτής ΚΑΙ μερικό αποτέλεσμα), και το δίνει στη θέση "μερικό αποτέλεσμα"  της προηγούμενης κλήσης. Εκεί εκτελεί το (συσσωρευτής=συσσωρευτής Η μερικό αποτέλεσμα), το ΑΛΗΘΗΣ η ΨΕΥΔΗΣ, άρα δίνει το ΨΕΥΔΗΣ στον συσσωρευτή. Γενικά ο συσσωρευτής είναι αυτός στον οποίο βγαίνει κάποιο αποτέλεσμα. Πώς γίνεται τώρα και έχουμε διπλό συσσωρευτή; Είναι τοπική μεταβλητή, ή σε υλοποίηση η προηγούμενη τιμή φυλάσσεται σε μια στοίβα.
Ασφαλώς είναι πιο γρήγορο να έχουμε εκτέλεση χωρίς να λογαριάζουμε προτεραιότητα, επειδή για αυτή την έκφραση αρκεί ένας συσσωρευτής, ο οποίος θα συσσωρεύει το αποτέλεσμα του κάθε επόμενου τελεστή. Οι παρενθέσεις βάζουν υποχρεωτικά το σύστημα να βγάζει νέο συσσωρευτή (μπορεί να πηγαίνει η τρέχουσα τιμή σε στοίβα). Έτσι οι παρενθέσεις στη δεύτερη περίπτωση κάνουν την επιλογή που γίνονταν αυτόματα στην πρώτη περίπτωση θέμα επιλογής του προγραμματιστή.
Να γιατί όταν ζητάνε "να μπαίνουν παρενθέσεις", σημαίνει ότι "είναι επιλογή του προγραμματιστή, όχι του διερμηνευτή/γλώσσας".

Υποθέτω ότι όλα αυτά δεν απευθύνονται σε μαθητές...

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

Παράθεση από: JohnyF στις 18 Οκτ 2017, 04:12:42 ΠΜ
Στο βιβλίο αναφέρει οτι το div mod χρησιμοποιεί ακεράιους.Αυτό σημαίνει ότι απαγορεύεται να κάνουμε div Mod με πραγματικόυς;Σε άαλες γλωσσες γίνεται μια χαρά.

Σε ποιες άλλες γλώσσες γίνεται το div και mod με πραγματικούς και ποιο είναι τότε το αποτέλεσμα μιας τέτοιας πράξης;

bugman

#6
Ναι αλλά εδώ συζητούν Καθηγητές! Και αυτό που αναφέρω πιστεύω ότι δίνει την "απάντηση" στο δύσκολο μαθητή. (το στέλνει αδιάβαστο που λέμε), ενώ η λύση είναι "δεν μας ενδιαφέρει το γενικό, εδώ στη Γλώσσα βάζουμε παρενθέσεις, και δεν υπάρχει ζήτημα").

Για το DIV υπάρχει θέμα και ως προς αυτό: 12 DIV 3*2 άλλες γλώσσες θα δώσουν 2 και άλλες 8, ανάλογα πάλι τις προτεραιότητες.
πχ στην Python to 12 // 3 * 2 δίνει 8. Στη Visual Basic  το 12 \ 3 * 2 δίνει 2

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

Παράθεση από: bugman στις 18 Οκτ 2017, 08:59:45 ΜΜ
Ναι αλλά εδώ συζητούν Καθηγητές! Και αυτό που αναφέρω πιστεύω ότι δίνει την "απάντηση" στο δύσκολο μαθητή. (το στέλνει αδιάβαστο που λέμε), ενώ η λύση είναι "δεν μας ενδιαφέρει το γενικό, εδώ στη Γλώσσα βάζουμε παρενθέσεις, και δεν υπάρχει ζήτημα").

Όλοι καταλαβαίνουν ότι η σειρά των πράξεων επηρεάζει το αποτέλεσμα... Το θέμα είναι αν είναι όλοι σύμφωνοι για το ποια είναι η σωστή σειρά!

bugman

Δεν είναι θέμα δημοκρατίας εδώ, τι θέλουμε να συμφωνούμε όλοι, αλλά τι λέει το εγχειρίδιο της ΓΛΩΣΣΑΣ, το οποίο βέβαια λείπει και αντί αυτού υπάρχουν ασαφείς οδηγίες.
Η σειρά των πράξεων επηρεάζουν το αποτέλεσμα, ναι μεν, αλλά η σειρά δεν είναι δεδομένη, αυτό εξηγώ όπως όταν δείχνω τη χρήση του DIV σε Python και σε Visual Basic. Σε κάθε περίπτωση οφείλει αυτός που κατατοπίζει τον χρήστη να του πει τι ακριβώς στη περίπτωση της ΓΛΩΣΣΑΣ συμβαίνει, και όχι από διάσπαρτες ανακοινώσεις-σχόλια-όπως θες να τα πούμε, αλλά βάσει ενός εγχειριδίου που θα εμπλουτίζεται αν χρειαστεί, ή θα αναθεωρείται αν κάτι πάει στραβά, και θα είναι το σημείο αναφοράς!
Όλοι τα καταλαβαίνουμε αυτά αλλά απλά δεν τα βλέπουμε να χρησιμοποιούνται. Το εγχειρίδιο της ΓΛΩΣΣΑΣ θα ήταν τέσσερις-πέντε σελίδες, αραιά γραμμένο.
Και ίσως μετά από χρόνια να έβαζαν και καμιά συνάρτηση για αλφαριθμητικά!

JohnyF

Παράθεση από: Νίκος Αδαμόπουλος στις 18 Οκτ 2017, 08:29:06 ΜΜ
Σε ποιες άλλες γλώσσες γίνεται το div και mod με πραγματικούς και ποιο είναι τότε το αποτέλεσμα μιας τέτοιας πράξης;

Στη python divmod(3.0 , 2.0) σου δινει (1.0 , 1.0).Επίσης στη java System.out.println(3.0%2.0); σου δινει 1.0.Φαντάζομαι θα γίνεται μια χαρα και σε άλλες γλώσσες

JohnyF

Παράθεση από: nikosx στις 18 Οκτ 2017, 10:39:38 ΠΜ
Υπάρχει νέα οδηγία που λέει ότι από τη στιγμή που στο βιβλίο της Β Λ περιέχεται η ιεραρχία των λογικών τελεστώ (1.ΟΧΙ 2.ΚΑΙ 3. 'Η) είναι γνωστό και στη Γ' Λ.

Αυτή η οδηγία είναι φετινή;Δηλαδη εγώ στα παιδιά να πω ότι προτεραιότητα έχει το και,και να μην μιλήσω για ασάφειες και τα λοιπα έτσι;

petrosp13

Από τότε που άλλαξαν οι κατευθύνσεις είναι η οδηγία νομίζω
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

akouts

http://users.sch.gr/akouts/docs/163578-D2-2-10-2017.pdf

Στη σελίδα 6 η απάντηση για τους λογικούς τελεστές.

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

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

noname

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

P.Tsiotakis

#15
Καλησπέρα,
στο βιβλίο οδηγιών μελέτης μαθητή (2015) αναφέρει στη σελίδα 12 ότι η ιεραρχία των λογικών τελεστών είναι:
1. όχι
2. και
3. ή.
Επίσης, για τους αριθμητικούς τελεστές, στη σελίδα 10 αναφέρει ότι οι τελεστές div, mod έχουν την ίδια ιεραρχία με *, /.
Οι μαθητές λαμβάνουν έντυπα το βιβλίο από πέρσι.

Οπότε μάλλον είναι ξεκάθαρο και λυμένο το ζήτημα.

ΥΓ (προσθήκη): φυσικά και οι οδηγίες διδασκαλίας και το βιβλίο της Β λυκείου έχουν την ίδια αντιμετώπιση στο ζήτημα.

Κωστας τζιαννης

ενας τροπος για να το θυμαται καποιος καθηγητης (οχι μαθητης γιατι δεν το ξερει)ειναι η boolean αλγεβρα.σε αυτην το αληθης ειναι 1 το ψευδης=0
το οχι ειναι το συμπληρωμα και συμβολιζεται με τονο(0'=1,1'=0) το Η ειναι η πραξη της προσθεσης και το ΚΑΙ η πραξη του πολλαπλασιασμου.
θα συμβολισω Α αληθες και Ψ ψευδες.
εχω λοιπον

0+0=0
ψ Η ψ=ψ

0+1=1
Ψ Η Α=Α

1+0=1
α η ψ=α

1+1=1
α η α=α

0*0=0
ψ και ψ=ψ

0*1=0
ψ και α=ψ

1*0=0
α και ψ=ψ

1*1=1
α και α=α

πχ αληθης η  ψευδης η αληθης και οχι ψευδης

μετατρεπω σε bool και εχω

1+0+1*0'=1+1*0'=1+1*1=1+1=1 αρα αληθης η εκφραση

akalest0s

Παράθεση από: ozorgnax στις 18 Οκτ 2017, 07:46:02 ΠΜ
Εχει βγει διευκρίνιση από το υπουργείο που λέει ότι οι αριθμοί που συμμετέχουν σε πράξεις με div και mod πρέπει να θεωρούνται θετικοί ακέραιοι.
http://dide.sam.sch.gr/keplinet/images/newsletters/aepp_div_mod.pdf
Στο παράδειγμα το πρώτο, αντί για 1 έπρεπε να βρίσκει 4, ή λάθος κάνω;  :P
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

evry

Παλιές καλές εποχές. >:D
Το αρχείο αυτό είναι ιστορικό μια και δεν θυμάμαι πριν από αυτό κάποια άλλη οδηγία από το Π.Ι.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

taxata

και έχει και λάθος στα παραδείγματα
Τάσος_Χατζηπαπαδόπουλος
Κύριε δεν έχω internet
http://users.sch.gr/chatzipap/

evry

μα για αυτό είναι ιστορικό!
Μια οδηγία αποφάσισαν να στείλουν και αυτή λάθος ήταν! >:D

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

andreas_p