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

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

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

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). Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.

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