Εισοδος Αλγορίθμου

Ξεκίνησε από Skara, 03 Οκτ 2008, 02:12:19 ΜΜ

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

Skara

Η πρόταση " Ένας αλγόριθμος πρέπει πάντα να έχει είσοδο ." είναι σωστή ή όχι;

P.Tsiotakis

πρέπει ΑΠΑΡΑΙΤΗΤΑ πάντα να έχει, ναι

papaluk

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

stavrax

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

Παράδειγμα: Να γραφεί αλγόριθμος που ελέγχει άν ο αριθμός 234532082351 είναι πρώτος ή όχι

Αλγόριθμος τάδε
   χ<-234532082351
   κλπ κλπ
Τελος τάδε

Ο παραπάνω αλγόριθμος επεξεργάζεται μια πρωτογενή τιμή ... άρα ικανοποιεί το κριτήριο της καμμίας/μίας εισόδου.



petrosp13

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

alkisg

#5
Κώδικας: Ψευδογλώσσα
Αλγόριθμος ΠαραγωγήΔύοΤυχαίωνΑριθμώνΑπόΤοΈναΩςΤοΔέκα
  χ1 ← Τυχαίος(10)
  χ2 ← Τυχαίος(10)
Αποτελέσματα // χ1, χ2 //
Τέλος ΠαραγωγήΔύοΤυχαίωνΑριθμώνΑπόΤοΈναΩςΤοΔέκα


Όπου Τυχαίος(Ν): άλλος αλγόριθμος (=συνάρτηση) παραγωγής τυχαίων αριθμών.
Το παραπάνω θεωρώ ότι είναι μια χαρά αλγόριθμος (σύμφωνα με αυτά που γράφει το βιβλίο στη σελίδα 26), και επομένως θεωρώ την πρόταση ***edit*** σωστή (νόμιζα ότι το βιβλίο δεν θεωρούσε ότι η random αποτελεί είσοδο, αλλά με προσεκτική ανάγνωση καταλαβαίνω ότι τη θεωρεί είσοδο, και συμφωνώ απόλυτα με αυτό).


Παράθεση από: stavrax στις 04 Οκτ 2008, 08:22:45 ΠΜ
Αλγόριθμος τάδε
   χ<-234532082351
   κλπ κλπ
Τελος τάδε

Νομίζω ότι το 234532082351 σ' αυτήν την περίπτωση δεν είναι είσοδος αλλά απλή σταθερά. Η είσοδος δεν μπορεί να είναι μέρος του κώδικα (="κουτί επεξεργασίας").


P.Tsiotakis

Μιας και η ζωή κάνει κύκλους, δείτε τη συζήτηση (2006) στο:
https://alkisg.mysch.gr/steki/index.php?topic=387.0

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

Καρκαμάνης Γεώργιος

Στις επαναληπτικές του 2003 υπήρξαν στο 1ο θέμα δύο υποερωτήματα, όπου στο καθένα από αυτά δίνονταν και μια αλληλουχία εντολών όπου έπρεπε ο μαθητής να απαντήσει εάν ικανοποιούσε  όλα τα κριτήρια ή όχι.
Η δεύτερη αλληλουχία εντολών ήταν η εξής:

α <- 1
Όσο α<>6 επανάλαβε
   α <- α+2
Τέλος_επανάληψης
Εκτύπωσε α

Η επίσημη απάντηση που δόθηκε ήταν ότι δεν ικανοποιεί το κριτήριο της περατότητας.
Άρα θα σκεφτεί κάποιος ότι ικανοποιεί το κριτήριο της εισόδου εφόσον δεν έγινε καμία αναφορά σε αυτό. Και ποια είναι η είσοδος σε αυτήν την αλληλουχία εντολών; Μήπως η απλή εντολή α<-1;

Laertis

Η εντολή α<--1 θεωρείται ως είσοδος

Παράθεση από: Skara στις 03 Οκτ 2008, 02:12:19 ΜΜ
Η πρόταση " Ένας αλγόριθμος πρέπει πάντα να έχει είσοδο ." είναι σωστή ή όχι;

Η πρόταση είναι σωστή. Ως κριτήριο η είσοδος πρέπει να υπάρχει πάντα είτε "εξωτερικά" (Διάβασε) είτε με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

alkisg

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

Συνάδελφοι, κατά τη γνώμη μου το "άλλων απλών εντολών" εννοεί άλλων απλών εντολών που να παράγουν πρωτογενείς τιμές, και αυτό σημαίνει τιμές που να μην είναι σταθερές σε κάθε εκτέλεση, δηλαδή να μην περιέχονται στον κώδικα. Επομένως είτε να προκύπτουν από random είτε από τα milliseconds του ρολογιού του υπολογιστή όταν εκτελεστεί το πρόγραμμα είτε από κάποια άλλη παρόμοια "απλή εντολή". Για παράδειγμα, "Διάβασε την τρέχουσα θερμοκρασία του επεξεργαστή από τη θύρα I/O 5335" (= απλή εντολή που παράγει πρωτογενή δεδομένα).

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

Δε νομίζω ότι θα βρείτε πουθενά να χαρακτηρίζεται η εντολή
Α <- 1
ως είσοδος, όχι μόνο στο σχολικό βιβλίο, πουθενά.

