ΤΕΛΕΣΤΕΣ div και MOD

Ξεκίνησε από pit71, 15 Ιαν 2007, 05:13:48 ΜΜ

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

pit71

"ΕΤΡΕΞΑ" ΣΤΗΝ 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


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

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


pit71

Μα οι  συναρτήσεις div και mod στην Pascal είναι βασισμένες σε κάποιο αλγόριθμο και κατ' επέκταση σε κάποιο μαθηματικό υπόβαθρο. Κάνω λάθος?

P.Tsiotakis

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

Με εκτίμηση,

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

alkisg

#4
Θέλει διάβασμα το θέμα, αλλά απ' όσο έχω καταλάβει (και μπορεί να λέω ανακρίβειες),
ο μαθηματικός ορισμός προήρθε από τον Ευκλείδη,
και ο "πληροφορικός" ορισμός προήχθηκε από τον 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

Η εκφραση

Α_Μ (λ^2) MOD k

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

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

ή κανω λαθος;

Ευχαριστω.

fragile

ΟΧΙ ΠΙΣΤΕΥΩ ΟΤΙ ΚΑΝΕΙΣ ΛΑΘΟΣ

Η εκφραση

Α_Μ (λ^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

δηλαδη η ιεραρχια(δεν αναφερεται στο βιβλιο...) ειναι
παρενθεσεις
συναρτησεις
^
(div,mod)
*,/
+,-
διορθωστε με αν κανω λαθος

alkisg

Νομίζω ότι τα div, mod, *, / έχουν την ίδια προτεραιότητα, άρα πρέπει να γραφούν στην ίδια γραμμή.
Επίσης δεν νομίζω ότι τίθεται θέμα προτεραιότητας μεταξύ παρενθέσεων και συναρτήσεων, αφού γραμματικά δεν εμπλέκονται σε ασάφεια προτεραιότητας (δεν υπάρχει δηλαδή διαφορετικός τρόπος εκτέλεσης, πρώτα μια παρένθεση και μετά μια συνάρτηση ή αντίθετα).

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


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