Προς το περιεχόμενο

Ενημέρωση για τη Μ2000 (Γλώσσα προγραμματισμού)


M2000

Προτεινόμενες αναρτήσεις

Κανένα πρόβλημα δεν έχει απλά περιέγραψέ μου με δυο λόγια τα βήματα που θα ακολουθήσω για να φτιάξω ένα τρίγωνο στη Python.

 

Να βάλω και κάτι ωραίο (χρησιμοποιεί και πολικές συντεταγμένες, και απόλυτες θέσεις)

 

Φόρμα 60, 30 ' σε χαρακτήρες
Τμήμα Τρίγωνο {
      Διάβασε α, β , γ
      θέση α, β
      Χάραξε Γωνία γ, 5000
      Χάραξε Έως θέση.χ, β
      Χάραξε Έως α, β
}
Για ι =πι/8 έως πι-πι/8 ανά πι/8 {
       Τρίγωνο 6000,6000,ι
}


triangle.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Έχεις πάρει feedback από μαθητές; Γιατί ωραία και καλά όλα αυτά που λέμε και λες, αλλά δεν είμαστε εμείς αυτοί που θα τη μάθουμε. Έχεις δοκιμάσει να διδάξεις τη γλώσσα και οι περισσότερες αντιδράσεις που έχεις πάρει είναι "Ναι, δε δυσκολεύομαι να μάθω και να κάνω πράγματα με αυτή τη γλώσσα"; Επίσης, έχεις δοκιμάσει να διδάξεις python και σου έχουν πει ότι "δεν καταλαβαίνουμε τι γίνεται/δυσκολευόμαστε";

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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. Έτσι μαθαίνουν τα παιδάκια. Υπάρχουν έρευνες για αυτό. Ο τυπάς έκανε ολόκληρη έρευνα για να καταλήξει να φτιάξει αυτή την γλώσσα. Η πρώην μου σπούδασε νηπιαγωγός. Έχω μάθει άπειρα πράγματα για το πώς μαθαίνουν τα παιδιά. Και πίστεψέ με δεν είναι τόσο απλό. Τα παιδάκια δε θα μάθουν πολικές. Ούτε καν καρτεσιανές. Θα βαρεθούν. Θέλουν να δουν ένα ρομποτάκι (χελώνα) να κινείται και να χαράζει μία διαδρομή. Ορίστε κάτι που χρησιμοποιείται αρκετά σε νηπιαγωγεία.

  • Like 5
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πράγματι έχω μαθητές που μαζί με άλλες ασχολίες μαθαίνουν κάτι από αυτή τη γλώσσα! Δεν μπορούν να ξέρουν τι υπάρχει! Οπότε δεν μπορούμε να βασιστούμε στην αποδοχή τους.  Μπορείς απλά να περάσεις έννοιες στα παιδιά που θα τις κάνουν αργότερα και αυτό ίσως να μην φαίνεται καλό αλλά το εργαλείο είναι εποπτικό, δηλαδή άμεσα έχει αντίληψη το παιδί του τι κάνει (όχι το πώς γίνεται εσωτερικά). Το χελωνάκι είναι μια καλή φάση. Και στη Μ2000 μπορεί κανείς να φτιάχνει "παίκτες" (sprites) και να τα μετακινεί όπου θέλει, άρα μπορεί να ζωγραφίζει από κάτω!

Η ιδέα να μάθει κανείς προγραμματισμό με τη Μ2000 δεν είναι στο να σταθεί σε ομάδες εντολών π.χ. "αυτές είναι οι επαναλήψεις", ή "σήμερα θα μάθουμε την Επανέλαβε Μέχρι" αλλά να συμπεριλάβει εντολές για να κάνει κάτι που έχει νόημα. Να φανεί ότι τις εντολές τις χρησιμοποιούμε για να πετύχουμε κάτι, και ότι δεν είναι η κάθε εντολή σκοπός της άσκησης. Με αυτό τον τρόπο εστιάζουμε στο αφηρημένο και δίνουμε μια έκφανση, μια προσαρμογή με την Μ2000. Αύριο θα το κάνει αυτό με μια σοβαρότερη γλώσσα. Διότι η Μ2000 είναι απλά ένας διερμηνευτής, δεν είναι ό,τι γρήγορο αλλά ότι κάνει το κάνει "τίμια". Δηλαδή στο θέμα που έδειξε ο gon1332 χρησιμοποιεί ένα Tutrle.screen αλλά τα γραφικά αυτά δεν πρόκειται ποτέ να βγουν στον εκτυπωτή ή δεν πρόκειται ποτέ να γράψουμε κείμενο σε στήλες εκεί που θα έχουμε και τα γραφικά μας, διότι το Tutrle.screen  είναι ένα αντικείμενο που δουλεύει στο δικό του περιβάλλον. Αυτό δουλεύει μεν, αλλά δεν είναι τίμια απάντηση στο ότι το κάνει η Python. Το κάνει το αντικείμενο που συνεργάζεται με την Python. Ο κατασκευαστής του όμως δεν δούλεψε σε κάποια επιφάνεια που δίνει η Python. H Python δίνει μόνο την κονσόλα!

 

 

Θέλουμε λοιπόν να κατανοήσει ο μαθητής τον υπολογιστή και τις δυνατότητές του, όχι τη γλώσσα, ούτε τις εντολές της, ούτε να μπλέξει με συμβατότητες και βιβλιοθήκες. Για να το κάνει αυτό πρέπει να μάθει να τον χειρίζεται και ένας τρόπος λέγεται αυτοματισμός. Πώς λοιπόν θα αυτοματοποιήσει κανείς το σχεδιασμό γραμμών; Θα φτιάξει πρόγραμμα που "αυτόματα" θα σχεδιάζει! Πώς θα γίνει αυτό; Θα δει ένα δυο παραδείγματα, θα τα πειράξει, θα δοκιμάσει την δική του εκδοχή! Θα χρησιμοποιήσει τη φαντασία του, θα κάνει λάθος! Αυτός είναι ο τρόπος να μάθει!

Από κει και πέρα μπορεί κανείς να διασκεδάζει βλέποντας το παιχνίδι να ζωγραφίζει μια γραμμή! Προφανώς και δεν θα αφήσει ο καθηγητής να "παίξει" ο μαθητής με το ακριβό παιχνίδι. Θα κοιτάνε ένας δυο και οι άλλοι θα παίζουν φάπες, θα γελάνε θα πειράζονται δηλαδή! Εγώ λοιπόν προτείνω μια μέθοδο δοκιμής και σφάλματος σε ένα ελεγχόμενο περιβάλλον όπως η Μ2000. Χωρίς εκατό κουμπάκια, όπου με πληκτρολόγηση θα ακολουθεί οδηγίες θα φτιάχνει ένα αρχικό πρόγραμμα και θα το πειράζει! Κινούμε την νοημοσύνη του δηλαδή δεν το κάνουμε ρομπότ να παίρνουμε αυτό που του ζητάμε!


Έτρεξα το πρόγραμμα στο Ubuntu Studio που έχω (τα Windows τα τρέχω σε VirtualBox στο Ubuntu). Εντάξει τρέχει αλλά δεν μου αρέσει αυτό το χάος!

Μια κονσόλα εδώ, μια οθόνη εκεί...προφανώς τα νούμερα έχουν να κάνουν με Pixels!

 

post-370421-0-51809800-1448978269_thumb.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με ένα python IDE έχεις ξεμπερδέψει. Ναι σε pixel είναι τα νούμερα.

 

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

 

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

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν είναι για νήπια αλλά για παιδιά του δημοτικού κάτι γίνεται:

 

Δες το παρακάτω παράδειγμα που κάνει χρήση κλάσης δεν είναι εύκολο για παιδιά δημοτικού;

 

 

Κλάση ΜαγικόςΠίνακας {
      Πίνακας Α()
      ΜαγικόςΑριθμός
      Τμήμα ΜαγικόςΠίνακας {
            ν=μέγεθος.σωρού
            ν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)--
Τύπωσε β.Έλεγχος()

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μου θυμίζει προγραμματισμό σε Oberon.

 

Έστω σε σχολεία. Εγώ θυμάμαι πως μετά βίας στο Γυμνάσιο συγκεντρωνόμασταν για προγραμματισμό με ΓΛΩΣΣΑ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είχα γράψει προγράμματα στην Γλωσσομάθεια του Νικολαϊδη, το 2003, και με το εμπλουτισμένο συντακτικό (βρες τα εκεί, έχω το Nick name Bugman). Αλλά αυτή η Γλώσσα χειροτέρεψε παρά βελτιώθηκε. Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε).

 

Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είχα γράψει προγράμματα στην Γλωσσομάθεια του Νικολαϊδη, το 2003, και με το εμπλουτισμένο συντακτικό (βρες τα εκεί, έχω το Nick name Bugman). Αλλά αυτή η Γλώσσα χειροτέρεψε παρά βελτιώθηκε. Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε).

 

Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός!

