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

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

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

olga_ath

Χαίρεται

επειδή μόλις τώρα κάνω τα πρώτα μου βήματα στην εκπαίδευση του προγραμματισμού θα ήθελα να ζητήσω την γνώμη σας όσον αφορά την σαφήνεια της παρακάτω εκφώνησης : Να αναπτύξετε πρόγραμμα  το οποίο θα ζήτάει από τον χρήστη έναν αριθμό και θα του εμφανίζει πόσες φορές διαιρείται ακριβώς με το 2.[/b]

Η δική μου αίσθηση διαβάζοντας αυτή την εκφώνηση είναι ότι το πρόγραμμα, στην περίπτωση που θα δωθεί ένας περιττός αριθμός δεν πρέπει να μπαίνει καθόλου σε βρόχο επανάληψης γιατί ένας περιττός δεν διαίρειται ακριβώς με το 2. Παρακαλώ διορθώστε με αν κάνω λάθος.

ευχαριστώ

Ολγα

ευχαριστώ θερμά

Ολγα
Doubt everyone and first of all yourself

P.Tsiotakis

θα μπορούσε και:

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

(εβγαλα το "του")

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

Η γνώμη μου είναι ότι όντως υπάρχει πρόβλημα στη σαφήνεια... Δηλαδή αν δεν σχολίαζες τα περί βρόχου εγώ δεν θα καταλάβαινα ότι κολλάει σε δομή επανάληψης!

Βέβαια ακόμα δεν καταλαβαίνω τι λύση θέλεις...

Ο αριθμός  μπορεί να είναι και αρνητικός ή/και πραγματικός (βέβαια τότε δεν θα μίλαγες για περιττό!);

Δηλαδή αν είναι περιττός τι θέλεις να εμφανίζει;

olga_ath

καταρχάς σας ευχαριστώ και τους δύο για τις απαντήσεις σας :-).

Δεν είμαι η δημιουργός της ασκησης, την βρήκα στο net και η κύρια απορία μου είναι: αν είναι περιττός τότε δεν πρέπει να μπει στο βρόχο γτ κανένας περιττός  ΔΕΝ διαιρείται ακριβώς με το 2.

Παραθέτω παρακάτω την εκφώνηση αυτούσια και την λύση που προτείνετε περιμένοντας τις απόψεις σας.

Εκφώνηση
Ο χρήστης θα δώσει έναν αριθμό και εμείς πρέπει να του εμφανίσουμε πόσες φορές διαιρείται ακριβώς με το 2

Λύση
Για να το πετύχουμε αυτό, χρησιμοποιούμε τους αριθμητικούς τελεστές DIV και MOD. Ο DIV μας δίνει το πηλίκο, δηλαδή 7 DIV 3 = 2 και ο MOD μας δίνει το υπόλοιπο, δηλαδή 7 MOD 3 = 1. Όσον αφορά την δομή επανάληψης, επειδή δεν ξέρουμε πόσες επαναλήψεις θα γίνουν και μπορεί να μην γίνει και καμία (αν ο αριθμός είναι περιττός), επιλέγουμε την ΟΣΟ.

ΠΡΟΓΡΑΜΜΑ παραδειγμα
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: αριθμός, ι
ΑΡΧΗ
   ΔΙΑΒΑΣΕ αριθμός
   ι<--0
   ΟΣΟ αριθμός MOD 2 <> 0 ΕΠΑΝΑΛΑΒΕ
      αριθμός <-- αριθμός DIV 2
      ι<-- ι+1
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΓΡΑΨΕ ι
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ευχαριστώ εκ των προτέρων όλους όσους μπορούν να βοηθήσουν.
Doubt everyone and first of all yourself

lykos

Νομίζω πως η λύση είναι χειρότερη απ' την εκφώνιση!

Όλγα, στο net μπορεί ο καθένας (ή "ο κάθε πικραμένος") να γράφει ότι θέλει...

lykos

Συγγνώμη για το "εκφώνιση"! Ημουν βιαστικός... (και ήταν και στο τίτλο!...)

olga_ath

Ευχαριστώ πολύ @lykos γιατί με αυτή η εκφώνηση-λύση με έκανε να αμφιβάλλω για τις μαθηματικές μου γνώσεις.

