Κυριακή, 13 Δεκεμβρίου 2015

Αναθεώρηση 117..Νέες Εντολές!

Στην Αναθεώρηση 117, έβαλα δυο συναρτήσεις, την συνάρτηση ΣΗΜ() ή SGN() που δίνει το πρόσημο (δεν την είχα για να την φτιάχνει ο χρήστης, ως άσκηση, αλλά τώρα μπήκε με στρογγυλοποίηση για το μηδέν). Και η δεύτερη είναι η ΔΕΚ() ή FRAC() που δίνει τα δεκαδικά χωείς πρόσημο, δηλαδή στους -12.34 και 12.34 δίνει το .34. Στο πρόγραμμα παρακάτω έχω και δυο συναρτήσεις χρήστη (με την μορφή της συνάρτησης σε μια γραμμή), την Ακέραιο_Μέρος() και την Βάλε_Δεκ() που βάζει δεκαδικά σε έναν αριθμό. Εδώ δείχνω και την Για Αυτό {} που ανήγει ένα μπλοκ για προσωρινούς ορισμούς (η Γ μετά την έξοδο από το μπλοκ θα διαγραφεί). Οι προσωρινοί ορισμοί διευκολύνουν την εκτέλεση της Μ2000 γιατί είναι διερμηνευτής, και περισσότερες μεταβλητές σε χρήση σημαίνει πτώση ταχύτητας έστω και ελάχιστης. Με την χρήση τμημάτων σπάμε τη αναζήτηση μεταβλητών σε μικρότερη λίστα. Πάντα υπάρχουν μεταβλητές μόνο από την "αλυσίδα" τμημάτων που καλεί το ένα το άλλο, και όχι από τμήματα που περιμένουν να εκτελεστούν. Όταν ένα τμήμα τερματίσει χάνονται οι μεταβλητές,  αλλά το ίδιο γίνεται και με την Για Αυτό { } και με τις Για που σχετίζονται με τις ομάδες (αντικείμενα της Μ2000) και όχι με την Για την δομή επανάληψης.
Την Γ την όρισα τοπική. Αν υπάρχει Γ μπορώ να ορίσω προσωρινά μια άλλη Γ να την χρησιμοποιήσω και να την σβήσω. Εδώ είναι πλεονασμός όμως και μπήκε απλά για να φανεί!


\\ δυο νέες συναρτήσεις
\\ ΣΗΜ() δίνει το πρόσημο
\\ ΔΕΚ() δίνει τα δεκαδικά (πάντα χωρίς πρόσημο)
\\ το ακέραιο μέρος δεν είναι με αποκοπή δεκαδικών
\\ Το ΑΚ(-3.2) δίνει -4
\\ Το ΑΚ(-3.8) δίνει -4
\\ Το ΣΤΡΟΓΓ(-3.8,0) δίνει -4
\\ Το ΣΤΡΟΓΓ(-3.2,0) δίνει -3
\\ Το ΑΚΕΡΑΙΟ_ΜΕΡΟΣ(-3.2) δίνει -3
\\ Το ΑΚΕΡΑΙΟ_ΜΕΡΟΣ(-3.8) δίνει -3
ΚΑΝΕ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ(Χ)=ΣΗΜ(Χ)*ΑΚ(ΑΠΟΛ(Χ))
ΚΑΝΕ ΒΑΛΕ_ΔΕΚ(Χ, Δ)=ΣΗΜ(Χ)*(ΑΚ(ΑΠΟΛ(Χ))+ΔΕΚ(Δ))
Α=12.45
Β=3.78
Τύπωσε Α, Β
Για Αυτό { '  η Γ είναι προσωρινή
      τοπική Γ
      Γ= ΒΑΛΕ_ΔΕΚ(Α, Β)
      Β= ΒΑΛΕ_ΔΕΚ(Β,Α)
      Α=Γ
}
Τύπωσε Α, Β
Λιστα ' εμφανίζει λίστα μεταβλητών




Διορθώθηκε και ένα πρόβλημα στην τύπωσε στο $(5) (λέγονται σειριακά χαρακτηριστικά, γιατί εφαρμόζουν μια κατάσταση που θα αλλάξει με νέα εφαρμογή ή με νέο ορισμό φόρμας οθόνης)
Το πρόγραμμα αυτό θέλει να δείξει πως χρησιμοποιούμε την οθόνη, τις στήλες της, το πώς χρωματίζουμε, πώς ενώνουμε στήλες (σαν να είναι excel αλλά δεν είναι).
Δείχνω πως βάζω κείμενο φορμαρισμένο και μάλιστα το σπάω σε τρία κομμάτια! Έχει υπολογιστεί χώρος για γραμμές στηλών, και οριζόντιες γραμμές μεταξύ γραμμών χαρακτήρων.

