BASIC

**BASIC** edo **B**eginner's **A**ll-purpose **S**ymbolic **I**nstruction **C**ode (Hasiberrientzako helburu guztietarako instrukzioen kode sinbolikoa) maila altuko programazio lengoaia familia bat da. Erabilterraza zen lengoaia bat izateko asmoz sortu zen, 1964an. Baina 1980ko hamarkadan zabaldu zen bere erabilera batez ere, eta gaur egun, beronen aldaera ugari ditugu gure artean.

BASIC lengoaiak izugarrizko ospea izan zuen, bi inplementaziori esker batez ere, Tiny BASIC eta Microsoft BASIC, eta mikroordenagailu edo mikrokonputagailuen lehen lengoaia bihurtu zen. Garrantzi handiko beste inplementazioen artean, hauek dira aipagarrienak: CBASIC (BASIC konpilatua), Integer eta Applesoft BASIC (Apple II-rentzat), GW-BASIC (konputagailu pertsonalentzat), Turbo BASIC (Borland) eta Microsoft QuickBASIC.

BASIC lengoaiak aldaketak izan ditu urteak joan ahala. Horrela, aurreneko bertsioak interpretatuak ziren, ez egituratuak. Azkenekoak, berriz, egituratuak dira, eta sarritan, baita konpilatuak ere. BASIC izan da urte askotan zehar programatzaile hasiberriek ikasten duten lehen lengoaia, erabilerraza eta ulerterraza delako, eta beste lengoaia zailago batzuen oinarrizko kontzeptu berdinak dituelako.

BASICen bilakaeran funtsezkoa izan zen Microsoften *Visual Basic* (VB) lengoaiaren sorrera. Lengoaiaren ohiko gako-hitz guztiak erabili arren (sententziak, kontrol-egiturak eta barne-funtzioak), datu-motak eta haien maneiua barne; VB  askoz ere ahaltsuagoa eta eboluzionatuagoa da; Windows plataformatan gehien erabiltzen den lengoaietako bat izanik, aplikazio komertzialetan nagusitasuna izatera iritsiz.thumb|200px|Atari BASICen idatzitako adibide bat.

## Ezaugarriak 
### Sintaxia 
BASICeko gutxieneko sintaxiak LET, INPUT, PRINT, IF eta GOTO komandoak baino ez ditu barneratzen. Gutxieneko sintaxi hori duten programak egiten dituen interpretzaileak ez du pilarik behar. Lehen inplementazioetako batzuek horren sinpleak ziren. Pila bat gehitzen bazaio interpretatzaileari, habiatutako FOR begiztak eta GOSUB komandoa ere gehitu daitezke. Ezaugarri horiek dituen BASIC interpretatzaileak linea-zenbakiak behar ditu kodean.

Linea zenbakiak BASIC klasikoaren oso alderdi bereizgarria izan ziren. Hala ere, linea-zenbakiak erabiltzeak badu desabantaila bat: programatzaileak jakin behar du zenbat linea erabiliko dituen. Hori saihets daiteke tarte erregular bat barneratuz lerro jarraien artean (10 esaterako).

BASICeko bertsio berrietan ez da beharrezkoa lerro zenbakiak jartzea, onartzen diren arren, zeren eta gehienetan bloke egituratuak barneratu diren C eta Pascal lengoaien ildotik:

* *do*
* *loop*
* *while*
* *until*
* *exit*
* *on... goto*
* *gosub*
* *select ... case*

Interpretatzaile gehienetan ere REM (*remark*) komandoa eskaintzen da oharrak jartzeko, baina helburu bera lortzen da ****' (komatxo sinplea) sinboloa erabiliz.  *Visual Basic* bezalako bertsio berrietan objektuetara bideratutako lengoaietako ezaugarriak barneratu dira.

## Programa sinpleak. Adibide batzuk 
Kaixo mundua adibidea. Programa honek "Kaixo, mundua!" idazten du lehenetsitako irteera-gailuan (monitorea, gehienetan):

```basic
NEW
10 PRINT "Kaixo, mundua!"
RUN
```