περιττός είναι ένας αριθμός ο οποίος δεν διαιρείται ακριβώς με το δυο, σωστά;

πχ το γεγονός ότι το 35 διαιρείται με το 2 17 φορές ακριβώς δεν μας επιτρέπει να πούμε και γενικά ότι το 35 διαιρείται ακριβώς με το 2. Για την συγκεκριμένενη εκφώνηση δημιούργησα την παρακάτω λύση, η οποία δεν έχει πουθενά επανάληψη, μου διαφέυγει κάτι που πρέπει να γίνει επαναληπτικά;;;

!Περιέργη Εκφώνηση:
!Ο χρήστης θα δώσει έναν αριθμό
!και εμείς πρέπει να του εμφανίσουμε πόσες φορές διαιρείται ακριβώς με το 2


ΠΡΟΓΡΑΜΜΑ Διαίρεση_με_το_2
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
  ΔΙΑΒΑΣΕ x
  ΑΝ ((x mod 2)<> 0) ΤΟΤΕ
    ΓΡΑΨΕ   'Ο αριθμός', x, 'δεν διαίρειται ακριβώς με το 2'
  ΑΛΛΙΩΣ
    ΓΡΑΨΕ  'Ο αριθμός',  x, 'διαίρειται ακριβώς με το 2', (x div 2), 'φορές'
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Διαίρεση_με_το_2


ΥΣ Η ορθογραφία δεν είναι και μένα το δυνατό μου σημείο  ;) γιαυτό υπάρχουν spellchekers !!!

ευχαριστώ
Doubt everyone and first of all yourself

gthal

Όλγα,
για το ότι το 35 δια του 2 δίνει πηλίκο 17, δεν λέμε ότι "το 35 διαιρείται 17 φορές με το 2".
Λέμε, ίσως, ότι το 2 "χωράει" 17 φορές στο 35 αλλά νομίζω δε ζητάει αυτό η άσκηση.
Στην ουσία το 35 δεν διαιρείται καμιά φορά με το 2 (ούτε μία  :) ) και εξηγώ:

Η δική μου αντίληψη για την άσκηση που παραθέτεις είναι η εξής:
πόσες φορές μπορώ να διαιρέσω τον αριθμό δια του 2 (εννοώντας να διαιρέσω ακριβώς)
καλύτερα με παραδείγματα:
Α) το 8 διαιρείται 3 φορές με το 2 γιατί 8 δια 2 δίνει 4, 4 δια δύο δίνει 2, και τέλος 2 δια 2 δίνει 1 (που δεν διαιρείται περισσότερο)
Β) το 12 διαιρείται 2 φορές με το 2 γιατί 12 δια 2 δίνει 6, και 6 δια δύο δίνει 3 που δεν διαιρείται περισσότερο (με το 2 πάντα)
Γ) το 15 δεν διαιρείται καμία φορά με το 2
Δ) το 34 διαιρείται μία φορά με το 2  γιατί δίνει 17 που δεν διαιρείται άλλο

Η λύση σαφώς θα έχει επανάληψη: όσο ο αριθμός διαιρείται με το 2, τον διαιρείς
(υποθέτω θέλεις να τη δοκιμάσεις οπότε δεν σου τη στέλνω  ;) )
Φιλικά,
Γιώργος Θαλασσινός

za√‘ag

#8
Και εγώ συμφωνώ με τον gthal

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

ΟΣΟ αριθμός MOD 2 = 0 ΕΠΑΝΑΛΑΒΕ


ΥΓ

Στην εκφώνηση λέει: θα του εμφανίζει πόσες φορές διαιρείται ακριβώς με το 2 δεν λέει να ελέγξει αν είναι άρτιος ή περιττός αλλά υπάρχει η ασάφεια με το "χωράει ακριβώς το 2 στον αριθμό" ... είναι αρκετά ασαφής εκφώνηση
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

gpapargi

