Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επιλογής => Μήνυμα ξεκίνησε από: vaggelism στις 05 Νοε 2012, 04:04:03 ΜΜ

Τίτλος: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: vaggelism στις 05 Νοε 2012, 04:04:03 ΜΜ
Πως μετατρεπεται το παρακατω κομμάτι αλγοριθμου σε απλή δομή επιλογής;

Αν χ>0 τοτε
y<-550+z
Αλλιως
y<-500
Τελος_αν
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: evry στις 05 Νοε 2012, 04:29:01 ΜΜ
y<-500
Αν χ>0 Τότε y <- y + 50 + z

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

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

y <- 500 + (50 + z)*( 1 + χ/Α_Τ(χ) )/2
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: vaggelism στις 06 Νοε 2012, 12:00:11 ΠΜ
Απόλυτα σωστός evry,ευχαριστώ για τις extra πληροφορίες.
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: Gnirut στις 06 Νοε 2012, 01:32:47 ΠΜ
Παράθεση από: evry στις 05 Νοε 2012, 04:29:01 ΜΜ
y<-500
Αν χ>0 Τότε y <- y + 50 + z

γιατί όχι:

y<-500
Αν χ>0 τότε y<-550+z
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: evry στις 06 Νοε 2012, 12:31:01 ΜΜ
προφανώς και το παρακάτω είναι σωστό και με το σκεπτικό αυτό η παρακάτω επιλογή

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

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

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

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

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

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

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

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




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

y<-500
Αν χ>0 τότε y<-550+z
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: fof στις 20 Νοε 2012, 10:35:27 ΜΜ
Αν χ <= 0 τότε
        δ<-- 0
τέλος_αν
κ <-- δ + 550

τι λέτε γι αυτή την λύση;
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: Λευτέρης Δουκέρης στις 21 Νοε 2012, 09:26:13 ΜΜ
καλησπέρα fof. πανέξυπνη και ολόσωστη και αυτή η λύση. Μπράβο στον μαθητή σου που την σκέφτηκε! βέβαια η λύση
Υ <- 500
Αν χ>0 τοτε
Υ<- Υ+z
Τελος_αν
είναι μια ολόσωστη αλλά "τετριμένη" λύση (δηλ λύση που "διδάσκεται" μέσα στην τάξη )
Τίτλος: Απ: Μετατροπή σε Απλή δομή επιλογής
Αποστολή από: gthal στις 23 Νοε 2012, 01:54:00 ΠΜ
Εγώ δεν καταλαβαίνω αυτή τη λύση fof.
Θα με διευκόλυνε αν μέναμε με τις μεταβλητές x, y, και z που έχει το αρχικό τμήμα αλγορίθμου για να καταλάβω τις αντιστοιχίες.
Από ότι καταλαβαίνω πάντως, το τμήμα αυτό έχει σαν έξοδο κάποιον κ, που άλλοτε έχει την τιμή 550 και άλλοτε την τιμή 550 συν κάποιο δ
ενώ το αρχικό τμήμα αλγορίθμου έχει σαν έξοδο την y που άλλοτε έχει την τιμή 500 και άλλοτε την τιμή 550 συν κάποιο z
Δε βλέπω πώς αυτά είναι ισοδύναμα... :-\