Το μαυρο προββατο...

Ξεκίνησε από alexis_zoure, 16 Νοε 2007, 02:38:11 ΠΜ

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

alexis_zoure

Γιατι υπαρχει τετοια αντιδραση για το GOTO? Αφου πολλες φορες μπορει να χρησημευσει!!!Και γιατι αν καποιος μαθητης το χρησημοποιησει του κοβουν ολη την ασκηση? ???
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

gpapargi

Ρίξε μια ματιά στη σελίδα 134 του σχολικού βιβλίου (κίτρινο πλαίσιο) και διάβασε την παράγραφο 6.4.3
Επίσης δες και μια κουβέντα μεταξύ του μαθητή Dem (σημερινό φοιτητή του τμήματος πληροφορικής του Καποδιστριακού) του Άλκη και εμένα.

https://alkisg.mysch.gr/steki/index.php?topic=964.msg5668#msg5668

Βέβαια οι ενστάσεις έχουν να κάνουν κυρίως με τη χρήση της goto σε αρχικό επίπεδο εκμάθησης σαν αυτό που είστε εσείς. ΕΠίσης λάθος είναι η ανεξέλεγκτη χρήση της ακόμα και σε προχωρημένο επίπεδο. Υπάρχουν περιπτώσεις όπως η έξοδος από εμφωλευμένους βρόχους που η περιορισμένη χρήση της είναι βολική. Βέβαια οι γλώσσες έχουν εντολές για έξοδο από βρόχους αλλά ας μην πιάσουμε αυτή την κουβέντα τώρα. θα έλεγα πάντως σε πρώτη φάση (για φέτος δηλαδή) ξεχάστε τη goto στην κατασκευή αλγορίθμων και κοιτάξτε να μάθετε να σκέφτεστε δομημένα. 

alexis_zoure

Ναι το εχω διαβασει το κομματι στο σχολικο βιβλιο...Απλα εχω παραξενευτει γιατι να μην επιτρεπεται η GOTO μονο για απλα πραγματακια...Συμφωνω απολυτα μαζι σας στο θεμα της ανεξελεγκτης χρησης της GOTO...
Αλλα καποιες φορες ειναι βολικη...

Οσο για τις εξετασεις,αλλα και γενικοτερα, δεν ειχα σκοπο να χρησημοποιησω GOTO για δυο λογους:
1) Θα ηταν λαθος
2) Δεν την εχω διδαχθει καν...

Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

Τhanos

Προσωπικα εμενα δεν μου αρεσει η GOTO!
Το γιατι;;;Δεν ξερω...δεν μου εκατσε καλα απο την ωρα που την διαβασα!
Αλλα με παραξενευει που ενω "απαγορευετε" η χρηση της αναφερεται μεσα στο βιβλιο ενω θα μπορουσε να παραλειφθει και να διδασκεται στο Πανεπιστιμιο!
Ειναι σαν να λενε παρτε την ,μαθετε την αλλα μην την χρησιμοποιησεται!Ενω ξερουν οτι μπορει ορισμενοι πανω στην ενταση της στιγμης και μην εχοντας αλλο "οπλο" να λυσουν την ασκηση να κανουν χρηση της εντολης και να χασουν ολη την ασκηση! :o

Υ.Γ.Αλεξ,σβησε κανενα "β" απο το "προββατο"! :angel:
Σαραντόπουλος Θανάσης
Μαθητής Γ΄Λυκείου

alexis_zoure

Θα μας την διδαξουν κανονικα? Ποια η λογικη αν δεν την χρησιμοποιουμε?

Υ.Γ.: Θανο δεν πειραζει...το ιδιο διαβαζεται... ;D >:D
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

gpapargi

Παράθεση από: alexis_zoure στις 16 Νοε 2007, 02:07:04 ΜΜ
Ναι το εχω διαβασει το κομματι στο σχολικο βιβλιο...Απλα εχω παραξενευτει γιατι να μην επιτρεπεται η GOTO μονο για απλα πραγματακια...Συμφωνω απολυτα μαζι σας στο θεμα της ανεξελεγκτης χρησης της GOTO...
Αλλα καποιες φορες ειναι βολικη...

Η γνώμη μου είναι πως όταν φαίνεται σε κάποιον βολική η χρήση της goto τότε μάλλον έχει ψιλοχαθεί μέσα στο λαβύρινθο και αναζητάει την έξοδο κινδύνου.  Εννοώ δηλαδή ότι όταν κάποιος λύνει άσκηση και δει ότι χρειάζεται την goto τότε μάλλον δεν έχει εντοπίσει σωστά τις περιπτώσεις του προβλήματος ή τις συνθήκες εξόδου από το βρόχο ή τη σχετική σειρά των εντολών ή κάτι τέτοιο. Και τα όρια της "περιορισμένης χρήσης" από την "ανεξέλεγκτη χρήση" δεν είναι και τόσο σαφή. Πιο πολύ απέχει η καθόλου χρήση από τη χρήση μια φορά, από όσο απέχει η χρήση μια φορά από τη χρήση περισσότερες φορές. Κάτι σαν το τσιγάρο... το ένα τσιγάρο είναι πιο κοντά στο ένα πακέτο από ότι στο καθόλου κάπνισμα. Μπορεί να γίνει κακό συνήθειο και καλό είναι να μην το αρχίσει κανείς καθόλου.  ;)

