ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ

Ξεκίνησε από pit71, 16 Ιαν 2007, 01:01:11 ΜΜ

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

pit71

Τι γίνεται με τους αρνητικους αριθμους στους τελεστες DIV και MOD
Σύμφωνα με τον  Γιώργο Παπαργύρη (gpapargi)
1) Αν θέλω να βρω πηλίκο και υπόλοιπο στη διαίρεση του -8 με το 6 ξεκινώ πάλι από την ίδια σχέση των αντίστοιχων θετικών (1)
8=6*1+2
-8 = -6*1 -2 (πολλαπλασίασα τα 2 μέλη με -1 για να εμφανίσω το -8).
-8= 6 (-1) -2 (χρέωσα το μείον του 6 στον άσσο για να έχω το 6 θετικό όπως θέλω).
-8 = 6 (-1) -6 +6 -2 (προσθεταφαιρώ το 6. Αυτό με το + θα το ενσωματώσω στο υπόλοιπο για να το κάνω θετικό. Αυτό με το μείον θα το ενσωματώσω στο πηλίκο (κοινός παράγοντας) για να διατηρήσω τη σχέση στη μορφή που θέλω. Δηλαδή

-8 = 6 * (-2) + 4. Άρα πηλίκο -2 και υπόλοιπο 4.

2) Σύμφωνα με άλλη παραδοχή :Αν θέλω να βρω πηλίκο και υπόλοιπο στη διαίρεση του -8 με το 6 ξεκινώ πάλι από την ίδια σχέση των αντίστοιχων θετικών (1)
8=6*1+2
-8 = -6*1 -2 (πολλαπλασίασα τα 2 μέλη με -1 για να εμφανίσω το -8).
-8= 6 (-1) -2 (χρέωσα το μείον του 6 στον άσσο για να έχω το 6 θετικό όπως θέλω).
ʼρα πηλίκο -1 και υπόλοιπο -2

Τι απο τα δύο θα ακολουθήσουμε?

ʼλλο παραδειγμα : θεμα επαναληπτ. 2002  (-5 div 1) KAI (-5 MOD 1)
1)
5=1*5+0
-5 = -1*5-0
-5= 1 (-5) -0 .
-5 = 1 (-5) -1 +1 -0 . Δηλαδή

-5 = 1 * (-6) +1. ʼρα πηλίκο -6 και υπόλοιπο 1.

2)5=1*5+0
-5 = -1*5-0
-5= 1 (-5) -0 .
ʼρα πηλίκο -5 και υπόλοιπο 0.

Τι ισχύει



gpapargi

Αν και μου άλλαξες το φύλο στο προηγούμενο post (γράφοντας «την gpapargi»)  ;D ;D ;D θα σου απαντήσω

Από τον ορισμό της Ευκλείδειας διαίρεσης το υπόλοιπο διαιρέσεως πρέπει να είναι πάντα μεγαλύτερο ή ίσο με 0 και μικρότερο από τη απόλυτη τιμή του διαιρέτη.

Δηλ ισχύει
0 <= υπόλοιπο < Α_Τ(διαιρέτης)

Άρα η πρώτη προσέγγιση (για το -8 και το 6) είναι η σωστή. Ουσιαστικά προσθεταφερούμε με 6 για να ρίξουμε στην περιοχή [0, Α_Τ(διαιρέτη-1)] αυτό που τελικά θα καταλήξει να είναι υπόλοιπο (δεξιά στο τέλος). Αν αυτό είναι εξαρχής στην σωστή περιοχή τότε προφανώς δε χρειάζεται να κάνουμε τίποτα. 
Η περιοχή στην οποία πρέπει να κινείται το υπόλοιπο είναι μέρος του ορισμού της Ευκλείδειας διαίρεσης αλλιώς δε θα ήταν μοναδικά ορισμένα (καλώς ορισμένα) το υπόλοιπο και το πηλίκο.

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

pit71

