Tο κριτήριο της ΕΙΣΟΔΟΥ υποχρεωτικό ή όχι;

Ξεκίνησε από Λευτέρης Δουκέρης, 31 Μαρ 2013, 05:19:23 ΜΜ

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

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

Καλησπέρα . Υπάρχουν δύο διαφορετικές απόψεις που έχω συναντήσει και με έχουν προβληματίσει ως προς το κριτήριο της ΕΙΣΟΔΟΥ για τον αν είναι υποχρεωτικό να τηρείται η όχι σε έναν αλγόριθμο.
1)   δεν είναι υποχρεωτικό γιατί μπορεί ένας αλγόριθμος (απλούστατος βέβαια να εμφανίζει μόνο ένα μήνυμα . π.χ
Αλγόριθμος πχ
Εμφάνισε 'hello word'
Τέλος Πχ

Ο παραπάνω αλγόριθμος παρόλο που δεν έχει είσοδο είναι σωστός.

2)   Αφού η είσοδος αποτελεί κριτήριο ενός αλγόριθμου πρέπει οπωσδήποτε να πληρείται .
Έχετε άποψη αν η 1 ή 2 άποψη είναι σωστή;

Εχει πέσει σωστό λάθος το παρακάτω:
Ένας αλγόριθμος μπορεί να μην έχει έξοδο.
Στο ερώτημα
Ένας αλγόριθμος μπορεί να μην έχει είσοδο
απαντάμε σωστό ή λάθος.
ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

P.Tsiotakis

είσοδος δε σημαίνει διάβασε

κατά τη γνώμη μου:

- το μήνυμα "hello world" με αφηρημένο τρόπο (και με την έννοια της εισόδου του βιβλίου) αποτελεί είσοδο
- ένας αλγόριθμός πάντοτε πρέπει να έχει είσοδο και έξοδο (θεμελιώδες κριτήριο)

gpapargi

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

Αν δεχτούμε μηνύματα εκτύπωσης (Εμφάνισε «Καλημέρα») ή εκχωρήσεις τιμών (S<-0) στην είσοδο τότε, όλα τα μηνύματα στην οθόνη, όλες οι εκχωρήσεις τιμής και γενικά  όλες οι σταθερές θα είναι είσοδος.

Την παράγραφο των αλγοριθμικών κριτηρίων οι συγγραφείς την πήραν από το βιβλίο του Knuth. Άνοιξα λοιπόν τον Knuth για να δω τι θα ήθελαν να πουν οι συγγραφείς και είδα ότι δεν τα λέει έτσι.
Ο Knuth αναφέρει ως «χαρακτηριστικά» (features) την είσοδο την έξοδο και αυτό που το βιβλίο μετέφρασε ως «αποτελεσματικότητα». «Κριτήρια» αποκαλεί την περατότητα και την καθοριστικότητα. Το «χαρακτηριστικό» είναι πιο ελαφριά έκφραση από το κριτήριο και αν δεν πληρείται από τον κώδικα δε σημαίνει ότι δεν είναι και αλγόριθμος. Αν όμως δεν πληρείται κάποιο κριτήριο τότε δεν είναι αλγόριθμος.

Για μένα... οι συγγραφείς δε μετέφεραν σωστά το νόημα του βιβλίου του Knuth.

vtsakan

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

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

Στα πλαίσια του μαθήματος ωστόσο, νομίζω πως η απάντηση είναι σαφής:
Ένας αλγόριθμος μπορεί να μην έχει είσοδο -> Λάθος
Βασίλης Τσακανίκας
Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π.

gpapargi

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

Αν υπολογίζω κάποιο άθροισμα, η αρχικοποίηση μετρητή είναι είσοδος; Πχ στον κώδικα:
Σ<--0
Για ι από 1 μέχρι 100
  Σ<--Σ+ι^2
Τέλος_επανάληψης

Είναι είσοδος το Σ<--0 ;

Αν είναι είσοδος...  το επόμενο ερώτημα είναι αν στον παρακάτω κώδικα το Σ<--0 είναι είσοδος;
Διάβασε ν
Σ<--0
Για ι από 1 μέχρι ν
  Σ<--Σ+ι^2
Τέλος_επανάληψης

Με άλλα λόγια ποια είναι η είσοδος στον δεύτερο κώδικα; Γίνεται το Σ<--0 να είναι είσοδος στον πρώτο κώδικα και όχι στον δεύτερο;

petrosp13

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

gpapargi

Πράγματι στα ασαφή σημεία του βιβλίου δεν μπορούμε να βγάλουμε άκρη. Μπορούμε όμως να καταλάβουμε τι έχει λογική και τι όχι.
Εγώ διαφωνώ με το να προσπαθούμε κάτι να το βγάλουμε σωστό μόνο και μόνο επειδή το λέει το βιβλίο. Μπορεί το βιβλίο να κάνει λάθος. Εδώ ξέρουμε ότι το βιβλίο πήρε τα κριτήρια από τον Knuth. Αν διαβάσουμε λοιπόν τον Knuth (για να δούμε τι ήθελε να πει το σχολικό βιβλίο) θα δούμε ότι δεν μετέφερε καλά τα νοήματα. Αντί για χαρακτηριστικό (feature) που λέει ο Knuth την είσοδο, το σχολικό βιβλίο τα ονόμασε όλα κριτήρια.
Δεν καταλαβαίνω γιατί εμείς πρέπει να βγάλουμε το βιβλίο σώνει και καλά σωστό. Αν δεν το έλεγε το βιβλίο κανείς δε θα πίστευε ότι η αρχικοποίηση μεταβλητής είναι είσοδος.

vtsakan

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

Σ<--0
Για ι από 1 μέχρι 100
  Σ<--Σ+ι^2
Τέλος_επανάληψης

ΚΑΙ

Διάβασε ν
Σ<--0
Για ι από 1 μέχρι ν
  Σ<--Σ+ι^2
Τέλος_επανάληψης

στα αυστηρά πλαίσια της αλγοριθμικής δεν είναι αλγόριθμος, αλλά μία υπολογιστική διαδικασία.

Φυσικά, στα πλαίσια του μαθήματος, δεν γίνεται τέτοια διάκριση ούτε έχει νόημα σε ένα εισαγωγικό μάθημα μία τέτοια κουβέντα.
Βασίλης Τσακανίκας
Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π.

sstergou

Όποιος έχει όρεξη πάντως μπορεί να διαβάσει και τα εξής : https://alkisg.mysch.gr/steki/index.php?topic=2609.0

gpapargi

Παράθεση από: vtsakan στις 02 Απρ 2013, 12:55:08 ΜΜ
Εαν ξεφύγουμε απο το σχολικό βιβλίο, τότε η κουβέντα μας θα έπρεπε να αναφέρεται στο αν μία ομάδα εντολών επιλύει ένα γενικό προβλημα ή όχι. Ο ορισμός του προβλήματος στην επιστήμη της αλγοριθμικής ορίζει σαφώς πως το πρόβλημα πρέπει να είναι γενικό. Ο αλγόριθμος λύνει το πρόβλημα και κάθε εκτέλεση του αλγορίθμου ένα στιγμιότυπο του προβλήματος. Συνεπώς, οι εντολές

