Σάββατο 5 Μαρτίου 2016

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

14 Αναπαράσταση Κειμένου για Παρουσίαση.

Έχουμε δει στο κεφάλαιο 10 (τεύχος 19ο) το αντικείμενο έγγραφο. Το χρησιμοποιούμε όταν θέλουμε να κρατήσουμε ένα κείμενο και να κάνουμε διάφορες εργασίες εύκολα. Για την παρουσίαση του κειμένου, μπορούμε να δούμε το έγγραφο ως ένα αλφαριθμητικό ή να επιλέξουμε παραγράφους, και αυτές να τις δούμε ως ξεχωριστά αλφαριθμητικά. Η εντολή που μας επιτρέπει να πάρουμε μια αναπαράσταση του κειμένου με παραγράφους με αναλογική γραφή και με αναδίπλωση λέξεων είναι η Αναφορά.

14.1. Αναπαράσταση-Rendering

Η  αναπαράσταση του κειμένου είναι η μορφή του που βγαίνει στη οθόνη ή αλλού και έχει ιδιότητες όπως. η γραμματοσειρά, το μέγιστο πλάτος γραμμής εμφάνισης σε μονάδες της οθόνης (twips) ή σε σταθερούς χαρακτήρες, ο τρόπος στοίχισης, και οι οποίες δεν περιγράφονται από το αντικείμενο Έγγραφο, ή από ένα αλφαριθμητικό που μας παρέχει το κείμενο.

Σχηματικά:  Αντικείμενο Έγγραφο (παράγραφοι) ή Αλφαριθμητικό  --> δίνει αναπαράσταση σε αντικείμενο εξόδου (Οθόνη, Εκτυπωτής) με επιπρόσθετες ιδιότητες. που δεν παρέχονται από αυτό, αλλά δίνονται ως επιλογές στην λειτουργία της αναπαράστασης.

Η αναπαράσταση (rendering) του κειμένου για παρουσίαση είναι έργο της εντολής Αναφορά. Αν ανοίξουμε το κείμενο στον διορθωτή, εκεί έχουμε μια άλλη αναπαράσταση, και το έργο της παρουσίασης μαζί με την παροχή εργαλείων για αλλαγή το κάνει ο διορθωτής.

Η Αναφορά όπως και όλες οι εντολές για εμφάνιση/αναπαράσταση δεδομένων, παίρνουν ως δεδομένο το τρέχον αντικείμενο εξόδου, Έχουμε δει για παράδειγμα την Τύπωσε να χρησιμοποιείται για αρχεία με τον "χειριστή" αρχείου, μια μεταβλητή με το σύμβολο # να προηγείται.. Ομοίως και η Γράψε στέλνει σε αρχεία με τον ίδιο τρόπο, αλλά με άλλη φόρμα (csv αρχεία). Σε αυτό το κεφάλαιο θα παραλείψουμε να δούμε τα Επίπεδα εμφάνισης, και θα υπολογίζουμε απλά το τρέχον ως αυτό της Οθόνης.

14.2 Απλή χρήση της εντολής Αναφορά


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

Οθόνη 1, 0 : Πένα 14
Αναφορά "Αριστερή Στοίχιση εξ ορισμού"

Θα πάρουμε το ίδιο αποτέλεσμα με αυτήν αν χωράει η γραμμή στο πλάτος οθόνης. Στο τμήμα Β δώστε αυτό:

Οθόνη 1, 0 : Πένα 14
Τύπωσε $(4),"Αριστερή Στοίχιση εξ ορισμού", $(0)

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

Φόρμα 8,8

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

Άρα η αναφορά προϋποθέτει να σκεφτούμε πώς θα προετοιμάσουμε τη φόρμα μας, ή οθόνη μας,  για να παραστήσει κατάλληλα το κείμενο.

14.3 Παράδειγμα προετοιμασίας φόρμας


Δώστε με την εντολή Φόρμα μια άλλη ανάλυση, π.χ. 40,25 ή 80,50 ή 100,50, ή 120,60 ή 60,30 (γενικά ζυγά νούμερα στο πλάτος. και ότι θέλουμε στο ύψος). Αν θέλουμε μηδενίζουμε το διάστιχο με την εντολή Διάστιχο 0 για να υπολογίσει η φόρμα νέο διάστιχο εκκινώντας από το μηδέν. Αν δεν θέλουμε να εφαρμόσει διάστιχο η οθόνη μας, και να δώσει το 60,30 που ζητάμε τότε βάζουμε το χαραρκτήρα ";" στο τέλος. Η οθόνη στη Μ2000 δεν είναι τόσο "σταθερή" και δεν καλύπτει πάντα όλη την επιφάνεια εργασίας: (δοκιμάστε να βγάλετε την δεύτερη γραμμή και τη σημείωση από την πρώτη)

Σημ 1 : Παράθυρο 12,8000,6000
Παράθυρο 12,0 \\ στο κέντρο με 12άρια γράμματα
Διάστιχο 0
Φόρμα 60,20;
α$=κομ$ \\ αναμονή για πλήκτρο
Φόρμα   \\ εξαφανίζει το περιώριο
α$=κομ$
κίνηση.π , 0 \\ πάμε τη φόρμα στο πάνω μέρος της επιφάνειας εργασίας
α$=κομ$
\\ επαναφέρουμε το περιθώριο και την φόρμα στο μέσον της οθόνης
Φόρμα;

Ένα εύλογο ερώτημα για τη Αναφορά είναι: Πώς θα δούμε ένα κείμενο που θα χρειαστεί για να βγει με αναδίπλωση λέξεων στη οθόνη έστω 100 γραμμές;
 Ένα λοιπόν στοιχείο που δεν μπορεί να φανεί στο κείμενο εδώ είναι ότι η Αναφορά διαχειρίζεται την κύλιση των γραμμών της οθόνης (ή αλλαγή σελίδας στον εκτυπωτή). Όπως έχουμε δει η οθόνη μπορεί να έχει ένα τμήμα μόνο και αυτό να ολισθαίνει, να χάνονται γραμμές, ή δυο τμήματα όπου το κάτω μόνο ολισθαίνει (λειτουργία χωριστής οθόνης),

Η λειτουργία της αναφοράς στην οθόνη ελέγχει τον αριθμό κυλίσεων και αν πάνε να περάσουν τα 4/5 του τμήματος που μπορεί να ολισθαίνει τότε σταματάει και μπαίνει σε μια επανάληψη μέχρι να πατήσουμε διάστημα ή τον δείκτη του ποντικιού. 

