Κυριακή 1 Νοεμβρίου 2015

Αναθεώρηση 78 (Βελτιστοποίηση Ταχύτητας)

Μερικές βελτιώσεις αλλά και διορθώσεις!
Βελτιώθηκε ο χρωματισμός του κώδικα, βελτίωσα και το bug που είχε στις γραμμές κειμένου εντός του κώδικα, όταν κάναμε αναδίπλωση κειμένου δεν έβγαινε το άσπρο χρώμα στη δεύτερη γραμμή αλλά ένα μπλε! (ένας δείκτης από -2 ήταν -1).
Μια σημαντική βελτίωση ήταν η αλλαγή μιας ρουτίνας που κοίταζε αν υπάρχουν κάποια σύμβολα (περίπου 550 φορές βρίσκεται στο κώδικα) και η οποία είχα την εντύπωση ότι ήταν γρηγορότερη από μια παλαιότερη, τελικά άλλαξα γνώμη και κέρδισε η γλώσσα σε ταχύτητα.
Στο πλαίσιο είναι οι παλιές τιμές. Βελτιώθηκε πάρα πολύ!


Βελτίωσα και την συνάρτηση Σύγκρινε(μεταβλητή, μεταβλητή). Η συνάρτηση δουλεύει όπως το διοό ίσον (με στρογγυλοποίηση και βάσει τάξης μεγέθους αριθμού) αλλά δίνει και ένα από τρία αποτελέσματα, 1 σημαίνει το αριστερό μεγαλύτερο, 0 ότι είναι ίσα, και -1 ότι το δεξί είναι μεγαλύτερο. Η σύγκρινε δουλεύει μόνο με μεταβλητές, όχι με εκφράσεις (όχι με αριθμητικές παραστάσεις). Μπορούμε να συγκρίνουμε μεταβλητή με στοιχείο πίνακα.

α=0.9 : β=0.9 : κ=1
ενώ α>-1.1 {
      α-=.1
      λ=β-κ*.1
      κ++
      τύπωσε α, λ, α=α, α=λ, α==λ, σύγκρινε(α, λ)=0
}

Διόρθωσα την ρουτίνα που ελέγχει τo Αν Τότε Αλλιώς.Αν ...Αλλιώς
Το παρακάτω δεν παίζει σε αναθεωρήσεις πριν την 78, γιατί έχει αλφαριθμητικά με αγκύλες και ενώ βρίσκει το "όλα καλά" δεν μπορεί να βρει πως θα ξεπεράσει τον τρίτο if (δεύτερο else.if). Διορθώθηκε και αυτό.
a$={ }
if a$="2" then {
            print 1234
} else.if a$={ } then {
            print "ολα καλά"
} else.if a$={111}+"alfa"+"beta"  then {
            Print "ok"
}
print "κάτι μας είπες"


Να και ένα μικρό προγραμματάκι για να αποθηκεύουμε καταγραφές (logging) στο φάκελο των προσωρινών αρχείων. Η Στη  είναι η LET της παλιάς BASIC. Απλά την έβαλα για ομορφιά! Ένας άλλος λόγος (που εδώ δεν υπάρχει τέτοιος) είναι ότι πρώτα εκτελεί το δεξί μέρος και μετά το αριστερό. Η Μ2000 μπορεί να ξεκινάει προγράμματα με τη δική της γραμμή εντολών για το σύστημα που λέγεται...Σύστημα! (Συσ είναι η συντόμευση, Win στα αγγλικά). Εξομοιώνει το Εκτέλεση των Xp. Έτσι αν δώσουμε μόνο το μονοπάτι με το όνομα αρχείου θα κληθεί το πρόγραμμα που εξ ορισμού ανοίγει το αρχείο.
Δείτε πώς περνάμε μεταβλητές στο κείμενο. Σε παλαιότερες εκδόσεις, έγραφε η Κείμενο μόνο Ascii αρχεία. Τώρα μπορεί να γράφει Utf-8 και Utf-16. Η Φόρτωσε.έγγραφο βρίσκει μόνη της τι είναι το κείμενο και το μετατρέπει εσωτερικά σε Utf-16. Τα προγράμματα της Μ2000 σώνονται σε Utf-8