Σ<--0
Για ι από 1 μέχρι 100
  Σ<--Σ+ι^2
Τέλος_επανάληψης

ΚΑΙ

Διάβασε ν
Σ<--0
Για ι από 1 μέχρι ν
  Σ<--Σ+ι^2
Τέλος_επανάληψης

στα αυστηρά πλαίσια της αλγοριθμικής δεν είναι αλγόριθμος, αλλά μία υπολογιστική διαδικασία.

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

Γιατί ο δεύτερος κώδικας δεν είναι αλγόριθμος αλλά υπολογιστική διαδικασία;

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

ΚΑΛΗΣΠΕΡΑ.
Συμφωνώ και εγώ ότι αναλωνόμαστε σε ασάφειες του βιβλίου.
Ρώτησα όμως όλους τους συναδέρφους εδώ , επειδή μαθητές μου , που είναι  άριστοι με
ρώτησαν
Αν το κριτήριο της εισόδου σε έναν αλγόριθμο είναι υποχρεωτικό.
Απάντησα "Ναι" με σκεπτικό οτι αφού το βιβλίο μας το αναφέρει σαν κριτήριο αρα .... λογικά είναι
υποχρεωτικό.
Αν κατάλαβα καλά όλοι συμφωνούμε με το "ναι" στο συγκεκριμένο Σωστό - Λάθος.
Οπότε καλύφτηκα πλήρως. ΕΥΧΑΡΙΣΤΩ
ΛΕΥΤΕΡΗΣ  ΚΕΡΑΤΕΑ
http://glavrio.blogspot.com"Ο ιδανικός δάσκαλος είναι εκείνος που γίνεται γέφυρα για να περάσει αντίπερα ο μαθητής του και όταν , πια του διευκολύνει το πέρασμα , αφήνεται χαρούμενα να γκρεμιστεί , ενθαρρύνοντας το μαθητή του να φτιάξει τις δικές του γέφυρ

vtsakan

Παράθεση από: gpapargi στις 02 Απρ 2013, 02:53:48 ΜΜ
Γιατί ο δεύτερος κώδικας δεν είναι αλγόριθμος αλλά υπολογιστική διαδικασία;

Γιατί κάθε φορά που εκτελείται δίνει το ίδιο αποτέλεσμα.
Βασίλης Τσακανίκας
Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π.

gpapargi

Παράθεση από: vtsakan στις 02 Απρ 2013, 08:06:18 ΜΜ
Γιατί κάθε φορά που εκτελείται δίνει το ίδιο αποτέλεσμα.

Ο δεύτερος κώδικας διαβάζει το ν και το έχει στο δεξί άκρο της Για. Δε δίνει το ίδιο αποτέλεσμα σε κάθε εκτέλεση.

gpapargi

Παράθεση από: lefteris_doy στις 02 Απρ 2013, 07:38:09 ΜΜ
ΚΑΛΗΣΠΕΡΑ.
Συμφωνώ και εγώ ότι αναλωνόμαστε σε ασάφειες του βιβλίου.
Ρώτησα όμως όλους τους συναδέρφους εδώ , επειδή μαθητές μου , που είναι  άριστοι με
ρώτησαν
Αν το κριτήριο της εισόδου σε έναν αλγόριθμο είναι υποχρεωτικό.
Απάντησα "Ναι" με σκεπτικό οτι αφού το βιβλίο μας το αναφέρει σαν κριτήριο αρα .... λογικά είναι
υποχρεωτικό.
Αν κατάλαβα καλά όλοι συμφωνούμε με το "ναι" στο συγκεκριμένο Σωστό - Λάθος.
Οπότε καλύφτηκα πλήρως. ΕΥΧΑΡΙΣΤΩ

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

Για μένα αυτό που έχει σημασία είναι αν το βιβλίο έχει κάποιο εμφανές λάθος θα το κάνουμε σωστό επειδή το λέει το βίβλίο ή θα πούμε ότι έχει λάθος; Εγώ προσωπικά κάνω το δεύτερο. Το σχολικό βιβλίο δεν έχει κάποια βαρύτητα από βιβλιογραφική άποψη. Δεν μπορώ δηλαδή να πάω σε ένα καθηγητή πανεπιστημίου και να του πω "κάνεις λάθος γιατί έτσι τα λέει το βιβλίο της Γ λυκείου". Θα μου απαντήσει πολύ απλά "γι αυτό δε στήριξαν οι ακαδημαικοί το μάθημα της ΑΕΠΠ όταν πήγε να καταργηθεί προ διετίας... γιατί τους τα λέτε λάθος". (Για όσους δε θυμούνται αυτά είπε ο Γεωργιάδης όταν ρωτήθηκε)

axi

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

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

Παράθεση από: Παναγιώτης Τσιωτάκης στις 31 Μαρ 2013, 10:07:34 ΜΜ
- το μήνυμα "hello world" με αφηρημένο τρόπο (και με την έννοια της εισόδου του βιβλίου) αποτελεί είσοδο

Παράθεση από: gpapargi στις 01 Απρ 2013, 08:44:37 ΠΜ
Αν δεχτούμε μηνύματα εκτύπωσης (Εμφάνισε «Καλημέρα»)  στην είσοδο ...

Γιατί τα μηνύματα που εμφανίζονται στην οθόνη να μπορούν να θεωρηθούν ως είσοδος; Έξοδος δεν είναι;

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

Παράθεση από: gpapargi στις 02 Απρ 2013, 12:06:12 ΜΜ
Εδώ ξέρουμε ότι το βιβλίο πήρε τα κριτήρια από τον Knuth. Αν διαβάσουμε λοιπόν τον Knuth (για να δούμε τι ήθελε να πει το σχολικό βιβλίο) θα δούμε ότι δεν μετέφερε καλά τα νοήματα. Αντί για χαρακτηριστικό (feature) που λέει ο Knuth την είσοδο, το σχολικό βιβλίο τα ονόμασε όλα κριτήρια.

Για ξέρουμε γιατί ακριβώς μιλάμε:


ntzios kostas

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

P.Tsiotakis

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

ψυχραιμία, δεν έχω σκοπό να γκρεμίσω το σύμπαν

στο

Αλγόριθμος Αλ
α <- "γεια σας"
Εμφάνισε α
Τέλος Αλ

Αλγόριθμος Αλ
Διάβασε α
Εμφάνισε α
Τέλος Αλ

Αλγόριθμος Αλ
Εμφάνισε "γεια σας"
Τέλος Αλ

διακρίνω την εντολή εξόδου (Εμφάνισε) από το μήνυμα που περιλαμβάνει

Ένας αλγόριθμος πρεπει πάντα να πληρει το κριτήριο της εισόδου = να δέχεται (διαβάζει) ή να παράγει τιμές που θα επεξεργάζεται

alkisg