Ελεύθερη μετάφραση της σχετικής παραγράφου του βιβλίου:
Για να έχουμε έναν αλγόριθμο που να μην έχει εντολή Διάβασε ούτε εντολή Δεδομένα και ο οποίος να κάνει και κάτι χρήσιμο, τότε πρέπει απαραίτητα να γίνεται σε κάποια φάση χρήση πρωτογενών δεδομένων, δηλαδή κλήση της εντολής random ή ισοδύναμης.
Το παραπάνω παράδειγμα με τον πρώτο αριθμό, αφού εκτελεστεί ολόκληρος ο αλγόριθμος, η τελική απάντηση θα είναι "είναι πρώτος" ή "δεν είναι πρώτος". Θα είναι όμως πάντα η ίδια απάντηση, αφού δεν υπάρχει είσοδος. Επομένως ο αλγόριθμος δεν είναι χρήσιμος. Αν θεωρήσουμε τον αλγόριθμο ως μαύρο κουτί, τότε ο αλγόριθμος που θα φτιάξουμε θα είναι ισοδύναμος με τον
Κώδικας: Ψευδογλώσσα
Αλγόριθμος Έλεγξε_αν_ο_234532082351_είναι_πρώτος
Εμφάνισε "Δεν είναι πρώτος"
Τέλος Έλεγξε_αν_ο_234532082351_είναι_πρώτος

που προφανώς ούτε είσοδο έχει ούτε χρήσιμος είναι.

Αν όμως θέλαμε το 234532082351 να είναι είσοδος τότε θα έπρεπε να το γράψουμε ως
Κώδικας: Ψευδογλώσσα
Αλγόριθμος Έλεγξε_αν_ο_Χ_είναι_πρώτος
Διάβασε Χ !Εδώ δίνουμε είσοδο το 234532082351

!...Και ακολουθεί ο κανονικός αλγόριθμος
Τέλος Έλεγξε_αν_ο_Χ_είναι_πρώτος


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

Αντίθετα, τα δεδομένα που δίνει ο χρήστης καθώς και τα milliseconds του ρολογιού κατά τη στιγμή της εκτέλεσης (ή η θερμοκρασία, αν έχουμε σχετικό αισθητήρα συνδεδεμένο στον Η/Υ) δεν είναι ενσωματωμένα στον κώδικα, και γι' αυτό είναι είσοδος.

Laertis

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

Η είσοδος όμως είναι απαραίτητο κριτήριο των αλγορίθμων; Κατά το βιβλίο ναι.

Με τη δική σου θεώρηση (που δεν είναι λάθος) η είσοδος δεν αποτελεί κριτήριο για έναν αλγόριθμο αφού δεν ενσωματώνεται στον κώδικα. Η χρησιμότητα που θέτεις είναι υποκειμενικό θέμα.
Το θέμα είναι ότι (κατά το βιβλίο) η είσοδος είναι απαραίτητο κριτήριο για να υπάρχει αλγόριθμος (έστω και άχρηστος).
Αν δεχτούμε τη δική σου θεώρηση στο θέμα 1 των Πανελλαδικών του 2003 - και σε πολλά παρόμοια που ακολούθησαν-  ο αλγόριθμος δεν πληροί το κριτήριο της περατότητας και της εισόδου.
ʼρα λάθος βαθμολογήθηκε το θέμα σύμφωνα με τις οδηγίες και πρώτος εγώ το βαθμολόγησα λάθος.

Το πρόβλημα ξεκινά απο το τι θεωρούμε αλγόριθμο και τι απλά υπολογιστική διαδικασία κάτι που το βιβλίο δεν διαχωρίζει σαφώς.
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

alkisg

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

Δηλαδή πιστεύω τα παρακάτω:

  • Ναι, η είσοδος είναι απαραίτητο κριτήριο των αλγορίθμων.
  • Είσοδος είναι η Διάβασε, τα Δεδομένα, και οι απλές εντολές παραγωγής πρωτογενών τιμών (random κτλ).
  • Όχι, το α <- 1 δεν είναι είσοδος.

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

Δε γράφω πολλά για να φανεί ξεκάθαρα το που διαφωνούμε. Θεωρώ εντελώς απίθανο να εννοούσε ο συγγραφέας ότι "απλή εντολή παραγωγής πρωτογενών τιμών είναι και το α <- 1", θα προσπαθήσω να έρθω σε επικοινωνία μαζί του για να το ξεδιαλύνουμε. Επειδή φέτος είμαι σε Γυμνάσιο δεν μπορώ να στείλω απορία μέσω συμβούλου, όποιος όμως είναι σε Λύκειο και θέλει μπορεί να το κάνει.

ntzios kostas

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

stavrax

Συμφωνώ κώστα και επαυξάνω:

νομίζω ότι το μπέρδεμα που αντιμετωπίζουμε όλοι προκύπτει από την λέξη είσοδος!!
Δηλαδή:
1) είσοδος προς τον υπολογιστή είναι (χοντρικά) η μεταφορά πληροφορίας από τον "έξω κόσμο" προς τον Η/Υ
(εδώ μάλλον συμφωνούμε όλοι)
2) είσοδος προς έναν αλγόριθμο είναι ...
(εδώ μάλλον υπάρχουν οι διαφωνίες μας)

Μήπως αν ξεδιαλύνουμε το ότι άλλο η μια είσοδος και άλλο η άλλη, θα μπορέσουμε να συμφωνήσουμε στο ότι η εντολή
χ<--334532452341
μπορεί να θεωρηθεί σαν είσοδος? (κάτι σαν kickStart του αλγορίθμου?)

alkisg

Παράθεση από: stavrax στις 07 Οκτ 2008, 01:34:47 ΠΜ
Μήπως αν ξεδιαλύνουμε το ότι άλλο η μια είσοδος και άλλο η άλλη, θα μπορέσουμε να συμφωνήσουμε ...

Μακάρι, αλλά δε νομίζω! :)
Π.χ. εγώ είσοδο/έξοδο σε ένα κλειστό σύστημα θεωρώ την αλληλεπίδραση που έχει με ό,τι βρίσκεται έξω από αυτό.

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

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