Τρίτη 16 Φεβρουαρίου 2016

Εγχειρίδιο της Μ2000 - Τεύχος 7ο

4. Ροή Δεδομένων/Μηνυμάτων

Μέχρι τώρα έχει φανεί ότι δεδομένα μπορούν να γραφτούν προσωρινά σε μεταβλητές και η επεξεργασία τους δίνει τιμές που γράφονται σε άλλες μεταβλητές. Επίσης έχει φανεί ότι μπορούμε να ενώνουμε δυο ονόματα πινάκων με δυο τρόπους με την εντολή Ένωσε και το & κατά της Βάλε και Διάβασε. Όμως δεν εξηγήθηκε το κέρδος μας με αυτές τις ενέργειες "ένωσης". Σίγουρα το κέρδος έχει να κάνει με την χρήση τμημάτων (ας πούμε διαδικασίες) όπου τα μηνύματα μεταφέρονται σε φορείς που δέχονται αλλαγές, και στην επιστροφή μπορούν να αξιοποιηθούν.
Αυτοί οι φορείς μπορεί να είναι μεταβλητές, πίνακες, αντικείμενα...μέχρι ολόκληρα τμήματα με απ' όλα τα καλά!

Τα δεδομένα λέγονται και μηνύματα γιατί πέρα από την μορφή τους π.χ. αριθμός/γράμματα και την ποιότητά τους π.χ. θερμοκρασία ή Πόλη, έχουμε και το στοιχείο της εμφάνισης. Δηλαδή η εμφάνιση ενός αριθμού, ή ενός γράμματος (αλφαριθμητικού) έχει σχέση με το πότε εμφανίστηκε, μετά από τι και τι σηματοδοτεί από δω και πέρα! Άρα η έννοια του δεδομένου προγραμματιστικά ξεφεύγει από τη καταγραφή/επεξεργασία και πάει στον έλεγχο και στη λογική που θα ακολουθήσουμε κατόπιν.
Το μήνυμα είναι θέμα κατάστασης που διαμορφώνει την εξέλιξη ενός προγράμματος στην παρουσία ενός μηνύματος. Μια πληροφορία έχει αξία ως μήνυμα, μια ενότητα, και απαρτίζεται από τα δεδομένα. Αλλά και κάθε δεδομένο έχει τη δική του αξία ως μήνυμα επιμέρους. Όλες αυτές οι αξίες δίνουν την πληροφορία. Ανευ αξίας η πληροφορία είναι άχρηστη, είναι σκόρπια νούμερα. Ακόμα και σε μια άσκηση πρώτα έρχεται το δεδομένο "Άσκηση" και μετά τα επόμενα δεδομένα παίρνουν νόημα, μέχρι και το ζητούμενο!

Στο προγραμματισμό σκεφτόμαστε την σημαντικότητα της πληροφορίας, αναζητώντας την κατάλληλη κατάσταση που υποδηλώνει αυτή την πληροφορία, δηλαδή την παρουσία όλων των μηνυμάτων.
Σαν απλούστευση: Εισαγωγή αριθμού δεν νοείται αν δεν πατήσουμε το enter το μήνυμα της ολοκλήρωσης! Αν σκεφτόμαστε να φτιάξουμε μια ρουτίνα πληκτρολογίου πρέπει να συμπεριλάβουμε και το enter μέσα. Πότε το enter είναι αποδεκτό ως μήνυμα; Τι πρέπει να έχει συμπληρωθεί; Ο προγραμματισμός είναι μια πνευματική άσκηση χειρισμού καταστάσεων. Τα μηνύματα διέρχονται από καταστάσεις. Κάθε διεργασία αφήνει μια αλλαγή κατάστασης. Όλες οι αλλαγές εν τέλει μεταφράζονται σε τιμές μεταβλητών και σε "τρέχον" σημείο στο πρόγραμμα. Εδώ θα ασχοληθούμε με τις καταστάσεις σε σχέση με τις τιμές. Σε άλλο κεφάλαιο θα δούμε τι και πώς αλλάζουμε το τρέχον σημείο ή εντολή εκτέλεσης, τη ροή του προγράμματος.


4.1.1 Πέρασμα με Αναφορά

