Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: pit71 στις 16 Ιαν 2007, 01:01:11 ΜΜ

Τίτλος: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: pit71 στις 16 Ιαν 2007, 01:01:11 ΜΜ
Τι γίνεται με τους αρνητικους αριθμους στους τελεστες 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 στις 16 Ιαν 2007, 02:48:42 ΜΜ
Αν και μου άλλαξες το φύλο στο προηγούμενο post (γράφοντας «την gpapargi»)  ;D ;D ;D θα σου απαντήσω

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

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

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

Στην περίπτωση του -5 και 1 σωστό είναι το δεύτερο (υπόλοιπο 0).
Στην πρώτη προσέγγιση  καταλήγεις με υπόλοιπο 1 πράγμα που είναι λάθος όταν ο διαιρέτης είναι 1. Βασικά όταν έχεις διαιρέτη το 1, μόνο 0 μπορείς να έχεις για υπόλοιπο αφού αυτός είναι ο μόνο ακέραιος που είναι μεγαλύτερος ή ίσος με 0 και μικρότερος του διαιρέτη (που είναι 1). Αυτό επιβεβαιώνει και κάτι που ξέρουμε καλά από την εμπειρία μας: ότι το 1 διαιρεί όλους τους ακεραίους (δηλαδή δίνει υπόλοιπο μηδέν).
Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: pit71 στις 16 Ιαν 2007, 04:08:34 ΜΜ
ΣΥΓΝΩΜΗ ΓΙΑ ΤΗΝ ΑΛΛΑΓΗ ΦΥΛΟΥ. ΕΙΜΑΙ ΝΕΟ ΜΕΛΟΣ ΚΑΙ ΔΕΝ ΓΝΩΡΙΖΑ.

Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: nikosx στις 17 Ιαν 2007, 01:58:27 ΜΜ
Συμφωνώ με την πρώτη προσέγγιση στη διάίρεση του -8 με το 6, ότι δηλαδή το υπόλοιπο στην ευκλείδια πρέπει να είναι μεγαλύτερο ή ίσο του 0 και μικρότερο από την ΑΤ του διαιρέτη, από την άλλη βέβαια η γλωσσομάθεια βγάζει σαν αποτέλεσμα π=-1 και υ=-2 το οποίο μας μπερδεύει λίγο στο ποια απάντηση τελικά θα ήταν η σωστή σε ένα θέμα πανελληνίων (επιμένω στην πρώτη προσέγγιση του θέματος αφού αυτή είναι και η σωστή λύση).

Νίκος Ξ.
Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: chaos στις 17 Ιαν 2007, 11:36:15 ΜΜ
Καλησπέρα και από εμένα,

Δυστυχώς κάποιες γλώσσες προγραμματισμού (όπως και η 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 στις 18 Ιαν 2007, 12:21:39 ΜΜ
Δ=διαιρετέος
δ=διαιρέτης
π=πηλίκο
υ=υπόλοιπο

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


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

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

Ανδρέας

Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: nikosx στις 18 Ιαν 2007, 02:56:31 ΜΜ
Αντρέα φαντάζομαι ότι ήθελες να γράψεις:

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

Nίκος Ξ.
Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: filippos στις 18 Ιαν 2007, 11:48:28 ΜΜ
Όπως φάνηκε από κάποιες εύστοχες παρατηρήσεις συναδέλφων σε πρόσφατες συζητήσεις, “λειτουργίες” όπως, 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 στις 19 Ιαν 2007, 12:33:56 ΠΜ
Εντόπισα τελικά το 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 στις 19 Ιαν 2007, 08:53:24 ΠΜ
Νίκο, ευχαριστώ.

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


Ανδρέας
Τίτλος: Απ: ΕΧΩ ΜΠΕΡΔΕΥΤΕΙ - ΒΟΗΘΕΙΑ
Αποστολή από: lsourtzo στις 11 Απρ 2007, 11:49:21 ΠΜ
Παράθεση από: 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, κάποιος φωστήρας θα το ρωτήσει !!!!