Δευτέρα, 13 Φεβρουαρίου 2017

Αναθεώρηση 17 (Έκδοση 8.2)

1) Πρόσθεσα δυο διευκολύνσεις στο σχηματισμό πινάκων.
Μια είναι η προσωρινή επιλογή βάσης (1 ή 0) που δεν επηρεάζει την τέχουσα επιλογή. Στη Μ2000 οι πίνακες από την έκδοση 8.2 αναθεώρηση 15μπορούν να έχουν μια από τις δυο βάσεις, δηλαδή να ξεκινά η κάθε διάσταση από το 0 ή από το 1 (μέχρι δέκα διαστάσεις υποστηρίζει η γλώσσα).

Βάση 0 \\ εξ ορισμού είναι 0 - Προσοχή δεν δέχται έκφραση αλλά μόνο το 1 ή το 0
Πίνακας Βάση 1, Α(10), Β() \\ ******* Πίνακας Βάση 1, ... ή Πίνακας Βάση 0, ...νέο στη 16
Πίνακας Β(4,6) \\ θυμάται ότι έχουμε ορίσει βάση 1 για τον πίνακα Β()
Πίνακας Δέλτα(10) \\ αυτός έχει βάση 0
Τύπωσε Διάσταση(Δέλτα()) \\ 1
Τύπωσε Διάσταση(Β()) \\ 2  *******Νεο****** στη 16
Τύπωσε Διάσταση(Β(),0) \\ 1 μας δίνει την βάση
Τύπωσε Διάσταση(Β(), 1) \\ 4 αριθμός στοιχείων στην πρώτη διάσταση
Τύπωσε Διάσταση(Β(), 2) \\ 6 αριθμός στοιχείων στην δεύτερη διάσταση


Δουλεύει και με πίνακες σε ομάδες (Κλάση στη Μ2000 είναι συνάρτηση που γυρίζει ομάδα. Ένα τμήμα με το όνομα της κλάσης είναι ο κατασκευαστής - δεν είναι απαραίτητο να υπάρχει, αλλά μπορούμε να θέλουμε η Κλάση να έχει κατά τη δημιουργία κάποια ρύθμιση. Εδώ γεμίζουμε όλα τα στοιχεία από το 1 μέχρι το τελευταίο με αύξηση κατά 1. Βάζουμε μια τοπική λάμδα να δίνει σε κάθε στοιχείο του πίνακα το νέο αριθμό. Η Κ στη Λάμδα είναι ιδιωτική. Πρώτα φτιάχνεται το αντικείμενο Λάμδα και μετά καταχωρείται στην Ν.

Κλάση Αλφα {
      Πίνακας Βάση 1, Μ()
      Τμήμα Αλφα {
            Πόσα=100
            Διάβασε ? Πόσα
            Ν=Λάμδα Κ=1 ->{=Κ : Κ++}
            Πίνακας .Μ(Πόσα)<<Ν()
      }
}
Ν=Αλφα()
Τύπωσε Ν.Μ(100)=100 \\ -1
Πίνακας Ν.Μ(30) \\ μείωση
Τύπωσε Διάσταση(Ν.Μ(),1) \\ 30
Τύπωσε Διάσταση(Ν.Μ(),0) \\ 1, ξεκινάει από 1
Ν=Αλφα(300)
Τύπωσε Διάσταση(Ν.Μ(),1) \\ 300
Τύπωσε Διάσταση(Ν.Μ(),0) \\ 1, ξεκινάει από 1
Τύπωσε Ν.Μ(300) \\ 300



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

Ομάδα Κ {
Ιδιωτικό:
      Γεγονός Χ {Διάβασε Τ}
Δημόσιο:
      Τμήμα ΔεςΕδώ {
            \\ Διάβασε .Χ  - εδώ με μια γραμμή, χωρίς το Ν
            Διάβασε Ν
            <=Ν
      }
      Τμήμα ΚάνεΚάτι {
            Κάλεσε Γεγονός, Αριθμός \\ διαβάζει από το σωρό
      }
}
Γεγονός Μ {
      Διάβασε Τ
      Συνάρτηση {
            Τύπωσε Τ
      }
}
Κ.ΚάνεΚάτι 100 \\ δεν κάνει τίποτα γιατί το Χ δεν έχει συνδεθεί με μια συνάρτηση τουλάχιστον
Κ.ΔεςΕδώ Μ
Κ.ΚάνεΚάτι 100