alexis_zoure

Προσωπικα την θεωρω βολικη αν εχεις και γω δεν ξερω ποσες εντολες και αν χρειαστει σε καποια απο αυτες αν δοθει κατι συγκεκριμενο να τερματιζει με την μια...Χαρακτηριστικο παραδειγμα:
"Διαβασε χ
Αν χ>ο GOTO L1
  <Εντολες...>
Τελος_αν
....
....
....
....
L1:Τελος_προγραμματος..."(Ετσι νομιζω οτι γραφεται...)

Απο εκει και περα ολα τα προγραμματα μου τα λυνω με τις 3 Δομες και δεν ασχολουμαι καθολου με αυτο...
Αλλα οσο να ναι σε βαζει σε περιεργεια να μαθεις γι αυτην...(...και οχι να λυνεις ετσι...)
Αλεξανδρος Ζουρελιδης
Μαθητης Γ Λυκειου

gpapargi

Για την περίπτωση που αναφέρεις υπάρχει στη C η εντολή (συνάρτηση) exit. Αν την καλέσεις προκαλείται τερματισμός του προγράμματος.

Η περίπτωση που αναφέρεις υπάρχει και μου έχει συμβεί πολλές φορές. Πχ γράφοντας κώδικα για εφαρμογές κινητής τηλεφωνίας έπρεπε όταν κάποιος συνδρομητής στείλει γραπτό μήνυμα να συμβαίνει κάτι συγκεκριμένο που περιλάμβανε έλεγχο του περιεχομένου του μηνύματος και ανάλογα με αυτό τράβηγμα πληροφορίας από κάποια βάση δεδομένων. Λόγω του ότι υπήρχε περίπτωση να πέσουν πολλά ταυτόχρονα μηνύματα έπρεπε το πρόγραμμα να τρέξει όσο το δυνατό γρηγορότερα και να τερματίσει όσο το δυνατό πιο γρήγορα για να μη δεσμεύει πόρους. Έτσι, είχα βάλει πάνω πάνω τις πιο πιθανές περιπτώσεις (έτσι ώστε κατά μέσο όρο να εκτελεστούν πρώτες) και τερμάτιζα με exit.  Υπάρχει δηλαδή η περίπτωση που αναφέρεις. Αλλά πάλι η goto είναι αχρείαστη. Φτιάχτηκε η exit για αυτό το σκοπό.

Οι δημιουργοί της C (Dennis Ritchie, και Brian Kernighan) αναφέρουν σχετικά με τη goto:

"Η C διαθέτει την απεριόριστα κακοποιημένη goto και ετικέτες για τις διακλαδώσεις της. Τυπικά, η goto δεν χρειάζεται ποτέ και όντως είναι σχεδόν πάντα εύκολο να γραφτεί ο κώδικας χωρίς αυτήν. Δεν έχουμε χρησιμοποιήσει την goto πουθενά στο βιβλίο.
Πάντως υπάρχουν λίγες περιπτώσεις όπου η goto μπορεί να έχει θέση. Η πιο συνηθισμένη περίπτωση είναι η έξοδος από την επεξεργασία σε κάποια πολύ βαθειά φωλιασμένη δομή, όπως η ταυτόχρονη έξοδος από δύο ή περισσότερους βρόχους.
[...]
Με λίγες εξαιρέσεις όπως αυτές που είδαμε εδώ, ο κώδικας που βασίζεται σε εντολές goto γενικά είναι πιο δύσκολο να κατανοηθεί και να συντηρηθεί από ότι ο κώδικας χωρίς goto. Παρόλο που δεν είμαστε δογματικοί σε αυτό το θέμα, φαίνεται πως οι εντολές goto θα πρέπει να χρησιμοποιούνται σπάνια, αν όχι καθόλου." 

Βέβαια θα πρέπει να προσθέσουμε ότι ο Dennis Ritchie δεν είναι τυχαίος προγραμματιστής. Για αυτούς που κάνουν τα πρώτα τους βήματα η χρήση της goto είναι επικίνδυνη και (προσωπικά πιστεύω) αντιπαιδαγωγική καθώς δίνει μια εύκολη και άρα δελεαστική "διέξοδο" την ώρα που ο μαθητής βρίσκεται στη φάση εξοικείωσης με τις εντολές επιλογής και επανάληψης.