Πέρα από το χαρακτηρισμό της ως κριτήριο ή μη, με βάση το βιβλίο, νομίζω ότι η έννοια της εισόδου ενός αλγορίθμου είναι πολύ καλά καθορισμένη:

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

  • Η Διάβασε είναι είσοδος, είτε από το πληκτρολόγιο είτε από αρχείο.
  • Οι πρωτογενείς τιμές είναι είσοδος (παράδειγμα, είσοδος της seed μιας random από το ρολόι ή από τις κινήσεις ποντικιού + πληκτρολογίου του χρήστη).
  • Η εντολή Δεδομένα ενός αλγορίθμου είναι είσοδος.
  • Αν έχουμε ένα υποπρόγραμμα (συνάρτηση, διαδικασία) Υ με παράμετρο π, και το καλέσουμε ως Υ(2), το 2 έχει την ίδια έννοια με τα Δεδομένα, και αποτελεί είσοδο για αυτό το υποπρόγραμμα.
Οι αναθέσεις τιμής δεν είναι είσοδος, εμπεριέχονται στο μαύρο κουτί.

vtsakan

Παράθεση από: gpapargi στις 02 Απρ 2013, 08:29:41 ΜΜ
Ο δεύτερος κώδικας διαβάζει το ν και το έχει στο δεξί άκρο της Για. Δε δίνει το ίδιο αποτέλεσμα σε κάθε εκτέλεση.

Έχεις δίκιο. Δεν το πρόσεξα. Ο δεύτερος φυσικά και είναι αλγόριθμος!
Βασίλης Τσακανίκας
Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π.

Gnirut

Δεν μπορώ να καταλάβω που είναι το μπέρδεμα. Το βιβλίο είναι σαφές:
"Είσοδος (input). Καμμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο..."

petrosp13

Παράθεση από: alkisg στις 03 Απρ 2013, 07:34:27 ΠΜ
Οι αναθέσεις τιμής δεν είναι είσοδος, εμπεριέχονται στο μαύρο κουτί.

Άρα ο παρακάτω αλγόριθμος δεν πληρεί το κριτήριο της εισόδου;;;; (επαναλαμβάνω, δεν θα βγάλουμε άκρη)

Αλγόριθμος χ
  α <-- 2
  β <-- α ^ 2
  Εμφάνισε β
Τέλος χ
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

Gnirut

Παράθεση από: petrosp13 στις 03 Απρ 2013, 10:32:15 ΠΜ
Άρα ο παρακάτω αλγόριθμος δεν πληρεί το κριτήριο της εισόδου;;;; (επαναλαμβάνω, δεν θα βγάλουμε άκρη)

Αλγόριθμος χ
  α <-- 2
  β <-- α ^ 2
  Εμφάνισε β
Τέλος χ


Πληροί το κριτήριο. Δεν έχει καμμία είσοδο.
Είναι επιτρεπτό και σύμφωνα με το βιβλίο.
Ένας αλγόριθμος μπορεί να μην έχει είσοδο.

gpapargi

Παράθεση από: vtsakan στις 03 Απρ 2013, 09:28:27 ΠΜ
Έχεις δίκιο. Δεν το πρόσεξα. Ο δεύτερος φυσικά και είναι αλγόριθμος!

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

Διάβασε ν
Σ<--0
Για ι από 1 μέχρι ν
  Σ<--Σ+ι^2
Τέλος_επανάληψης

gpapargi

Παράθεση από: Gnirut στις 03 Απρ 2013, 10:38:57 ΠΜ
Πληροί το κριτήριο. Δεν έχει καμμία είσοδο.
Είναι επιτρεπτό και σύμφωνα με το βιβλίο.
Ένας αλγόριθμος μπορεί να μην έχει είσοδο.

Σύμφωνα με αυτό που γράφεις, ένας αλγόριθμος μπορεί να μην έχει είσοδο και παρόλα αυτά να πληρεί το κριτήριο της εισόδου. Δηλαδή είτε έχει είσοδο είτε δεν έχει είσοδο... το κριτήριο το πληρεί. Τι νόημα έχει να λέμε ότι ο αλγόριθμος πληρεί το κριτήριο της εισόδου ανεξάρτητα από το αν έχει είσοδο ή όχι;
Τι νόημα έχει να μιλάμε για το κριτήριο της εισόδου;

gpapargi

Παράθεση από: alkisg στις 03 Απρ 2013, 07:34:27 ΠΜ
Πέρα από το χαρακτηρισμό της ως κριτήριο ή μη, με βάση το βιβλίο, νομίζω ότι η έννοια της εισόδου ενός αλγορίθμου είναι πολύ καλά καθορισμένη:

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

  • Η Διάβασε είναι είσοδος, είτε από το πληκτρολόγιο είτε από αρχείο.
  • Οι πρωτογενείς τιμές είναι είσοδος (παράδειγμα, είσοδος της seed μιας random από το ρολόι ή από τις κινήσεις ποντικιού + πληκτρολογίου του χρήστη).
  • Η εντολή Δεδομένα ενός αλγορίθμου είναι είσοδος.
  • Αν έχουμε ένα υποπρόγραμμα (συνάρτηση, διαδικασία) Υ με παράμετρο π, και το καλέσουμε ως Υ(2), το 2 έχει την ίδια έννοια με τα Δεδομένα, και αποτελεί είσοδο για αυτό το υποπρόγραμμα.
Οι αναθέσεις τιμής δεν είναι είσοδος, εμπεριέχονται στο μαύρο κουτί.

Άλκη συμφωνώ σε όλα όσα γράφεις. Μια μικρή διευκρίνηση μόνο για να καταλάβω τι ακριβώς εννοείς όταν λες "πρωτογενείς τιμές". Υποθέτω αν εκχωρώ τιμές σε 5 μεταβλητές και μετά τις επεξεργάζομαι (πχ τις προσθέτω) αυτές δεν είναι είσοδος (και για μένα και για σένα). Υπάρχουν 2 κόσμοι: ο "μέσα" στον αλγόριθμο και ο "έξω" από τον αλγόριθμο. Για να είναι είσοδος θα πρέπει να είναι αρχικά στον "έξω" κόσμο και να "μπει" στον μέσα.
Είναι πρωτογενείς τιμές αυτές οι 5 μεταβλητές;

petrosp13

Παράθεση από: gpapargi στις 01 Απρ 2013, 08:44:37 ΠΜ
Ο Knuth αναφέρει ως «χαρακτηριστικά» (features) την είσοδο την έξοδο και αυτό που το βιβλίο μετέφρασε ως «αποτελεσματικότητα». «Κριτήρια» αποκαλεί την περατότητα και την καθοριστικότητα. Το «χαρακτηριστικό» είναι πιο ελαφριά έκφραση από το κριτήριο και αν δεν πληρείται από τον κώδικα δε σημαίνει ότι δεν είναι και αλγόριθμος. Αν όμως δεν πληρείται κάποιο κριτήριο τότε δεν είναι αλγόριθμος.

Για μένα... οι συγγραφείς δε μετέφεραν σωστά το νόημα του βιβλίου του Knuth.


Αυτό τα εξηγεί όλα νομίζω
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

P.Tsiotakis

