BASIC

thumb|right|350px|Το περιβάλλον του μεταγλωττιστή Qbasic 4.5

Η **BASIC** είναι μια γλώσσα προγραμματισμού υπολογιστών. Το όνομά της προέρχεται από τα αρχικά των λέξεων **Beginner's All Purpose Symbolic Instruction Code** (Συμβολικός Κώδικας Εντολών Κάθε Χρήσης για Αρχάριους). 

## Ιστορία
Η γλώσσα άρχισε να αναπτύσσεται στο Dartmouth το 1963 για εκπαιδευτικούς σκοπούς. Το συντακτικό της επηρεάστηκε από την FORTRAN, μια γλώσσα επιστημονικών εφαρμογών.

Υπάρχουν πάρα πολλές διάλεκτοι της BASIC. Η ευρεία διάδοση της γλώσσας οφείλεται κατά κύριο λόγο στο ότι ήταν το μόνο διαθέσιμο λογισμικό για συγγραφή προγραμμάτων μικροϋπολογιστών για πολύ μεγάλο χρονικό διάστημα (από τον πρώτο μικροϋπολογιστή του 1975, τον Altair 8800 μέχρι και τα μέσα της δεκαετίας του 1980), και επίσης στην ευκολία σύνταξής της. Ο οικιακός προγραμματισμός από ερασιτέχνες (τους λεγόμενους «σκαπανείς») άνθισε εξαιτίας αυτής της γλώσσας. Ακόμα και σήμερα η γλώσσα BASIC προτιμάται έναντι άλλων για την εισαγωγή στον προγραμματισμό.

Ένα πρόγραμμα γραμμένο στη γλώσσα BASIC πρέπει να μετατραπεί σε γλώσσα μηχανής για να μπορέσει να εκτελεστεί από τον Η/Υ. Όπως συμβαίνει και με τις άλλες γλώσσες προγραμματισμού, την εργασία αυτή την διεκπεραιώνει ένας μεταγλωττιστής ή ένας διερμηνέας. Αρχικά οι διερμηνείς ήταν πολύ δημοφιλείς για την γλώσσα BASIC, αφού ο χρήστης μπορούσε να διακόψει όποτε ήθελε την εκτέλεση του προγράμματος του και να κάνει αλλαγές σε αυτό. Με την εισαγωγή όμως την έννοιας του Δομημένου Προγραμματισμού, καθώς και αντικειμενοστραφών εκδόσεων της γλώσσας, οι διερμηνείς αντικαταστάθηκαν από τους μεταγλωττιστές.

Στην Ελλάδα, ένας διερμηνέας της διαλέκτου "SUPER BASIC" αναπτύχθηκε στις αρχές της δεκαετίας του '80 από την εταιρεία Gigatronics για τους υπολογιστές της.   

:*Ως διάλεκτος για την παρακάτω παρουσίαση θα χρησιμοποιηθεί η [[GW-BASIC]].*

## Σύνταξη
Το κύριο πλεονέκτημα, αλλά και μειονέκτημα της γλώσσας είναι η ευελιξία της στη συγγραφή μικρών τμημάτων κώδικα. 

### Ένα απλό πρόγραμμα
Το παρακάτω πρόγραμμα σε BASIC εμφανίζει στην οθόνη του Η/Υ το μήνυμα «Hello, world!», χρησιμοποιώντας μόνο 2 γραμμές κώδικα:


```basic
10 PRINT "Hello, world!"
20 END
```


ενώ ένα πρόγραμμα σε Pascal, μια άλλη δημοφιλή γλώσσα, θα χρειαζόταν 4 γραμμές κώδικα


```pascal
program Hello;
begin
   writeln('Hello, world!');
end.
```


### Ετικέτες
Βασική έννοια στη γλώσσα BASIC είναι οι *ετικέτες (labels)*. Αυτές είναι αριθμοί που τοποθετούνται στην αρχή κάθε γραμμής και ορίζουν τη σειρά με την οποία θα εκτελούνται οι εντολές, π.χ η γραμμή με αριθμό 35 εκτελείται πριν από την γραμμή με αριθμό 218. Καθώς γράφονται νέες γραμμές, είθισται οι ετικέτες να αριθμούνται ανά 10. Αυτό είναι χρήσιμο στην εισαγωγή γραμμών που ξέχασε ο προγραμματιστής, ώστε να μην αλλάζει κάθε φορά τις προηγούμενες και επόμενες ετικέτες. Όταν περιγράφεται μια εντολή BASIC, εννοείται ότι προηγείται πάντα μια ετικέτα.Σε όλες τις νεότερες εκδόσεις της BASIC τόσο σε περιβάλλον DOS όσο και σε WINDOWS οι ετικέτες έχουν καταργηθεί.

### Μεταβλητές/Εντολές εκχώρησης
Οι μεταβλητές στην γλώσσα BASIC είναι δύο τύπου: αλφαριθμητικές και χαρακτήρα. Για τα ονόματα των αλφαριθμητικών χρησιμοποιούνται κυρίως τα γράμματα του ελληνικού και οι χαρακτήρες υπογράμμισης: _ και η παύλα. Στην περίπτωση που η μεταβλητή είναι τύπου χαρακτήρα, αυτό υποδηλώνεται με τον χαρακτήρα $ στο τέλος του ονόματός της.

Η εκχώρηση τιμών γίνεται τυπικά με την εντολή LET, π.χ:


```basic
10 LET i = 1
20 LET A$ = "Καλοκαίρι"
```


Σε νεότερες εκδόσεις της γλώσσας, η εντολή LET μπορεί να παραληφθεί. Η εκχώρηση τότε γίνεται μόνο με την έκφραση της εντολής : π.χ i=1 και α$="καλοκαίρι".

### Εντολές εισόδου/εξόδου
Η κύρια εντολή εξόδου (στην οθόνη) είναι η PRINT. Η ακριβής σύνταξή της είναι η εξής:


```basic
PRINT "κείμενο1", "κείμενο2", ..., "κείμενοΝ", μεταβλητή1, μεταβλητή2, ..., μεταβλητήΝ
```


Η εντολή **PRINT** εμφανίζει στην οθόνη απλό κείμενο, το οποίο περικλείουμε με εισαγωγικά ώστε να διαχωριστεί από μεταβλητή, π.χ. **PRINT "Αυτό θα δείτε στην οθόνη"** ή έναν οποιοδήποτε αριθμό όπως π.χ. **PRINT 5**.
Εαν θέλουμε να εμφανίσουμε στην οθόνη κάποια μεταβλητή απλά γράφουμε το όνομα της, για παράδειγμα : **PRINT value1** (θα εμφανιστεί το περιεχόμενο της value1) ή **PRINT VALUE1$** (θα εμφανιστεί το περιεχόμενο της VALUE1$). Για να εμφανίσουμε με την ιδια εντολή περισσότερες από μια παραστάσεις (που μπορεί να είναι αριθμοί, κείμενα, μεταβλητές) χρησιμοποιούμε ειδικά σημεία στίξης (**,** και **;**) : π.χ. για να εμφανίσουμε κολλητά δύο παραστάσεις γράφουμε **PRINT "Ο αριθμός είναι ίσος ="**;**VALUE1**. Για εμφάνιση με διάστημα 14 χαρακτήρων ανάμεσα τους γράφουμε **PRINT value1**,**value2**

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

Η κύρια εντολή εισόδου στην BASIC είναι η INPUT. Η σύνταξή της είναι:


```basic
INPUT μεταβλητή1, μεταβλητή2, ..., μεταβλητήΝ
```


Όταν ο Η/Υ εκτελεί μια εντολή INPUT, θέτει σε αναμονή την εκτέλεση του προγράμματος και περιμένει είσοδο δεδομένων από τον χρήστη. Ο χρήστης πρέπει να δώσει ίσο ή μεγαλύτερο αριθμό τιμών, χωρισμένων με κόμμα, και να πατήσει το πλήκτρο ENTER.

Σε μοντέρνες εκδόσεις της BASIC, όπως η Q-BASIC, είναι δυνατόν οι εντολές PRINT και INPUT να συνενωθούν, ώστε να σχηματίσουν μια συντομότερη δομή εισόδου/εξόδου:


```basic
INPUT "κείμενο_προς_τον_χρήστη", μεταβλητή1, μεταβλητή2, ..., μεταβλητήΝ
```


### Δομές επιλογής
Οι δομές επιλογής υλοποιούνται στην BASIC με την ακολουθία IF...THEN...ELSEIF...ELSE...ENDIF. Για παράδειγμα, το επόμενο πρόγραμμα αποφασίζει αν ένας αριθμός που δίνεται από τον χρήστη είναι θετικός, μηδέν ή αρνητικός, και εμφανίζει το κατάλληλο μήνυμα:


```basic
10 PRINT "Δώσε έναν αριθμό"
20 INPUT a
30 IF a<0 THEN
40 PRINT "Ο αριθμός είναι αρνητικός."
50 ELSEIF a=0 THEN
60 PRINT "Ο αριθμός είναι το μηδέν."
70 ELSE
80 PRINT "Ο αριθμός είναι θετικός."
90 ENDIF
100 END
```


### Δομές επανάληψης
Οι δομές επανάληψης υλοποιούνται στην BASIC μέσω δύο βρόχοεντολών: FOR...TO...NEXT και WHILE...WEND.
#### Συγκεκριμένος αριθμός επαναλήψεων
Όταν ένα σύνολο εντολών πρέπει να επαναληφθεί ορισμένες φορές, χρησιμοποιείται η δομή FOR...TO...NEXT. Παράδειγμα αποτελεί το παρακάτω πρόγραμμα, το οποίο τυπώνει τους αριθμούς από το 1 εώς το 10:


```basic
10 FOR i=1 TO 10
20 PRINT i
30 NEXT i
40 END
```


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


```basic
10 i=1
20 WHILE n>=0
30 PRINT i*2%10
40 i=i+1
50 INPUT n
60 WEND
70 END
```


## Δείτε επίσης
* Gambas
* Visual Basic

## Παραπομπές


## Εξωτερικοί σύνδεσμοι

* Qbasic.com - Περιλαμβάνει αρχεία, εισαγωγή στην γλώσσα, χρήσιμους συνδέσμους και μια ενότητα για αρχαρίους.


Κατηγορία:Διαδικαστικές γλώσσες προγραμματισμού