Αλγοριθμικά κριτήρια (Ασάφεια διδακτικού πακέτου)

Ξεκίνησε από gpapargi, 09 Φεβ 2010, 11:35:14 ΠΜ

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

Αποτελούν οι εντολές εκχώρησης είσοδο για έναν αλγόριθμο;

Ναι
Όχι

tom

Παράθεση από: gpapargi στις 18 Φεβ 2010, 11:16:02 ΜΜ
Εγώ νομίζω ότι είχα καταλάβει ότι έλεγες αυτό. Ένας από τους λόγους που διαφωνούσα (περά από το πως αντιλαμβάνομαι την είσοδο) είναι ότι μια τέτοια εντολή αρχικοποίησης μπορεί να είναι υπάρχει σε ένα κώδικα 1000 γραμμών μόλις λίγες γραμμές πριν το τέλος. Τι νόημα έχει να μιλάμε για «επεξεργασία που θα ακολουθήσει από τον αλγόριθμο» αφού  αλγόριθμος έχει σχεδόν τελειώσει. Αυτές οι εντολές μπορεί να υπάρχουν οπουδήποτε. Δεν υπάρχουν ξεκάθαρα όρια πριν από τα οποία υπάρχουν αυτές οι εντολές και μετά από αυτές αρχίζει η επεξεργασία

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

Οπότε τότε θα είχε νόημα να μιλάμε για δεδομένα και επεξεργασία που θα ακολουθήσει από τον αλγόριθμο...

Η ερώτηση σου είναι θεωρητική/υποθετική άρα και η απάντηση  :)
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

pgrontas

Παράθεση από: gthal στις 18 Φεβ 2010, 11:57:43 ΜΜ
Μα βρε Παναγιώτη, δεν υπάρχουν ιδιαίτερες περιπτώσεις αρχικοποίησης. Όλες επηρεάζουν το αποτέλεσμα.
Υπάρχει αρχικοποίηση που δεν το επηρεάζει? (ή τότε όλες είναι ιδιαίτερες περιπτώσεις?)
Βρες μου ένα παράδειγμα όπου η αρχικοποίηση δεν θα επηρεάσει το αποτέλεσμα του αλγόριθμου. Βρες μου δηλ μία αρχικοποίηση που δεν είναι "ιδιαίτερη περίπτωση".
(αν βρεις, θα παραδεχθώ ολόψυχα ότι αυτή είναι ιδιαίτερη περίπτωση - όχι οι νορμάλ  ;)   ;D )
Αυτό που εννοώ είναι ότι αν θες να υπολογίσεις άθροισμα δεν έχεις πολλές επιλογές για αρχική τιμή. Θα βάλεις είτε 0 είτε τον πρώτο αριθμό. Αυτό εννοώ με το ιδιαίτερη περίπτωση. Αντίθετα, σε άλλους αλγορίθμους μία εκχώρηση μπορεί να έχει πολλές δυνατές αποδεκτές τιμές. Και βέβαια όλες επηρεάζουν το αποτέλεσμα.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

gthal

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

pgrontas

Παράθεση από: gthal στις 19 Φεβ 2010, 01:36:27 ΜΜ
Δώσε ένα παράδειγμα να καταλάβω ..
Δες το παράδειγμα που έδωσα πιο πάνω με τους τυχαίους αριθμούς.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

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

Παράθεση από: pgrontas στις 19 Φεβ 2010, 03:21:41 ΜΜ
Δες το παράδειγμα που έδωσα πιο πάνω με τους τυχαίους αριθμούς.

Πώς η γεννήτρια βγάζει κάθε φορά διαφορετικούς αριθμούς; Κάθε φορά που εκτελούμε από την αρχή το πρόγραμμα οι αριθμοί είναι όντως διαφορετικοί;

gpapargi

