Σαφήνεια εκφώνησης άσκησης

Ξεκίνησε από olga_ath, 07 Δεκ 2009, 07:55:36 ΜΜ

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

gthal

Παράθεση από: Νίκος Αδαμόπουλος στις 09 Δεκ 2009, 01:54:01 ΜΜ
Εξαρτάται βέβαια πώς ερμηνεύουμε το "ακριβώς"...  :(
Από τα μαθηματικά, ο όρος "ο α διαιρείται ακριβώς (ή και σκέτο διαιρείται) με τον β"  σημαίνει  "η ακέραια διαίρεση α δια β δίνει υπόλοιπο μηδέν"  (είναι "τέλεια", που λέγαμε στο σχολείο)
Φιλικά,
Γιώργος Θαλασσινός

gpapargi

Αυτό εννοείται. Δεν μπορεί να σημαίνει κάτι άλλο.

P.Tsiotakis

Η άσκηση όμως

Να αναπτύξετε πρόγραμμα το οποίο θα ζητάει από τον χρήστη έναν ακέραιο θετικό αριθμό και θα του εμφανίζει πόσες φορές διαιρείται ακριβώς με το 2

Δηλαδή:

Να αναπτύξετε πρόγραμμα το οποίο θα ζητάει από τον χρήστη έναν ακέραιο θετικό αριθμό και θα εμφανίζει πόσες φορές διαιρείται με το 2.


Δεν είναι οκ?

Νίκος Αδαμόπουλος

Εντάξει παίδες, καταλαβαινόμαστε...   ;)

Όμως μην θεωρούμε ότι είναι προφανή όλα αυτά για έναν μαθητή! Για να κάνω το συνήγορο του διαβόλου, θα μπορούσε κάποιος να πει ότι η φράση: "διαιρώ έναν αριθμό με το 2" σημαίνει απλά ότι χρησιμοποιώ σε κάποια διαίρεση τον αριθμό αυτό ως διαιρετέο και το 2 ως διαιρέτη! Δηλαδή στην εντολή: α<- β / 2  διαιρώ το β με το 2 !!! Άρα αν το β είναι άρτιος πόσες φορές μπορεί να γίνει αυτό; Άπειρες!!!  >:D

Εμείς τώρα εννοούμε ότι "μειώνω τον αριθμό ακριβώς στο μισό του". Και θέλουμε να γίνεται ακριβώς, δηλαδή να δίνει ως αποτέλεσμα πάλι ακέραιο...! Και όλα αυτά θέλουμε να θεωρούνται αυτονόητα σε έναν μαθητή από την αρχική εκφώνηση της μίας πρότασης...! Ο σκοπός ποιος είναι; Να δούμε αν καταλαβαίνει την εκφώνηση ή αν μπορεί να χρησιμοποιήσει κατάλληλα κάποια δομή επανάληψης;

Θεωρώ ότι σε τέτοιες περιπτώσεις η άσκηση δεν πρέπει να αφήνει περιθώρια αμφιβολίας. Ας συμπεριλαμβάνει και κάποια παραδείγματα. Δεν είναι κακό! Π.χ. πάμε πάλι:

Να αναπτύξετε πρόγραμμα το οποίο θα ζητάει από τον χρήστη έναν ακέραιο θετικό αριθμό και θα εμφανίζει πόσες φορές διαιρείται ακριβώς με το 2. Π.χ. ο αριθμός 256 διαιρείται 8 φορές (256 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1), ο αριθμός 130 διαιρείται 2 φορές (260 -> 130 -> 65) και ο αριθμός 43 καμία φορά.

Δεν είναι καλύτερα έτσι;  :angel:

evry

#19
  Πάντως πλάκα - πλάκα αν βάλεις αυτή την άσκηση σε ένα τεστ για να εξετάσεις την δομή επανάληψης μπορεί να φας μεγάλη ήττα,  αν κάποιος μαθητής σου απαντήσει το παρακάτω

ΠΡΟΓΡΑΜΜΑ Θέλω_20
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
  ΔΙΑΒΑΣΕ x
  Γράψε Α_Μ( ΛΟΓ(χ)/ΛΟΓ(2) )
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Θέλω_20
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

Φιλικά,
Γιώργος Θαλασσινός

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

πλάκα-πλάκα εγώ ακόμα δεν έχω καταλάβει τι ζητάει η άσκηση.

Την συγκεκριμένη( άσκηση) τι έχω κάπου ξαναδεί και δεν καταλάβαινα τι ζητούσε να βρούμε.
Με μπέρδευε το ακριβώς με το δυο

gthal

Γιώργο, το "ακριβώς" δεν προσδιορίζει το 2 αλλά το "διαιρείται".
(διαιρείται ακριβώς = δεν αφήνει υπόλοιπο)
Φιλικά,
Γιώργος Θαλασσινός

evry

Τώρα που το λετε από ότι φαίνεται ούτε εγώ κατάλαβα στην αρχή τι ζητάει για αυτό και η λύση που έδωσα παραπάνω είναι λάθος. Έκανα σιωπηρά την υπόθεση ότι διαιρείται ακριβώς με το 2 οπότε χρησιμοποίησα τον λογάριθμο. Θα πρέπει να ελέγξω αν διαιρείται με το 2. Το παρακάτω επιστρέφει 0 αν δεν διαιρείται ακριβώς με το 2 αλλιώς επιστρέφει πόσες φορές διαιρείται.

  ΔΙΑΒΑΣΕ x
  Γράψε Α_Μ( ΛΟΓ(x)/ΛΟΓ(2) ) * (1 - (x mod 2))

    Το προηγούμενο που είχα δώσει πριν ουσιαστικά υπολόγιζε τη μέγιστη δύναμη του 2 που είναι μικρότερη του αριθμού.

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

