Αλγοριθμικά κριτήρια

Ξεκίνησε από lala, Σήμερα στις 09:14:27 ΠΜ

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

lala

Στον παρακάτω αλγόριθμο θεωρείτε ότι εκτός από την περατότητα παραβιάζεται και η είσοδος?

ΓΙΑ I ΑΠΟ 2 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 0
          S ← S + I
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ S


Ευχαριστώ

petrosp13

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

alkisg

Είσοδος: δεν δημιουργεί ούτε επεξεργάζεται πρωτογενείς τιμές, άρα θα έπρεπε να έχει είσοδο
Καθοριστικότητα: τι κάνει η S <- S + I όταν δεν έχει αρχικοποιηθεί το S;
Περατότητα: άπειρο loop

lala

Εννοείς για το S που δεν αρχικοποιείται ότι παραβιάζεται το κριτήριο της εισόδου? Γιατι η εντολή Για i απο 2 μεχρι...κρύβει
 i <--2. Οπότε έχουμε μια είσοδο! Το S που δεν παίρνει τιμή αρχική με προβληματίζει
Ευχαριστώ 

alkisg

Το S που δεν παίρνει αρχική τιμή παραβιάζει την καθοριστικότητα, γιατί εξ' αιτίας του δεν ξέρουμε τι ακριβώς θα κάνει η εντολή S <- S+I, και η ΓΡΑΨΕ στη συνέχεια.

Το I <- 2 δεν έχει σχέση με είσοδο. Η είσοδος γίνεται είτε με την ΔΙΑΒΑΣΕ είτε με τα Δεδομένα της Ψευδογλώσσας (είτε στην περίπτωση υποπρογράμματος, αν το θεωρήσουμε ξεχωριστό αλγόριθμο από το κυρίως πρόγραμμα, και παρομοιάσουμε τις παραμέτρους εισόδου με τα Δεδομένα, με αυτές).
Οι σταθερές τιμές που βάζει ο προγραμματιστής εντός του προγράμματος δεν αποτελούν είσοδο.
Η είσοδος είναι "εκτός" του αλγορίθμου, δεν αποτελεί μέρος του κώδικά του.

George Eco

'Οτι είπε ο Άλκης. Καθοριστικότητα για το μη αρχικοποιημένο S και περατότητα για το μηδενικό βήμα.

epsilonXi

ενδιαφέρον...η είσοδος δηλαδή δε μπορεί να είναι ΚΑΙ στοιχεία που δίνονται στην εκφώνηση;

π=4( 1/1 -1/3 +1/5 -1/7 +...-...)
γράψτε τις εντολές που υπολογίζουν το άθροισμα των πρώτων 100 όρων της παραπάνω παράστασης:

αθρ <- 0
παρ <- 1
προ <- 1
για χ από 1 μέχρι 100
   αθρ <- αθρ + 1/παρ*προ
   παρ <- παρ + 2
   προ <- προ * (-1)
τέλος_επανάληψης
π <- 4*αθρ
το παραπάνω δηλαδή δεν αποτελεί αλγόριθμο;

alkisg

Με βάση το βιβλίο, Knuth κλπ, ναι δεν αποτελεί αλγόριθμο. Ή τουλάχιστον "δεν σέβεται τα κριτήρια/χαρακτηριστικά ενός καλού αλγορίθμου".
Όπως και το ΓΡΑΨΕ "Hello world!", ο πρώτος "αλγόριθμος" που διδασκόμαστε σε κάθε γλώσσα προγραμματισμού, πάλι δεν αποτελεί "καλό" αλγόριθμο, δεν επιλύει κάποιο πρόβλημα που "δεν είναι προφανές" κλπ κλπ.
Ή αν κάποιος μας πει "κάντε έναν αλγόριθμο που να υπολογίζει το 1000στό ψηφίο του π", εμείς δεν πρέπει να απαντήσουμε "ΓΡΑΨΕ 9" επειδή το βρήκαμε στο Google.

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

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

epsilonXi

οκ, αντιλαμβάνομαι τη λογική, αλλά δε μου κάθεται πολύ καλά!

και αναπροσαρμόζω την εκφώνηση :P   :D :
 
π=4( 1/1 -1/3 +1/5 -1/7 +...-...)
γράψτε τις εντολές που θα ρωτούν τον χρήστη αν επιθυμεί να δει την τιμή του π όπως θα προέκυπτε από 100 όρους της παραπάνω παράστασης, και σε περίπτωση καταφατικής απάντησης θα την υπολογίζει και θα την εμφανίζει