Όταν θέλουμε να αλλάξουμε κάτι π.χ. το Α εντός ενός τμήματος προφανώς το να βγάλουμε μια αναφορά στο Α στο ίδιο τμήμα δεν εξυπηρετεί. Αυτό που σίγουρα εξυπηρετεί είναι η αναφορά να ρέει στο τμήμα που θα καλέσουμε:

\\ Κυκλοφορία μηνυμάτων Ι
Τμήμα Αλφα {
      Διάβασε
      Α+=100
}
Στη Β=100, Γ=300
Αλφα
Τύπωσε Β \\ 200
Αλφα
Τύπωσε Γ \\ 400

Το 100 και το 300 το βλέπουμε σαν μήνυμα που στάλθηκε στο τμήμα Άλφα και άλλαξε! Μια μεταβλητή είναι ένα μοναδικό σύστημα με κατάσταση το περιεχόμενό της. Αυτό που δεν έχει και για το λόγο αυτό δεν το λέμε αντικείμενο είναι δικές τις μεθόδους και ιδιότητες που διαμορφώνουν ανάλογα το περιεχόμενό της (την κατάστασή της).

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

4.1.2 Πέρασμα Αντικειμένου (ομάδας) με αναφορά

Οτιδήποτε επώνυμο (εκτός από  τμήματα και ό,τι είναι ετικέτα όπως οι ρουτίνες) μπορεί να περάσει με αναφορά:
(για να τρέξει θέλει το τμήμα που θα το γράψουμε να μην λέγεται α...είναι μια παραξενιά του διερμηνευτή) Τρέχει κανονικά στις νεότερες εκδόσεις, επίσης οι στατικές σε κλήσεις μεταξύ τμημάτων και συναρτήσεων μπορούν να περαστούν με αναφορά (όχι σε κλήσεις ρουτινών). Οι στατικές δεν μπορούν να έχουν ίδιο όνομα με τοπικές. Το πέρασμα με αναφορά σε στατική γίνεται με copy in copy out μέσω μιας τοπικής που φτιάχνεται για το σκοπό αυτό αυτόματα.
ομάδα α {
      χ=10, ψ=30
      συνάρτηση χψ { =*}
}
Τμήμα Άλφα {
      Διάβασε
      Για β {
            ++
            Τύπωσε .χ,, .χψ() \\ 11  30  330
      }
}


Άλφα
Τύπωσε α.χ \\ 11

Δείτε όμως και αυτό, το τμήμα Άλφα ανήκει στο αντικείμενο και μέσα σε αυτό έρχονται σε επαφή και επεξεργασία μεταβλητές όπου και στο α έχω αλλαγές και στο β:
ομάδα α {
      χ=10, ψ=30
      συνάρτηση χψ { =*}
      Τμήμα Άλφα {
      Διάβασε
      Για Αυτό {
            Για β {
                  ..χ++
                  Τύπωσε ., ..ψ, ..χψ() \\ 11  30  330
                  <=..χ
            }
      }
}
}
β=α
\\ μηδενίζω τα χ και ψ με ορισμό!
ομάδα β {χ=0, ψ=0}
β.Άλφα
Τύπωσε α.χ \\ 11
Τύπωσε  β.χ, β.ψ \\ 11     0


4.1.3. Πέρασμα Ανώνυμης Ομάδας με Αναφορά

Δεν διαφέρει, απλά εδώ χρησιμοποιούμε μια Για  {}  για να κάνουμε πρόσκαιρα την ομάδα επώνυμη, και επειδή δεν γνωρίζουμε το όνομα περνάμε το Αυτο με &Αυτο που είναι αναφορά στην επώνυμη.

Κλάση α1 {
      χ=10, ψ=30
      συνάρτηση χψ { =*}
}
Τμήμα Άλφα {
      Διάβασε
      Για β {
            ++
            Τύπωσε .χ,, .χψ() \\ 11  30  330
      }
}
Πίνακας Α(10)=α1()
Για Α(0) {
      Άλφα &Αυτό
}
Τύπωσε Α(0).χ \\ 11


ή με κλήση μιας Άλφα μέσα στην ομάδα:

Κλάση α1 {
      χ=10, ψ=30
      συνάρτηση χψ { =*}
      Τμήμα Άλφα {
            Διάβασε
            Για β {
                  ++
                  Τύπωσε .χ,, .χψ() \\ 11  30  330
            }
      }
}
Πίνακας Α(10)=α1()
Για Α(0) {
      .Άλφα &Αυτό
}
Τύπωσε Α(0).χ \\ 11


