Ρωσικα με Για

Ξεκίνησε από soron80, 28 Οκτ 2010, 06:46:29 ΜΜ

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

soron80

Συνάδερφοι συγχωρέστε με αν έχει ξαναποσταριστεί
με αφορμή την ερώτηση ενός μαθητή( γίνεται ο πολλαπλασιασμός αλα ρώσικα με ΓΙΑ) προσπάθησα να θυμηθώ κάποια μαθηματικά από το σχολείο και κατέληξα στα παρακάτω

ΠΡΟΓΡΑΜΜΑ ΡΩΣΙΚΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Μ1, Μ2, Ν, ΓΙΝΟΜΕΝΟ, Ι
ΑΡΧΗ
  ΓΙΝΟΜΕΝΟ <- 0
  Ν <- 0
  ΔΙΑΒΑΣΕ Μ1, Μ2
  Ν <- Α_Μ(ΛΟΓ(Μ2)/ΛΟΓ(2)) + 1
  ΓΡΑΨΕ Ν
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΑΝ(Μ2 MOD 2 = 1) ΤΟΤΕ
      ΓΙΝΟΜΕΝΟ <- ΓΙΝΟΜΕΝΟ + Μ1
    ΤΕΛΟΣ_ΑΝ
    Μ1 <- Μ1*2
    Μ2 <- Μ2 DIV 2
    ΓΡΑΨΕ ΓΙΝΟΜΕΝΟ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'ΓΙΝΟΜΕΝΟ= ', ΓΙΝΟΜΕΝΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

το παραπάνω δουλεύει όσο το τέσταρα και μου φαίνεται λογικό..
τί έχετε να πείτε...
μπορούμε να το διδάξουμε στην τάξη?
Τσισπαράς Βασίλης
Καθηγητής Πληροφορικής ΠΕ19

Καρκαμάνης Γεώργιος

Τα εύκολα - δύσκολα.

Για ποιο λόγο όμως να γίνει όλο αυτό; Ποιο το όφελος;

gpapargi

Ωραίο ερώτημα... για να ξεσκουριάσουμε και λίγο. Θέλει μια απόδειξη για το ότι το πλήθος των βημάτων είναι μια συνάρτηση του Μ2. Έτσι μπορείς να βρεις το πλήθος των βημάτων (και άρα να χρησιμοποιήσεις τη Για) αν ξέρεις το Μ2.

Μια απόδειξη που μου ήρθε είναι η εξής:

Ο Μ2 θα φάει διαδοχικά div με 2 μέχρι να γίνει 0. Για να βρω πόσα div 2 χρειάζονται για να μηδενιστεί ο Μ2 (αυτό είναι το πλήθος των βημάτων της Για) προτιμώ να φανταστώ τον Μ2 στο δυαδικό σύστημα αρίθμησης. Εκεί το div 2 σημαίνει κόψιμο του τελευταίο ψηφίου. (Είναι το αντίστοιχο με το div 10 στο δεκαδικό σύστημα αρίθμησης).

Άρα το ερώτημα ανάγεται στο «πόσα ψηφία έχει ο Μ2 στο δυαδικό σύστημα αρίθμησης;»

Έστω ν αυτά τα ψηφία. Τότε ισχύει 2^(ν-1) <= Μ1 < 2^ν. (Αυτό γιατί ο αριθμός 2^ν στο δυαδικό είναι το 1 με ν μηδενικά από πίσω του).

Παίρνοντας το λογάριθμο με βάση το 2 έχουμε ν-1 <= ΛΟΓ2(Μ1) < ν
Λύνοντας ως προς ν έχουμε ΛΟΓ2(Μ1) < ν =<ΛΟΓ2(Μ1) + 1.
Άρα ν=Α_Μ(ΛΟΓ2(Μ1)) +1

Επειδή όμως η ΓΛΩΣΣΑ δεν έχει δυαδικό λογάριθμο αλλά φυσικό (ln(x)= ΛΟΓ(x) στη ΓΛΩΣΣΑ) χρειάζεται ο τύπος αλλαγής βάσης.