post-223995-0-90257600-1448997420_thumb.jpg

 

 

Όπως καταλάβατε αγαπώ αυτή τη φράση.

 

 

NIKLAUS WIRTH. Δεν είναι και τόσο τυχαίος ο άνθρωπος.

  • Like 3
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχω διαβάσει τον Wirth, και μάλιστα από τη Modula 2 μου ήρθε η ιδέα για τα τμήματα (Τμήμα ή Module, η Μ2000 έχει όλες τις εντολές και στα αγγλικά)

Για μένα προγραμματισμός είναι ο χειρισμός αντικειμένων, όπως γραφικών, βάσεις δεδομένων, πολυμέσα. Το να μπορεί κανείς να τα αυτοματοποιεί. Όταν θες π.χ. να χρησιμοποιήσεις βάσει δεδομένων...ξεχνάς πίνακες και δομές δεδομένων και σε ενδιαφέρει το πώς θα διαχειριστείς τις αιτιάσεις του χρήστη (π.χ.θέλω λίστα τάδε), και πώς θα τα παρουσιάσεις (οθόνη, εκτυπωτή, email). Και αυτά τα κάνεις προγραμματίζοντας, αλλά όχι σε επίπεδο..όπως η ΓΛΩΣΣΑ............

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός!

 

 

Για μένα προγραμματισμός είναι ο χειρισμός αντικειμένων, όπως γραφικών, βάσεις δεδομένων, πολυμέσα. Το να μπορεί κανείς να τα αυτοματοποιεί. Όταν θες π.χ. να χρησιμοποιήσεις βάσει δεδομένων...ξεχνάς πίνακες και δομές δεδομένων και σε ενδιαφέρει το πώς θα διαχειριστείς τις αιτιάσεις του χρήστη (π.χ.θέλω λίστα τάδε), και πώς θα τα παρουσιάσεις (οθόνη, εκτυπωτή, email). Και αυτά τα κάνεις προγραμματίζοντας, αλλά όχι σε επίπεδο..όπως η ΓΛΩΣΣΑ............

 

 

Εδώ βασικά περιγράφεις τη διαφορά ανάμεσα σε μηχανικό και σε χτίστη.

 

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

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

 

 

Νομίζω δεν παίρνει καθολικές (γενικές τις λέω στη Μ2000) μεταβλητές (παλιά έπαιρνε).

Αυτό κακό είναι;

 

 

 

Κάθονται τόσα χρόνια και ασχολούνται με πίνακες, ταξινόμηση και πολυπλοκότητα....Αν είναι δυνατόν να είναι αυτό προγραμματισμός!

Κρίμα που για οποιοδήποτε non-trivial πρόγραμμα χρειάζεσαι πίνακες και πολυπλοκότητα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1. Από το τελευταίο: Ασφαλώς και ΔΕΝ είναι γνωστό ότι οι εφαρμογές του εμπορίου είναι βελτιστοποιημένες. Δεν υπάρχει καμία έγγραφη εγγύηση περί αυτού, άρα οποιαδήποτε εικασία δε μετράει!

2. Με παρεξήγησες...δεν είναι το πρόβλημα οι πίνακες και η πολυπλοκότητα αλλά η στασιμότητα σε αυτά.

 

Για τις καθολικές-γενικές μεταβλητές και πίνακες και οτιδήποτε:

Γενικά το σκεπτικό με τις καθολικές έχει να κάνει με την ευκολία τους. Μπορούμε σε ένα ΑΝ να γράψουμε μια κατάσταση και αυτό να γίνεται σε μια συνάρτηση που καλούμε 1000 φορές. Αν χρειάζονταν να περάσουμε 1000 φορές την μεταβλητή που θα χρησιμοποιήσουμε μια φορά τότε είναι πρόβλημα! Να αναφέρω εδώ την γνωστή ύπαρξη του Link.png Site: LastError των Windows. Πού γράφεται το λάθος σε μια συνάρτηση του συστήματος; Σε μια καθολική μεταβλητή. Πώς το ξέρουμε; Διότι κάθε συνάρτηση την καλούμε απ΄ευθείας και όχι από ένα κεντρικό σημείο. Αν υπήρχε κεντρικό σημείο εισόδου τότε η κλήση θα γίνονταν σε δεύτερο χρόνο από εκεί και η επιστροφή θα έδινε σε μια "στατική" το λάθος και μετά θα μας επέστρεφε το σήμα "έχω λάθος". Τώρα οι ρουτίνες των windows καλούνται χώρια, με δικό τους σημείο εισόδου! Άρα η καθεμία γράφει το πρόβλημα στην ίδια καθολική! Αυτήν βλέπουμε όταν καλούμε την LastError.

 

