Πέμπτη 28 Ιανουαρίου 2016

Προγραμματισμός 0007

Στο σημερινό άρθρο θα δούμε ένα πρόγραμμα που ζαλίζει! Ζαλίζει γιατί μπορούμε να κάνουμε την οθόνη μας να τυπώνει μια λέξη ή περισσότερες να τρέχουν αριστερά η δεξιά!


Το πρόγραμμα το γράφουμε σε ένα τμήμα Α π.χ. με Σ Α ανοίγει ο διορθωτής, κάνου επικόλληση το παρακάτω, πατάμε Esc, γράφουμε Σώσε π007 και σώνεται ως π007.gsb (φορτώνει άλλη φορά με Φόρτωσε π007). Όταν θέλουμε να ξανά σώσουμε πατάμε ctrl+A.

Πρώτα ρυθμίζουμε η ανανέωση να γίνεται κάθε 50 χιλιοστά του δευτερολέπτου! (δοκιμάστε κάτι άλλο).
Μετά επιλέγουμε μια στατική μεταβλητή (για να θυμάται τι έχουμε δώσει αν ξανατρέξουμε το τμήμα). Για να σβήσει η στατική μεταβλητή δίνουμε την εντολή Καθαρό πριν καλέσουμε το τμήμα.
Μετά χρησιμοποιούμε την εντολή Εισαγωγή με το χαρακτήρα ! που κάνει εισαγωγή με αναλογικούς χαρακτήρες (δηλαδή κανονικό κείμενο, όχι με σταθερό πλάτος όπως της κονσόλας). Το 32 λέει το φάρδος του πεδίου εισαγωγής. Εξ ορισμού παίρνει μέχρι 50 χαρακτήρες αλλά παίζει και έτσι:
Εισαγωγή ! γ$, 30 μήκος=60
Οπότε με το παραπάνω ορίζω μήκος 60 χαρακτήρων που μπορούν το μέγιστο να αποθηκευτούν στο γ$. Το πεδίο αυτό εμφανίζεται πάνω από την οθόνη και μετά εξαφανίζεται. Έχει και άλλες ιδιότητες. Αν αντί για αλφαριθμητικό ζητάμε αριθμό (εκεί δεν υπάρχει μήκος) τότε υπάρχει έλεγχος στο τι γράφουμε, δεν μας αφήνει να γράψουμε κάτι χωρίς αριθμό.  Με Esc ή με enter ή με βελάκια κάνουμε έξοδο από την εισαγωγή. Μπορούμε να δούμε τι έξοδο προτίμησε ο χρήστης με την εσωτερική μεταβλητη Πεδίο (δείτε το Βοήθεια Πεδίο, η εντολή Εισαγωγή ! είναι η Πεδίο για αναλογικη γραφή, έχει μικρές διαφορές, αλλά στην έξοδο είναι ίδιες)

Η εντολή τοπική (τοπικές) δεν χρειάζεται. Θα μπορούσαμε να βάζαμε μόνο το α=Αληθές, και το ν το ορίζουμε παρακάτω με τη τιμή που δίνουμε. Όπως και η εντολή Στη (αντιστοιχεί στη Let) δεν χρειάζεται, απλά τα έχουμε για ομορφιά εδώ! Έχουν την σημασία τους αλλά εδώ δεν θα εξηγηθεί παραπάνω.
Κάθε φορά που θα ξεκινάμε το πρόγραμμα θα μας εμφανίζει αυτό που θέλουμε να χειριστεί, και μετά θα βλέπουμε το αποτέλεσμα. Τερματίζει το πρόγραμμα αν πατήσουμε το διάστημα (αριθμός 32) ή αν πατήσουμε Esc (δεν φαίνεται αλλά με αυτό κάνουμε escape - απόδραση). Φυσικά τερματίζει αν το μήκος είναι μικρότερο από 2 (δεν έχει νόημα).


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

Η δομή Κάθε { } κάνει επανάληψη του μπλοκ { } κάθε 50 χιλιοστά του δευτερολέπτου (το λιγότερο). Βγαίνουμε με εντολή Έξοδος.

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

