Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Δομή επανάληψης => Γ΄ Λυκείου => Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ => Μήνυμα ξεκίνησε από: DaKnOb στις 25 Ιαν 2013, 03:45:51 ΜΜ

Τίτλος: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: DaKnOb στις 25 Ιαν 2013, 03:45:51 ΜΜ
Καλησπέρα σας.
Μετά από μια συζήτηση με τον καθηγητή μου στο σχολείο, προχώρησα στην υλοποίηση μερικών αλγορίθμων με χρήση "Για" που δεν ακούγονται τόσο ορθοί, παρά την λογικότητα τους.

Έλεγχος Δεδομένων χωρίς δομή επανάληψης μέσα σε Για
(http://daknob.info/aepp/verify.png)

Άγνωστος Αριθμός Επαναλήψεων με Για
(http://daknob.info/aepp/unknown.png)

Ατέρμων Βρόγχος με Για
(http://daknob.info/aepp/loop.gif)

***

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

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

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

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

Πάντως το θέμα πραγματικά δεν είναι αν δουλεύει ή όχι. Είναι απλά θέμα ορισμού. Οποιοσδήποτε μπορεί να φτιάξει μια γλώσσα και να μην δουλεύει κάτι τέτοιο. Δεν έχει καμία σημασία αλγοριθμικά. Ο αλγόριθμος δεν αλλάζει. Είναι καθαρά τυπολατρικό θέμα.
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: DaKnOb στις 25 Ιαν 2013, 10:28:42 ΜΜ
Παράθεση από: evry στις 25 Ιαν 2013, 10:16:27 ΜΜ
όχι , το θέμα δεν είναι αν δουλεύει, το θέμα είναι αν ρισκάρεις να το γράψεις στις εξετάσεις και να σου κόψουν , ή θα "συμβιβαστείς" ώστε να πετύχεις τη μεγαλύτερη δυνατή βαθμολογία.

Πάντως το θέμα πραγματικά δεν είναι αν δουλεύει ή όχι. Είναι απλά θέμα ορισμού. Οποιοσδήποτε μπορεί να φτιάξει μια γλώσσα και να μην δουλεύει κάτι τέτοιο. Δεν έχει καμία σημασία αλγοριθμικά. Ο αλγόριθμος δεν αλλάζει. Είναι καθαρά τυπολατρικό θέμα.
Δυστυχώς, επειδή όλοι οι διορθωτές δεν ξέρουν και το ίδιο καλά, εκεί πέρα θα το κάνω με τον παραδοσιακό τρόπο..
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: P.Tsiotakis στις 25 Ιαν 2013, 11:32:57 ΜΜ
και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: DaKnOb στις 25 Ιαν 2013, 11:47:24 ΜΜ
Παράθεση από: Παναγιώτης Τσιωτάκης στις 25 Ιαν 2013, 11:32:57 ΜΜ
και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;
Δεν το μάθαμε πουθενά. Προφανώς αν υποστηρίζεται το GOTO, μπορούμε να κάνουμε έλεγχο δεδομένων και δομές επανάληψης με Αν. Ούτε καν δομή επανάληψης. Και να κάνουμε έλεγχο με Όσο. ;)
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: P.Tsiotakis στις 26 Ιαν 2013, 03:01:46 ΜΜ
κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή

ψάξε εκεί που λέει "μαύρο πρόβατο". Το μαύρο (ως σημειολογία) σημαίνει οτι δεν πρέπει να το κάνουμε, όπως το κάπνισμα (επιτρέπεται αλλά είναι επιβλαβές).
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: DaKnOb στις 26 Ιαν 2013, 04:29:00 ΜΜ
Παράθεση από: Παναγιώτης Τσιωτάκης στις 26 Ιαν 2013, 03:01:46 ΜΜ
κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή

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

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

Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: Νίκος Αδαμόπουλος στις 27 Ιαν 2013, 02:03:43 ΜΜ
Παράθεση από: DaKnOb στις 26 Ιαν 2013, 04:29:00 ΜΜ
Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος

Πάντως σχετικά με τη βαθμολόγηση της ΑΕΠΠ, αν ο κώδικας δεν διαβάζεται τότε ο βαθμολογητής πώς θα το αξιολογήσει;
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: noname στις 27 Ιαν 2013, 03:21:13 ΜΜ
Ενδιαφέροντα όλα αυτά αλλά εξηγούνται πολύ απλά από τη στιγμή που το:
Κώδικας [Επιλογή]
Για ι από 1 μέχρι Ν
Τέλος_επανάληψης

Αντιστοιχεί στο:
Κώδικας [Επιλογή]

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


Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
Κώδικας [Επιλογή]

S <- (S + X*E(0))/ΣΥΝ(0)

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

Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: DaKnOb στις 27 Ιαν 2013, 06:46:05 ΜΜ
Παράθεση από: noname στις 27 Ιαν 2013, 03:21:13 ΜΜ
Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
Κώδικας [Επιλογή]

S <- (S + X*E(0))/ΣΥΝ(0)

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

Κι εγώ τέτοια γράφω. Έχω μάθει και χρησιμοποιώ όσο πιο λίγες μεταβλητές γίνεται..
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: nikolasmer στις 02 Νοε 2013, 10:19:22 ΠΜ
Τώρα κόλλησα.
Κώδικας [Επιλογή]

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


Μμμμ... η τελική τιμή παραμένει αναλλοίωτη από την αρχή μέχρι το τέλος. Και δεν αλλοιώνω το βήμα της i μέσα στη Για. Στο τέλος εμφανίζεται 8.
Δηλαδή εδώ λέμε πως η κ στην τελική τιμή της Για είναι By Value ή δεν ισχύει κάτι τέτοιο;
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: petrosp13 στις 02 Νοε 2013, 10:42:38 ΠΜ
Εκτός από την μεταβλητή, απαγορεύεται να μεταβάλλεις εντός επανάληψης και την τελική τιμή και το βήμα
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: nikolasmer στις 02 Νοε 2013, 10:43:46 ΠΜ
ΑΑΑ!!!
Ευχαριστώ!
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: nikolasmer στις 02 Νοε 2013, 10:47:01 ΠΜ
Κώδικας [Επιλογή]

κ <-- 4
Για i από 1 μέχρι κ με_βήμα 2
  κ <-- κ – 2
  Εμφάνισε 'ΟΕΦΕ'
Τέλος_Επανάληψης

Για αυτό το θέμα ΟΕΦΕ 2008 είχαμε σχολιάσει τίποτα παλιότερα;
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: itt στις 02 Νοε 2013, 11:06:51 ΠΜ
Πιστεύω ότι το να μεταβάλεις το range του Για δεν θεωρείται στα πλαίσια του μαθήματος δομήμενος προγραμματισμός. (Επίσης κάτι τέτοιο  δεν είναι και maintainable). Γενικά άστοχο θέμα.
Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: Γιάννης Αναγνωστάκης στις 02 Νοε 2013, 11:48:39 ΠΜ
Παράθεση από: itt στις 02 Νοε 2013, 11:06:51 ΠΜ
Πιστεύω ότι το να μεταβάλεις το range του Για δεν θεωρείται στα πλαίσια του μαθήματος δομήμενος προγραμματισμός. (Επίσης κάτι τέτοιο  δεν είναι και maintainable). Γενικά άστοχο θέμα.

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

Διαβασε α,β
Για ι απο α μέχρι β
...
)

προφανώς και μπορεί να παίξει..(και εχει παίξει με την περιβόητη διαμάχη -> Θέμα Γ, 2010 )


Τίτλος: Απ: "Παράξενοι" Αλγόριθμοι με "Για"
Αποστολή από: itt στις 02 Νοε 2013, 12:07:06 ΜΜ
Παράθεση από: janag79 στις 02 Νοε 2013, 11:48:39 ΠΜ
Εγώ θα έλεγα το να αλλάξεις το range της Για μέσα στη Για δεν υπάγεται στην φιλοσοφία του μαθήματος (άσχετα αν μπορεί να υλοποιηθεί σε κανονικές γλώσσες προγραμματισμού..) Το να έχει όμως μεταβλητή αρχή και μεταβλητό τέλος (το οποίο θα καθορίζεται πριν την Για, του στυλ:

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