M2000 Δημοσ. 1 Δεκεμβρίου 2015 Μέλος Δημοσ. 1 Δεκεμβρίου 2015 Κανένα πρόβλημα δεν έχει απλά περιέγραψέ μου με δυο λόγια τα βήματα που θα ακολουθήσω για να φτιάξω ένα τρίγωνο στη Python. Να βάλω και κάτι ωραίο (χρησιμοποιεί και πολικές συντεταγμένες, και απόλυτες θέσεις) Φόρμα 60, 30 ' σε χαρακτήρεςΤμήμα Τρίγωνο { Διάβασε α, β , γ θέση α, β Χάραξε Γωνία γ, 5000 Χάραξε Έως θέση.χ, β Χάραξε Έως α, β}Για ι =πι/8 έως πι-πι/8 ανά πι/8 { Τρίγωνο 6000,6000,ι}
Moderators Kercyn Δημοσ. 1 Δεκεμβρίου 2015 Moderators Δημοσ. 1 Δεκεμβρίου 2015 Έχεις πάρει feedback από μαθητές; Γιατί ωραία και καλά όλα αυτά που λέμε και λες, αλλά δεν είμαστε εμείς αυτοί που θα τη μάθουμε. Έχεις δοκιμάσει να διδάξεις τη γλώσσα και οι περισσότερες αντιδράσεις που έχεις πάρει είναι "Ναι, δε δυσκολεύομαι να μάθω και να κάνω πράγματα με αυτή τη γλώσσα"; Επίσης, έχεις δοκιμάσει να διδάξεις python και σου έχουν πει ότι "δεν καταλαβαίνουμε τι γίνεται/δυσκολευόμαστε"; 2
gon1332 Δημοσ. 1 Δεκεμβρίου 2015 Δημοσ. 1 Δεκεμβρίου 2015 import turtle wn = turtle.Screen() # Set up the window and its attributes wn.bgcolor("lightgreen") wn.title("Tess") tess = turtle.Turtle() # Create tess and set some attributes tess.color("hotpink") tess.pensize(5) tess.forward(80) # Make tess draw equilateral triangle tess.left(120) tess.forward(80) tess.left(120) tess.forward(80) tess.left(120) # Complete the triangle wn.mainloop() Logo programming. Έτσι μαθαίνουν τα παιδάκια. Υπάρχουν έρευνες για αυτό. Ο τυπάς έκανε ολόκληρη έρευνα για να καταλήξει να φτιάξει αυτή την γλώσσα. Η πρώην μου σπούδασε νηπιαγωγός. Έχω μάθει άπειρα πράγματα για το πώς μαθαίνουν τα παιδιά. Και πίστεψέ με δεν είναι τόσο απλό. Τα παιδάκια δε θα μάθουν πολικές. Ούτε καν καρτεσιανές. Θα βαρεθούν. Θέλουν να δουν ένα ρομποτάκι (χελώνα) να κινείται και να χαράζει μία διαδρομή. Ορίστε κάτι που χρησιμοποιείται αρκετά σε νηπιαγωγεία. 5
M2000 Δημοσ. 1 Δεκεμβρίου 2015 Μέλος Δημοσ. 1 Δεκεμβρίου 2015 Πράγματι έχω μαθητές που μαζί με άλλες ασχολίες μαθαίνουν κάτι από αυτή τη γλώσσα! Δεν μπορούν να ξέρουν τι υπάρχει! Οπότε δεν μπορούμε να βασιστούμε στην αποδοχή τους. Μπορείς απλά να περάσεις έννοιες στα παιδιά που θα τις κάνουν αργότερα και αυτό ίσως να μην φαίνεται καλό αλλά το εργαλείο είναι εποπτικό, δηλαδή άμεσα έχει αντίληψη το παιδί του τι κάνει (όχι το πώς γίνεται εσωτερικά). Το χελωνάκι είναι μια καλή φάση. Και στη Μ2000 μπορεί κανείς να φτιάχνει "παίκτες" (sprites) και να τα μετακινεί όπου θέλει, άρα μπορεί να ζωγραφίζει από κάτω! Η ιδέα να μάθει κανείς προγραμματισμό με τη Μ2000 δεν είναι στο να σταθεί σε ομάδες εντολών π.χ. "αυτές είναι οι επαναλήψεις", ή "σήμερα θα μάθουμε την Επανέλαβε Μέχρι" αλλά να συμπεριλάβει εντολές για να κάνει κάτι που έχει νόημα. Να φανεί ότι τις εντολές τις χρησιμοποιούμε για να πετύχουμε κάτι, και ότι δεν είναι η κάθε εντολή σκοπός της άσκησης. Με αυτό τον τρόπο εστιάζουμε στο αφηρημένο και δίνουμε μια έκφανση, μια προσαρμογή με την Μ2000. Αύριο θα το κάνει αυτό με μια σοβαρότερη γλώσσα. Διότι η Μ2000 είναι απλά ένας διερμηνευτής, δεν είναι ό,τι γρήγορο αλλά ότι κάνει το κάνει "τίμια". Δηλαδή στο θέμα που έδειξε ο gon1332 χρησιμοποιεί ένα Tutrle.screen αλλά τα γραφικά αυτά δεν πρόκειται ποτέ να βγουν στον εκτυπωτή ή δεν πρόκειται ποτέ να γράψουμε κείμενο σε στήλες εκεί που θα έχουμε και τα γραφικά μας, διότι το Tutrle.screen είναι ένα αντικείμενο που δουλεύει στο δικό του περιβάλλον. Αυτό δουλεύει μεν, αλλά δεν είναι τίμια απάντηση στο ότι το κάνει η Python. Το κάνει το αντικείμενο που συνεργάζεται με την Python. Ο κατασκευαστής του όμως δεν δούλεψε σε κάποια επιφάνεια που δίνει η Python. H Python δίνει μόνο την κονσόλα! Θέλουμε λοιπόν να κατανοήσει ο μαθητής τον υπολογιστή και τις δυνατότητές του, όχι τη γλώσσα, ούτε τις εντολές της, ούτε να μπλέξει με συμβατότητες και βιβλιοθήκες. Για να το κάνει αυτό πρέπει να μάθει να τον χειρίζεται και ένας τρόπος λέγεται αυτοματισμός. Πώς λοιπόν θα αυτοματοποιήσει κανείς το σχεδιασμό γραμμών; Θα φτιάξει πρόγραμμα που "αυτόματα" θα σχεδιάζει! Πώς θα γίνει αυτό; Θα δει ένα δυο παραδείγματα, θα τα πειράξει, θα δοκιμάσει την δική του εκδοχή! Θα χρησιμοποιήσει τη φαντασία του, θα κάνει λάθος! Αυτός είναι ο τρόπος να μάθει! Από κει και πέρα μπορεί κανείς να διασκεδάζει βλέποντας το παιχνίδι να ζωγραφίζει μια γραμμή! Προφανώς και δεν θα αφήσει ο καθηγητής να "παίξει" ο μαθητής με το ακριβό παιχνίδι. Θα κοιτάνε ένας δυο και οι άλλοι θα παίζουν φάπες, θα γελάνε θα πειράζονται δηλαδή! Εγώ λοιπόν προτείνω μια μέθοδο δοκιμής και σφάλματος σε ένα ελεγχόμενο περιβάλλον όπως η Μ2000. Χωρίς εκατό κουμπάκια, όπου με πληκτρολόγηση θα ακολουθεί οδηγίες θα φτιάχνει ένα αρχικό πρόγραμμα και θα το πειράζει! Κινούμε την νοημοσύνη του δηλαδή δεν το κάνουμε ρομπότ να παίρνουμε αυτό που του ζητάμε! Έτρεξα το πρόγραμμα στο Ubuntu Studio που έχω (τα Windows τα τρέχω σε VirtualBox στο Ubuntu). Εντάξει τρέχει αλλά δεν μου αρέσει αυτό το χάος! Μια κονσόλα εδώ, μια οθόνη εκεί...προφανώς τα νούμερα έχουν να κάνουν με Pixels!
gon1332 Δημοσ. 1 Δεκεμβρίου 2015 Δημοσ. 1 Δεκεμβρίου 2015 Με ένα python IDE έχεις ξεμπερδέψει. Ναι σε pixel είναι τα νούμερα. Πάντως συμφωνώ με Kercyn. Δείξε το λογισμικό σε κανένα καθηγητή παιδαγωγικού τμήματος. Συζητήστε κατά πόσο μπορεί να βοηθήσει, σύμφωνα με έρευνες που ήδη υπάρχουν. Και το κυριότερο δοκιμάστε το σε παιδιά. Δεν είναι ανάγκη να το κάνεις εσύ αυτό. Συνήθως οργανώνονται σεμινάρια σε φοιτήτριες όπου τους δείχνεις το τάδε εκπαιδευτικό εργαλείο (ή στα πλαίσια μαθήματος) και στη συνέχεια ψάχνουν για εφαρμογές του σε διάφορα σενάρια ώστε να τα κάνουν σε παιδιά στην πρακτική τους. Πάντως αν έκανα μία μαντεψιά, νομίζω οι περισσότερες νηπιαγωγίνες θα τα έβρισκαν σκούρα με μία γλώσσα προγραμματισμού. Πόσο μάλλον να τη διδάξουν. 1
M2000 Δημοσ. 1 Δεκεμβρίου 2015 Μέλος Δημοσ. 1 Δεκεμβρίου 2015 Δεν είναι για νήπια αλλά για παιδιά του δημοτικού κάτι γίνεται: Δες το παρακάτω παράδειγμα που κάνει χρήση κλάσης δεν είναι εύκολο για παιδιά δημοτικού; Κλάση ΜαγικόςΠίνακας { Πίνακας Α() ΜαγικόςΑριθμός Τμήμα ΜαγικόςΠίνακας { ν=μέγεθος.σωρού ν1=ακ(ρίζα(ν)) αν ν1>=1 τότε { Πίνακας .Α(ν1*ν1) ' τον κάνω μονοδιάστατο Για ι=0 έως ν1*ν1-1 : Διάβασε .Α(ι) : Επόμενο ι Πίνακας .Α(ν1,ν1) ' τον κάνω ν1Χν1 Κάλεσε .Έλεγχος() } } Συνάρτηση Άθροισμα { καθαρο Σούμα Διάβασε Θχ,Θυ, Πχ, Πυ, Επ Για Επ=Επ-1 εως 0 Σούμα+=.Α(Θχ,Θυ) Θχ+=Πχ Θυ+=Πυ Επόμενο Επ =Σούμα } Συνάρτηση Ν {=Διάσταση(.Α(),1)} Συνάρτηση Έλεγχος { αν Διάσταση(.Α())=0 τότε έξοδος ν=.Ν() .ΜαγικόςΑριθμός<=.Άθροισμα(ν-1,0,-1,1,ν) οκ=αληθές για ι=0 εως ν-1 οκ=.Άθροισμα(0,ι,1,0,ν)=.ΜαγικόςΑριθμός και οκ οκ=.Άθροισμα(ι,0,0,1,ν)=.ΜαγικόςΑριθμός και οκ επόμενο ι =.Άθροισμα(0,0,1,1,ν)=.ΜαγικόςΑριθμός και οκ }}Αναφορά {Ένα τετράγωνο θεωρείται μαγικό αν το άθροισμα των αριθμών των γραμμών, των στηλών και των διαγωνίων του είναι σταθερός αριθμός.}β=ΜαγικόςΠίνακας(4,9,2,3,5,7,8,1,6)Τύπωσε $(4),"Μαγικός Αριθμός ";β.ΜαγικόςΑριθμόςΤύπωσε "Πίνακας τάξης ";β.Ν()Τύπωσε β.Έλεγχος()β.Α(2,1)++Τύπωσε β.Έλεγχος()β.Α(2,1)--Τύπωσε β.Έλεγχος()
gon1332 Δημοσ. 1 Δεκεμβρίου 2015 Δημοσ. 1 Δεκεμβρίου 2015 Μου θυμίζει προγραμματισμό σε Oberon. Έστω σε σχολεία. Εγώ θυμάμαι πως μετά βίας στο Γυμνάσιο συγκεντρωνόμασταν για προγραμματισμό με ΓΛΩΣΣΑ.
M2000 Δημοσ. 1 Δεκεμβρίου 2015 Μέλος Δημοσ. 1 Δεκεμβρίου 2015 Είχα γράψει προγράμματα στην Γλωσσομάθεια του Νικολαϊδη, το 2003, και με το εμπλουτισμένο συντακτικό (βρες τα εκεί, έχω το Nick name Bugman). Αλλά αυτή η Γλώσσα χειροτέρεψε παρά βελτιώθηκε. Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε). Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός!
gon1332 Δημοσ. 1 Δεκεμβρίου 2015 Δημοσ. 1 Δεκεμβρίου 2015 Είχα γράψει προγράμματα στην Γλωσσομάθεια του Νικολαϊδη, το 2003, και με το εμπλουτισμένο συντακτικό (βρες τα εκεί, έχω το Nick name Bugman). Αλλά αυτή η Γλώσσα χειροτέρεψε παρά βελτιώθηκε. Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε). Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός! Όπως καταλάβατε αγαπώ αυτή τη φράση. NIKLAUS WIRTH. Δεν είναι και τόσο τυχαίος ο άνθρωπος. 3
M2000 Δημοσ. 1 Δεκεμβρίου 2015 Μέλος Δημοσ. 1 Δεκεμβρίου 2015 Έχω διαβάσει τον Wirth, και μάλιστα από τη Modula 2 μου ήρθε η ιδέα για τα τμήματα (Τμήμα ή Module, η Μ2000 έχει όλες τις εντολές και στα αγγλικά) Για μένα προγραμματισμός είναι ο χειρισμός αντικειμένων, όπως γραφικών, βάσεις δεδομένων, πολυμέσα. Το να μπορεί κανείς να τα αυτοματοποιεί. Όταν θες π.χ. να χρησιμοποιήσεις βάσει δεδομένων...ξεχνάς πίνακες και δομές δεδομένων και σε ενδιαφέρει το πώς θα διαχειριστείς τις αιτιάσεις του χρήστη (π.χ.θέλω λίστα τάδε), και πώς θα τα παρουσιάσεις (οθόνη, εκτυπωτή, email). Και αυτά τα κάνεις προγραμματίζοντας, αλλά όχι σε επίπεδο..όπως η ΓΛΩΣΣΑ............
defacer Δημοσ. 1 Δεκεμβρίου 2015 Δημοσ. 1 Δεκεμβρίου 2015 Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός! Για μένα προγραμματισμός είναι ο χειρισμός αντικειμένων, όπως γραφικών, βάσεις δεδομένων, πολυμέσα. Το να μπορεί κανείς να τα αυτοματοποιεί. Όταν θες π.χ. να χρησιμοποιήσεις βάσει δεδομένων...ξεχνάς πίνακες και δομές δεδομένων και σε ενδιαφέρει το πώς θα διαχειριστείς τις αιτιάσεις του χρήστη (π.χ.θέλω λίστα τάδε), και πώς θα τα παρουσιάσεις (οθόνη, εκτυπωτή, email). Και αυτά τα κάνεις προγραμματίζοντας, αλλά όχι σε επίπεδο..όπως η ΓΛΩΣΣΑ............ Εδώ βασικά περιγράφεις τη διαφορά ανάμεσα σε μηχανικό και σε χτίστη. ΟΚ για σένα προγραμματισμός είναι το χτίσιμο, αλλά αν δεν υπήρχαν οι μηχανικοί πολυκατοικίες και γέφυρες δε θα είχαμε. Επίσης, για προφανείς λόγους δεν υπάρχει "σχολή για χτίστες" ενώ υπάρχει για μηχανικούς. Οπότε μην είσαι τόσο απαξιωτικός με το τι "κάθονται και ασχολούνται τόσα χρόνια"... 2
Moderators Kercyn Δημοσ. 1 Δεκεμβρίου 2015 Moderators Δημοσ. 1 Δεκεμβρίου 2015 Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε). Αυτό κακό είναι; Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός! Κρίμα που για οποιοδήποτε non-trivial πρόγραμμα χρειάζεσαι πίνακες και πολυπλοκότητα.
M2000 Δημοσ. 2 Δεκεμβρίου 2015 Μέλος Δημοσ. 2 Δεκεμβρίου 2015 1. Από το τελευταίο: Ασφαλώς και ΔΕΝ είναι γνωστό ότι οι εφαρμογές του εμπορίου είναι βελτιστοποιημένες. Δεν υπάρχει καμία έγγραφη εγγύηση περί αυτού, άρα οποιαδήποτε εικασία δε μετράει! 2. Με παρεξήγησες...δεν είναι το πρόβλημα οι πίνακες και η πολυπλοκότητα αλλά η στασιμότητα σε αυτά. Για τις καθολικές-γενικές μεταβλητές και πίνακες και οτιδήποτε: Γενικά το σκεπτικό με τις καθολικές έχει να κάνει με την ευκολία τους. Μπορούμε σε ένα ΑΝ να γράψουμε μια κατάσταση και αυτό να γίνεται σε μια συνάρτηση που καλούμε 1000 φορές. Αν χρειάζονταν να περάσουμε 1000 φορές την μεταβλητή που θα χρησιμοποιήσουμε μια φορά τότε είναι πρόβλημα! Να αναφέρω εδώ την γνωστή ύπαρξη του Site: LastError των Windows. Πού γράφεται το λάθος σε μια συνάρτηση του συστήματος; Σε μια καθολική μεταβλητή. Πώς το ξέρουμε; Διότι κάθε συνάρτηση την καλούμε απ΄ευθείας και όχι από ένα κεντρικό σημείο. Αν υπήρχε κεντρικό σημείο εισόδου τότε η κλήση θα γίνονταν σε δεύτερο χρόνο από εκεί και η επιστροφή θα έδινε σε μια "στατική" το λάθος και μετά θα μας επέστρεφε το σήμα "έχω λάθος". Τώρα οι ρουτίνες των windows καλούνται χώρια, με δικό τους σημείο εισόδου! Άρα η καθεμία γράφει το πρόβλημα στην ίδια καθολική! Αυτήν βλέπουμε όταν καλούμε την LastError. Στη ΓΛΩΣΣΑ του σχολείου όλα ξεκινούν από ένα κεντρικό σημείο, έτσι φαίνεται απίθανη η χρήση καθολικών! Όμως όταν παλιά είχε καθολικές είχα φτιάξει μια απλή ρουτίνα τυχαίων (δεν έχει ακόμα από το 2003 τέτοια ρουτίνα) η οποία απαιτούσε κάπου να φυλαχτούν δυο τιμές.Έμαθα όμως τελευταία ότι αυτό δεν επιτρέπεται!..Χωρίς καθολική τι θα έπρεπε να κάνει κανείς αν θέλει να την χρησιμοποιήσει σε τρεις διαδικασίες; Να βάλει από δυο παραμέτρους επιπλέον; Είναι αυτό προγραμματισμός; Γενικά όταν κόβεις δυνατότητες γιατί φοβάσαι τα λάθη ή ό,τι άλλο είναι χειρότερο από το να εξηγήσεις και να δείξεις το λάθος προς αποφυγή! Και στο φινάλε αφού η ΓΛΩΣΣΑ του σχολείου ήταν γλώσσα για χαρτί και μολύβι, χωρίς κώδικα πραγματικό, γιατί να αποκλείσουν τις καθολικές-γενικές; Στη Μ2000 στο περιβάλλον της φορτώνουμε τμήματα. Όσα τμήματα υπάρχουν στην λίστα πριν τρέξουν είναι καθολικά-γενικά. Μπορούμε όμως να φτιάξουμε κάποιο γενικό σε ένα γενικό ή μη τμήμα και αυτό θα υπάρχει μέχρι να εξαφανιστεί με το πέρας της εκτέλεσης του δημιουργού του ή πρόσκαιρα για τμήματα που καλούμε να σκιαστεί από άλλο γενικό ή από τοπικό. Τα τοπικά αναγνωριστικά με το ίδιο όνομα σκιάζουν τα γενικά, όπως και τα νέα γενικά με το ίδιο όνομα σκιάζουν τα γενικά! Με αυτό το τρόπο μπορούμε να "μοντάρουμε" μια συλλογή τμημάτων και γενικών ορισμών και πρόσκαιρα να λειτουργήσει σαν να ήταν μόνο αυτή φορτωμένη, και ας υπάρχουν γενικές πριν το φόρτωμα και κατά αυτό με το ίδιο όνομα. Δεν θα χαθούν οι παλιές για το παλιό κώδικα και θα υπάρχουν οι νέες για το νέο. Αυτό το γράφω γιατί ουσιαστικά το πρόβλημα με τις καθολικές είναι ότι αποφεύγονται όταν έχουμε κώδικα που επαναχρησιμοποιείται, αφού η γενική μπορεί να συμπίπτει με άλλη και o compiler μπερδεύεται! Εδώ δεν υπάρχει μπέρδεμα αφού έχει προβλεφθεί η χρήση πολλαπλών γενικών με το ίδιο όνομα! Defacer, Δεν μπαίνω στη διαδικασία συζήτησης περί του μηχανικού και του κτίστη, αυτά δεν έχουν καμία σχέση..μάλιστα ο κτίστης έχει σχέση με τον εργολάβο, ο εργολάβος με τον εργοδότη, και ο μηχανικός με τον εργοδότη,...δηλαδή στην Ελληνική πραγματικότητα ο μηχανικός μπορεί να μην δει ποτέ τον εργολάβο! Στο προγραμματισμό όλοι είναι κτίστες.Ο μηχανικός δεν ενδιαφέρεται για το πρόγραμμα ως πρόγραμμα αλλά για τον άνθρωπο, κάνει κοστολόγιο, επιμετρήσεις και αξιολόγηση, για να ξέρει η επιχείρηση τι θα πληρώσει! Ο μηχανικός δεν διαβάζει γραμμή κώδικα! Αποδέχεται ή απορρίπτει! Μην μπερδεύεις τον εκπαιδευτικό πληροφορικό που θέλει να λέγεται μηχανικός. Δεν είναι εκ των πραγμάτων. Θα γίνει αν αλλάξει επάγγελμα!
the other one Δημοσ. 2 Δεκεμβρίου 2015 Δημοσ. 2 Δεκεμβρίου 2015 Τις global δε τις αποφεύγεις για να μη μπερδευτεί ο compiler αλλά γιατί θεωρούνται κακή προγραμματιστική τακτική. Δεν ξέρω πώς είναι υλοποιημένη η ΓΛΩΣΣΑ αλλά το να μην υποστηρίζει globals υπό αυτή τη λογική μου ακούγεται αρκετά σωστό. Και στη προκειμένη ναι, όταν θες να χρησιμοποήσεις μεταβλητές μεταξύ πολλών συναρτήσεων ( και δε θες να χρησιμοποιήσεις κλάσεις ) τις περνάς με το χέρι. Αυτό ΕΙΝΑΙ προγραμματισμός. Δε γίνεται από τι μία να υποστηρίζεις πως η Χ γλώσσα ενδείκνειται για παιδιά κι απ' την άλλη να ζητάς να συμπεριλαμβάνει features που προορίζονται για advanced χρήση είναι οξύμωρο. Με την ίδια λογική να χώσουμε και goto για να είναι πιο πλήρης. 2
M2000 Δημοσ. 2 Δεκεμβρίου 2015 Μέλος Δημοσ. 2 Δεκεμβρίου 2015 (επεξεργασμένο) Το goto επιβάλλεται. Λέγεται Προς και στην 8η έκδοση της M2000 γίνεται να βγεις και από μπλοκ εντολών (δύσκολη υλοποίηση αλλά το πέτυχα, ο διερμηνευτής τρέχει με ένα πέρασμα τον κώδικα, δηλαδή όταν είναι στη μέση...έχει σβήσει το αρχικό και έχει το υπόλοιπο, οπότε η αλλαγή ροής σε αριθμό ή ετικέτα κάνει το διερμηνευτή να παρατήσει αυτό που εκτελεί και να φορτώσει τον αρχικό κώδικα και να βρει την ετικέτα. Επειδή τα προγράμματα σπάνε σε τμήματα αυτή η λειτουργία γίνεται στο τμήμα και όχι σε όλο το πρόγραμμα Δηλαδή ενώ κάνει ένα πέρασμα για εκτέλεση ο διερμηνευτής, τα τμήματα που βρίσκει ως ορισμούς τα αντιγράφει σε λίστα, απ όπου όταν θέλουμε να τρέξουμε ένα τότε αντιγράφεται εσωτερικά σε αντικείμενο εκτέλεσης. Δηλαδή ο κώδικας ενός τμήματος μπορεί να υπάρχει σε τρία μέρη, στο πατρικό τμήμα ως ορισμός, στη λίστα τμημάτων και σε εκτέλεση (γίνεται να μην υπάρχει πατρικό, αν φορτώθηκε απ ευθείας στη λίστα ή αν το γράψαμε με το διορθωτή). Για να γίνει το άλμα χρειάζεται το αντικείμενο εκτέλεσης να ξέρει άμεσα τη θέση του αρχικού ορισμού στη λίστα, να μην το αναζητά με όνομα, για να ξαναπάρει το κώδικα. Αυτό με βόλεψε τελικά στο να φτιάξω τρόπο να βλέπει κανείς το πρόγραμμα σε παράθυρο καθώς εκτελείται...αφού είχα τη πληροφορία της πηγής..άμεσα.Η Μ2000 δεν έχει ταμπού περί του μέσου. Η καλή πρακτική διδάσκεται. Αν δεν ξέρεις την χρήση της Goto τότε την απορρίπτεις, όπως απορρίπτεις και τις καθολικές.Δεν είναι καθόλου προχωρημένα χαρακτηριστικά. Ό,τι έχει μια γλώσσα είναι προσφερόμενο μέσο. Για μένα τα πρώτα προγράμματα πρέπει να έχουν την Προς μέσα. Μάλιστα υπάρχει και το ON GOTO ως ΑΠΟ ΠΡΟΣ. Αυτή είναι η διακλάδωση βάσει αριθμητικής τιμής...προς κάθε κατεύθυνση! Δεν υπάρχει πιο άμεσος τρόπος αντίληψης της διακλάδωσης.Και εγώ αποφεύγω τη χρήση της, αλλά δεν γίνεται πάντα. Ειδικά στην Visual Basic 6 που έχει γραφτεί το περιβάλλον της γλώσσας η GOTO γίνεται από τον compiler μια εντολή jump σε γλώσσα μηχανής...χωρίς χρήση στοίβας όπως θα ήταν η κλήση ρουτίνας, άρα άμεσα. Όταν δεν έχω να περάσω μεταβλητές και θέλω πάλι είσοδο στο κώδικα...αποφεύγω την χρήση αναδρομής με goto. Χρειάστηκα κάτι τέτοιο στο χρωματισμό του κώδικα που γίνεται καθώς πληκτρολογείς. Εκεί το ενδιαφέρον είναι ότι χρωματίζει κώδικα που δεν έχει ολοκληρωθεί και σε κάθε νέα εισαγωγή δίνει μια νέα λύση χρωματισμού. Αν το βλέπαμε ως ανάλογο της εκτέλεσης..εκεί η μη ολοκλήρωση θα έβγαζε λάθος, ενώ στο χρωματισμό δεν υπάρχει λάθος αλλά πάντα μια λύση. Χωρίς την χρήση Goto θα ήταν πολύ δύσκολο να υλοποιηθεί και θα έχανε σε ταχύτητα. Η χρήση της είναι για να έχουμε πολλά σημεία εισόδου, σκεπτόμενοι στη φάση που την επιλέγουμε ότι έχουμε ήδη την χψδ κατάσταση αλλά όχι μια συνέχεια που εκεί επιθυμούμε οπότε ο κώδικας θέλει εκκίνηση από το Χ σημείο που ελέγχει την άλλη συνέχεια.Κατά τη γνώμη μου ο προγραμματισμός ως ορισμός μιας γραμμής είναι ο διαδοχικός έλεγχος συνθηκών και οι αντιγραφές μνήμης. Να γιατί στο σχολείο έχουν κολλήσει με πίνακες και επαναλήψεις με συνθήκες. Ο ορισμός όμως αποκρύπτει το ποιες είναι οι συνθήκες και πως ορίζεται η μνήμη. Το πρώτο το αντιλαμβάνεται ο μαθητής από το πρόβλημα και το ανάγει σε μεταβλητές, άρα μνήμη, και εντολές ελέγχου. Με διαγράμματα ροής και ψευδοκώδικα ο ποιητής καθηγητής θέλει να μην το βλέπει έτσι! Αλλά να βλέπει αυτό που πράγματι υπάρχει, η σειρά εντολών. Έχει σημασία η σειρά ως διαδοχικές καταστάσεις ενός αυτόματου. Επειδή δεν μπορεί ο καθηγητής να εκφραστεί με καταστάσεις και αυτόματα..αφήνει τον μαθητή να φαντάζεται με λογικά διαγράμματα και ψευδοκώδικα. Οι ετικέτες λοιπόν που δείχνουν τα goto είναι διακριτές καταστάσεις, δηλαδή ξέρει ο προγραμματιστής τι κατάσταση χρειάζεται για να εισέλθει στο κώδικα από αυτό το σημείο. Να γιατί αποφεύγουν την χρήση Goto. Χρειάζεται η αντίληψη της κατάστασης, όχι οπουδήποτε αλλά σε ξεχωριστά σημεία στο κώδικα, σημαντικά σημεία! Επεξ/σία 2 Δεκεμβρίου 2015 από M2000
Προτεινόμενες αναρτήσεις