Τετάρτη, 20 Δεκεμβρίου 2017

Τελική αναθεώρηση 32 έκδοσης 9.0

Ανέβηκε η τελευταία αναθεώρηση, η 32, για την έκδοση 9.0 η οποία είναι η τελική (δουλεύει άψογα). Τελευταία αλλαγή έγινε για περισσότερη συμβατότητα της νέας έκδοσης με τις παλιότερες. Υπάρχει ακόμα μια ασυμβατότητα με τις προ της 6 εκδόσεις, σχετικά με την χρήση του σωρού τιμών στις συναρτήσεις, όπου στις παλιές εκδόσεις έπαιρναν τον σωρό τιμών του τμήματος που τις καλούσε, και έτσι άφηναν περισσότερες τιμές, κάτι που μπορεί να γίνει στις νέες εκδόσεις με την χρήση της Κάλεσε (ενώ στις παλιές γίνονταν και με την χρήση των συναρτήσεων σε παραστάσεις).
Ήδη εδώ και μερικές αναθεωρήσεις έχει μπει ο "secure" διερμηνευτής, ο οποίος σε νέες εγκαταστάσεις είναι σε προεπιλογή, αλλά μπορούμε από τη γραμμή εντολών να το αλλάξουμε στο παλιό με εντολή Διακόπτες "-sec" ή μέσα από πρόγραμμα με την Θέσε Διακόπτες "-sec". Την θέση των διακοπτών την βλέπουμε την εντολή Ελεγχος από την γραμμή εντολών (δίνει αρκετές πληροφορίες). Οι διακόπτες είναι τρια γράμματα και έχουν μπροστά το - ή το +. Μπορούμε σε μια συντόμευση για το εκτελέσιμο m2000.exe να βάλουμε τη σειρά των διακοπτών που θέλουμε ώστε όταν ξεκινάει ο διερμηνευτής να είναι όπως επιθυμούμε. Ορισμένοι διακόπτες αλλάζουν μόνιμα και άλλοι μόνο για την εκτέλεση που ζητάμε. Πληροφορίες για τους διακόπτες μπορούμε να πάρουμε με την εντολή Βοήθεια Διακόπτες  (με Βοήθεια Όλα μας δίνει ο διερμηνευτής την κεντρική σελίδα, ενώ υπάρχει βοήθεια στα αγγλικά με το Help, Help All, Help switches).

Παρακάτω είναι ένα παράδειγμα που έτρεχε με την "-sec" ρύθμιση αλλά όχι με την "+sec", και τώρα τρέχει και με την τελευταία. Είναι ο τρόπος να έχουμε πρόσβαση σε μεταβλητές που ορίστηκαν τοπικές σε προηγούμενα τμήματα. Για να αλλάξουμε τιμή χρησιμοποιούμε το <=, το σύμβολο εκχώρησης τιμής για γενικές μεταβλητές και για μεταβλητές ομάδων (μέσα από μέλη ομάδων, όπως τμήματα, συναρτήσεις, τελεστές). Παραμένει βέβαια η Secure έκδοση, στην οποία αν υπάρχει ήδη ένα τμήμα βήτα με μια χ πάνω από το τμήμα άλφα, στη χ=20 θα φτιάξει μεταβλητή (ενώ η παλιά έκδοση θα το έβρισκε ως βήτα.χ και θα άλλαζε την τιμή σε αυτή, χωρίς να φτιάξει νέα, και για το λόγο αυτό φτιάχτηκε η "secure" έκδοση). Επιπλέον

Τμήμα άλφα {
      χ=10
      Τμήμα βήτα {
            χ=20
            Τμήμα δέλτα {
                  χ=30
                  Τύπωσε χ, βήτα.χ, άλφα.χ
                  άλφα.χ<=50
                  χ=40
                  βήτα.χ<=60
                  Τύπωσε χ, βήτα.χ, άλφα.χ
            }
            δέλτα
      }
      βήτα
}
\\ δεν μπορούμε να καλέσουμε το βήτα ή το δέλτα
\\ επειδή δεν "υπάρχουν" ακόμα
άλφα

Παραλλαγή με την Κάλεσε (όταν καλούμε τμήματα με την Κάλεσε καλούνται σαν συναρτήσεις, δηλαδή έχουν την δυνατότητα αναδρομής, και μπορεί να γίνει αυτό γιατί μέσα από το τμήμα η κάλεσε με το όνομα του τμήματος βλέπει το τμήμα ενώ σκέτο το όνομα βγαίνει λάθος, αποκλείει την αναδρομή). Η παλιά έκδοση ("-sec") δεν μπορεί να το τρέξει αυτό (επειδή αλλάζουν τα προθέματα που δεν βλέπουμε, με προθέματα κατάλληλα για αναδρομή). Για να δούμε το πλήρες όνομα τμήματος ή συνάρτησης κατά την εκτέλεση υπάρχει η μεταβλητή μόνο για ανάγνωση Τμήμα$ που γυρνάει το αλφαριθμητικό με όλο το όνομα. Μπορούμε να βάλουμε μια Τύπωσε Τμήμα$ για να δούμε τι κάνει ο διερμηνευτής. (αν και ο κώδικας της Μ2000 είναι ανοιχτός, σε Visual Basic 6, είναι αρκετά πολύπλοκος, για να τον καταλάβει κάποιος, ακόμα και προχωρημένος, υπάρχει όμως στο Git, δείτε στους συνδέσμους δεξιά).

Τμήμα άλφα {
      χ=10
      Τμήμα βήτα {
            χ=20
            Τμήμα δέλτα {
                  χ=30
                  Τύπωσε χ, βήτα.χ, άλφα.χ
                  άλφα.χ<=50
                  χ=40
                  βήτα.χ<=60
                  Τύπωσε χ, βήτα.χ, άλφα.χ
            }
            Κάλεσε δέλτα
      }
      Κάλεσε βήτα
}
\\ δεν μπορούμε να καλέσουμε το βήτα ή το δέλτα
\\ επειδή δεν "υπάρχουν" ακόμα
Κάλεσε άλφα