"Παράξενοι" Αλγόριθμοι με "Για"

Ξεκίνησε από DaKnOb, 25 Ιαν 2013, 03:45:51 ΜΜ

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

DaKnOb

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

Έλεγχος Δεδομένων χωρίς δομή επανάληψης μέσα σε Για


Άγνωστος Αριθμός Επαναλήψεων με Για


Ατέρμων Βρόγχος με Για


***

Γενικά, μπορούν να γίνουν πολλα πράγματα με την Για που πολλοί τα θεωρούν αδύνατα, αλλά δεν γνωρίζω αν είναι σωστά από τεχνικής άποψης. Δεδομένου του ότι πάρα πολλοί καθηγητές δεν ξέρουν το μάθημα αρκετά καλά, ίσως τα πάρουν για λάθος σαν διορθωτές (καλή ώρα ο δικός μου) δεν νομίζω να τα κάνω στις Πανελλαδικές, αλλά δεν παύουν να είναι σωστά.

Ποιά είναι η γνώμη σας;

petrosp13

Το βιβλίο αναφέρει οτι δεν είναι καλή τακτική να αλλάζει με εντολή εντός επανάληψης ο μετρητήσ της για και αυτό αρκεί
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

DaKnOb

Παράθεση από: petrosp13 στις 25 Ιαν 2013, 06:39:00 ΜΜ
Το βιβλίο αναφέρει οτι δεν είναι καλή τακτική να αλλάζει με εντολή εντός επανάληψης ο μετρητήσ της για και αυτό αρκεί

Το θέμα είναι πως δουλεύει. Μπορεί να μην είναι καλή πρακτική, και 100% αν ήμουν καθηγητής δεν θα το ανέφερα καν στους μαθητές, αλλά δεν παύει να λειτουργεί. :P

evry

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

Παράθεση από: DaKnOb στις 25 Ιαν 2013, 09:29:25 ΜΜ
Το θέμα είναι πως δουλεύει. Μπορεί να μην είναι καλή πρακτική, και 100% αν ήμουν καθηγητής δεν θα το ανέφερα καν στους μαθητές, αλλά δεν παύει να λειτουργεί. :P

Πάντως το θέμα πραγματικά δεν είναι αν δουλεύει ή όχι. Είναι απλά θέμα ορισμού. Οποιοσδήποτε μπορεί να φτιάξει μια γλώσσα και να μην δουλεύει κάτι τέτοιο. Δεν έχει καμία σημασία αλγοριθμικά. Ο αλγόριθμος δεν αλλάζει. Είναι καθαρά τυπολατρικό θέμα.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

DaKnOb

Παράθεση από: evry στις 25 Ιαν 2013, 10:16:27 ΜΜ
όχι , το θέμα δεν είναι αν δουλεύει, το θέμα είναι αν ρισκάρεις να το γράψεις στις εξετάσεις και να σου κόψουν , ή θα "συμβιβαστείς" ώστε να πετύχεις τη μεγαλύτερη δυνατή βαθμολογία.

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

P.Tsiotakis

και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;

DaKnOb

Παράθεση από: Παναγιώτης Τσιωτάκης στις 25 Ιαν 2013, 11:32:57 ΜΜ
και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;
Δεν το μάθαμε πουθενά. Προφανώς αν υποστηρίζεται το GOTO, μπορούμε να κάνουμε έλεγχο δεδομένων και δομές επανάληψης με Αν. Ούτε καν δομή επανάληψης. Και να κάνουμε έλεγχο με Όσο. ;)

P.Tsiotakis

κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή

ψάξε εκεί που λέει "μαύρο πρόβατο". Το μαύρο (ως σημειολογία) σημαίνει οτι δεν πρέπει να το κάνουμε, όπως το κάπνισμα (επιτρέπεται αλλά είναι επιβλαβές).

DaKnOb

Παράθεση από: Παναγιώτης Τσιωτάκης στις 26 Ιαν 2013, 03:01:46 ΜΜ
κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή

ψάξε εκεί που λέει "μαύρο πρόβατο". Το μαύρο (ως σημειολογία) σημαίνει οτι δεν πρέπει να το κάνουμε, όπως το κάπνισμα (επιτρέπεται αλλά είναι επιβλαβές).

Το οτι συμπεριλαμβάνεται σε αυτό το κομματι το ξέρω, δεν ήξερα πως μπορεί να χρησιμοποιηθεί στην ΓΛΩΣΣΑ και σε Αλγόριθμους.
Πάντως είναι πολύ πιο εύκολο να γίνονται τα διαγράμματα ροής με επαναλήψεις έτσι.. :P

Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος

Νίκος Αδαμόπουλος

Παράθεση από: DaKnOb στις 26 Ιαν 2013, 04:29:00 ΜΜ
Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος

Πάντως σχετικά με τη βαθμολόγηση της ΑΕΠΠ, αν ο κώδικας δεν διαβάζεται τότε ο βαθμολογητής πώς θα το αξιολογήσει;

noname

Ενδιαφέροντα όλα αυτά αλλά εξηγούνται πολύ απλά από τη στιγμή που το:
Για ι από 1 μέχρι Ν
Τέλος_επανάληψης

Αντιστοιχεί στο:
ι <- 1
Όσο ι<=Ν επανάλαβε
  ι <- ι + 1
Τέλος_επανάληψης


Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
S <- (S + X*E(0))/ΣΥΝ(0)

Αν και είναι σωστό δεν νομίζω ότι βοηθάει ιδιαίτερα στην εικόνα του γραπτού σου.


DaKnOb

Παράθεση από: noname στις 27 Ιαν 2013, 03:21:13 ΜΜ
Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
S <- (S + X*E(0))/ΣΥΝ(0)

Αν και είναι σωστό δεν νομίζω ότι βοηθάει ιδιαίτερα στην εικόνα του γραπτού σου.

Κι εγώ τέτοια γράφω. Έχω μάθει και χρησιμοποιώ όσο πιο λίγες μεταβλητές γίνεται..

nikolasmer

Τώρα κόλλησα.
κ ← 4
Για i από 1 μέχρι κ με_βήμα 1
  κ ← κ + 1
  Εμφάνισε "*"
Τέλος_επανάληψης
Εμφάνισε κ


Μμμμ... η τελική τιμή παραμένει αναλλοίωτη από την αρχή μέχρι το τέλος. Και δεν αλλοιώνω το βήμα της i μέσα στη Για. Στο τέλος εμφανίζεται 8.
Δηλαδή εδώ λέμε πως η κ στην τελική τιμή της Για είναι By Value ή δεν ισχύει κάτι τέτοιο;
Μερεντίτης Νικόλαος
Πληροφορικός

petrosp13

Εκτός από την μεταβλητή, απαγορεύεται να μεταβάλλεις εντός επανάληψης και την τελική τιμή και το βήμα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

nikolasmer

Μερεντίτης Νικόλαος
Πληροφορικός