Παρασκευή 17 Απριλίου 2020

Αναθεώρηση 19, Έκδοση 9.9

Έγιναν πολλές διορθώσεις και έλεγχος λειτουργίας των προγραμμάτων στο info.gsb που υπάρχει στο αρχείο εγκατάστασης.
Προστέθηκαν οι απλές συναρτήσεις, οι οποίες γράφονται σαν τις ρουτίνες στο τέλος ενός τμήματος ή μιας συνάρτησης (κανονικής). Οι απλές συναρτήσεις τρέχουν με το @ πριν το όνομα και βλέπουν ότι έχει ένα τμήμα ή μια συνάρτηση (κανονική και μη).

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

Συνάρτηση Αλφα(χ)
      =χ**2Τέλος Συνάρτησης

Οι απλές ρουτίνες δεν μπορούν να αλλάξουν ορισμό, Οι κανονικές λειτουργούν διαφορετικά, εκτελούμε την εντολή ορισμού τους για να πάρουν κώδικα, και μπορεί αυτό να ξαναγίνει για να αλλάξουμε κώδικα. Επίσης οι απλές ρουτίνες δεν μπορούν να περαστούν με αναφορά. Επίσης ο σωρός τιμών είναι ίιδιος με αυτόν που τις καλεί ενώ οι κανονικές συναρτήσεις έχουν αυτήν την ιδιότητα μόνο όταν τις καλούμε με την Κάλεσε σαν τμήματα. Οι απλές συναρτήσεις δεν μπορούν να κληθούν με την Κάλεσε. Επίσης οι απλές συναρτήσεις βλέπουν οτιδήποτε έχει ένα τμήμα ή συνάρτηση στην οποία την καλούμε. Για το λόφο αυτό πρέπει να φριάχνουμε τοπικές μεταβλητές και πίνακες με την Τοπική ή Τοπικές. Επίσης όπως οι κανονικές συναρτήσεις τα ονόματα τψν απλών συναρτήσεων μπορούν να έχουν το % για επιστροφή ακέραιαςτιμή και το $ για επιστροφή αλφαριθμητικού. Μπορούμε να επιστρέφουμε δυο ή περισσότερες τιμές αλλά η πρώτη τιμή θα πρέπει να είναι αριθμός ή αλφαριθμητικό όπως λέει το όνομα, αλλιώς μπορούμε να γυρίσουμε έναν αυτόματο πίνακα με παρενθέσεις. Έτσι το =1,2,3 δίνει ένα αυτόματο πίνακα όπως και το =(1,2,3) . Για μια τιμή μποορούμε να δώσουμε αυτό =(1,) για να πάρουμε αυτόματο πίνακα (tuple). Ενώ οι συναρτήσεις έχουν δικό τους σκοπό (όνομα χώρου), οι απλές συνατρτήσιες όπως και οι ρουτίνες λειτοργούν με το όνομα χώρου αυτού που τις καλεί, Για το λόγο αυτό δεν μπορούν να έχουν δικές τους στατικές (θα ανοίκουν στο τμήμα ή την συνάρτηση που τις καλεί)

Η Μ2000 έχει εκτός από τις απλές συναρτήσεις και τις κανονικές συναρτήσεις, τις λάμδα συναρτήσεις ως συνδυασμός μεταβλητής, συνάρτησης και κλεισιμάτων, καθώς και το αντικείμενο Γεγονός που έχει μια λίστα συναρτήσεων και με μια κλήση τις εκτελεί όλες με τις ίδιες απραμέτρους (ακόμα και με πέρασμα με αναφορά). Το αντικείμενο γεγονός επιδέχεται έλεγχο όπως κράτηση καθώς και προσθήκη και διαγραφή συναρτήσεων, μόνο κανονικέ όχι απλές συναρτήσεις. Στις κανονικές συναρτήσεις είναι και αυτές που είναι μέλη συναρτήσεων επώνυμων ομάδων (στατικών), και αυτό δίνει την δυνατότητα με την εκτέλεση του γεγονότος (τη κλήση του) να αλλάζουμε κατάσταση σε αντικείμενα. χωρίς να το "γνωρίζουν" αυτοί που το καλούν. Τα γεγονότα δηλαδή απομονώνουν αυτόν που καλεί από αυτό ή αυτά που καλεί και συνδέονται κατά την εκτέλεση. Ειδικά για τις ομάδες υπάρχουν και τα ελαφριά γεγονότα που τα διαχειρίζεται ο διερμηνευτής χωρίς χρήση αντικειμένου γεγονότων και συνδέονται με "στατικές" συναρτήσεις οι οποίες όιταν εκτελούνται έχουν το όνομα χώρου του τμήματος που ανήκει η ομάδα που ορίστηκε ΜεΓεγονότα (WithEvents). ολα αυτά περιγράφονται και το ελληνικό εγχειρίδιο που υπάρχει στην εγκατάσταση της γλώσσας.


Module Alfa {
      Print @alfa(100) ' 200
      Function alfa(x)
            =x*2
      End Function
}
Module Beta {
      static M=10
      Print @alfa(M), ' 20 18 16 14 12 10 8 6 4
      M--
      If M>1 then Call Beta Else Print
      Clear ' clear static
}
Alfa
Beta
Beta

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.