Δευτέρα, 16 Οκτωβρίου 2017

Αναθεώρηση 40 (έκδοση 8.9)

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


Ομάδα Μετρητής {
Ιδιωτικό:
      μετρητής=1
Δημόσιο:
      Αξία {
            =.μετρητής
            .μετρητής++
      }
}
\\ λειτουργία ελέγχου λάθους σε παράσταση
Τύπωσε Έγκυρο(10/0) \\ 0 γιατί έχει λάθος
Τύπωσε Έγκυρο(10>500) \\ -1 γιατί δεν έχει λάθος
Τύπωσε Μετρητής, Μετρητής, Μετρητής
Τυπωσε Έγκυρο(Μετρητής) \\ δίνει -1 αλλά ο μετρητής άλλαξε
Τύπωσε Μετρητής, Μετρητής, Μετρητής
\\ λειτουργία ελέγχου ότι το αναγνωριστικό είναι θεατό ως μεταβλητή/πίνακας
Τυπωσε Έγκυρο(@Μετρητής) \\ δίνει -1 χωρίς να αλλάξει ο μετρητής
Τύπωσε Μετρητής, Μετρητής, Μετρητής

\\ τώρα ορίζουμε διάφορες μεταβλητές
σταθερή Μ=1000
Χ=10
Ζ$="αλφα"
Πίνακας Α(10)=1
Ν=(1,2,3,4,5)
Λ=Σωρός:=1,2,3,4,5
Ομάδα Αλφα { Χ=10, Υ=50, Α$="οκ"}
\\ όλα τα παρακάτω είναι έγκυρα
Τύπωσε Έγκυρο(@Χ), Έγκυρο(@Ζ$), Έγκυρο(@Α()), Έγκυρο(@Μ)
Τύπωσε Έγκυρο(@Ν), Έγκυρο(@Λ), Έγκυρο(@Αλφα.Χ), Έγκυρο(@Αλφα.Α$)

\\ Μπορούμε να δούμε το τύπο οποιουδήποτε με την Τυπος$()
\\ αλλά όχι το Α(), ενώ ναι το Α(0)
Τύπωσε Τυπος$(Ν), Τυπος$(Α(0)) \\ mArray  double
\\ Μπορούμε να φτιάξουμε μια συνάρτηση με ίδιο όνομα με έναν πίνακα:
Κάνε Α(Χ)=Χ**2
\\ με το @ λέμε στο διερμηνευτή ότι θέλουμε την συνάρτηση.
Τύπωσε Α(@10), Α(1) \\ 100   1
\\ Γενικά ο διερμηνευτής δίνει προτεραιότητα στους πίνακες.
\\ οπότε αν δώσουμε εδώ Α(100) επειδή υπάρχει πίνακας θα βγει λάθος!
\\ μπορούμε όμως να καλέσουμε την ρουτίνα με την εντολή Διαμέσου
Διαμέσου Α(100)
\\ Δηλαδή τώρα έχουμε τρια αναγνωριστικά Α() που ανήκουν σε διαφορετικές λίστες.

\ για τμήματα και συναρτήσεις χρησιμοποιούμε την Τμήμα()
Τύπωσε Τμήμα(Α()) \\ δίνει -1 γιατί υπάρχει συνάρτηση Α()

\\ Η τρίτη λειτουργία της Έγκυρο είναι με την προσθήκη της ως

Ομάδα Βήτα {
      Χ=10, Υ=50
}

Τύπωσε Έγκυρο(@ Αλφα ως Βήτα) \\ -1 γιατί η Αλφα έχει ότι η Βήτα (και παραπάνω)
Τύπωσε Έγκυρο(@ Βήτα ως Αλφα) \\ 0 γιατί η Αλφα έχει περισσότερα στοιχεία!

Τύπωσε Έγκυρο(@ Ν ως Α()) \\ δίνει 0 γιατί το Ν είναι δείκτης σε πίνακα, ενώ το Α()  είναι πίνακας!
Α=Α()
Τύπωσε Έγκυρο(@ Ν ως Α) \\ δίνει -1, και οι δύο είναι δείκτες σε πίνακες!
Στη Β()=Α \\ η Στη (LET) εκτελεί δυο εντολές: Βάλε Α : Διάβασε Β()
\\ η Β() έχει αντίγραφο των στοιχείων του Α, είναι άλλος πίνακας!
Τύπωσε Έγκυρο(@ Β() ως Α()) \\ -1 έγκυρο

\\ θα προσπαθήσουμε να το μπερδέψουμε!
\\ θα φτιάξουμε μια αναφορά του Ν ως πίνακας με παρενθέσεις:
Ένωσε Ν στο Ν() \\ είναι ίδιο με το Βάλε &Ν : Διάβασε &Ν()
Τύπωσε Έγκυρο(@Ν() ως Α()) \\ 0 δεν είναι
Τύπωσε Έγκυρο(@Ν() ως Α) \\ -1 είναι, αν και το Ν() φαίνεται απλός πίνακας είναι δείκτης σε πίνακα!
\\ όμως λειτουργεί με το  τρόπο που λειτουργούν οι κανονικοί πίνακες:
Τύπωσε Μήκος(Ν), Μήκος(Ν()), Μήκος(Α()) \\ 5   5  10
Τύπωσε Έγκυρο(@Ν() ως Α) \\ -1 είναι, αν και το Ν() φαίνεται απλός πίνακας είναι δείκτης σε πίνακα!
Ν=(10,20,30)
Τύπωσε Μήκος(Ν), Μήκος(Ν()), Μήκος(Α()) \\ 3   3  10
\\ όταν χρησιμοποιούμε πίνακα με παρενθέσεις αριστερά του ίσον παίρνουμε αντίγραφο πίνακα.
\\ η επιλογή του Ν() σαν πρόσθετο όνομα για το Ν έγινε για την διεπαφή.
\\ το Ν() έχει άλλη διεπαφή με τον διερμηνευτή και αυτό δεν το γνωρίζει το αντικείμενο, αλλά ο διερμηνευτής.
Ν()=Α()
Τύπωσε Μήκος(Ν), Μήκος(Ν()), Μήκος(Α()) \\ 10   10  10
Ν+=20 \\ οι δείκτες σε πίνακα έχουν τελεστές για όλα τα στοιχεία, με την μια!
Τύπωσε Ν(4), Α(4) \\ 21  4
ΝΝ=Ν \\ κρατάμε τον δείκτη
Ν=(1,2,3,4,5)
Τύπωσε Ν(4), Α(4) \\ 5  4
Ν=ΝΝ \\ παίρνουμε πίσω τον παλιό πίνακα
Τύπωσε Ν(4), Α(4) \\ 21  4
\\ η Τύπωσε μπορεί να τυπώνει όλα τα στοιχεία ενός αντικειμένου πίνακα (και κατάστασης και σωρού)
Τύπωσε Ν
Τύπωσε ΝΝ
Τύπωσε Ν()
Τύπωσε Α()
\\ το (1,2,3,4,5) δεν υπάρχει πια γιατί δεν υπάρχει κανείς δείκτης να το κρατήσει!

Ρουτίνα Α(Χ)
      Τύπωσε "Κλήση ρουτίνας "; Χ
Τέλος Ρουτίνας