Σωστά !
Τώρα είναι τέλειο...  8)
Αρχίζω να πιστεύω πως ότι πρόγραμμα και να ζητηθεί μπορείς να το γράψεις σε μιά γραμμή  ;D
(ίσως σε δυσκολέψει λίγο η Διάβασε αλλά με κατάλληλη χρήση των div και mod θα το βρεις  ;)  )
Φιλικά,
Γιώργος Θαλασσινός

za√‘ag

Παράθεση από: gthal στις 11 Δεκ 2009, 10:29:42 ΠΜ
Σωστά !
Τώρα είναι τέλειο...  8)
Αρχίζω να πιστεύω πως ότι πρόγραμμα και να ζητηθεί μπορείς να το γράψεις σε μιά γραμμή  ;D
(ίσως σε δυσκολέψει λίγο η Διάβασε αλλά με κατάλληλη χρήση των div και mod θα το βρεις  ;)  )

Υπερβολές ... πολύ απλός κώδικας  :angel:  :o
:D  8)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

Γιαννης Κ.

Γεια σας , Ειναι το πρωτο το μου post! Βρηκα αυτη την ασκηση ενδιαφερουσα και ειπα να προσπαθησω να την λυσω.
Ειμαι μαθητης 3ς λυκειου και λογω του περιορισμενου χρονου που εχω διαβασα μερικα απο τα ποστ τον προηγουμενων και δεν ειδα καποια λυση, εγω απλως δινω μια ενδεικτικη λυση που θα εγραφα σε ενα 15λεπτο διαγωνισμα:
Αλγοριθμος παραδειγμα
Μεταβλητες
Πραγματικες:χ,υ
Ακεραιες:π
Αρχη
π<-0
Διαβασε χ
Οσο χmod2=0 Επαναλαβε
π<-π+1
υ<-χdiv2
χ<-υ
Τελος_Επαναληψης
Γραψε π
Τελος

Το δοκιμασα σε ενα ιστοτοπο εν ονοματι  http://www.pseudoglossa.gr/
λιγο διαφοροποιημενα ως εξης
Αλγόριθμος diairesi
p <- 0
Διάβασε x
  Όσο x mod 2 =0 επανάλαβε
   p <- p+1
   r<- x div 2
   x<- r
  Τέλος_επανάληψης
  Εκτύπωσε p
Τέλος diairesi

ΚΑΙ ΔΟΥΛΕΞΕ ΣΩΣΤΑ ΚΑΤΑΤΗΝ ΓΝΩΜΗ ΜΟΥ .. ΠΕΡΙΜΕΝΩ ΤΗΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΑΣ
Με εκτιμηση Γιαννης
(ισως εχω κανει καποια τυπογραφικα λαθη επειδη βιαζομουν λιγακι  :( :( :()

zwoula

γιατι νομιζω οτι αυτα τα δυο ειναι ακριβως τα ιδια??(σωστο ειναι) μαλιστα ειναι περιττο νομιζω να χρησιμοποιεισ την μεταβλητη u. μπορεις να βαλεις αμεσως χ<--χdiv2 ...   (και εγω μαθητρια ειμαι και δεν απανταω με απολυτη σιγουρια)
Κάποτε είχαμε χρόνο για τον εαυτό μας.
Σήμερα δεν έχουμε χρόνο για κανένα....
Αυτό το «Κάποτε», το έλεγαν ζωή..

Γιαννης Κ.

Ναι ακριβως την ιδια εξοδο εχουν!Ωστοσο το ενα ειναι γραμμενο σε ψευδογλωσσα και το αλλο σε κατι αλλο ( νομιζω το λενε γλωσσα ή κατι αλλο δεν τα εχω ξεκαθαρισει ακομα),απλως ανεφερα το δευτερο ετσι ωστε με ενα copy paste να το τρεξετε στον συγκεκριμενο ιστοτοπο που ανεφερα  :) :) Οσο για το υ εχεις δικιο απλως το χρησιμοποιησα ως βοητικη μεταβλητη  ::)

gthal

Σούπερ!
Δύο μαθητές δουλεύουν όσο οι καθηγητές κοιμούνται ακόμα :)
Και μάλιστα δουλεύουν καλά!
Σωστός ο αλγόριθμος Γιάννη, συμφωνώ (και επαυξάνω) με το σχόλιο της Ζωής
και ακόμα, αν το πρώτο είναι γραμμένο σε ΓΛΩΣΣΑ,
1) θα έπρεπε να ξεκινάει με τη δήλωση ΠΡΟΓΡΑΜΜΑ και να τελειώνει με ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
2) η μεταβλητή χ (η υ είπαμε έτσι κι αλλιώς δε χρειάζεται) πρέπει να είναι ακέραια. Να θυμάσαι, στους τελεστές div και mod οι τελεστέοι (και βέβαια και το αποτέλεσμα) είναι ακέραιοι
Φιλικά,
Γιώργος Θαλασσινός