Στη ΓΛΩΣΣΑ του σχολείου όλα ξεκινούν από ένα κεντρικό σημείο, έτσι φαίνεται απίθανη η χρήση καθολικών! Όμως όταν παλιά είχε καθολικές είχα φτιάξει μια απλή ρουτίνα τυχαίων (δεν έχει ακόμα από το 2003 τέτοια ρουτίνα) η οποία απαιτούσε κάπου να φυλαχτούν δυο τιμές.Έμαθα όμως τελευταία ότι αυτό δεν επιτρέπεται!..Χωρίς καθολική τι θα έπρεπε να κάνει κανείς αν θέλει να την χρησιμοποιήσει σε τρεις διαδικασίες; Να βάλει από δυο παραμέτρους επιπλέον; Είναι αυτό προγραμματισμός; Γενικά όταν κόβεις δυνατότητες γιατί φοβάσαι τα λάθη ή ό,τι άλλο είναι χειρότερο από το να εξηγήσεις και να δείξεις το λάθος προς αποφυγή! Και στο φινάλε αφού η ΓΛΩΣΣΑ του σχολείου ήταν γλώσσα για χαρτί και μολύβι, χωρίς κώδικα πραγματικό, γιατί να αποκλείσουν τις καθολικές-γενικές;

 

Στη Μ2000 στο περιβάλλον της φορτώνουμε τμήματα. Όσα τμήματα υπάρχουν στην λίστα πριν τρέξουν είναι καθολικά-γενικά. Μπορούμε όμως να φτιάξουμε κάποιο γενικό σε ένα γενικό ή μη τμήμα και αυτό θα υπάρχει μέχρι να εξαφανιστεί με το πέρας της εκτέλεσης του δημιουργού του ή πρόσκαιρα για τμήματα που καλούμε να σκιαστεί από άλλο γενικό ή από τοπικό. Τα τοπικά αναγνωριστικά με το ίδιο όνομα σκιάζουν τα γενικά, όπως και τα νέα γενικά με το ίδιο όνομα σκιάζουν τα γενικά! Με αυτό το τρόπο μπορούμε να "μοντάρουμε" μια συλλογή τμημάτων και γενικών ορισμών και πρόσκαιρα να λειτουργήσει σαν να ήταν μόνο αυτή φορτωμένη, και ας υπάρχουν γενικές πριν το φόρτωμα και κατά αυτό με το ίδιο όνομα. Δεν θα χαθούν οι παλιές για το παλιό κώδικα και θα υπάρχουν οι νέες για το νέο. Αυτό το γράφω γιατί ουσιαστικά το πρόβλημα με τις καθολικές είναι ότι αποφεύγονται όταν έχουμε κώδικα που επαναχρησιμοποιείται, αφού η γενική μπορεί να συμπίπτει με άλλη και o compiler μπερδεύεται! Εδώ δεν υπάρχει μπέρδεμα αφού έχει προβλεφθεί η χρήση πολλαπλών γενικών με το ίδιο όνομα!

 

Defacer,

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

Μην μπερδεύεις τον εκπαιδευτικό πληροφορικό που θέλει να λέγεται μηχανικός. Δεν είναι εκ των πραγμάτων. Θα γίνει αν αλλάξει επάγγελμα!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τις global δε τις αποφεύγεις για να μη μπερδευτεί ο compiler αλλά γιατί θεωρούνται κακή προγραμματιστική τακτική. Δεν ξέρω πώς είναι υλοποιημένη η ΓΛΩΣΣΑ αλλά το να μην υποστηρίζει globals υπό αυτή τη λογική μου ακούγεται αρκετά σωστό.

 

Και στη προκειμένη ναι, όταν θες να χρησιμοποήσεις μεταβλητές μεταξύ πολλών συναρτήσεων ( και δε θες να χρησιμοποιήσεις κλάσεις ) τις περνάς με το χέρι. Αυτό ΕΙΝΑΙ προγραμματισμός.

 