"NEW" aginduak memorian zegoena husten du. Zenbaki batekin hasten den edozein linea programa baten zati gisa gordeko da eta zenbakia markatzen duen ordena erlatiboaren arabera exekutatuko da programa. "RUN" aginduak memorian dagoen uneko programa exekutatzen du.

**BASICek** ordenaren arabera exekutatzen ditu kode-lerroak. Programa honekin:

```qbasic
NEW
10 PRINT "Ni"
3 PRINT "Zu"
RUN
```

emaitza hau izango da:

```qbasic
ZuNi
Ok
```

BASICek zuzeneko aginduak onar ditzake kode-lerroko zenbakirik gabe ere. Lehengo programa bera lerro hasierako zenbakirik gabe ere idatz daiteke . Zuzenean honela idatz daiteke:
```basic
PRINT "Kaixo, mundua!"
Kaixo, mundua!
Ok
```

"RUN" agindurik gabe ere  exekutatu da programa, baina horrela ez da memorian gordeko.

Lerro berean agindu bat baino gehiago jar daitezke bi puntuz bereizita:

```qbasic
NEW
10 PRINT "Kaixo, mundua! ": PRINT "Agur, mundua!"
RUN
Kaixo, mundua! Agur, mundua!
Ok
```

## Agindu erabilienak 
### LET 
Ezkerreko aldagaiak eskuineko eragiketa ebaluatuz lortzen den balioa hartzen du.

:: *Adibidez:*

```qbasic
1 LET A=2+3
```

Agindu hori eginda, "A" aldagaiak "5" balioa hartzen du. LET agindua laster bihurtu zen inplizitua BASICen bertsio askotan, eta, beraz, aurreko instrukzioa honela sartu ahal izan zen:

:: *Adibidez:*

```qbasic
1 A=2+3
```

### PRINT 
Monitorean balio edo kate bat idazten du.

:: *Adibidez:*

```qbasic
1 A=2+3
```

Horrek 2+3=5 idazten du monitorean

### INPUT 
Aldagai batentzako balioa jasotzeko agindua da.

:: *Adibidez:*

```qbasic
3 INPUT B
4 PRINT A; "+"; B; "="; A+B
```

Balio bat eskatu, "A"-renarekin batu, eta batura pantailan idazteko.

### IF/THEN 
IF aginduko baldintza betetzen denean, THEN ataleko agindua egiten du, bestela ez.

:: *Adibidez:*

```qbasic
5 IF A+B=9 THEN END
```

Berdinketakoi balioak berdinak badira, programa amaitu egiten da, bestela, jarraitu egiten du.

### GOTO 
Adierazitako lerrora salto egiten du

:: *Adibidez:*

```qbasic
6 GOTO 3
```

Salto egin berriro zenbaki bat eskatzen duen agindura.

### Adibide osoko programa eta irteera 
```qbasic
NEW
1 LET A=2+3
2 PRINT "2+3="; A
3 INPUT B
4 PRINT A; "+"; B; "="; A+B
5 IF A+B=9 THEN END
6 GOTO 3
RUN
2+3=5
? 6
5+6=11
? 4
5+4=9
Ok
```