Άρα ν=Α_Μ(ΛΟΓ(Μ1)/ΛΟΓ(2)) +1
 
Εγώ προσωπικά από μόνος μου δεν το λέω. Αλλά ανέκαθεν όταν με ρωτούσαν τέτοιου είδους πράγματα, το θεωρούσα μια πολύ καλή ευκαιρία να δείξω τι είναι η πληροφορική. Δεν είναι χειρισμός υπολογιστή όπως νομίζουν πολλοί (συμπεριλαμβανομένης της υπουργού παιδείας και των συμβούλων της). Είναι αλγόριθμοι... η κατασκευή και η μαθηματική τους ανάλυση.

soron80

Παράθεση από: gpapargi στις 29 Οκτ 2010, 09:44:47 ΠΜ
Ωραίο ερώτημα... για να ξεσκουριάσουμε και λίγο. Θέλει μια απόδειξη για το ότι το πλήθος των βημάτων είναι μια συνάρτηση του Μ2. Έτσι μπορείς να βρεις το πλήθος των βημάτων (και άρα να χρησιμοποιήσεις τη Για) αν ξέρεις το Μ2.

Μια απόδειξη που μου ήρθε είναι η εξής:

Ο Μ2 θα φάει διαδοχικά div με 2 μέχρι να γίνει 0. Για να βρω πόσα div 2 χρειάζονται για να μηδενιστεί ο Μ2 (αυτό είναι το πλήθος των βημάτων της Για) προτιμώ να φανταστώ τον Μ2 στο δυαδικό σύστημα αρίθμησης. Εκεί το div 2 σημαίνει κόψιμο του τελευταίο ψηφίου. (Είναι το αντίστοιχο με το div 10 στο δεκαδικό σύστημα αρίθμησης).

Άρα το ερώτημα ανάγεται στο «πόσα ψηφία έχει ο Μ2 στο δυαδικό σύστημα αρίθμησης;»

Έστω ν αυτά τα ψηφία. Τότε ισχύει 2^(ν-1) <= Μ1 < 2^ν. (Αυτό γιατί ο αριθμός 2^ν στο δυαδικό είναι το 1 με ν μηδενικά από πίσω του).

Παίρνοντας το λογάριθμο με βάση το 2 έχουμε ν-1 <= ΛΟΓ2(Μ1) < ν
Λύνοντας ως προς ν έχουμε ΛΟΓ2(Μ1) < ν =<ΛΟΓ2(Μ1) + 1.
Άρα ν=Α_Μ(ΛΟΓ2(Μ1)) +1

Επειδή όμως η ΓΛΩΣΣΑ δεν έχει δυαδικό λογάριθμο αλλά φυσικό (ln(x)= ΛΟΓ(x) στη ΓΛΩΣΣΑ) χρειάζεται ο τύπος αλλαγής βάσης.

Άρα ν=Α_Μ(ΛΟΓ(Μ1)/ΛΟΓ(2)) +1
 
Εγώ προσωπικά από μόνος μου δεν το λέω. Αλλά ανέκαθεν όταν με ρωτούσαν τέτοιου είδους πράγματα, το θεωρούσα μια πολύ καλή ευκαιρία να δείξω τι είναι η πληροφορική. Δεν είναι χειρισμός υπολογιστή όπως νομίζουν πολλοί (συμπεριλαμβανομένης της υπουργού παιδείας και των συμβούλων της). Είναι αλγόριθμοι... η κατασκευή και η μαθηματική τους ανάλυση.


Ευχαριστώ πολύ για την απάντηση...
αυτά περίπου σκέφτηκα κι εγώ για να κατασκευάσω τον τύπο που έχω βάλει στο ΠΡΟΓΡΑΜΜΑ
Τσισπαράς Βασίλης
Καθηγητής Πληροφορικής ΠΕ19