Στη στ=6, εναλ=Αληθής
      \\ Ανανέωση 1000   \\ με αυτή την εντολή κάνουμε τις αλλαγές να εμφανιστούν μια φορά!
      \\ δηλαδή βλέπουμε σαν να φορτώσαμε εικόνα
      \\ Αλλιώς βλέπουμε μια φλασιά! Γιατί προλαβαίνουμε να δούμε το φόντο μόνο του!
    
      Φόρμα (80 δια στ)*στ,32
      Οθόνη 5
      Πένα 14
      Για ι=0 εως Πλάτος-1 ανα στ {
            Αν εναλ τότε {
                  Τυπωσε @(ι,0,ι+στ,Ύψος,#222222,3),
            } Αλλιώς Τυπωσε @(ι,0,ι+στ,Ύψος,5,3),
            εναλ~
      }


      Για ι=2 έως Ύψος-2
            Δρομέας 0, ι
            Πένα 2 { Τύπωσε υπο }
      Επόμενο ι
      Τύπωσε @(0,2),   \\ Δρομέας 0,2
      Για ι=0 Έως 9 {
            \\ το $() λέγεται σειριακό χαρακτηριστικό διότι αλλάζει μια φορά
            \\ μέχρι να ξανα αλλάξει (ανά επίπεδο ισχύει αυτό)
            \\ στο παράδειγμα δεν κάνουμε κάποια ειδική επιλογή επιπέδου
            \\ οπότε η επιλογή είναι στο βασικό
            Τύπωσε $(ι, στ),145355,34.23432,34.222, ~(10,2, 2-12*(ι=8)), "aaa",~(14),"bb"
            Τύπωσε 145355,"Αλφαριθμητικό",34.222, "Μικρό", 10, ι
            Τύπωσε $(0),  ' για να το επαναφέρουμε
      }
      Τύπωσε $(";Αληθές;Ψευδές;"), 0,-1, Αληθές, Ψευδές, "A">" ", "*"
      Τυπωσε $(""), Αληθές, "*οκ"
      Τύπωσε μέρος @(στήλη*2), $(6,στ*2),~(10,2),"Διπλή στήλη",$(4,στ), ~(14), 1000
      Πένα 2 { Τύπωσε υπο }
      Τύπωσε μέρος @(στήλη*2), $(6,στ*3),~(10,2),"Αυτή είναι τριπλή στήλη",$(4,στ),~(14), "ok"
      Για ι=0 εως 1 { Δρομέας 0,ι : Τύπωσε Πάνω ~(14,7,7), }
      Δρομέας 0,0
      Διπλα : Φαρδιά 1
      Πένα 15 { Αναφορά 2, "Παράδειγμα με τις εντολές Τύπωσε & Αναφορά"}
      Πένα 2 { Τύπωσε υπο }
      Κανονικά : Φαρδια
      Τύπωσε @(Στήλη(8),15, Στήλη(11),30,#222222, 2),
      Τύπωσε @(Στήλη(8),4, Στήλη(11),14,#222222, 2),
      Κείμενο$={   Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
   Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
   Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
}
      Πένα 7 {
            Αναφορά κειμενο$, Στήλη*3, 10
            Δρομέας Στήλη(8), 16
            Αναφορά κειμενο$, Στήλη*3, 14 Γραμμή 12
      }
      Πένα 13 {
            Δρομέας Στήλη(8), 15
            Αναφορά κειμενο$, Στήλη*3, 1 Γραμμή 11
           }
      Δρομέας 0,Ύψος-2
    
    
     

Παρακάτω είναι η έξοδος του προγράμματος. Τα χρώματα τα έβαλα για να δείχνουν ακόμα και σε μικρή εικόνα τι συμβαίνει! Αριστερά φαίνονται οι δέκα τρόποι εμφάνισης με την Τύπωσε και δεξιά φαίνονται λειτουργίες της Αναφοράς. Ο Διερμηνευτής χρησιμοποιεί τις ίδιες εντολές και για τον εκτυπωτή!







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

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