Κυριακή, 5 Ιουνίου 2016

Τελευταία Αναθεώρηση 27

Έκανα όλους τους δυνατούς ελέγχους, ο διερμηνευτής είναι μια χαρά!

1. Αφαίρεσα τον περιορισμό όπου ένα αντικείμενο Ομάδα δεν μπορούσε να είχε όνομα του τμήματος που το δημιούργησε. Παλαιότερα υπήρχε θέμα αλλά δεν υφίσταται πια.
2. Ξεκαθάρισα τις κλήσεις των συναρτήσεων και των τμημάτων (τρεις τρόποι).
στα τμήματα υπάρχει ο απλό τρόπος με το όνομα, μετά είναι με την Κάλεσε ή Call που δίνει αναδρομή, και ο άλλος λέγεται Κάλεσε Τοπικά όπου το όνομα του τμήματος αλλάζει στο όνομα του πατρικού, άρα μέσα στο τμήμα check3 τρέχουμε κώδικα σαν να είναι στο τμήμα που το καλεί (είναι σαν μια κλήση ρουτίνας αλλά εδώ γίνεται βάσει λίστας, πιο γρήγορα. Παραμένει  όμως η ρουτίνα ανώτερη για αναδρομή, επειδή δεν δημιουργεί αντικείμενο εκτέλεσης. Εδώ το τμήμα που καλούμε τοπικά δημιουργεί αντικείμενο εκτέλεσης. Όμως ειδικά στα τμήματα οι τυχόν στατικές δεν διατηρούνται με την κάλεσε (αν θέλουμε αυτή την λειτουργικότητα χρησιμοποιούμε συνάρτηση που το έχει)

\\ call module normal way
module check1 {
      print "ok"
}
check1
\\ call module with recursion
module check2 {
      read x
      if x>0 then call check2 x-1
      Print x,
}
check2 4
Print
\\ call module with local option
\\ now module see anythig
\\ but we need to read using new
module check3 {
      Read New M, b(), &k
      k++
      a(5)++
      Print ">>", b(5), a(5)
      z++
      check1
      check2 M
      Print
}
let m=1234, z=100, n=5
dim a(10)=2
call local check3 4, a(), &n
Print m,z, a(5), n
call local check3 4, a(), &n
Print m,z, a(5), n



Εδώ είναι το δοκίμιο για τις συναρτήσεις:

\\ call function normal way
function check1 {
      print "ok"
}
call check1()
\\ call function with recursion
function check2 {
      read x
      if x>0 then call check2(x-1)
      Print x,
}
call check2(4)
Print
\\ call function with local option
\\ now function see anythig
\\ but we need to read using new
function check3 {
      Read New M, b(), &k
      k++
      a(5)++
      Print ">>", b(5), a(5)
      z++
      call check1()
      call check2(M)
      Print
}
let m=1234, z=100, n=5
dim a(10)=2
call local check3( 4, a(), &n)
Print m,z, a(5), n
call local check3( 4, a(), &n)
Print m,z, a(5), n




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

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