Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
238
content/articles/23/02_xbasic.md
Κανονικό αρχείο
238
content/articles/23/02_xbasic.md
Κανονικό αρχείο
|
@ -0,0 +1,238 @@
|
|||
+++
|
||||
title = 'Xbasic'
|
||||
date = '2000-04-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Κώστας Τσακάλογλου(mailto:tsakf@hellug.gr)'
|
||||
issue = ['Magaz 23']
|
||||
issue_weight = 2
|
||||
+++
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Μία γλώσσα προγραμματισμού Basic που έχει αρκετά στοιχεία C.*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Κατά την τακτική επίσκεψη μου στους δικτυακούς χώρους πέρασα και από το site της [Sourceforge](http://Sourceforge.net). Στην προσπάθεια αναζήτησης εργαλείων
|
||||
προγραμματισμού για το LINUX ζήτησα να δώ τι υπάρχει από Developement tools. Προσπαθώντας να δω τελικά με τι θα δουλέψω τώρα που έστησα και εγω επιτέλους το
|
||||
Linuxάκι μου (SUSE 6.3) έπεσα επάνω σε ένα link που έγραφε Xbasic. Τι ωραία! Λές να υπάρχει κάτι ενδιαφέρον, αναρωτιέμαι.. Μια και γράφω σε Basic από την εποχή
|
||||
του TRS-80 καλό θα ήταν να βρω κάτι που δεν θα μου αλλάξει και πολύ το στύλ μου. Ακολουθώντας τα διάφορα links πηγαίνω στην κατάλληλη σελίδα για να δω
|
||||
τελοσπάντων τι πράγμα είναι αυτή η Xbasic. Επιλέγοντας να δω κάποια οθόνη από το πρόγραμμα βρέθηκα μπροστά στην παρακάτω εικόνα:
|
||||
|
||||

|
||||
|
||||
Αρκετά όμορφο περιβάλλον για να γράφει κανείς πρόγραμμα, για να δούμε όμως από ουσία τι λέει:
|
||||
|
||||
Ετσι αποφάσισα να κατεβάσω το πρόγραμμα και να το εγκαταστήσω στο μηχάνημά μου. Σύμφωνα με τις οδηγίες εγκατάστασης, έπρεπε να κατεβάσω το αρχείο
|
||||
*xblinux.tar.gz* στο μηχάνημά μου και μετά να πληκτρολογήσω τις παρακάτω εντολές:
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
cd /
|
||||
tar xfz xblinux.tar.gz
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Αφού λοιπόν το κατέβασμα έγινε μια χαρά και το tar έκανε την δουλειά του, ξεκινάω τα X (KDE). Ανοίγω το Bash Terminal και γράφω:
|
||||
|
||||
cd /usr/xb
|
||||
xb
|
||||
|
||||
Ωραία ξεκίνησε μια χαρά και ήρθε η ώρα να γράψω τις πρώτες μου εντολές. Μόλις δίνω την εντολή για το ξεκίνημα συγγραφής νέου προγράμματος να και άλλη μια
|
||||
έκπληξη.
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
'
|
||||
'
|
||||
' ######################
|
||||
' ##### Entry () #####
|
||||
' ######################
|
||||
'
|
||||
' Programs contain:
|
||||
' 1. A PROLOG with type/function/constant declarations.
|
||||
' 2. This Entry() function where execution begins.
|
||||
' 3. Zero or more additional functions.
|
||||
'
|
||||
FUNCTION Entry ()
|
||||
|
||||
END FUNCTION
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Αυτό δεν θυμίζει λίγο στο ξεκίνημα για την C;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
main()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Προσπαθώντας έτσι να ρίξω μια ματιά στην γλώσσα για να δω περίπου τι κάνει, πέφτω επάνω στους τύπους των μεταβλητών. Αρχίζω και βλέπω τύπους που δεν υπάρχουν
|
||||
στην MS-BASIC ούτε καν στην VISUAL BASIC. Είδα διάφορα ωραία πράγματα και τα παραθέτω. Πρώτα από όλα να ξεκινήσω με τον κατάλογο των επιθεμάτων.
|
||||
|
||||
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
||||
\ SBYTE 8-bit signed integer
|
||||
`@`
|
||||
|
||||
`@@` UBYTE 8 bit unsigned integer
|
||||
|
||||
\% SSHORT 16 bit signed integer
|
||||
|
||||
%% USHORT 16 bit unsigned integer
|
||||
|
||||
& SLONG 32 bit signed long integer
|
||||
|
||||
&& ULONG 32 bit unsigned long integer
|
||||
|
||||
\~ XLONG 32/64 bit signed machine integer
|
||||
|
||||
\$\$ GIANT 64 bit signed giant (financial) integer
|
||||
|
||||
! SINGLE IEEE single precision floating point
|
||||
|
||||
\# DOUBLE IEEE double precision floating point
|
||||
|
||||
\$ STRING STRING of unsigned bytes
|
||||
|
||||
|
||||
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
||||
|
||||
Από τον παραπάνω πίνακα, οι τύποι SBYTE ,UBYTE,USHORT,ULONG,XLONG και GIANT δεν υπάρχουν στην MS-BASIC και VISUAL BASIC. Οι Unsigned τύποι καθαρά είναι τύποι
|
||||
που υποστηρίζει η C. Για τον τύπο XLONG νομίζω ότι είναι μια χαρά για εφαρμογές προγραμματισμού συστήματος (systems programming).
|
||||
|
||||
Οι μεταβλητες όμως στην XBASIC μπορούν να έχουν και προθέματα που δείχνουν την χρήση των μεταβλητών στις διάφορες ρουτίνες και προγράμματα. Τα προθέματα που
|
||||
μπορούν να χρησιμοποιηθούν στην XBASIC είναι:
|
||||
|
||||
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
||||
\ SHARED Η μεταβλητή είναι διαθέσιμη σε όλες τις ρουτίνες
|
||||
\#
|
||||
|
||||
\#\# EXTERNAL Η μεταβλητή είναι διαθέσιμη και σε άλλα προγράμματα
|
||||
|
||||
\$ LOCAL CONSTANT Η μεταβλητή έχει σταθερή τιμή για την τρέχουσα
|
||||
ρουτίνα
|
||||
|
||||
\$\$ SHARED CONSTANT Η μεταβλητή έχει σταθερή τιμή και είναι διαθέσιμη σε
|
||||
όλες τις ρουτίνες
|
||||
|
||||
|
||||
----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
|
||||
|
||||
Θέλει προσοχή όταν ορίζουμε και χρησιμοποιούμε μεταβλητές στην XBASIC. Όπως και στο Linuxάκι μας τα κεφαλαία / πεζά είναι σημαντικά για την ονοματολογία των
|
||||
αρχείων, έτσι και στην XBasic τα κεφαλαία / πεζά δίνουν διαφορετικά ονόματα μεταβλητών άρα και διαφορετικές τιμές. Για αυτή την γλώσσα τα ονόματα COUNT, Count
|
||||
και count είναι διαφορετικές μεταβλητές.
|
||||
|
||||
Σύμφωνα με προηγούμενα καταλαβαίνουμε ότι οι εντολές πρέπει να γράφονται αποκλειστικά με κεφαλαία γράμματα γιατί διαφορετικά η γλώσσα τις βλέπει σαν μεταβλητές.
|
||||
Έτσι το:
|
||||
|
||||
FOR I%=1 to 100
|
||||
|
||||
είναι σωστό, ενώ το:
|
||||
|
||||
For I%=1 to 100
|
||||
|
||||
είναι λάθος γιατί η γλώσσα καταλαβαίνει ότι υπάρχει μια μεταβλητή For όπου δεν την κάνουμε τίποτα.
|
||||
|
||||
Παρακάτω συνέχισα την ανάγνωση και έπεσα στους τελεστές συγκρίσεων. Εκεί πάλι είδα στοιχεία από την C να ξεφυτρώνουν όπως οι τελεστές:
|
||||
|
||||
= ,<>,< ,<=,>=,>
|
||||
|
||||
μπορούν να εκφραστούν και αντίστοιχα με
|
||||
|
||||
==,!=,!>=,!>,!<,!<=
|
||||
|
||||
Επίσης αν ρίξουμε μια ματιά στον παρακάτω πίνακα θα δούμε τελεστές διευθύνσεων μνήμης (pointers) που τόσο αρέσουν στους προγραμματιστές της C και διάφορα άλλα
|
||||
καλούδια όπως μετακινίσεις bit κλπ.
|
||||
|
||||
------------------- ------------------- ------------------- ------------------- ------------------- ------------------- ------------------- -------------------
|
||||
\ ALT ΚIND CLASS OPERANDS RETURNS PREC COMMENTS
|
||||
OP
|
||||
|
||||
& unary 10 AnyType Address 12 Address of Object
|
||||
Data
|
||||
|
||||
&& unary 10 AnyType Address 12 Address of Object
|
||||
Handle
|
||||
|
||||
! unary 9 Numeric T/F 12 Logical Not (TRUE
|
||||
if 0, else FALSE)
|
||||
|
||||
!! unary 9 Numeric T/F 12 Logical Test (FALSE
|
||||
if 0, else TRUE)
|
||||
|
||||
NOT \~ unary 9 Integer SameType 12 Bitwise NOT
|
||||
|
||||
\+ unary 8 Numeric SameType 12 Plus
|
||||
|
||||
\- unary 8 Numeric SameType 12 Minus
|
||||
|
||||
\>\>\> binary 7 Integer LeftType 11 Arithmetic Up Shift
|
||||
|
||||
\<\<\< binary 7 Integer LeftType 11 Arithmetic Down
|
||||
Shift
|
||||
|
||||
\<\< binary 7 Integer LeftType 11 Bitwise Left Shift
|
||||
|
||||
\>\> binary 7 Integer LeftType 11 Bitwise Right Shift
|
||||
|
||||
\*\* binary 4 Numeric HighType 10 Power
|
||||
|
||||
/ binary 4 Numeric HighType 9 Divide
|
||||
|
||||
\* binary 4 Numeric HighType 9 Multiply
|
||||
|
||||
\\ binary 6 Numeric Integer 9 Integer Divide
|
||||
|
||||
MOD binary 6 Numeric Integer 9 Modul. (Int.Remain)
|
||||
|
||||
\+ binary 5 Numeric HighType 8 Add
|
||||
|
||||
\+ binary 5 String String 8 Concatenate
|
||||
|
||||
\- binary 4 Numeric HighType 8 Subtract
|
||||
|
||||
AND & binary 3 Integer HighType 7 Bitwise AND
|
||||
|
||||
XOR \^ binary 3 Integer HighType 6 Bitwise XOR
|
||||
|
||||
OR \| binary 3 Integer HighType 6 Bitwise OR
|
||||
|
||||
\> !\<= binary 2 NumStr T/F 5 Greater-Than
|
||||
|
||||
\>= !\< binary 2 NumStr T/F 5 Greater-Or-Equal
|
||||
|
||||
\<= !\> binary 2 NumStr T/F 5 Less-Or-Equal
|
||||
|
||||
\< !\>= binary 2 NumStr T/F 5 Less-Than
|
||||
|
||||
\<\> != binary 2 NumStr T/F 4 Not-Equal
|
||||
|
||||
= == binary 2 NumStr T/F 4 Equal(also
|
||||
\"!\<\>\")
|
||||
|
||||
&& binary 1 Integer T/F 3 Logical AND
|
||||
|
||||
\^\^ binary 1 Integer T/F 2 Logical XOR
|
||||
|
||||
\|\| binary 1 Integer T/F 2 Logical OR
|
||||
|
||||
= binary NumStr RightType 1 Assignment
|
||||
|
||||
T/F T/F always returned
|
||||
as XLONG
|
||||
|
||||
|
||||
------------------- ------------------- ------------------- ------------------- ------------------- ------------------- ------------------- -------------------
|
||||
|
||||
Κάτι Address και bitwise shift έχουν κάποιο ενδιαφέρον για κάποιους που θέλουν να χρησιμοποιήσουν αυτές τις εντολές αλλά η μέχρι τώρα γνωστές Basic δεν τους
|
||||
έδιναν αυτή την δυνατότητα.
|
||||
|
||||
Από μια πρώτη ματιά νομίζω ότι κάποιος που ξέρει BASIC και έχει αποφασίσει να αρχίσει να γράφει προγράμματα για το LINUX καλό είναι να ρίξει μια ματιά σε αυτή
|
||||
την γλώσσα που εκ πρώτης όψεως υπόσχεται πολλά. Εκτός από τις εντολές που δίνουν την δύναμη της C στον προγραμματιστή υπάρχει και παράθυρο εργαλείων για την
|
||||
κατασκευή μιας φόρμας. Κουμπιά και όλα τα Widgets των X μάλλον υποστηρίζονται. Λέω μάλλον γιατί δεν έχω προλάβει να αρχίσω να κάνω κάτι με αυτή την γλώσσα. Απλά
|
||||
όταν την είδα με μια πρώτη ματιά μου άρεσε τόσο που αποφάσισα να μοιραστώ τις εντυπώσεις που με άλλους προγραμματιστές γράφοντας αυτό το κείμενο και
|
||||
παρουσιάζοντάς το στο Magaz. Τον άλλο μήνα που θα έχω κάνει κάτι θα γράψω και νεότερα. Εχω σκοπό να κρατάω σημειώσεις για κάθε τι που κάνω και να παρουσιάζω
|
||||
κάθε τόσο από τη στήλη του Magaz κάθε τι καινούργιο όπως θα το μαθαίνω. Αυτά τα λίγα για τώρα και τα ξαναλέμε στο επόμενο Magaz.
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα