Παρασκευή 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

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

Revision 18, Version 9.9

This revision has a new manual in Greek language, a newer dat file for Help, plus some fixes. Also there are some new programs in info.gsb (a file with many modules - programs in M2000). One of them is the MAKEHELP which read Help2000.mdb and make the dat file. There are two manuals, one in English language M2000paper.pdf and the other in Greek language GreekManual.pdf. These manuals are not equivalent. The Greek one is bigger and have pictures and have all programs with identifiers from Greek vocabulary. Also there is a module in info, EXPORTHELPNEW which we can export the help file (~270 pages for Greek language and another ~270 pages for English language, about 574 topics each).
Now M2000language.exe, the installation file, is bigger (about 12.5MB).from the previous one (3.5MB).

After installation, tun the M2000.exe file and write these statements:
Dir appdir$
Load info
The info file load, run, display information and programming the function keys. A list of function keys displayed. F3 return to the first page.
Press F1 to save the info file to the user directory, and automatic the current directory return toy User.

You can open explorer the user directory with a simple statement:
Win Dir$
Statement Win (Windows means) is like the start of Windows. If we pass argument a file (with path) the file open in default application for its type.
For virtual keyboard give the statement: Keyboard !
you can change the size of displayed letters: Press F2 which open the info module and find the first FORM statement. You can erase the ! symbol which leave a bigger border (for save view from TV). Press Esc to exit from editor and press F3 to run it again. (also press F1 to save the changes toy User directory)

To open application directory use the statement Win appdir$
Symbol ? is the same as Print. so for calculations use ? 2+4, 5*3
The operators ** and ^ are for power. Use Help operators to see the embedded help
Use Help All to see all the topics in English, and use BΟΗΘΕΙΑ ΟΛΑ for the same in Greek language.

See the DEMO1 module, press F5 to run it (or type DEMO1 to run it), is GUI program with a rotated  3D wire object, which use threads, one for computing new position and another for displaying.

CS is an editor written in M2000 for C#, with syntax color and menu with compile and run command. (You can choose 3.5 or 4 Net, or any other).

Have fun

George Karras