Τετάρτη, 4 Νοεμβρίου 2015

Περί ομάδων στη Μ2000.

(να βάλετε την αναθεώρηση 80 γιατί η 79 και η 78 έχουν πρόβλημα που λύθηκε)

Αντιγράψτε το παρακάτω και βάλτε μετά από κάθε εκτύπωση (το ? είναι το Τυπωσε) μια εντολή Έξοδος για να βλέπεται προοδευτικά τα αποτελέσματα (σιγά σιγά βγάζουμε την έξοδο). Άλλος τρόπος είναι με την εντολή δοκιμή και να κάνουμε βηματική εκτέλεση.
Εδώ θα δούμε τι είναι μια ομάδα και τι σχέση έχει με την Κλάση. Η εντολή κλάση φτιάχνει μια συνάρτηση που δίνει ομάδα, είναι δηλαδή ένας κατασκευαστής. Αυτό που θα δούμε εδώ είναι τα δυο ήδη ομάδων, οι ομάδες με όνομα και εκείνες χωρίς. Ομάδες δίχως όνομα σημαίνει ότι έχουν μόνο θέση, και αυτή μπορεί να είναι σε στοιχείο πίνακα ή στο σωρό (στοίβα ειδικού τύπου στη Μ2000).
Επιπλέον θα δούμε το μηχανισμό με την τελεία (ντοτ). Επίσης θα δούμε την Για {} η οποία ξεχωρίζει από την Για Εως Ανά {} της επανάληψης γιατί εδώ δέχεται η την λέξη Αυτό ή στοιχεία πινάκων ενώ η επανάληψη Για δεν δέχεται στοιχείο πίνακα για μεταβλητή ελέγχου (που αυξάνεται ή μειώνεται στις επαναλήψεις).
Διαβάστε τις σημειώσεις στο κώδικα. Με αντιγραφή σε ένα τμήμα έστω α θα το δείτε χρωματισμένο κατάλληλα! (Το αγγλικό ερωτηματικό χρησιμοποιείται ως εντολή Τύπωσε, επίσης μπορούμε να βάζουμε τόνους στα ελληνικά, προαιρετικά (μόνο σε ετικέτες αν μπουν τόνοι πρέπει για να χρησιμοποιηθούν σε αλλαγή ροής, να γραφούν πάλι με τόνους μετά την εντολή Προς (Goto) ή την εντολή Διαμέσου (Gosub))

Συναρτηση Αλφα {
      ομάδα κλμ { χ, ψ
      Συνάρτηση Πρόσθεσε {
            =+
      }
      }
      για κλμ {
      Διάβασε,
      }
      =κλμ
}
Δ=Αλφα(10,20)


? Δ.Χ, Δ.Ψ, Δ.Πρόσθεσε()
Κλάση Αλφα1 {
      χ,ψ
      Τμήμα Αλφα1 {
            Διάβασε,
            }
      Συνάρτηση Πρόσθεσε {
            =+
      }      
}
Φ=Αλφα1(10,20)
? Φ.χ,Φ.ψ, Φ.Πρόσθεσε()
\\ μπορούμε να βάλουμε ομάδες σε πίνακες
\\ δηλαδή να έχουμε ομάδες χωρίς όνομα!
Πίνακας Α(10)
Α(2)=Φ
Για Φ {=0:=0}
Α(3)=Αλφα(5,6)
? Α(3).Πρόσθεσε()
Α(2).χ++
? Α(2).Πρόσθεσε()
Για Α(2) { Τύπωσε,, .Πρόσθεσε() }

\\ Μπορούμε να φτιάξουμε πίνακα με μια κλάση, ώστε οι συναρτήσεις να είναι κοινές (δεν σώνονται σε κάθε στοιχείο του πίνακα, όπως με την απλή μέθοδο, να βάζουμε μια οποιαδήποτε ομάδα σε στοιχείο πίνακα).
Πίνακας Β(20)=Αλφα1(100,0)
Για Β(4) {
\\ η ομάδα κλμ θα διαγραφεί μετά τη Για { }
ομάδα κλμ {χ=10,ψ=30, δ=10}
Αυτό=κλμ \\ τώρα βάζουμε την ομάδα σε αυτό...το Β(4)
}
? Β(4).Πρόσθεσε() \\ βγάζει το 40
? Β(4).δ \\ δίνει 10, τώρα μόνο το Β(4) έχει επιπλέον μια μεταβλητή, τη δ

Για Β(5) {
ομαδα κλμ {}
κλμ=Αυτό
? κλμ.χ \\ τυπώνει 100, τόσο είχαμε βάλει σε όλα τα στοιχεία του Β()
ομαδα κλμ { ψ=1000, δ=300}
Αυτό=κλμ ' ξανά σώνουμε το αλλαγμένο κλμ στο αυτό..το οποίο θα γυρίσει στο Β(5).
}
? Β(5).δ \\ και εδώ έχουμε μια νέα μεταβλητή

Για Β(6), Β(7) { \\ αν χρειαστεί να βάλουμε το Αυτό τότε πρέπει να είναι μόνο του στη Για
+=..χ
}
? Β(6).χ

Για Β(7) {
       Για Β(8) {
      +=..χ
      }
}
? Β(7).χ

\\ Μπορούμε να αλλάζουμε τον ορισμό μιας συναρτησης αλλά όχι σε πίνακες ομάδων με κοινές συναρτήσεις!
Για Α(2) {
? .Πρόσθεσε()
Ομάδα kkk {
      Συνάρτηση Πρόσθεσε {
      =1000++
      }
}
Αυτό=kkk
}
? Α(2).Πρόσθεσε()


\\ Εδώ ο Β() έχει κοινές συναρτήσεις για όλα τα στοιχεία.
Για Β(2) {
? .Πρόσθεσε()
Ομάδα kkk {
      Συνάρτηση Πρόσθεσε {
      =1000++
      }
}
Αυτό=kkk
? .Πρόσθεσε() \\ άλλαξε μεν αλλά προσωρινά
}
? Β(2).Πρόσθεσε() \\ δεν άλλαξε η συνάρτηση μετά τη για

Πίνακας Β(40) \\ αυξάνουμε κατά 20 τα στοχεία αλλά είναι άδεια!
Τύπωσε τύπος$(Β(30)) \\ τυπώνει Empty  - άδειο
Β(30)=Αλφα1(100,0)
Τύπωσε τύπος$(Β(30)) \\ τυπώνει Group  - Ομάδα, αλλά δεν μας λέει τι ομάδα!
\\ αν θέλουμε να έχουμε όνομα ομάδας μπορούμε να βάλουμε μια ιδιότητα όνομα$ και να γράφουμε το όνομα εκεί!

\\Μπορούμε να βάλουμε μια ομάδα στο σωρό και να το σηκώσουμε σε ένα στοιχείο πίνακα
\\ αυτό θα μπορούσε να γίνει μεταξύ δυο τμημάτων. Δηλαδή η διάβασε να διαβάζει το Δ που επιστρέφει ένα άλλο τμήμα.
Βάλε Δ
Διάβασε Β(27)
? Β(27).χ

Τμήμα Δείξε_μου {
      Διαβασε &ΔΔ
      ΔΔ.χ+=100
      ? ΔΔ.χ \\ τυπώνει το ΔΔ.χ
}
Δείξε_μου
Τύπωσε Δ.χ

\\ δεν μπορούμε να περάσουμε κάτι που δεν έχει όνομα με αναφορά!
\\ μπορούμε όμως να περάσουμε πρόσκαιρα το Αυτό!
Για Β(27) {
      Δείξε_μου &Αυτό
}
Τύπωσε Β(27).χ

\\Αναφορές χρησιμοποιούμε και εντός τμήματος
Για Β(27) {
  \\ Αυτό κάνει η Ένωσε   Βάλε &Αυτό : Διάβασε &κλμ  
      Ενωσε Αυτό στο κλμ
      \\ τώρα δώσαμε ένα όνομα
      κλμ.χ++
      ? κλμ.χ
      Αυτό.χ++ \\ το ίδιο όπως το κλμ.χ
      ? Αυτό.χ
      ++ \\ το ίδιο όπως το Αυτό.χ
      ?
}
? Β(27).χ
? Έγκυρο(κλμ.χ) \\ τυπώνει 0 γιατί δεν υπάρχει πια η κλμ, η Για σβήνει ότι νέο όνομα δημιουργούμε εντός..και δεν το κρύβουμε σε μια ομάδα...



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

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