Παρασκευή 16 Οκτωβρίου 2015

Αναθεώρηση 64. Έκδοση 8.

Βελτιώσεις στην εμφάνιση μίξης γραμμάτων στην οθόνη κανονικών, πλάγιων ή και φαρδιών (bold) γραμμάτων. Πριν δούλευε καλά όσο τα bold έδιναν το ίδιο ύψος με τα κανονικά. Διαπίστωσα όμως ότι τα Ms Comic Sans δεν έδιναν το ίδιο με συνέπεια το πρόγραμμα με την ιταλική προφορά (έχει δημοσιευθεί εδώ), να κάνει μη αποδεκτό αποτέλεσμα.

Σχετικά με την διαχείριση της οθόνης
Προστέθηκε μια παραλλαγή στην εντολή Επίπεδο,  η Επίπεδο { } χωρίς αριθμό επιπέδου, μεταξύ του ονόματος και του μπλοκ εντολών. στέλνει την εκτύπωση στο βασικό επίπεδο. Τα επίπεδα όπου μπορούμε να γράψουμε και να σχεδιάσουμε είναι 35. Το περιθώριο, το βασικό επίπεδο, 32 επίπεδα πάνω από το βασικό και ένα η σελίδα του εκτυπωτή. Όλα τα επίπεδα εκτός του εκτυπωτή έχουν λειτουργία χωριστής οθόνης, όπου το κάτω μέρος έχει ολίσθηση, αυτόματη προς τα πάνω (νέες γραμμές έρχονται κάτω και χάνονται οι πρώτες), αλλά με εντολή ξεχωριστά μπορούμε κατά βούληση να την ολισθαίνει πάνω ή κάτω, κατά μια γραμμή χαρακτήρων. Μπορούμε να κάνουμε όλο το επίπεδο να ολισθαίνει αλλά δεν μπορούμε να αφαιρέσουμε αυτό το μέρος. Για μια απλή κατανόηση...δοκιμάστε το 

>Οθόνη ,-10  (το γράφουμε έτσι και πατάμε enter)
το κόμμα δηλώνει εδώ ότι η πρώτη παράμετρος παραλείπεται. Η πρώτη παράμετρος είναι το χρώμα. Αν το παραλείψουμε θα χρησιμοποιήσει το καθορισμένο από την τελευταία φορά. Το -10 δηλώνει δέκα γραμμές από το κάτω μέρος, θα είναι το μέρος ολίσθησης (πάντα κάτω είναι το μέρος ολίσθησης). 

>Οθόνη 15, 0
 Τώρα όλη η οθόνη γίνεται άσπρη και όλη είναι οθόνη που ολισθαίνει, δηλαδή είναι ένα τμήμα. 

Ο σκοπός να έχουμε οθόνη με ολίσθηση είναι για να έχουμε ένα σταθερό πάνω μέρος και ένα μεταβλητό κάτω μέρος.

Είναι απαραίτητο εδώ ο αναγνώστης να αντιληφθεί τι μπορεί να εμφανίσει στην οθόνη. Αφενός μπορεί να εμφανίσει γράμματα, αριθμούς, τίτλους, εικόνες, σχήματα, γραφήματα, βίντεο, ιστοσελίδες. Αφετέρου μπορεί να χρησιμοποιήσει την οθόνη για να εισάγει, αριθμούς, γράμματα, κείμενο σε μια γραμμή με ολίσθηση, κείμενο σε πολλαπλές γραμμές με εμφάνιση παραθύρου αυτού. Λίστα επιλογών (drop down menu). Επιπλέον όπως θα φανεί και παρακάτω, μπορούμε να ορίσουμε στόχους πάνω στην οθόνη, που ή καλούν κάποιο γενικό τμήμα, ή αφήνουν γράμματα στην εσωτερική μνήμη του πληκτρολογίου (μόνο για την εφαρμογή).


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