#9
Κι εγώ αυτό που καταλαβαίνω είναι πόσες φορές ο αριθμός έχει το 2 για παράγοντα. Με άλλα λόγια αν ο αριθμός αναλυθεί σε γινόμενο πρώτων παραγόντων πόσες φορές είναι παράγοντας ο 2.
Ίσως θα μπορούσε να διατυπωθεί και ως εξής: "ποια είναι η μέγιστη δύναμη του 2 που δεν ξεπερνάει τον αριθμό;"

Μια ενδιαφέρουσα (ελπίζω) παρατήρηση είναι ότι αν ο αριθμός ήταν στο δυαδικό σύστημα η λύση θα ήταν ορατή δια γυμνού οφθαλμού.  Θα ήταν το πλήθος των συνεχόμενων μηδενικών στο τέλος του  ;)

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

Παράθεση από: gpapargi στις 09 Δεκ 2009, 09:10:45 ΠΜ
Μια ενδιαφέρουσα (ελπίζω) παρατήρηση είναι ότι αν ο αριθμός ήταν στο δυαδικό σύστημα η λύση θα ήταν ορατή δια γυμνού οφθαλμού.  Θα ήταν το πλήθος των συνεχόμενων μηδενικών στο τέλος του  ;)

Τι εννοείς;

gpapargi

Ένας αριθμός στο δυαδικό σύστημα έχει μόνο άσσους και μηδενικά. Αν τελειώνει σε 0 είναι άρτιος λόγω του ότι ο όρος α0*2^0 (της αναπαράσης α0*2^0 + α1*2^1 + α2*2^2 ...) είναι 0.

Αν του κάνεις διαίρεση με 2 απλά φεύγει το 0 (δεξιά ολίσθηση). Αν αυτό το κάνεις συνέχεια μπορείς να διαιρέσεις με 2 τόσες φορές όσα είναι τα μηδενικά στο τέλος.

Είμαστε αρκετά εξοικιωμένοι με αυτό στο δεκαδικό σύστημα αρίθμησης. Διαίρεση με 10 κάνεις απλά σβήνοντας το μηδενικό στο τέλος. Μπορείς πόσες φορές είναι παράγοντας το 10 απλά μετρώντας τα μηδενικά στο τέλος. Δεν αλλάζει κάτι παρά η βάση του συστήματος αρίθμησης. Αν βάλεις ένα μηδενικό στο τέλος ουσιαστικά πολλαπλασιάζεις με τη βάση του συστήματος αρίθμησης (με 10 στο δεκαδικό, με 2 στο δυαδικό). Τους λέω διάφορα τέτοια στον πολλαπλασιασμό αλά ρωσικά... έτσι για να φτιάξουμε ατμόσφαιρα :) (εννοείται πάντα σε όσους μπορούν να τα καταλάβουν και γουστάρουν). 

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

Γιώργο καταλαβαίνω όσα εξηγείς, αλλά αυτά δεν... εξηγούν την αρχική σου πρόταση!

Δηλαδή το σκεπτικό σου νομίζω ότι δεν ισχύει και ανάποδα. Π.χ. ο αριθμός 1111111110 προφανώς ΔΕΝ διαιρείται μόνο μία φορά με το 2 επειδή έχει ένα μόνο μηδενικό στο τέλος!!!

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

