Τελικα, τα κατάφερα να κλέψω λίγο χρόνο και να γράψω...
Σχετικά με την εντολή DEF (DEFine) που μου ζήτησε ο Shock, και συγκεκριμένα με την FN (FunctioN):
Πρόκειται γιά μία από τις πλέον χρήσιμες εντολές, η οποία μας παρέχει την δυνατότητα να κάνουμε υπολογισμούς, ορίζοντας μία μαθηματική συνάρτηση, σαν αυτές που μαθαίναμε στο σχολείο. Ουσιαστικά, πρόκειται για τον καθορισμό -από εμάς- ενός μαθηματικού τύπου, ο οποίος εκτελεί τις πράξεις που του έχουμε ορίσει, με τις τιμές που του παρέχουμε στις μεταβλητές που θα έχουμε τοποθετήσει μέσα του.
Το καλό με τις FN, είναι πως η ισχύς τους είναι "οικουμενική" και όχι "τοπική"! Η βασική φόρμα τους (ο μαθηματικός τύπος) αναγνωρίζεται οπουδήποτε και αν βρίσκονται μέσα στο πρόγραμμα, και όχι μόνο εντός μίας υπορουτίνας. Μπορούμε λοιπόν να τις καθορίσουμε στην αρχή ενός προγράμματος, και να τις καλούμε κατόπιν μέσα σε οποιαδήποτε υπορουτίνα. Εκεί, ο μαθηματικός τύπος τους θα παίρνει τις "τοπικές" μεταβλητές που θα έχουμε καθορίσει μέσα στην συγκεκριμένη υπορουτίνα και θα εκτελεί τις πράξεις με αυτές τις μεταβλητές (σε μία άλλη υπορουτίνα, θα παίρνει τις "δικές" της μεταβλητές, κ.ο.κ.). Ουσιαστικα, μπορούμε να κατασκευάζουμε κι εμείς δικές μας "εντολές" μέσα στο πρόγραμμα.
Μάλιστα, η Locomotive Basic έχει ήδη ενσωματωμένες κάποιες συναρτησεις, όπως για τον υπολογισμό ημιτόνου, συνημιτόνου, εφαπτομένης, συνεφαπτομένης και υπολογισμού λογαρίθμων, τις οποίες καλούμε με τα ονόματά τους (χωρίς να βλέπουμε, βέβαια, τον μαθηματικό τύπο που κάνει την αντίστοιχη πράξη).
Παραθέτω δύο παραδείγματα καθορισμού (DEF) συναρτήσεων (FN) που σκέφθηκα πρόχειρα, με δύο μικρές ρουτίνες:
1ο παράδειγμα:
10 CLS20 DEF FNzoro1=((a+b)*(b-a))
30 FOR a=1 TO 3
40 FOR b=1 TO 5 STEP 2
50 PRINT FNzoro1;"=";a+b;"*";b-a;"(a=";a;"b=";b;")"
60 NEXT b
70 NEXT a
Εδώ, η συνάρτηση με το όνομα "zoro1" (FNzoro1), εκτελεί τον μαθηματικό τύπο του πολλαπλασιασμού των δύο προσθαφαιρέσεων μεταξύ των μεταβλητών a και b, παίρνοντας αντίστοιχα τις τιμές τους από τους βρόγχους (FOR-NEXT)των γραμμών 30-70 και 40-60.
2ο παράδειγμα:
10 CLS
20 DEF FNzoro2=(10*x)
30 DEF FNzoro3=(FNzoro2-x)
40 FOR x=1 TO 5
50 PRINT FNzoro2;"and";FNzoro3
60 NEXT x
Με αυτό το παράδειγμα, ήθελα να δείξω πως μπορούμε να τοποθετήσουμε μία συνάρτηση (FNzoro2) μέσα στον μαθηματικό τύπο μίας άλλης συνάρτησης (της FNzoro3).
Τα παραδείγματα είναι απλά, αλλά μπορείτε να φαντασθείτε τις δυνατότητες που μας δίνει ο καθορισμός συναρτήσεων σε πιό "εξελιγμένο" επίπεδο προγραμματισμού.
Επίσης, με την DEF μπορούμε να καθορίσουμε και άλλα είδη συναρτήσεων, όπως είδα στο βιβλίο (DEF INT, DEF REAL και δεν ξέρω τι άλλο), αλλά, 1ον: δεν περιέχονται αναλυτικά για να τις κατανοήσω, και 2ον: δεν έχω χρόνο να ψάξω το θέμα (αυτός ο βραχνάς θα με πεθάνει). Αν κάποιος άλλος φίλος γνωρίζει και μπορεί να μας αναλύσει και αυτές τις περιπτώσεις, θα μας βοηθούσε πολύ...
Ευχαριστώ