Εδώ μαθαίνουμε για την χρήση της Μεσ$() ή Mid$() και της Αρισ$() ή Left$(). Η Μεσ$() παίρνει και τρίτη παράμετρο, τον αριθμό χαρακτήρων που θέλουμε. Αν δεν δώσουμε, όπως εδώ, τότε μας γυρνάει όλους τους χαρακτήρες, από τη θέση που δηλώνει η δεύτερη παράμετρος.

Η συνάρτηση πατημένο() δίνει αληθές αν την στιγμή του ελέγχου είναι πατημένο ένα πλήκτρο (την έχουμε δει την εντολή στο πρόγραμμα του πιάνου). Το νούμερο είναι το νούμερο του πλήκτρου (αν και εδώ τυχαίνει να είναι το ASCII νούμερο του διαστήματος). Τα νούμερα αυτά λέγονται Virtual Key Codes   και στη σελίδα της Microsoft . Π.χ. για το κουμπί Home λέει:


VK_HOME
0x24
Το 0x24 είναι δεκαεξαδικό νούμερο. Η Μ2000 τα διαβάζει όπως είναι (με το 0χ ή 0x). Η Τύπωσε βγαίνει και σε δεκαεξαδκό, ως Δεκαεξ δηλαδή Δεκαέξ 12*30 θα δώσει αποτέλεσμα σε δεκαεξαδικό (όχι αρνητικούς, δίνει σύμβολο λάθους ???- και όχι πάνω από 0xFFFFFFFF γιατί δίνει λάθος ???+). Μπορούμε να γράψουμε Δεκαεξ 0xA120+0xFF00 και να προσθέσουμε δυο unsign (χωρίς πρόσημο)  δεκαεξαδικούς. Οι μεταβλητές double (πραγματικές) και  ακέραιες με % στο τέλος του ονόματος (double εσωτερικά) μπορούν να κρατούν unsign δεκαεξαδικούς. Η συνάρτηση Δεκαεξ() δίνει τον αριθμό ως αλφαριθμητικό, χωρίς το 0x μπροστά. Μπορεί μάλιστα να δώσει 1,2,3 ή 4 Byte δεκαεξαδικό, αν το βάλουμε ως δεύτερη παράμετρο (εξ ορισμού είναι το 4).

Το ~ εδώ α~ κάνει το αληθές ψευδές ή το ψευδές αληθές στην μεταβλητή α...Χωρίς αυτό θα θέλαμε α = όχι α
Αυτό σημαίνει ότι ο διερμηνευτής θα αναζητούσε δύο φορές την μεταβλητή, αλλά με το α~ την αναζητεί μια.
Υπάρχουν και άλλες συντόμευσεις.
αν κ=10 η κ-! κάνει τη κ ως -10 δηλαδή κάνει αλλαγή προσήμου
Προσοχή το ~ στα αλφαριθμητικά είναι το like δηλαδή:
Τύπωσε "alfa" ~ "a*"δίνει -1 (αληθές)
(τα ++ και -- σε έκφραση γίνονται + και +, ενώ αν έχουμε μια μεταβλητή έστω κ με κ++ αυξάνουμε κατά ένα ενώ με --μειώνουμε κατά ένα, υπάρχουν και τα +=, -=, *=, /=)

Ανανέωση 50
Τοπικές α=Αληθές, ν=0
Στατική γ$="Το όνομά σου "
Εισαγωγή ! γ$, 30
Στη ν=Μήκος(γ$)
Αν ν<2 Τότε Έξοδος
Κάθε 50 {
      Αν Τυχαίος(1,80)<4 Τότε α~
      Αν α Τότε {
            Στη γ$= Μεσ$(γ$,ν)+Αρισ$(γ$,ν-1)
      } Αλλιως {
            Στη γ$= Μεσ$(γ$,2)+Αρισ$(γ$,1)
      }
      Τύπωσε Μερος $(0),γ$+γ$+γ$+γ$+γ$
      Τύπωσε
      Αν Πατημένο(32) Τότε έξοδος
}





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

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

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