Εντολή επίλεξε

Ξεκίνησε από Paros, 21 Σεπ 2004, 11:40:56 ΠΜ

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

Paros

Γεια και χαρά  

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

P.Tsiotakis

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

Με εκτίμηση,

xaidi

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

Σπύρος Δουκάκης

Στο σχολικό βιβλίο που διαθέτουμε δεν υπάρχει το διάγραμμα ροής της πολλαπλής επιλογής. Είναι άλλη μία παράλειψη.

Ωστόσο, υπάρχει διάγραμμα ροής κατάλληλο να παρουσιάσει την πολλαπλή δομή επιλογής.
Μεταβλητή
|
\/
τιμή1         τιμή2        τιμή3        τιμήn
εν1               εν2           εν3           ενn
|

Από τη στιγμή όμως που δεν υπάρχει στο βιβλίο δεν μπορεί και να εξεταστεί.

P.Tsiotakis

Σπύρο,

το διάγραμμα στη σελίδα 36 του σχολικού βιβλίου τι είναι ;

Σπύρος Δουκάκης

Διόρθωση
Στο σχολικό βιβλίο που διαθέτουμε δεν υπάρχει το διάγραμμα ροής της πολλαπλής επιλογής Επίλεξε...Τέλος_επιλογών, αλλά μόνο της πολλαπλής επιλογής
Αν σ1 τότε εν1
αλλιώς_αν σ2 τότε εν2
...
αλλιώς εναλλιώς
Τέλος_αν
Είναι άλλη μία παράλειψη.
Ωστόσο, υπάρχει διάγραμμα ροής κατάλληλο να παρουσιάσει την πολλαπλή δομή επιλογής Επίλεξε.  

Μεταβλητή
|
\/
τιμή1    τιμή2   τιμή3   τιμήn
εν1     εν2      εν3      ενn
|

Από τη στιγμή όμως που δεν υπάρχει στο βιβλίο δεν μπορεί και να εξεταστεί.  

Ευχαριστώ Παναγιώτη...

alkisg

#6
Σπύρο για να είμαι ειλικρινής δεν είμαι σίγουρος για το τι ακριβώς περιγράφει το σχήμα σου (λόγω του ότι είναι text), οπότε «ανέβασα» εικόνες για να το συζητήσουμε καλύτερα.

Το βιβλίο στην σελίδα 36 έχει την Αν ... αλλιώς_αν ... αλλιώς ... Τέλος_αν:


Εσύ, αν κατάλαβα καλά λες ότι η Επίλεξε δίνεται από το παρακάτω λογικό διάγραμμα:


ΑΝ [smiley=cwm1.gif] λοιπόν κατάλαβα καλά, διαφωνώ, αφού δεν επιτρέπεται ένας αλγόριθμος να διακλαδωθεί σε πολλές ταυτόχρονες ροές προγράμματος (μετά το μεταβλητή) ώστε να κάνει Ν συγκρίσεις εν παραλλήλω. Κάτι τέτοιο είναι δυνατό μόνο σε παράλληλα συστήματα με πολλούς επεξεργαστές (και φυσικά δεν μιλάμε για τέτοια).

Συμφωνώ με τον Παναγιώτη ότι το λογικό διάγραμμα της Επίλεξε ταυτίζεται με της Αν ... αλλιώς_αν ... αλλιώς ... Τέλος_αν (σελ. 36 βιβλίου). Ο υπολογιστής θα ελέγξει σειριακά τις συνθήκες και θα εκτελέσει μόνο την πρώτη που ικανοποιείται. Αντίθετα, με το λογικό διάγραμμα που προτείνεις θα εκτελούσε παράλληλα όλες τις «ΠΕΡΙΠΤΩΣΗ» στις οποίες θα ανήκε η μεταβλητή, αν υποθέσουμε ότι μπορεί να ικανοποιεί περισσότερες από μία.

Φιλικά,
Άλκης

P.Tsiotakis

#7
Παιδιά το βιβλίο είναι ξεκάθαρο:

Δομή πολλαπλής επιλογής είναι η Αν...Αλλιώς_Αν...Τέλος_Αν και το διάγραμμα ροής είναι αυτό της σελίδας 36

Λέει στο τέλος της σελίδας 36 (στην παράγραφο δομές πολλαπλής επιλογής) οτι μπορούμε να χρησιμοποιήσουμε το σχήμα Επίλεξε ... για πολλές περιπτώσεις. Άρα οι δυο δομές είναι εναλλακτικές και το διάγραμμα ροής που περιγράφει τη μια περιγράφει και την άλλη

Στην δομή επίλεξε όπως λέει και ο Άλκης ο έλεγχος των συνθηκών γίνεται διαδοχικά, μέχρι να εντοπίσει κάποια που να ικανοποποιείται ή να πάει στο άλλιώς (αν υπάρχει).

Συνεπώς από όλες τις απόψεις το διάγραμμα της σελ 36 είναι το σωστό, καλύπτει και το επίλεξε και μπορεί να εξεταστεί

Είναι το διάγραμμα ροής για την δομή πολλαπλής επιλογής και η Επίλεξε είναι δομή πολλαπλής επιλογής

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


