Πέμπτη, 6 Ιουλίου 2017

Αναθεώρηση 8 (Έκδοση 8.9) Σταθερές στη Μ2000

1) Όταν φτιάχνουμε στατικές σε νήματα, και εμφανιστεί μια τοπική με ίδιο όνομα τότε στο νήμα που έχουμε με ίδιο όνομα στατική θα βγει λάθος
' υπάρχουν δυο σχέδια νημάτων, το Ταυτόχρονο και το Διαδοχικό
' Στο ταυτόχρονο γίνεται να εκτελούνται εντολές από κάθε νήμα,
' πριν το νήμα τερματίσει ένα κύκλο
' Κάθε νήμα εκτλείται κάθε κάποια χιλιοστά του δευτερολέπτου.
' ό,τι έχουμε εντός μπλοκ {} θα εκτελεστεί χωρίς να αφήσει άλλο νήμα να μπει ανάμεσα.
Σχέδιο.Νημάτων Ταυτόχρονο
μ=1
Νήμα {
      Στατική ι=500
      ι++
      Τύπωσε "alfa", ι
      Τύπωσε "beta", ι


} ως b κάθε 10
Νήμα {
      ι=1000
      μ++
      Τύπωσε "πριν το άλμα"
      Προς 300
      300 Τύπωσε "μετά το άλμα", μ, ι
} ως α κάθε 40
Κύριο.Έργο 10 {
      Αν Πατημένο(1) Τότε Έξοδος
}




thread.plan concurrent
m=1
Thread {
      static i=500
      i++
      Print "alfa", i
      Print "beta", i


} as b interval 10
Thread {
      i=1000
      m++
      Print "before jump"
      goto 300
      300 Print "after jump", m, i
} as a interval 40
Main.Task 10 {
      if keypress(1) then exit
}


2) Στο Επίλεξε Με / Τέλος Επιλογής, και σε μπλοκ εντολών σε αυτήν την εντολή μπορούμε   να αλλάξουμε σημείο εκτέλεσης με την Προς.
Επίσης βγαίνουν κατάλληλα μηνύματα λάθους που εξηγούν το οποιοδήποτε πρόβλημα στη σύνταξη της εντολής.

3) Διορθώθηκε η Γραφή$(-.6, 1033) ώστε να δινει το 0 στο .6 και έτσι θα δώσει το 0.6


4) Σε αυτήν την αναθεώρηση  πρόσθεσα Σταθερές στην γλώσσα.Δεν το είχα κάνει τόσο καιρό, γιατί η Μ2000 έχει μια ιδιότητα να σκιάζει μεταβλητές οπότε μπορούμε να σκιάσουμε μια σταθερά, άρα να μην έχουμε αποτέλεσμα. Όμως βρέθηκε μια λύση; Μπορούμε να δηλώνουμε τοπικές σταθερές με τιμή μια γενική σταθερή, απλά γράφοντας Σταθερή Α και ο διερμηνευτής αναζητεί την α ως γενική και αν την βρει παίρνει την τιμή της και φτιάχνει μια τοπική ως σταθερή. Έτσι δεν μπορούμε να αλλάξουμε την τιμή.

\\ Πρόγραμμα επίδειξης σταθερών
\\ Επιπλέον υπάρχουν πληροφορίες για το τρόπο κλήσης τμημάτων.
\\ σταθερές μπορούμε να έχουμε αριθμητικές (διπλός και ακέραιος πχ Α και Α%)
\\ αλλά και αλφαριθμητικές όπως Α$
\\ επειδή όλες οι παρακάτω γράφτηκαν σε ένα τμήμα
\\ θα διαγραφούν στο πέρας αυτού
\\ Έτσι σταθερή τιμή σημαίνει απλά ότι δεν δέχεται αλλαγή τιμής.
\\ εκτός και αν την σκιάσουμε
Σταθερές α1=101, α2=103, β$="Επίδειξη Σταθερών"
Γενική σταθερή α=123456
Για Αυτό {
      \\ εδώ έχουμε ένα μπλοκ εντολών με προσωρινούς ορισμούς
      \\ μετά από αυτήν την εντολή θα υπάρχουν δυο α2
      \\ αυτό λέγεται σκίαση μεταβλητής.
      \ ο ορισμός τοπικής υπερισχύει τρέχουσας τοπικής και γενινής.
      Τοπική α2=45678
      Τύπωσε α2
}
\\ Τώρα υπάρχει μόνο μια α2 μεταβλητή, η σταθερά.
Λίστα
μια_άλλη_κανονική=500
Τμήμα Κ {
      σταθερή α ' τώρα η α πήρε τιμή την τιμή της σταθερής α
      Τύπωσε α
      Δες {
            α=400 ' δεν θα γίνει, θα βγει λάθος
      }
      Τύπωσε α
}
\\ εδώ καλούμε την Κ
Κ


Τμήμα Μ () {
\\ το (&) θα μπορούσε να αφαιρεθεί
\\ και εδώ ακριβώς να μπει το Διάβασε &β
\\ αυτό κάνει ο διερμηνευτής όταν ετοιμάζει το τμήμα Μ
\\ στη λίστα Τμημάτων προς εκτέλεση
\\ (εδώ είναι απλά ο ορισμός στο κώδικα άλλου τμήματος)
      Τύπωσε β
      Δες {
            β=400
      }
      Τύπωσε β
}
\\ εδώ καλούμε την Μ με πέρασμα με αναφορά της α
Μ


Τμήμα Δ {
      \\ μπορούμε να φτιάχνουμε τοπικές σταθερές.
      σταθερή κ=30, β$="αυτό"
      ' μπορούμε να την τυπώσουμε στην οθόνη
      ' αλλά μπορούμε να την αλλάξουμε
      ' ουσιαστικά, αλλάζουμε μια τοπική α
      Τύπωσε α
      α=400
      Τύπωσε α
      \\ στη λίστα οι σταθερές μεταβλητές εμφαίζονται με τιμές σε [ ]
      Λίστα
}
\\ Καλούμε δυο φορές την Δ. Κάθε φορά η τοπική α χάνεται στο πέρας εκτέλεσης της Δ
\\ μπορεί να κληθεί και με την Κάλεσε και χωρίς.
\\ Υπάρχει διαφορά με τη χρήση της Κάλεσε, ως προς το πώς δίνει ονόματα εσωτερικά ο διερμηνευτής
\\ θα το δούμε με την λίστα (εμφανίζει τις μεταβλητές που εκείνη τη στιγμή υπάρχουν)
\\ (δεν είναι όλες θεατές από το τμήμα, η μια_άλλη_κανονική δεν είναι, ανοίκει στο γονικό τμήμα)
\\ Μέσα στο Δ δεν μπορούμε με την απλή κλήση να καλέσουμε τη Δ, ενώ με την Κάλεσε γίνεται.


Δ
Κάλεσε Δ


Και στα αγγλικά χωρίς σημειώσεις:
Const a1=101, a2=103, b$="Something constant"
Global Const a=123456
For This {
      Local a2=45678
      Print a2
}
Λίστα
another_normal_var=500
Module K {
      Const a
      Print a
      Try {
            a=400
      }
      Print a
}
K


Module M (&b) {
      Print b
      Try {
            b=400
      }
      Print b
}
M &a


Module D {
      Const K=30, b$="This"
      Print a
      a=400
      Print a
      List
}
D
Call D