Κυριακή, 11 Φεβρουαρίου 2018

Αναθεώρηση 45 (Έκδοση 9.0)


Εκτός από μερικά λάθη που διορθώθηκαν όπως το πέρασμα με αναφορά μιας λάμδα συνάρτησης που γυρίζει αλφαριθμητικό σε ρουτίνα, έγινε μια νέα προσθήκη:

Μπορούμε στα τμήματα και στις συναρτήσεις να βάζουμε κολλητά στα ονόματα την λίστα παραμέτρων (που είναι σε παρενθέσεις). Ουσιαστικά ότι βάζουμε εκεί θα γίνει μια Διάβασε και θα μπει σαν πρώτη γραμμή. Δείτε στο παράδειγμα στο τέλος την κανονική μορφή.
Ο Διερμηνευτής δεν ελέγχει τον αριθμό και τύπο παραμέτρων στην κλήση. Ο έλεγχος είναι θέμα αυτού που καλούμε να γίνει. Αν η Διάβασε έχει επιτυχία τότε προχωράει η εκτέλεση αλλιώς βγαίνει λάθος. Αυτό σημαίνει ότι μπορούμε να κάνουμε επιλογές βάσει αυτού που μας στέλνει η κλήση. Τα ορίσματα βρίσκονται στο σωρό τιμών και μπορούμε να τον επιθεωρήσουμε προγραμματιστικά. Πχ η συνάρτηση Ταύτιση("ΑΑ") γυρίζει -1 (Αληθές) αν στην κορυφή του σωρού υπάρχουν δυο αριθμοί. Δείτε το Βοήθεια Ταύτιση() για να δείτε όλα τα γράμματα που μπορούμε να χρησιμοποιήσουμε.
Στις συναρτήσεις βολεύει το κόλλημα, ενώ στα τμήματα δεν βολεύει γιατί υπάρχει αναζήτηση με τα F2 (πάνω) και F3 (κάτω) και όταν επιλέξουμε τμήμα θα επιλεγεί χωρίς παρένθεση, άρα θέλουμε με το πάνω να βρούμε τον ορισμό χωρίς παρένθεση. Στη συνάρτηση βολεύει να έχουμε παρένθεση γιατί συνήθως τις χρησιμοποιούμε με παρενθέσεις σε εκφράσεις ή στη Κάλεσε (καλείται σαν τμήμα). Υπάρχει μια διαμόρφωση της Κάλεσε που λέγεται Κάλεσε Συνάρτηση και ακολουθεί το όνομα χωρίς παρενθέσεις.

Συνάρτηση πέντε {
      Τύπωσε αριθμός*5, αριθμός*5
}
Κάλεσε Συνάρτηση Πέντε, 10,20

Στο προηγούμενο παράδειγμα περάσαμε δυο ορίσματα και στην συνάρτηση δεν τα διαβάσαμε σε μεταβλητές αλλά τα χρησιμοποιήσαμε άμεσα. Η αριθμός σηκώνει από το σωρό αριθμό ή αλλιώς βγάζει λάθος.
Προσθέστε αυτές τις γραμμές

Βάλε 20, 10
Κάλεσε Συνάρτηση Πέντε

Τώρα περνάμε στο σωρό τιμές και μετά καλούμε τη συνάρτηση. Στην ουσία με την Κάλεσε ο τρέχον σωρός γίνεται και σωρός της συνάρτησης, κάτι που ισχύει στα τμήματα αλλά όχι στις συναρτήσεις αν τις καλέσουμε μέσα σε εκφράσεις, όπως παρακάτω η Δύο(). Αν στην Δύο() βάλουμε δέκα ορίσματα ακόμα, πχ Τύπωσε Δύο(3,1,2,3,4,5,6,7,8,9,10) τα επιπλέον θα περάσουν μόνο στο σωρό της συνάρτησης, και στην επιστροφή θα χαθούν, επειδή θα διαγραφεί και ο σωρός της συνάρτησης.
Και οι ρουτίνες χρησιμοποιούν το σωρό του τμήματος ή της συνάρτησης όπου βρίσκονται. Οι ρουτίνες επιπλέον έχουν θέαση στις μεταβλητές εκεί που βρίσκονται. Σε αντίθεση τα τμήματα και οι συναρτήσεις βλέπουν τις δικές τους μεταβλητές και τις γενικές. Υπάρχει δυνατότητα να δώσουμε θέαση στα τμήματα και τις συναρτήσεις (το έχουμε δει σε άλλες αναρτήσεις, και θα το ξαναδούμε και σε νεότερες). Παράδειγμα με θέαση που δίνουμε σε συνάρτηση:


