Αποστολέας Θέμα: ΤΕΛΕΣΤΕΣ div και MOD  (Αναγνώστηκε 6332 φορές)

pit71

  • Οπαδός
  • **
  • Μηνύματα: 15
ΤΕΛΕΣΤΕΣ div και MOD
« στις: 15 Ιαν 2007, 05:13:48 μμ »
"ΕΤΡΕΞΑ" ΣΤΗΝ PASCAL τις εξής εντολές:
1) (-8 div -6) και (-8 mod -6) και μου έδωσε πηλίκο 1 και υπόλοιπο -2
2) (-8 div 6) και (-8 mod 6) και μου έδωσε πηλίκο -1 και υπόλοιπο -2
3) (8 div -6) και (8 mod -6) και μου έδωσε πηλίκο 1 και υπόλοιπο 2

Σύμφωνα με την gpapargi στην σελίδα 11 με θέμα τους τελεστες div και mod η
1) θα έδινε πηλίκο 2 και υπόλοιπο 4
2) θα έδινε πηλίκο 02 και υπόλοιπο 4

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

Μπορεί κάποιος να μου εξηγήσει?

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3079
  • Dracarys
    • Panagiotis Tsiotakis
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #1 στις: 15 Ιαν 2007, 05:22:22 μμ »

H Pascal δεν είναι το σημεί οαναφοράς για το μάθημά μας. Δεν αποτελεί καν τη θεμελίωση από μαθηματικής πλευράς.

Ο Γιώργος Παπαργύρης (gpapargi) ανέπτυξε το μαθηματικό υπόβαθρο


pit71

  • Οπαδός
  • **
  • Μηνύματα: 15
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #2 στις: 15 Ιαν 2007, 05:37:11 μμ »
Μα οι  συναρτήσεις div και mod στην Pascal είναι βασισμένες σε κάποιο αλγόριθμο και κατ' επέκταση σε κάποιο μαθηματικό υπόβαθρο. Κάνω λάθος?

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3079
  • Dracarys
    • Panagiotis Tsiotakis
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #3 στις: 15 Ιαν 2007, 06:19:51 μμ »
Υπάρχουν καταλληλότεροι εμού να απαντήσουν (και λογικά θα το κάνουν), αλλά η υλοποίηση κάποιας συνάρτησης σε μια γλώσσα προγραμματισμού δε σημαίνει αυτόματα πως υπακούει ακριβώς στη θεωρία

Με εκτίμηση,

Τσιωτάκης Παναγιώτης

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4296
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #4 στις: 15 Ιαν 2007, 08:03:22 μμ »
Θέλει διάβασμα το θέμα, αλλά απ' όσο έχω καταλάβει (και μπορεί να λέω ανακρίβειες),
ο μαθηματικός ορισμός προήρθε από τον Ευκλείδη,
και ο "πληροφορικός" ορισμός προήχθηκε από τον Knuth (το δημιουργό της Pascal, του Tex κτλ).

Ο κάθε τρόπος ορισμού των div / mod έχει τα πλεονεκτήματά του, αλλά σύμφωνα με το http://en.wikipedia.org/wiki/Modulo_operation
Παράθεση
As described by Leijen,
Boute argues that Euclidean division is superior to the other ones in terms of regularity and useful mathematical properties, although floored division, promoted by Knuth, is also a good definition. Despite its widespread use, truncated division is shown to be inferior to the other definitions.

Το θέμα φαίνεται αλληλένδετο με το ακέραιο μέρος / floor κτλ που συζητήσαμε τις προάλλες σε άλλο topic. Ίσως η εξήγηση του γιατί οι πληροφορικοί  επίλεξαν να "ξεφύγουν" από τους ορισμούς του Ευκλείδη να υπάρχει κάπου στα βιβλία του Knuth. Υποθέτω ότι θα είδε κάποιες ιδιότητες που θα είναι πιο βολικές στον προγραμματισμό.

Μπαίνει και η αρχιτεκτονική στη μέση, δηλαδή όταν ο 80x86 καθώς και άλλοι επεξεργαστές ορίζουν το div με τον "πληροφορικό" τρόπο (http://pdos.csail.mit.edu/6.828/2005/readings/i386/DIV.htm), οι γλώσσες προγραμματισμού "προτιμούν" να χρησιμοποιήσουν τον ίδιο τρόπο, ώστε να έχουν καλύτερη απόδοση (=μία εντολή assembly αντί για div, cmp + τη χρονοβόρα jmp).

Τέλος, η ΓΛΩΣΣΑ δεν είναι η μόνη που δεν ορίζει (σαφώς, τουλάχιστον) το ποιον από τους δύο τρόπους ακολουθεί. Και η C89 δεν το ορίζει.

fan

  • Βετεράνος
  • ****
  • Μηνύματα: 60
Ερωτηση οι ΤΕΛΕΣΤΕΣ div και MOD και Α_Μ
« Απάντηση #5 στις: 08 Μάι 2007, 09:52:52 πμ »
Η εκφραση

Α_Μ (λ^2) MOD k

αντιστοιχει στην εκφραση

Α_Μ ((λ^2) MOD k)

ή κανω λαθος;

Ευχαριστω.

fragile

  • Ομάδα διαγωνισμάτων 2008
  • *
  • Μηνύματα: 65
  • ΑΔΡΑΞΤΕ ΤΗΝ ΗΜΕΡΑ
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #6 στις: 08 Μάι 2007, 10:01:57 πμ »
ΟΧΙ ΠΙΣΤΕΥΩ ΟΤΙ ΚΑΝΕΙΣ ΛΑΘΟΣ

Η εκφραση

Α_Μ (λ^2) MOD k

αντιστοιχει στην εκφραση

(Α_Μ (λ^2)) MOD k

Π.Χ. ΑΝ Λ=5,7 ΚΑΙ Κ=6 ΤΟΤΕ

Α_Μ (λ^2) MOD k = Α_Μ (5,7^2) MOD 6 = Α_Μ (32,49) MOD 6 = 32 MOD 6 = 2

ΕΛΠΙΖΩ ΝΑ ΒΟΗΘΗΣΑ




Ευχαριστω.
fragile..........

Dem

  • Θαμώνας
  • ***
  • Μηνύματα: 49
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #7 στις: 09 Μάι 2007, 04:29:56 μμ »
δηλαδη η ιεραρχια(δεν αναφερεται στο βιβλιο...) ειναι
παρενθεσεις
συναρτησεις
^
(div,mod)
*,/
+,-
διορθωστε με αν κανω λαθος

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 4296
    • alkisg@im.sch.gr
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: ΤΕΛΕΣΤΕΣ div και MOD
« Απάντηση #8 στις: 09 Μάι 2007, 08:17:40 μμ »
Νομίζω ότι τα div, mod, *, / έχουν την ίδια προτεραιότητα, άρα πρέπει να γραφούν στην ίδια γραμμή.
Επίσης δεν νομίζω ότι τίθεται θέμα προτεραιότητας μεταξύ παρενθέσεων και συναρτήσεων, αφού γραμματικά δεν εμπλέκονται σε ασάφεια προτεραιότητας (δεν υπάρχει δηλαδή διαφορετικός τρόπος εκτέλεσης, πρώτα μια παρένθεση και μετά μια συνάρτηση ή αντίθετα).

Η ιεραρχία που υλοποιεί μέχρι στιγμής ο Διερμηνευτής είναι η παρακάτω:
Κώδικας: [Επιλογή]
Οι κανόνες προτεραιότητας από τον υψηλότερο στο χαμηλότερο:
   8. Αναγνωριστικά, σταθερές, συναρτήσεις, παρενθέσεις
   7. ^
   6. πρόσημα -, +
   5. *, /, div, mod
   4. +, -,
   3. < , <=, =, <>, >, >=
   2. όχι
   1. και
   0. ή

Υπάρχει διχογνωμία σχετικά με την προτεραιότητα των και και ή, καθώς και για το αν η δύναμη ^ εκτελείται από δεξιά προς αριστερά ή αντίθετα, ενώ στα υπόλοιπα νομίζω ότι η ιεραρχία είναι γενικά αποδεκτή...