απ' ότι φαίνεται δε μπορούμε να ξεχωρίσουμε τις έννοιες "είσοδος" και "διάβασε" και δεν έχει και πολύ νόημα να ψάχνουμε στο λεξικό πια
ας ελπίσουμε να αλλάξει κάτι (το βιβλίο ή εμείς) για να μπορούμε να τις εξηγούμε

Gnirut

Παράθεση από: gpapargi στις 03 Απρ 2013, 11:16:25 ΠΜ
Σύμφωνα με αυτό που γράφεις, ένας αλγόριθμος μπορεί να μην έχει είσοδο και παρόλα αυτά να πληρεί το κριτήριο της εισόδου. Δηλαδή είτε έχει είσοδο είτε δεν έχει είσοδο... το κριτήριο το πληρεί. Τι νόημα έχει να λέμε ότι ο αλγόριθμος πληρεί το κριτήριο της εισόδου ανεξάρτητα από το αν έχει είσοδο ή όχι;
Τι νόημα έχει να μιλάμε για το κριτήριο της εισόδου;

Π.χ.
Αλγόριθμος πχ1
α<-α+1
Τέλος πχ1

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

Ο παρακάτω όμως είναι αλγόριθμος:
Αλγόριθμος πχ2
α <- 1
α <- α+1
Τέλος πχ2

εδώ η πρωτογενής τιμή είναι το 1.

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

alkisg

Παράθεση από: gpapargi στις 03 Απρ 2013, 11:22:07 ΠΜ
Άλκη συμφωνώ σε όλα όσα γράφεις. Μια μικρή διευκρίνηση μόνο για να καταλάβω τι ακριβώς εννοείς όταν λες "πρωτογενείς τιμές". Υποθέτω αν εκχωρώ τιμές σε 5 μεταβλητές και μετά τις επεξεργάζομαι (πχ τις προσθέτω) αυτές δεν είναι είσοδος (και για μένα και για σένα). Υπάρχουν 2 κόσμοι: ο "μέσα" στον αλγόριθμο και ο "έξω" από τον αλγόριθμο. Για να είναι είσοδος θα πρέπει να είναι αρχικά στον "έξω" κόσμο και να "μπει" στον μέσα.
Είναι πρωτογενείς τιμές αυτές οι 5 μεταβλητές;

Να προσπαθήσω να το ξεκαθαρίσω με ένα παράδειγμα:
Κώδικας: ΓΛΩΣΣΑ
ΠΡΟΓΡΑΜΜΑ ΧωρίςΕίσοδο
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: χ, ψ
ΑΡΧΗ
  χ <- 1
  ψ <- Διπλάσιο(χ) 
  ΓΡΑΨΕ ψ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ Διπλάσιο(δ): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: δ
ΑΡΧΗ
  Διπλάσιο <- 2*δ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


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

Σαν μαύρο κουτί λοιπόν αυτός ο αλγόριθμος είναι αποτυχημένος. Δεν έχει νόημα να φτιάξουμε συσκευές που να επιτελούν αυτόν τον αλγόριθμο, γιατί θα απαντάνε πάντα "2" χωρίς να περιμένουν τίποτα από εμάς.

Όμως:

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


Άρα, το "1" δεν αποτελεί είσοδο για τον αλγόριθμο/μαύρο κουτί "ΧωρίςΕίσοδο", αποτελεί όμως είσοδο για τον αλγόριθμο/μαύρο υποκουτάκι "Διπλάσιο".
Όπως το λες δηλαδή Γιώργο, εξ' ορισμού είσοδος είναι κάτι που είναι έξω από τον αλγόριθμο και μπαίνει μέσα.

Gnirut

"Άρα, το "1" δεν αποτελεί είσοδο για τον αλγόριθμο/μαύρο κουτί "ΧωρίςΕίσοδο", αποτελεί όμως είσοδο για τον αλγόριθμο/μαύρο υποκουτάκι "Διπλάσιο"."

Εαν το "1" ήταν "2", δεν θα άλλαζε την έξοδο του αλγόριθμου;
Θα την άλλαζε. Άρα γιατί δεν είναι πρωτογενής τιμή, π.χ. κάτι σαν seed.

alkisg

Γιατί ο αλγόριθμος είναι το κείμενο που έγραψες.
Αν αλλάξεις το κείμενο, έχεις άλλον αλγόριθμο, όχι άλλη είσοδο.
Έφτιαξες δηλαδή έναν αλγόριθμο που γράφει πάντα "2",
και μετά τον άλλαξες και έφτιαξες άλλον αλγόριθμο που γράφει πάντα "4".

Αν οι τιμές 1 και 2 ήταν εκτός του αλγορίθμου, π.χ. σε αρχείο, τότε όντως θα ήταν είσοδος, αλλά τώρα είναι εντός του αλγορίθμου, εντός του μαύρου κουτιού, είναι μέρος του, δεν είναι είσοδός του.

Με άλλα λόγια, φαντάσου ότι το κάνεις .exe και μου το δίνεις σε δισκέτα. Έχω τον αλγόριθμο και μπορώ να τον τρέξω αλλά δεν έχω τον κώδικά του. Πώς θα αλλάξω την έξοδο του αλγορίθμου/μαύρου κουτιού; Αλλάζοντας την είσοδο. Τον κώδικα όμως δεν μπορώ να τον αλλάξω αφού δεν τον έχω... Η αλλαγή του κώδικα σημαίνει και αλλαγή του αλγορίθμου, του .exe, όχι της εισόδου.

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

Παράθεση από: Παναγιώτης Τσιωτάκης στις 03 Απρ 2013, 12:13:21 ΠΜ
Αλγόριθμος Αλ
Εμφάνισε "γεια σας"
Τέλος Αλ

Πάντως εγώ πιστεύω πως αν το "γεια σας" το θεωρήσουμε είσοδο τότε το μπλέκουμε πολύ το πράγμα...!

Gnirut

Παράθεση από: Παναγιώτης Τσιωτάκης στις 03 Απρ 2013, 11:40:57 ΠΜ
απ' ότι φαίνεται δε μπορούμε να ξεχωρίσουμε τις έννοιες "είσοδος" και "διάβασε" και δεν έχει και πολύ νόημα να ψάχνουμε στο λεξικό πια
ας ελπίσουμε να αλλάξει κάτι (το βιβλίο ή εμείς) για να μπορούμε να τις εξηγούμε

Π.χ. "πονηρή" άσκηση
Αλγοριθμος πχ
Διάβασε χ,ψ ή Δεδομένα //χ,ψ//
α<-1
β<-α
Τέλος πχ

Πόσες εισόδους έχει ο αλγόριθμος;

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

Gnirut

Παράθεση από: alkisg στις 03 Απρ 2013, 12:11:03 ΜΜ
Γιατί ο αλγόριθμος είναι το κείμενο που έγραψες.
Αν αλλάξεις το κείμενο, έχεις άλλον αλγόριθμο, όχι άλλη είσοδο.
Έφτιαξες δηλαδή έναν αλγόριθμο που γράφει πάντα "2",
και μετά τον άλλαξες και έφτιαξες άλλον αλγόριθμο που γράφει πάντα "4".