## BASIC ez-egituratua eta BASIC egituratua 
### Jatorrizko BASIC ez-egituratua (Applesoft BASIC) 
```basic
NEW
  10 INPUT "Zein da zure izena?:"; NN$
  20 PRINT "Ongi etorri 'Puztarri-zalera',";NN$
  25 PRINT
  30 INPUT "Zenbat puztarri hasteko?:"; N
  40 IF N"S" OR SN$<>"s" THEN GOTO 200
 130 INPUT "Zenbat aldiz errepikatuta:"; ALDIAK
 140 IF ALDIAK""
       IF SN$<>"B" OR SN$<>"b" THEN EXIT DO      'Begiztatik irten
       INPUT "Zenbat aldiz errepikatuta::";iAldiak
       IF iAldiakezarpen asko daude, hala nola BCX, YaBasic, HBasic, XBasic, Gambas eta Just BASIC, besteak beste.

### BASIC lengoaiaren inplementazioak 
* BasictoPHP
* Dartmouth BASIC
* Tiny BASIC
* Locomotive BASIC
* XBasic
* Xblite
* SuperBASIC
* PluriBASIC
* FreeBASIC
* Gfa-BASIC
* Rapid-Q
* PowerBASIC
* AutoIt
* LSE (lenguaje)

#### Microsoft-eko BASIC bertsioak 
* Microsoft BASIC

* Aspaldiko konputagailuetarako
** Altair BASIC
** AmigaBASIC
** AMOS
** Applesoft BASIC
** Commodore Basic
** MSX BASIC
* IBM PC DOS sistema eragilerako
** BASICA
* MS-DOS
** GW-BASIC
** QBASIC
** QuickBASIC
* Windows sistema eragilerako
** Visual Basic
** Visual Basic .NET
* Internet-erako
** VBScript

#### BASIC MacIntosheko konputagailuetarako 
* Mac OS  sistema eragilerako
** MacBASIC

#### BASIC GNU/Linux sistema eragilerako: 
* Software jabeduna
** REALbasic

* Software libre
** Gambas
** HBasic
** KBasic

## Erreferentziak 
## Bibliografia 
* KEMENY, J.G.; T.E. KURTZ. *Structured BASIC programming*.  New York, USA: John Wiley & Sons, 1986.
* Bennet, P. Lientz. *A comparative evaluation of versions of BASIC*.  New York, USA: ACM, 1976, p. 175-181.
* Gottfries, Byron S. *Teoría y  problemas de Programación BASIC*. traducción, Guillermo Caro Murillo, Jesús Villamizar Herrera. 2a. ed..  Buenos Aires; Bogotá: McGraw-Hill, 1984, p. 278 p..
* Kemeny, John G.; Thomas E. Kurtz. *Programación BASIC*.  México: Cecsa, 1984, p. 432 p..
* Finkel, Leroy; Jerald R. Brown. *Programación de archivos de datos en BASIC*.  México; Argentina: Limusa, 1986, p. 361 p.. «(Series Instrucción Programada Limusa)»
* Petroutsos, Evangelos. *Visual Basic 6*. 1a ed..  Anaya Multimedia, 1999, p. 864 p..
* Dobson, Rick. *Programación De Microsoft Sql Server 2000 Con Microsoft Visual Basic .net*. 1a ed..  McGraw-Hill, 2002, p. 664 p..Halvorson, Michael. *Visual Basic 2008*. 1a ed..  Anaya Multimedia, 2008, p. 656 p..

## Ikus, gainera 
* Visual Basic

* Programazio
* Informatika
* Software
* Programazio-lengoaien arteko konparazioa
* Goi-mailako programazio-lengoaiak
* Lengoaia interpretatua
* Interpretatatzailea

## Kanpo estekak 
* Arrojeria,&#x20;Eustakio. &#x20;(1996).&#x20;*Basic. Programatzeko ariketak / egileak, Eustakio Arrojeria, Pili Lizaso ; laguntzaileak, Andoni Sagarna, Kepa Sarasola (Elhuyar Informatika-taldea).* &#x20;: Elkar,&#x20;ISBN 978-84-7529-342-4.
* Sarasola, kepa. Galdetsu: Konputagailuz lagunduriko irakaskuntzarako sistema. 1981. Zientzia Fiskoetako graduko titulua lortzeko tesina. Zuzendariak: Josu Aranberri eta Jose Ramon Etxebaria. EHU. Zientzia Fakultatea
*  Ikastaroa UEU, 1997
*Bengoetxea Castro, Endika.  (1997). *Programazio-ingurune aurreratuak: Visual Basic.*  (Noiz kontsultatua: 2023-10-31). Hitzaldia, UEU, 1997

*  Tomas Kurtz, BASIC lengoaiaren sortzaileetako bat
*  A Brief History of Programming Languages
*  True BASIC - Home Web
*  Tutorial de QBasic - Universidad de Oviedo
*  Tutorial de QBasic -Monografias.com
*  iBASIC - Home Web

*  Didacticiel sur le Basic
*  Centre de développement Visual Basic sur MSDN France