Εξαρτάται βέβαια πώς ερμηνεύουμε το "ακριβώς"...  :(

gpapargi

Παράθεση από: Νίκος Αδαμόπουλος στις 09 Δεκ 2009, 01:48:08 ΜΜ
Γιώργο καταλαβαίνω όσα εξηγείς, αλλά αυτά δεν... εξηγούν την αρχική σου πρόταση!

Δηλαδή το σκεπτικό σου νομίζω ότι δεν ισχύει και ανάποδα. Π.χ. ο αριθμός 1111111110 προφανώς ΔΕΝ διαιρείται μόνο μία φορά με το 2 επειδή έχει ένα μόνο μηδενικό στο τέλος!!!

Δεν καταλαβαίνω. Το 1111111110 είναι το 1022. Μια φορά διαιρείται με το 2. Μετά μένει 511. Δεν έχει άλλο 2αρι μέσα του το 1022. Μήπως λέμε κάτι άλλο;

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 οι τελεστέοι (και βέβαια και το αποτέλεσμα) είναι ακέραιοι
Φιλικά,
Γιώργος Θαλασσινός

za√‘ag

Τελικά η λύση που βρήκε η Όλγα εδώ (https://alkisg.mysch.gr/steki/index.php?topic=2472.msg20247#msg20247) είναι σωστή αρκεί να διορθώσει τη γραμμή 7 στην παρακάτω

ΟΣΟ αριθμός MOD 2 = 0 ΕΠΑΝΑΛΑΒΕ

Δηλ. η λύση:

ΠΡΟΓΡΑΜΜΑ παραδειγμα
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: αριθμός, ι
ΑΡΧΗ
   ΔΙΑΒΑΣΕ αριθμός
   ι<--0
   ΟΣΟ αριθμός MOD 2 = 0 ΕΠΑΝΑΛΑΒΕ
      αριθμός <-- αριθμός DIV 2
      ι<-- ι+1
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΓΡΑΨΕ ι
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

Γιαννης Κ.

Εχω καποιες ενστασεις!   ??? Ο καθηγητης που με κανει ιδιαιτερο  :police:  απο την αρχη του μαθηματος μου εμαθε να χρησιμοποιω αλγοριθμο οπως το χρησιμοποιησα στην 1η λυση που εδωσα, δεν μου εχει αναφερει καθολου ΠΡΟΓΡΑΜΜΑ,ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ  θεωρει οτι με τον αλγοριθμο καλυπτω ολες τις περιπτωσεις  :-\

gthal

Γιάννη,
ο αλγόριθμός όντως είναι σωστός και σε καλύπτει στις περισσότερες τον περιπτώσεων (οι πιο έμπειροι συνάδελφοι ας με συμπληρώσουν/διορθώσουν εδώ)
Εντούτοις, αν η άσκηση λέει ρητά "να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ" τότε είμαστε υποχρεωμένοι να ακολουθήσουμε τους συντακτικούς κανόνες της συγκεκριμένης γλώσσας προγραμματισμού (όπως συμβαίνει με κάθε γλώσσα προγραμματισμού στην οποία επιλέγουμε να γράψουμε το πρόγραμμά μας)

Ένας από αυτούς του κανόνες για τη ΓΛΩΣΣΑ είναι η δήλωση των μεταβλητών που σωστά έκανες και με το συγκεκριμένο τρόπο που το έκανες,
ένας άλλος είναι ότι το εκτελέσιμο κομμάτι του κώδικα ξεκινάει με την εντολή ΑΡΧΗ (που επίσης έγραψες σωστά)
και ένας ακόμα είναι το ΠΡΟΓΡΑΜΜΑ - ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

(αναρωτιέμαι, αν δεν έχεις διδαχθεί καθόλου ΓΛΩΣΣΑ πώς ήξερες τους δύο πρώτους κανόνες που αναφέρω?  ???)
Φιλικά,
Γιώργος Θαλασσινός

Γιαννης Κ.

Χμμ  εγω σε ολες τις ασκησεις ανεξαρτητως τη ζητουν χρησιμοποιω τα εξης:
Αλγοριθμος παραδειγμα
Μεταβλητες
(Πραγματικες,Χαρακτηρες,Ακεραιες κτλπ ανολογα τη ζηταει η ασκηση)
Αρχη
(Εντολες)
Τελος παραδειγμα

Τωρα αμα αυτο ειναι γλωσσα ή ψευδογλωσσα δεν ξερω ακριβως!!Συμφωνα με τον καθηγητη μου ειναι σωστο και καπου αναφερετε στο βιβλιο στα τελευταια κεφαλαια  :-\

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

... είναι ένας συνδυασμός ΓΛΩΣΣΑΣ και Ψευδογλώσσας...

gthal

ακριβώς !
.. ή να το θέσω και αλλιώς: τίποτα από τα δύο  >:D

Σε παραπέμπω λοιπόν κι εγώ στις τελευταίες σελίδες : Κεφ7, Παράγρ 7.10 (αν θες διάβασε λίγο και την εισαγωγή του κεφαλαίου)

Πάντως βρε Γιάννη μου, χωρίς να θέλω να θίξω κανέναν, και με πραγματική διάθεση να βοηθήσω,   :angel:
δύο τινά συμβαίνουν: 
ή ο καθηγητής σου σού τα έχει μπερδέψει
ή εσύ τα έχεις μπερδέψει μεταξύ τους  ::)

σε κάθε περίπτωση, ρώτησέ τον να ξεκαθαρίσετε ποια η διαφορά ΓΛΩΣΣΑΣ και ψευδογλώσσας
σίγουρα δεν είναι ένα πράγμα, είναι δύο πράγματα  με κάποιες διαφορές μεταξύ τους  :)
Φιλικά,
Γιώργος Θαλασσινός