Αν οι τιμές 1 και 2 ήταν εκτός του αλγορίθμου, π.χ. σε αρχείο, τότε όντως θα ήταν είσοδος, αλλά τώρα είναι εντός του αλγορίθμου, εντός του μαύρου κουτιού, είναι μέρος του, δεν είναι είσοδός του.

Με άλλα λόγια, φαντάσου ότι το κάνεις .exe και μου το δίνεις σε δισκέτα. Έχω τον αλγόριθμο και μπορώ να τον τρέξω αλλά δεν έχω τον κώδικά του. Πώς θα αλλάξω την έξοδο του αλγορίθμου/μαύρου κουτιού; Αλλάζοντας την είσοδο. Τον κώδικα όμως δεν μπορώ να τον αλλάξω αφού δεν τον έχω... Η αλλαγή του κώδικα σημαίνει και αλλαγή του αλγορίθμου, του .exe, όχι της εισόδου.

Καταλαβαίνω τι θέλεις να πεις, αλλά εγώ σου απαντώ ..."by the (ΑΕΠΠ) book".
Εαν το "1" δεν το θεωρήσουμε πρωτογενή τιμή στο πρόγραμμα που έστειλες τότε ο αλγόριθμος του προγράμματος δεν πληροί τα "by the (ΑΕΠΠ) book" κριτήρια που πρέπει να πληροί ένας αλγόριθμος..., ενώ φυσικά είναι ένας μια χαρά αλγόριθμος...

Gnirut

Παράθεση από: Νίκος Αδαμόπουλος στις 03 Απρ 2013, 12:17:11 ΜΜ
Πάντως εγώ πιστεύω πως αν το "γεια σας" το θεωρήσουμε είσοδο τότε το μπλέκουμε πολύ το πράγμα...!

Εγώ πάντως το κατανοώ ως πρωτογενές δεδομένο.
Οπότε το ερώτημα είναι το "τι είναι και τι θεωρούμε πρωτογενές δεδομένο".

Την έννοια του πρωτογενούς δεδομένου τη θέτει το βιβλίο της ΑΕΠΠ.
Κατά τον Knuth το να μην εχει γενικά καμμία είσοδο ένας αλγόριθμος δεν αποτελεί κάτι λάθος.

alkisg

Παράθεση από: Gnirut στις 03 Απρ 2013, 12:32:46 ΜΜ
Καταλαβαίνω τι θέλεις να πεις, αλλά εγώ σου απαντώ ..."by the (ΑΕΠΠ) book".
Εαν το "1" δεν το θεωρήσουμε πρωτογενή τιμή στο πρόγραμμα που έστειλες τότε ο αλγόριθμος του προγράμματος δεν πληροί τα "by the (ΑΕΠΠ) book" κριτήρια που πρέπει να πληροί ένας αλγόριθμος..., ενώ φυσικά είναι ένας μια χαρά αλγόριθμος...

Δεν είναι μια χαρά αλγόριθμος. Αυτό είναι το "κριτήριο", ότι εφόσον ΔΕΝ έχει είσοδο, δεν είναι και χρήσιμος, αφού βγάζει πάντα το ίδιο πράγμα.
Τα κριτήρια ή χαρακτηριστικά ή όπως αλλιώς τα πούμε, θεσπίστηκαν για να ξεχωρίζουμε την ποιότητα των αλγορίθμων. Ένας αλγόριθμος που πάντα βγάζει "2" είναι κακογραμμένος και άχρηστος. Θα πρέπει να ξαναγραφεί ώστε να έχει και κάποια είσοδο για να λύνει μια κατηγορία προβλημάτων (π.χ. υπολογισμός διπλασίου) και όχι ένα instance προβλήματος (π.χ. υπολογισμός του διπλασίου του 1).

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

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

gpapargi

Παράθεση από: alkisg στις 03 Απρ 2013, 12:11:03 ΜΜ
Γιατί ο αλγόριθμος είναι το κείμενο που έγραψες.
Αν αλλάξεις το κείμενο, έχεις άλλον αλγόριθμο, όχι άλλη είσοδο.
Έφτιαξες δηλαδή έναν αλγόριθμο που γράφει πάντα "2",
και μετά τον άλλαξες και έφτιαξες άλλον αλγόριθμο που γράφει πάντα "4".

Αν οι τιμές 1 και 2 ήταν εκτός του αλγορίθμου, π.χ. σε αρχείο, τότε όντως θα ήταν είσοδος, αλλά τώρα είναι εντός του αλγορίθμου, εντός του μαύρου κουτιού, είναι μέρος του, δεν είναι είσοδός του.

Με άλλα λόγια, φαντάσου ότι το κάνεις .exe και μου το δίνεις σε δισκέτα. Έχω τον αλγόριθμο και μπορώ να τον τρέξω αλλά δεν έχω τον κώδικά του. Πώς θα αλλάξω την έξοδο του αλγορίθμου/μαύρου κουτιού; Αλλάζοντας την είσοδο. Τον κώδικα όμως δεν μπορώ να τον αλλάξω αφού δεν τον έχω... Η αλλαγή του κώδικα σημαίνει και αλλαγή του αλγορίθμου, του .exe, όχι της εισόδου.

Ακριβώς έτσι όπως τα γράφει ο Άλκης. Δες το και αλλιώς Gnirut:
Η αρχή του αλγορίθμου σηματοδοτείται από το "Πρόγραμμα Χωρίς_είσοδο" και τέλος του αλγορίθμου από το "Τέλος_προγράμματος". Ότι είναι ανάμεσα σε αυτά τα 2 είναι ο αλγόριθμος. Τιμές που ανατίθενται σε μεταβλητές εκεί μέσα είναι ήδη εντός του αλγορίθμου. Δεν έρχονται απέξω, άρα δεν είναι είσοδος.

gpapargi

Παράθεση από: Gnirut στις 03 Απρ 2013, 12:24:16 ΜΜ
Π.χ. "πονηρή" άσκηση
Αλγοριθμος πχ
Διάβασε χ,ψ ή Δεδομένα //χ,ψ//
α<-1
β<-α
Τέλος πχ

Πόσες εισόδους έχει ο αλγόριθμος;

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

Τυπικά δε μας χαλάει αυτό. Πχ σε μια μαθηματική συνάρτηση το y (ανεξάρτητη μεταβλητή) έχει σχέση με το x (ανεξάρτητη μεταβλητή). Παρόλα αυτά υπάρχει η f(x)=5 δηλαδή η σταθερή συνάρτηση. Το "δεν εξαρτάται το y από το x" που συμβαίνει επί της ουσίας, είναι σαν να λες ότι εξαρτάται με την τετριμμένη έννοια της σταθερής συνάρτησης.

Gnirut