Παράθεση από: tom στις 19 Φεβ 2010, 03:31:02 ΠΜ
Αν υπάρχει εκεί που λες η εντολή αρχικοποίησης, μόλις λίγες γραμμές πριν το τέλος, σημαίνει ότι ο κώδικας  που ακολουθεί χρησιμοποιεί για πρώτη φορά το δεδομένο για να το επεξεργαστεί... και αφού ο κώδικας το χρησιμοποιεί για πρώτη φορά θα μπορούσε να είναι ανεξάρτητος από τoν προηγούμενο κώδικα, που επεξεργάζεται άλλα δεδομένα, ίσως ξεχωριστό υποπρόγραμμα. Εν τέλει θα μπορούσε να είναι και διαφορετικός αλγόριθμος.

Οπότε τότε θα είχε νόημα να μιλάμε για δεδομένα και επεξεργασία που θα ακολουθήσει από τον αλγόριθμο...

Η ερώτηση σου είναι θεωρητική/υποθετική άρα και η απάντηση  :)

Να ρωτήσω κάτι ακόμα: Αν χρησιμοποιώ πολλές φόρες το S<-0 σε πολλά σημεία του κώδικα πχ για να υπολογίσω πολλά αθροίσματα διαφορετικά μεταξύ τους (απλά χρησιμοποιώ σε όλα το ίδιο όνομα για τον αθροιστή) είναι κάθε φορά είσοδος (όπως την εννοεί η άλλη άποψη) η μονό την πρώτη;

Επίσης μια εντολή Για ι από 1 μέχρι 100 εμπεριέχει ι<-1. Ανήκει και αυτό το ι στην ιδία κατηγορία δεδομένων εισόδου; Δε βλέπω λόγο για να μην ισχύει τα ίδιο.

Τέλος αν θέλω να προσθέσω τους 10 μικρότερους περιττούς φυσικούς και γράψω
S<-0
Για ι από 0 μεχρι 9
  S<-S+2*i+1
Τελος_επαναληψης
ΕΜφανισε S

Οι 1, 3, 5... 19 είναι δεδομένα εισόδου;

tom

Παράθεση από: gpapargi στις 19 Φεβ 2010, 10:29:52 ΜΜ
Να ρωτήσω κάτι ακόμα: Αν χρησιμοποιώ πολλές φόρες το S<-0 σε πολλά σημεία του κώδικα πχ για να υπολογίσω πολλά αθροίσματα διαφορετικά μεταξύ τους (απλά χρησιμοποιώ σε όλα το ίδιο όνομα για τον αθροιστή) είναι κάθε φορά είσοδος (όπως την εννοεί η άλλη άποψη) η μονό την πρώτη;

Κάθε φορά από τη στιγμή που έχουμε ίδια μεταβλητή αλλά για διαφορετικές επεξεργασίες.

Παράθεση από: gpapargi στις 19 Φεβ 2010, 10:29:52 ΜΜ

Επίσης μια εντολή Για ι από 1 μέχρι 100 εμπεριέχει ι<-1. Ανήκει και αυτό το ι στην ιδία κατηγορία δεδομένων εισόδου; Δε βλέπω λόγο για να μην ισχύει τα ίδιο.

Ε ναι, αν είχες την ισοδύναμη σε Όσο η εντολή ι<-1 θα αποτελούσε δεδομένα εισόδου.

Παράθεση από: gpapargi στις 19 Φεβ 2010, 10:29:52 ΜΜ
Τέλος αν θέλω να προσθέσω τους 10 μικρότερους περιττούς φυσικούς και γράψω
S<-0
Για ι από 0 μεχρι 9
  S<-S+2*i+1
Τελος_επαναληψης
ΕΜφανισε S
Οι 1, 3, 5... 19 είναι δεδομένα εισόδου;

Ναι γιατί όχι; Στην ουσία έχεις μια εντολή της οποία το αποτέλεσμα (S) συνδυάζεται με νέα δεδομένα  (i) και δίνει ένα
νέο αποτέλεσμα (S). Αυτό περιγράφεται πολύ ωραία στο βιβλίο Α΄ Γυμνασίου ως κύκλος επεξεργασίας δεδομένων.