4.2 Πέρασμα με τιμή

Στο προηγούμενο παράδειγμα είδαμε το πέρασμα τιμής με αναφορά. Το ίδιο πρόγραμμα μπορεί να γραφτεί χωρίς αναφορά:

\\ Κυκλοφορία μηνυμάτων II
Συνάρτηση Αλφα {
      Διάβασε Α
      =Α+100
}
Στη Β=100, Γ=300
Β=Αλφα(Β)
Τύπωσε Β \\ 200
Γ=Αλφα(Γ)
Τύπωσε Γ \\ 400

 Εδώ αντί για τμήμα χρησιμοποιούμε συνάρτηση. Με το τρόπο αυτό θέλουμε να πάρουμε το αποτέλεσμα για κάθε παράμετρο. Θα μπορούσα να βάλω στο Β την τιμή Άλφα(Β**2) δηλαδή να βάλω στην εισαγωγή της Αλφα() μια παράσταση που θα περιέχει το Β.
Αυτό που θα γίνει είναι να περάσει στο σωρό τιμών το αποτέλεσμα της παράστασης και η διάβασε να το αντιγράψει στην Α, στο κώδικα της Άλφα()

4.2.1 Πέρασμα με τιμή Πινάκων

Εδώ θέλουμε να συμπληρώσουμε έναν μονοδιάστατο πίνακα με τα στοιχεία ενός επίσης μονοδιάστατου:

Συνάρτηση συμπλήρωση_πίνακα {
      Διάβασε Α(),Β()
      Αν διάσταση(Α())<>1 ή διάσταση(Β())<>1 τότε Λάθος "Για μονοδιάστατους μόνο"
      α1=διάσταση(Α(),1)
      α2=διάσταση(Β(),1)
      Πίνακας Α(α1+α2) \\ νέο μέγεθος
      Στοκ Β(0) για α2, Α(α1)
      =Α()
}
Πίνακας Α(10)=1, Β(4)
Β(0)=10,20,30,40
Α()=συμπλήρωση_πίνακα(Α(),Β())
Τύπωσε Α(9),Α(10),Α(11)

 
δίνει 1 10 20
Στην έκδοση 9.0 υπάρχει έτοιμη εντολή: Α()=Ένωση(Α(),Β())

 
Η εντολή Στοκ κάνει αντιγραφές από πίνακα σε άλλο ή ίδιο πίνακα γρήγορα, το για δηλώνει τον αριθμό των στοιχείων που θα αντιγραφούν. Κανονικά όταν δίνουμε τιμές για δείκτες η Μ2000 ελέγχει αν είναι εντός ορίων πάντα! Με την εντολή Στοκ ο έλεγχος γίνεται μόνο στην αρχή και μετά γίνονται γρήγορα οι αντιγραφές

Εδώ αυτή την εντολή μπορούμε να την αλλάξουμε έτσι:
      για ι=0 έως α2-1 {
            Α(α1+ι)=Β(ι)
      }
Η εντολή Στοκ δουλεύει και για πολυδιάστατους πίνακες. Εσωτερικά όλοι οι πίνακες είναι μονοδιάστατοι!

4.3 Πέρασμα με Ισχνή Αναφορά

Μια ισχνή αναφορά είναι η αναφορά που δεν έχει ολοκληρωθεί, δεν έχει γίνει ένωση δυο ονομάτων.
Κάθε ένωση δυο ονομάτων είναι στην ουσία μια ένωση μιας ισχνής αναφοράς και ενός νέου ονόματος. Η Μ2000 σε κάποιες περιπτώσεις και με ειδικές εντολές δέχεται να αλλάξει αναφορά σε μια αναφορά. Κανονικά δεν αλλάζουν οι αναφορές. Επειδή όμως τα τμήματα/συναρτήσεις διαγράφουν τις μεταβλητές τους, κάθε φορά που τα εκτελούμε και τους δίνουμε ισχνές αναφορές είναι και η πρώτη φορά για την απόδοση ισχνής αναφοράς σε όνομα στο τμήμα!

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

