Παρασκευή, 1 Δεκεμβρίου 2017

Αναθεώρηση 19 (Έκδοση 9.0) - Προσθήκες!

1) Στην Άλλαξε (Swap) τώρα ο διερμηνευτής δεν επιτρέπει να κάνουμε αλλαγή μεταβλητής με σταθερά.
2) Μπορούμε να ορίσουμε Τελικά τα Τμήματα/Συναρτήσεις/Τελεστές μιας ομάδας, ώστε να μην μπορούν να αλλαχτούν.
3) Μπορούμε να ορίσουμε τελικές μεταβλητές που θα πάρουν αργότερα μια τιμή αλλά όχι δεύτερη. Η αρχική τιμή είναι 0 ή αν διαβάσουμε το τύπο είναι Constant (Σταθερή). Υποστηρίζονται οι τύποι πραγματικός (double), ακέραιος (%), και αλφαριθμητικό ($)
4)Μπορούμε να ορίσουμε πίνακες (ονόματα με παρενθέσεις), ως τελικό, και μπορούμε να τον γεμίζουμε σταδιακά, πάλι όμως μια δεύτερη τιμή θα βγάλει λάθος! Οι πίνακες αυτοί αν αντιγραφούν σε άλλο πίνακα, δεν μεταφέρουν το χαρακτηριστικό"Τελικό". Όμως αν αντιγραφεί το αντικείμενο ομάδα, τότε θα έχουμε αντιγραφή με χαρακτηριστικό τελικό.
5) Μπορούμε να εισάγουμε τιμές σε αντικείμενα ομάδες που διαβάζουν τιμές (σαν μεταβλητές), με την Εισαγωγή.



Παραδείγματα

Group alfa {
      final kappa$, p=3.14
}
list
alfa.kappa$="hello"
Print alfa.kappa$, alfa.p
list
Try {
      alfa.kappa$="Bye"  ' can't assign second value
}
Try {
      alfa.p+=100 ' can't assign second value
}
list


Άλλο παράδειγμα:


Class alfa {
      final a(4)
      a(0)=1,2,3,4
}
Dim K(2)
K(1)=alfa()
Print K(1).a(2)
\\K(1).a(2)=100   ' error
m=K(1).a()
Print m
dim b()
a=K(1).a()
b()=a ' get a copy
b(1)+=100
Print b(1)
beta=alfa() \\ copy group to beta
Print beta.a()
\\beta.a(2)+=5  ' error



Αφαιρέστε το Final για να δείτε τι βγάζει το πρόγραμμα!


Group alfa {
      x=100
      Function final delta (x) {
            =x**2
      }
      module final kappa {
            Print .delta(.x)
      }
}

alfa.kappa
group alfa {
      Module kappa {
            Print "10000000", .x
      }
}

alfa.kappa
dim a(10)
a(3)=alfa
beta=a(3)
beta.kappa
a(3).kappa
? a(3).delta(4)

Module beta.kappa {
      Print "10000000", .x
}
Function beta.delta (z) {
      =z*100
}
beta.kappa
? beta.delta(4)


Παράδειγμα όπου διαβάζουμε ένα αντικείμενο στο οποίο έχουμε ορίσει να δίνει και να παίρνει τιμή.Όταν παίρνει τιμή έχουμε ορίσει να έχει και έναν δείκτη. Στην εντολή Input (Εισαγωγή) πληκτρολογούμε αυτό που θέλουμε και το διερμηνευτής το στέλνει στην m$ και τον δείκτη στην n.

Group alfa$ {
      m$="ok"
      n
      value {
            =.m$
      }
      set (.n) {
            read .m$
      }
      module ok {
            print "ok", .m$, .n
      }
}
Input alfa$(3)
Print alfa.n
alfa.ok
list