Παράθεση από: alkisg στις 03 Απρ 2013, 12:59:40 ΜΜ
Δεν είναι μια χαρά αλγόριθμος. Αυτό είναι το "κριτήριο", ότι εφόσον ΔΕΝ έχει είσοδο, δεν είναι και χρήσιμος, αφού βγάζει πάντα το ίδιο πράγμα.
Γιατί, ένας αλγόριθμος που εμφανίζει ένα fixed splash screen δεν είναι χρήσιμος;
Μπορεί να μην είναι generic αλλά κάνει κάτι χρήσιμο, κάτι για το οποίο τον φτιάξαμε, εμφανίζει κάποιο fixed μήνυμα.
Δεν υπάρχει κριτήριο "χρησιμότητας" ή "περισσότερης χρησιμότητας" ενός αλγορίθμου.

Παράθεση από: alkisg στις 03 Απρ 2013, 12:59:40 ΜΜ
Τα κριτήρια ή χαρακτηριστικά ή όπως αλλιώς τα πούμε, θεσπίστηκαν για να ξεχωρίζουμε την ποιότητα των αλγορίθμων. Ένας αλγόριθμος που πάντα βγάζει "2" είναι κακογραμμένος και άχρηστος. Θα πρέπει να ξαναγραφεί ώστε να έχει και κάποια είσοδο για να λύνει μια κατηγορία προβλημάτων (π.χ. υπολογισμός διπλασίου) και όχι ένα instance προβλήματος (π.χ. υπολογισμός του διπλασίου του 1).
Ένας αλγόριθμος μπορεί να είναι κακογραμμένος αλλά δεν παύει να είναι αλγόριθμος, σύμφωνα με τον ορισμό. Ένας αλγόριθμος με μια απλή δομή ακολουθίας που υπολογίζει το άθροισμα δύο fixed αριθμών μπορεί να μην ένας γενικός καλογραμμένος αλγόριθμος αλλά είναι ένας έγκυρος αλγόριθμος.

Παράθεση από: alkisg στις 03 Απρ 2013, 12:59:40 ΜΜ
Για τα πρωτογενή δεδομένα, όπως και να τα ορίσεις, θα πρέπει πάντως να μπορεί να αλλαχθεί η τιμή τους χωρίς να αλλάζει ο αλγόριθμος.
Εδώ σου απάντησα ότι μιλώ καθαρά πάνω στον ορισμό του κριτηρίου εισόδου που θέτει το βιβλίο της ΑΕΠΠ και μόνο, αλλιώς επί του σκεπτικού σου συμφωνώ μαζί σου. Ο Knuth άλλωστε αναφέρει ότι ένας αλγόριθμος μπορεί να μην έχει εισόδους (zero inputs), χωρίς να λέει τίποτα για "πρωτογενείς τιμές" κλπ.

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

Δηλαδή (κατά ΑΕΠΠ) ένας αλγόριθμος χωρίς καμμία εξωτερική είσοδο π.χ.:
με μια αρχικοποίηση του τύπου
α <- rnd(5)
α <- α+1
πρωτογενής τιμή είναι η τυχαία τιμή που παράγει η γεννήτρια με seed 5 (ο αλγόριθμος επεξεργάζεται την τιμή που προκύπτει από την συναρτήση παραγωγής τυχαίων αριθμών).

με μια αρχικοποίηση του τύπου
α <- 1
α <- α+1
πρωτογενής τιμή είναι το 1 (ο αλγόριθμος επεξεργάζεται την τιμή που προκύπτει από την απλή εντολή α<-1).

Gnirut

Παράθεση από: gpapargi στις 03 Απρ 2013, 01:23:07 ΜΜ
Τυπικά δε μας χαλάει αυτό. Πχ σε μια μαθηματική συνάρτηση το y (ανεξάρτητη μεταβλητή) έχει σχέση με το x (ανεξάρτητη μεταβλητή). Παρόλα αυτά υπάρχει η f(x)=5 δηλαδή η σταθερή συνάρτηση. Το "δεν εξαρτάται το y από το x" που συμβαίνει επί της ουσίας, είναι σαν να λες ότι εξαρτάται με την τετριμμένη έννοια της σταθερής συνάρτησης.

Στο παράδειγμα δεν έχει σχέση το χ με το ψ, τα χ,ψ είναι είσοδοι (δεδομένα που εισάγονται), το β και το α είναι έξοδοι.

Gnirut

Συνοψίζοντας και χαριτολογώντας:

Π.χ. για τον αλγόριθμο
Αλγόριθμος Αλ
Εμφάνισε "γεια σας"
Τέλος Αλ

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

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

P.Tsiotakis

Παράθεση από: Gnirut στις 03 Απρ 2013, 01:57:05 ΜΜ
Συνοψίζοντας και χαριτολογώντας:

Π.χ. για τον αλγόριθμο
Αλγόριθμος Αλ
Εμφάνισε "γεια σας"
Τέλος Αλ

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

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

Αλληλούια

alkisg

Παράθεση από: Gnirut στις 03 Απρ 2013, 01:26:08 ΜΜ
Γιατί, ένας αλγόριθμος που εμφανίζει ένα fixed splash screen δεν είναι χρήσιμος;

Ναι, δεν είναι χρήσιμος. Οι splash screens έχουν σαν δεδομένο τη συνθήκη τερματισμού, η οποία ικανοποιείται όταν το κυρίως πρόγραμμα έχει ετοιμαστεί και είναι έτοιμο να δεχτεί δεδομένα από το χρήστη. Δηλαδή το δεδομένο του Αλγορίθμου SplashScreen είναι το signal που στέλνει η εξωτερική διαδικασία που τερματίζει το splash screen. Αν κάποιος βγάλει ένα πρόγραμμα στο Android market που εμφανίζει μια splash screen η οποία δεν τερματίζει ποτέ και δεν αφήνει καν το χρήστη να σηκώσει το τηλέφωνο, δεν νομίζω ότι κανείς θα το θεωρήσει χρήσιμο και θα το αγοράσει. ΟΚ, εκτός αν ο σκοπός είναι να κόψουμε διά παντός τα τηλεφωνήματα. :)

Παράθεση από: Gnirut στις 03 Απρ 2013, 01:57:05 ΜΜ
Εαν δεν θεωρήσουμε ως "πρωτογενή τιμή" το "γειά σας", τότε θεωρητικώς ο ορισμός του βιβλίου για τα κριτήρια ενός αλγορίθμου καταρρέει για το συγκεκριμένο παράδειγμα, οπότε ο παραπάνω αλγόριθμος δεν είναι αλγόριθμος, πράγμα που δεν ισχύει γιατί είναι ένας μια χαρά αλγόριθμος που τρέχει σε όλες τις γλώσσες προγραμματισμού...

Δεν μπορώ με τίποτα να δεχτώ σαν αφετηρία το ότι "το βιβλίο θα πρέπει να βγαίνει σωστό".
Ως αφετηρία θα ξεκινήσω με τον ορισμό της εισόδου, "Είσοδος είναι κάτι έξω από τον αλγόριθμο που μπαίνει σε αυτόν και πιθανώς επηρεάζει τις εξόδους του". Κι αν έχω αμφιβολία για τον αν τον κατάλαβα καλά, θα ψάξω σχετικά επιστημονικά συγγράμματα.
Παρόλα αυτά, δεν θεωρώ ότι το βιβλίο είναι λάθος σε αυτό το σημείο, κι ας αφήνει κάποιες λαβές για παρεξήγηση. Σαν παράδειγμα για τα πρωτογενή δεδομένα αναφέρει τη random, ακριβώς επειδή είναι κάτι που μπορεί να πάρει διαφορετικές τιμές χωρίς να μεταβληθεί ο αλγόριθμος.
Το x <- 1 δεν μπορεί να μεταβληθεί χωρίς να μεταβάλλεις τον αλγόριθμο (το κείμενό του) και άρα δεν είναι πρωτογενές δεδομένο.

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

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