Ξαναλέω την αποψή μου:

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

Παρ 'όλα αυτά  είπαμε πως το βιβλίο εννοεί την είσοδο ως τιμή/τιμές από το εξωτερικό περιβάλλον του αλγορίθμου και την περίπτωση μηδέν-είσοδο όταν έχουμε αλγορίθμους μόνο με εντολές εκχώρησης και εξόδου (π.χ.υπολογισμός επιτοκίου, κερδών κλπ). Δηλαδή το βιβλίο δε νομίζω να εμβαθύνει τόσο τη φιλοσοφία του όπως εμείς εδώ, με την προβολή της προσέγγισης είσοδος->επεξεργασία->έξοδο σε κάθε απλή επεξεργασία όπως αυτή που έθεσες:

S<-0
Για ι από 0 μεχρι 9
  S<-S+2*i+1
Τελος_επαναληψης
Εμφανισε S

Γιατί δεν πάμε παρακάτω; Αφού ο ένας έχει καταλάβει πως το βλέπει ο άλλος και οι δύο τι εννοεί μάλλον το βιβλίο?
Δεν καταλαβαίνω που διαφωνούμε...  :-\
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

pgrontas

Παράθεση από: Νίκος Αδαμόπουλος στις 19 Φεβ 2010, 07:09:46 ΜΜ
Πώς η γεννήτρια βγάζει κάθε φορά διαφορετικούς αριθμούς; Κάθε φορά που εκτελούμε από την αρχή το πρόγραμμα οι αριθμοί είναι όντως διαφορετικοί;
Νίκο, ίσως δεν εξήγησα καλά αυτό που ήθελα να πω. Δεν λαμβάνεις διαφορετικές τιμές τυχαίων αριθμών κάθε φορά που τρέχεις το πρόγραμμα, αλλά έχεις πολλές διαφορετικές επιλογές για την αρχικοποίηση του seed του αλγορίθμου δηλαδή των x,m και όλες είναι σωστές. Κάτι που δεν ισχύει στην περίπτωση της αρχικοποίησης του αθροίσματος, αν θες να είσαι σωστός, οπότε και βάζεις το ουδέτερο στοιχείο της πρόσθεσης.

Παράθεση από: gpapargi στις 19 Φεβ 2010, 10:29:52 ΜΜ
Επίσης μια εντολή Για ι από 1 μέχρι 100 εμπεριέχει ι<-1. Ανήκει και αυτό το ι στην ιδία κατηγορία δεδομένων εισόδου; Δε βλέπω λόγο για να μην ισχύει τα ίδιο.

Παράθεση από: tom στις 19 Φεβ 2010, 11:59:19 ΜΜ
Ε ναι, αν είχες την ισοδύναμη σε Όσο η εντολή ι<-1 θα αποτελούσε δεδομένα εισόδου.

Συμφωνώ με το Θωμά, το είχα γράψει και νωρίτερα

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

Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

gthal

Παράθεση από: pgrontas στις 19 Φεβ 2010, 03:21:41 ΜΜ
Παράθεση από: gthal στις 19 Φεβ 2010, 01:36:27 ΜΜ
Δώσε ένα παράδειγμα να καταλάβω ..
Δες το παράδειγμα που έδωσα πιο πάνω με τους τυχαίους αριθμούς.
Ναι, θυμάμαι το παράδειγμα
Λες λοιπόν ότι άλλο η
S<-0
και άλλο οι
χ<-290797
m<-50515093
Ας πούμε ότι διακρίνω τη διαφορά (αν και δε συμφωνώ, χωράει πολλή κουβέντα αλλά όχι για τώρα)
Ας πούμε ότι συμφωνώ.
Ποια είναι λοιπόν "είσοδος" ?  Η πρώτη ή οι δύο επόμενες ?
Φιλικά,
Γιώργος Θαλασσινός

pgrontas

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