Γιαννης Κ.

Sorry εχουμε ξεφυγει τελειως απο το κυριο θεμα  :(

Ωστοσο ολα τα παιδια στο σχολειο μου και γενικα (Νομος Φθιωτιδας : Λαμια ) χρησιμοποιουμε αυτη την μεθοδο,,,,,,,
Και ο καθηγητης μου κανει μαθημα πανω απο 10 χρονια  :o θα περιμενω και τις απαντησεις αλλων καθηγητων κατα ποσο ειναι σωστη αυτη η μεθοδος....ειναι κριμα να χανουμε μορια απο ασαφειες του βιβλιου ή των καθηγητων μας ... Θα επικοινωνησω με τον καθηγητη μου και θα απαντησω εχοντας περισσοτερες   :)

gthal

Όντως έχουμε ξεφύγει λίγο, γιαυτό εγώ θα σταματήσω κάπου εδώ, γατί θα επαναλαμβάνομαι.
Αν πράγματι όλοι στο σχολείο σου και στο νομό Φθιώτιδας χρησιμοποιείτε αυτή την υβριδική (2 σε 1) γλώσσα, εγώ ανησυχώ   :o

Και πάλι όσα γράφω είναι σύμφωνα με το πώς αντιλαμβάνομαι εγώ τα πράγματα και μπορεί να είναι λάθος. Ελπίζω κι εγώ  να έχεις απαντήσεις και από άλλους συναδέλφους για να σχηματίσεις μια πιο σφαιρική εικόνα (και να αναθεωρήσω κι εγώ αν χρειάζεται).

Θέλω οπωσδήποτε να τονίσω ότι, λέγοντας ότι σου τα είπε μπερδεμένα, δεν αμφισβητώ την εμπειρία και την ικανότητα του καθηγητή σου. Εγώ ο ίδιος συλλαμβάνω τον εαυτό μου να παρουσιάζω κάποια πράγματα συγκεχυμένα είτε γιατί είμαι σε κακή μέρα (άνθρωποι είμαστε) είτε γιατί επιφυλάσσω εκτενέστερη αναφορά στο μέλλον και αυτό δε με κάνει ανίκανο καθηγητή (ελπίζω  ;))
Μου έχει συμβεί όμως και το ανάποδο: να έχει μαλλιάσει η γλώσσα μου να τονίζω επανειλημμένα διαφορές και επικίνδυνα σημεία και να παίρνει μήνες να συνειδητοποιήσουν οι μαθητές τι εννοώ. Θεωρώ και στη δική σας περίπτωση πιθανή αυτή την εκδοχή.  :)  - μη με παρεξηγείς please :)

Χαίρομαι που μπήκες στο Στέκι και το ψάχνεις γενικά πράγμα και ελπίζω να σε βλέπουμε συχνά.
Ελπίζω επίσης τελικά να έχω βοηθήσει (θα λυπηθώ αν σε έχω μπερδέψει περισσότερο)
Καλή σου συνέχεια και θα τα λέμε  :)
Φιλικά,
Γιώργος Θαλασσινός

zwoula

νομιζω δεν υπαρχει κατι τετοιο στο βιβλιο.....  ! πιστευω ομως οτι δεν εχει σημασια πως τα παρουσιαζουμε αλλα τι παρουσιαζουμε....
Κάποτε είχαμε χρόνο για τον εαυτό μας.
Σήμερα δεν έχουμε χρόνο για κανένα....
Αυτό το «Κάποτε», το έλεγαν ζωή..

toufeki