Gnirut

Το συγκεκριμένο splash screen που αναφέρομαι γράφει απλώς:
"Fatal error, press the reset button"
και καλειται:
on huge_unrecoverable_fatal_error do
     display doomsday_splash_screen()...
:D


"Εγώ ήθελα απλά να συμφωνήσουμε ότι το "Εμφάνισε 'Hello world'" δεν έχει καμία είσοδο."
Όπως είδες και παραπάνω συμφωνούμε απόλυτα!

"Αλλιώς όταν συζητάμε με Πληροφορικούς εκτός Ελληνικής Β/θμιας εκπαίδευσης που δεν έχουν διαβάσει ποτέ το βιβλίο της ΑΕΠΠ δεν θα μπορούμε να συνεννοηθούμε"
Πάντως μεταξύ μας "δεν" μπορούμε να συνεννοηθούμε επειδή έχουμε διαβάσει το βιβλίο της ΑΕΠΠ και όχι επειδή δεν το έχουμε διαβάσει................
:-\




alkisg

Παράθεση από: Gnirut στις 03 Απρ 2013, 03:39:31 ΜΜ
Το συγκεκριμένο splash screen που αναφέρομαι γράφει απλώς:
"Fatal error, press the reset button"

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

Παράθεση από: Gnirut στις 03 Απρ 2013, 03:39:31 ΜΜ
Πάντως μεταξύ μας "δεν" μπορούμε να συνεννοηθούμε επειδή έχουμε διαβάσει το βιβλίο της ΑΕΠΠ και όχι επειδή δεν το έχουμε διαβάσει................
:-\

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

Gnirut

"Παρόλα αυτά, δεν θεωρώ ότι το βιβλίο είναι λάθος σε αυτό το σημείο, κι ας αφήνει κάποιες λαβές για παρεξήγηση. Σαν παράδειγμα για τα πρωτογενή δεδομένα αναφέρει τη random, ακριβώς επειδή είναι κάτι που μπορεί να πάρει διαφορετικές τιμές χωρίς να μεταβληθεί ο αλγόριθμος.
Το x <- 1 δεν μπορεί να μεταβληθεί χωρίς να μεταβάλλεις τον αλγόριθμο (το κείμενό του) και άρα δεν είναι πρωτογενές δεδομένο."

Δεν παίρνεις πραγματικά διαφορετικές τιμές. Την ίδια επαναλαμβανόμενη ακολουθία τυχαίων αριθμών παίρνεις ουσιαστικά κάθε φορά που εκτελείς τον αλγόριθμο.
Εαν θεωρήσεις ότι χρησιμοποιείς μια random με σταθερό seed όπως λ.χ. κάτι σαν rnd(6), seed το 6, επί της ουσίας (εαν περάσεις τον κωδικα της συνάρτησης μέσα στον αλγόριθμο) στην αρχή του αλγόριθμού σου θα έχεις κάποια μεταβλητη που θα αρχικοποιείται ως seed<-6. Εν ολίγοις το ίδιο πράγμα έχεις με το χ<-1.

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

Ο καθένας το ερμηνεύει κάπως, δεν διεκδικεί (ούτε εγώ) το αλάθητο. Το συζητάμε το πράγμα.

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

alkisg

Παράθεση από: Gnirut στις 03 Απρ 2013, 04:12:30 ΜΜ
"Παρόλα αυτά, δεν θεωρώ ότι το βιβλίο είναι λάθος σε αυτό το σημείο, κι ας αφήνει κάποιες λαβές για παρεξήγηση. Σαν παράδειγμα για τα πρωτογενή δεδομένα αναφέρει τη random, ακριβώς επειδή είναι κάτι που μπορεί να πάρει διαφορετικές τιμές χωρίς να μεταβληθεί ο αλγόριθμος.
Το x <- 1 δεν μπορεί να μεταβληθεί χωρίς να μεταβάλλεις τον αλγόριθμο (το κείμενό του) και άρα δεν είναι πρωτογενές δεδομένο."

Δεν παίρνεις πραγματικά διαφορετικές τιμές. Την ίδια επαναλαμβανόμενη ακολουθία τυχαίων αριθμών παίρνεις ουσιαστικά κάθε φορά που εκτελείς τον αλγόριθμο.
Εαν θεωρήσεις ότι χρησιμοποιείς μια random με σταθερό seed όπως λ.χ. κάτι σαν rnd(6), seed το 6, επί της ουσίας (εαν περάσεις τον κωδικα της συνάρτησης μέσα στον αλγόριθμο) στην αρχή του αλγόριθμού σου θα έχεις κάποια μεταβλητη που θα αρχικοποιείται ως seed<-6. Εν ολίγοις το ίδιο πράγμα έχεις με το χ<-1.

Να ένα χαρακτηριστικό παράδειγμα.
Εγώ θεωρώ ότι όταν οι συγγραφείς αναφέρθηκαν στη random(), την εννοούσαν σαν κανονική random() και όχι όπως την λες παραπάνω με βάση συγκεκριμένες γλώσσες/βιβλιοθήκες προγραμματισμού.
Ένας τρόπος για πραγματική random() είναι να της κάνεις seed() με βάση π.χ. το ρολόι, time(). Άρα το πρωτογενές δεδομένο στη συγκεκριμένη υλοποίηση της random θα ήταν η τιμή του ρολογιού, γιατί αυτό είναι που αλλάζει σε διαφορετικές εκτελέσεις του αλγορίθμου.
Σε μια άλλη υλοποίηση, μπορεί να είχαμε μια hardware γεννήτρια τυχαίων αριθμών. Άρα πρωτογενές δεδομένο είναι ο ίδιος ο τυχαίος αριθμός. Σε άλλη, όπως γίνεται στο /dev/random του linux, να έπαιρνε seed από την εντροπία του συστήματος, συμβάντα περιφερειακών εισόδου κτλ.

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

Για μένα το σημαντικό ήταν το θέμα του ορισμού της εισόδου. Εφόσον συμφωνούμε ότι το "Εμφάνισε 'Hello world'" δεν έχει είσοδο, μου αρκεί. Για τα υπόλοιπα, πρωτογενή δεδομένα / υπολογιστικές διαδικασίες κτλ, έχουμε διαφορετική άποψη, αλλά δεν το θεωρώ και τόσο σημαντικό να υπάρξει σύγκλιση. :)

vtsakan

Οτι αναφέρεται σε αυτό το post δεν προορίζεται για χρήση στο μάθημα ΑΕΠΠ.

Λαμβάνοντας υπόψη την παραπάνω κουβέντα, κάποιες παρατηρήσεις, χρησιμοποιώντας τις σημειώσεις του Ζάχου.

