Δευτέρα, 20 Ιουνίου 2016

Μικρή αναθεώρηση 9 (Έκδοση 8.2) και παραδείγματα

1. Η αναθεώρηση 9 έλυσε ένα παλιό bug, όπου δεν άφηνε να αλλάξουμε απευθείας μια συνάρτηση ή ένα τμήμα μιας ομάδας. Η λύση μέχρι πριν την αλλαγή ήταν η συγχώνευση με μια νέα ομάδα με ίδια ονόματα στα τμήματα που θέλαμε να αλλάξουμε. Το παρακάτω παράδειγμα βγάζει λάθος στις παλαιότερες εκδόσεις.
Ομάδα Άλφα {
      Τμήμα Οκ {
            Τύπωσε "Οκ"
      }
}
Άλφα.Οκ
Τμήματα ? \\ εμφανίζει και το Άλφα.Οκ
Ομάδα Άλφα {
      Τμήμα Οκ {
            Τύπωσε "Εντάξει"
      }
}
Άλφα.Οκ
Τμήματα ? \\ εμφανίζει και το Άλφα.Οκ

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

Παρακάτω είναι ένα παράδειγμα που δείχνει την "Επίλυση Αριστερής Έκφρασης" που κάνει ο διερμηνευτής Μ2000 όταν σε μια κατάσταση που έχει ζεύγη κλειδιών και τιμών βάλουμε σε μια τιμή πίνακα. Κανονικά αλλαγές τιμών στην κατάσταση γίνεται με εντολή όταν πρόκειται για "όλη" την τιμή. Αλλά μια τιμή όπως ένας πίνακας έχει και επιμέρους τιμές. Στις επιμέρους τιμές δρα η επίλυση αριστερής έκφρασης.

(στο Α=12+3 το 12+3 είναι δεξιά έκφραση, ενώ στο Α(2*Χ)=10 το 2*Χ είναι αριστερή έκφραση. Η αριστερή έκφραση υπολογίζει το Που θα μπει κάτι, ενώ η δεξιά το Τι θα μπει)


Επιπλέον στο παράδειγμα φαίνεται και η χρήση του χειριστή << για τους πίνακες, όπου εκτελείται για κάθε στοιχείο η συνάρτηση Β() (η οποία είναι μια λάμδα συνάρτηση και έχει ένα αντίγραφο της από_που (εδώ υπάρχει διαφορά με την Python, οι non local μεταβλητές μένουν στην λάμδα, και δεν αλλάζουν τιμές έξω από αυτήν, αλλά στην εισαγωγή μπαίνουν ως αντίγραφο)

Αυτό είναι ένα παράδειγμα από το εγχειρίδιο

κατάσταση αλφα=1,2,3
\\ βοηθητική συνάρτηση για να παράγουμε πίνακες
\\ με τιμές που γεμίζουμε με μια εσωτερική λάμδα συνάρτηση
Α=Λάμδα ->{
      Διάβασε Πόσα, από_που
      Β=Λάμδα από_που ->{
         =από_που
        από_που++
      }
      Πίνακας αλφα(Πόσα)<<Β()
      =Αλφα()
}
\\ η Α() παίρνει τον αριθμό στοιχείων και το νούμερο που θα βάλει στο πρώτο
\\ δηλαδή  στο στοιχείο 0
Επιστροφή αλφα, 1:=Α(20,155), 2:=Α(20,100), 3:=Α(10,200)
Για ι=0 έως 19
      Τύπωσε αλφα(1)(ι),
Επόμενο ι
Τύπωσε
Για ι=0 έως 19
      Τύπωσε αλφα(2)(ι),
Επόμενο ι
Τύπωσε
Για ι=0 έως 9
      Τύπωσε αλφα(3)(ι),
Επόμενο ι
Τύπωσε
\\ επίλυση αριστερής έκφρασης
αλφα(1)(0)++
Τύπωσε αλφα(1)(0) \\ 156
Τύπωσε διάσταση(Αλφα(1)) \\ 1 είναι μονοδιάστατος ο πίνακας στο κλειδί 1
Τύπωσε διάσταση(Αλφα(1),1) \\ 20 έχει είκοσι στοιχεία στη διάσταση 1

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

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