Στον παρακάτω αλγόριθμο θεωρείτε ότι εκτός από την περατότητα παραβιάζεται και η είσοδος?
ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 0
S ← S + I
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ S
Ευχαριστώ
Δεν νομίζω, ειδικά αφού επιτρέπεται να μην έχει κάποιο δεδομένο επειδή μπορεί να δημιουργεί μόνος του τιμές
Αν και γενικά το κριτήριο της εισόδου δεν πρέπει να το αγγίζουμε σε θέματα
Είσοδος: δεν δημιουργεί ούτε επεξεργάζεται πρωτογενείς τιμές, άρα θα έπρεπε να έχει είσοδο
Καθοριστικότητα: τι κάνει η S <- S + I όταν δεν έχει αρχικοποιηθεί το S;
Περατότητα: άπειρο loop
Εννοείς για το S που δεν αρχικοποιείται ότι παραβιάζεται το κριτήριο της εισόδου? Γιατι η εντολή Για i απο 2 μεχρι...κρύβει
i <--2. Οπότε έχουμε μια είσοδο! Το S που δεν παίρνει τιμή αρχική με προβληματίζει
Ευχαριστώ
Το S που δεν παίρνει αρχική τιμή παραβιάζει την καθοριστικότητα, γιατί εξ' αιτίας του δεν ξέρουμε τι ακριβώς θα κάνει η εντολή S <- S+I, και η ΓΡΑΨΕ στη συνέχεια.
Το I <- 2 δεν έχει σχέση με είσοδο. Η είσοδος γίνεται είτε με την ΔΙΑΒΑΣΕ είτε με τα Δεδομένα της Ψευδογλώσσας (είτε στην περίπτωση υποπρογράμματος, αν το θεωρήσουμε ξεχωριστό αλγόριθμο από το κυρίως πρόγραμμα, και παρομοιάσουμε τις παραμέτρους εισόδου με τα Δεδομένα, με αυτές).
Οι σταθερές τιμές που βάζει ο προγραμματιστής εντός του προγράμματος δεν αποτελούν είσοδο.
Η είσοδος είναι "εκτός" του αλγορίθμου, δεν αποτελεί μέρος του κώδικά του.
'Οτι είπε ο Άλκης. Καθοριστικότητα για το μη αρχικοποιημένο S και περατότητα για το μηδενικό βήμα.
ενδιαφέρον...η είσοδος δηλαδή δε μπορεί να είναι ΚΑΙ στοιχεία που δίνονται στην εκφώνηση;
π=4( 1/1 -1/3 +1/5 -1/7 +...-...)
γράψτε τις εντολές που υπολογίζουν το άθροισμα των πρώτων 100 όρων της παραπάνω παράστασης:
αθρ <- 0
παρ <- 1
προ <- 1
για χ από 1 μέχρι 100
αθρ <- αθρ + 1/παρ*προ
παρ <- παρ + 2
προ <- προ * (-1)
τέλος_επανάληψης
π <- 4*αθρτο παραπάνω δηλαδή δεν αποτελεί αλγόριθμο;
Με βάση το βιβλίο, Knuth κλπ, ναι δεν αποτελεί αλγόριθμο. Ή τουλάχιστον "δεν σέβεται τα κριτήρια/χαρακτηριστικά ενός καλού αλγορίθμου".
Όπως και το ΓΡΑΨΕ "Hello world!", ο πρώτος "αλγόριθμος" που διδασκόμαστε σε κάθε γλώσσα προγραμματισμού, πάλι δεν αποτελεί "καλό" αλγόριθμο, δεν επιλύει κάποιο πρόβλημα που "δεν είναι προφανές" κλπ κλπ.
Ή αν κάποιος μας πει "κάντε έναν αλγόριθμο που να υπολογίζει το 1000στό ψηφίο του π", εμείς δεν πρέπει να απαντήσουμε "ΓΡΑΨΕ 9" επειδή το βρήκαμε στο Google.
Η εκφώνηση που δίνεις θα έπρεπε να μετασχηματιστεί σε κάτι πιο ευέλικτο, του στυλ "να υπολογίζει και να εμφανίζει τους Ν πρώτους όρους της παράστασης...".
Τότε η είσοδος θα ήταν το Ν, και η έξοδος το αλφαριθμητικό που εμφανίζει στην οθόνη.
Βασικό χαρακτηριστικό της εισόδου είναι ότι χωρίς να ξαναγράψουμε τον αλγόριθμο, χωρίς να πειράξουμε ούτε μια γραμμή κώδικα, μπορούμε να αλλάξουμε την έξοδό του, μεταβάλλοντας την είσοδό του.
οκ, αντιλαμβάνομαι τη λογική, αλλά δε μου κάθεται πολύ καλά!
και αναπροσαρμόζω την εκφώνηση :P :D :
π=4( 1/1 -1/3 +1/5 -1/7 +...-...)
γράψτε τις εντολές που θα ρωτούν τον χρήστη αν επιθυμεί να δει την τιμή του π όπως θα προέκυπτε από 100 όρους της παραπάνω παράστασης, και σε περίπτωση καταφατικής απάντησης θα την υπολογίζει και θα την εμφανίζει