Προσωπικά ξαναλέω ότι υποστηρίζω ότι είσοδο θεωρώ οτιδήποτε μπορεί να χρησιμοποιηθεί για την αρχικοποίηση και παραμετροποίηση του αλγορίθμου.

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

Όπως προανέφερα και για τις δύο βρίσκω διδακτικά επιχειρήματα. Για παράδειγμα η δεύτερη άποψη διαχωρίζει σαφώς τον αλγόριθμο από το περιβάλλον. Όμως προσωπικά μου αρέσει περισσότερο η πρώτη γιατί θεωρώ ότι επιτρέπει την καλύτερη ανάλυση ενός αλγορίθμου, καθώς καταλαβαίνεις καλύτερο ποιο τμήμα δεδομένων επηρεάζει πού. Από την άλλη παραδέχομαι, ότι αυτό μπορεί να κάποιος να το τραβήξει και να οδηγηθεί σε πράγματα που φαίνονται περίεργα, όπως αυτό που ανέφερε ο gpapargi με τους περιττούς. Δεκτό, αλλά εξακολουθεί να μου αρέσει περισσότερο.   :D
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

tom

Παράθεση από: pgrontas στις 20 Φεβ 2010, 01:05:23 ΜΜ
Η άλλη άποψη λέει, αν κατάλαβα καλά, ότι είσοδος  είναι ότι ρητώς 'μαρκάρεται' έτσι με μια εντολή Διάβασε ή με μια εντολή Δεδομένα ή παρακολουθώντας την εκτέλεση του αλγορίθμου ως μαύρο κουτί.
Νομίζω δεν διαφωνούμε ότι οτιδήποτε μπορεί να μπει σε διάβασε,δεδομένα κτλ. μπορεί να χρησιμοποιηθεί για την παραμετροποίηση του αλγορίθμου, δηλαδή η δεύτερη άποψη είναι υποσύνολο της πρώτης.
Αυτό λέω και γω. Που διαφωνούμε;
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι

gthal

Παράθεση από: pgrontas στις 20 Φεβ 2010, 01:05:23 ΜΜ
.... Επιπλέον όμως, το δεύτερο είναι περισσότερο είσοδος, αν το θες, γιατί ....
Δεν μου αρέσει αυτό, όπως δε μου αρέσει και εκείνο παραπάνω:
Παράθεση από: tom στις 19 Φεβ 2010, 11:59:19 ΜΜ
....  Ναι γιατί όχι; Στην ουσία έχεις μια εντολή της οποία το αποτέλεσμα (S) συνδυάζεται με νέα δεδομένα  (i) και δίνει ένα
νέο αποτέλεσμα (S). .....
Γιατί μοιάζει να Φιλοσοφούμε ρε παιδιά !
"θα μπορούσε".... "γιατί όχι" ... "αν το θες" ... "περισσότερο ή λιγότερο" ... "αν το δεις έτσι ή αν το δεις αλλιώς" ...
Μα δεν κάνουμε φιλοσοφική συζήτηση ούτε συζητάμε περί των απόψεών μας. Συζητάμε επί του ορισμού της έννοιας "είσοδος".
Υπάρχει ορισμός (απ' όσο νομίζω, τουλάχιστον) που δεν θα τον φτιάξουμε εμείς ούτε θα πούμε τις απόψεις μας, ούτε θα τον τροποποιήσουμε για διδακτικούς ή άλλους λόγους.
(γιαυτό σου έλεγα Παναγιώτη παραπάνω ότι θλίβομαι που διαφωνούμε σε κάτι τόσο θεμελιώδες)
Είναι σαν δύο ομάδες Μαθηματικών, ξαφνικά στον 21ο αιώνα να διαφωνούν για το ποιοι ορίζονται ως "φυσικοί αριθμοί". Δεν χωράνε εδώ απόψεις του στυλ "εγώ νομίζω...", "εμένα θα μου άρεσε...", "εγώ το βλέπω έτσι..."  (εκτός εαν πρόκειται να επαναθεμελιώσουν τα Μαθηματικά από το μηδέν - αλλά δεν είναι η περίπτωσή μας)

Χρειαζόμαστε έναν ορισμό για το τι είναι "είσοδος", που να είναι συνεπής, να μη δέχεται διαφορετικές ερμηνείες και να μη χωράει ερμηνείες του στυλ "περισσότερο ή λιγότερο" ή "αν το δεις έτσι..."

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

Παρακαλώ, να παραθέσει εδώ ο καθένας ότι ορισμό για την έννοια είσοδος (input) μπορεί να βρει, από βιβλιογραφία, το Net, οπουδήποτε. Εγώ αρχίζω με το ευκολότερο  ;)
τον ορισμό από το wikipedia :
http://en.wikipedia.org/wiki/Input/output
<<In computing, input/output, or I/O, refers to the communication between an information processing system (such as a computer), and the outside world possibly a human, or another information processing system.>>

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

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

