Σάββατο 15 Απριλίου 2017

Αναθεώρηση 6 (Έκδοση 8.7)

1. Ρυθμίστηκε στις βάσεις δεδομένων η χρήση της Ημερομηνίας να περνάει και ως αλφαριθμητικό αν επιλέξουμε τύπο πεδίου ΗΜΕΡΟΜΗΝΙΑ. Έχω ενημερώσει το 23ο Τεύχος του εγχειριδίου
2. Επίσης όταν χρησιμοποιούμε την Like, ενώ με την χρήση DAO σε παλιές εκδόσεις πριν την 6)  έπαιρνε το * ως wildcard, με το ADO παίρνει το % (και αυτό δεν μπορώ ακόμα να το αλλάξω, γιατί θα χρειαστεί ανάλυση του SQL ερωτήματος, πράγμα που τώρα δεν γίνεται και το θέτουμε ως έχει στο σύστημα)

3. Όταν μια συνάρτηση ενός τμήματος, περαστεί με αναφορά υπήρχε θέμα αν είχε αναδρομή, γιατί αυτό σήμαινε ότι καλούσε το όνομά της, αλλά  το όνομα δεν το βρίσκει πια, με το σκεπτικό ότι η αναφορά έγινε σε νέο όνομα! Αν είναι συνάρτηση ομάδας δεν υπάρχει θέμα γιατί εκεί καλούμε το όνομα με μια τελεία στην αρχή και εκεί ο διερμηνευτής ξέρει τι θα προσθέσει για να βρει την συνάρτηση. Είχα φτιάξει όμως στις λάμδα που εξ ορισμού είναι ανώνυμες (το γράμμα που "αναφέρονται" είναι δείκτης σε λάμδα συνάρτηση - ως αντικείμενο), τις Λάμδα() και Λάμδα$(). Τώρα τις έκανα να λειτουργούν και για τοπικές συναρτήσεις. Έτσι αν μια Αλφα() θέλουμε να έχει αναδρομή και θέλουμε να την μεταβιβάζουμε με αναφορά αντί για =Αλφα(...)... θα βάλουμε =Λάμδα(...)...
Το παρακάτω σε προγούμενες αναθεωρήσεις θα έδινε σφάλμα, ακόμα και αν αντί για Λάμδα() βάζαμε το Αλφα() (θα έβγαινε όμως όταν τη καλούσαμε σαν Βήτα())
Στο παράδειγμα βγάζω τη Βήτα() στο ίδιο τμήμα. Θα μπορούσε να ήταν σε άλλο.

Τμήμα ΔεςΕδώ {
      Συνάρτηση Αλφα (Χ) {
            Αν Χ=0 τότε =0 : Έξοδος
            =Λάμδα(Χ-1)+Χ
      }
      Τύπωσε Αλφα(5)
      Βάλε &Αλφα()
      Διάβασε &Βήτα()
      Τύπωσε Βήτα(5)
      Τμήματα ?
}
ΔεςΕδώ


Ενώ σε ομάδες δεν υπήρχε θέμα, η Βήτα() παραμένει συνάρτηση του Ο1, επειδή έχει περαστεί μαζί η ισχνή αναφορά στην Ομάδα:


Τμήμα ΔεσΕδώ1 {
      Ομάδα Ο1 {
            Συνάρτηση Αλφα (Χ) {
                  Αν Χ=0 τότε Χ=1 : Έξοδος
                  =.Αλφα(Χ-1)+Χ
            }
      }
      Τύπωσε Ο1.Αλφα(5)
     
      Βάλε &Ο1.Αλφα()
      Διάβασε &Βήτα()
      Τύπωσε Βήτα(5)
}
ΔεσΕδώ1


Μπορούμε όμως να βάλουμε το Λάμδα(), και εδώ έβαλα μια Μ στην ομάδα και την διαβάζω στην Αλφα().

Τμήμα ΔεσΕδώ1 {
      Ομάδα Ο1 {
            Μ=10
            Συνάρτηση Αλφα (Χ) {
                  Αν Χ=0 τότε Χ=1 : Έξοδος
                  =Λάμδα(Χ-1)+Χ*
            }
      }
      Τύπωσε Ο1.Αλφα(5)
     
      Βάλε &Ο1.Αλφα()
      Διάβασε &Βήτα()
      Τύπωσε Βήτα(5)
}
ΔεσΕδώ1



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

Σε ένα τμήμα αντιγράψτε αυτό:
Test "start", test("ok"), A
For A=1 to 100 {
      Wait 1
      Print A
      if A=41 then test "ok" : test test("ok2")
      if A=81 then test "ok2": test  \\ wait for keypress
}
Test !
 

(όπου Test στα ελληνικά βάλτε Δοκιμή)
Τι κάνει; Πρώτα ανοίγει τον έλεγχο βάζει τίτλο Έλεγχος:Start και στην Τύπωσε (το πεδίο της φόρμας Έλεγχος) τη συνάρτηση test("ok") και το Α (όπως ακολουθούν το "start")
Η test("ok") σταματάει την ροή όταν μια test "ok" αλλάξει τον τίτλο σε Έλεγχος:ok.
Οπότε βλέπουμε την Α να αλλάζει τιμές στον έλεγχο και την συνθήκη του test("A") και όταν η συνθήκη δώσει -1 τότε σταματάει η ροή. (θα γίνει στο Α=41). Πατάμε enter και συνεχίζει γιατί τώρα άλλαξε ο τίτλος σε Έλεγχος:ok2.  Στο Α=81 πάλι θα σταματήσει η ροή.
 Η Δοκιμη() ή test()  ή θα έχει αλφαριθμητικό με εισαγωγικά οπότε είναι τίτλος για σταμάτημα, ή θα έχει μια συνθήκη πχ Χ=100 και Ζ<5 οπότε θα σταματάει όταν η συνθήκη ικανοποιηθεί.
Μπορούμε βέβαια στα σταματήματα να γυρνάμε σε προβολή κώδικα (κλικ στο Επόμενα κάτω από την Εντολή) και μετά κλικ στο επόμενο βήμα και βλέπουμε μια προς μια τις εντολές. Γυρνάμε στο αυτόματο αν κάνουμε κλικ στο Επόμενα, οπότε δείχνει πάλι το αποτέλεσμα της Τύπωσε της φόρμας και το σωρό τιμών.
Μπορεί κανείς να προσθέσει τιμές στην Τύπωσε της φόρμας, αλλά μια Δοκιμή με παράμετρο τις παραμέτρους της Τύπωσε θα τα αλλάξει.
Η εντολή Δοκιμή ! κλείνει την φόρμα αυτόματα.

 

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

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

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