Λαμπράκης Μανώλης

Καλησπέρα σε όλους 

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

Δημήτρης Χατζόπουλος

#10
το βιβλίο γραφει:
"Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών."
Δεν τίθεται θέμα. Ικανοποιείται το κριτήριο εισόδου στο συγκεκριμένο.
Ικανοποίηση του κριτηρίου εισόδου δεν σημαίνει να υπάρχει οπωσδήποτε κάποιο διάβασε αλλά σημαίνει όταν χρησιμοποιούμε τις μεταβλητές, να έχουν πάρει με κάποιο τρόπο τιμή από πριν. (Και αυτό ειναι και το νόημα της λέξης καμία.)
Εδώ οι τιμές του Ι, παράγονται μέσω της δομής για.  Αρα υπάρχουν τιμές δοσμένες. Οπότε το κριτήριο εισόδου ικανοποιείται.
Δεν υπάρχει περατότητα και τίθεται θέμα καθοριστικότητας για το s (πάντα με βάση το βιβλίο)

Δημήτρης Χατζόπουλος

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

alkisg

@epsilonXi, άρα αν εγώ σαν λύση γράψω απευθείας το αποτέλεσμα της πράξης, χωρίς να κάνω καμία επανάληψη, το πιάνεις σωστό;
Τι αξία έχει να φτιάξουμε έναν αλγόριθμο που να υπολογίζει την υποτείνουσα μόνο ορθογωνίων τριγώνων με πλευρές 3 και 4;
Μπορούμε απλά να πούμε "ΓΡΑΨΕ 5".
Ένας "καλός αλγόριθμος" που σέβεται τα χαρακτηριστικά/κριτήρια των αλγορίθμων, θέλει αντίστοιχα και μια "καλή εκφώνηση", που να δείχνει ποια είναι η είσοδος από την οποία εξαρτάται η έξοδος.

@Μανώλη, το "απλών εντολών" αναφέρεται στο "πρωτογενείς τιμές", δεν εννοεί ότι γενικά όλες οι απλές εντολές είναι είσοδος.

@Δημήτρη, δηλαδή π.χ. στην αναζήτηση στοιχείου ενός πίνακα, ο μετρητής i αποτελεί είσοδο επειδή τον αρχικοποιούμε στο 1;
Κι αν κάποιος κάνει υλοποίηση και με flag, τότε αυτός έχει διαφορετική είσοδο επειδή αρχικοποίησε το flag;
Δεν βγάζει νόημα αυτό, δεν έχει καμία σχέση η είσοδος του αλγορίθμου με την αρχικοποίηση των μεταβλητών.
Στον αλγόριθμο αναζήτησης η είσοδος είναι ο πίνακας και το στοιχείο που ζητάμε, όχι το i=1 και το flag=ΨΕΥΔΗΣ...

Link στο βιβλίο του Knuth, από όπου τα πήραν οι συγγραφείς:
https://haio.ir/wp-content/uploads/2024/12/Donald-Knuth-The-Art-of-Computer-Programming-Vol.-1_-Fundamental-Algorithms-3rd-Edition-Addison-Wesley-Professional-1997.pdf

Εκεί ξεκάθαρα ΔΕΝ αναφέρει τις εντολές εκχώρησης για αρχικοποίηση των μεταβλητών ως είσοδο.

Δημήτρης Χατζόπουλος

Παράθεση από: alkisg στις Σήμερα στις 06:54:46 ΜΜ@Δημήτρη, δηλαδή π.χ. στην αναζήτηση στοιχείου ενός πίνακα, ο μετρητής i αποτελεί είσοδο επειδή τον αρχικοποιούμε στο 1;
Κι αν κάποιος κάνει υλοποίηση και με flag, τότε αυτός έχει διαφορετική είσοδο επειδή αρχικοποίησε το flag;
Δεν βγάζει νόημα αυτό, δεν έχει καμία σχέση η είσοδος του αλγορίθμου με την αρχικοποίηση των μεταβλητών.
Στον αλγόριθμο αναζήτησης η είσοδος είναι ο πίνακας και το στοιχείο που ζητάμε, όχι το i=1 και το flag=ΨΕΥΔΗΣ...

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