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

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

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

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