Ο ανηψούλης μου από την Τενεούπολη με ρώτησε αν ο παρακάτω αλγόριθμος (για τον πολ/σμό αλά ρωσικά) είναι σωστός (δεν τον σκέφτηκε μόνος του):
Δεδομένα // Μ1, Μ2 //
P ← 0
Για Ε από Μ2 μέχρι 0 με_βήμα Κ
Αν Ε mod 2 = 1 τότε
P ← P + M1
Τέλος_αν
M1 ← M1*2
K ← M2 div 2
Τέλος_επανάληψης
Αποτελέσματα // P //
Ο γιατρός μου είπε οτι ήμουν πολύ τυχερός που τη γλύτωσα και πως πρέπει να προσέχω πολύ στο εξής. Σε επόμενη παρόμοια...συγκίνηση μπορεί να μην είμαι τόσο τυχερός. Δεν είναι και πολύ συνηθισμένες τέτοιες κρίσεις στα 29...
Με εκτίμηση,
:) :) :)
Ποιός τον έγραψε αυτόν βρε παιδιά!!!
Σε αντιπαράθεση των παραπάνω περιγράφω μια λύση μαθήτριας που είδα πρόσφατα
Αφού περιέγραψα στα παιδιά τη διαδικασία και κάναμε έναν πολλαπλασιασμό με το χέρι για να δούμε τα βήματα, τους είπα να υλοποιήσουν τον αλγόριθμο σε ψευδογλώσσα.
Είχα τη χαρά να δω μια μαθήτρια να συλλαμβάνει έναν από τους πιο ωραίους αλγορίθμους.
Δεδομένα //χ, ψ//
γινόμενο < - 0
Αρχή_επανάληψης
γινόμενο < - γινόμενο + χ * (ψ mod2) ! Τι σκέφτηκε το άτομο!!!
χ < - 2* χ
ψ < - ψ div 2
Μέχρις_ότου ψ = 0
Εμφάνισε γινόμενο
Είστε τυχεροί!!!
Μακάρι να είχα και εγώ τετοιες συγκινήσεις έστω και στα 31 πιστεύω να το άντεχα. :-)
Πολύ ωραίο, αλλά ο στόχος του πολλαπλασιασμού αλά ρωσικά είναι να μη χρησιμοποιηθεί ο τελεστής * (του πολλαπλασιασμού) :D
Ελένη, εσύ έχεις το Φοίβο, μη σκιάζεσαι :o
Παναγιώτη,
"παίξε" βρε συ εκείνο το ωραίο "κομμάτι" που είχες φτιάξει, να δεις πώς το λέγαν, πώς το λέγαν ... ... ... ΑΑΑ ύψωση σε δύναμη α λα ρωσσικά !! :D
ΤΙ ωραία άσκηση !!!
Βάλε τη να τη δούνε όλοι να ... θαυμάσουν :)
Τελικά έτσι θα καταλήξω. Στην ανάγκη του Φοίβου αν καταργηθεί η ΑΕΠΠ. ;D
Επειδή ο Παναγιώτης είναι μάλλον πολύ ... μετριόφρων για να απαντήσει στην "πρόσκληση", θα μου επιτρέψει να την "ανεβάσω" εγώ την άσκηση.
Γνωρίζοντας την "δέσμευσή" του να προσφέρει το έργο του για ελεύθερη χρήση (με τις αυτονόητες ηθικές υποχρεώσεις όσων το χρησιμοποιούν) πιστεύω δε θα με παρεξηγήσει.
Ιδού λοιπόν:
Να σχηματίσετε το διάγραμμα ροής για την παρακάτω κωδικοποίηση.
Nα σχηματίσετε τον πίνακα τιμών αν
i. x = 4, n = 2,
ii. x = 3, n = 3
Μελετώντας τα αποτελέσματα, ποια πιστεύετε ότι είναι η λειτουργία του αλγορίθμου;
Αλγόριθμος Ασκηση
Διάβασε x, n
m ← n
z ← x
αποτέλεσμα ← 1
Όσο m > 0 επανάλαβε
Όσο (m mod 2 = 0) επανάλαβε
m ← m div 2
z ← z * z
Τέλος_επανάληψης
m ← m - 1
αποτέλεσμα ← αποτέλεσμα * z
Τέλος_επανάληψης
Εκτύπωσε αποτέλεσμα
Τέλος Ασκηση
Δεν είναι πολλαπλασιασμός αλα ρωσσικά, όμως νομίζω ότι "φέρνει λίγο" σε ... κάτι αλα ρωσσικά.
Ας τον εξετάσει επομένως (και ας τον "βαφτίσει") ο καθένας μόνος του ;)
Σέργιε, πρόκειται για τη ΔΣ3 στο κεφάλαιο 4 (σελίδα 42 τετραδίου μαθητή) που είναι πλέον ο μόνος αλγόριθμος στο διδακτικό πακέτο που δεν έχει χρησιμοποιηθεί ακόμα στα θέματα των εξετάσεων. Και τώρα με τη διαφήμισή του, δεν πρόκειται να μπει ποτέ :'( . Εγώ απλά πρόσθεσα το διάγραμμα ροής. Κρίμα, και είχα πιάσει το θέμα των εξετάσεων :o
Μπορείς με αυτόν τον αλγόριθμο να υπολογίσεις την ύψωση σε δύναμη αν στο πληκτρολόγιό σου δεν δουλεύει το ^ ;D
Με εκτίμηση, Παναγιώτης
Τώρα αν πω:
...Ναι ρε συ... το θυμόμουν!!! Ήθελα να δω αν θα αφήσεις να υποθέσουμε ότι είναι δική σου η άσκηση...
θα πείσω κανένα;; :-[
Εγώ σε πιστεύω γιατί είσαι καλός μου φίλος, global moderator και Λαρισαίος
Παράθεση από: Τσιωτάκης Παναγιώτης στις 19 Μαΐου 2006, 11:28:28 ΠΜ
Ο ανηψούλης μου από την Τενεούπολη με ρώτησε αν ο παρακάτω αλγόριθμος (για τον πολ/σμό αλά ρωσικά) είναι σωστός (δεν τον σκέφτηκε μόνος του):
Δεδομένα // Μ1, Μ2 //
P ← 0
Για Ε από Μ2 μέχρι 0 με_βήμα Κ
Αν Ε mod 2 = 1 τότε
P ← P + M1
Τέλος_αν
M1 ← M1*2
K ← M2 div 2
Τέλος_επανάληψης
Αποτελέσματα // P //
Ο γιατρός μου είπε οτι ήμουν πολύ τυχερός που τη γλύτωσα και πως πρέπει να προσέχω πολύ στο εξής. Σε επόμενη παρόμοια...συγκίνηση μπορεί να μην είμαι τόσο τυχερός. Δεν είναι και πολύ συνηθισμένες τέτοιες κρίσεις στα 29...
Με εκτίμηση,
Φίλε Παναγιώτη,
Καταλαβαίνω τη λογική του αλγόριθμου, αλλά αν δεν κάνω λάθος, δε δουλεύει...
Καταρχήν, φαντάζομαι ότι εννοούσες "με_βήμα -Κ"
Επίσης, φαντάζομαι ότι εννοούσες "K <-- E div 2" και όχι "K <-- M2 div 2"
Αλλά και πάλι αν αφαιρεί το Κ συνεχώς, στην περίπτωση που το Ε είναι περιττός δε δουλεύει...
Πρέπει να αφαιρεί το Κ+1... (και "μέχρι 1")
Έσπασα το κεφάλι μου να δω μήπως δεν έχω καταλάβει τη λογική σου και εννοείς κάτι διαφορετικό
από αυτό που κατάλαβα... Άν μπορείς εσύ ή κάποιος άλλος παρακαλώ απαντήστε μου, ευχαριστώ
εκ των προτέρων!
Αν έχω δίκιο τότε διορθωμένο πρέπει να είναι έτσι:
Δεδομένα // Μ1, Μ2 //
P ← 0
Για Ε από Μ2 μέχρι 1 με_βήμα -Κ
Αν Ε mod 2 = 1 τότε
P ← P + M1
K ← Ε div 2 + 1
Αλλιώς
K ← Ε div 2
Τέλος_αν
M1 ← M1*2
Τέλος_επανάληψης
Αποτελέσματα // P //
(Το δοκίμασα στη Γλωσσομάθεια και δουλεύει, απλά πρέπει να δωθεί αρχική τιμή στο Κ)
Φαντάζομαι οτι συμφωνείς πως είναι απαράδεκτο να αλλάζει η τιμή του μετρητή (του i ή εδώ του Ε)
μέσα στην επανάληψη. ʼραγε δεν είναι άσχημο να αλλάζει τιμή το βήμα (εδώ το Κ);
Φίλε Λυκούργε,
Ακριβώς όπως επισημαίνεις:
Η αρχική τιμή, η τελική, το βήμα και η τιμή του μετρητή δεν πρέπει ΠΟΤΕ να αλλάζουν τιμή εντός του βρόχου (τετράδιο μαθητή). Χιλιοειπωμένο και χιλιοσχολιασμένο.
Κι αυτό γιατί η δομή Για που είναι φτιαγμένη για να επιλύει προβλήματα με γνωστό πλήθος επαναλήψεων τα διαχειρίζεται η ίδια. Απο κει και πέρα αν θέλουμε κάτι άλλο στον αλγόριθμο μπορούμε απλά να χρησιμοποιήσουμε μια απο τις Όσο και Μέχρις_ότου.
Το έχω πει περίπου απο το 2003 που συμμετέχω σε αυτό το φορουμ: το μεγάλο πρόβλημα δεν είναι το διδακτικό πακέτο ή κάτι άλλο, αλλά η εμμονή ημών των καθηγητών να εντάσσουμε τις προγραμματιστικές μας γνώσεις (διαφορετικές ο κάθε ένας) σε αυτό το μάθημα αγνοώντας τις ειδικές συνθήκες που το διέπουν, αλλά και τους στόχους που καλείται να εκπληρώσει...
Και μερικές φορές ψάχνουμε το περίεργο, το ακραίο για εξάσκηση, για να εντυπωσιάσουμε ή για άλλους λόγους.. :'(
Καλήμερα!
Στον πολ/σμο αλα ρώσικα, για τον 2ο αριθμό που διαιρείται με το 2, οι εντολές Μ2<--Α_Μ(Μ2/2) και
Μ2<--Μ2div 2 είναι ισοδύναμες;
Ευχαριστώ
Ναι, είναι το ίδιο
όπως και αυτό που χρησιμοποιεί το σχολικό
Μ2 <-- [Μ2/2], που εξηγεί οτι οι αγκύλες εκφράζουν το ακέραιο μέρος
Απλά στο σχολικό βιβλίο, οι τελεστές div, mod παρουσιάζονται στο κεφάλαιο 7 και όχι στο 2!
Θεωρεί βέβαια το βιβλίο καθηγητή (όχι βάσιμα πάντα), πως η ύλη διδάσκεται σπειροειδώς...
Παράθεση από: Παναγιώτης Τσιωτάκης στις 19 Μαΐου 2006, 11:28:28 ΠΜ
Ο ανηψούλης μου από την Τενεούπολη με ρώτησε αν ο παρακάτω αλγόριθμος (για τον πολ/σμό αλά ρωσικά) είναι σωστός (δεν τον σκέφτηκε μόνος του):
Δεδομένα // Μ1, Μ2 //
P ← 0
Για Ε από Μ2 μέχρι 0 με_βήμα Κ
Αν Ε mod 2 = 1 τότε
P ← P + M1
Τέλος_αν
M1 ← M1*2
K ← M2 div 2
Τέλος_επανάληψης
Αποτελέσματα // P //
Ο γιατρός μου είπε οτι ήμουν πολύ τυχερός που τη γλύτωσα και πως πρέπει να προσέχω πολύ στο εξής. Σε επόμενη παρόμοια...συγκίνηση μπορεί να μην είμαι τόσο τυχερός. Δεν είναι και πολύ συνηθισμένες τέτοιες κρίσεις στα 29...
Με εκτίμηση,
Το Ε είναι δεσμευμένο :P :P :P
Παράθεση από: xazlag στις 13 Ιαν 2008, 10:54:50 ΠΜ
Καλήμερα!
Στον πολ/σμο αλα ρώσικα, για τον 2ο αριθμό που διαιρείται με το 2, οι εντολές Μ2<--Α_Μ(Μ2/2) και
Μ2<--Μ2div 2 είναι ισοδύναμες;
Ευχαριστώ
αν ενας αριθμος ειναι ακεραιος εστω χ αυτος ο αριθμος τοτε ισχυει x div2=Α_Μ(χ/2).αν δεν ειναι ακεραιος τοτε
η ισοτητα δεν ισχυει καθως το div χρησιμοποιειται μονο για ακεραιους.πχ 5/2=2.5 αρα A_Μ(2.5)=2 και 5div2=2
Να μη ξεχνάμε ότι αναφερόμαστε σε αλγόριθμο που το τρόπος γραφής δεν είναι τόσο αυστηρός. Προφανώς αν υλοποιηθεί σε ΓΛΩΣΣΑ θα υπάρχουν κάποιοι περιορισμοί ως προς τον τύπο των μεταβλητών που θα εφαρμόζεται ο πολλαπλασιασμός αλα ρωσικά ή ορισμένες δυσκολίες θα αντιμετωπιστούν με άλλον τρόπο (όπως αναφέρθηκε με το ΑΜ).
Μα ο πολλαπλασιασμός αλά ρωσικά αναφέρεται μόνο σε ακεραίους, άρα είναι δεκτό και το Α_Μ σαν υλοποίηση σε ΓΛΩΣΣΑ
https://www.youtube.com/watch?v=5LlHaoqBfbk&t=
προγραμμα σε Γλωσσα πολλαπλασιασμου αλλα ρωσικα χωρις συντελεστη * και χωρις Αν
ΠΡΟΓΡΑΜΜΑ πολσμος_αλα_ρωσικα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α, β
ΠΡΑΓΜΑΤΙΚΕΣ: αθρ
ΑΡΧΗ
αθρ <- 0
ΔΙΑΒΑΣΕ α, β
ΟΣΟ α >= 1 και β<>0 ΕΠΑΝΑΛΑΒΕ !0^0 δεν οριζεται και υπαρχει πιθανοτητα αν δεν βαλω τη δευτερη συνθηκη να προκυψει αυτο μεσα στην επαναληψη
αθρ <- αθρ + β^(α mod 2) - (1 - α mod 2)
α <- α div 2
β <- β + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α_Μ(αθρ) !για να φαινεται χωρις τα μηδενικα δεκαδικα,ως ακεραιος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
2η ΕΚΔΟΧΗ που λαμβανει υποψιν και αρνητικους αριθμους με τους ιδιους περιορισμους που εχω παραπανω(χωρις *,ΑΝ):
ΠΡΟΓΡΑΜΜΑ πολσμος_αλα_ρωσικα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α, β
ΠΡΑΓΜΑΤΙΚΕΣ: αθρ, χ
ΑΡΧΗ
αθρ <- 0
ΔΙΑΒΑΣΕ α, β
χ <- Α_Τ(α) + Α_Τ(β)
χ <- Α_Τ(α + β) - χ + 1
!αν α*β>=0 το χ ειναι 1 αλλιως ειναι αρνητικο(αποδεικνυεται ευκολα)
α <- Α_Τ(α)
β <- Α_Τ(β)
ΟΣΟ α >= 1 ΚΑΙ β <> 0 ΕΠΑΝΑΛΑΒΕ!0^0 δεν οριζεται και υπαρχει πιθανοτητα αν δεν βαλω τη δευτερη συνθηκη να προκυψει αυτο μεσα στην επαναληψη
αθρ <- αθρ + β^(α mod 2) - (1 - α mod 2)
α <- α div 2
β <- β + β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!το div χρησιμοποειται με ακεραιους για αυτο χρησιμοποιω τη συναρτηση Α_Μ
ΓΡΑΨΕ (Α_Μ(αθρ)) div (Α_Μ(χ) div Α_Μ(Α_Τ(χ)))
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Φέτος είναι μέσα ο πολλαπλασιαμός αλα ρωσικά?
Όπως πάντα ναι
Δεν έχει αλλάξει κάτι
Πάντα μέσα στην ύλη είναι