Με εκτίμηση,

alkisg

#8
Το έψαξα λίγο και στην βιβλιογραφία και βρήκα τρεις μορφές αναπαράστασης της Επίλεξε: τις δύο που φαίνονται στις εικόνες παραπάνω και μία ακόμα που φαίνεται στις εικόνες παρακάτω (διαγράμματα ροής και δομής):


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

Φιλικά,
Άλκης

P.Tsiotakis

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

Αυτό που εγώ θέλω να τονίσω είναι οτι το διάγραμμα ροής της σελίδας 36 αρκεί για να περιγράψει τη δομή επίλεξε, δε χρειάζεται άλλο

Με εκτίμηση,

Σπύρος Δουκάκης

Το σχήμα σε text που εννοούσα Άλκη είναι το σχήμα 1 που έχεις στείλει στο msg 10/10 10:35 am. Αυτό που έχεις βάλει στο Msg Οκτώβριος 9th, 2004, 5:54pm είναι προφανώς λάθος...

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

Θέτω ερώτημα: Ποιο είναι το διάγραμμα ροής της Για;

gpapargi

Γεια χαρά

Νομίζω ότι Άλκης και Σπύρος δε διαφωνούν απαραίτητα με αυτά που λένε. Ο Σπυρος δεν είπε ότι στο διάγραμμα με την πολλαπλή διακλάδωση σημαίνει ότι εκτελούνται παράλληλα όλα τα κλαδιά. Νομίζω ότι θεωρεί την επίλεξε σαν μια ερώτηση με πολλές πιθανές απαντήσεις από τις οποίες επιλέγεται και εκτελείτε μόνο η μία. Ενώ φανταζόμαστε την αν τότε αλλιώς_αν σαν πολλές ερωτήσεις που η κάθε μια δέχεται απάντηση ναι η όχι. Αν και στην επίλεξε κατά την εκτέλεση του προγράμματος ελέγχονται σειριακά μία μία οι συνθήκες, ένας προγραμματιστής (που έχει φροντίσει  μην υπαρχουν επικαλύψεις στις περιπτώσεις), μπορεί σε αφαιρετικό επίπεδο (όπως είναι το διάγραμμα ροής) να φαντάζεται την επίλεξε σαν μια ερώτηση με πολλές πιθανές απαντήσεις.

Η αν τοτε αλλιως_αν έχει μια λίγο περίεργη ιστορία. Προφανώς κατάγεται από την if then else των γλωσσών προγραμματισμού. Αρχικά η υλοποίηση των πολλών επιλογών γινόταν με φωλιασμένες  if then else.
Δηλαδή

If <συνθ1 >then
         else if <συνθ2> then
                         else if <συνθ3> then

που  βέβαια δίνει ένα κώδικα δυσανάγνωστο. Οι προγραμματιστές χωρίς να αλλάξουν τίποτε «τράβηξαν» έξω τα else και άλλαξαν τη στοίχιση δηλαδή
if <συνθ1> then
else if <συνθ2>then
else if <συνθ3>then

που δίνει πιο ευανάγνωστο κώδικα. Έτσι δημιουργήθηκε η elsif εντολή και ενσωματώθηκε.
Επειδή η elsif εντολή έχει τις ρίζες της στην κλασική if then else που ισοδυναμεί με μια ερώτηση που παίρνει 2 πιθανές απαντήσεις, έτσι φανταζόμαστε και τις πολλές  elsif σαν πολλές ερωτήσεις που η κάθε μια παίρνει 2 πιθανές απαντήσεις.
Η αν. . . τοτε. . .  αλλιώς_αν είναι ισοδύναμη με την επίλεξε. Ότι κάνεις με τη μια κάνεις και με την άλλη. Αλλά είτε τη δεις αφαιρετικά, είτε με τον τρόπο που εκτελείτε το πρόγραμμα, ισοδυναμεί με πολλές ερωτήσεις που η καθε μια δέχεται 2 πιθανές απαντήσεις. Η επίλεξε αν τη δεις με τον τρόπο που εκτελείτε το πρόγραμμα ισοδυναμεί και αυτή πολλές ερωτήσεις που η καθε μια παίρνει 2 πιθανές απαντήσεις, ενώ αν τη δεις αφαιρετικά έχεις δικαίωμα να τη δεις σα μια ερώτηση με πολλές πιθανές απαντήσεις.
Γι αυτό λέω ότι δε διαφωνειτε απαραίτητα. Νομίζω ότι αλλάζει απλά ο τρόπος με τον οποίο αντιλαμβάνεστε την εντολή. Ο ένας τη βλέπει από τη σκοπιά εκτέλεσης του προγράμματος και ο άλλος πιο αφαιρετικά.
Δεν ξέρω αν γίνομαι κατανοητός γιατί είναι λίγο λεπτό αυτό που λέω.        

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

Snicker

Το καφέ βιβλίο (...όταν είχαμε δύο βιβλία), παρουσιάζει σαν διάγραμμα ροής της Επίλεξε αυτό που λέει ο Σπύρος. Αν λοιπόν τότε τα παιδιά μπορούσαν να το γράψουν στις πανελλήνιες...