ΣΥΓΝΩΜΗ ΓΙΑ ΤΗΝ ΑΛΛΑΓΗ ΦΥΛΟΥ. ΕΙΜΑΙ ΝΕΟ ΜΕΛΟΣ ΚΑΙ ΔΕΝ ΓΝΩΡΙΖΑ.


nikosx

Συμφωνώ με την πρώτη προσέγγιση στη διάίρεση του -8 με το 6, ότι δηλαδή το υπόλοιπο στην ευκλείδια πρέπει να είναι μεγαλύτερο ή ίσο του 0 και μικρότερο από την ΑΤ του διαιρέτη, από την άλλη βέβαια η γλωσσομάθεια βγάζει σαν αποτέλεσμα π=-1 και υ=-2 το οποίο μας μπερδεύει λίγο στο ποια απάντηση τελικά θα ήταν η σωστή σε ένα θέμα πανελληνίων (επιμένω στην πρώτη προσέγγιση του θέματος αφού αυτή είναι και η σωστή λύση).

Νίκος Ξ.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

chaos

Καλησπέρα και από εμένα,

Δυστυχώς κάποιες γλώσσες προγραμματισμού (όπως και η Basic) δίνουν (λανθασμένα) αρνητικό αποτέλεσμα στο υπόλοιπο της διαίρεσης ενός αρνητικού με έναν θετικό αριθμό.
Κατά τη γνώμη μου γενικώς υπάρχει σύγχυση μεταξύ του υπόλοιπου (remainder) και του modulo όπως ορίζεται στα μαθηματικά. Ο τελεστής % στη C (αν θυμάμαι καλά) λειτουργεί σαν remainder και όχι ως mod (ακολουθώντας την πρωτοπόρα FORTRAN με τη MOD (στη FORTRAN 90 ενσωματώνεται η συνάρτηση MODULO με πιο μαθηματική προσέγγιση)

Το a MOD b πρέπει να έχει το πρόσημο του b. Αν δηλαδή το b είναι αρνητικό τότε το a MOD b είναι αρνητικό.

π.χ. 11 MOD -5 = -4, -11 MOD 5 = 4, -11 MOD -5 = -1

Σωτήρης Σιώκος

andreas_p

Δ=διαιρετέος
δ=διαιρέτης
π=πηλίκο
υ=υπόλοιπο

Δ=δ.π+υ   και   0<=υ< Α_Τ(δ)    Ευκλείδια  διαίρεση.


π.χ. 11 MOD (-5) = 1    και   11 DIV (-5) =  -2

      -11 MOD 5 = 4        και  -11 MOD 5 =  -3

Ανδρέας


nikosx

Αντρέα φαντάζομαι ότι ήθελες να γράψεις:

-11 div 5 = -3
-11 mod 5 = 4

Nίκος Ξ.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

filippos

Όπως φάνηκε από κάποιες εύστοχες παρατηρήσεις συναδέλφων σε πρόσφατες συζητήσεις, “λειτουργίες” όπως, MOD, DIV, Α_Μ() έχουν σαφώς οριστεί στο βιβλίο ως ισοδύναμες των αντίστοιχων μαθηματικών. Δε βλέπω λοιπόν το λόγο να συνεχίζουμε να προβληματιζόμαστε για την ερμηνεία των συγκεκριμένων σημείων, όταν αυτά είναι ορισμένα σαφώς στα μαθηματικά.  Το τι κάνει η μία γλώσσα προγραμματισμού και τι μια άλλη είναι μάλλον άσχετο με τη συζήτηση στο πλαισιο του μαθήματος. Θα μπορούσε να θεωρηθεί ίσως και “..επικίνδυνη..” αφού υπάρχει η πιθανότητα να δημιουργήσει “ασάφειες” σε πράγματα τα οποία είναι ήδη επαρκώς ορισμένα στο πλαίσιο του μαθήματος.

Αφού το μάθημα ορίζει αυτές τις λειτουργίες με βάση τα μαθηματικά, νομίζω ότι είναι ασφαλές να καταλήξουμε ότι:
-5 div 2 = -3
-5 mod 2 = 1
A_M(-2.5) = -3

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

Αν η γλωσομάθεια υπολογίζει -8 div 6 = -1 αντί για -2 και -8 mod 6 =-2 αντί για 4 αυτό οφείλεται στο γεγονός ότι η γνωσσομάθεια δεν υλοποιεί τη ΓΛΩΣΣΑ του μαθήματος, αλλά τη “μεταφράζει” σε PASCAL.

Αν ο διερμηνευτής (που υλοποιεί τη ΓΛΩΣΣΑ του βιβλίου) υπολογίζει A_M(-2.5)=-2 θα έπρεπε ίσως να το διορθώσει ώστε να ακολουθεί τον μαθηματικό ορισμό και να υπολογίζει A_M(-2.5)=-3, -8 div 6 = -2 και -8 mod 6 = 4

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

Μία επιτροπή εξετάσεων που θα ήθελε να αποφύγει έντονη κριτική θα έπρεπε να αποφύγει θέματα αυτής της μορφής.  Αν όμως κάποιος θεματοδότης προσέξει την οδηγία του μαθήματος ότι ακολουθούνται οι μαθηματικοί ορισμοί, “δικαιούται” να θεωρήσει ότι ο μαθητής οφείλει να υπολογίσει το Α_Μ(-2.5) = -3 και ως -8 div 6 = -2.  Σε τέτοια περίπτωση αυτός που θα ευθύνεται για την όποια λάθος απάντηση μαθητού θα είναι ο καθηγητής που θα έχει διδάξει άλλα.

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

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

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

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

alkisg

Εντόπισα τελικά το paper (http://portal.acm.org/citation.cfm?id=128861.128862) που συγκρίνει τους διάφορους ορισμούς div/mod:
1) Του Ευκλείδη
2) Του Knuth
3) Της ISO Standard Pascal/Algol και μερικούς άλλους

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