..συμφωνώ. Για να πεις ένα πράγμα(αλγόριθμο) μπορείς να χρησιμοποιήσεις έναν από τους πολλούς κώδικες που υπάρχουν και θα είσαι σωστή, αρκεί να εφαρμόζεις τους κανόνες του κώδικα που επέλεξες να χρησιμοποιήσεις.
Τώρα αν κληθείς  να απαντήσεις ένα θέμα στις πανελλαδικές για παράδειγμα, εκεί τα πράγματα είναι λίγο πιο σύνθετα. Εκεί σου δίνουν το όνομα του κώδικα που πρέπει να χρησιμοποιήσεις(και έχεις διδαχθεί βέβαια) και πρέπει να το κάνεις διότι αλλιώς σου κόβουν μονάδες.
Βέβαια θα μπορούσες να περιγράψεις με λεπτομέρειες τα χαρακτηριστικά κάποιου άλλου κώδικα και στη συνέχεια να χρησιμοποιήσεις αυτόν για την λύση του θέματος.
Έτσι δεν μπορεί κανείς να σου κόψει μονάδες.
Έχεις όμως τον χρόνο να το κάνεις; :-\

zwoula

δεν εχουν ολοι οι διορθωτες την υπομονη και τον χρονο να κοιταν με λεπτομερεια καθε γραπτο οποτε ειναι καλο οταν κανεισ κατι διαφορετικο αλλα παρ'ολα αυτα σωστο να το εξηγεις απο κατω η στα πλαγια!!! (γιατι ετσι κανουν οι σωστοι προγραμματιστες)
Κάποτε είχαμε χρόνο για τον εαυτό μας.
Σήμερα δεν έχουμε χρόνο για κανένα....
Αυτό το «Κάποτε», το έλεγαν ζωή..

Laertis

Αγαπητέ Γιάννη το 1ο παράδειγμα που έγραψες αποτελεί μια υβριδική μορφή αλγορίθμου και προγράμματος που δεν αναφέρεται πουθενά στο βιβλίο. Η δεύτερη λύση που έδωσες είναι διατυπωμένη αλγοριθμικά  σε κωδικοποίηση (ψευδογλώσσα) ενώ η δεύτερη θα έπρεπε να ακολουθήσει του κανόνες σύνταξης προγράμματος σε ΓΛΩΣΣΑ (Κεφ. 7). Για να πάμε στην ουσία αν έδινες την 1η λύση σε θέμα των εξετάσεων δε θα έπρεπε να ληφθεί ως λάθος (υπάρχουν πολλά περισσότερα λάθη που μας ενδιαφέρουν να μην γίνονται και κόβουν μονάδες και αφορούν τη λειτουργία του αλγορίθμου).
Παρόλα αυτά με εντυπωσιάζει το γεγονός ότι ο καθηγητής που σου κάνει ιδιαίτερο χρησιμοποιεί - και δικαιολογεί μάλιστα - έναν τρόπο που δεν αναφέρεται στο βιβλίο διδάσκοντας 10 χρόνια το αντικείμενο. Είναι καθηγητής της Μέσης Εκαπίδευσης ; Διδάσκει σε σχολείο ; Δεν θέλω μειώσω τις ικανότητές του αλλά αν δίδασκε 10 χρόνια το μάθημα δε θα έπρεπε να υποστηρίζει αυτή τη μέθοδο. Εγώ το 1ο πράγμα που θα ρωτούσα θα ήταν να μου υποδείξει που αναφέρει το βιβλίο αυτη την μείξη αλγορίθμου με πρόγραμμα .
Επειδή η εξέταση στο μάθημα γίνεται με βάση το βιβλίο και όχι με τι μπορεί να υποστηρίζει ο καθένας απο εμάς, καλό είναι να ακολουθούνται οι κανόνες που θέτει το βιβλίο είτε συμφωνούμε είτε διαφωνούμε με αυτά.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

P.Tsiotakis

Όπως ο σοφός Laertis αναφέρει δεν είναι λάθος. Απλά, στο κεφάλαιο 10 (Υποπρογράμματα) θα γράφετε μόνο σε ΓΛΩΣΣΑ, άρα θα τη μάθεις και αυτή αναγκαστικά. Ο καθηγητής σου μάλλον θεωρεί πως με τον τρόπο που δουλεύει έρχεται πιο εύκολο σε σας τους μαθητές.

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