Α=10
\\ εμφανίζει την ισχνή αναφορά της Α και τον τύπο της
Τύπωσε, Τύπος$(Α)
Ένωσε Α στη Β
Α++
Τύπωσε Β
\\ η Β έχει διαφορετική ισχνή αναφορά
\\ αλλά είναι μια αναφορά της Α
\\ και οι δυο βλέπουν την ίδια τιμή
Τύπωσε
Τύπωσε Τύπος$(Β)


Τμημα ΔεςΕδω {
      Διάβασε
      Β++
      Τύπωσε Β
      \\ η ισχνή αναφορά αυτής της Β διαφέρει
      Τύπωσε
      Τύπωσε Τύπος$(Β)
}

ΔεςΕδω
Α$=Ισχνή$(Α) \\ μπορώ πρόσκαιρα να κρατήσω την αναφορά
\\ και να την δώσω στην ΔεςΕδώ
ΔεςΕδω Α$

Τμήμα ΔεςΚαιΕδώ {
      Διάβασε Α$
      Ένωσε Ισχνη Α$ στο Β
      Β++
      Τύπωσε Β
      \\ η ισχνή αναφορά αυτής της Β διαφέρει
      Τύπωσε
      Τύπωσε Τύπος$(Β)
}

ΔεςΚαιΕδώ Α$
Τμήμα ΔεςΑκόμαΚαιΕδώ {
      Διάβασε Α$
      Α$.++ \\ μπορώ απευθείας σε δείκτη να κάνω εργασίες
      \\ αλλά διαβάζω μόνο με την Έκφρ() και την Έκφρ$()
      \\ αν ο δείκτης έδειχνε σε αλφαριθμητικό τότε
      \\ η εκφρ$(Α$) θα έδειχνε τον δείκτη
      \\ η εκφρ$(Α$.) θα έδειχνε αυτό που δείχνει ο δείκτης
      Τύπωσε Έκφρ(Α$)
      Τύπωσε Α$
      \\ Δεν μπορώ να δω τον τύπο που δείχνει η Α$
      \\ αν δεν τη ενώσω με πραγματική μεταβλητή
}

ΔεςΑκόμαΚαιΕδώ Α$

 