1. Ένα σύνολο εντολών σε μια γλώσσα προγραμματισμού αποτελεί μία υπολογιστική διαδικασία.
2. Όταν μία υπολογιστική διαδικασία λύνει ένα πρόβλημα τότε είναι αλγόριθμος.
2.α Όταν αναφέρουμε πως ένα πρόβλημα λύνεται, εννοείται πως λύνεται για κάθε πιθανό στιγμιότυπο.

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

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

Το επόμενο βήμα του συλλογισμού μου με οδηγεί να μελετήσω με μεγαλύτερη ακρίβεια τι είναι και τι οχι πρόβλημα στην αλγοριθμική. Μιας και όλοι συμφωνούμε πως ένα πρόβλημα στην αλγοριθμική πρέπει να είναι γενικό, προσωπική μου άποψη είναι πως το κλασσικό πρόγραμμα "Hello World"  δεν είναι αλγόριθμος. Ποιο είναι άραγε το αλγοριθμικό πρόβλημα (γενικό) που επιλύει; Είναι μία πολύ διάσημη υπολογιστική διαδικασία.

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

Όσον αφορά την ΑΕΠΠ, νομίζω πως η απάντηση είναι σαφής. Κάθε αλγόριθμος πρέπει να έχει είσοδο.

Αυτές οι σκεψεις μου για το θέμα.
Βασίλης Τσακανίκας
Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π.

Gnirut

Παράθεση από: alkisg στις 03 Απρ 2013, 04:54:18 ΜΜ
Να ένα χαρακτηριστικό παράδειγμα.
Εγώ θεωρώ ότι όταν οι συγγραφείς αναφέρθηκαν στη random(), την εννοούσαν σαν κανονική random() και όχι όπως την λες παραπάνω με βάση συγκεκριμένες γλώσσες/βιβλιοθήκες προγραμματισμού.
Ένας τρόπος για πραγματική random() είναι να της κάνεις seed() με βάση π.χ. το ρολόι, time(). Άρα το πρωτογενές δεδομένο στη συγκεκριμένη υλοποίηση της random θα ήταν η τιμή του ρολογιού, γιατί αυτό είναι που αλλάζει σε διαφορετικές εκτελέσεις του αλγορίθμου.
Σε μια άλλη υλοποίηση, μπορεί να είχαμε μια hardware γεννήτρια τυχαίων αριθμών. Άρα πρωτογενές δεδομένο είναι ο ίδιος ο τυχαίος αριθμός. Σε άλλη, όπως γίνεται στο /dev/random του linux, να έπαιρνε seed από την εντροπία του συστήματος, συμβάντα περιφερειακών εισόδου κτλ.

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

Για μένα το σημαντικό ήταν το θέμα του ορισμού της εισόδου. Εφόσον συμφωνούμε ότι το "Εμφάνισε 'Hello world'" δεν έχει είσοδο, μου αρκεί. Για τα υπόλοιπα, πρωτογενή δεδομένα / υπολογιστικές διαδικασίες κτλ, έχουμε διαφορετική άποψη, αλλά δεν το θεωρώ και τόσο σημαντικό να υπάρξει σύγκλιση. :)

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

Οι γεννήτριες που αναφέρεις είναι με είσοδο κάποιας μορφής δεδομένου που λειτουργεί ως seed (εντροπία, ρολόι κλπ). Σε αυτήν την περίπτωση δεν μιλάμε για "πρωτογενή δεδομένα" αλλά έχουμε μία ή περισσότερες εισόδους στον αλγόριθμο (ώρα συστήματος, θερμοκρασία συστήματος, κίνηση στο bus ή στο σκληρό κ.ο.κ), οπότε δεν υπάρχει "μπέρδεμα" σχετικά με το "κριτήριο εισόδου" που αναφέρουν οι συγγραφείς του βιβλίου της ΑΕΠΠ.

Γενικώς πάντως από ο,τι κατάλαβα δεν διαφωνούμε σε τίποτα.

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

Παράθεση από: Gnirut στις 03 Απρ 2013, 01:57:05 ΜΜ
Συνοψίζοντας και χαριτολογώντας:

Π.χ. για τον αλγόριθμο
Αλγόριθμος Αλ
Εμφάνισε "γεια σας"
Τέλος Αλ

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

Εμένα δεν με χαλάει αν το "γεια σας" θεωρείται "πρωτογενής τιμή". Από ό,τι βλέπω όμως συμφωνούμε στο ότι αντιστοιχεί στο "καμία είσοδος"... επομένως... δεν αποτελεί είσοδο! Αμήν!  :angel:

Παράθεση από: alkisg στις 03 Απρ 2013, 04:54:18 ΜΜ
Για μένα το σημαντικό ήταν το θέμα του ορισμού της εισόδου. Εφόσον συμφωνούμε ότι το "Εμφάνισε 'Hello world'" δεν έχει είσοδο, μου αρκεί.

Κι εμένα!  :)

P.Tsiotakis

Παράθεση από: Νίκος Αδαμόπουλος στις 03 Απρ 2013, 10:59:19 ΜΜ
Εμένα δεν με χαλάει αν το "γεια σας" θεωρείται "πρωτογενής τιμή". Από ό,τι βλέπω όμως συμφωνούμε στο ότι αντιστοιχεί στο "καμία είσοδος"... επομένως... δεν αποτελεί είσοδο! Αμήν!  :angel:
Κι εμένα!  :)

Αποτελεί "καμία είσοδος δε δίνεται"
όχι
"καμία είσοδος"

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


ntzios kostas

#54
Διάβασα παιδιά τα περισσότερα post για το κριτήριο της εισόδου. Η άποψη μου είναι ότι είσοδος είναι και τα δεδομένα της ίδιας της εκφώνησης. Δεν μπορώ να δεχτώ ότι η εκφώνηση να γίνει αλγόριθμος που θα εμφανίζει όλους  τους ακέραιους από το 1 μέχρι 10 δεν στέκει αλλά αντίθετα  η εκφώνηση να γίνει αλγόριθμος που να διαβάζει έναν αριθμό και να εμφανίζει τους ακέραιους από 1 μέχρι 10 στέκει.

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

gpapargi

Η απάντηση σε αυτό που γράφεις Κώστα είναι ότι η είσοδος δεν είναι κριτήριο αλλά χαρακτηριστικό (Knuth). Άρα αν ένας κώδικας δεν έχει είσοδο, δε σημαίνει ότι δεν είναι και αλγόριθμος. Η λέξη "χαρακτηριστικό" είναι πιο ήπια. Αντίθετα η λέξη "κριτήριο" είναι πιο βαριά. Αν δεν το έχει δεν είναι αλγόριθμος.   
Κριτήρια είναι η περατότητα και η καθοριστικότητα. Τα άλλα 3 είναι χαρακτηριστικά.

pmouz

Ένα από τα προβλήματα σε όλη την υπόθεση πιστεύω ότι είναι η φράση με την έντονη γραφή:

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

Εδώ θα έπρεπε να δίνει ένα παράδειγμα.