gthal

Γιώργο και Παναγιώτη έχω μπερδευτεί:

η 2η λύση του Γιάννη, αν μου δινόταν ως αλγόριθμος σε ψευδογλώσσα θα έπαιρνε άριστα
η 1η λύση του, αν μου δινόταν ως αλγόριθμος σε ψευδογλώσσα θα ήταν δεκτή, θα του υποδείκνυα όμως διορθώσεις : "στον αλγόριθμο δε χρειάζεται να δηλώσουμε τις μεταβλητές" και θα υποψιαζόμουν ότι ο Γιάννης συγχέει στοιχεία από ΓΛΩΣΣΑ και ψευδογλώσσα
η 1η λύση του, αν μου δινόταν ως πρόγραμμα σε ΓΛΩΣΣΑ, θα είχε σαφή συντακτικά λάθη και άρα αφαίρεση βαθμών

Δεν συμφωνούμε ?
Φιλικά,
Γιώργος Θαλασσινός

ntzios kostas


Η παρουσίαση ενός αλγόριθμου δεν είναι κακό να περιέχει και τμήμα δηλώσεων. Μάλιστα σε μερικές περιπτώσεις είναι και υποχρεωτική η δήλωσή τους, αφού πρέπει με κάποιο τρόπο να ξέρει ο πρόγραμματιστής που θα τον κάνει πρόγραμμα τι τύπου είναι οι μεταβλητές του. Για παράδειγμα στον πολλαπλασιασμό αλά ρωσικά το βιβλίο πριν τον αλγόριθμο δηλώνει ότι οι μεταβλητές Μ1 και Μ2 είναι ακέραιες. Αν, λοιπόν, κάποιος τις δηλώσει (το αναφέρει δηλαδή)πριν τον αλγόριθμο όπως κάνει και το σχολικό ή τις δηλώσει όπως γίνεται και στη ΓΛΩΣΣΑ δεν υπάρχει πρόβλημα. Άραγε τι μας χαλάει στη λογική του αλγόριθμου.


Παράθεσηη 1η λύση του, αν μου δινόταν ως πρόγραμμα σε ΓΛΩΣΣΑ, θα είχε σαφή συντακτικά λάθη και άρα αφαίρεση βαθμών

Ένα μεγάλο πρόβλημα είναι κατα πόσο αξιολογούνται από όλους μας και κατά πόσο πρέπει να αξιολογούνται τα συντακτικά λάθη σε πρόγραμμα. Για παράδειγμα αν ένας μαθητής γράψει εμφάνισε αντί για γράψε θα του κόψω; Αν αντί το επανάλαβε το γράψει επανέλαβε θα του κόψω ;Αν στο τμήμα δηλώσεων γράψει αντί για ακέραιες:χ γράψει χ: ακέραιες θα του κόψω; Αν αντί για τέλος_προγράμματος γράψει απλά τέλος θα του κόψω;

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

zwoula

στον πολλαπλασιασμο αλα ρωσικα θα μπορουσε να χρησιμοποιει το div αντι να μασ λεει οτι ειναι ακεραιες. σωστα? απλα σε εκεινο το σημειο δεν εχουμε διδαχθει ακομη div kai mod..
Κάποτε είχαμε χρόνο για τον εαυτό μας.
Σήμερα δεν έχουμε χρόνο για κανένα....
Αυτό το «Κάποτε», το έλεγαν ζωή..

Laertis

Παράθεση από: zwoula στις 15 Δεκ 2009, 01:48:40 ΜΜ
στον πολλαπλασιασμο αλα ρωσικα θα μπορουσε να χρησιμοποιει το div αντι να μασ λεει οτι ειναι ακεραιες. σωστα? απλα σε εκεινο το σημειο δεν εχουμε διδαχθει ακομη div kai mod..

Σωστά zwoula.

Παράθεση από: gthal στις 15 Δεκ 2009, 12:48:27 ΜΜ
Γιώργο και Παναγιώτη έχω μπερδευτεί:

