Καλησπέρα σας.
Μετά από μια συζήτηση με τον καθηγητή μου στο σχολείο, προχώρησα στην υλοποίηση μερικών αλγορίθμων με χρήση "Για" που δεν ακούγονται τόσο ορθοί, παρά την λογικότητα τους.
Έλεγχος Δεδομένων χωρίς δομή επανάληψης μέσα σε Για
(http://daknob.info/aepp/verify.png)
Άγνωστος Αριθμός Επαναλήψεων με Για
(http://daknob.info/aepp/unknown.png)
Ατέρμων Βρόγχος με Για
(http://daknob.info/aepp/loop.gif)
***
Γενικά, μπορούν να γίνουν πολλα πράγματα με την Για που πολλοί τα θεωρούν αδύνατα, αλλά δεν γνωρίζω αν είναι σωστά από τεχνικής άποψης. Δεδομένου του ότι πάρα πολλοί καθηγητές δεν ξέρουν το μάθημα αρκετά καλά, ίσως τα πάρουν για λάθος σαν διορθωτές (καλή ώρα ο δικός μου) δεν νομίζω να τα κάνω στις Πανελλαδικές, αλλά δεν παύουν να είναι σωστά.
Ποιά είναι η γνώμη σας;
Το βιβλίο αναφέρει οτι δεν είναι καλή τακτική να αλλάζει με εντολή εντός επανάληψης ο μετρητήσ της για και αυτό αρκεί
Παράθεση από: petrosp13 στις 25 Ιαν 2013, 06:39:00 ΜΜ
Το βιβλίο αναφέρει οτι δεν είναι καλή τακτική να αλλάζει με εντολή εντός επανάληψης ο μετρητήσ της για και αυτό αρκεί
Το θέμα είναι πως δουλεύει. Μπορεί να μην είναι καλή πρακτική, και 100% αν ήμουν καθηγητής δεν θα το ανέφερα καν στους μαθητές, αλλά δεν παύει να λειτουργεί. :P
όχι , το θέμα δεν είναι αν δουλεύει, το θέμα είναι αν ρισκάρεις να το γράψεις στις εξετάσεις και να σου κόψουν , ή θα "συμβιβαστείς" ώστε να πετύχεις τη μεγαλύτερη δυνατή βαθμολογία.
Παράθεση από: DaKnOb στις 25 Ιαν 2013, 09:29:25 ΜΜ
Το θέμα είναι πως δουλεύει. Μπορεί να μην είναι καλή πρακτική, και 100% αν ήμουν καθηγητής δεν θα το ανέφερα καν στους μαθητές, αλλά δεν παύει να λειτουργεί. :P
Πάντως το θέμα πραγματικά δεν είναι αν δουλεύει ή όχι. Είναι απλά θέμα ορισμού. Οποιοσδήποτε μπορεί να φτιάξει μια γλώσσα και να μην δουλεύει κάτι τέτοιο. Δεν έχει καμία σημασία αλγοριθμικά. Ο αλγόριθμος δεν αλλάζει. Είναι καθαρά τυπολατρικό θέμα.
Παράθεση από: evry στις 25 Ιαν 2013, 10:16:27 ΜΜ
όχι , το θέμα δεν είναι αν δουλεύει, το θέμα είναι αν ρισκάρεις να το γράψεις στις εξετάσεις και να σου κόψουν , ή θα "συμβιβαστείς" ώστε να πετύχεις τη μεγαλύτερη δυνατή βαθμολογία.
Πάντως το θέμα πραγματικά δεν είναι αν δουλεύει ή όχι. Είναι απλά θέμα ορισμού. Οποιοσδήποτε μπορεί να φτιάξει μια γλώσσα και να μην δουλεύει κάτι τέτοιο. Δεν έχει καμία σημασία αλγοριθμικά. Ο αλγόριθμος δεν αλλάζει. Είναι καθαρά τυπολατρικό θέμα.
Δυστυχώς, επειδή όλοι οι διορθωτές δεν ξέρουν και το ίδιο καλά, εκεί πέρα θα το κάνω με τον παραδοσιακό τρόπο..
και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;
Παράθεση από: Παναγιώτης Τσιωτάκης στις 25 Ιαν 2013, 11:32:57 ΜΜ
και το goto δουλεύει
γιατί αλλάζεις το μετρητή και δε βάζεις ένα Πήγαινε;;;
Δεν το μάθαμε πουθενά. Προφανώς αν υποστηρίζεται το GOTO, μπορούμε να κάνουμε έλεγχο δεδομένων και δομές επανάληψης με Αν. Ούτε καν δομή επανάληψης. Και να κάνουμε έλεγχο με Όσο. ;)
κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή
ψάξε εκεί που λέει "μαύρο πρόβατο". Το μαύρο (ως σημειολογία) σημαίνει οτι δεν πρέπει να το κάνουμε, όπως το κάπνισμα (επιτρέπεται αλλά είναι επιβλαβές).
Παράθεση από: Παναγιώτης Τσιωτάκης στις 26 Ιαν 2013, 03:01:46 ΜΜ
κεφάλαιο 6 σε βιβλίο και τετράδιο μαθητή
ψάξε εκεί που λέει "μαύρο πρόβατο". Το μαύρο (ως σημειολογία) σημαίνει οτι δεν πρέπει να το κάνουμε, όπως το κάπνισμα (επιτρέπεται αλλά είναι επιβλαβές).
Το οτι συμπεριλαμβάνεται σε αυτό το κομματι το ξέρω, δεν ήξερα πως μπορεί να χρησιμοποιηθεί στην ΓΛΩΣΣΑ και σε Αλγόριθμους.
Πάντως είναι πολύ πιο εύκολο να γίνονται τα διαγράμματα ροής με επαναλήψεις έτσι.. :P
Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος
Παράθεση από: DaKnOb στις 26 Ιαν 2013, 04:29:00 ΜΜ
Ή σαν τύπους σαν κι εμένα που μου αρέσει μερικές φορές να κάνω obfuscate τον κώδικα και να γίνει αδιάβαστος
Πάντως σχετικά με τη βαθμολόγηση της ΑΕΠΠ, αν ο κώδικας δεν διαβάζεται τότε ο βαθμολογητής πώς θα το αξιολογήσει;
Ενδιαφέροντα όλα αυτά αλλά εξηγούνται πολύ απλά από τη στιγμή που το:
Για ι από 1 μέχρι Ν
Τέλος_επανάληψης
Αντιστοιχεί στο:
ι <- 1
Όσο ι<=Ν επανάλαβε
ι <- ι + 1
Τέλος_επανάληψης
Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
S <- (S + X*E(0))/ΣΥΝ(0)
Αν και είναι σωστό δεν νομίζω ότι βοηθάει ιδιαίτερα στην εικόνα του γραπτού σου.
Παράθεση από: noname στις 27 Ιαν 2013, 03:21:13 ΜΜ
Μου θύμισες έναν μαθητή που έγραφε στους αλγόριθμους κάτι τέτοια:
Π.χ. σε άθροισμα
S <- (S + X*E(0))/ΣΥΝ(0)
Αν και είναι σωστό δεν νομίζω ότι βοηθάει ιδιαίτερα στην εικόνα του γραπτού σου.
Κι εγώ τέτοια γράφω. Έχω μάθει και χρησιμοποιώ όσο πιο λίγες μεταβλητές γίνεται..
Τώρα κόλλησα.
κ ← 4
Για i από 1 μέχρι κ με_βήμα 1
κ ← κ + 1
Εμφάνισε "*"
Τέλος_επανάληψης
Εμφάνισε κ
Μμμμ... η τελική τιμή παραμένει αναλλοίωτη από την αρχή μέχρι το τέλος. Και δεν αλλοιώνω το βήμα της i μέσα στη Για. Στο τέλος εμφανίζεται 8.
Δηλαδή εδώ λέμε πως η κ στην τελική τιμή της Για είναι By Value ή δεν ισχύει κάτι τέτοιο;
Εκτός από την μεταβλητή, απαγορεύεται να μεταβάλλεις εντός επανάληψης και την τελική τιμή και το βήμα
ΑΑΑ!!!
Ευχαριστώ!
κ <-- 4
Για i από 1 μέχρι κ με_βήμα 2
κ <-- κ – 2
Εμφάνισε 'ΟΕΦΕ'
Τέλος_Επανάληψης
Για αυτό το θέμα ΟΕΦΕ 2008 είχαμε σχολιάσει τίποτα παλιότερα;
Πιστεύω ότι το να μεταβάλεις το range του Για δεν θεωρείται στα πλαίσια του μαθήματος δομήμενος προγραμματισμός. (Επίσης κάτι τέτοιο δεν είναι και maintainable). Γενικά άστοχο θέμα.
Παράθεση από: itt στις 02 Νοε 2013, 11:06:51 ΠΜ
Πιστεύω ότι το να μεταβάλεις το range του Για δεν θεωρείται στα πλαίσια του μαθήματος δομήμενος προγραμματισμός. (Επίσης κάτι τέτοιο δεν είναι και maintainable). Γενικά άστοχο θέμα.
Εγώ θα έλεγα το να αλλάξεις το range της Για μέσα στη Για δεν υπάγεται στην φιλοσοφία του μαθήματος (άσχετα αν μπορεί να υλοποιηθεί σε κανονικές γλώσσες προγραμματισμού..) Το να έχει όμως μεταβλητή αρχή και μεταβλητό τέλος (το οποίο θα καθορίζεται πριν την Για, του στυλ:
Διαβασε α,β
Για ι απο α μέχρι β
...
)
προφανώς και μπορεί να παίξει..(και εχει παίξει με την περιβόητη διαμάχη -> Θέμα Γ, 2010 )
Παράθεση από: janag79 στις 02 Νοε 2013, 11:48:39 ΠΜ
Εγώ θα έλεγα το να αλλάξεις το range της Για μέσα στη Για δεν υπάγεται στην φιλοσοφία του μαθήματος (άσχετα αν μπορεί να υλοποιηθεί σε κανονικές γλώσσες προγραμματισμού..) Το να έχει όμως μεταβλητή αρχή και μεταβλητό τέλος (το οποίο θα καθορίζεται πριν την Για, του στυλ:
Ήταν ασαφές έτσι όπως το έγραψα, αυτό που εννοούσα είναι ότι
δεν θα πρέπει να μεταβάλεις το range από το εσωτερικό της Για.