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

Γενικό Λύκειο => Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον => Δομή ακολουθίας => Μήνυμα ξεκίνησε από: pit71 στις 15 Ιαν 2007, 05:13:48 μμ

Τίτλος: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: pit71 στις 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. Σύμφωνα με τα παραπάνω βγαίνει λάθος.

Μπορεί κάποιος να μου εξηγήσει?
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: Παναγιώτης Τσιωτάκης στις 15 Ιαν 2007, 05:22:22 μμ

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

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

Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: pit71 στις 15 Ιαν 2007, 05:37:11 μμ
Μα οι  συναρτήσεις div και mod στην Pascal είναι βασισμένες σε κάποιο αλγόριθμο και κατ' επέκταση σε κάποιο μαθηματικό υπόβαθρο. Κάνω λάθος?
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: Παναγιώτης Τσιωτάκης στις 15 Ιαν 2007, 06:19:51 μμ
Υπάρχουν καταλληλότεροι εμού να απαντήσουν (και λογικά θα το κάνουν), αλλά η υλοποίηση κάποιας συνάρτησης σε μια γλώσσα προγραμματισμού δε σημαίνει αυτόματα πως υπακούει ακριβώς στη θεωρία

Με εκτίμηση,

Τσιωτάκης Παναγιώτης
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: alkisg στις 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 δεν το ορίζει.
Τίτλος: Ερωτηση οι ΤΕΛΕΣΤΕΣ div και MOD και Α_Μ
Αποστολή από: fan στις 08 Μάι 2007, 09:52:52 πμ
Η εκφραση

Α_Μ (λ^2) MOD k

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

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

ή κανω λαθος;

Ευχαριστω.
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: fragile στις 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

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




Ευχαριστω.
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: Dem στις 09 Μάι 2007, 04:29:56 μμ
δηλαδη η ιεραρχια(δεν αναφερεται στο βιβλιο...) ειναι
παρενθεσεις
συναρτησεις
^
(div,mod)
*,/
+,-
διορθωστε με αν κανω λαθος
Τίτλος: Απ: ΤΕΛΕΣΤΕΣ div και MOD
Αποστολή από: alkisg στις 09 Μάι 2007, 08:17:40 μμ
Νομίζω ότι τα div, mod, *, / έχουν την ίδια προτεραιότητα, άρα πρέπει να γραφούν στην ίδια γραμμή.
Επίσης δεν νομίζω ότι τίθεται θέμα προτεραιότητας μεταξύ παρενθέσεων και συναρτήσεων, αφού γραμματικά δεν εμπλέκονται σε ασάφεια προτεραιότητας (δεν υπάρχει δηλαδή διαφορετικός τρόπος εκτέλεσης, πρώτα μια παρένθεση και μετά μια συνάρτηση ή αντίθετα).

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

Υπάρχει διχογνωμία σχετικά με την προτεραιότητα των και και ή (http://alkisg.mysch.gr/steki/index.php?topic=916.0), καθώς και για το αν η δύναμη ^ εκτελείται από δεξιά προς αριστερά ή αντίθετα (http://alkisg.mysch.gr/steki/index.php?topic=915.0), ενώ στα υπόλοιπα νομίζω ότι η ιεραρχία είναι γενικά αποδεκτή...