Η πρόταση " Ένας αλγόριθμος πρέπει πάντα να έχει είσοδο ." είναι σωστή ή όχι;
πρέπει ΑΠΑΡΑΙΤΗΤΑ πάντα να έχει, ναι
Το σχολικό αναφέρει μια, καμία η περισσότερες.. και εξηγεί τι σημαίνει καμία (γεννήτριες συναρτήσεις κτλ). Συνεπώς θεωρώ ότι μπορεί να μην έχει καμία, ενώ επιπρόσθετα το σχολικό για την έξοδο αναφέρει ρητά τουλάχιστο μια.
Άρα θεωρώ την πρόταση λανθασμενη
εγώ πάλι, την θεωρώ σωστή!
(το βιβλίο αναφέρει ξεκάθαρα ότι ο αλγόριθμος πρέπει να έχει πάντα είσοδο)
Την περίπτωση που δεν έχει καμμία ... την ερμηνεύει αναφέροντας ότι η καμία είναι ουσιαστικά τουλάχιστον μία !!!
Παράδειγμα: Να γραφεί αλγόριθμος που ελέγχει άν ο αριθμός 234532082351 είναι πρώτος ή όχι
Αλγόριθμος τάδε
χ<-234532082351
κλπ κλπ
Τελος τάδε
Ο παραπάνω αλγόριθμος επεξεργάζεται μια πρωτογενή τιμή ... άρα ικανοποιεί το κριτήριο της καμμίας/μίας εισόδου.
Προφανώς, ως είσοδος νοείται η ύπαρξη δεδομένων, μέσω των οποίων θα παραχθούν πληροφορίες
Άρα, τα δεδομένα είναι απαραίτητα, ανεξάρτητα αν θα τα δίνει ο χρήστης
Ωστόσο, η πρόταση είναι μπερδεμένη, καθώς το βιβλίο ορίζει ότι ο αλγόριθμος πρέπει να πληρεί το κριτήριο της εισόδου, αλλά υπάρχει και περίπτωση όπου δεν υπάρχει είσοδος σε αλγόριθμο
Εγώ θα την θεωρούσα λανθασμένη
Αλγόριθμος ΠαραγωγήΔύοΤυχαίωνΑριθμώνΑπόΤοΈναΩςΤοΔέκα
χ1 ← Τυχαίος(10)
χ2 ← Τυχαίος(10)
Αποτελέσματα // χ1, χ2 //
Τέλος ΠαραγωγήΔύοΤυχαίωνΑριθμώνΑπόΤοΈναΩςΤοΔέκα
Όπου Τυχαίος(Ν): άλλος αλγόριθμος (=συνάρτηση) παραγωγής τυχαίων αριθμών.
Το παραπάνω θεωρώ ότι είναι μια χαρά αλγόριθμος (σύμφωνα με αυτά που γράφει το βιβλίο στη σελίδα 26), και επομένως θεωρώ την πρόταση ***edit*** σωστή (νόμιζα ότι το βιβλίο δεν θεωρούσε ότι η random αποτελεί είσοδο, αλλά με προσεκτική ανάγνωση καταλαβαίνω ότι τη θεωρεί είσοδο, και συμφωνώ απόλυτα με αυτό).
Παράθεση από: stavrax στις 04 Οκτ 2008, 08:22:45 ΠΜ
Αλγόριθμος τάδε
χ<-234532082351
κλπ κλπ
Τελος τάδε
Νομίζω ότι το 234532082351 σ' αυτήν την περίπτωση δεν είναι είσοδος αλλά απλή σταθερά. Η είσοδος δεν μπορεί να είναι μέρος του κώδικα (="κουτί επεξεργασίας").
(http://www.bbc.co.uk/schools/gcsebitesize/design/images/dt_e_mc_csc3.gif)
Μιας και η ζωή κάνει κύκλους, δείτε τη συζήτηση (2006) στο:
https://alkisg.mysch.gr/steki/index.php?topic=387.0
όπου παρατέθηκαν απόψεις για το θέμα και τότε...
θα επανέλθω στο θέμα ταπεινά, αφού ανασυντάξω δυνάμεις ...
Στις επαναληπτικές του 2003 υπήρξαν στο 1ο θέμα δύο υποερωτήματα, όπου στο καθένα από αυτά δίνονταν και μια αλληλουχία εντολών όπου έπρεπε ο μαθητής να απαντήσει εάν ικανοποιούσε όλα τα κριτήρια ή όχι.
Η δεύτερη αλληλουχία εντολών ήταν η εξής:
α <- 1
Όσο α<>6 επανάλαβε
α <- α+2
Τέλος_επανάληψης
Εκτύπωσε α
Η επίσημη απάντηση που δόθηκε ήταν ότι δεν ικανοποιεί το κριτήριο της περατότητας.
Άρα θα σκεφτεί κάποιος ότι ικανοποιεί το κριτήριο της εισόδου εφόσον δεν έγινε καμία αναφορά σε αυτό. Και ποια είναι η είσοδος σε αυτήν την αλληλουχία εντολών; Μήπως η απλή εντολή α<-1;
Η εντολή α<--1 θεωρείται ως είσοδος
Παράθεση από: Skara στις 03 Οκτ 2008, 02:12:19 ΜΜ
Η πρόταση " Ένας αλγόριθμος πρέπει πάντα να έχει είσοδο ." είναι σωστή ή όχι;
Η πρόταση είναι σωστή. Ως κριτήριο η είσοδος πρέπει να υπάρχει πάντα είτε "εξωτερικά" (Διάβασε) είτε με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων
απλών εντολών.
Παράθεση από: Βιβλίο μαθητή, σελίδες 25-26
Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να
δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τι-
μές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξερ-
γάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παρα-
γωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Συνάδελφοι, κατά τη γνώμη μου το "άλλων απλών εντολών" εννοεί άλλων απλών εντολών που να παράγουν πρωτογενείς τιμές, και αυτό σημαίνει τιμές που να μην είναι σταθερές σε κάθε εκτέλεση, δηλαδή να μην περιέχονται στον κώδικα. Επομένως είτε να προκύπτουν από random είτε από τα milliseconds του ρολογιού του υπολογιστή όταν εκτελεστεί το πρόγραμμα είτε από κάποια άλλη παρόμοια "απλή εντολή". Για παράδειγμα, "Διάβασε την τρέχουσα θερμοκρασία του επεξεργαστή από τη θύρα I/O 5335" (= απλή εντολή που παράγει πρωτογενή δεδομένα).
Όπως πολύ σωστά θυμήθηκε ο Παναγιώτης, το είχαμε ξανασυζητήσει πριν δύο χρόνια, διαβάστε το σχετικό link που δίνει παραπάνω.
Δε νομίζω ότι θα βρείτε
πουθενά να χαρακτηρίζεται η εντολή
Α <- 1
ως είσοδος, όχι μόνο στο σχολικό βιβλίο, πουθενά.
Ελεύθερη μετάφραση της σχετικής παραγράφου του βιβλίου:
Για να έχουμε έναν αλγόριθμο που να μην έχει εντολή Διάβασε ούτε εντολή Δεδομένα και ο οποίος να κάνει και κάτι χρήσιμο, τότε πρέπει απαραίτητα να γίνεται σε κάποια φάση χρήση πρωτογενών δεδομένων, δηλαδή κλήση της εντολής random ή ισοδύναμης.
Το παραπάνω παράδειγμα με τον πρώτο αριθμό, αφού εκτελεστεί ολόκληρος ο αλγόριθμος, η τελική απάντηση θα είναι "είναι πρώτος" ή "δεν είναι πρώτος". Θα είναι όμως πάντα η ίδια απάντηση, αφού δεν υπάρχει είσοδος. Επομένως ο αλγόριθμος δεν είναι χρήσιμος. Αν θεωρήσουμε τον αλγόριθμο ως μαύρο κουτί, τότε ο αλγόριθμος που θα φτιάξουμε θα είναι ισοδύναμος με τον
Αλγόριθμος Έλεγξε_αν_ο_234532082351_είναι_πρώτος
Εμφάνισε "Δεν είναι πρώτος"
Τέλος Έλεγξε_αν_ο_234532082351_είναι_πρώτος
που προφανώς ούτε είσοδο έχει ούτε χρήσιμος είναι.
Αν όμως θέλαμε το 234532082351 να είναι είσοδος τότε θα έπρεπε να το γράψουμε ως
Αλγόριθμος Έλεγξε_αν_ο_Χ_είναι_πρώτος
Διάβασε Χ !Εδώ δίνουμε είσοδο το 234532082351
!...Και ακολουθεί ο κανονικός αλγόριθμος
Τέλος Έλεγξε_αν_ο_Χ_είναι_πρώτος
Ο παραπάνω αλγόριθμος δεν μπορεί να "απλοποιηθεί" σε άλλον ισοδύναμο που να έχει μόνο μία εντολή Εμφάνισε, αφού το Χ είναι είσοδος από τον χρήση και μπορεί να αλλάξει κάθε φορά.
Εν γένει,
η είσοδος δεν μπορεί να είναι ενσωματωμένη στον κώδικα. Αν κάτι γίνεται compile, τότε είναι πάντα σταθερό και δεν είναι είσοδος.
Αντίθετα, τα δεδομένα που δίνει ο χρήστης καθώς και τα milliseconds του ρολογιού κατά τη στιγμή της εκτέλεσης (ή η θερμοκρασία, αν έχουμε σχετικό αισθητήρα συνδεδεμένο στον Η/Υ) δεν είναι ενσωματωμένα στον κώδικα, και γι' αυτό είναι είσοδος.
Άλκη,
έχουμε δει πολλές φορές πράγματα που υποστηρίζει το βιβλίο να μην στηρίζονται στην πράξη. Με βάση το βιβλίο, το α<--1 και στο συγκεκριμένο παράδειγμα θεωρείται είσοδος. Κακώς δόθηκε αυτή η εντολή. Εγώ θα έβαζα Δεδομένα //α// στη θέση του.
Η είσοδος όμως είναι απαραίτητο κριτήριο των αλγορίθμων; Κατά το βιβλίο ναι.
Με τη δική σου θεώρηση (που δεν είναι λάθος) η είσοδος δεν αποτελεί κριτήριο για έναν αλγόριθμο αφού δεν ενσωματώνεται στον κώδικα. Η χρησιμότητα που θέτεις είναι υποκειμενικό θέμα.
Το θέμα είναι ότι (κατά το βιβλίο) η είσοδος είναι απαραίτητο κριτήριο για να υπάρχει αλγόριθμος (έστω και άχρηστος).
Αν δεχτούμε τη δική σου θεώρηση στο θέμα 1 των Πανελλαδικών του 2003 - και σε πολλά παρόμοια που ακολούθησαν- ο αλγόριθμος δεν πληροί το κριτήριο της περατότητας και της εισόδου.
ʼρα λάθος βαθμολογήθηκε το θέμα σύμφωνα με τις οδηγίες και πρώτος εγώ το βαθμολόγησα λάθος.
Το πρόβλημα ξεκινά απο το τι θεωρούμε αλγόριθμο και τι απλά υπολογιστική διαδικασία κάτι που το βιβλίο δεν διαχωρίζει σαφώς.
Γιώργο νομίζω ότι δεν με κατάλαβες, συμφωνώ
απόλυτα με το βιβλίο σε αυτό το θέμα.
Δηλαδή πιστεύω τα παρακάτω:
- Ναι, η είσοδος είναι απαραίτητο κριτήριο των αλγορίθμων.
- Είσοδος είναι η Διάβασε, τα Δεδομένα, και οι απλές εντολές παραγωγής πρωτογενών τιμών (random κτλ).
- Όχι, το α <- 1 δεν είναι είσοδος.
Συμφωνούμε λοιπόν όλοι στο πρώτο και στο δεύτερο,
διαφωνούμε στο τρίτο λόγω διαφορετικής ερμηνείας της φράσης "απλές εντολές παραγωγής πρωτογενών τιμών".
Δε γράφω πολλά για να φανεί ξεκάθαρα το που διαφωνούμε. Θεωρώ εντελώς απίθανο να εννοούσε ο συγγραφέας ότι "απλή εντολή παραγωγής πρωτογενών τιμών είναι και το α <- 1", θα προσπαθήσω να έρθω σε επικοινωνία μαζί του για να το ξεδιαλύνουμε. Επειδή φέτος είμαι σε Γυμνάσιο δεν μπορώ να στείλω απορία μέσω συμβούλου, όποιος όμως είναι σε Λύκειο και θέλει μπορεί να το κάνει.
Καλησπέρα και από εμένα. Συμφωνώ με αυτά που ειπώθηκαν, αλλά πιστεύω ότι είσοδος είναι και τα δεδομένα που μας παρέχει η ίδια η εκφώνηση του προβλήματος.
δείτε την άσκηση ΔΣ1 σελίδα 34 μετατροπή νομισμάτων. Αν την λύσουμε δεν νομίζω ότι θα χρησιμοποιήσουμε ούτε την εντολή διάβασε ούτε την "εντολή" δεδομένα. Τα δεδομένα της είναι είδη γνωστά από την εκφώνηση του προβλήματος.
Νομίζω ότι έτσι εξηγείται και η εντολή α<- 1. Είναι ένα δεδομένο από την εκφώνηση του προβλήματος για το οποίο έγινε αυτός ο αλγόριθμος.
Συμφωνώ κώστα και επαυξάνω:
νομίζω ότι το μπέρδεμα που αντιμετωπίζουμε όλοι προκύπτει από την λέξη είσοδος!!
Δηλαδή:
1) είσοδος προς τον υπολογιστή είναι (χοντρικά) η μεταφορά πληροφορίας από τον "έξω κόσμο" προς τον Η/Υ
(εδώ μάλλον συμφωνούμε όλοι)
2) είσοδος προς έναν αλγόριθμο είναι ...
(εδώ μάλλον υπάρχουν οι διαφωνίες μας)
Μήπως αν ξεδιαλύνουμε το ότι άλλο η μια είσοδος και άλλο η άλλη, θα μπορέσουμε να συμφωνήσουμε στο ότι η εντολή
χ<--334532452341
μπορεί να θεωρηθεί σαν είσοδος? (κάτι σαν kickStart του αλγορίθμου?)
Παράθεση από: stavrax στις 07 Οκτ 2008, 01:34:47 ΠΜ
Μήπως αν ξεδιαλύνουμε το ότι άλλο η μια είσοδος και άλλο η άλλη, θα μπορέσουμε να συμφωνήσουμε ...
Μακάρι, αλλά δε νομίζω! :)
Π.χ. εγώ είσοδο/έξοδο σε ένα κλειστό σύστημα θεωρώ την αλληλεπίδραση που έχει με ό,τι βρίσκεται έξω από αυτό.
Έτσι, είσοδος/έξοδος Η/Υ είναι η οθόνη, το πληκτρολόγιο και τα λοιπά γνωστά.
Και είσοδος/έξοδος αλγορίθμου είναι αυτά που διαβάζει από το πληκτρολόγιο, αυτά που γράφει στην οθόνη, αυτά που παίρνει - δίνει σε άλλους αλγορίθμους (=εντολές δεδομένα και αποτελέσματα ενός αλγορίθμου ή παράμετροι εισόδου - εξόδου αν μιλάμε για υποπρογράμματα) καθώς και τα δεδομένα που παίρνει από το ρολόι ή τη θερμοκρασία του Η/Υ ή γράφει στον εκτυπωτή.
Το α <- 1 πάλι δεν μπορώ να το θεωρήσω είσοδο, αφού βρίσκεται
μέσα στο κλειστό σύστημα που λέγεται αλγόριθμος.
Κώστα, στην άσκηση που λες οι ισοτιμίες δεν είναι δεδομένα ούτε είσοδος αλλά απλές σταθερές. Το ποσό είναι δεδομένο και θα πρέπει να εισαχθεί με την εντολή Δεδομένα ή την εντολή Διάβασε, και φυσικά αποτελεί την είσοδο του αλγορίθμου.
Αντίστοιχα, στον υπολογισμό του εμβαδού ενός κύκλου το π δεν είναι δεδομένο αλλά σταθερά.
Δηλαδή Άλκη αν για παράδειγμα έχουμε την άσκηση να γίνει αλγόριθμος-πρόγραμμα το οποιο να υπολογίζει το άθροισμα και να εμφανίζει το πλήθος των όρων
1+1/2+1/3... μέχρι το άθροισμα να περάσει το 1000.
ποια είναι η είσοδος;
Αυτό που λέει ο Άλκης (και εγώ μαζί) είναι ότι τα 1, 1/2, 1/3 κλπ δεν είναι είσοδος. Είναι μέρος του αλγορίθμου το να τα παράγει. Για να είναι κάτι είσοδος πρέπει να είναι αρχικά «έξω» από τον αλγόριθμο και στη συνέχεια να μπει «μέσα». Εδώ οι τιμές είναι ήδη μέσα στον αλγόριθμο
ο αλγόριθμος παράγει τις τιμές.
Θεωρώ βέβαια ότι ο αλγόριθμος ξεκινάει στην πρώτη γραμμή με το
«Αλγόριθμος πρόσθεση» και ότι είναι από κάτω είναι μέρος του αλγορίθμου.
Καλημερά Γιώργο.
Άρα αυτή η εκφώνηση του προβλήματος δεν έχει νοήμα και το σχολικό πρέπει να αποσύρει αρκετές αντίστοιχες ασκήσεις.
ΠαράθεσηΓια να είναι κάτι είσοδος πρέπει να είναι αρχικά «έξω» από τον αλγόριθμο και στη συνέχεια να μπει «μέσα». .
στο προηγούμενο πρόβλημα και σε άλλα που υπόθηκαν και βρήσκονται και στο σχολικό το "έξω" βρίσκεται στην εκφώνηση και το "μέσα" το βάζει ο προγραμματιστής και όχι κατανάγκη ο χρήστης χρησιμοποιώντας και σταθερές για την αποθήκευσή τους.
Γιατί να μην έχει νόημα; Θα έχεις ένα αλγόριθμο που κάνει πάντα το ίδιο πράγμα. Για μένα το λάθος υπάρχει στην ασαφή γραφή του βιβλίου. Σου λέει ότι ο αλγόριθμος «πάντα» πρέπει να ικανοποιεί το κριτήριο της εισόδου και από την άλλη σου λέει ότι ο αλγόριθμος μπορεί να έχει και «καμία» τιμή σαν είσοδο.
Ποια η διαφορά του να έχεις «καμία» τιμή σαν είσοδο και του να μην έχεις είσοδο; Τι συμπέρασμα μπορεί να βγάλει ένας λογικός άνθρωπος από μια τέτοια πρόταση;
Γι αυτό άλλος στέκεται στο «πάντα πρέπει» άλλος στο «καμία τιμή», άλλος στην κοινή λογική και τις ευρύτερες γνώσεις και πάει λέγοντας. Αυτά κάνουν οι ασαφείς ορισμοί και μετά εμείς προσπαθούμε να κατανοήσουμε τις γραφές. Δεν μπαίνω πλέον σε αυτή τη λογική. Έχω αποδεχτεί το γεγονός ότι στο συγκεκριμένο σημείο το βιβλίο λέει κάτι χωρίς νόημα.
Γιώργο, αν έχει νόημα ικανοποιεί όλα τα κριτήρια και της εισόδου. Ασχέτως αν κάνει το ίδιο πράγμα. Τώρα τι βγαίνει ως συμπέρασμα για την είσοδος από τον ορισμό που δίνει το σχολικό, πράγματι υπάρχει πρόβλημα.
Στο παράδειγμα που έδωσα δεν ήθελα να μάθω τι είναι 1, 1/2,1/3 αλλά ποιά είναι η είσοδος.
Στον αλγόριθμο να κατασκευαστεί ένα μαγικό τετράγωνο ποια είναι η είσοδος;
Στο θέμα των εξετάσεων του 2001 με το μαθητή με 600000 δρχ και το υπολογιστικό σύστημα που είναι η εισοδος;
Στο θέμα ΔΣ4 σχολικό σελίδα 82 ποια είναι η είσοδος;
Στο θέμα ΔΣ6 σελίδα 26 ποια είναι η είσοδος;
κτλ...
Εγώ μπορώ να πω ότι είσοδος για όλα τα παραδείγματα, είναι τα δεδομένα από την εκφώνηση. Μπορείτε να βρείτε κάτι άλλο;
Δηλαδή συνάδελφοι στον υπολογισμό περιφέρειας ενός κύκλου,
περιφέρεια <- 2*π*R
λέτε στους μαθητές ότι είσοδος (=δεδομένα) του αλγορίθμου είναι το 2, το π και το R;
Και κατά προέκταση, είναι όλες οι σταθερές δεδομένα; Ή μόνο αυτές που αναφέρονται στην εκφώνηση; Κι αν όχι, πώς τις ξεχωρίζετε;
Για παράδειγμα, στον παραπάνω υπολογισμό που είπε ο Κώστας, δεδομένα είναι το 1, 2, 3 (που μετράει ο μετρητής i), το 1/2, 1/3, 1/4 (που μετράει το 1/i), το 1+1/2, 1+1/2+1/3 (που υπολογίζει το sum) και το 1000;
Άλλη απορία. Η εντολή ανάθεσης τιμής είναι δηλαδή εντολή εισόδου; Γιατί τότε λέμε ότι εντολή εισόδου είναι η Διάβασε;
Κι αν είναι, τότε γιατί το
x <- y
ή το
i <- i + 1
δεν είναι είσοδοι;
Κι άλλη απορία. Ποιες "απλές εντολές" είναι τελικά εντολές εισόδου; Μόνο η ανάθεση τιμής; Γιατί να μην είναι και η ΑΝ ή η ΟΣΟ ή η αντιμετάθεσε που είναι επίσης απλές;
Γράφω και το πρωτότυπο κομμάτι από το βιβλίο του Knuth, μήπως ρίξει φως στο θέμα:
Παράθεση
3) Input. An algorithm has zero or more inputs, i.e., quantities which are given to it initially before the algorithm begins. These inputs are taken from specified sets of objects. In Algorithm E, for example, there are two inputs, namely m and n, which are both taken from the set of positive integers.
Ο Αλγόριθμος Ε που αναφέρεται είναι ο αλγόριθμος του Ευκλείδη για μέγιστο κοινό διαιρέτη, και όπως φαίνεται παραπάνω
δεν ισχυρίζεται ότι το 0 και το 1 και οι υπόλοιπες σταθερές που χρησιμοποιεί ο αλγόριθμος είναι είσοδοι.
Κάτι πρόβλημα έχει σήμερα το site και τώρα μπόρεσα να μπω.
Άλκη οι αλγόριθμοι που σου ανέφερα έχουν είσοδο;
Σύμφωνα με το βιβλίο, όχι, οι ασκήσεις
"κάντε ένα πρόγραμμα που να μετράει από το 1 ως το 10", ή
"να γράφει το αποτέλεσμα μιας συνάρτησης για x από 1 ως 10 με βήμα 0.01"
δεν έχουν είσοδο. Και συμφωνώ μαζί του. Είναι κλειστά συστήματα που παράγουν πάντα τα ίδια αποτελέσματα, επομένως η έξοδός τους δεν εξαρτάται από την είσοδο αφού δεν υπάρχει είσοδος.
Τώρα για το αν μπορούν να θεωρηθούν αλγόριθμοι ή όχι, συμφωνώ με το Γιώργο Παπαργύρη και τον Knuth, ότι τα "κριτήρια" των αλγορίθμων δεν θα έπρεπε να ορίζονται ως δεσμευτικά για να χαρακτηριστεί ένα κομμάτι κώδικα ως αλγόριθμος.
Στην πράξη όμως σπάνια θα δούμε τέτοιους αλγορίθμους (εγώ δεν νομίζω να έχω δει κανέναν σε πραγματικό κώδικα). Π.χ. τον παραπάνω αλγόριθμο αν τον υλοποιούσε κάποιος προγραμματιστής θα τον μετέφραζε ως "να γράφει τις τιμές της συνάρτησης από Α ως Τ με βήμα Β", έτσι ώστε ο αλγόριθμος να έχει 3 εισόδους και να είναι και πιο ευέλικτος/χρήσιμος.
Ή, για τον υπολογισμό των 1000 πρώτων δεκαδικών του π, δεν θα έγραφαν τέτοιον αλγόριθμο, θα έβαζαν το 1000 σαν είσοδο (=εντολή Διάβασε) με όνομα Ν ώστε να αποφεύγουν να κάνουν compile κάθε φορά. Ας μην ξεχνάμε ότι όταν γραφόταν αυτές οι γραμμές (του Knuth) το compile έπαιρνε αρκετό χρόνο, δεν ήταν το "πατάω F9 και είμαι έτοιμος" που είναι τώρα.
Εν ολίγοις, πιστεύω ότι η συγκεκριμένη παράγραφος που συζητάμε είναι μια χαρά.
Διαφωνώ στο ότι τα αναγραφόμενα κριτήρια είναι υποχρεωτικά για να χαρακτηριστεί ως αλγόριθμος ένα κομμάτι κώδικα. Βέβαια θα απόφευγα να ζητήσω από τους μαθητές να υλοποιήσουν αλγορίθμους που να μην ικανοποιούν αυτά τα κριτήρια (δηλαδή δεν θεωρώ δόκιμο το ότι το βιβλίο έχει τέτοιες ασκήσεις).
Συγκεκριμένα για το κριτήριο της εισόδου, εάν αυτή απουσιάζει, ίσως απλά να χαρακτήριζα τον συγκεκριμένο αλγόριθμο "όχι καλοσχεδιασμένο", αφού θα παράγει πάντα την ίδια έξοδο, και επομένως αυτή μπορεί κάλλιστα να αντικατασταθεί από απλές εντολές ΓΡΑΨΕ ή από lookup table. Το τελευταίο το έχω δει συχνά σε "πραγματικά" προγράμματα, έχουν απλά ένα πινακάκι με τις τιμές που χρειάζονται, π.χ. τα πρώτα 1000 δεκαδικά του π. Και φυσικά ένα πινακάκι δεν χαρακτηρίζεται ως αλγόριθμος...
Συνάδερφοι οπως βλέπετε η συζήτηση δεν οδηγεί πουθενά. Εχουμε χωριστεί σε δυο στραπόδεδα :Σε αυτούς που πιστεύουν ότι οι απλές εντολές θεωρούνται ως είσοδο και στους υπόλοιπους με την αντίθετη άποψη. Και τα δυο στρατόδετα αντιπαραθέτουν ηχηρά παραδείγματα για να δικαιολογήσουν την αποψή τους. Το αποτέλεσμα είναι πως κάποιος τρίτος που παρακολουθεί την σηζήτηση δεν μπορεί να αποφασίσει ποιες απο τις δυο απόψεις είναι η πιο σωστή.
Νομίζω ότι δεν θα βγάλουμε καμία άκρη.
Μια λύση είχε δοθεί απο τον Αλκη σε παλιότερο θέμα η οποία ήταν :
1. να επικοινωνήσουμε με τον συγγραφέα του βιβλίου ώστε να μας διατυπώση τις απόψεις του για αυτό το θέμα και γενικά τι εννοεί με τον όρο "καμία μια ή περισσότερες απο μια εισοδους".
και συμπληρώνω :
2. να διατυπωθούν στους συγγραφείς όλες αυτές οι απόψεις και οι προβληματισμοί που αναφέρθηκαν παραπάνω
3. να επιδιώξουμε να δοθεί μια επισημη απάντηση απο το παιδαγωγικό ινστιτούτο , ανάλογη αυτή που είχει βγει για τους τελεστές div και mod για να καταλάβουμε επιτέλους τι ακριβώς γίνεται.
ΠαράθεσηΣτην πράξη όμως σπάνια θα δούμε τέτοιους αλγορίθμους (εγώ δεν νομίζω να έχω δει κανέναν σε πραγματικό κώδικα).
Οι περισσότεροι αλγόριθμοι δεν απαιτούν δεδομένα από τον χρήστη για να λειτουργήσουν. Μην έχουμε στο μυαλό μας μόνο τους αλγόριθμους που γίνονται πρόγραμμα. Υπάρχουν και οι άλλοι που δεν θα τους εκτελέσει ο υπολογιστής. Στα βιβλία μαγείρικής οι περισσότεροι αλγόριθμοι δεν απαιτούν δεδομένα από τον χρήστη, αυτόν δηλαδή που θα απολαύσει τα αποτελέσματα. (Είναι μεσημέρι ... καταλαβαίνετε)
Παράθεση από: ntzios kostas στις 08 Οκτ 2008, 01:59:48 ΜΜ
Οι περισσότεροι αλγόριθμοι δεν απαιτούν δεδομένα από τον χρήστη για να λειτουργήσουν.
Κώστα πραγματικά δεν μπορώ να σκεφτώ κάποιον κανονικό αλγόριθμο (όχι άσκηση του τύπου γράψτε τους 100 πρώτους ζυγούς αριθμούς) που να μην απαιτεί την ύπαρξη δεδομένων. Δεν χρειάζεται να εισάγονται από τον χρήστη, μπορούν να είναι από αρχείο, ή, αν ο αλγόριθμος υλοποιείται με υποπρόγραμμα, οι παράμετροι του υποπρογράμματος (= εντολή Δεδομένα στην ψευδογλώσσα).
Για παράδειγμα, όλοι οι αλγόριθμοι ταξινόμησης χρειάζονται τον πίνακα Π και το πλήθος των στοιχείων Ν. Το ίδιο και οι αλγόριθμοι αναζήτησης, εύρεσης μεγίστου, ελαχίστου κτλ.
Μάλιστα ο Knuth περιγράφει τα δεδομένα (=κρέας, αλάτι, κτλ) και τα αποτελέσματα σε έναν αλγόριθμο μαγειρικής, αλλά είναι πολύ μεγάλο για να το αντιγράψω εδώ... :)
Εξάλλου το βιβλίο καθηγητή προτείνει σε περιπτώσεις μεγάλης εισόδου να χρησιμοποιούνται εντολές σαν τη read data της basic (αντίστοιχη με το αρχείο εισόδου του Διερμηνευτή και της Γλωσσομάθειας) ακριβώς για να ξεχωρίζει η είσοδος και να μην χρησιμοποιούνται εντολές ανάθεσης για εισαγωγή τιμών, χαλώντας έτσι την είσοδο του αλγορίθμου.
Μπράβο...
ΠαράθεσηΜάλιστα ο Knuth περιγράφει τα δεδομένα (=κρέας, αλάτι, κτλ) και τα αποτελέσματα σε έναν αλγόριθμο μαγειρικής, αλλά είναι πολύ μεγάλο για να το αντιγράψω εδώ... Smiley
Το κρέας και το αλάτι τα βάζει ως δεδομένα. Το κρέας και το αλάτι ο χρήστης δεν ξέρει ότι έχουν μπει στο φαί του, άρα δεν τα δίνει αυτός, Την ποσότητά τους ή την ύπαρξή τους πρέπει να την ξέρει ο προγραμματιστής, αυτός που έγραψε την συνταγή.
Η πρώτη εντολή της συνταγής μπορεί να είναι: Βάλε δύο κιλά κρέας στην κατσαρόλα (αντίστοιχα χ<- 2)
Και δεν θα λέει: ζήτα από τον χρήστη για το φαγητό πόσο κρέας θέλει; Αν ζήταγε πάντως από εμένα θα είχα πεθάνει της πείνας πάντως :)
Το κυρίως μέρος από το mail που έστειλα:
Παράθεση
Είναι στο τέλος της σελίδας 25 και μιλάει για τα κριτήρια των αλγορίθμων:
Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να
δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τι-
μές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξερ-
γάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παρα-
γωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Πάνω σ' αυτό, και μετά από αρκετή συζήτηση (https://alkisg.mysch.gr/steki/index.php?topic=1569.0), πολλοί συνάδελφοι πιστεύουν ότι η εντολή ανάθεσης τιμής
α <- 1
αποτελεί είσοδο για ένα πρόγραμμα, ενώ οι υπόλοιποι πιστεύουν ότι είσοδο αποτελούν μόνο η εντολή Διάβασε, η εντολή Δεδομένα της ψευδογλώσσας (χρησιμοποιείται περίπου σαν τις παραμέτρους εισόδου των υποπρογραμμάτων) καθώς και εντολές παραγωγής πρωτογενών τιμών όπως είναι η random (αλλά όχι η ανάθεση τιμής).
Ένα πιο χαρακτηριστικό παράδειγμα:
«Να γράψετε πρόγραμμα που να υπολογίζει τη συνάρτηση y(x) = x²-3x+2 για όλες τις τιμές του x από -1 έως 3 σε βήματα του 0.1.»
Με την παρακάτω υλοποίηση:
Αλγόριθμος Άσκηση1
Για x από -1 μέχρι 3 με_βήμα 0.1
Εμφάνισε x^2-3*x+2
τέλος_επανάληψης
Τέλος ʼσκηση1
Έχει αυτός ο αλγόριθμος είσοδο ή όχι; Οι πρώτοι πιστεύουν ότι το -1, το 3 και το 0.1 είναι είσοδος, οι δεύτεροι ότι ο αλγόριθμος αυτός δεν έχει είσοδο.
Μια ανεπίσημη απάντηση μας αρκεί, απλά να συμφωνήσουμε σε έναν κοινό ορισμό θέλουμε.
Απάντηση του συγγραφέα του σχετικού κεφαλαίου:
Παράθεση
Με απλά λόγια θα έλεγα το εξής.
Συμφωνώ με εκείνους που λενε ότι ουσιαστικά το input δίνεται
με το Διάβασε. Με την ίδια (αντίθετη) λογική και το α=1 και
το for/while κλπ είναι είσοδος. Δηλαδή, εν τέλει κάθε ανάθεση
είναι είσοδος ?
Προσωπικά η απάντηση με κάλυψε και τον ευχαριστώ κι από εδώ για το ενδιαφέρον που έδειξε. Εάν κάποιος θέλει κάτι πιο επίσημο, δηλαδή από το Π.Ι., νομίζω ότι μόνο με σχετικό ερώτημα μέσω συμβούλων έχουμε κάποιες πιθανότητες για έγγραφη απάντηση.
Αυτός ο αλγόριθμος δηλαδή που έδωσες δεν υφίσταται είναι λάθος. Ο αλγόριθμος που έχει το σχολικό βιβλίο στην ενότητα της Γ' Γυμνασίου δεν υφίσταται. Ο αλγόριθμος για την παρασκευή μιας συνταγής δεν υφίσταται. Δηλαδή ένας αλγόριθμος υφίσταται αν πρέπει να μου δώσει και ο χρήστης κάτι την ώρα που εκτελείται.
Αν είναι έτσι το βιβλίο αντιφάσκει κατακόρων σε αυτό το θέμα αφού παρουσιάζει αλγόριθμους που δεν έχουν είσοδο από τον χρήστη.
Εγώ θα σε ρωτήσω και κάτι άλλο Αλκη. Έχω το πρόβλημα να βρω όλους τους πρώτους από το 1 μέχρι το 100000. Αυτό δηλαδή δεν πρέπει να το λύσω αλγοριθμικά πρέπει οπωσδήποτε να αναγκάσω το χρήστη να δώσει τιμή. Ξέρω ότι τα δεδομένα του προβλήματος είναι 3: η αρχική τιμή, η τελική και πιθανών ο ορισμός για τους πρώτους.
Αν άλλαζα το πρόβλημα και λέω να εμφανίσει όλους από το 1 μέχρι το χ που το χ θα μου το δίνει ο χρήστης. Τότε ξέρω ότι τα δεδομένα του προβλήματος είναι η αρχική τιμή, η τελική τιμή που τη δίνει ο χρήστης και ο ορισμός των πρώτων. Αν όλα αυτά τα δεδομένα του προβλήματος και στις δύο περιπτώσεις δεν αποτελούν και δεδομένα του αλγόριθμου τότε πραγματικά δεν ξέρω τι να πω.
Ο συγγραφέας του βιβλίου δεν απάντησε πάντως ποια είναι η είσοδος στον αλγόριθμο που έδωσες. Ούτε όμως είπε ότι είναι λάθος ο αλγόριθμος αυτός.
Ειλικρινά ο στόχος μου είναι πάντως να βγάλουμε μία άκρη.
Μου αρέσει η απάντηση του συγγραφέα ...
Ήξοις αφίξοις ....
Με την απάντηση αυτή καλύπτονται όλες οι απόψεις :D
Προφανώς όλες οι αναθέσεις τιμών δεν είναι είσοδος, αλλά απο την άλλη -η αντίθετη λογική- δέχεται ότι είναι είσοδος το α=1 στην αρχή ενός αλγορίθμου.
Η λογική του βιβλίου όμως ποιά είναι ;
Καλά τα λέει ο knuth, καλά τα λέει ο Άλκης και ο Γιώργος, αλλά το βιβλίο λέει :
Κάθε αλγόριθμος ικανοποιεί απαραίτητα τα επόμενα κριτήρια μπλα..μπλα
Εφόσον είναι απαραίτητη η είσοδος (έστω και με καμία τιμή) πρέπει να την ανακαλύψουμε αλλιώς δεν υπάρχει αλγόριθμος.
Ή θα αλλάξει η διατύπωση στο κριτήριο εισόδου ή εγώ θα επιμένω να λέω στα παιδιά ότι η αρχική εντολή εκχώρησης τιμής α<--1 "θεωρείται" είσοδος για να ονομάσουμε αλγόριθμο αυτό που υλοποιούμε.
Καλημέρα
Αυτό που ήθελα να πω είναι ότι δεν είναι αναγκαίο ο αλγόριθμος να έχει είσοδο ανεξάρτητα από το τι λέει το βιβλίο. Απλά θα είναι ένας αλγόριθμος που κάνει πάντα το ίδια πράγμα και δεν έχει ενδιαφέρον.
Να μερικά παραδείγματα:
Αλγόριθμος μήνυμα
Εμφάνισε «Καλημέρα»
Τέλος μήνυμα
Αυτό προφανώς δεν έχει είσοδο.
Να ένα ακόμα
Αλγόριθμος αριθμοί
Για ι από 1 μέχρι 100
Εμφάνισε ι
Τέλος_επανάληψης
Τέλος αριθμοί
Αν το πρώτο δεν έχει είσοδο τότε ούτε το δεύτερο έχει. Δεν είναι λογικό κάθε αριθμός που παράγεται μέσα σε ένα αλγόριθμο να είναι είσοδος. Αν ήταν έτσι και μια αρχικοποίηση αθροιστή θα ήταν είσοδος.
Να και ένας τρίτος αλγόριθμος
Αλγόριθμος άθροισμα
S<-0
Για ι από 1 μέχρι 100
S<-S+ι
Τέλος_επανάληψης
Εμφάνισε S
Τέλος άθροισμα
Αν ο δεύτερος δεν έχει είσοδο τότε ούτε ο τρίτος δεν έχει αφού απλώς αλλάζει την εντολή από απλή εκτύπωση σε πρόσθεση. Όμως το αν κάτι έχει είσοδο ή έξοδο δεν μπορεί να εξαρτάται από το τι κάνουμε με τις τιμές αλλά αποκλειστικά από τον τρόπο παραγωγής τους.
Αυτό που θέλω επίσης να τονίσω είναι ότι ένας αλγόριθμος είναι μια ανεξάρτητη οντότητα και δεν μπορεί να έχει ανάγκη από κάποια εκφώνηση για να μελετηθεί. Πχ μας δίνουν ένα αλγόριθμο που κάνει κάποια πράγματα. Πρέπει να μπορούμε να πούμε αν έχει ή δεν έχει είσοδο (ή κάποιο άλλο χαρακτηριστικό ή ας πούμε να βρούμε την πολυπλοκότητά του) ανεξάρτητα από το αν υπάρχει κάποια εκφώνηση από πίσω του. Ο αλγόριθμος είναι αυθύπαρκτη οντότητα. Δεν είναι δυνατόν να αναζητούμε σε κάποια εκφώνηση το αν έχει είσοδο ένας αλγόριθμος.
Αν δει κανείς τον Knuth (από όπου είναι παρμένα τα κριτήρια) λέει:
[
] an algorithm has five important features
Μιλάει δηλαδή για «χαρακτηριστικά» (features) και όχι κριτήρια. Τη λέξη criteria την αναφέρει στην καθοριστικότητα αλλά όχι στην είσοδο. Άρα για μένα δεν υπάρχει αυτή η βαριά σημασία της λέξης «κριτήρια» που υπονοεί ότι αν κάποιο δεν πληρείται τότε δεν είναι αλγόριθμος (όπως πχ τα κριτήρια ισότητας τριγώνων καθορίζουν αν 2 τρίγωνα είναι ίσα ή όχι). Η λέξη «κριτήρια» εμφανίστηκε κατά τη μεταφορά στα ελληνικά και πολύ κακώς της δίνουμε εμείς τόσο βαριά σημασία.
Παράθεση από: Laertis στις 09 Οκτ 2008, 09:33:42 ΠΜ
Κάθε αλγόριθμος ικανοποιεί απαραίτητα τα επόμενα κριτήρια μπλα..μπλα
Εφόσον είναι απαραίτητη η είσοδος (έστω και με καμία τιμή) πρέπει να την ανακαλύψουμε αλλιώς δεν υπάρχει αλγόριθμος.
Γιώργο, συμφωνούμε όλοι ότι υπάρχει πρόβλημα.
Εκτός όμως από πιο σωστό (κατά την άποψή μου), είναι και πιο απλό να υιοθετηθεί η άποψη του Knuth ότι τα κριτήρια δεν είναι κριτήρια αλλά χαρακτηριστικά (τα οποία έτσι κι αλλιώς μας παιδεύουν και πέρα από το συγκεκριμένο "κριτήριο" της εισόδου), παρά να αλλάξουμε την ίδια την έννοια της εισόδου (και δημιουργώντας έτσι πολύ περισσότερες ασυνέπειες και προβλήματα) στην προσπάθειά μας να δικαιολογήσουμε μια και μόνη λανθασμένη λέξη ("απαραίτητα").
Αν θες π.χ. να προετοιμάσεις τους μαθητές σου για ένα θέμα στις πανελλαδικές που να ζητάει "ποια είναι η είσοδος του παρακάτω αλγορίθμου;" πώς θα μπορέσεις να τους εξηγήσεις πότε μια ανάθεση τιμής θεωρείται είσοδος και πότε μια εντολή Για θεωρείται είσοδος;
Αν θες προσπάθησε με μένα σαν να είμαι μαθητής σου, χωρίς καμία διάθεση ειρωνίας πραγματικά δεν έχω καταλάβει σε ποιες περιπτώσεις θεωρείτε την ανάθεση τιμής είσοδο και σε ποιες περιπτώσεις όχι!
Ενώ με την άλλη, "μη αντίθετη" άποψη, είσοδος είναι μόνο η Διάβασε και τα Δεδομένα. Τελεία. Random και λοιπές "απλές εντολές παραγωγής πρωτογενών τιμών" δεν έχουμε στην ψευδογλώσσα και στη ΓΛΩΣΣΑ, οπότε είναι πολύ απλό να ξεχωρίζει κάποιος μαθητής την είσοδο. Και είναι συνεπές και με την έννοια της εισόδου γενικά (block διάγραμμα είσοδος / επεξεργασία / έξοδος) αλλά και με την έννοια της εξόδου, "Εμφάνισε" και "Αποτελέσματα". Αλλιώς θα πρέπει να αρχίσουμε την ίδια συζήτηση και για την έξοδο! :)
@Κώστας: νομίζω αυτά που ρωτάς τα ξανασυζητήσαμε πιο πάνω... Για τις συνταγές μαγειρικής, αν θες διάβασε το βιβλίο του Knuth, θεωρεί ότι έχουν είσοδο (eggs, flour, etc.) και έξοδο (TV dinner, etc.) αλλά τις αναφέρει σε αντιδιαστολή με τους αλγορίθμους, κυρίως επειδή δεν έχουν definiteness. Δεν αναφέρει αν ο χρήστης δίνει τα αυγά και το αλεύρι στο μάγειρα ή αν ο ίδιος ο χρήστης κάνει και το μάγειρα ή αν ο μάγειρας πηγαίνει μόνος του και τα αγοράζει από το σουπερμάρκετ.
Ρε Άλκη... εκείνες οι διορθώσεις που γράφαμε εκείνο το Σαββατοκύριακο και περιείχαν και τα ουσιαστικά ζητήματα πέρα από τα τυπογραφικά... τι απέγιναν; Υπάρχει καμία περίπτωση να τις δούμε ποτέ ενσωματωμένες στο βιβλίο; Τα περιείχαν όλα αυτά τα θέματα και άλλα πολλά.
Τελικά κατατάσσομαι κι εγώ ανάμεσα στα δύο στρατόπεδα:
Το βιβλίο μας έχει μπλέξει λιγάκι.
Προτείνω όσοι από μας είναι σε σχολείο να κινήσουν την προβλεπόμενη διαδικασία ταυτόχρονα μπας και πάρουμε καμμία επίσημη απάντηση από τις αρχές :police:
Να γίνει πρόγραμμα που να εμφανίζει όλους τους πρώτους από το 1 μέχρι 10000.
Το σχολικό βιβλίο σελίδα 11 γράφει: Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον ακριβή προσιορισμό των δεδομένων που παρέχει το πρόβλημα.=>
=>Τα δεδομένα αυτά είναι τα δεδομένα για την λύση του προβλήματος=> είναι τα δεδομένα για το πρόγραμμα που θα φτιάξω και θα λύσει το πρόβλημα. => όμως τα δεδομένα = είσοδος (εκτός αν δεν είναι)=> είσοδος είναι το 1 και το 10000 για το δικό μου πρόγραμμα που θα λύση το πρόβλημα.
Συμφωνώ και με τους δύο Γιώργηδες.
Παράθεση από: ntzios kostas στις 09 Οκτ 2008, 04:21:21 ΜΜ
Να γίνει πρόγραμμα που να εμφανίζει όλους τους πρώτους από το 1 μέχρι 10000.
Αλγόριθμος ΟιΠρώτοιΑπόΤο1ΜέχριΤο10000
Εμφάνισε "
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659
661 673 677 683 691 701 709 719 727 733
739 743 751 757 761 769 773 787 797 809
811 821 823 827 829 839 853 857 859 863
877 881 883 887 907 911 919 929 937 941
947 953 967 971 977 983 991 997 1009 1013
1019 1021 1031 1033 1039 1049 1051 1061 1063 1069
1087 1091 1093 1097 1103 1109 1117 1123 1129 1151
1153 1163 1171 1181 1187 1193 1201 1213 1217 1223
1229 1231 1237 1249 1259 1277 1279 1283 1289 1291
1297 1301 1303 1307 1319 1321 1327 1361 1367 1373
1381 1399 1409 1423 1427 1429 1433 1439 1447 1451
1453 1459 1471 1481 1483 1487 1489 1493 1499 1511
1523 1531 1543 1549 1553 1559 1567 1571 1579 1583
1597 1601 1607 1609 1613 1619 1621 1627 1637 1657
1663 1667 1669 1693 1697 1699 1709 1721 1723 1733
1741 1747 1753 1759 1777 1783 1787 1789 1801 1811
1823 1831 1847 1861 1867 1871 1873 1877 1879 1889
1901 1907 1913 1931 1933 1949 1951 1973 1979 1987
1993 1997 1999 2003 2011 2017 2027 2029 2039 2053
2063 2069 2081 2083 2087 2089 2099 2111 2113 2129
2131 2137 2141 2143 2153 2161 2179 2203 2207 2213
2221 2237 2239 2243 2251 2267 2269 2273 2281 2287
2293 2297 2309 2311 2333 2339 2341 2347 2351 2357
2371 2377 2381 2383 2389 2393 2399 2411 2417 2423
2437 2441 2447 2459 2467 2473 2477 2503 2521 2531
2539 2543 2549 2551 2557 2579 2591 2593 2609 2617
2621 2633 2647 2657 2659 2663 2671 2677 2683 2687
2689 2693 2699 2707 2711 2713 2719 2729 2731 2741
2749 2753 2767 2777 2789 2791 2797 2801 2803 2819
2833 2837 2843 2851 2857 2861 2879 2887 2897 2903
2909 2917 2927 2939 2953 2957 2963 2969 2971 2999
3001 3011 3019 3023 3037 3041 3049 3061 3067 3079
3083 3089 3109 3119 3121 3137 3163 3167 3169 3181
3187 3191 3203 3209 3217 3221 3229 3251 3253 3257
3259 3271 3299 3301 3307 3313 3319 3323 3329 3331
3343 3347 3359 3361 3371 3373 3389 3391 3407 3413
3433 3449 3457 3461 3463 3467 3469 3491 3499 3511
3517 3527 3529 3533 3539 3541 3547 3557 3559 3571
3581 3583 3593 3607 3613 3617 3623 3631 3637 3643
3659 3671 3673 3677 3691 3697 3701 3709 3719 3727
3733 3739 3761 3767 3769 3779 3793 3797 3803 3821
3823 3833 3847 3851 3853 3863 3877 3881 3889 3907
3911 3917 3919 3923 3929 3931 3943 3947 3967 3989
4001 4003 4007 4013 4019 4021 4027 4049 4051 4057
4073 4079 4091 4093 4099 4111 4127 4129 4133 4139
4153 4157 4159 4177 4201 4211 4217 4219 4229 4231
4241 4243 4253 4259 4261 4271 4273 4283 4289 4297
4327 4337 4339 4349 4357 4363 4373 4391 4397 4409
4421 4423 4441 4447 4451 4457 4463 4481 4483 4493
4507 4513 4517 4519 4523 4547 4549 4561 4567 4583
4591 4597 4603 4621 4637 4639 4643 4649 4651 4657
4663 4673 4679 4691 4703 4721 4723 4729 4733 4751
4759 4783 4787 4789 4793 4799 4801 4813 4817 4831
4861 4871 4877 4889 4903 4909 4919 4931 4933 4937
4943 4951 4957 4967 4969 4973 4987 4993 4999 5003
5009 5011 5021 5023 5039 5051 5059 5077 5081 5087
5099 5101 5107 5113 5119 5147 5153 5167 5171 5179
5189 5197 5209 5227 5231 5233 5237 5261 5273 5279
5281 5297 5303 5309 5323 5333 5347 5351 5381 5387
5393 5399 5407 5413 5417 5419 5431 5437 5441 5443
5449 5471 5477 5479 5483 5501 5503 5507 5519 5521
5527 5531 5557 5563 5569 5573 5581 5591 5623 5639
5641 5647 5651 5653 5657 5659 5669 5683 5689 5693
5701 5711 5717 5737 5741 5743 5749 5779 5783 5791
5801 5807 5813 5821 5827 5839 5843 5849 5851 5857
5861 5867 5869 5879 5881 5897 5903 5923 5927 5939
5953 5981 5987 6007 6011 6029 6037 6043 6047 6053
6067 6073 6079 6089 6091 6101 6113 6121 6131 6133
6143 6151 6163 6173 6197 6199 6203 6211 6217 6221
6229 6247 6257 6263 6269 6271 6277 6287 6299 6301
6311 6317 6323 6329 6337 6343 6353 6359 6361 6367
6373 6379 6389 6397 6421 6427 6449 6451 6469 6473
6481 6491 6521 6529 6547 6551 6553 6563 6569 6571
6577 6581 6599 6607 6619 6637 6653 6659 6661 6673
6679 6689 6691 6701 6703 6709 6719 6733 6737 6761
6763 6779 6781 6791 6793 6803 6823 6827 6829 6833
6841 6857 6863 6869 6871 6883 6899 6907 6911 6917
6947 6949 6959 6961 6967 6971 6977 6983 6991 6997
7001 7013 7019 7027 7039 7043 7057 7069 7079 7103
7109 7121 7127 7129 7151 7159 7177 7187 7193 7207
7211 7213 7219 7229 7237 7243 7247 7253 7283 7297
7307 7309 7321 7331 7333 7349 7351 7369 7393 7411
7417 7433 7451 7457 7459 7477 7481 7487 7489 7499
7507 7517 7523 7529 7537 7541 7547 7549 7559 7561
7573 7577 7583 7589 7591 7603 7607 7621 7639 7643
7649 7669 7673 7681 7687 7691 7699 7703 7717 7723
7727 7741 7753 7757 7759 7789 7793 7817 7823 7829
7841 7853 7867 7873 7877 7879 7883 7901 7907 7919
7927 7933 7937 7949 7951 7963 7993 8009 8011 8017
8039 8053 8059 8069 8081 8087 8089 8093 8101 8111
8117 8123 8147 8161 8167 8171 8179 8191 8209 8219
8221 8231 8233 8237 8243 8263 8269 8273 8287 8291
8293 8297 8311 8317 8329 8353 8363 8369 8377 8387
8389 8419 8423 8429 8431 8443 8447 8461 8467 8501
8513 8521 8527 8537 8539 8543 8563 8573 8581 8597
8599 8609 8623 8627 8629 8641 8647 8663 8669 8677
8681 8689 8693 8699 8707 8713 8719 8731 8737 8741
8747 8753 8761 8779 8783 8803 8807 8819 8821 8831
8837 8839 8849 8861 8863 8867 8887 8893 8923 8929
8933 8941 8951 8963 8969 8971 8999 9001 9007 9011
9013 9029 9041 9043 9049 9059 9067 9091 9103 9109
9127 9133 9137 9151 9157 9161 9173 9181 9187 9199
9203 9209 9221 9227 9239 9241 9257 9277 9281 9283
9293 9311 9319 9323 9337 9341 9343 9349 9371 9377
9391 9397 9403 9413 9419 9421 9431 9433 9437 9439
9461 9463 9467 9473 9479 9491 9497 9511 9521 9533
9539 9547 9551 9587 9601 9613 9619 9623 9629 9631
9643 9649 9661 9677 9679 9689 9697 9719 9721 9733
9739 9743 9749 9767 9769 9781 9787 9791 9803 9811
9817 9829 9833 9839 9851 9857 9859 9871 9883 9887
9901 9907 9923 9929 9931 9941 9949 9967 9973"
Τέλος ΟιΠρώτοιΑπόΤο1ΜέχριΤο10000
Έλυσα το πρόβλημα. Η Εμφάνισε δηλαδή είναι εντολή εισόδου;
Κώστα άστο, δεν πρόκειται να συμφωνήσουμε. Όσοι είναι σε Λύκειο και θέλουν ας κινήσουν τις προβλεπόμενες διαδικασίες.
Παράθεση από: gpapargi στις 09 Οκτ 2008, 02:51:29 ΜΜ
Ρε Άλκη... εκείνες οι διορθώσεις που γράφαμε εκείνο το Σαββατοκύριακο και περιείχαν και τα ουσιαστικά ζητήματα πέρα από τα τυπογραφικά... τι απέγιναν; Υπάρχει καμία περίπτωση να τις δούμε ποτέ ενσωματωμένες στο βιβλίο; Τα περιείχαν όλα αυτά τα θέματα και άλλα πολλά.
Δυστυχώς από ότι άκουσα είχαν δύο προβλήματα, ένα στο να μη γίνει επανασελιδοποίηση (=κονδύλια) και ένα ακόμα στο ότι ήταν δύσκολο να συγκεντρώσουν ξανά όλη τη συγγραφική ομάδα ώστε να αποφανθεί γι' αυτά τα ζητήματα (=πάλι κονδύλια). Η καλή διάθεση δεν ήταν αρκετή...
Επομένως μόνο μέσω σχολικών συμβούλων, ώστε να φτάσει ο κόμπος στο χτένι, να αποφασίσουν να διαθέσουν κονδύλια και τότε να τους στείλουμε ξανά όλο το πακέτο.
Τι σχέση έχει το εμφάνισε. Είσοδος είναι το 1 και το 10000. Πώς έλυσες το πρόβλημα είναι άλλο θέμα. Αν η εκφώνηση ήταν διαφορετική 2 έως το 100 θα ήταν άλλα τα αποτελέσματα. Άρα τα αποτελέσματά σου εξαρτώνται από την εκφώνηση. ʼρα αυτά είναι είσοδος. Τις τιμές αυτές τις εισάγει ο προγραμματιστής για τη λύση του προβλήματος ενώ σε άλλα προβλήματα τις εισάγει ο χρήστης.
Νομίζω και εγώ ότι το εξαντλήσαμε το θέμα. Πάντως μπορεί να μην συμφωνήσαμε, αλλά οι κουβέντες αυτές κάνουν πιστεύω πολύ καλό σε μας και στο μάθημα. Ελπίζω κάποιος από τους "μεγάλους" να τις διαβάζουν και να καταλάβουν ότι δεν είναι δυνατόν να πετάνε μία πρόταση και να μας αφήνουν να ταλαντευόμαστε γύρω από τα ρήματα, τα αντικείμενα και τα υποκείμενά της για να βγάλουμε κάποια συμπεράσματα.
Παράθεση από: ntzios kostas στις 09 Οκτ 2008, 05:12:13 ΜΜ
Τι σχέση έχει το εμφάνισε. Είσοδος είναι το 1 και το 10000.
Έλεγα να το σταματήσουμε, αλλά να κάτι (ακόμα) που δεν κατάλαβα:
Δηλαδή μπορεί να έχουμε είσοδο ακόμα και χωρίς εντολές; Αφού το 1 και το 10000, η είσοδος όπως λες, δεν υπάρχουν πουθενά στον αλγόριθμο-λύση του προβλήματος...
Επομένως αν σε ένα θέμα μας δώσουν έναν αλγόριθμο και μας ζητήσουν αν έχει ή όχι είσοδο, και δεν μας δώσουν την εκφώνηση, δεν μπορούμε να απαντήσουμε;
Ή, με άλλα λόγια, το
Αλγόριθμος Καλημέρα
Εμφάνισε "Καλημέρα"
Τέλος Καλημέρα
που έγραψε παραπάνω ο Γιώργος, έχει είσοδο επειδή η εκφώνηση λέει να φτιάξουμε ένα πρόγραμμα που να εμφανίζει καλημέρα;
Νομίζω ότι μπλέκεις την είσοδο ενός αλγορίθμου με την εκφώνηση του προβλήματος! :)
(εκτός αν δεν κατάλαβα καθόλου τι εννοείς...)
Κάπως νομίζω ότι πάμε να βγάλουμε άκρη. Όταν λέμε είσοδο μιλάμε είσοδο κατά τη φάση εκτέλεσης του αλγόριθμου ή είσοδος κατά τη φάση δημιουργίας του αλγόριθμου; Πιστεύω κάπου εκεί υπάρχει η διαφορά μας. Αλλά δεν είμαι σίγουρος.
Κάνω παράθεση τις συνεπαγωγές που έκανα πριν:
ΠαράθεσηΤο σχολικό βιβλίο σελίδα 11 γράφει: Η σωστή επίλυση ενός προβλήματος προϋποθέτει τον ακριβή προσιορισμό των δεδομένων που παρέχει το πρόβλημα.=>
=>Τα δεδομένα αυτά είναι τα δεδομένα για την λύση του προβλήματος=> είναι τα δεδομένα για το πρόγραμμα που θα φτιάξω και θα λύσει το πρόβλημα. => όμως τα δεδομένα = είσοδος (εκτός αν δεν είναι)=> είσοδος είναι το 1 και το 10000 για το δικό μου πρόγραμμα που θα λύση το πρόβλημα.
Ε, κατά τη φάση εκτέλεσης προφανώς...
(τουλάχιστον για μένα, ας καταθέσουν κι οι άλλοι την άποψή τους...)
Δηλαδή αφού έχει σχεδιαστεί ένας αλγόριθμος, τον κοιτάμε από την πλευρά του εκτελεστή, και πρέπει να μπορούμε να δούμε ποια "κριτήρια" ικανοποιούνται χωρίς καν να γνωρίζουμε την εκφώνηση.
Εδώ πιστεύω είναι το πρόβλημα που δημιουργήθηκε. Σωστό είναι αυτό που λες αλλά μήπως είσοδος μπορεί να περιλαμβάνει και στοιχεία (δεδομένα) του ίδιου του προβλήματος; Περιμένω και εγώ την άποψη των υπολοίπων.
Παράθεση από: alkisg στις 09 Οκτ 2008, 01:51:49 ΜΜ
Εκτός όμως από πιο σωστό (κατά την άποψή μου), είναι και πιο απλό να υιοθετηθεί η άποψη του Knuth ότι τα κριτήρια δεν είναι κριτήρια αλλά χαρακτηριστικά (τα οποία έτσι κι αλλιώς μας παιδεύουν και πέρα από το συγκεκριμένο "κριτήριο" της εισόδου), παρά να αλλάξουμε την ίδια την έννοια της εισόδου (και δημιουργώντας έτσι πολύ περισσότερες ασυνέπειες και προβλήματα) στην προσπάθειά μας να δικαιολογήσουμε μια και μόνη λανθασμένη λέξη ("απαραίτητα").
Ωραία, αλλά δεν είναι λίγα τα σημεία στο βιβλίο που πρέπει να "επέμβουμε" και να διορθώσουμε. Όταν έχεις ένα βιβλίο όπου αρκετά γραφόμενα πρέπει να διορθώνεις αυτοβούλως ή να καταρρίπτεις είναι αρκετά επικίνδυνο, για το ίδιο το μάθημα το οποίο αρχίζει να αμφισβητείται απο τους μαθητές. Έτσι προτιμώ να ακολουθώ τους κανόνες του βιβλίου με το οποίο εξετάζονται (έστω κι αν είναι ασαφείς ή λανθασμένοι) παρά να μην έχω κανόνες. Μέχρι να διορθωθούν τα λάθη του βιβλίου και δεν μπαίνουν πια λάθος θέματα στις εξετάσεις.
Παράθεση από: alkisg στις 09 Οκτ 2008, 01:51:49 ΜΜ
Αν θες π.χ. να προετοιμάσεις τους μαθητές σου για ένα θέμα στις πανελλαδικές που να ζητάει "ποια είναι η είσοδος του παρακάτω αλγορίθμου;" πώς θα μπορέσεις να τους εξηγήσεις πότε μια ανάθεση τιμής θεωρείται είσοδος και πότε μια εντολή Για θεωρείται είσοδος;
Αν θες προσπάθησε με μένα σαν να είμαι μαθητής σου, χωρίς καμία διάθεση ειρωνίας πραγματικά δεν έχω καταλάβει σε ποιες περιπτώσεις θεωρείτε την ανάθεση τιμής είσοδο και σε ποιες περιπτώσεις όχι!
Δεν σε προτιμώ για μαθητή γιατί θα αμφισβητείς συνεχώς αυτά που λέει το βιβλίο :D
Σημείωσε ότι το
θεωρείται που έχω γράψει δεν είναι προσωπική άποψη αλλά αυτό που θεωρεί το βιβλίο, με βάση το οποίο εξετάζεται το μάθημα κι όχι με το τι υποστηρίζω εγώ ή εσύ. Και με βάση αυτό κρίνεται και βαθμολογείται ο μαθητής.
Παράθεση από: alkisg στις 09 Οκτ 2008, 01:51:49 ΜΜ
Ενώ με την άλλη, "μη αντίθετη" άποψη, είσοδος είναι μόνο η Διάβασε και τα Δεδομένα. Τελεία. Random και λοιπές "απλές εντολές παραγωγής πρωτογενών τιμών" δεν έχουμε στην ψευδογλώσσα και στη ΓΛΩΣΣΑ, οπότε είναι πολύ απλό να ξεχωρίζει κάποιος μαθητής την είσοδο. Και είναι συνεπές και με την έννοια της εισόδου γενικά (block διάγραμμα είσοδος / επεξεργασία / έξοδος) αλλά και με την έννοια της εξόδου, "Εμφάνισε" και "Αποτελέσματα". Αλλιώς θα πρέπει να αρχίσουμε την ίδια συζήτηση και για την έξοδο! :)
Την συζήτηση την έχουμε πιάσει παλαιότερα για την αποτελεσματικότητα, για τις συναρτήσεις, για την επίλεξε, για τις στατικές και δυναμικές δομές (στοίβα, ουρά) κ.α ..
Η μη αντίθετη άποψη είναι και η σωστή κατα τη γνώμη μου αλλά έλα ντε που ο συγγραφέας δεν το υποστηρίζει στο βιβλίο αλλά μόνο πρώτη φορά σε αυτό το thread και μάλιστα με χρησμό Πυθίας.
Μικρή όμως σημασία έχει το τι υποστηρίζω και τι λέω εγώ.
Το θέμα είναι τι διδάσκεται γενικά από όλους μας σε ένα Πανελλαδικώς εξεταζόμενο μάθημα.
Είσοδος (input).
Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται,
όταν ο αλγόριθμος
δημιουργεί και επεξεργάζεται κάποιες
πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Κατά την ταπεινή μου άποψη: Στον ορισμό, το κόκκινο αφορά στην εντολή Διάβασε. Μπορεί με το Διάβασε να δίνονται μία, πολλές ή και καμία τιμή δεδομένων [=από το πληκτρολόγιο απο τον χρήστη, ή απο άλλον αλγόριθμο].
Αν ΔΕΝ δίνεται ΚΑΜΙΑ τιμή με Διάβασε, τότε:
- χρησιμοποιείται συνάρτηση παραγωγής τυχαίων αριθμών, προφανώς η RANDOM, RAND ή κάτι τέτοιο στις γλώσσες προγραμματισμού. Εμείς στο σχολικό μας βιβλίο δεν έχουμε ΤΙΠΟΤΑ τέτοιο.
- Χρησιμοποιούνται απλές εντολές. Αναφέρεται στο παράδειγμα που ως επισκέπτης είχα παραθέσει στις 12/4/2006:
Αλγόριθμος ΚΥΡΙΑΚΟΣ
Β <- 1
Α <- Β+2
Εμφάνισε Α
Τέλος ΚΥΡΙΑΚΟΣ
που θεωρώ οτι η πρώτη εντολή (Β <- 1) αποτελεί είσοδο με τη χρήση απλών εντολών. Αλλιώς (απουσία της), ο αλγόριθμος δεν μπορεί να συνεχίσει
ΔΕ θεωρώ οτι όλες οι σταθερές τιμές στην κωδικοποίηση είναι είσοδος στον αλγόριθμο. Μόνο οι πρώτες εντολές εκχώρησης που τροφοδοτούν με τιμές που θα χρειαστούν στον αλγόριθμο.
Παράθεση από: alkisg στις 08 Οκτ 2008, 11:26:00 ΜΜ
Απάντηση του συγγραφέα του σχετικού κεφαλαίου:
Παράθεση
Με απλά λόγια θα έλεγα το εξής.
Συμφωνώ με εκείνους που λενε ότι ουσιαστικά το input δίνεται με το Διάβασε. Με την ίδια (αντίθετη) λογική και το α=1 και το for/while κλπ είναι είσοδος. Δηλαδή, εν τέλει κάθε ανάθεση είναι είσοδος ?
Άλκη, και γω με τη σειρά μου, θα ήθελα να ευχαριστήσω, το μέλος μιας συγγραφικής ομάδας, που μας έδωσε ένα βιβλίο με τις υπογραφές τους γεμάτο ασάφειες, που παλεύουμε όλοι εδώ χρόνια με κόπο και αγωνία να αμβλύνουμε και την πρώτη φορά που θυμάμαι να πρέπει να ασχοληθεί (αυτός/ή ή όποιο μέλος αυτής της ομάδας) με ένα απλό ανεπίσημο email, αφιερώνει 10 δευτερόλεπτα για απάντηση...
Πρώτα θα εκφράσω ένα <b>ευχαριστώ</b> στον Άλκη που έκανε τον κόπο να ενοχλήσει τον συγγραφέα.
Διαβάζοντας την απάντηση που έδωσε ο "ποιητής" , καθώς η απάντηση μου θυμίζει αφηρημένη τέχνη ή ποιήματα χωρίς νόημα, και όχι συγγραφέας, γιατί σαν συγγραφέας του συγκεκριμένου βιβλίου θα μπορούσε να πει τα πράγματα καλύτερα διατυπωμένα, τώρα καταλαβαίνω γιατί το βιβλίο έχει αυτά τα χάλια........
Σύμφωνα με την απάντηση......σκέφτομαι και αναρωτιέμαι:
α) ποια είναι είσοδος τελικά;
Δεδομένα, Διάβασε, απλές αναθέσεις τιμών στην αρχή του αλγορίθμου, for/while ;
β) ποια δεν είναι είσοδος τελικά;
εδώ;;;;;;;;;;;;;;;
Τα ίδια θα πω πάλι ουσιαστικά, απλά με άλλα λόγια. Ελπίζω να μην ακουστώ απότομος... :) :) :)
Παναγιώτη το ότι από το "άλλες απλές εντολές" συμπεραίνετε ότι μας κάνει μια οποιαδήποτε απλή εντολή είναι εντελώς μα εντελώς αυθαίρετο. Επίσης αυθαίρετο είναι το ότι διαλέγετε συγκεκριμένα την ανάθεση τιμής επειδή είναι απλή εντολή (είναι αλήθεια; υπάρχουν εντολές ανάθεσης με δεκάδες τελεστές και τελεστέους). Και τρίτη αυθαιρεσία είναι το ότι άλλοτε τη θεωρείτε εισόδου και άλλοτε όχι, και μάλιστα με έναν τελείως ασαφή τρόπο, ανάλογα π.χ. με το αν είναι στην αρχή του προγράμματος ή αν αναφέρεται στην εκφώνηση ή δεν ξέρω κι εγώ τι άλλο.
Τρεις αυθαιρεσίες λοιπόν. Επομένως μη στηρίζεστε στο βιβλίο για να δικαιολογήσετε ότι η ανάθεση είναι και είσοδος, το βιβλίο δεν γράφει τίποτα τέτοιο.
Γνώμη μου είναι ότι μιλάει για συγκεκριμένες απλές εντολές παρόμοιες με τη random και όχι οποιεσδήποτε. Για παράδειγμα, in al,θύρα (διάβασμα μιας πόρτας του Η/Υ - είτε ρολόι, είτε θερμοκρασία είτε ό,τι άλλο τυχαίο έχει).
Κι αυτό αυθαιρεσία είναι, δε λέω όχι. Αλλά τουλάχιστον είναι απλό, σαφές, μοιάζει και με τη λειτουργία της random και σέβεται και την έννοια της εισόδου (δεν είναι τυχαίο μάλιστα που η εντολή assembly λέγεται in).
Και τα δύο λοιπόν αυθαιρεσίες. Το θέμα είναι ότι αφού το βιβλίο δεν αναφέρει σαφώς κάποιο από τα δύο, δεν μπορούμε να χρησιμοποιήσουμε κανένα από τα δύο, έτσι δεν είναι;
Για τον συγγραφέα, ας τον αφήσουμε, γιατί δεν φταίει αυτός, πρώτη φορά μετά από τόσα χρόνια άκουσε κάποιον να του κάνει ερώτηση (και παρεμπιπτόντως αυτό που παρέθεσα ήταν το κομμάτι της απάντησης που μας ενδιέφερε, μου έγραψε και τα παράπονά του αλλά δεν τα ανέβασα). Δεν θα έπρεπε να τον είχαν φωνάξει από το Π.Ι. με τόσες απορίες που τους στείλαμε; Δεν θα έπρεπε να τον καλούσαν κάποια φορά στην επιτροπή θεμάτων; Πιστεύω ότι θα τους συμβούλευε να μην βάζουν θέματα που προάγουν την παπαγαλία αλλά την Πληροφορική σαν επιστήμη. Και δεν πιστεύω τότε ότι θα συζητούσαμε για τέτοιες ...να μη πω! :)
Υ.Γ. δεν ξέρω ποιο πρόβλημα λύνει ο παραπάνω αλγόριθμος, αλλά αν κάποιος μαθητής στον έλυνε έτσι:
Αλγόριθμος ΚΥΡΙΑΚΟΣ
Εμφάνισε 1 + 2
Τέλος ΚΥΡΙΑΚΟΣ
τι θα του έλεγες για την είσοδο; Δεν είναι γελοίο που η είσοδος "εξαφανίζεται" γράφοντας διαφορετικά τον ίδιο αλγόριθμο;
Υ.Γ. #2 θα ήταν χρήσιμο να ακούσουμε κι άλλες γνώμες γι' αυτό που είπαμε πιο πριν με τον Κώστα, αν δηλαδή η είσοδος αφορά τον αλγόριθμο ή το πρόβλημα. Δηλαδή αν δεν ξέρουμε την εκφώνηση δεν μπορούμε να καταλάβουμε εάν μια εντολή sum <- 0 είναι είσοδος ή όχι;
Ο αλγόριθμος και το πρόβλημα είναι διαφορετικά πράγματα. Μπορεί το πρώτο να φτιάχνεται για να λύσει το δεύτερο αλλά αυτό δεν τα κάνει ίδια.
Υπάρχουν προβλήματα που δεν έχουν αλγόριθμο που να τα λύνει (πχ το μη υπολογίσιμο πρόβλημα του τερματισμού).
Υπάρχουν προβλήματα που λύνονται το καθένα από αυτά από 2 διαφορετικούς αλγορίθμους.
Επίσης υπάρχουν διαφορετικά προβλήματα που λύνονται από τον ίδιο ακριβώς αλγόριθμο. Μιλάω για προβλήματα που αν και έχουν τελείως διαφορετική περιγραφή τελικά έχουν κρυμμένο το ίδιο μαθηματικό μοντέλο από πίσω τους και η επίλυσή τους απαιτεί την εκτέλεση πανομοιότυπων βημάτων.
Ο αλγόριθμος είναι απλώς ένα σύνολο ενεργειών. Μπορώ να φτιάξω ένα σύνολο ενεργειών χωρίς εκφώνηση πχ να γίνονται κάποιες τυχαίες πολύπλοκες πράξεις χωρίς κάποιο φυσικό νόημα. Ακόμα κι αν τις δεις δε θα μπορείς να πεις τι κάνουν και θα περιοριστείς σε μια περιγραφή της μορφής «γίνεται η τάδε πράξη»
δηλαδή θα πεις με λόγια αυτό που κάνει η πράξη.
Μόνο οι ενέργειες αυτές είναι αρκετές για να πούμε αν πληρείται ή όχι κάποιο κριτήριο. Τα κριτήρια αφορούν αλγορίθμους και όχι προβλήματα.
Τα προβλήματα έχουν άλλες κατηγορίες όσο αφορά το αν έχουν ακριβώς τα απαιτούμενα δεδομένα, αν έχουν περισσότερα ή λιγότερα (πχ καλώς τεθειμένα, υπερκαθορισμένα κλπ).
Τέλος να δώσω ένα παράδειγμα. Έστω το παρακάτω πρόβλημα:
«Να φτιαχτεί αλγόριθμος που διαβάζει ένα αριθμό και να εκτυπώνει το διπλάσιό του»
Και να ο αλγόριθμος σε ψευδογλώσσα:
Αλγόριθμος διπλασιασμός
Διάβασε x
y<-2
διπλάσιος <- y * x
Εμφάνισε διπλάσιος
Τέλος διπλασιασμός
Ποια είναι η είσοδος; Νομίζω πως κανείς δε θα πει ότι είναι και το x αλλά και το 2.
Συμφωνώ με Άλκη και Γιώργο, είσοδος είναι μόνο τα Διάβασε, Δεδομένα αφού δεν έχουμε συναρτήσεις παραγωγής τυχαίων.
Πρόκειται απλά για άλλη μια αστοχία του βιβλίου. Γιατί αυτή πρέπει να δικαιολογηθεί; Ανάμεσα στις άλλες τόσες έχουμε ακόμα μία.
Κατά τη γνώμη μου όλοι οι αλγόριθμοι του διδακτικού πακέτου αλλά και τα θέματα των εξετάσεων στα οποία δεν ζητείται είσοδος, πέραν του ότι είναι λάθος σύμφωνα με τον ορισμό (υποχρεωτική ικανοποίηση κριτηρίων)δεν είναι και παιδαγωγικά σωστά.
Εκτός από αυτά τα "κριτήρια" ή χαρακτηριστικά (πιο σωστά) που αναφέρει το βιβλίο, νομίζω θα έπρεπε να προστεθεί ακόμη ένα το οποίο έχει να κάνει με την ποιότητα του αλγορίθμου : η γενικότητα(generalness) ή αφαίρεση (abstraction).
Για μένα αλγόριθμος που βγάζει το ίδιο αποτέλεσμα κάθε φορά που εκτελείται δεν έχει νόημα. Τον εκτελείς μια φορά, σημειώνεις το αποτέλεσμα και τέλος.
Η διαφορά των 2 παρακάτω αλγορίθμων:
Αλγόριθμος διπλασιασμός1 Διάβασε x διπλάσιος ← 5 * Τ_Ρ(x) Εμφάνισε διπλάσιος Τέλος διπλασιασμός1
| | Αλγόριθμος διπλασιασμός2 x ← 1253 διπλάσιος ← 5 * Τ_Ρ(x) Εμφάνισε διπλάσιος Τέλος διπλασιασμός2
|
έγκειται στην πρώτη εντολή.
Στον δεύτερο αλγόριθμο, όπως λές Στάθη, η εκτέλεση θα δίνει πάντα το ίδιο αποτέλεσμα. Ο αλγόριθμος επιλύει ένα πρόβλημα, το να εμφανίσει το αποτέλεσμα. Είναι τα βήματα για την επίλυση ενός συγκεκριμένου προβλήματος.
Κατά τη γνώμη μου, η πρώτη εντολή, και μόνο αυτή, αποτελεί είσοδο.
Ο ορισμός αναφέρει πως όταν δεν δίνεται τιμή "...ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές...", άρα έχει το δικαίωμα ο ίδιος ο αλγόριθμος να ικανοποιήσει το κριτήριο της εισόδου.
Αν η διατύπωση στον ορισμό ήταν ηθελημένα έτσι ή δεν το ήθελαν δεν το γνωρίζω, αλλά δεν θεωρώ ασάφεια το συγκεκριμένο σημείο.
Εκφράζω τον εαυτό μου μόνο, και θεωρώ οτι η πρόταση:
"Ένας αλγόριθμος πρέπει απαραίτητα να έχει είσοδο" είναι Σωστή.
ΥΓ: Αν και όταν υπάρξει διευκρίνηση του ΠΙ για το θέμα αυτό, θα την υιοθετήσω χωρίς δεύτερη σκέψη.
Τυπικά μιλώντας η εντολή : x ← 1253 δεν είναι απαραίτητη
Αλγόριθμος διπλασιασμός1 Διάβασε x διπλάσιος ← 5 * Τ_Ρ(x) Εμφάνισε διπλάσιος Τέλος διπλασιασμός1 | Αλγόριθμος διπλασιασμός2 x ← 1253 διπλάσιος ← 5 * Τ_Ρ(x) Εμφάνισε διπλάσιος Τέλος διπλασιασμός2 | Αλγόριθμος διπλασιασμός3 Εμφάνισε 5 * Τ_Ρ(1253) Τέλος διπλασιασμός3 | Αλγόριθμος διπλασιασμός4 Εμφάνισε 176,98870020 Τέλος διπλασιασμός4
|
Ο αλγόριθμος διπλασιασμός4 είναι ισοδύναμος με τον διπλασιασμό2;Και οι δύο δίνουν την ίδια έξοδο όσες φορές και αν εκτελεστούν.Αν είναι έτσι, πώς γίνεται ένας αλγόριθμος με είσοδο να είναι ισοδύναμος με έναν που δεν έχει; Αν αυτό συμβαίνει σημαίνει πως η είσοδος είναι πλασματική, δεν παίζει κανένα ουσιαστικό ρόλο.
Μου φαίνεται πως πάμε να δικαιολογήσουμε τα αδικαιολόγητα ασφαλώς πάντα με καλή πρόθεση. Είναι σίγουρο πως ένας αλγόριθμος για να είναι χρήσιμος πρέπει να έχει είσοδο αλλά αυτή δεν δίνεται από τον προγραμματιστή, δίνεται από τον
edit:χρήστη.
Δηλαδή κάθε φορά που πρέπει να αλλαχτούν τα δεδομένα εισόδου πρέπει να φωνάζουμε τον προγραμματιστή ή πρέπει να επιβαρύνουμε τον χρήστη με την "επίπονη" εργασία αλλαγής του κώδικα;
Κάτι σαν το λίνουξ μου ακούγεται >:D
Κι αν ο προγραμματιστής γράφει έναν αλγόριθμο για την πάρτη του και είναι και εκτελεστής;
Και ναι, στο:
Αλγόριθμος διπλασιασμός3
Εμφάνισε 5 * Τ_Ρ(1253)
Τέλος διπλασιασμός3
το "5 * Τ_Ρ(1253)" είναι είσοδος :D
Παίρνοντας την εξαίσια αυτή ιδέα ένα βήμα παραπέρα ,θα έλεγα ότι αν και δεν υπάρχει σαφής ένδειξη στον διπλασιασμό4 η είσοδος υπονοείται και είναι η ίδια με αυτή του διπλασιασμού2, απλά ο προγραμματιστής μη έχοντας κάπου να δώσει λογαριασμό, αφού ο ίδιος χρησιμοποιεί και εκτελεί τα προγράμματά του, αποφάσισε να μην τη βάλει :D
Είσοδος (input). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Η πρώτη πρόταση με είχε απασχολήσει πολύ στο παρελθόν. Για την ακρίβεια δεν καταλάβαινα ποια είναι η διαφορά ανάμεσα στο να "μην έχει είσοδο" και στο να "έχει καμία είσοδο". Μετά από αρκετή σκέψη κατέληξα στο ότι στα πλαίσια του μαθήματος και για κάθε πρακτικό (= βαθμολογικό) λόγο, το κριτήριο αυτό είναι αδύνατον να παραβιαστεί. Τώρα, για την ουσία του πράγματος δεν έχω άποψη, αν δεν υπήρχε η τελευταία φράση ("ή με τη βοήθεια άλλων απλών εντολών") θα νόμιζα ότι αναφέρεται μόνο σε γεννήτριες τυχαίων αριθμών. Μέχρι να διευκρινιστούν ποιες απ όλες είναι αυτές οι "απλές εντολές", το μυστήριο για μένα θα παραμένει.
Αν φύγουμε λίγο από την ψευδογλώσσα και πάμε σε αλγόριθμους που δεν λύνονται με υπολογιστή.
Παρασκευή συνταγής μαγειρικής. Προγραμματιστής: Αυτός που έγραψε το βιβλίο μαγειρικής
Υπολογιστής:Ο Μάγειρας
Χρήστης: Ο Πελάτης
Ο Πελάτης ζητάει μουσακά. Ο μάγειρας θα εκτελέσει τα βήματα της αντίστοιχης σελίδας για τον μουσακά.
Στα βήματα αυτά υπάρχει είσοδος;Αν ναι ποια είναι;
Σκεφτείτε ότι οι περισσότερες μορφές αλγόριθμων που δεν εκτελεούνται από υπολογιστές λίγες είναι αυτές που ζητάνε από τον χρήστη τιμές εισόδου για παράδειγμα πόσο ξεροψημένος θέλεις να είναι ο μουσακάς σου.
Στο βιβλίο πάντως του Χαλάτση που είναι μετάφραση του ANDREW LISTER ως είσοδος του αλγόριθμου γράφει τα υλικά του μουσακά. Υλικά και ποσότητές που ο χρήστης δεν δίνει (ουτε ξέρει από τι αποτελείται ο μουσακάς), αλλά είναι καθορισμένα από το βιβλίο μαγειρικής και καθορίστηκαν από τον προγραμματιστή. Μελιτζάνες<- 2
Τότε όμως γιατί η "είσοδος" θεωρείται κριτήριο? Αυτό είναι που δεν καταλαβαίνω. Μπορεί δηλαδή κάποιος να φτιάξει μια άσκηση (ερώτηση κατανόησης) που αποτελείται από μια ακολουθία εντολών και ικανοποιεί όλα τα άλλα κριτήρια πλην της εισόδου?
Η μόνη είσοδος που μπορώ να σκεφτώ στο παράδειγμά σου είναι ο αριθμός των μερίδων (οπότε και ποσότητα υλικών) και η επιθυμία του πελάτη.
Η εντολή μελιτζάνες ← 2 δεν επιλέγει μία τιμή από ένα συγκεκριμένο σύνολο διαφορετικών πιθανών τιμών, οπότε κατά τη γνώμη μου δεν αποτελεί είσοδο. Αυτό δεν σημαίνει πως η συνταγή ή κάτι αντίστοιχο τέλος πάντων δεν είναι αλγόριθμος.
ΠαράθεσηΗ μόνη είσοδος που μπορώ να σκεφτώ στο παράδειγμά σου είναι ο αριθμός των μερίδων (οπότε και ποσότητα υλικών) και η επιθυμία του πελάτη.
Αυτό δεν είναι είσοδος. Είναι σαν να έχεις ένα σωρό προγράμματα στον υπολογιστή σου και κάνεις κλικ σε ένα από αυτά. Δεν είναι είσοδος για το συγκεκριμένο πρόγραμμα ότι το επέλεξες μεταξύ των άλλων.
Για τον αλγόριθμο ΕκτέλεσεΣυνταγήΤσελεμεντέ η επιλογή συνταγής είναι είσοδος.
Για τον αλγόριθμο ΦτιάξεΜουσακά προφανώς δεν είναι. Σε αυτή την περίπτωση τότε μόνο ο αριθμός των μερίδων.
Παράθεση από: Michael στις 13 Οκτ 2008, 08:33:41 ΜΜ
Τώρα, για την ουσία του πράγματος δεν έχω άποψη, αν δεν υπήρχε η τελευταία φράση ("ή με τη βοήθεια άλλων απλών εντολών") θα νόμιζα ότι αναφέρεται μόνο σε γεννήτριες τυχαίων αριθμών. Μέχρι να διευκρινιστούν ποιες απ όλες είναι αυτές οι "απλές εντολές", το μυστήριο για μένα θα παραμένει.
Michael φαντάσου ότι είσαι ένας αλγόριθμος:
Ο επεξεργαστής βαριεστημένα εκτελεί τις εντολές σου. Αναθέσεις τιμής, πράξεις, πίνακες κτλ απλά απασχολούν την ALU, τν FPU και γράφουν στη RAM, τίποτα σπουδαίο. Ξαφνικά όμως μια εντολή Διάβασε σου λέει να κάνεις κάτι συνταρακτικό, να έρθεις σε επαφή με τον έξω κόσμο! Εκτελείται λοιπόν μια εντολή in al,61h και διαβάζεις από τη θύρα του πληκτρολογίου. Να μια είσοδος, μια τιμή από ένα σύνολο τιμών η οποία μπορεί να αλλάξει τα αποτελέσματα του αλγορίθμου.
Στη συνέχεια έρχεται ένα interrupt που λέει ότι κουνήθηκε το ποντίκι. Διαβάζεις από τη σειριακή θύρα, in al,3f8h (σόρρυ δεν έχω ενημερωθεί για τις USB) και έχεις άλλη μία είσοδο.
Μετά ο αλγόριθμος γράφει στην οθόνη ή στον εκτυπωτή και έχεις έξοδο.
Αλλά έχει τελειώσει το χαρτί του εκτυπωτή, οπότε στέλνει σήμα και έχεις πάλι μια νέα πληροφορία που μπορεί να αλλάξει τα αποτελέσματα του αλγορίθμου.
Τότε καλείς έναν άλλο αλγόριθμο, ο οποίος θα βγάλει ένα διάλογο στο χρήστη και θα του ζητήσει να πατήσει "ΟΚ" ή "Ακύρωση εκτύπωσης". Η τιμή που σου επιστρέφει ο αλγόριθμος αυτός πάλι είναι είσοδος για σένα. Ενώ για τον αλγόριθμο "διάλογος", είσοδος ήταν το κουμπί που πάτησε ο χρήστης.
Εν ολίγοις,
είσοδος είναι οτιδήποτε μπορεί να μεταβάλλει τα αποτελέσματα του αλγορίθμου αφού έχει προηγουμένως ξεκινήσει η εκτέλεσή του. Οποιαδήποτε πληροφορία δηλαδή μπορεί να πάρει από το "εξωτερικό" περιβάλλον του.
Για παράδειγμα αλγορίθμου χωρίς είσοδο, δες λίγο παραπάνω τα μηνύματα σχετικά με τον υπολογισμό των 10000 πρώτων αριθμών.
Όσοι αλγόριθμοι δεν έχουν είσοδο, έχουν πάντα το ίδιο αποτέλεσμα, επομένως μπορούν να αντικατασταθούν από μία και μοναδική εντολή Εμφάνισε.Και γι' αυτό η είσοδος είναι σημαντική, γιατί αλλιώς οι αλγόριθμοι είναι χρήσιμοι μόνο την πρώτη φορά που θα εκτελεστούν. Αφού τρέξουν μια φορά, τους πετάμε και σημειώνουμε κάπου το αποτέλεσμα... Δεν θα έλεγα ότι δεν είναι αλγόριθμοι, όπως ισχυρίζεται το βιβλίο (οπότε με αναγκάζει να το λέω κι εγώ), αλλά θα έλεγα ότι είναι κακοσχεδιασμένοι.
ΠαράθεσηΓια παράδειγμα αλγορίθμου χωρίς είσοδο, δες λίγο παραπάνω τα μηνύματα σχετικά με τον υπολογισμό των 10000 πρώτων αριθμών. Όσοι αλγόριθμοι δεν έχουν είσοδο, έχουν πάντα το ίδιο αποτέλεσμα, επομένως μπορούν να αντικατασταθούν από μία και μοναδική εντολή Εμφάνισε.
Και γι' αυτό η είσοδος είναι σημαντική, γιατί αλλιώς οι αλγόριθμοι είναι χρήσιμοι μόνο την πρώτη φορά που θα εκτελεστούν. Αφού τρέξουν μια φορά, τους πετάμε και σημειώνουμε κάπου το αποτέλεσμα... Δεν θα έλεγα ότι δεν είναι αλγόριθμοι, όπως ισχυρίζεται το βιβλίο (οπότε με αναγκάζει να το λέω κι εγώ), αλλά θα έλεγα ότι είναι κακοσχεδιασμένοι.
Γενικότερα δεν συμφωνώ ότι είναι κακοσχεδιασμένοι οι αλγόριθμοι. Κακοσχεδιασμένο ίσος είναι το πρόβλημα για το οποίο δημιουργήθηκαν. Αλλά και πάλι αν βάλουμε το παράδειγμα με το μουσακά που ανέφερα παράπανω οι χρήστες είναι πολλοί του αλγόριθμου, ίσως και οι ίδιοι κάθε φορά. Το αποτέλεσμά του δεν είναι πάντα αριθμός που το σημείωσα και πάντα θα τον έχω σημειωμένο, αλλά μπορεί να είναι μία πάστα που την έφαγα και θέλω και άλλη. :)
Κώστα επειδή οι οδηγίες μαγειρικής δεν ικανοποιούν όλα τα "κριτήρια" των αλγορίθμων, είναι ακατάλληλοι σαν παραδείγματα, καλύτερα να μη συζητάμε γι' αυτούς αλλά για κάποιο άλλο παρόμοιο παράδειγμα των Η/Υ.
Ας πούμε λοιπόν ότι κάποιος ζητάει αλγόριθμο για το κακοδιατυπωμένο πρόβλημα του "να τυπώνει πάντα μια συγκεκριμένη σελίδα στον εκτυπωτή".
Σε αντιστοιχία με την μαγειρική, το αποτέλεσμα (=πάστα) είναι η σελίδα, τα υλικά είναι τα γράμματα και τα σχέδια που θέλουμε να έχει η σελίδα, και δουλειά του αλγορίθμου είναι να μετατρέψει αυτά τα υλικά σε δισδιάστατο πίνακα από pixels, δηλαδή να κάνει rasterize τις γραμματοσειρές, να ζωγραφίσει κύκλους και ορθογώνια κτλ. Δηλαδή με ορολογία Πληροφορικής ο αλγόριθμος είναι ένα πρόγραμμα postscript to bitmap.
Δεν αντιλέγω ότι ο "πελάτης" που ζητάει το συγκεκριμένο αλγόριθμο θεωρεί ότι είναι χρήσιμος: ναι, θέλουμε να φάμε πολλές πάστες. Ναι, θέλουμε να εκτυπώνουμε κάθε μέρα πολλές φορές την ίδια σελίδα.
Ο σχεδιαστής όμως του αλγορίθμου θα πρέπει να σκεφτεί διαφορετικά. Αφού θα φτιάξει που θα φτιάξει postscript to bitmap converter, δεν έχει κανένα νόημα να τον περιορίσει by hardcoding την είσοδο.
Φτιάχνει λοιπόν έναν αλγόριθμο
Αλγόριθμος ΣχεδίασεΣελίδα
Δεδομένα //postscript//
...
Αποτελέσματα //bitmap//
Τέλος ΣχεδίασεΣελίδα
Ναι αλλά ο πελάτης δεν θέλει να πληκτρολογεί κάθε φορά τα δεδομένα.
Αυτός λοιπόν είναι ο ρόλος των αρχείων, και γι' αυτό βάζουμε τα δεδομένα που θέλει ο πελάτης σε ένα αρχείο .ps (ή .pdf ή .doc κτλ).
Επομένως ο τελικός μας αλγόριθμος θα ήταν
Αλγόριθμος ΤύπωσεΣελίδα
Δεδομένα //όνομα αρχείου postscript//
..
Αποτελέσματα //bitmap//
Τέλος
Ναι αλλά ο πελάτης δεν θέλει ούτε καν να ανοίγει το συγκεκριμένο αρχείο, θέλει να κάνει διπλό κλικ σε μια συντόμευση στην επιφάνεια εργασίας και να τυπώνεται χωρίς να πληκτρολογεί δεδομένα.
Εδώ λοιπόν μπαίνει στο παιχνίδι το user interface του λειτουργικού, που είναι άλλος αλγόριθμος.
Συγκεκριμένα στα Windows θα κάναμε συντόμευση για το πρόγραμμα ΤύπωσεΣελίδα, και θα του δίναμε παράμετρο (=πάλι είσοδος) το όνομα αρχείου της σελίδας του πελάτη.
Δηλαδή
C:\TupwseSelida.exe C:\Users\Pelatns\Documents\Arxeio.ps
Κι αν δεν μιλάμε για Windows αλλά για μηχάνημα κατασκευής καφέ, το user interface αντιστοιχεί το κουμπάκι που πατάει ο χρήστης για να διαλέξει τι καφέ θέλει.
Αυτό που λέω είναι ότι ακόμα και για κακοδιατυπωμένα προβλήματα δεν πρέπει να σχεδιάζουμε κακοσχεδιασμένους αλγορίθμους (όχι ΤύπωσεΣελίδαΣυγκεκριμένουΠελάτη αλλά ΤύπωσεΣελίδα).
Το σωστότερο βέβαια ειδικά στην εκπαίδευση είναι να μην δίνουμε καν κακοδιατυπωμένα προβλήματα στους μαθητές...
Παρεμπιπτόντως, το ερώτημα του αν ένας (καλοσχεδιασμένος) αλγόριθμος που δεν έχει είσοδο μπορεί να θεωρηθεί αλγόριθμος, θεωρώ ότι είναι ισοδύναμο με το κατά πόσο μια συντόμευση των Windows (ή μία εντολή του DOS) μπορεί να χαρακτηριστεί αλγόριθμος.
Όλα αυτά που είπες Άλκη είναι σωστά. Μπορεί να κρίνεις ότι ένας αλγόριθμος δεν είναι καλοσχεδιασμένος και εγώ μαζί σου, αλλά όμως παρ'όλο που είναι κακοσχεδιασμένος παραμένει αλγόριθμος.
Όπως πολύ καλά είπε και ο Laertis. To βασικό μας θέμα είναι τι θα λέμε στους μαθητές μας. Έτσι όπως είναι τα πράγματα οι επιλογές μας είναι δύο
ή ότι η είσοδος μπορεί να είναι το κενό
ή στοιχεία εισόδου μπορούν να έρθουν από την ίδια την εκφώνηση.
ΠαράθεσηΑυτό που λέω είναι ότι ακόμα και για κακοδιατυπωμένα προβλήματα δεν πρέπει να σχεδιάζουμε κακοσχεδιασμένους αλγορίθμους
. Στην άσκηση με το υπολογιστικό σύστημα των εξετάσεων του 2001. Αν ο μαθητής έπερνε πρωτοβουλία και έλεγε αντί για 600000 την αξία του υπολογιστή έγραφε
διάβασε αξία
χρ_τσέπη<- 5000
χρ_γονέων<-5000
όσο χρ_τσεπη< αξία επανάλαβε
....
θα έπαιρνε άριστά;
Έχει πλάκα αυτό το παράδειγμα, αυτό σκεφτόμουν όταν έλεγα για άστοχα θέματα λόγω μη ύπαρξης πραγματικής εισόδου.
Τι γίνεται στην περίπτωση που ο μαθητής υπολογίσει με μη συμβατό τρόπο αυτό που ζητείται και η απάντησή του είναι κάπως έτσι. Προφανώς ο αλγόριθμός του δίνει την ίδια λύση.
Αλγόριθμος θέμα
Εβδομάδες <- 7 !Υπολογισμός κάπως έτσι : την πρώτη εβδομάδα 5, την δεύτερη 15, την τρίτη 35.... οπότε 7 εβδομάδες
Εμφάνισε εβδομάδες
Τέλος θέμα
Ένα άστοχο θέμα του παρελθόντος δεν πρέπει να επηρεάζει την κρίση μας για το τι είναι σωστό και συμβαδίζει με την πληροφορική γενικότερα. Αν είναι να θεωρούμε τα θέματα και το κείμενο του βιβλίου σωστά εκ των προτέρων το πιο πιθανό είναι να καταλήγουμε σε λογικά αδιέξοδα...
Ναι αυτό πράγματι θα είχε πλάκα γιατί αν κατάλαβα καλά πρόκειται για το άθροισμα n όρων μια γεωμετρικής προόδου με πρώτο όρο το 5000 και λόγο 2. Το άθροισμα αυτό θα ήταν
Σ = 5000 + 2*5000 + 2*(2*5000) + 2(*2*(2*5000) ) + ....
όμως αυτό όπως γνωρίζουν οι μαθητές είναι : Σ = 5000 * (2^ν - 1) / (2-1) = 5000*(2^ν - 1)
βάζουμε Σ = 600000 και λύνουμε ως προς ν με χρήση λογαρίθμου. Θέλουμε το ελάχιστο ν έτσι ώστε Σ >= 600000
Οπότε ο αλγόριθμος είναι απλά μια εντολή εκχώρησης. Ένας μαθητής που είναι δυνατός στα μαθηματικά θα μπορούσε να το είχε σκεφτεί.
ακόμα και αν διαβάζεται η αξία του υπολογιστή, πάλι δε λύνεται με μια εντολή εκχώρησης η άσκηση;
Επειδή βαριέμαι να ψάξω το θέμα, απαντώ στο περίπου:
ΨευτοΑλγόριθμος Άσκηση
Δεδομένα // κανένα, κάνετε λάθος που βάζετε αυτή την άσκηση //
ΠραγματικόςΑλγόριθμοςΥπολογισμού(5000, 5000, 60000, εβδομάδες)
Αποτελέσματα // εβδομάδες //
Τέλος ʼσκηση
Αλγόριθμος ΠραγματικόςΑλγόριθμοςΥπολογισμού
Δεδομένα // λεφτά_τσέπης, λεφτά_γονιών, αξία, εβδομάδες //
...εδώ λύνεται με σωστό σχεδιασμό το κακοδιατυπωμένο πρόβλημα...
Αποτελέσματα // εβδομάδες //
Τέλος ΠραγματικόςΑλγόριθμοςΥπολογισμού
Πιστεύω ότι ένας μαθητής που θα έγραφε το παραπάνω έχει κατανοήσει καλύτερα από τους συγκεκριμένους θεματοδότες τις έννοιες των αλγορίθμων.
Είναι 100% σωστός με βάση το βιβλίο αν το γράψει έτσι, δεν μπορεί να του κόψει κανένας καμία μονάδα (εκτός από το Ψευτο- πρόθεμα και τα ψευτοδεδομένα που χαριτολογώντας έβαλα στην αρχή).
Ο ΨευτοΑλγόριθμος που ισοδυναμεί με την ψευτο-είσοδο, ισοδυναμεί επίσης με μια συντόμευση των Windows...
ΠαράθεσηΕν ολίγοις, είσοδος είναι οτιδήποτε μπορεί να μεταβάλλει τα αποτελέσματα του αλγορίθμου αφού έχει προηγουμένως ξεκινήσει η εκτέλεσή του. Οποιαδήποτε πληροφορία δηλαδή μπορεί να πάρει από το "εξωτερικό" περιβάλλον του. Για παράδειγμα αλγορίθμου χωρίς είσοδο, δες λίγο παραπάνω τα μηνύματα σχετικά με τον υπολογισμό των 10000 πρώτων αριθμών. Όσοι αλγόριθμοι δεν έχουν είσοδο, έχουν πάντα το ίδιο αποτέλεσμα, επομένως μπορούν να αντικατασταθούν από μία και μοναδική εντολή Εμφάνισε.
Και γι' αυτό η είσοδος είναι σημαντική, γιατί αλλιώς οι αλγόριθμοι είναι χρήσιμοι μόνο την πρώτη φορά που θα εκτελεστούν. Αφού τρέξουν μια φορά, τους πετάμε και σημειώνουμε κάπου το αποτέλεσμα... Δεν θα έλεγα ότι δεν είναι αλγόριθμοι, όπως ισχυρίζεται το βιβλίο (οπότε με αναγκάζει να το λέω κι εγώ), αλλά θα έλεγα ότι είναι κακοσχεδιασμένοι.
Συμφωνώ απόλυτα μαζί σου Άλκη. Η έννοια την εισόδου είναι δυναμική έννοια. (Θεωρία συστημάτων αυτομάτου ελέγχου). ʼρα καμμία είσοδος σε ένα αλγόριθμο είναι ένας αλγόριθμος χωρίς διάβασε. Αυτό δεν σημαίνει ότι δεν είναι αλγόριθμος απλά θα έλεγα ότι είναι ένας στατικός αλγόριθμος.
Έστω ότι φτιάχνουμε 2 αλγορίθμους που λύνουν την δευτεροβάθμια εξίσωση. Στον πρώτο οι συντελεστές δίνονται με εντολή διάβασε και στο δεύτερο με <-- εσωτερικά. Θα λέγαμε ότι ο πρώτος έχει 3 εισόδους και ο δεύτερος καμμία. Και οι 2 αλγόριθμοι είναι σωστοί με βάση το κριτήριο της εισόδου. Άρα αλγόριθμος χωρίς διάβασε και με <-- είναι καμμία είσοδος. Αλγόριθμος χωρίς διάβασε και χωρίς <-- δεν είναι αλγόριθμος γιατί δεν επιλύει κανένα πρόβλημα.
Αλλά Βασίλη, πως γίνεται να μην έχει κανείς πρόβλημα εισόδου και ο δεύτερος να μην έχει είσοδο;
Συμφωνώ με το τρόπο που πας να το παρουσιάσεις, μια πιθανή επανδιατύπωση θα με βρει ακόμα πιο σύμφωνο
Άρα συνοψίζοντας θα έλεγα τα εξής : Ένα από τα κριτήρια του σωστού αλγορίθμου (σωστός αλγόριθμος αυτός που επιλύει προβλήματα) είναι η είσοδος (καμμία, μία ή περισσότερες). Καμμία είσοδος σημαίνει όχι διάβασε και να υπάρχουν <-- οπότε μπορεί να επιλύει πρόβλημα άρα είναι σωστός αλγόριθμος (με το ορισμό του προβλήματος που ξέρουμε που δεν έχει λύση γνωστή ή προφανής, παράδειγμα σύστημα 3Χ2 εξισώσεων με τους συντελεστές δοσμένους με <--) . Αν δεν έχει ούτε διάβασε ούτε <-- παραβιάζει το κριτήριο της εισόδου με την έννοια ούτε καμμία (σημαίνει όχι διάβασε και να υπάρχουν <--), ούτε μια η παραπάνω (διάβασε).
Αλγόριθμος μήνυμα
Εμφάνισε 'Καλημέρα'
Τέλος
Παραβιάζει το κριτήριο της εισόδου. (Ούτε καμμία είσοδος, που σημαίνει όχι διάβασε και ναι <--, ούτε μία οι περισσότερες που σημαίναι ένα ή περισσότερα διάβασε). Άλλωστε προφανώς ο παραπάνω δεν είναι σωστός αλγόριθμός γιατί δεν μπορώ να σκεφτώ ποιό πρόβλημα επιλύει!!
Νομίζω ότι κάνουμε κύκλους πάλι.
Για μένα είναι αυτονόητο ότι καμία είσοδος σημαίνει ότι δεν υπάρχει είσοδος και ότι παραβιάζεται το κριτήριο ή χαρακτηριστικό της εισόδου.
Πως είναι δυνατόν η μή ύπαρξη (καμία) να είναι τελικά ύπαρξη (μη παραβίαση του κριτηρίου).
Αν απαντηθεί αυτό νομίζω μετά πρέπει να μας βασανίσει το ερώτημα για τη Ζωή το Σύμπαν και τα Πάντα, ε Άλκη; 8)
Τώρα αν κάποιος μου πει.
Αλγόριθμος μήνυμα
Χ<--'Καλημέρα'
Εμφάνισε χ
Τέλος
είναι αυτός σωστός αλγόριθμος; Η απάντηση είναι όχι διότι χρησιμοποίησες την εντολή <-- μόνο για να πληρεί οπτικά τα κριτήρια του σωστού αλγορίθμου. Ουσιαστικά όμως πάλι δεν επιλύει πρόβλημα. Άρα παραδείγματα αλγορίθμων που έχουν βελάκια χωρίς να είναι απαραίτητα για να επιλύουν κάποιο πρόβλημα και επομένως μπορούν να εκφυλιστουν τελικά σε αλγορίθμους χωρίς βελάκια δεν είναι σωστοί αλγόριθμοι.
Συνάδελφοι πάνω σε αυτό ακριβώς, δώστε μια παραπάνω εξήγηση μπας και καταλάβω τι εννοείτε:
Έστω το απλό πρόβλημα "κάντε έναν αλγόριθμο που να μετράει από το Α ως το Τ με βήμα Β".
Κάποιος το δίνει σαν (κακοδιατυπωμένη κατά την άποψή μου) άσκηση με συγκεκριμένα νούμερα:
"κάντε έναν αλγόριθμο που να μετράει από το 1 ως το 10 με βήμα 2"
Ένας μαθητής το λύνει με αναθέσεις τιμής:
Α <- 1
Τ <- 10
Β <- 2
Για ι από Α μέχρι Τ με_βήμα Β
Εμφάνισε ι
τέλος_επανάληψης
Ένας άλλος μαθητής το λύνει χωρίς αναθέσεις τιμής:
Για ι από 1 μέχρι 10 με_βήμα 2
Εμφάνισε ι
τέλος_επανάληψης
Τι διαφορά έχουν τα δύο παραπάνω όσον αφορά στην είσοδο, όπως την ορίζετε;
@sstergou: 42 (http://en.wikipedia.org/wiki/Answer_to_Life,_the_Universe,_and_Everything) ;)
ΠαράθεσηΣυνάδελφοι πάνω σε αυτό ακριβώς, δώστε μια παραπάνω εξήγηση μπας και καταλάβω τι εννοείτε:
Έστω το απλό πρόβλημα "κάντε έναν αλγόριθμο που να μετράει από το Α ως το Τ με βήμα Β".
Κάποιος το δίνει σαν (κακοδιατυπωμένη κατά την άποψή μου) άσκηση με συγκεκριμένα νούμερα:
"κάντε έναν αλγόριθμο που να μετράει από το 1 ως το 10 με βήμα 1"
Ένας μαθητής το λύνει με αναθέσεις τιμής:
Α <- 1
Τ <- 10
Β <- 2
Για ι από Α μέχρι Τ με_βήμα Β
Εμφάνισε ι
τέλος_επανάληψης
Ένας άλλος μαθητής το λύνει χωρίς αναθέσεις τιμής:
Για ι από 1 μέχρι 10 με_βήμα 2
Εμφάνισε ι
τέλος_επανάληψης
Τι διαφορά έχουν τα δύο παραπάνω όσον αφορά στην είσοδο, όπως την ορίζετε;
Η άποψη μου είναι η εξής: οι αλγόριθμοι που γράφεις εκφυλίζονται σε:
Αλγόριθμος μέτρημα
Εμφάνισε '1'
Εμφάνισε '3'
Εμφάνισε '5'
Εμφάνισε '7'
Εμφάνισε '9'
Εμφάνισε '11'
Τέλος
Άρα παραβιάζουν το κριτήριο της εισόδου (ούτε καμμία, ούτε μια η περισσότερες είσοδοι). Φαίνεται άλλωστε καθαρά ότι δεν είναι σωστός αλγόριθμος γιατί το πρόβλημα να μετρήσω από το 1 μέχρι το 11 ανά δύο δεν είναι πρόβλημα που η λύση του δεν είναι γνωστή ούτε προφανής!!!
Παράθεση από: sstergou στις 14 Οκτ 2008, 05:14:18 ΜΜ
Νομίζω ότι κάνουμε κύκλους πάλι.
Για μένα είναι αυτονόητο ότι καμία είσοδος σημαίνει ότι δεν υπάρχει είσοδος και ότι παραβιάζεται το κριτήριο ή χαρακτηριστικό της εισόδου.
Πως είναι δυνατόν η μή ύπαρξη (καμία) να είναι τελικά ύπαρξη (μη παραβίαση του κριτηρίου).
Αν απαντηθεί αυτό νομίζω μετά πρέπει να μας βασανίσει το ερώτημα για τη Ζωή το Σύμπαν και τα Πάντα, ε Άλκη; 8)
Μη βιάζεσαι Στάθη, έχουμε να πιάσουμε και το κριτήριο της εξόδου και της αποτελεσματικότητας. Εκεί να δεις .... :D
Η έννοια του αλγορίθμου σχετίζεται με την έννοια του προβλήματος (γενική κατάσταση με όχι γνωστή και προφανή λύση). Αν το λάβουμε αυτό υπόψη πιστεύω θα σταματήσουμε να δίνουμε παραδείγματα που ουσιαστικά με κάτι που έχει την μορφή αλγορίθμου ουσιαστικά δεν λύνουμε προβλήματα γι αυτό και εκφυλίζονται τελικά σε κάτι με μορφή αλγόριθμου χωρίς <-- και χωρίς διάβασε άρα παραβιάζουν το κριτήριο της εισόδου (παραβιάζουν το κριτήριο της εισόδου δεν σημαίνει καμμία είσοδος) άρα όχι σωστός αλγόριθμος.
Παράθεση από: Σούλας Βασίλειος στις 14 Οκτ 2008, 05:37:52 ΜΜ
Αν το λάβουμε αυτό υπόψη πιστεύω θα σταματήσουμε να δίνουμε παραδείγματα που ουσιαστικά με κάτι που έχει την μορφή αλγορίθμου ουσιαστικά δεν λύνουμε προβλήματα γι αυτό και εκφυλίζονται τελικά σε κάτι με μορφή αλγόριθμου χωρίς <-- και χωρίς διάβασε άρα παραβιάζουν το κριτήριο της εισόδου (αυτό δεν σημαίνει καμμία είσοδος)
Μα όλοι οι αλγόριθμοι για τους οποίους δεν υπάρχει είσοδος όπως την κατανοώ εγώ (Διάβασε, Δεδομένα στην περίπτωσή μας) μπορούν να εκφυλιστούν σε αλγόριθμους χωρίς εκχώρηση.
Αυτό σημαίνει ότι δεν είναι σωστοί ή ότι δεν λύνουν κάποιο πρόβλημα;
Γιώργο, δεν έχει συζητηθεί ακόμη τι είναι δεδομένο ή μήπως κάνω λάθος :)
Αλγόριθμος σύστημα3επι2
α1<--3
β1<--6
γ1<--9.3
α2<--3.8
β2<--6
γ2<---2.3
α3<--3
β3<--6
γ3<---9.3
.
.
.
.
.
Τέλος
Ο παραπάνω είναι ένας αλγόριθμος που λύνει ένα σύστημα εξισώσεων 3Χ2 (δεν τον έκανα ολόκληρο). Η λύση του συγκεκριμένου προβλήματος δεν είναι γνωστή ούτε προφανής. Άρα οποιοσδήποτε είχε να λύσει ένα τέτοιο πράγμα επειδή εμπίπτει στον ορισμό του προβλήματος θα χρησιμοποιούσε ένα αλγόριθμο με <-- και όχι τον εκφυλισμένο γιατί για να γράψει τον εκφυλισμένο τότε θα έπρεπε να το λύσει στο χαρτί πριν (αλγόριθμος με ελεύθερο κείμενο όπου αντί για βελάκια το =) (μη προφανής η λύση που λέγαμε). Αλλά το να μετράω από το 1 μέχρι το 11 δεν είναι πρόβλημα με μη προφανή λύση για αυτό και χωρίς να φτιάξω κάτι στο χαρτί γράφω τον εκφυλισμένο
Αλγόριθμος μέτρημα
Εμφάνισε '1'
Εμφάνισε '3'
Εμφάνισε '5'
Εμφάνισε '7'
Εμφάνισε '9'
Εμφάνισε '11'
Τέλος
ʼρα πάντα εξετάζουμε την έννοια του αλγορίθμου σε σχέση με το πρόβλημα το οποίο χρονικά προηγείται της κατασκευής του αλγορίθμου. Ο αλγόριθμος για να είναι σωστός πρέπει να επιλύει προβλήματα (όχι γνωστή και μη προφανής λύση). Προβλήματα με γνωστή λύση ή προφανή λύνονται με κάτι που έχει την μορφή αλγορίθμου χωρίς διάβασε χωρίς <-- άρα παραβιάζουν το κριτήριο της εισόδου και ουσιαστικά δεν είναι σωστοί αλγόριθμοι.
Και τι θεωρείται προφανές;
Κάτι που είναι προφανές για σένα μπορεί εγώ να μην το καταλαβαίνω. Είναι δυνατόν αυτό να αποτελέσει κριτήριο για το αν ένας αλγόριθμος έχει είσοδο ή όχι;
Οι εκχωρήσεις στην αρχή του παραδείγματός σου έχουν καθαρά πρακτικό λόγο ύπαρξης. Θα μπορούσες κάλλιστα να μην τις έχεις βάλει και να χρησιμοποιήσεις τις πραγματικές τιμές όπου αυτό είναι απαραίτητο.
Για το πρόβλημα βρες την τετραγωνική ρίζα του 8475; Δεν νομίζω η λύση να είναι προφανής.
Και όμως μπορείς να γράψεις Εμφάνισε Τ_Ρ(8475).
ΠαράθεσηΚαι τι θεωρείται προφανές;
Κάτι που είναι προφανές για σένα μπορεί εγώ να μην το καταλαβαίνω. Είναι δυνατόν αυτό να αποτελέσει κριτήριο για το αν ένας αλγόριθμος έχει είσοδο ή όχι;
Προφανής λύση είναι να λύσω παράδειγμα το εξής πρόβλημα. Να γραφεί ένας αλγόριθμος που να μετρά από το 1 μέχρι το 10. Συμφωνείς;
Μπορείς κατευθείαν να γράψεις τον ''αλγόριθμο'' αυτό με κωδικοποίηση χωρίς καμμία άλλη ενέργεια; Χρειάζεσαι βελάκια; Πιστεύω όχι. Άρα ούτε βελάκια ούτε διάβασε άρα παραβίαση του κριτηρίου εισόδου.
ΠαράθεσηΟι εκχωρήσεις στην αρχή του παραδείγματός σου έχουν καθαρά πρακτικό λόγο ύπαρξης. Θα μπορούσες κάλλιστα να μην τις έχεις βάλει και να χρησιμοποιήσεις τις πραγματικές τιμές όπου αυτό είναι απαραίτητο.
έχουν ουσιαστικό λόγο ύπαρξης γιατί έχω ένα πρόβλημα με γνωστή λύση αλλά μη προφανή. εαν σου δώσω ένα σύστημα 3 επι 2 μπορείς να γράψεις κατευθείαν αλγόριθμο με εμφάνιση της λύσης (όχι σχηματισμό της λύσης μέσα στην εμφάνισε) χωρίς προηγουμένως στο χαρτί να το λύσεις (άρα αλγόριθμο πάλι με =); Όχι. ʼρα θα χρησιμοποιήσεις <-- και θα γράψεις την λύση.
ΠαράθεσηΓια το πρόβλημα βρες την τετραγωνική ρίζα του 8475; Δεν νομίζω η λύση να είναι προφανής.
Και όμως μπορείς να γράψεις Εμφάνισε Τ_Ρ(8475).
Συμφωνώ. Καλείς την συνάρτηση Τ_Ρ από την βιβλιοθήκη που μέσα της περιέχει <-- και όχι διάβασε. ʼρα ικανοποιεί το κριτήριο της εισόδου γιατί έχει καμμία είσοδο.
Δεν μπορώ να καταλάβω γιατί η συνάρτηση Τ_Ρ έχει εκχώρηση.
Η είσοδός της συνάρτησης στην ψευδογλώσσα το πιο πιθανό είναι να γίνεται με την δεσμευμένη λέξη Δεδομένα. Αλλά δεν μιλάμε για την είσοδο της συνάρτησης μιλάμε για αυτή του υποτιθέμενου αλγορίθμου που λύνει το πρόβλημα "βρες τη ρίζα ...". Άλλο παράδειγμα
"Υπολόγισε τον κύβο του αριθμού 1234,11345".
Τώρα έχουμε : Εμφάνισε 1234,11345^3
Δεν βλέπω όμως να βγάζουμε άκρη..
Συμφωνώ ότι διαφωνούμε :)
Για όλα τα παραπάνω μπορώ να θέσω ένα επιχείρημα, για αυτό όμως δεν έχω τίποτε να πω, ειλικρινά δεν το χωράει το μυαλό μου!!
Παράθεση από: Σούλας Βασίλειος στις 14 Οκτ 2008, 06:55:05 ΜΜ
ʼρα ικανοποιεί το κριτήριο της εισόδου γιατί έχει καμμία είσοδο.
Προβλήματα με προφανή λύση είναι αυτά που ακούγοντας την εκφώνηση κατευθείαν μπορείς να εμφανίσεις την λύση (όχι να την σχηματίσεις μέσα στην Εμφάνισε). Αν το πρόβλημα δεν έχει προφανή λύση για να το λύσεις στατικά (π.χ μια συγκεκριμένη δευτεροβάθμια εξίσωση χρειάζεσαι <-- στον αλγόριθμο και όχι διάβασε άρα καμμία είσοδο) και για να το λύσεις δυναμικά χρειάζεσαι και <-- και διάβασε και συγκεκριμένα 3 διάβασε (3 εισόδους). Άρα οι αλγόριθμοι που λύνουν προφανή προβλήματα είναι αυτοί που παραβιάζουν το κριτήριο εισόδου.
Για ποιό λόγο το παραβιάζω το κριτήριο εισόδου το θεωρείτε είναι καμμία είσοδος; Παραβιάζω το κριτήριο εισόδου σημαίνει ότι ένα πρόβλημα με προφανή λύση δεν χρειάζεται σωστό αλγόριθμο για να λυθεί!!!!!!
Εκχώρηση χρειάζεσαι για να υπολογίσεις κάτι και όχι απαραίτητα για να δηλώσεις την είσοδο στον αλγόριθμό σου.
Δεν κατάλαβα όμως σύμφωνα με τη λογική σου ποια εκχώρηση θεωρείται είσοδος και ποια όχι.
Το τελευταίο παράδειγμα που έγραψα έχει μασκαρεμένη εκχώρηση αφού χρησιμοποιεί έκφραση μέσα στην Εμφάνισε; Αυτό εννοείς;
Η λύση του πάντως δεν είναι γνωστή ούτε προφανής, αν και για το τελευταίο κάποιος μπορεί να έχει αντίθετη γνώμη.
Είσοδος είναι οτιδήποτε μπορεί να μεταβάλλει τα αποτελέσματα του αλγορίθμου από το ΄΄εξωτερικό΄΄ περιβάλλον του αφού έχει προηγουμένως ξεκινήσει η εκτέλεσή του. Αυτή είναι η έννοια της εισόδου στα καθολικά συστήματα (έχει δυναμική έννοια η είσοδος). Άρα στους αλγορίθμους είσοδο έχουμε με την εντολή εισόδου διάβασε ή //Δεδομένα//. ʼρα σε ένα αλγόριθμο με τρεις διάβασε έχουμε 3 εισόδους. Ποια είναι η σκοπιμότητα των αλγορίθμων; Να λύνουν προβλήματα και πρόβλημα είναι μια κατάσταση που η λύση δεν είναι γνωστή και προφανής. Τώρα ας εξετάσουμε το κριτήριο του σωστού αλγορίθμου Είσοδος σε σχέση με τα προβλήματα που έχουμε να λύσουμε. Το κριτήριο της εισόδου αναφέρεται όχι με την έννοια της ύπαρξης ή όχι εισόδου, αλλά αν ικανοποιήται ή όχι το συγκεκριμένο κριτήριο. Ικανοποιήται όταν έχω καμμία, μια η παραπάνω εισόδους και δεν ικανοποιήται με το όχι καμμία και όχι μια ή παραπάνω εισόδους.(συμπλήρωμα). ʼρα έχοντας ένα πρόβλημα με όχι γνωστή λύση και μη προφανή π.χ. δευτεροβαθμια εξίσωση αν το λύσω δυναμικά θα πρέπει να χρησιμοποιήσω διάβασε άρα ικανοποιήται το κριτήριο της εισόδου (έχω 3 εισόδους), αν το λύσω στατικά δηλαδή με συγκεκριμένους συντελεστές δεν έχω διάβασε αλλά θα χρησιμοποιήσω απαραίτητα <-- (απαραίτητα γιατί η λύση δεν είναι προφανής, κάποιος μπορεί να πει ότι το λύνω στο χαρτί και κατευθείαν με εμφάνισε το γράφω στον αλγόριθμο, αυτό είναι το ίδιο έγραψες αλγόριθμο σε μορφή κειμένου και χρησιμοποίησες το = στο χαρτί και μετά το χρησιμοποίησες ή κάποιος μπορεί να πεί ότι σχηματίζω την λύση κατευθείαν στην εμφάνισε αλλά και αυτό είναι το ίδιο δεν είναι προφανής η λύση). ʼρα καμμία είσοδος σημαίνει λύνω στατικά ένα πρόβλημα με όχι γνωστή και μη προφανή λύση φτιάχνοντας αλγόριθμο χωρίς διάβασε αλλά με <--). ʼρα ο αλγόριθμος είναι σωστός γιατί ικανοποιεί το κριτήριο της εισόδου γιατί έχει καμμία. Τώρα αν έχουμε εκφωνήσεις προβλημάτων με προφανή λύση τότε δεν θέλουμε ούτε διάβασε και ούτε <--, άρα όχι καμμία και ούτε μια η περισσότερες είσοδοι, άρα παραβίαση του κριτηρίου της εισόδου.
Π.χ.
Να γραφτεί αλγόριθμος που να μετρά από το 1 μέχρι το 11 ανα 2.
Αλγόριθμος μέτρημα
Εμφάνισε ΄1΄
Εμφάνισε ΄3΄
Εμφάνισε ΄5΄
Εμφάνισε ΄7΄
Εμφάνισε ΄9΄
Εμφάνισε ΄11΄
Τέλος
Να γραφτεί αλγόριθμος που να εμφανίζει το μήνυμα καλημέρα
Αλγόριθμος μήνυμα
Εμφάνισε ΄Καλημέρα΄
Τέλος
Οι παραπάνω ΄΄Αλγόριθμοι΄΄ οπτικά είναι αλγόριθμοι αλλά ουσιαστικά δεν είναι σωστοί αλγόριθμοι γιατί δεν λύνουν πρόβλημα με μη γνωστή λύση και μη προφανή για αυτό και παραβιάζουν το κριτήριο εισόδου και όχι μια η περισσότερες είσοδοι (όχι διάβασε) και καμμία είσοδος (όχι διάβασε και όχι <--).
Αν κάποιος γράψει
Αλγόριθμος εμφάνιση
Διάβασε χ
Εμφάνισε χ
Τέλος
Θα ρωτήσω το εξής. Το πρόβλημα προηγήται της δημιουργίας του αλγορίθμου. Ποιό πρόβλημα επιλύει ο συγκεκριμένος αλγόριθμος; Να γραφτεί αλγόριθμος που να διαβάζει ένα αριθμό και να τον εμφανίζει. Αυτό είναι πρόβλημα όπου η λύση δεν είναι γνωστή και προφανής;ʼρα ποτέ δεν πρέπει να εξετάζουμε ένα αλγόριθμο αποκομμένο από το πρόβλημα.
Συγνώμη εγώ θέλω όταν ξυπνάω ο υπολογιστής να μου γράφει καλημερά .
Το πρόβλημά μου είναι πώς θα μου γράφει καλημέρα όταν ανοίγει ο υπολογιστής. Πληρώνω έναν προγραμματιστή και μου γράφει το πρόγραμμα
Αλγόριθμος κδξφ
εμφάνισε 'καλημέρα'.
τέλος κδξφ
Τρομερό! Για μένα έλυσε το πρόβλημα της ζωής μου.
Δεν μπορούμε να χαρακτηρίζουμε κάτι ότι δεν είναι αλγόριθμος επειδή δεν έχει είσοδο από τον χρήστη. Αφού φτάνει με συγκεκριμένα βήματα στη λύση του προβλήματος που για κάποιον η λύση είναι πολύ χρήσιμη.
Μην προσβάλουμε λοιπόν το πρόβλημα και αυτόν που το έχει :). Αν το πρόβλημα είναι να εμφανιστεί καλημέρα θα γράψω τον παραπάνω αλγόριθμο. Ικανοποιεί το κριτήριο της εισόδου; Για εμένα ναι, αφού είναι αλγόριθμος. Άχρηστος μπορεί, κουτός μπορεί, μπορούσε να γινόταν καλύτερα μπορεί, είναι όμως αλγόριθμος.
Κώστα μαζί σου. Συμφωνώ. είναι αλγόριθμος ο οποίος δεν ικανοποιεί το κριτήριο εισόδου τόσο απλό είναι!!!! Άλλωστε για αυτό ονομάζονται κριτήρια σωστού αλγορίθμου. Το πως λέγεται ένας αλγόριθμος που δεν είναι ΄΄σωστός΄΄ μπορείς να τον πεις όπως τον λες αλλά σωστό αλγόριθμο δεν μπορείς να τον πεις. Και αλγόριθμο τον λες. 8)
Δεν λέει όμως το βιβλίο κριτήρια σωστού αλγόριθμου λέει απλά κριτήρια αλγόριθμου. Και εγώ καταλαβαίνω όποιος δεν τα ικανοποιεί ότι δεν είναι αλγόριθμος όχι ότι είναι ένας μη σωστός αλγόριθμος.
Και γιατί δεν είναι σωστός αλγόριθμος. Αφού λύνει το πρόβλημά μου; Άρα το ίδιο το πρόβλημα έχει πρόβλημα όχι ο αλγόριθμος.
κάθε αλγόριθμος πρέπει απαραίτητα να πληρεί το κριτήριο της εισόδου :D ::) >:D
Πρέπει κάποια στιγμή να εξετάσουμε αν αυτή η κουβέντα ικανοποιεί το κριτήριο της περατότητας ..... :D ;D
Δεν υπάρχουν σωστοί και λάθος αλγόριθμοι αλλά αλγόριθμοι και υπολογιστικές διαδικασίες. Τουλάχιστον αυτό λέει το βιβλίο και αυτό αναφέρεται γενικά στη βιβλιογραφία.
Να γραφεί αλγόριθμος που να διαβάζει την βάση και το ύψος ενός τριγώνου και υπολογίζει το εμβαδό του.
Αλγόριθμος τρίγωνο
Εμφάνισε 'Δώσε την βάση του τριγώνου'
Διάβασε βάση
Εμφάνισε 'Δώσε το ύψος του τριγώνου'
Διάβασε ύψος
Ε<--Τ_Ρ((βάση*ύψος/2)^3) !???????????????
Εμφάνισε 'Το εμβαδό είναι:',Ε
Τέλος
Ερωτήματα : Είναι αλγόριθμος; Αν ναι το κριτήριο της αποτελεσματικότητας που είναι; Λύνει το πρόβλημα μου;
Η αποψή μου. Είναι αλγόριθμος αν τον δεις απλά σαν κώδικα αλλά αν τον δεις σε σχέση με το πρόβλημα που καλείται να επιλύσει δεν είναι σωστός. Το σωστός έχει το νόημα αν με το πρόβλημα που πάει σετ το επιλύει (αποτελεσματικότητα). Δεν πρέπει να βλέπουμε τον κώδικα απλά ξεκομένο από το πρόβλημα. Η άποψη είναι ότι στο βιβλίο έπρεπε να γράφει κριτήρια σωστού αλγορίθμου. Το σωστού με την έννοια ότι ελέγχω αυτά τα κριτήρια όχι νέτα σκέτα πάνω στο κώδικα αλλά σε σχέση με το πρόβλημα. Ο αλγόριθμος είναι αλληλένδετος με το πρόβλημα που επιλύει. Άλλωστε η αποτελεσματικότητα μόνο έτσι ελέγχεται.
ΠαράθεσηΔεν πρέπει να βλέπουμε τον κώδικα απλά ξεκομένο από το πρόβλημα.
Αυτό είναι σωστό. Έρχεσαι στα λόγια μου.
Αποτελεσματικότητα; Λέω είναι πολύ αργά για τέτοια κουβέντα. :).
Η αποτελεσματικότητα ορίζεται σε επίπεδο λειτουργίας, όχι σε επίπεδο αλγορίθμου:
https://alkisg.mysch.gr/steki/index.php?topic=29.msg8748#msg8748
Επομένως φυσικά και μπορούμε να κρίνουμε την αποτελεσματικότητα οποιουδήποτε αλγορίθμου ακόμα κι αν δεν ξέρουμε την εκφώνησή του.
Μάλιστα η εκφώνηση είναι τελείως άχρηστη, αφού κοιτάμε μία μία τις λειτουργίες του για να δούμε αν είναι αρκετά απλές, χωρίς να μας ενδιαφέρει η ροή της εκτέλεσης, τα δεδομένα ή γενικότερα το σύνολο του αλγορίθμου (για το "κριτήριο" της αποτελεσματικότητας).
Οποιοδήποτε πρόγραμμα μπορεί να εκτελεστεί από υπολογιστή, ικανοποιεί εξ' ορισμού την αποτελεσματικότητα, ανεξάρτητα από το αν λύνει κάποιο πρόβλημα, από το αν το λύνει λάθος κτλ.
ΠαράθεσηΟποιοδήποτε πρόγραμμα μπορεί να εκτελεστεί από υπολογιστή, ικανοποιεί εξ' ορισμού την αποτελεσματικότητα, ανεξάρτητα από το αν λύνει κάποιο πρόβλημα, από το αν το λύνει λάθος κτλ.
Ειλικρινά χαίρομαι που συμφωνούμε 8)
Παράθεση από: Τσιωτάκης Παναγιώτης στις 14 Οκτ 2008, 09:54:26 ΜΜ
κάθε αλγόριθμος πρέπει απαραίτητα να πληρεί το κριτήριο της εισόδου :D ::) >:D
σωστά αφού σαφώς αναφέρεται ανάμεσα στα κριτήρια που οφείλει να πληρεί κάθε αλγόριθμος. Βέβαια ο ορισμός του κριτηρίου παρακάτω, απλώς το καθιστά αδύνατο να μην μπορεί να τηρηθεί! η είσοδος είναι πεπερασμένος αριθμός δεδομένων. Το "0 1 ή και περισσότερα" απλώς περιλαμβάνει οποιαδήποτε δυνατή περίπτωση!
Παράθεση...που οφείλει να πληροί κάθε αλγόριθμος...
Παράθεση από: Νίκος Αδαμόπουλος στις 21 Σεπ 2009, 09:02:53 ΜΜ
Παράθεση...που οφείλει να πληροί κάθε αλγόριθμος...
ο debuger χτύπησε... :D