Στη ένα_όνομα$="George", σούμα=1024
Κείμενο utf-8 ένα.txt { Πρώτη γραμμή
                  Όνομα="##ένα_όνομα$##"
                  Σούμα=##σούμα##
                  Τέταρτη γραμμή
                  }
\\ κάνω προσθήκη
Κείμενο utf-8 ένα.txt +{ Προσθήκη στο κείμενο
                  Άλλη γραμμή
                  }
\\ δημιουργώ μια μεταβλητή τύπου εγγράφου
\\ για να φορτώσω άμεσα το κείμενο
Έγγραφο το_έγγραφό_μου$
Φόρτωσε.Έγγραφο το_έγγραφό_μου$, προσωρινό$+"ένα.txt"
Τύπωσε "    ";  \\ αριστερή εσοχή
Αναφορά το_έγγραφό_μου$
Τύπωσε


Σύστημα προσωρινό$ \\ ανοίγει το %temp% φάκελο
Σύστημα προσωρινό$+"ένα.txt"  \\  ανοίγει το ένα.tct στο notepad

Και ένα μικρό πρόγραμμα που δείχνει πως η LET ή Στη πυ δείχνει πώς εκτελείται πρώτα το δεξί μέρος. Ο χαρακτήρας & χρησιμοποιείται για πέρασμα με αναφορά. Το πρώτο ν είναι το -1 αλλά και στην επιστροφή της η συνάρτηση θα έχει αλλάξει την ν σε 0 και θα μπει η τιμή στην Α(0).

συνάρτηση φ { Διάβασε : =μ*100 : μ++}
πίνακας Α(10)
ν=-1
ενώ ν<9 {
στη Α(ν)=φ(&ν)
}
για ν=0 έως 9 {τύπωσε Α(ν), ν}

Διορθώθηκε η επιστροφή αλφαριθμητικών πινάκων (δούλευε στους πραγματικούς, αλλά από αβλεψία δεν το έφτιαξα και για τα αλφαριθμητικά)
Μπορούμε να ορίζουμε μηδενικών στοιχείων πίνακες. Αν δεν δώσουμε τιμή για όλα τα στοιχεία τότε τα στοιχεία που δεν περισσεύουν στην νέα διάσταση παραμένουν στον πίνακα (διατηρούνταΙ με μια έννοια). Μπορούμε να αλλάξουμε και διαστάσεις.Π.χ. ένα πίνακα δυο διαστάσεων μπορούμε να τον γυρίσουμε σε μία και μετά πάλι σε δύο! Πίνακες μπορούμε να ορίσουμε σε ομάδες και μπορούμε να βάζουμε ομάδες σε Πίνακες! Έτσι ενώ δεν έχουμε "Ασύμμετρους" πίνακες, π.χ. να είναι δυο διαστάσεων αλλά στο στοιχείο 10 στη πρώτη διάσταση να έχουμε από 10,0 έως 10,10 ενώ στο 5 να έχουμε από 5, 0 έως 5, 5...μπορούμε να βάλουμε πίνακα σε μια ομάδα και την ομάδα να την αντιγράψουμε σε όλα τα στοιχεία (όπως δίνουμε μια τιμή για όλα τα στοιχεία). Μετά μπορούμε κατά βούληση να αλλάζουμε τα στοιχεία του πίνακα οποιασδήποτε ομάδας

Πίνακας α$(10)="οκ", β$()
Συνάρτηση Αλλαξέ_με$ { Διάβασε &κ$() : Πίνακας κ$(20)="yes": =κ$() }
β$()=Αλλαξέ_με$(&α$())
\\ και οι δυο πίνακες έχουν είκοσι στοιχεία από 1 έως 19, και όλα έχουν το "yes"
Τύπωσε β$(15)=α$(15)



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

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

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