Μετατροπή σε Απλή δομή επιλογής

Ξεκίνησε από vaggelism, 05 Νοε 2012, 04:04:03 ΜΜ

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

vaggelism

Πως μετατρεπεται το παρακατω κομμάτι αλγοριθμου σε απλή δομή επιλογής;

Αν χ>0 τοτε
y<-550+z
Αλλιως
y<-500
Τελος_αν

evry

#1
y<-500
Αν χ>0 Τότε y <- y + 50 + z

Η ιδέα είναι να παρατηρήσεις ποιο τμήμα εντολών είναι κοινό και στις δύο περιπτώσεις και να το βγάλεις έξω από τη δομή επιλογής.
Εδώ ουσιαστικά έπρεπε να παρατηρήσεις ότι το y θα γίνει 500 και στις 2 περιπτώσεις αλλά στην μια θα προσθέσεις και κάτι.

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

y <- 500 + (50 + z)*( 1 + χ/Α_Τ(χ) )/2
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

vaggelism

Απόλυτα σωστός evry,ευχαριστώ για τις extra πληροφορίες.

Gnirut


evry

#4
προφανώς και το παρακάτω είναι σωστό και με το σκεπτικό αυτό η παρακάτω επιλογή

Αν συνθήκη τότε
   Εντολές1
Αλλιώς
   Εντολές2
Τέλος_Αν

μπορεί να γραφτεί

Εντολές1
Αν όχι συνθήκη τότε Εντολές2

εφόσον οι Εντολές1, Εντολές2 είναι ανεξάρτητες μεταξύ τους

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

Αν συνθήκη τότε
   Εντολές
   Εντολές1
Αλλιώς
   Εντολές
   Εντολές2
Τέλος_Αν

το οποίο γίνεται έτσι

Εντολές
Αν συνθήκη τότε
   Εντολές1
Αλλιώς
   Εντολές2
Τέλος_Αν




Παράθεση από: Gnirut στις 06 Νοε 2012, 01:32:47 ΠΜ
γιατί όχι:

y<-500
Αν χ>0 τότε y<-550+z
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

fof

Αν χ <= 0 τότε
        δ<-- 0
τέλος_αν
κ <-- δ + 550

τι λέτε γι αυτή την λύση;

Λευτέρης Δουκέρης

καλησπέρα fof. πανέξυπνη και ολόσωστη και αυτή η λύση. Μπράβο στον μαθητή σου που την σκέφτηκε! βέβαια η λύση
Υ <- 500
Αν χ>0 τοτε
Υ<- Υ+z
Τελος_αν
είναι μια ολόσωστη αλλά "τετριμένη" λύση (δηλ λύση που "διδάσκεται" μέσα στην τάξη )
ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

gthal

Εγώ δεν καταλαβαίνω αυτή τη λύση fof.
Θα με διευκόλυνε αν μέναμε με τις μεταβλητές x, y, και z που έχει το αρχικό τμήμα αλγορίθμου για να καταλάβω τις αντιστοιχίες.
Από ότι καταλαβαίνω πάντως, το τμήμα αυτό έχει σαν έξοδο κάποιον κ, που άλλοτε έχει την τιμή 550 και άλλοτε την τιμή 550 συν κάποιο δ
ενώ το αρχικό τμήμα αλγορίθμου έχει σαν έξοδο την y που άλλοτε έχει την τιμή 500 και άλλοτε την τιμή 550 συν κάποιο z
Δε βλέπω πώς αυτά είναι ισοδύναμα... :-\
Φιλικά,
Γιώργος Θαλασσινός