Κ=10
Συνάρτηση Κ(Χ) {
      Τύπωσε Κ*Χ
}
Κάλεσε Τοπικά Κ(3)



Δεν μπορούμε να χρησιμοποιήσουμε σε εκφράσεις συναρτήσεις που πρέπει να κληθούν "τοπικά". Έκφραση λέμε την μαθηματική παράσταση πχ Κ(Χ)*3, αυτή θα γύρναγε 0 (αφού λείπει το = για την επιστροφή) αλλά θα βγάλει λάθος γιατί το Κ είναι άγνωστο. Αν το ορίσουμε ως γενική τότε θα το βλέπει. Εδώ κάνουμε μάλιστα την επιστροφή να γυρίζει και όχι να τυπώνεται, και την Κ(3) την δίνουμε στην Τύπωσε. Οι γενικές στην Μ2000 έχουν περιορισμένη ζωή. Μόλις το τμήμα που την δημιούργησε τερματίσει τότε χάνεται. Αν ένα τμήμα που καλούμε θέλει να έχει δική του τοπική Χ ή γενική Χ τότε σκιάζεται η υπάρχουσα Χ. Για να εκχωρήσουμε τιμή στη γενική Χ χρειάζεται το <= ενώ το απλό = θα φτιάξει μια τοπική Χ. Με το τρόπο αυτό οι γενικές δεν μπερδεύονται με τις τοπικές. Μπορούμε να ελέγχουμε αν υπάρχει μια μεταβλητή με την Έγκυρο(Χ) που θα δώσει -1 αν η Χ είναι θεατή.


Γενική Κ=10
Συνάρτηση Κ(Χ) {
      =Κ*Χ
}
Τύπωσε Κ(3)


Το παράδειγμα για την αναθεώρηση 45:



\\ Νέο από την αναθεώρηση 45
\\ Μπορούμε να κολλάμε την παρένθεση με το όνομα
Τμήμα Ένα(Χ) {
      Τύπωσε Χ+1
}
\\ καλούμε χωρίς παρένθεση
Ένα 3
Συνάρτηση Δύο(Χ) {
      =Χ*20
}
\\ Καλούμε με παρένθεση
Τύπωσε Δύο(3)
\\ Η Κάνε φτιάχνει συναρτήσεις μιας γραμμής, ήθελε και στις παλαιότερες αναθεωρήσεις να έχει κολλητά τις παρενθέσεις
Κάνε Τρια(Χ)=3*Χ
Τύπωσε Τρια(10)

\\ Πριν την αναθεώρηση 45, ισχύει ακόμα:
Τμήμα Ένα (Χ) {
      Τύπωσε Χ+1
}
Ένα 3
Συνάρτηση Δύο (Χ) {
      =Χ*20
}
Τύπωσε Δύο(3)

\\ Στην πραγματικότητα ο διερμηνευτής παίρνει τις παραμέτρους και βάζει μια Διάβασε
\\ Μπορούμε να τα φτιάξουμε και έτσι:
Τμήμα Ένα {
      Διάβασε Χ
      Τύπωσε Χ+1
}
Ένα 3
Συνάρτηση Δύο {
      Διάβασε Χ
      =Χ*20
}
Τύπωσε Δύο(3)