Παράλληλα αφήνει το σύστημα να τρέχουν νήματα, άρα ουσιαστικά μόνο η έξοδος σε ένα επίπεδο και σε ένα νήμα σταματάει (μπορεί κάποιο άλλο νήμα να γράφει στο σταθερό τμήμα),

Με το πλήκτρο Esc σταματάμε την εξαγωγή γραμμών.Για να δούμε πάλι γραμμές που "χάθηκαν" γίνεται με τη χρήση της Αναφοράς και πρόγραμμα που θα φτιάξουμε για να ελέγχουμε την εμφάνιση γραμμών.


14.3.1 Λίστα και Τμήματα


Την Αναφορά χρησιμοποιούν εσωτερικά οι εντολές Λίστα και Τμήματα, και αν περάσουν τα 4/5 τότε σταματάνε και περιμένουν την επέμβαση του χρήστη. Η Λίστα κανονικά τυπώνει με μη αναλογική γραφή (χωρίς χρήση της αναφοράς) αλλά με το σύμβολο "!" δίνει εξαγωγή με αναλογική γραφή.
Η Λίστα τυπώνει τις μεταβλητές που έχουμε ορίσει, ανεξάρτητα αν τις βλέπει η όχι το τμήμα του κάλεσε τη εντολή αυτή, εκτός των ιδιωτικών και των "αυτόματων" μεταβλητών (τεχνικός όρος για τις ιδιότητες κλειστού αντικειμένου που ανοίγει πρόσκαιρα, και τοποθετεί τις τιμές τους σε αυτόματες μεταβλητές, με όνομα)
Σε μια γραμμή η επίδειξη της κρυμμένης αυτόματης μεταβλητής (το Β δεν έχει  κρυμμένη την α αλλά το Α(3) που είναι κλειστό αντικείμενο, ναι). Γράψτε σε ένα τμήμα έστω Α:
Κλάση Άλφα { α=10} : Πίνακας Α(10)=Άλφα() : Β=Άλφα() : Για Α(3), Β { Τύπωσε .α, ..α : Λίστα ! }
Η εντολή Τμήματα βγαίνει και με Ctrl+Μ για τα τμήματα στη μνήμη και στο δίσκο και Ctrl+N  για τα τμήματα στη μνήμη(τα φορτωμένα τμήματα  ή γραμμένα εκείνη τη στιγμή, τότε δείχνει τα τμήματα στο δίσκο).

14.4 Επιμέτρηση Κειμένου


Όταν σκεφτόμαστε την αναπαράσταση του κειμένου μια κύρια ερώτηση μας περνάει από το μυαλό: Πόσες γραμμές θα παραχθούν;  Η Αναφορά εκτός από το να τυπώνει γραμμές κειμένου, με διάφορους τρόπους, μπορεί να κληθεί μόνο για να υπολογίσει πόσες γραμμές χρειάζονται για να τυπωθεί ένα κείμενο βάσει των επιλογών μας, χωρίς να τυπώσει. Αυτή η διεργασία δεν μπορεί να γίνει από κάποιο σημείο στο έγγραφο αλλά πάντα από την αρχή, για να κρατηθεί το σωστό μέτρημα (ανάλογη είναι η σελιδοποίηση  στο Word)

Στο παράδειγμά μας θα χρειαστούμε κείμενο! Αυτό μπορούμε να το πάρουμε από το κείμενο εδώ και η Μ2000 να το πάρει από το πρόχειρο!

α$=Πρόχειρο$
Αναφορά α$


ή   (προσοχή γιατί το = στο έγγραφο είναι "προσθήκη" και όχι αντιγραφή)

Έγγραφο α$=πρόχειρο$
Αναφορά α$



ή για το παράδειγμά μας:

Πρόχειρο  {Άλφα
            Βήτα
            Γάμα
            }
Οθόνη 1,0 : Πένα 14
Έγγραφο α$=πρόχειρο$
Αναφορά α$,πλάτος,-1000
Τύπωσε ΓραμμέςΑναφοράς
\\ γράφει 3 παραγράφους και δίνει τρεις αλλαγές γραμμών
\\ γιατί λόγω του μικρού μήκους (μια λέξη είναι μόνο)
\\ δεν έχουμε αναδίπλωση λέξεων άρα νέες γραμμές.
Αναφορά α$


14.5 Επιλογή στοίχισης


Έχω κρύψει κάτι μέχρι τώρα στην Αναφορά! Η εντολή αναφορά παίρνει ως πρώτη παράμετρο έναν αριθμό, αλλά αν δεν τον δώσουμε θεωρεί ότι είναι το 0. Ο αριθμός αυτός μπορεί να είναι 0 ή 1 ή 2 ή 3, και είναι ο τύπος στοίχισης, το πως δηλαδή στοιχίζονται οι γραμμές. Μια μορφή π.χ. είναι η στοίχιση στο κέντρο. Ας προσθέσουμε το παρακάτω στο προηγούμενο παράδειγμα!

Τύπωσε Υπό \\ μια οριζόντια γραμμή να χωρίσουμε το κείμενο
Για ι=0 έως 3
      Αναφορά ι, α$
Επόμενο ι


Τα 0 και 3 φαίνονται ίδια επειδή έχουμε μια λέξη μόνο στο παράδειγμα, αλλά το 0 είναι η πλήρης στοίχιση (και αριστερά και δεξιά) η οποία γίνεται στην τελευταία γραμμή παραγράφου αριστερή στοίχιση. Το 2 είναι η στοίχιση στο κέντρο και το 1 η δεξιά στοίχιση.


14.5 Επιλογή Πλάτους Γραμμής (και σε twips)


Είδαμε στο 14.4, για τον υπολογισμό γραμμών αναπαράστασης κειμένου δυο νούμερα, το ένα το πλάτος και το άλλο το -1000. Το πρώτο λέει για το πλάτος γραμμής και μπορούμε να δώσουμε μικρή τιμή που λογαριάζεται για μήκος χαρακτήρα οθόνης, ή μεγάλη τιμή (>200) που λογαριάζεται ως Twips. Στην οθόνη έχουμε τα λογικά twips, ενώ στον εκτυπωτή, στη σελίδα του, είναι πραγματικά, δηλαδή 1440 twips είναι 1 ίντσα. Δηλαδή σε εκτύπωση η Μ2000 μπορεί να μετράει σε πραγματικές διαστάσεις - και με τα γραφικά και με το πλάτος κειμένου της Αναφοράς).