Παράθεση από: gthal στις 20 Φεβ 2010, 02:03:28 ΜΜ
Άντε, μπας και ξεκολλήσουμε από το τι είναι είσοδος και περάσουμε στο αν μπορεί ένας αλγόριθμος να μην έχει είσοδο, και αν οι εκχωρήσεις είναι είσοδος.

Χα! Κι εγώ νόμιζα ότι θα έλεγες να περάσουμε στο επόμενο κριτήριο!!!  :D

gthal

Παράθεση από: Νίκος Αδαμόπουλος στις 20 Φεβ 2010, 04:43:00 ΜΜ
Χα! Κι εγώ νόμιζα ότι θα έλεγες να περάσουμε στο επόμενο κριτήριο!!!  :D
Στο επόμενο κριτήριο ?   :o
Σαν πολύ δεν βιαζόμαστε  ?  :D   :D  :D
Φιλικά,
Γιώργος Θαλασσινός

tom

1) Να γραφεί αλγόριθμος, ο οποίος αρχικά διαβάζει ένα ποσό χρημάτων και στη συνέχεια  υπολογίζει και εμφανίζει τα χρήματα που έχουμε στην τράπεζα μετά από 10 χρόνια. Δίνεται ότι το επιτόκιο της τράπεζας παραμένει σταθερό και ίσο με 4%.

Αλγόριθμος επιτόκιο
   Διάβασε ποσό
   Για κ από 1 μέχρι 10
      ποσό<-ποσό +ποσό*4/100
   Τέλος_επανάληψης
   Εμφάνισε ποσό
Τέλος επιτόκιο


Δες εικόνα 1...

2) Να γραφεί αλγόριθμος, ο οποίος με δεδομένο αρχικό κεφάλαιο  1500 € υπολογίζει και εμφανίζει τα χρήματα που έχουμε στην τράπεζα μετά από 10 χρόνια. Δίνεται ότι το επιτόκιο της τράπεζας παραμένει σταθερό και ίσο με 4%.

Αλγόριθμος επιτόκιο
   ποσό<-1500
   Για κ από 1 μέχρι 10
      ποσό<-ποσό +ποσό*4/100
   Τέλος_επανάληψης
   Εμφάνισε ποσό
Τέλος επιτόκιο


Δες εικόνα 2...

Αν στο πρώτο παράδειγμα η μπλε ροή λέγεται είσοδος και το 100 δεδομένο εισόδου στο δεύτερο πως λέγεται η μπλε ροή και πως το 1500;
Για μένα οι πορτοκαλί ροές δείχνουν δευτερογενή δεδομένα και ενδιάμεσα αποτελέσματα. Αυτό εννοούσα όταν είπα:

"Ναι γιατί όχι; Στην ουσία έχεις μια εντολή της οποία το αποτέλεσμα (S) συνδυάζεται με νέα δεδομένα  (i) και δίνει ένα νέο αποτέλεσμα (S)".
Θωμάς Σκυλογιάννης

- Ζήσε σα να' ταν να πεθάνεις αύριο. Μάθε σα να' ταν να ζεις για πάντα.
                                                                                     Μαχάτμα Γκάντι