η 2η λύση του Γιάννη, αν μου δινόταν ως αλγόριθμος σε ψευδογλώσσα θα έπαιρνε άριστα
η 1η λύση του, αν μου δινόταν ως αλγόριθμος σε ψευδογλώσσα θα ήταν δεκτή, θα του υποδείκνυα όμως διορθώσεις : "στον αλγόριθμο δε χρειάζεται να δηλώσουμε τις μεταβλητές" και θα υποψιαζόμουν ότι ο Γιάννης συγχέει στοιχεία από ΓΛΩΣΣΑ και ψευδογλώσσα
η 1η λύση του, αν μου δινόταν ως πρόγραμμα σε ΓΛΩΣΣΑ, θα είχε σαφή συντακτικά λάθη και άρα αφαίρεση βαθμών

Δεν συμφωνούμε ?

Η λύση αυτή δε δόθηκε ως πρόγραμμα σε ΓΛΩΣΣΑ αλλά σαν αλγόριθμος με επιπλέον δήλωση μεταβλητών. Αυτό τουλάχιστον κατάλαβα εγώ. Οπότε ας μείνουμε σε αυτό. Αν ζητηθεί πρόγραμμα σε ΓΛΩΣΣΑ θα είναι μόνο στα υποπρογράμματα και όχι σε τόσο απλοϊκό πρόβλημα.
Οπότε ... συμφωνούμε ;  :)
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

gthal

Α, οκ. Κατάλαβα.  :)
Thanks

ΥΓ. πάντως, θα του συνιστούσαμε να προτιμάει τη 2η υλοποίηση για να μη ρισκάρει απώλειες μονάδων?
(βρίσκω το βιβλίο αρκετά τυπολατρικό και ως προς την ψευδογλώσσα - ή είναι δική μου αίσθηση ? )
Φιλικά,
Γιώργος Θαλασσινός

Laertis

Εγώ συνιστώ την αλγοριθμική προσέγγιση, αλλά νομίζω ότι και τα ίδια τα παιδιά, σε μεγάλη πλειοψηφία, αυτήν προτιμούν. Σπάνια βρίσκω παιδιά που προτιμούν την υλοποίηση ασκήσεων (στο χαρτί) σε ΓΛΩΣΣΑ και νομίζω ότι είναι προφανείς οι λόγοι (τμήμα δηλώσεων, αυστηρή σύνταξη και κανόνες). Η μόνη περίπτωση όπου δεν γίνεται αλλιώς είναι όταν γίνεται χρήση υποπρογραμμάτων.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

gthal

Συμφωνώ με όλα όσα γράφεις...

... αλλά ακόμα δε νιώθω ότι έχω πάρει απάντηση ακριβώς "to the point"
Να απλουστεύσω το ερώτημά μου:
α)  η 1η λύση του Γιάννη είναι σωστή ως Αλγόριθμος σε ψευδογλώσσα ?
β)  αν ναι, ποια από τις δύο του συνιστούμε να γράψει στις εξετάσεις ?
Φιλικά,
Γιώργος Θαλασσινός

P.Tsiotakis

Αν κάποιος γράψει απάντηση σε μια ερώτηση ανάπτυξης στο μάθημά μας στην καθαρεύουσα θα είναι σωστή ή λάθος;

gthal

χα χα  ;D
Παναγιώτη, εγώ λέω ότι και στα αρχαία αν τη γράψει, σωστή θα είναι   :)
και στα αγγλικά, και στα γερμανικά που λέει ο λόγος. (η αλήθεια δεν εξαρτάται από το μέσο διατύπωσής της)
Αρκεί να πέσει σε διορθωτή που θα είναι διατεθειμένος (και θα μπορεί) να κάνει τη μετάφραση.
Οπότε μιας και με προτρέπεις, δια της μαιευτικής μεθόδου, να απαντήσω μόνος μου στο ερώτημά μου:
α) ΝΑΙ
αναρωτιέμαι όμως  ... κανείς δεν παίρνει θέση ως προς το β) ερώτημα  :-\  ... είναι κάτι που χάνω εκεί ?
εγώ λέω
β) τη 2η

είμαι μέσα ?

(Σημ. Ευχαριστώ για τη βοήθειά σας. Ελπιζω να μην τό 'χω κουράσει το θέμα, ε?  ::) )
Φιλικά,
Γιώργος Θαλασσινός