Μπορούμε να ξέρουμε το μήκος ενός αλφαριθμητικού, αλλά λογαριάζεται χωρίς αναδίπλωση. Αν υπάρχουν αλλαγές γραμμών θα αφαιρεθούν πριν τον υπολογισμό, οπότε ας μετράμε μία μόνο παράγραφο. (υπάρχει και η Μέγεθος.Υ() που μετράει ύψος. Επίσης και οι δύο παίρνουν μία ακόμα παράμετρο, την γωνία σε ακτίνια (δουλεύουμε με το Πι, 2*Πι είναι ο κύκλος, Πι ο μισός κύκλος, Πι/2 το τεταρτημόριο, άρα έχουμε κάθετο το κείμενο.). Η αναφορά δεν περιστρέφει το κείμενο. Η περιστροφή γίνεται με την εντολή Επιγραφή.(δες 13.11).

Εδώ απλά αναφέρθηκε ο τρόπος μέτρησης σε twips για να δούμε ότι στο κείμενο δεν μας κάνει!

Επειδή στην Αναφορά έχουμε αναδίπλωση αν μια λέξη δεν μπορεί να γραφτεί όλη στη γραμμή.

Α$="Μέτρησέ με"
\\ Τύπος εδώ είναι το μέγεθος της γραμματοσειράς
Τύπωσε Μέγεθος.Χ(Α$, Γραμματοσειρά$, Τύπος)

Η επιλογή του πλάτους γίνεται για να καθορίσουμε το δεξί περιθώριο, το όριο δηλαδή όπου από κει και μετά δεν θα γράφει η Αναφορά, αλλά θα αλλάζει γραμμή.

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

14.6 Εμφάνιση Κειμένου από μια γραμμή αναπαράστασης και μετά


Η δεύτερη παράμετρος στον υπολογισμό γραμμών (στο 14.4), το -1000 έχει δυο συστατικά, το μείον που δηλώνει - μην εκτυπώσεις απλά μέτρα και γράψε το αποτέλεσμα στο Γραμμές.Αναφοράς, και το άλλο ένα όριο γραμμών. Με 1000 είμαστε καλυμμένοι.

Τώρα που έχουμε την μέτρηση μπορούμε να ζητήσουμε μια γραμμή ή καλύτερα μια σειρά γραμμών:

Α$ =  {Άλφα
            Βήτα
            Γάμα
            }
Αναφορά 3, Α$, πλάτος, 1000 Γραμμή 2

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

Τύπωσε Υπό \\ μια γραμμή διαχωρισμού!
Αναφορά 3, Α$, 2, 1000 Γραμμή 2

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


Δείτε εδώ ένα πρόγραμμα όπου επιλέγουμε μια μικρή οθόνη, για να γράψουμε  με διαφορετική γραμματοσειρά,  με διαφορετικό τρόπο (μάλιστα κρατάμε τον παλιό τρόπο σε τρεις μεταβλητές).

Γραμματοσειρά "Comic sans ms"
\\Γραμματοσειρά "Arial"
Τύπος 15, 8000,10000
Α$ =  {Άλφα
            Βήτα
            Γάμα
            }
Αναφορά 3, Α$, πλάτος, 1000 Γραμμή 2
Τύπωσε Υπό \\ μια γραμμή διαχωρισμού!
Αναφορά 3, Α$, 2, 1000 Γραμμή 2
Τύπωσε Υπό \\ μια γραμμή διαχωρισμού!
κ$=γραμματοσειρά$
μ=Φαρδιά
ν=Πλάγια
γραμματοσειρά "Arial Black"
Πλάγια 1 : Φαρδια 0
Τύπωσε
Αναφορά 3, Α$, 2, 1000 Γραμμή 2
Τύπωσε
γραμματοσειρά κ$
Φαρδιά μ
Πλάγια ν
Τύπωσε "οκ", γραμματοσειρά$



14.7. Χειρισμός αναδίπλωσης λέξεων

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

Υπάρχουν κενά που τα βλέπουμε κενά ενώ δεν είναι, δεν τα λογαριάζει για κενά αλλά για χαρακτήρες. Όταν είμαστε στον ενσωματωμένο διορθωτή κειμένου τότε με F10 αλλάζουμε τον τρόπο προβολής (αναπαράστασης) σε σχέση με τους εκτυπώσιμους και μη χαρακτήρες. Αν δείχνουμε τους μη εκτυπώσιμους τότε εμφανίζεται μια τελεία στο διάστημα, το σύμβολο της αλλαγής παραγράφου όπου υπάρχει αλλαγή παραγράφου.  Αν δούμε ένα διάστημα ενώ είμαστε σε προβολή μη εκτυπώσιμων χαρακτήρων τότε αυτό είναι ένα διάστημα που δεν σπάει δυο λέξεις αν είναι ανάμεσά τους Μπορούμε να περάσουμε τέτοιο διάστημα για να κάνουμε δυο λέξεις να είναι πάντα στην ίδια γραμμή!Ο συνδυασμός είναι Shift Ctrl Space και το βλέπουμε με F10 προβολή συμβόλων παραγράφων ως κανονικό διάστημα. Ένα ακόμα τύπο διαστήματος υποστηρίζει ο διορθωτής, και είναι το διάστημα πλάτους αριθμών. Αυτό εμφανίζεται στην προβολή συμβόλων παραγράφων ως κάτω παύλα με γωνίες. Αυτά τα διαστήματα αριθμών μπαίνουν στο κείμενο με Shift Alt Space.

14.8 Παράδειγμα χρήσης Tύπωσε και Αναφοράς


Το παρακάτω παράδειγμα αποτελεί συνάμα και πρόγραμμα ελέγχου "συμβατών' γραμματοσειρών. Δυστυχώς όλες οι γραμματοσειρές δεν έχουν τις ίδιες ιδιότητες και η αναπαράστασή τους από τα Windows, μπορεί να μην είναι η αναμενόμενη βάσει ανάγνωσης ιδιοτήτων. Ίσως αυτό γίνεται για λόγους κλειδώματος (οι γραμματοσειρές πουλιούνται, και ίσως ορισμένες τις χρησιμοποιεί κάποιο πρόγραμμα και για το λόγο αυτό της έχει πειραγμένες). Μια τέτοια γραμματοσειρά είναι η Comic Sans Ms, την οποία μπορεί να χρησιμοποιήσει η Μ2000 αφού έχει ρυθμιστεί να το κάνει. Όμως ίσως να υπάρχουν άλλες που να δημιουργούν κάποιο πρόβλημα (ειδικά στην Τύπωσε και σε ορισμένες επιλογές). Το πρόβλημα παίζει με αυτό που λέγεται Kerning. Η M2000 χρησιμοποιεί ρουτίνες του λειτουργικού που μετράνε σωστά το Kerning αν είναι σωστά περασμένο στην γραμματοσειρά. Οι ιδιωτικές γραμματοσειρές έχουν πειραγμένο το Kerning, και προφανώς με κάποιο τρόπο ή το αφαιρούν ή περνούν το σωστό. To Kerning είναι ο τρόπος να συμπτυχθούν τα γράμματα ώστε να καλύπτουν δυο συνεχόμενα γράμματα κοινό μήκος. Π.χ. αυτό το ζευγάρι γραμμάτων fj έχει εμφανέστατο Kerning, το f γέρνει πάνω από το j και το j φτάνει κάτω από το f.

Στο παράδειγμα παρακάτω έχουμε τρεις επιλογές για γραμματοσειρά. Η λέξη Γιώργος έχει κάτι το "εξαιρετικό", δεν έχει το ωμέγα με τόνο αλλά ένα ωμέγα και έναν τόνο χωριστά! Ο τόνος ανήκει στα Diacritics και μπήκε με Alt 769 ή το Alt +301(και το + πατάμε σαν να είναι ψηφίο, είναι δεκαεξαδικό το 301) αμέσως μετά το ωμέγα.

Τύπωσε Μήκος("Γιώργος") \\ τυπώνει 8 χαρακτήρες
Τύπωσε Μήκος.Εμφ("Γιώργος") \\ τυπώνει 7 χαρακτήρες
Τύπωσε Μέγεθος.Χ("Γιώργος", Γραμματοσειρά$, Τύπος) \ 1470 - ενδεικτικό
\\ θα δώσει το ίδιο με το Γιώργος χωρίς το diactrics alt 769 ή alt +301


Στο πρόγραμμα παρακάτω μπορούμε να αλλάξουμε το πλάτος στήλης. (από τέσσερα και πάνω)

(Σε Linux με Wine μόνο στα Times φαίνεται σωστά ο τόνος στο ωμέγα, ενώ στις άλλες γραμματοσειρές ή δεν υπάρχει ή επιστρέφει ως τόνο χωρίς να δώσει την ιδιότητα του diactric που κύρια είναι ότι δεν μεταθέτει τον δρομέα, έχει δηλαδή πλάτος μηδέν)


Σημ 1 : Γραμματοσειρά "Times New Roman"
Σημ 2: Γραμματοσειρά "Comic Sans MS"
Γραμματοσειρά "Courier New"
Φαρδια 1
Στη στ=6, εναλ=Αληθής
      Φόρμα (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
κάτι$=Κομ$


      

Αναθεώρηση 179

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

Διόρθωσα και μερικά ακόμα σημεία που σχετίζονταν με την αλλαγή γραμματοσειράς, χωρίς να σβήσουμε την οθόνη.
Δώστε Τύπος 12; και μετά Τύπος 48; και μετά τύπος 12 χωρίς το ";" στο τέλος

Όταν αλλάζουμε με την Τύπος το μέγεθος χαρακτήρων μπορεί να τύχει να μην δώσουμε ένα νούμερο που μπορεί να δοθεί, και το σύστημα βγάζει ένα κοντινό. Μπορούμε με την Τύπος ως μεταβλητή μόνο ανάγνωσης να διαβάσουμε τι μέγεθος τελικά έδωσε το σύστημα!

Παρασκευή 4 Μαρτίου 2016

Αναθεώρηση 178

Μικρές βελτιώσεις. Στην εμφάνιση αριθμών με υποδιαστολή κόμμα.
Κώδικας και Exe αρχείο (είναι υπογεγραμμένο)

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

13.Παρουσίαση Στοιχείων.

Είδαμε σε άλλα κεφάλαια ότι μπορούμε να εξάγουμε στοιχεία σε αρχεία απλά και σε βάσεις δεδομένων. Ένα κεφάλαιο θα αφιερωθεί στην παρουσίαση στοιχείων, με διάφορους τρόπους! Θα απαιτηθούν αρκετά τεύχη/δημοσιεύσεις στο blog!

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



13.1 Η Οθόνη Βασικά Στοιχεία

Βασικό αντικείμενο εξόδου είναι η Οθόνη, η οποία έχει μια ιδιομορφία στην Μ2000. Ανάλογα με το μέγεθος και τύπο γραμματοσειράς καθώς και με το χώρο του παραθύρου που δημιουργεί αυτόματα ο διερμηνευτής, έχουμε μια οθόνη με πλάτος έναν αριθμό χαρακτήρων και ύψος έναν αριθμό γραμμών χαρακτήρων.
Εκτός από την ανάλυση όπως λέμε σε χαρακτήρες κατά πλάτος και γραμμές κατά ύψος, έχουμε άλλες τέσσερις παραμέτρους: Το χρώμα φόντου, το τρέχον χρώμα πένας, τη γραμμή χωρισμού της οθόνης, και το διάστιχο.

Ένα βασικό στοιχείο για την Οθόνη της Μ2000 είναι ότι οι χαρακτήρες γράφονται χωρίς να καθαρίζεται το φόντο πάνω στο οποίο γράφονται. Υπάρχει τρόπος να καθαριστεί το φόντο, σε επίπεδο στήλης σε μια γραμμή,  σε μια ολόκληρη γραμμή, σε γραμμές στο κάτω μέρος και σε όλη την οθόνη.

Επίσης υπάρχουν δυο εντολές (Διπλά και Κανονικά) που η μία κάνει διπλό μέγεθος τα γράμματα και η άλλη τα επαναφέρει. Όταν κάνουμε διπλό μέγεθος τότε έχουμε μισό πλάτος και μισό ύψος, αριθμητικά για την ίδια Οθόνη.Έχουμε επίσης και μορφή να επιλέξουμε Φαρδιά και Πλάγια.

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

Τα νήματα που έχουμε δε σε παραδείγματα κρατάνε χωριστά το δρομέα και άλλες παραμέτρους για την Οθόνη που χρησιμοποιούν (την οθόνη κατά τη φάση που τα δημιουργήσαμε).

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

13.2 Επιλογή Ανάλυσης Φόρμας

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

Διάστιχο 0 : Φόρμα 80,40 : Τύπωσε Διάστιχο

Θα πάρουμε μια Οθόνη 80 χαρακτήρων με 40 γραμμές (το σύστημα βάζει το ανάλογο διάστιχο, την απόσταση γραμμών για να έχουμε τις 40 γραμμές σε όλο το παράθυρο.
Οι θέσεις χαρακτήρων θα είναι από 0 έως 79 και οι γραμμές από 0 έως 39

Δρομέας 15, 20 : Χ=θέση : Ψ=Γραμμή : Οθόνη : Τύπωσε Χ, Ψ


Αυτές τις εντολές μπορούμε να τις δώσουμε απ' ευθείας από την γραμμή εντολών.  Θα μεταφερθεί ο δρομέας (δεν τον βλέπουμε) στην θέση 15 και γραμμή 20 και μετά ορίζουμε τις Χ και Ψ και βάζουμε τις τιμές (θα είναι πράγματι το 15 και το 20). Μετά λέμε να καθαρίσει η οθόνη και μετά να τυπώσει τις τιμές σε δυο στήλες (στην πρώτη γραμμή του τμήματος της οθόνης που σβήσαμε).

13.3. Διορθωτής Λίστας Εντολών


Έχουμε δει ότι με Σ (ή Συγγραφή) και όνομα π,χ, Σ Α ανοίγει ο διορθωτής στο τμήμα Α, ή με Σ Α() ανοίγει ο διορθωτής για τη Συνάρτηση Α(). Όλες αυτές οι εντολές γράφονται σε μια λίστα σε ένα κείμενο και με τα βελάκια πάνω και κάτω επιλέγουμε γρήγορα κάποια από αυτές.

Μπορούμε όμως να ανοίξουμε τη λίστα προηγούμενων εντολών με το Σ χωρίς όνομα (ή edit ) και τότε βλέπουμε τις εντολές χρωματισμένες και μπορούμε να επιλέγουμε όποια θέλουμε και να βλέπουμε βοήθεια (δείτε το μενού με δεξί κλικ - το μενού έχει και γραμμές που δεν φαίνονται άμεσα αλλά με κύλιση (έχω και κρυμμένη μπάρα ολίσθηση για ευκολία ή χρησιμοποιούμε βελάκια, ή με το δείκτη πατημένο ολισθαίνει αυτόματα με την κίνησή του). Το μενού επιλογών αλλάζει μέγεθος καθώς το ανοίγουμε ή κλείνουμε από την κάτω δεξιά γωνία προσαρμόζοντας το μέγεθος γραμμάτων αυτόματα (τα παράθυρα της Μ2000 είναι δικά της, δεν έχουν σχέση με τα Windows και βγαίνουν το ίδιο σε όλα τα λειτουργικά).

13.4 Χρώμα Φόντου - Κύλιση, Χωριστή Οθόνη

Αν γράψουμε στη τελευταία γραμμή και ζητάμε νέα τότε οι γραμμές που έχουν οριστεί από τη γραμμή χωρισμού και κάτω ολισθαίνουν προς τα πάνω και εμφανίζεται μια νέα γραμμή καθαρή με το χρώμα φόντου. Αυτή είναι η λειτουργία κύλισης. Η Γραμμή χωρισμού θα εξαφανιστεί και θα περιέχει την επόμενη γραμμή.

Όταν ανοίγουμε τον διορθωτή για να γράψουμε ή να διορθώσουμε ένα τμήμα ή μια συνάρτηση τότε αυτός "ανοίγει" πάνω από την οθόνη (σε δική του φόρμα), που τοποθετείται επακριβώς από την γραμμή χωρισμού της οθόνης μέχρι την τελευταία γραμμή της. Ομοίως το ίδιο συμβαίνει αν μέσα από ένα τμήμα καλέσουμε την Διόρθωσε Α$ (όπου Α$ είναι ένα αντικείμενο έγγραφο). Όταν βγαίνουμε με Esc από τον διορθωτή τότε η οθόνη εμφανίζεται όπως ήταν πριν ανοίξουμε το διορθωτή.

Οθόνη ,0

Δεν δίνουμε χρώμα φόντου, άρα επιλέγεται το τρέχον και δίνουμε χώρισμα στην γραμμή μηδέν άρα αφαιρούμε το πάνω σταθερό μέρος (όπως με την Φόρμα).

Οθόνη 1, -10

Με αυτή την εντολή καθαρίζουμε τις τελευταίες δέκα γραμμές με βασικό χρώμα 1 (μπλε σκούρο), Το -10 λέει ότι θέλουμε την χωριστή οθόνη από το Ύψος-10. 

Μπορούμε να ορίσουμε χωριστή οθόνη χωρίς να την σβήσουμε:

Κύλιση Χώρισμα 20 

Μπορούμε να δώσουμε εντολές για κύλιση κατά μια γραμμή κειμένου (η Κομ$ περιμένει ένα οποιοδήποτε πλήκτρο (κομβίον).

Κύλιση άνω : α$=Κομ$ : Κύλιση κάτω

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

Φόρμα 20,10
Φόντο 1,5
Α$="Γεια χαρά!"
Α=Αληθής
Κράτησε
Κάθε 100 {
      Άφησε
      Α~    \\ το ~ αντιστρέφει δηλαδή Α = όχι Α
      Αν Α Τότε Τύπωσε @((πλάτος-μήκος(Α$))/2,ύψος/2),Α$
      Αν Δείκτης τότε Έξοδος
      Ανανέωση
}
Φόρμα 40, 20
Η εντολή Φόντο βάζει με διαβάθμιση χρώμα από το πρώτο στο δεύτερο κάθετα ή με άλλη μια παράμετρο το 0 οριζόντια. Δεν αλλάζει το δρομέα χαρακτήρων και το δρομέα γραφικών (δεν έχει αναφερθεί ο δρομέας γραφικών αλλά θα τον δούμε στο κεφάλαιο με τα γραφικά).

13.5 Θέση χαρακτήρα/Στήλες

Η θέση κάθε χαρακτήρα έχει χώρο για να γραφτούν φαρδιά γράμματα (bold) και πλάγια (italics). Επίσης λογαριάζονται και στήλες, ώστε δυο αριθμοί για παράδειγμα να τυπωθούν σε δυο στήλες με δεξιά στοίχιση. Επιπλέον μπορούμε να "τυπώνουμε" στην οθόνη με αναλογική γραφή, καθορίζοντας την περιοχή εμφάνισης, με χρήση των θέσεων χαρακτήρων. Έτσι ενώ έχουμε μια στήλη έστω είκοσι χαρακτήρων μπορούμε να εμφανίσουμε με αναλογική γραφή περισσότερους.
Οι στήλες και θέσεις χαρακτήρων βοηθούν τόσο όταν τυπώνουμε με μη αναλογικό τρόπο όσο και όταν τυπώνουμε με αναλογικό (αναλογικός είναι όπως αυτό το κείμενο).

Βασική εντολή για να εμφανίζουμε στην οθόνη σε θέσεις χαρκτήρων/στηλών είναι η Τύπωσε

Τύπωσε 12,"αλφα", 3**5>3*3*3*3+3*3*3*3, 3**5>3*3*3*3+3*3*3*3+3*3*3*3
Δίνει:
         12αλφα        -1         0

Η ύψωση σε δύναμη έχει δυο σύμβολα το ** και το ^ και χρησιμοποιούμε όποιο θέλουμε χωρίς προεπιλογή.

13.6 Στοίχιση σε στήλες/Γραφή αναλογική

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

Οθόνη 1,0
Τύπωσε $(1),12.4,"άλφα", Αληθές, Ψευδές, $(0)

12.4      άλφα         -1         0
Οι επιλογές είναι δέκα, από το 0 έως το 9. Το 2 είναι η στοίχιση στο κέντρο, το 3 η στοίχιση δεξιά
Από το 4 και πάνω έχουμε επιλογές για αναλογική γραφή. Τα 4 έως 7 είναι ίδια με τα 0 έως 3 για την μη αναλογική γραφή. Εδώ η αναλογική γραφή για αλφαριθμητικά περιλαμβάνει και αποκοπή λέξεων που δεν μπορούν να συμπεριληφθούν επειδή θα κόβονταν αλλιώς. Η 8 εμφανίζει τα αλφαριθμητικά με στοίχιση και από τις δυο πλευρές (επίσης κάνει διαγραφή της λέξης που δεν μπαίνει όλη). Η 9 εμφανίζει και την κομμένη τυχόν λέξη. Από 10 και πάνω γυρνάμε πάλι στο 0 εσωτερικά.
Σε όλες εκτός από την 0 η επέκταση πέρα από την οθόνη για περιεχόμενο στήλης χάνεται, ενώ αν ζητάμε νέα στήλη και δεν υπάρχει χώρος τότε αυτός θα βρεθεί σε νέα γραμμή (γίνεται αλλαγή γραμμής). Στην περίπτωση της 0 με μη αναλογική γραφή οι επιπλέον χαρακτήρες συνεχίζουν στην επόμενη γραμμή.

Η $() έχει και άλλη προαιρετική παράμετρο που θα δούμε αργότερα. Η ισχύ της έχει να κάνει με το επίπεδο που δουλεύουμε, και μηδενίζει όταν καλούμε την Οθόνη, δηλαδή εκτός από καθάρισμα κάνει και επαναφορά βασικών ρυθμίσεων (οι ρυθμίσεις είναι ανά επίπεδο και ανά νήμα).

13.7 Εμφάνιση κελιών με αλλαγή φόντου ή και περίγραμμα

Σε μια γραμμή η στήλη είναι ένα κελί, με πλάτος κάποιους χαρακτήρες και ύψος μια γραμμή! Εδώ ορίζουμε χρώμα πένας το 14 (κίτρινο) και το 12 βγαίνει με πράσινο φόντο (2) και χρώμα άσπρο (15), το άλφα βγαίνει με γκρίζο χρώμα με ότι είχε από πίσω, εδώ είχαμε καθαρίσει την οθόνη άρα είχαμε μπλε (1) χρώμα. Μετά βάζουμε το "οκ" με περίγραμμα άσπρο.

Οθόνη 1,0
Πένα 14
Δρομέας 0,1
Τύπωσε ~(15,2,2), 12,~(7), "άλφα",~(15,2,15), "οκ", ~(Πένα)

Αν θέλουμε σε ένα "κελί" να αλλάζουμε συνέχεια το περιεχόμενο, τότε πρέπει να το σβήνουμε πρώτα και η χρήση της ~() μας βοηθάει σε αυτό, αφού τα γράμματα τυπώνονται χωρίς να αλλάζει το φόντο.

13.8 Χρώματα

Τα βασικά χρώματα είναι από 0 έως 15. Μπορούμε να χρησιμοποιούμε το στυλ της Html
Τύπωσε ~(#12AAFF, #AAFF12, #882211), 12,~(7), "άλφα",~(#12AAFF, #AAFF12, #882211), "οκ", ~(Πένα)

ή αν θέλουμε μπορούμε να χρησιμοποιήσουμε την Χρώμα() που παίρνει την τιμή RGB με τιμές για κάθε χρώμα από 0 έως 255 (μπορούμε να δίνουμε δεκαεξαδικά νούμερα π.χ. το 0xFF είναι το 255).

Πένα Χρώμα(255,255,255)

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

Πένα 11
Τύπωσε "χρώμα κυανό"
Πένα 15 {
      Τύπωσε "Χρώμα Άσπρο"
}
Τύπωσε "χρώμα κυανό"

Μπορούμε να βρούμε το χρώμα που θέλουμε από χρωματολόγιο:


Η Επίλεξε.Χρώμα δίνει το παραπάνω, Επιλογή κάνουμε με την λίστα (16 εκατομμύρια στοιχεία έχει), αλλάζοντας τις τρεις στήλες εδώ είναι BGR αλλά με κλικ στην ετικέτα αλλάζουν ώστε με τα βελάκια ή με την μπάρα ολίσθησης ή με κράτημα δείκτη και ολίσθηση να αλλάζουμε τιμή. Το χρώμα είναι αυτό που φαίνεται στον αριθμό. Η εξαγωγή από τη φόρμα πάει στο σωρό και την διαβάζουμε με μια Διάβασε Α στην μεταβλητή Α. Μπορούμε να ξεκινήσουμε την επίλεξε από ένα χρώμα, αυτό που είναι στην μεταβλητή ή να δώσουμε ένα:
Επίλεξε.Χρώμα #22AACC : Διάβασε Α : Τύπωσε Α

Επειδή από έναν διάλογο μπορούμε να βγούμε χωρίς να επιλέξουμε, εδώ το ξέρουμε αν το Α είναι θετικό νούμερο! Τα χρώματα π.χ. το #22AACC (με λατινικά τα ψηφία του δεκαεξαδικού ABCDEF), έχουν αρνητικό νούμερο για την Μ2000. Τα θετικά 1 έως 15 είναι βασικά χρώματα.
Π.χ. αν δώσουμε
Πένα Χρώμα(255,255,255)
Τύπωσε Πένα=Χρώμα(255,255,255)

θα κάνουμε την πένα 15 ενώ η συνάρτηση δίνει το -16777215  

13.9 Ελεύθερη Μετακίνηση Δρομέα 

Είδαμε την Δρομέας που μετακινεί το δρομέα σε μια θέση και γραμμή στην οθόνη (ή στη σελίδα του εκτυπωτή). Υπάρχει μια εντολή αλλαγής του δρομέα που μπαίνει στην λίστα παραμέτρων (σαν παράμετρος και αυτή) αλλά αντί να τυπώνει μετακινεί το δρομέα (και κάνει και άλλα που θα δούμε αργότερα).
Οθόνη 1, 0
Τύπωσε @(10,10),"<-Εδώ είναι το 10,10", @(2,2),"<-Εδώ είναι το 2,2"


Αν στο αλφαριθμητικό υπάρχουν χαρακτήρες κάτω από 32 (το διάστημα) όπως είναι ο χαρακτήρας 13 που αλλάζει γραμμή, τότε η Τύπωσε δεν τον χρησιμοποεί για να αλλάξει γραμμή αλλά τυπώνει διάστημα. Το CRLF χαρακτήρες 13 και 10 που στα Windows χρησιμοποιούνται μαζί ως αλλαγή γραμμής εδώ θα είναι δυο διαστήματα. Τον έλεγχο αλλαγής γραμμής δεν τον κάνει το περιεχόμενο του αλφαριθμητικού στην Τύπωσε.

Υπάρχουν τρόποι να κολλήσουμε τον δρομέα στην τελευταία θέση, δηλαδή μετά την τύπωσε να μην γίνει αλλαγή γραμμής. Δείτε έναν με το κόμμα στο τέλος.
Τύπωσε 12,34,
Α$=Κομ$
Τύπωσε 45

Εδώ θα τυπωθεί:
    12     34    45
Δηλαδή το 45 τυπώνεται στην επόμενη στήλη.

Ο άλλος τρόπος είναι με τον χαρακτήρα ";" όπου "σπάμε" τη χρήση στηλών.
Τύπωσε 123;"αλφα";456;
Α$=κομ$
Τύπωσε "οκ"


Θα τυπωθεί:
123αλφα456οκ

Αν θέλουμε να υπολογίσουμε την στήλη το κάνουμε με αυτό:
Τύπωσε Στήλη
Τύπωσε @(Στήλη(3)),"αλφα"
Τύπωσε @(Στήλη(2)),"αλφα"
Τύπωσε @(Στήλη(1)),"αλφα"
Τύπωσε @(Στήλη(100)),"αλφα"

Η τελευταία Τύπωσε εμφανίζει μόνο μια κενή γραμμή γιατί το άλφα τυπώθηκε στην 100ή στήλη και εμείς δεν βλέπουμε τόσες;. Μπορούμε στο @() να βάζουμε αρνητικά νούμερα, και έξω από την οθόνη. 
Το πλάτος της στήλης επιλέγεται αυτόματα όταν επιλέγουμε φόρμα ή μπορούμε να το αλλάξουμε με την $(). Αν δεύτερη παράμετρος της $() είναι αριθμός (δέχεται από 4 και πάνω)  τότε αυτός είναι το πλάτος στήλης. Ισχύει η ρύθμιση μέχρι να αλλάξουμε ή να σβήσουμε την Οθόνη.

13.10 Ειδικές Τύπωσε (Πάνω - Μέρος - Υπό)

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

Και οι τρεις εντολές έχουν το ίδιο σύμπτωμα...κρατάνε αλλαγές για τις στήλες και το πλάτος πεδίων και τον τρόπο εμφάνισης πρόσκαιρα. (όπως η Πένα  { }  κρατάει την αλλαγή μόνο για το μπλοκ)

Η Τύπωσε Πάνω έχει επίσης μια διαφορά σημαντική. Πρώτα καθαρίζει την γραμμή, αλλά αφήνει μια λεπτή γραμμή από κάτω χωρίς να την πειράξει. Μετά βάζει το πλάτος στήλης όσο το πλάτος οθόνης. Μετά βάζει το σύστημα εμφάνισης 4, δηλαδή αναλογική γραφή.
Οθόνη 2, 0
Φόντο 1, 5
Τύπωσε Πάνω $(2), "Γιώργος"
Οθόνη 1, -10

Ενώ η Φόντο μας είχε διαβάθμιση, στην πάνω γραμμή έχουμε μόνο το χρώμα Οθόνης το 2. Η τελευταία εντολή μας σβήνει με μπλε (1) τις τελευταίες 10 γραμμές και κάνει εκεί χωριστή οθόνη!
Επίσης κάτι που δεν φαίνεται στο παράδειγμα. Η Τύπωσε Πάνω δεν αλλάζει γραμμή παρόλο ότι δεν έχει το ";" ή το ",". Και επίσης δεν επιτρέπει την επέκταση στην κάτω γραμμή.

Η Τύπωσε Μέρος είναι σαν την Πάνω αλλά δεν αλλάζει το φόντο. Μπορούμε να την χρησιμοποιήσουμε αμέσως μετά από μία Τύπωσε Πάνω. Μάλιστα και αυτή δεν αλλάζει γραμμή, άρα μπορούμε να τυπώνουμε μέρη της γραμμής χωρίς να φύγουμε από την γραμμή (να γιατί λέγεται Τύπωσε μέρος).

Η Τύπωσε Υπό  γράφει μια γραμμή (αυτήν που αφήνει η Τύπωσε Πάνω, αλλά δεν χρειάζεται να προηγείται), και μετά αλλάζει γραμμή και μετά κάνει ανάλογα ότι έχουμε βάλει να τυπώσει, αλλά στο τέλος δεν αλλάζει γραμμή.

Σημ 1 : Γραμματοσειρά "TIMES NEW ROMAN"
Σημ 1 : Γραμματοσειρά "COMICS"
Γραμματοσειρά "COURIER NEW"
Φαρδια 1
Φόρμα 80,30
Δρομέας 0,5
Τύπωσε Υπό : Τύπωσε Υπό
ι=0 : Α$="1234567890" : Β$="Κέντρο"
Γ$="Γλώσσα Προγραμματισμού Μ2000 | 2016"
Χ=160
Χ1=40
Χ2=120
\\ κάθε 1/30 του δευτερολέπτου
\\ 30 * 1/30  δίνει 1 δευτερόπλετπο
\\ 30 * 1000/30 δίνει 1000 χιλιοστά δευτερολέπτου
Ανανέωση 500
Κάθε 1000/30 {
      ι++
      Δρομέας 0,5
      ανανέωση 0
      Τύπωσε Πάνω
      Πλάγια 1
      Τύπωσε Μέρος @(Χ-((Ι+Χ2) υπολ Χ)-Χ1), Γ$, @(Χ-((Ι+Χ1) υπολ Χ)-Χ1), Γ$
      Πλάγια 0
      Τύπωσε
      Τύπωσε Πάνω
      Τύπωσε Μέρος $(1,12), Α$, "Βήτα"+γραφη$(ι), $(2,20), Β$,
      \\ σπάω την μέρος με σε δυο "αράδες" με την χρήση της @(θέση)
      \\ για να μην χάσω το "μέτρημα"
      \\ Δεν πρόκειται να αλλάξει η γραμμή
      Φαρδιά 0
      Τύπωσε Μέρος @(θέση),$(6,7), ι+1, ι*2, Γραφή$(ι/3, "##.00"), ι**2, $(""), Μορφή$("({0:2})",ι/100)
      Φαρδίά 1
      Α$=Μεσ$(Α$,2)+Αρισ$(Α$,1)
      Β$="."+Β$+"."
      Αν Μήκος(Β$)>12 Τότε Β$="Κέντρο"
      Αν Δείκτης Τότε Έξοδος
}


13.11 Γραμματοσειρές - Επιγραφή

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

Φόντο 1,5
α$={Γειά σου
                  Το όνομά μου είναι Γιώργος
                  }
στοίχιση_κέντρο=2
Ποιότητα = αληθής
Απόσταση_γραμμάτων = -πλάτος.σημείου \\ ένα pixel πιο κοντά
Θέση 6000,6000 \\ θέση δρομέα σε twips    6000/πλάτος.σημείου = pixels
Επιγραφή α$, "Arial Black", 32, Πι/6, στοίχιση_κέντρο, ποιότητα, Απόσταση_γραμμάτων



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

θα δούμε παραδείγματα με διαφάνειες στο αντίστοιχο κεφάλαιο.

13.12 Επιλογή Γραμματοσειράς.

Εκτός από την επιλογή που γίνεται στις Ρυθμίσεις, μπορούμε να ανοίξουμε τον επιλογέα γραμματοσειράς.

Κάνε Λογική$(χ)=Γραφή$(χ,";Αληθής;Ψευδής;")
Επίλεξε.γραμματοσειρά


Αν αριθμός>0 τότε {
      Διάβασε ονομα$, Μεγ, Κωδσελίδα, ιταλ, φαρδ
      Τύπωσε "Γραμματοσειρά:";ονομα$
      Τύπωσε "Μέγεθος:";Μεγ
      Τύπωσε "Κωδικοσελίδα:";Κωδσελίδα
      Τύπωσε "Πλάγια:"; Λογική$(ιταλ)
      Τύπωσε "Φαρδιά:";Λογική$(φαρδ)
} Αλλιώς Τύπωσε "Τίποτα"



13.13 Εμφάνιση Αριθμών με Δεκαδικά 

Για τα δεκαδικά, εσωτερικά χρησιμοποιούμε την τελεία (και στις εισαγωγές), αλλά στην εμφάνιση μπορεί να αλλάξει (Για όλες τις φορές που θα τρέξουμε το περιβάλλον της Μ2000)

Σε ένα τμήμα πρέπει να βάλουμε την Θέσε για να στείλει την εντολή Διακόπτες στον διερμηνευτή γραμμής εντολών (ο διερμηνευτής τμημάτων/συναρτήσεων δεν την γνωρίζει)

Θέσε Διακόπτες "-DEC"
Τύπωσε 12.3 \\ τυπώνει με κόμμα αν ορίζεται το κόμμα από τα windows
Θέσε Διακόπτες "+DEC"
Τύπωσε 12.3 \\ τυπώνει με τελεία



Η αλλαγή με τον διακόπτη DEC είναι μόνιμη (μέχρι να το αλλάξουμε ξανά). Μπορούμε να γνωρίζουμε ανά πάσα στιγμή τι χαρακτήρα έχουμε για δεκαδικά στο σύστημα με αυτό:

Τύπωσε τοπικο$(14)

Και να δούμε τι χρησιμοποιεί η Μ2000:

Τύπωσε Μεσ$(Μορφή$("{0}",1.5),2,1)

Ενώ η εμφάνιση με την τύπωσε μπορεί να δώσει 12.4 ή αυτό 12,4 και ομοίως κάνει η συνάρτηση Μορφή$() που βάζει αριθμούς (και αλφαριθμητικά) σε ένα αλφαριθμητικό, η Γραφή$() πάντα εμφανίζει τα δεκαδικά με τελεία, και η συνάρτηση Τιμή() που δέχεται αλφαριθμητικά και εξάγει τιμή από αυτά - αν υπάρχει αριθμός, αναζητεί τελεία.

Τύπωσε Γραφή$(1.5)

τυπώνει 1.5 πάντα

Τύπωσε Τιμή("12,4"), Τιμή("12.4"), Τιμή(Γραφή$(12.4))

Δίνει
            12              12,4                 12,4
ή αν το τοπικό$(14) είναι τελεία ή έχουμε επιλέξει διακόπτη +DEC (από την αρχή αυτή είναι η επιλογή) τότε θα δούμε αυτό:
            12              12.4                 12.4

Ένα άλλο πράγμα που μας απασχολεί στην εμφάνιση με δεκαδικά είναι το πόσα δεκαδικά θα εμφανιστούν. 

Μπορούμε να χρησιμοποιήσουμε μια γενική εντολή π.χ. Τύπωσε $("######.00") ή ειδικές που μετατρέπουν τον αριθμό σε αλφαριθμητικό όπως εδώ:

Τύπωσε γραφή$(12.2343,"##.00",-10) \\ το μείον σημαίνει από δεξιά, το 10 πλάτος πεδίου
Τύπωσε μορφή$("{0:2:-10}",12.2343) \\ το ίδιο!
Τύπωσε μορφή$("Χ={0:2}, Υ={1:2}, Ζ={2:2}",12.2343, 3/4, 5/6)


(στο επόμενο τεύχος θα δούμε πολλά ακόμα, έχει πολλά τεχνικά η  Μ2000 για η χρήση της οθόνης)