Κανονικά δεν μπορούμε να βγάλουμε μια αναφορά σε θέση πίνακα. Δηλαδή το Βάλε &Α(2) δεν περνάει! Αντίθετα περνάει το Βάλε Ισχνή$((Α(2)) αλλά δεν μπορεί κανείς να το συνδέσει με κάτι, απλά θα πρέπει να το χρησιμοποιήσει ως δείκτη!
Εδώ περνάμε στο ίδιο τμήμα στοιχείο πίνακα ή μια μεταβλητή!

Πίνακας Α(20)=10
Τμήμα ΈναΣτοιχείο {
      Διάβασε Α$
      \\ χρησιμοποιούμε το τρόπο του δείκτη (πρέπει να υπάρχει το $. )
      Α$.++
      \\ στην Εκφρ() δεν χρειάζεται η τελεία
      \\ για αλφαριθμητικά όμως στην Εκφρ$() χρειάζεται
      Τύπωσε Εκφρ(Α$)
}
\\ Παιρνάμε μόνο στο στοιχείο
ΈναΣτοιχείο Ισχνη$(Α(2))
Τύπωσε Α(2) \\ 11


Α=100
ΈναΣτοιχείο Ισχνή$(Α)
Τύπωσε Α \\101


4.3.2 Πέρασμα Ανώνυμης Ομάδας με Ισχνή Αναφορά

Εδώ δείτε τι λάθος μπορεί να προκύψει: Να ανοίξουμε μια ομάδα δυο φορές σε μια κλήση και στη δεύτερη να κάνουμε αλλαγή και στο κλείσιμο θα αποθηκευτεί σωστά, αλλά στο δεύτερο κλείσιμο θα πάρει τις τιμές εκείνου του επώνυμου (αλλά όχι γνωστού) που χρησιμοποιήθηκε για να γίνει η πρώτη κλήση!
Για το λόγο αυτό καλούμε την Άλφα του Α(1).

Κλάση
α1 {
      χ=10, ψ=30
      συνάρτηση χψ { =*}
      Τμήμα Άλφα {
            Διάβασε β$
            Για β$ {
                  ++
                  Τύπωσε .χ,, .χψ() \\ 11  30  330
            }
      }
}
Πίνακας Α(10)=α1()
\\ αν δώσουμε το Α(0).Άλφα ισχνή$(Α(0))
\\ η αλλαγή στο Α(0) εντός του  Άλφα θα χαθεί
\\ Γιατί ανοίγουμε δυο φορές την ανώνυμη ομάδα
\\ μία που αλλάζει και μια που είχε ανοίξει πριν την αλλαγή με άλλο όνομα!
Α(1).Άλφα ισχνή$(Α(0))
Τύπωσε Α(0).χ \\ 11

Δεν θα έχουμε πρόβλημα αν αποφύγουμε το διπλό άνοιγμα με την χρήση του Αυτό, και πάλι εσωτερικά της Άλφα στο Α(0).Άλφα δεν χρησιμοποιούμε αναφορά αλλά δείκτη:
Για Α(0) {
      .Άλφα &Αυτό
}


(στο επόμενο τεύχος θα δούμε πως περνάμε ολόκληρο τμήμα σε ένα τμήμα ή συνάρτηση, μαζί με μεταβλητές/συναρτήσεις/τμήματα χωρίς να είναι αντικείμενο, δηλαδή το Α καλεί το Β και το Β καλεί το Α κάποιες φορές πριν επιστρέψει τη ροή στο Α, μεταφέροντας από και προς το Α στοιχεία. Θα το δούμε και με αντικείμενο φυσικά)

4.3.3 Αντικείμενο Γεγονός

Ένας άλλος τρόπος επικοινωνίας είναι μέσω κλήσεων έμμεσων με αντικείμενο τύπου Γεγονός. Αυτό το αντικείμενο μπορεί να συμπεριλάβει έναν αριθμό συναρτήσεων που θα τις καλέσει και θα περάσει ότι θέλουμε αλλά σε όλες το ίδιο, βάσει μιας λίστας παραμέτρων, την στιγμή που θέλουμε. Έχουμε δηλαδή την δυνατότητα από ένα σημείο να στείλουμε σε παραλήπτες έναν ή περισσότερους, χωρίς να γνωρίζουμε εκ των προτέρων ποιος θα είναι ο παραλήπτης, γιατί η λίστα ενημερώνεται σε άλλο στάδιο πιο πριν. Επίσης τα αντικείμενα αυτά έχουν την δυνατότητα εκτός από το να εγγράφουν "συνδρομητές", τις συναρτήσεις χειρισμού γεγονότος, οι οποίες μπορεί να γραφτούν οποτεδήποτε, ακόμα και διπλή φορά, να διαγράφουν κιόλας, πάλι οποτεδήποτε.΄Τέλος μπορούμε να κάνουμε ανενεργό κάποιο αντικείμενο, με την έννοια ότι να μην ανταποκρίνεται, να πετάει τις παραμέτρους, μέχρι να πάρει πάλι σήμα ότι ενεργοποιήθηκε. 

Τα γεγονότα μπορούν να είναι μέσα σε ομάδες ή ξεχωριστά, Μπορούμε να έχουμε και γενικά γεγονότα. Για να δημιουργήσουμε και να χρησιμοποιήσουμε ένα γεγονός χρειάζεται:
  • Μια δήλωση με όνομα και μπλοκ που μπορεί να περιέχει διάφορες Διάβασε με ότι θέλουμε να διαβάζει ως παραμέτρους, και μπορούμε να προσθέσουμε και μια ή περισσότερες ανώνυμες συναρτήσεις.
  • Μια συνάρτηση (αν δεν έχουμε ήδη δηλώσει μια ανώνυμη εσωτερικά) που θα είναι σαν αριθμητική αλλά χωρίς να μας ενδιαφέρει η επιστροφή (δεν βάζουμε καθόλου ίσον)
  • Μια δήλωση ότι το γεγονός  θα πάρει μια νέα συνάρτηση όπως αυτή που δείχνουμε. Είναι νέα γιατί ακόμα και αν το τμήμα που την έφτιαξε τερματίσει αυτή θα λειτουργεί. Δεν κρατάει όμως και τις τιμές έξω από αυτήν, οπότε όποια αναφορά προς τα έξω (από το σώμα της συνάρτησης) πρέπει να γίνεται για υπάρχουσες μεταβλητές.
  • Κάθε φορά που θέλουμε να "σηκώσουμε" ένα γεγονός, να το καλέσουμε δηλαδή, πρέπει να γράψουμε Κάλεσε Γεγονός όνομα και μετά να βάλουμε τυχόν παραμέτρους. Αν υπάρχουν ήδη στο σωρό οι παράμετροι τότε δεν βάζουμε καθόλου μετά το όνομα, με την κλήση θα σηκωθούν από τον σωρό τα αναγκαία (αν δεν υπάρχουν θα έχουμε μήνυμα λάθους)

Παράδειγμα


Γενικό Γεγονός Αλφα {
Διάβασε μήνυμα$, &δώσε_πίσω
}


Ομάδα Δημοσίευση {
Ιδιωτικό:
      κάτι
Δημόσιο:
      Τμήμα ΕδώΚαιΤώρα {
         \\ η κάτι είναι ιδιωτική, και ...
         \\ δεν μπορεί να περάσει με αναφορά.
         \\ οπότε έχω μια άλλη την Α
         Α=.κάτι
         Διάβασε Τι$
         Κάλεσε Γεγονός Άλφα Τι$,
         Τύπωσε "[Δημοσίευση] επιστροφή="; Α
         \\ οι μεταβλητές ομάδας αλλάζουν με <= τιμή
         \\ όχι τα στοιχεία πίνακα π.χ.    .Α(0)=10
         .κάτι<=Α
      }      
      Συνάρτηση ΠάρεΚάτι {
            =.Κάτι
      }
}


Ομάδα Απάντηση {
      ΑΑ=0
            Συνάρτηση ΝάΤην {
                  διάβασε μηνυμα$, &στάμπα
                  .ΑΑ++
                  στάμπα=.ΑΑ
                  Τύπωσε "[Απάντηση] Α/Α#";.ΑΑ
                  Τύπωσε "[Εισερχόμενο] ";μηνυμα$
            }
}


Γεγονός Άλφα νέο Απάντηση.ΝάΤην()
Τμήμα ΈναΣτάδιοΚάτω {
      Διάβασε Δείκτης$
      Για Δείκτης$ {
            .ΕδώΚαιΤώρα "Όλα Καλά"
            Τύπωσε "[Ενημέρωση στο ΈναΣτάδιοΚάτω] Επιστροφή="; .ΠάρεΚάτι()
            .ΕδώΚαιΤώρα "Κάτι Ακόμα"
            Τύπωσε "[Ενημέρωση στο ΈναΣτάδιοΚάτω] Επιστροφή="; .ΠάρεΚάτι()
      }
}
ΈναΣτάδιοΚάτω &Δημοσίευση


Παραλλαγή στο παραπάνω είναι στο Δημοσίευση.ΕδώΚαιΤώρα να ορίσουμε την Α ως αναφορά της ιδιωτικής .κάτι οπότε η αλλαγή θα γίνει αυτόματα, (δεν χρειάζεται η .κάτι<=Α)
Ένωσε .κάτι στο Α

4.3.4 Χειρισμός Αντικείμενου Γεγονός

Ένα γεγονός είναι αντικείμενο που μπορεί να μπει στο σωρό και το βλέπουμε με Ταύτιση("Ε") (Ε ελληνική ή E αγγλικό).

Γενικό Γεγονός Άλφα { }
Γεγονός Αλφα {
      Διάβασε μήνυμα$
      Διάβασε &δώσε_πίσω
      Συνάρτηση {
             \\ μπορώ και να σπάσω τις Διάβασε σε σειρά
             \\ και εδώ πρέπει να τις αφήσω εκτός
             \\ από αυτή τη συνάρτηση
             \\ γιατί θα βάλει μία ο διερμηνευτής
            Τύπωσε μήνυμα$
      }
}


Παρακάτω φαίνονται διάφορες παραλλαγές της Γεγονός, για τον έλεγχο ενός αντικειμένου Γεγονός (τα [ ] δεν τα βάζουμε εδώ δηλώνουν ότι μπορούμε να δώσουμε λίστα συναρτήσεων)
Γεγονός Άλφα Κράτησε
Γεγονός Άλφα Καθαρό \\ (κάνει και κράτηση συνάμα)
Γεγονός Άλφα Άφησε
Γεγονός Άλφα Πέτα αααα() [, ββββ()]
Γεγονός Άλφα Νέο αααα() [, ββββ()]



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

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

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