Δε γίνεται από τι μία να υποστηρίζεις πως η Χ γλώσσα ενδείκνειται για παιδιά κι απ' την άλλη να ζητάς να συμπεριλαμβάνει features που προορίζονται για advanced χρήση είναι οξύμωρο. Με την ίδια λογική να χώσουμε και goto για να είναι πιο πλήρης.

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

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

Η Μ2000 δεν έχει ταμπού περί του μέσου. Η καλή πρακτική διδάσκεται. Αν δεν ξέρεις την χρήση της Goto τότε την απορρίπτεις, όπως απορρίπτεις και τις καθολικές.Δεν είναι καθόλου προχωρημένα χαρακτηριστικά. Ό,τι έχει μια γλώσσα είναι προσφερόμενο μέσο. Για μένα τα πρώτα προγράμματα πρέπει να έχουν την Προς μέσα. Μάλιστα υπάρχει και το ON GOTO ως ΑΠΟ ΠΡΟΣ. Αυτή είναι η διακλάδωση βάσει αριθμητικής τιμής...προς κάθε κατεύθυνση! Δεν υπάρχει πιο άμεσος τρόπος αντίληψης της διακλάδωσης.
Και εγώ αποφεύγω τη χρήση της, αλλά δεν γίνεται πάντα. Ειδικά στην Visual Basic 6 που έχει γραφτεί το περιβάλλον της γλώσσας η GOTO γίνεται από τον compiler μια εντολή jump σε γλώσσα μηχανής...χωρίς χρήση στοίβας όπως θα ήταν η κλήση ρουτίνας, άρα άμεσα. Όταν δεν έχω να περάσω μεταβλητές και θέλω πάλι είσοδο στο κώδικα...αποφεύγω την χρήση αναδρομής με goto. Χρειάστηκα κάτι τέτοιο στο χρωματισμό του κώδικα που γίνεται καθώς πληκτρολογείς. Εκεί το ενδιαφέρον είναι ότι χρωματίζει κώδικα που δεν έχει ολοκληρωθεί και σε κάθε νέα εισαγωγή δίνει μια νέα λύση χρωματισμού. Αν το βλέπαμε ως ανάλογο της εκτέλεσης..εκεί η μη ολοκλήρωση θα έβγαζε λάθος, ενώ στο χρωματισμό δεν υπάρχει λάθος αλλά πάντα μια λύση. Χωρίς την χρήση Goto θα ήταν πολύ δύσκολο να υλοποιηθεί και θα έχανε σε ταχύτητα. Η χρήση της είναι για να έχουμε πολλά σημεία εισόδου, σκεπτόμενοι στη φάση που την επιλέγουμε ότι έχουμε ήδη την χψδ κατάσταση αλλά όχι μια συνέχεια που εκεί επιθυμούμε οπότε ο κώδικας θέλει εκκίνηση από το Χ σημείο που ελέγχει την άλλη συνέχεια.
Κατά τη γνώμη μου ο προγραμματισμός ως ορισμός μιας γραμμής είναι ο διαδοχικός έλεγχος συνθηκών και οι αντιγραφές μνήμης. Να γιατί στο σχολείο έχουν κολλήσει με πίνακες και επαναλήψεις με συνθήκες. Ο ορισμός όμως αποκρύπτει το ποιες είναι οι συνθήκες και πως ορίζεται η μνήμη. Το πρώτο το αντιλαμβάνεται ο μαθητής από το πρόβλημα και το ανάγει σε μεταβλητές, άρα μνήμη, και εντολές ελέγχου. Με διαγράμματα ροής και ψευδοκώδικα ο ποιητής καθηγητής θέλει να μην το βλέπει έτσι! Αλλά να βλέπει αυτό που πράγματι υπάρχει, η σειρά εντολών. Έχει σημασία η σειρά ως διαδοχικές καταστάσεις ενός αυτόματου. Επειδή δεν μπορεί ο καθηγητής να εκφραστεί με καταστάσεις και αυτόματα..αφήνει τον μαθητή να φαντάζεται με λογικά διαγράμματα και ψευδοκώδικα. Οι ετικέτες λοιπόν που δείχνουν τα goto είναι διακριτές καταστάσεις, δηλαδή ξέρει ο προγραμματιστής τι κατάσταση χρειάζεται για να εισέλθει στο κώδικα από αυτό το σημείο. Να γιατί αποφεύγουν την χρήση Goto. Χρειάζεται η αντίληψη της κατάστασης, όχι οπουδήποτε αλλά σε ξεχωριστά σημεία στο κώδικα, σημαντικά σημεία!

Επεξ/σία από M2000
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...