Τα νήματα και πώς δεν μπερδεύονται...οι εξαγωγές.
Η Μ2000 έχει νήματα επεξεργασίας, ως τμήματα κώδικα που μεταγράφονται σε ειδικά αντικείμενα τύπου "διαδικασία" και τα οποία μας δίδουν προγραμματιστικά ένα νούμερο, τον χειριστή του, και μπορούμε να κάνουμε τέσσερα πράγματα: Να καθορίσουμε ένα χρονικό διάστημα εκκίνησης, να δώσουμε εντολή να σταματήσει (στο τέλος του). να δώσουμε εντολή να ξαναξεκινήσει, να δώσουμε εντολή για άμεση διαγραφή. Τα νήματα είναι μέρος του τμήματος ή της συνάρτησης που τα δημιουργεί, και χάνονται αν χαθεί το "πατρικό". Ουσιαστικά μπορεί ένα νήμα να εκτελεστεί τελευταία φορά αφού τερματίσει το τμήμα και αυτό σημαίνει ότι αναφορές σε μεταβλητές δίνουν λάθος. Όμως έχουμε δυο δυνατόιτητες, να χρησιμοποιήσουμε ένα νήμα ειδικό που λέγεται Κύριο.Έργο (υπάρχει τελεία ανάμεσα στα ονόματα), και το οποίο είναι ένα νήμα με μια ιδιότητα, να τερματίζει όλα τα νήματα του τμήματος, εκτός από εκείνα των ειδικών τύπων, τα νήματα για μουσική και για σωληνώσεις. Κάθε νήμα έχει δικό του σωρό αλλά οι μεταβλητές ανήκουν στο τμήμα που δημιουργήθηκε. Το ζήτημα είναι ότι αν φτιάξουμε νέες μεταβλητές (και όχι προσωρινές) μέσα σε ένα νήμα τότε αν κάποιο νήμα έχει καλέσει ένα τμήμα πριν από την δημιουργία των μεταβλητών μας, με το που θα τερματίσει το νήμα θα καθαρίσει και τις μεταβλητές του νήματος. Αυτό συμβαίνει γιατί στην Μ2000 ότι δημιουργείται  και έχει όνομα θα πεθάνει μόλις πεθάνει ο δημιουργός του, με συνέπεια το τελευταίο να χάνεται πρώτο. Εξαίρεση δεν υπάρχει. Αυτό που υπάρχει είναι να αντιλαμβανόμαστε τα αντικείμενα που μεταφέρονται προς τα πίσω, ως αποτέλεσμα να μετακινούν κάτι που δημιουργήθηκε από εκείνο που με την παράδοση ..τερμάτισε. Ουσιασιτκά τα αντικείμενα που επιστρέφονται (ή ρευστά αντικείμενα) δεν έχουν όνομα, μέχρι να απδώσει το σύστημα ένα προσωρινό ή να αντιγράψουμε ένα αντικείμενο σε μια ομάδα (η οποία έχει όνομα). Αφήνω αυτήν την παρένθεση, θα δούμε άλλη φορά το θέμα των αντικειμένων. Το πρόβλημα που θα θίξω εδώ έχει να κάνει με την ασύγχρονη λειτουργία των νημάτων. Μπορούμε με μια εντολή π.χ. Εισαγωγή Α$ να περιμένουμε να εισαχθεί μια τιμή στην A$ και παράλληλα να τρέχουν νήματα, τα οποία να γράφουν σε άλλο μέρος της οθόνης ή σε άλλο επίπεδο. Η εισαγωγή γίνεται με δικό της δρομέα (cursor) ο οποίος ξεκινάει με τον κανονικό, και καταλήγει στον κανονικό. Στο ενδιάμεσο αν ένα νήμα θέλει να εμφανίσει κάτι παραπάνω..μπορεί να το κάνει. Αν όμως έχουμε δυο τρια νήματα, τότε μπορούμε να εκμεταλευθούμε την ολίσθηση της οθόνης (το κάτω μέρος του παραθύρου) και διαδιοχικά να τυπώνουν όλα τα νήματα. Υπάρχει πρόβλεψει για μπλοκ εντολών που μπορούν να εκτελεστούν μόνο όταν η κατάσταση μιας μεταβλητής το επιτρέπει. Πολλά μπλοκ με την ίδια μεταβλητή, σε διαφορετικά νήματα, εξασφαλίζουν ότι ένα από αυτά μπορεί να τρέξει ανά πάσα στιγμή (τα άλλα κάνουn προσπέραση, ή αλλιώς αφήνουν το μπλοκ για την επόμενη φορά- skip.

Έτσι ένας τρόπος να μην μπερδεύονται τα νήματα είναι  να απομονώνουμε με τα ειδικά μπλοκ
Μέρος {  } ως άλφα  όπου άλφα είναι η μεταλητή ελέγχου, η οποία αλλάζει τιμή όταν ένα μπλοκ τρέχει. Μπορούμε να την ορίσουμε τοπική ή γενική (σε περίπτωση που έχουμε νήματα σε μια γραμμή εκτέλεσης, π,χ, το Α έχει νήματα το 20010 και το 20014 και καλεί το Β με νήματα το 20017 και 20018, θα τρέχουν και τα τέσσερα νήματα, ενώ το Α θα περιμένει να τερματίσει το Β.

'Ενας άλλος τρόπος είναι να χρησιμοποιήσουμε τις δομές:
Περιθώριο {}. Επίπεδο {}, Επίπεδο ένα_Νούμερο {}, Εκτυπωτής { }.
Το πρώτο είναι η φόρμα της γλώσσας(το παράθυρο κατά την έννοια του λειτουργικού), το δεύτερο είναι η βασική οθόνη, το τρίτο έχει 32 επίπεδα πάνω από την οθόνη (και έχουμε δυνατότητα να τα αλλάζουμε, να φέρνουμε μπροστά αυτό που θέλουμε), και τέλος ο Εκτυπωτής. Έτσι μέσα από ένα νήμα αν θέλουμε να γράψουμε πρώτα στην βασική οθόνη και μετά στο επίπεδο ένα θα δώσουμε δυο ξεχωριστές εντολές όπου μέσα σε αυτές (στο μπλοκ { }) θα βάλουμε τις εντολές που θέλουμε, π.χ. Τύπωσε ή Χάραξε ή άλλες που φτιάχνουν γραφικά ή βάζουν εικόνες.
Τα νήματα μπορούν να χρησιμοποιηθούν με τμηματική σύγχρονη εκτέλεση ή με διαδοχική. Για την πρώτη, όσες εντολές είχε σε μπλοκ εκτελούνται μαζί και μετά το σύστημα αλλάζει νήμα. Έτσι όταν τυπώνουμε με τις παραπάνω εντολές ξέρουμε ότι σε όλη τη διάρκεια δεν θα τυπώσει τίποτα άλλο.
Θα ανεβάσω ένα παράδειγμα (το έχω έτοιμο, αλλά το είχα γράψει με αγγλικές εντολές...και τώρα θα το αλλάξω) όπου βάζουμε στόχους σε περιθώριο, βασική οθόνη, και στο επίπεδο ένα, σε καθένα με άλλη γραμματοσειρά, και βάζουμε μερικά νήματα, ένα να γράφει την ώρα στο περιθώριο ανά δευτερόλεπτο, ένα άλλο να μετακινεί το επίπεδο ανά 3 δευτερόλεπτα και να γράφει και δυο αράδες, ένα άλλο να αλλάζει το περιεχόμενο ενός στόχου (την επιγραφή του) (στο επίπεδο 1) και όλα αυτά ενώ οι στόχοι είναι ενεργοί, και με κλικ εκτελούν μια και μόνο εντολή ένα κλικ (εκτός από ένα που κάνει και τερματισμό). Επιπλέον μπορούμε να τερματίσουμε με πάτημα πλήκτρου.
Ένα δεύτερο παράδειγμα, που έχω και αυτό στα αγγλικά, θα το γυρίσω στα ελληνικά, είναι αυτό που δείχνει πως κάνει κανείς το παράθυρο του περιβάλλοντος της Μ2000 σαν παράθυρο των windows με στόχο που μετακινεί τη φόρμα, με άλλον ένα που κάνει ελαχιστοποίηση και ένα ακόμα που αντί να κλείνει βγάζει το πρόγραμμα στην γραμμή εντολών με έτοιμη εντολή (πατάμε enter). Ενώ λοιπόν λειτουργούν οι στόχοι, εμφανίζεται ένας αριθμός να αυξάνει, εμφανίζονται μηνύματα όταν μετακινούμε το παράθυρο, στην αρχή και στο τέλος, και παράλληλα στο κάτω μέρος το πρόγραμμα περιμένει εισαγωγή. Δείχνω πέντε τρόπους εισαγωγής, οι δυο τελευταίοι με κείμενο πολλαπλών γραμμών, και οι τρεις τελευταίοι με δυνατότητα σύρε και άφησε (drag and drop), το οποίο δουλεύει  χωρίς να σταματάει το βασικό νήμα.

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

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

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