Παράθεση από: filippos στις 18 Ιαν 2007, 11:48:28 ΜΜ
Αν ο διερμηνευτής (που υλοποιεί τη ΓΛΩΣΣΑ του βιβλίου) υπολογίζει A_M(-2.5)=-2 θα έπρεπε ίσως να το διορθώσει ώστε να ακολουθεί τον μαθηματικό ορισμό και να υπολογίζει A_M(-2.5)=-3, -8 div 6 = -2 και -8 mod 6 = 4

Δυστυχώς αν και θα προτιμούσα να υποστηρίξω την επιστήμη της Πληροφορικής έναντι των Μαθηματικών ( ;)  :P ;D  ) η διόρθωση στην επόμενη έκδοση είναι απαραίτητη!

(σιγά να μην ακούσουμε τον Knuth... τον πρόγονό μας θα ακούσουμε!)

andreas_p

Νίκο, ευχαριστώ.

Είναι    -11  DIV  5 =  -3


Ανδρέας

lsourtzo

Παράθεση από: andreas_p στις 18 Ιαν 2007, 12:21:39 ΜΜ
Δ=διαιρετέος
δ=διαιρέτης
π=πηλίκο
υ=υπόλοιπο

Δ=δ.π+υ   και   0<=υ< Α_Τ(δ)    Ευκλείδια  διαίρεση.


π.χ. 11 MOD (-5) = 1    και   11 DIV (-5) =  -2

      -11 MOD 5 = 4        και  -11 MOD 5 =  -3

Ανδρέας
Διαφωτιστική ανάλυση …
Το θέμα είναι .. και πως το λέμε αυτό στους μαθητές μας μπαρμπα στροθμφ ???
Καμιά 10αρια από τους μαθητές μου θα μπορέσουν να το καταλάβουν …
Σε ένα μεγάλο κομμάτι που δυσκολεύετε να κάνει το
24 div 7
και το
24 mod 7
όμως πως θα το πούμε ?!?!
ας ελπίσουμε ότι δεν θα ζητηθεί κάτι τέτοιο πάντως …
αν και κάποια στιγμή πολύ το φοβάμαι ότι σε κάποιον πίνακα τιμών, σε κάποιο θέμα 2, κάποιος φωστήρας θα το ρωτήσει !!!!