Λόγω προβλημάτων που έχουμε με τη σωστή λειτουργία του Dynamics θα βάλω εδώ προς το παρόνένα μικρό κείμενο που έγραψα και πιστεύω ότι θα βοηθήσει στην κατανόηση των μεταβλητών. Ως την Κυριακή ελπίζω να το έχουμε φτιάξει και να μεταφερθεί εκεί.
-------------------------------------------------------------
2o μέρος της εισαγωγής μας στη Basic και ποιο συγκεκριμένα στη Locomotive και αυτή τη φορά θα γνωρίσουμε τις μεταβλητές.
Για να καταλάβουμε τι είναι μια μεταβλητή υπάρχουν δύο προσεγγίσεις. Η μια είναι η σχολική τα μαθηματικά δημοτικού δηλαδή και η άλλη είναι αυτή που θα πούμε τώρα.
Ο Amstrad 664 έχει 64 ΚΒ μνήμης από ότι θυμόσαστε. Αυτό σημαίνει
64 Kilo Bytes
δηλαδή
64 * 1024 Bytes = 65535
μνήμης αφού το κάθε Kilo ισούται με 1024 Bytes.
Το κάθε Byte αποτελείται από 8 bits. Το bit είναι και η μικρότερη μονάδα μέτρησης μνήμης.
Τον καιρό εκείνο το χρησιμοποιούσαν αρκετά γιατί και το τελευταίο bit ήταν σημαντικό όταν έχεις τόση λίγη μνήμη στη διάθεση σου.
Το κάθε Byte από τα 65535 είναι αριθμημένο με τη λογική ότι ο επεξεργαστής μπορεί να “δει” ή αλλιώς να αναφερθεί σε κάθε ένα από αυτά. με το όνομα του, δηλαδή έναν αριθμό από το 0 ως το 65535.
Ο αριθμός αυτός λέγεται και διεύθυνση για το κάθε byte. To bit η υποδιαίρεση δηλαδή του byte έχει και αυτό αρίθμηση αλλά είναι από το 1 ως 8 και είναι εσωτερική σε κάθε byte.
Στη διεύθυνση 1 λοιπόν που αντιστοιχεί στο byte με αριθμό 1 υπάρχουν 8 bits με αρίθμηση από 1 ως 8.
Στη διεύθυνση 2 που αντιστοιχεί στο byte με αριθμό 2 υπάρχουν 8 bits με αρίθμηση από 1 ως 8 και ούτω κάθε εξής.
Το κάθε byte μπορεί να αποθηκεύσει ή να κρατήσει έναν αριθμό όχι μεγαλύτερο από 255. Αυτός ο αριθμός είναι άσχετος με τη διεύθυνση του byte. Το byte μπορείτε να το φανταστείτε σαν ένα κουτάκι με έναν αριθμό απέξω που είναι η διεύθυνση του και ανοίγοντας το βλέπουμε έναν αριθμό από 0 ως 255. Βασικά θα έλεγα από -128 ως 128 αλλά δε θέλω να σας μπερδέψω ακόμα με πρόσημα.
Γιατί όμως 255 και όχι 500 ή 1000 ή κάποιον άλλο αριθμό?
Η απάντηση βρίσκεται στο δυαδικό σύστημα που χρησιμοποιήται από τους επεξεργαστές και δε μας επιτρέπει με 8 μόλις bits να αναπαραστήσουμε μεγαλύτερο αριθμό από 255.
Χρησιμοποιώντας 2 bytes στη σειρά βέβαια μπορούμε να αναπαραστήσουμε αριθμούς ως και 65535. Η ικανότητα του επεξεργαστή να διαχειρίζεται 2 bytes σαν 1 ή και 4 bytes σαν 1 ώστε να μπορεί να κάνει πράξεις με μεγάλους αριθμούς επιταχύνει πολύ τα πράγματα γιατί θέλει κόπο να κάνεις πράξεις με μεγάλα νούμερα σπάζοντας τα συνέχεια σε 255. Τι θα κάναμε για παράδειγμα αν θέλαμε να πολλαπλασιάσουμε 255*100 ? Το αποτέλεσμα πως θα χωρέσει σε ένα κουτάκι μνήμης ένα byte δηλαδή που χωράει νούμερα μέχρι το 255?
Προς το παρόν πάντως όλα αυτά μας χρειάζονται για να καταλάβουμε τι είναι η μεταβλητές και οι μεταβλητές είναι ακριβώς αυτό. Κουτάκια που έχουν όνομα που είναι αναγνωρίσμο από τον άνθρωπο όπως lives, velocity, score και άλλα που όταν τα ανοίξουμε θα δούμε την τιμή που αναπαριστούνε.
Η διαφορά είναι ότι η Basic σαν γλώσσα υψηλότερου επιπέδου μας γλυτώνει από τις αναφορές σε διευθύνσεις μνήμης και ακόμα καλύτερα μας γλυτώνει από το να φτιάχνουμε ρουτίνες διαχείρισης μεγάλων αριθμών.
Ακόμα καλύτερα η Basic μας δίνει τη δυνατότητα να φτιάξουμε μεταβλητές στις οποίες μπορούμε να αποθηκεύσουμε γράμματα ή σειρές γραμμάτων.
Π.χ
Στο παραπάνω παράδειγμα ορίσαμε μια μεταβλητή με όνομα moto η οποία θα δέχεται αλφαριθμητικά, δηλαδή οτιδήποτε συνδυασμό από γράμματα και αριθμούς και της δώσαμε τιμή τη πρόταση ”Friends dont fear, Shock is here”.
Το $ που βλέπετε δηλώνει την ικανότητα της μεταβλητής να αποθηκεύσει γράμματα. Σε άλλες γλώσσες Basic αυτό είναι περιττό.
Δηλώνοντας τις μεταβλητές με το $ δεν μπορούμε να κάνουμε αυτό π,χ
και να περιμένουμε να μας εμφανίζει 3. Από τη στιγμή που δηλώσαμε ότι αυτό που βρίσκεται ανάμεσα στα διπλά αυτάκια μπορεί να είναι και χαρακτήρες η Basic είναι υποχρεωμένη να το εκλάβει σαν χαρακτήρα οπότε “1” + “2” μας κάνει “12”. Η πρόσθεση δηλαδή όπως τη γνωρίζουμε από τους αριθμούς, στις μεταβλητές αυτού του τύπου πρακτικά ενώνει τα περιεχώμενα των μεταβλητών.
Αν θέλουμε να ορίσουμε απλές μεταβλητές που δέχονται νούμερα και θέλουμε να κάνουμε αριθμητικές πράξεις με αυτές τότε απλά δεν βάζουμε το $.
Ελπίζω αυτή η σύντομη εισαγωγή στις μεταβλητές να ήταν κατανοητή γιατί χωρίς αυτές δεν κάνουμε τίποτα
---------------------------
Περιμένω σχόλια αλλαγών πάνω στο κείμενο ώστε να το παγώσουμε και να το μεταφέρουμε στα wiki/dynamics.
-------------------------------------------------------------
2o μέρος της εισαγωγής μας στη Basic και ποιο συγκεκριμένα στη Locomotive και αυτή τη φορά θα γνωρίσουμε τις μεταβλητές.
Για να καταλάβουμε τι είναι μια μεταβλητή υπάρχουν δύο προσεγγίσεις. Η μια είναι η σχολική τα μαθηματικά δημοτικού δηλαδή και η άλλη είναι αυτή που θα πούμε τώρα.
Ο Amstrad 664 έχει 64 ΚΒ μνήμης από ότι θυμόσαστε. Αυτό σημαίνει
64 Kilo Bytes
δηλαδή
64 * 1024 Bytes = 65535
μνήμης αφού το κάθε Kilo ισούται με 1024 Bytes.
Το κάθε Byte αποτελείται από 8 bits. Το bit είναι και η μικρότερη μονάδα μέτρησης μνήμης.
Τον καιρό εκείνο το χρησιμοποιούσαν αρκετά γιατί και το τελευταίο bit ήταν σημαντικό όταν έχεις τόση λίγη μνήμη στη διάθεση σου.
Το κάθε Byte από τα 65535 είναι αριθμημένο με τη λογική ότι ο επεξεργαστής μπορεί να “δει” ή αλλιώς να αναφερθεί σε κάθε ένα από αυτά. με το όνομα του, δηλαδή έναν αριθμό από το 0 ως το 65535.
Ο αριθμός αυτός λέγεται και διεύθυνση για το κάθε byte. To bit η υποδιαίρεση δηλαδή του byte έχει και αυτό αρίθμηση αλλά είναι από το 1 ως 8 και είναι εσωτερική σε κάθε byte.
Στη διεύθυνση 1 λοιπόν που αντιστοιχεί στο byte με αριθμό 1 υπάρχουν 8 bits με αρίθμηση από 1 ως 8.
Στη διεύθυνση 2 που αντιστοιχεί στο byte με αριθμό 2 υπάρχουν 8 bits με αρίθμηση από 1 ως 8 και ούτω κάθε εξής.
Το κάθε byte μπορεί να αποθηκεύσει ή να κρατήσει έναν αριθμό όχι μεγαλύτερο από 255. Αυτός ο αριθμός είναι άσχετος με τη διεύθυνση του byte. Το byte μπορείτε να το φανταστείτε σαν ένα κουτάκι με έναν αριθμό απέξω που είναι η διεύθυνση του και ανοίγοντας το βλέπουμε έναν αριθμό από 0 ως 255. Βασικά θα έλεγα από -128 ως 128 αλλά δε θέλω να σας μπερδέψω ακόμα με πρόσημα.
Γιατί όμως 255 και όχι 500 ή 1000 ή κάποιον άλλο αριθμό?
Η απάντηση βρίσκεται στο δυαδικό σύστημα που χρησιμοποιήται από τους επεξεργαστές και δε μας επιτρέπει με 8 μόλις bits να αναπαραστήσουμε μεγαλύτερο αριθμό από 255.
Χρησιμοποιώντας 2 bytes στη σειρά βέβαια μπορούμε να αναπαραστήσουμε αριθμούς ως και 65535. Η ικανότητα του επεξεργαστή να διαχειρίζεται 2 bytes σαν 1 ή και 4 bytes σαν 1 ώστε να μπορεί να κάνει πράξεις με μεγάλους αριθμούς επιταχύνει πολύ τα πράγματα γιατί θέλει κόπο να κάνεις πράξεις με μεγάλα νούμερα σπάζοντας τα συνέχεια σε 255. Τι θα κάναμε για παράδειγμα αν θέλαμε να πολλαπλασιάσουμε 255*100 ? Το αποτέλεσμα πως θα χωρέσει σε ένα κουτάκι μνήμης ένα byte δηλαδή που χωράει νούμερα μέχρι το 255?
Προς το παρόν πάντως όλα αυτά μας χρειάζονται για να καταλάβουμε τι είναι η μεταβλητές και οι μεταβλητές είναι ακριβώς αυτό. Κουτάκια που έχουν όνομα που είναι αναγνωρίσμο από τον άνθρωπο όπως lives, velocity, score και άλλα που όταν τα ανοίξουμε θα δούμε την τιμή που αναπαριστούνε.
Η διαφορά είναι ότι η Basic σαν γλώσσα υψηλότερου επιπέδου μας γλυτώνει από τις αναφορές σε διευθύνσεις μνήμης και ακόμα καλύτερα μας γλυτώνει από το να φτιάχνουμε ρουτίνες διαχείρισης μεγάλων αριθμών.
Ακόμα καλύτερα η Basic μας δίνει τη δυνατότητα να φτιάξουμε μεταβλητές στις οποίες μπορούμε να αποθηκεύσουμε γράμματα ή σειρές γραμμάτων.
Π.χ
Κώδικας:
10 moto$=”Friends dont fear, Shock is here”
Το $ που βλέπετε δηλώνει την ικανότητα της μεταβλητής να αποθηκεύσει γράμματα. Σε άλλες γλώσσες Basic αυτό είναι περιττό.
Δηλώνοντας τις μεταβλητές με το $ δεν μπορούμε να κάνουμε αυτό π,χ
Κώδικας:
10 x$=”1”
20 y$=”2”
30 print x$+y$
Αν θέλουμε να ορίσουμε απλές μεταβλητές που δέχονται νούμερα και θέλουμε να κάνουμε αριθμητικές πράξεις με αυτές τότε απλά δεν βάζουμε το $.
Ελπίζω αυτή η σύντομη εισαγωγή στις μεταβλητές να ήταν κατανοητή γιατί χωρίς αυτές δεν κάνουμε τίποτα

---------------------------
Περιμένω σχόλια αλλαγών πάνω στο κείμενο ώστε να το παγώσουμε και να το μεταφέρουμε στα wiki/dynamics.