BASIC

**Бејзик** (, кратенка за *Beginners' All-purpose Symbolic Instruction Code*) — име на неколку програмски јазици кои се проектирани да бидат едноставни за користење.

Првичната верзија на овој програмски јазик била развиена на колеџот Дартмут во 1964 година под раководство на Џон Џорџ Кемени и Томас Јуџин Керц. Имплементиран е за сметачи од серијата *GE225*. Требало да биде лесен јазик за учење програмирање. Покрај тоа, дизајнерите сакале тоа да стане првиот чекор за студентите кои треба да совладаат помоќни јазици како што се фортран или алгол.

## Јазична структура
Во постарите верзии на овој јазик се користеле позитивни цели броеви за обележување на поединечни линии на програмскиот код. Бројот на почетокот на редот бил задолжителен. Во подоцнежните верзии на јазикот ова останува само како опција. Броевите меѓу другото служеле и како ознаки за разгранување во рамките на програмата. Подоцнежните верзии на Basic дозволуваат користење на ознаки во облик на зборови за разгранување.

### Синтакса
Јазикот BASIC има исклучително едноставна синтакса, како што сугерира неговото име: ***' 

==== Променливи ====
Името на променливата може да содржи до 256 знаци (букви, бројки и точки)

Краток преглед на најчестите наредби:***' - Испишува текст на екранот

* **integer** - цел број помеѓу -32.768 и 32.768
* **long** - цел број помеѓу -2 147 483 648 и 2 147 483 648
* **single** - децимален број со „еднократна прецизност“ 
* **double** - децимален број „двојна прецизност“.
* **string** - други знаци освен броеви (букви, итн.)

#### Најчести наредби
Краток преглед на најчестите наредби:

***' - Испишува текст на екранот

<source lang="qbasic">
PRINT "Hello world!"
</source>

***' - Бара да се впише текст кој ќе биде впишан во една или повеќе променливи


```qbasic
INPUT "Vpiši dva broja:", x, y
```

: и  се имињата на променливите

***' - Условна наредба. Во превод АКО-ТОГАШ-ИНАКУ
<source lang="qbasic">
IF x > 10 THEN PRINT "Brojot e pogolem od 10." ELSE PRINT "Brojot e pomal od 10."
</source>

***' јамка:

```qbasic
FOR i = 1 TO 10
    PRINT i
NEXT i
```

:Ги испишува броевите од 1 до 10

**** јамка:


```qbasic
i = 1
DO
    PRINT i
    i = i + 1
LOOP UNTIL i > 10
```


:Исто како и во претходниот пример


```qbasic
i = 1
DO
    PRINT i
    i = i + 1
LOOP WHILE i <= 10
```


: Пак исто.

## Основни наредби во програмскиот јазик Бејзик

* **PRINT** е излезна наредба што се користи за испишување текст (знаци и броеви) во програмата. Синтаксата на оваа наредба е **променлива**. За да се напише оваа наредба, треба да се напише зборот, потоа името на променливата, некој текст или број. Ако се сака да се испише некоја веќе дефинирана променлива, по зборот се пишува името на таа променлива. Ако се сака да се испише некој текст во програмата, тоа може да се направи со пишување на зборот, а потоа под наводници (" ") се пишува саканиот текст. Ако се сака да се испише некој број, доволно е тој број да го се испише по зборот. Ако се сака да се испише повеќе од една променлива (текст или број) во програмата, тоа може да се направи со ставање запирка (,) или точка-запирка (;) по првата променлива (текст или број) и повторување на процесот после секој нареден. Дали ќе биде запирка или точка-запирка зависи од големината на просторот помеѓу тие две променливи (текст или број). Точка-запирка (;) се користи за помал простор, а запирка (,) за поголем простор.
* **INPUT** наредбата ќе побара од корисникот на програмата да внесе некоја нумеричка вредност на променливата. Неговата синтакса е **променлива**. Исто така, можно е да се стават наводници (" ") по зборот и да се напише текст под наводниците што ќе му се испишат на корисникот заедно со барање за внесување на потребната променлива. Ако се сака да се овозможи внесување на текстуални вредности, се користи наредбата, нејзината синтакса е .
* **REM** наредбата се користи за додавање коментари при пишување програмски код. Тој коментар ќе биде видлив само во програмскиот код, додека корисникот нема да може да го види при извршувањето на програмата. Синтаксата на оваа наредба е **текст**. Дадениот текст не треба да се става во наводници.
* **CLS** е кратенка од **CL**ear **S**creen. Најчесто се поставува на почетокот на програмата и на тој начин се постигнува целиот текст во програмата, вклучувајќи ги и претходните програми, да се избрише од екранот каде што се гледа извршувањето на програмата. Така, секоја нова програма започнува од почетокот на екранот и податоците се испишуваат до следната употреба, кога сите податоци повторно се бришат.
* **END** обично се става на крајот од програмата, иако не е задолжително. Тоа не е ниту соодветен вид наредба, иако е поставен на крајот од програмата, за да му помогне на потенцијалниот читач на програмата полесно да се ориентира. Се користи и за безусловно излегување од потпроцедура, функција или блок.

### Пример 3
На левата страна е прикажан програмскиот код, а на десната пример за извршување на програмата што работи според напишаниот програмски код (може да се добие со притискање на копче).

## Услови
Условите во Basic се користат за проверка на вредностите на променливите, нивна споредба и поефикасно управување со нив по испитаниот услов. Постојат неколку начини за поставување услови, а некои од нив се приложени во продолжение.

### Прв начин на поставување услови
Условот мора да започне со зборот **IF** (ако) и после тој збор се става условот што треба да го испита програмата. Тој услов мора да содржи две веќе постоечки променливи и некои од релационите оператори (=,,=,) кои треба да се постават меѓу нив. Значи, условот мора да содржи две променливи (вредности) и односот меѓу нив што го испитува условот. Условот може да содржи и логички оператори (AND, OR, NOT). По условот следи последицата, што треба да се направи ако условот е исполнет (наредба - **THEN**). Клучните зборови **IF** и **THEN** мора да бидат по ист редослед.

Вториот дел од условот ја содржи последицата, т.е. што ќе направи програмата доколку условот е исполнет. По зборот **IF** и напишаните променливи, и односот меѓу нив што програмата ги испитува, мора да се стави зборот, и последицата што ќе ја направи програмата ако секој дел од условот е исполнет (или дел од условот одреден од логичките оператори). Таа последица нужно мора да содржи една од наредбите, т.е. што ќе направи програмата со саканата променлива доколку условот е исполнет. Ако се користи само една наредба по клучниот збор за последица (), тогаш и таа е напишана во истата линија, но ако треба да се извршат неколку команди, тогаш тие се напишани во нова линија (секоја) и блокот мора да биде заклучен со наредбата .

Третиот дел од условот вклучува изјава која овозможува да се изврши последицата кога резултатот од тестот на условот е неточен (0). По условот и низата наредби кои ќе се исполнат во случај на позитивен резултат на условот, следува линија и низа наредби кои програмата ќе ги изврши доколку се случи резултатот од поставената состојба да биде неточен. Доколку овој дел не се стави како дел од условот т.е. доколку програмерот не ја дефинира последицата од негативниот резултат на поставената состојба, програмата ќе продолжи со извршување на програмскиот код од следниот ред.

Ако е потребно да се воведат повеќе услови така што резултатот да биде единствен, тогаш се користат логички оператори AND или OR.

Покрај логичките оператори, BASIC го поддржува и клучниот збор, кој создава инверзија, т.е. сите резултати кои биле „вистинити“ при проверка на условите стануваат „неточни“ и обратно.

## Синтакса на блок


```gwbasic
'''1. Пример'''
IF услов THEN наредба на последицата

'''2. Пример'''
 IF услов THEN 
  Наредба1
  Наредба2
    ...
 END IF

'''3. Пример'''
 IF услов THEN
  Наредба1
  Наредба2
    ...
 ELSE
  Наредба1
  Наредба2
    ...
 END IF
```


## Уште некои блокови за проверка на услов
**WHILE.. WEND** Овој блок ќе се извршува сè додека изјавата во условот е вистинита и проверката се врши на влезот во блокот. Неговата синтакса е како што следува:

```gwbasic
WHILE услов
  наредба1       
  наредба2
    ...
 WEND
```


**DO.. LOOP WHILE** Овој блок ќе се извршува сè додека изјавата во условот е вистинита и проверката се врши на крајот од блокот. Неговата синтакса е како што следува:

```gwbasic
DO
  Наредба1
  Наредба2
    ...
 LOOP WHILE услов
```


**DO WHILE.. LOOP** Овој блок ќе се извршува сè додека изјавата во условот е вистинита и проверката се врши на влезот во блокот. Неговата синтакса е како што следува:

```gwbasic
DO WHILE услов
  Наредба1
  Наредба2
    ...
 LOOP
```


**DO.. LOOP UNTIL услов** Овој блок ќе се извршува сè додека изјавата во условот не се исполни (додека изјавата не е вистинита) и проверката не се направи на крајот од блокот. Неговата синтакса е како што следува:

```gwbasic
DO
  Наредба1
  Наредба2
    ...
 LOOP UNTIL услов
```


**DO UNTIL услов...LOOP** Овој блок ќе се извршува сè додека изјавата во условот не биде вистинита и проверката не се изврши на влезот во блокот. Неговата синтакса е како што следува:

```gwbasic
DO UNTIL услов
  Наредба1
  Наредба2
    ...
 LOOP
```


## Повеќекратен избор
Наместо да се користат повеќе блокови за проверка, можно е да се користат клучни зборови, што овозможува повеќекратен избор. Синтаксата е како што следува:

*- се претпоставува дека не е потребен коментар и дека од прилогот е видливо како функционира оваа структура.* *Јасно е дека дури и во секој случај () е можно да се додадат нови блокови на услови, да се вметне прекин..*

### Наредба за безусловен скок
Наредбата е наредба за (без)условен премин во дефинираниот ред. Често се користи со услови и тогаш е условна.

За да биде можно користењето на оваа наредба, редот во кој се врши скокот мора да почнува со број (да биде нумериран). Наредбата се користи кога се сака програмата, после прочитан ред од некој програм, не го чита следниот ред, тукусо помош на наредба, преминува на наведениот ред т.е. таму од каде програмот ќе продолжи да го чита програмскиот код. Заради тоа е потребна нумерација на редот. Синтаксата на оваа наредба е следната:

По зборот се става број кој со кој е нумериран редот од кој се сака програмата да продолжи со читање на програмскиот код. Наредбата често се користи како последица за (не) исполнување на условите. На пример. може да се постави дека, доколку условот е исполнет, програмата продолжува да го чита програмскиот код од одредена позиција, а ако не е исполнета, се враќа на повторно доделување на вредностите на променливите (со користење на знакот за еднаквост или наредбата).

## Слични јазици
* QBasic - DOS верзија
* Amiga Basic - Бејзик за Commodore Amiga
* Orao Basic - Бејзик за компјутери Orao MR102
* Microsoft Visual Basic - Бејзик за создавање на Windows апликации
* Microsoft Visual Basic за апликации - Бејзик за создавање апликации во Microsoft Office

## Стандарди
* Стандард ANSI за минимална основна (ANSI X3.60-1978 "FOR MINIMAL BASIC")
* ISO стандард за Minimal BASIC (ISO/IEC 6373:1984 "ОБРАБОТКА НА ПОДАТОЦИ - ПРОГРАМИРАНИ ЈАЗИЦИ - MINIMAL BASIC")

## Наводи

* 
* 

Категорија:CS1-одржување: датумски формат
Категорија:Програмски јазици