Бе́йсик (BASIC, съкращение – многоцелеви език от символни инструкции за начинаещи) е семейство от езици за програмиране от високо ниво. Той е създаден през 1964 г. от професорите Джон Ке́мени (1926 – 1992) и Томас Курц (1928 – 2024) от Колежа „Дартмут“, които го публикуват на 1 май 1964 г.

Синтаксис Синтаксисът на Бейсик се състои от прости команди (като PRINT – отпечатай, INPUT – въведи, IF – ако, GOTO – отиди на, и т.н.) и математически изрази.

Типични ключови думи на BASIC Манипулация с данни LET присвоява стойност (която може да е резултат от израз) на променлива. В повечето диалекти на BASIC, LET е незадължителен и ред без друга идентифицируема ключова дума ще приеме, че ключовата дума е LET. DATA съдържа списък със стойности, които се присвояват последователно с помощта на командата READ. READ чете стойност от оператор DATA и я присвоява на променлива. Вътрешен указател следи последния прочетен елемент DATA и го премества с една позиция напред с всяко READ. Повечето диалекти позволяват множество променливи като параметри, като четат няколко стойности в една операция. RESTORE нулира вътрешния указател към първия оператор DATA, позволявайки на програмата да започне да ЧЕТЕ от първата стойност. Много диалекти позволяват незадължителен номер на ред или порядкова стойност, за да позволи на указателя да бъде нулиран до избрано място. DIM задава масив.

Контрол на потока на програмата IF ... THEN ... {ELSE} се използва за извършване на сравнения или вземане на решения. Ранните диалекти позволяваха само номер на ред след THEN, но по-късните версии позволяваха следването на всяко валидно твърдение. ELSE не беше широко поддържан, особено в по-ранните версии. FOR ... TO ... {STEP} ... NEXT повтаря част от кода определен брой пъти. Променлива, която действа като брояч, „индексът“ е наличeн в цикъла. WHILE ... WEND and REPEAT ... UNTIL повтаря част от кода, докато зададеното условие е вярно. Условието може да бъде оценено преди всяка итерация на цикъла или след това. И двете команди се срещат предимно в по-късни диалекти. DO ... LOOP {WHILE} or {UNTIL} повтаря част от кода за неопределено време или докато/докато зададеното условие е вярно. Условието може да бъде оценено преди всяка итерация на цикъла или след това. Подобно на WHILE, тези ключови думи се срещат предимно в по-късни диалекти. GOTO прескача до номериран или етикетиран ред в програмата. Повечето диалекти позволяват и формата GO TO. GOSUB ... RETURN прескача до номериран или етикетиран ред, изпълнява кода, който намира там, докато не достигне команда RETURN, при която се връща към оператора след GOSUB, или след двоеточие, или на следващия ред. Това се използва за имплементиране на подпрограми. ON ... GOTO/GOSUB избира къде да се прескочи въз основа на зададените условия. Вижте оператори за разклонение за други форми. DEF FN Двойка ключови думи, въведени в началото на 60-те години на миналия век за дефиниране на функции. Оригиналните BASIC функции са моделирани по FORTRAN едноредови функции. BASIC функциите са един израз с променливи аргументи, а не подпрограми, със синтаксис по модела на DEF FND(x) = x*x в началото на програмата. Имената на функциите първоначално са били ограничени до FN, плюс една буква, т.е. FNA, FNB ...

Вход и изход LIST показва пълния изходен код на текущата програма. PRINT показва съобщение на екрана или друго изходно устройство. INPUT изисква от потребителя да въведе стойността на променлива. Операторът може да включва съобщение за подкана. TAB използва се с PRINT за задаване на позицията, където следващият символ ще бъде показан на екрана или отпечатан на хартия. AT е алтернативна форма. SPC отпечатва определен брой интервали. Подобен по концепция на TAB, но се мести с определен брой допълнителни интервали от текущата колона, вместо да се мести в определена колона.

Математически функции ABS Абсолютна стойност ATN Аркустангенс (резултат в радиани) COS Косинус (аргумент в радиани) EXP Експоненциална функция INT Цялочислена част (обикновено функция скобка) LOG Натурален логаритъм RND Генериране на случайни числа SIN Синус (аргумент в радиани) SQR Корен квадратен TAN Тангенс (аргумент в радиани)

Разни REM съдържа коментар или REMark на програмист; често се използва за даване на заглавие на програмата и за идентифициране на целта на даден раздел от код. USR ("Потребителска обслужваема рутина") прехвърля програмния контрол към подпрограма машинен език, обикновено въвеждана като буквено-цифров низ или в списък с DATA оператори. CALL алтернативна форма на USR, срещана в някои диалекти. Не изисква изкуствен параметър за завършване на функционалноподобния синтаксис на USR и има ясно дефиниран метод за извикване на различни рутини в паметта. TRON / TROFF включва показването на всеки номер на ред, докато се изпълнява ("TRAce ON"). Това беше полезно за отстраняване на грешки или коригиране на проблеми в програма. TROFF го изключва отново. ASM някои компилатори като Freebasic, Purebasic, и Powerbasic също поддържат езика асемблерна вложка, което позволява на програмиста да смесва код от високо и ниско ниво, обикновено с префикс "ASM" или "!".

Типове данни и променливи Минималните версии на BASIC имат само целочислени променливи и имена на променливи с една или две букви, което минимизира изискванията за ограничена и скъпа памет (RAM). По-мощните версии имат аритметика с плаваща запетая, а променливите можгат да бъдат обозначени с имена с дължина шест или повече знака. В ранните реализации има някои проблеми и ограничения; например, Applesoft BASIC позволява имената на променливите да бъдат с дължина от няколко знака, но само първите два са значими, като по този начин е възможно неволно да се напише програма с променливи "LOSS" и "LOAN", които ще се третират като еднакви; присвояването на стойност на "LOAN" тихомълком презаписва стойността, предназначена като "LOSS". Ключови думи не могат да се използват в променливи в много ранни BASIC; "SCORE" се интерпретира като "SC" OR "E", където OR е ключова дума. Низовите променливи обикновено се разграничават в много микрокомпютърни диалекти, като към името им се добавя суфикс $ като сигил,В компютърното програмиране сигилът (/ˈsɪdʒəl/) е символ, прикрепен към име на променлива, показващ типа данни или обхвата на променливата, обикновено префикс, както в $foo, където $ е сигилът. а стойностите често се идентифицират като низове, като са разделени с „двойни кавички“. Масивите в BASIC могат да съдържат цели числа, променливи с плаваща запетая или низови променливи.

Някои диалекти на BASIC поддържат матрици и матрични операции, които могат да се използват за решаване на системи от едновременни линейни алгебрични уравнения. Тези диалекти биха поддържали директно матрични операции като присвояване, събиране, умножение (на съвместими матрични типове) и оценка на детерминанта. Много микрокомпютърни BASIC-ове не поддържат този тип данни; матричните операции все още са възможни, но трябва да се програмират изрично върху елементи от масив.

Комбинации от клавиши Едновременното натискане на клавиша машинен контрол MК и буквен клавиш дава следните команди:

Примери Класически Бейсик При класическия BASIC всички редове са номерирани, тъй като в първоначалните версии на Бейсик програмата се е въвеждала в интерактивен режим. Т.е., ако преди кода няма номер на реда, то кодът се изпълнява веднага. 10 INPUT "Кое е Вашето име?: "; U$ 20 PRINT "Здравейте "; U$ 30 REM 40 INPUT "Колко звезди искате: "; N 50 S$ = "" 60 FOR I = 1 TO N 70 S$ = S$ + "*" 80 NEXT I 90 PRINT S$ 100 REM 110 INPUT "Искате ли още звезди? "; A$ 120 IF LEN(A$) = 0 THEN GOTO 110 130 A$ = LEFT$(A$, 1) 140 IF (A$ = "D") OR (A$ = "d") THEN GOTO 40 150 IF (A$ = "Д") OR (A$ = "д") THEN GOTO 40 160 PRINT "Довиждане "; 170 FOR I = 1 TO 200 180 PRINT U$; " "; 190 NEXT I 200 PRINT

Полученият диалогов прозорец може да изглежда така:

Кое е Вашето име?: Михаил Здравей, Михаил Колко звезди искате: 7

Искате ли още звезди? да Колко звезди искате: 3

Искаш ли още звезди? не Довиждане, Михаил

Модерен Бейсик Синтаксисът на модерния BASIC почти не се различава от този на класическия. При модерния Бейсик обаче номерирането на редовете не е задължително, освен това се използва отместване на кода (познато от другите програмни езици като Pascal, C/C++, Fortran и др.), с което преглеждането на програмите на BASIC става по-лесно.

REM Пример за QuickBASIC

REM Предварителна декларация – позволява на основния код да извика REM подпрограма, която е дефинирана по-късно в изходния код. DECLARE SUB PrintSomeStars (StarCount!)

REM Следва основната програма INPUT "Кое е Вашето име"; UserName$ PRINT "Здравейте "; UserName$ DO INPUT "Колко звезди искате"; NumStars Stars$ = "" Stars$ = REPEAT$("*", NumStars) ' <- ANSI BASIC --or-- Stars$ = STRING$(NumStars, "*") ' <- MS BASIC PRINT Stars$ DO INPUT "Искате ли още звезди?"; Answer$ LOOP UNTIL Answer$ <> "" Answer$ = LEFT$(Answer$, 1) LOOP WHILE UCASE$(Answer$) = "D" PRINT "Довиждане "; UserName$ END

REM Дефиниция на подпрограма SUB PrintSomeStars (StarCount) REM Тази процедура използва локална променлива, наречена Stars$ Stars$ = STRING$(StarCount, "*") PRINT Stars$ END SUB

Външни препратки Джон Джордж Кемени Томас Юджийн Курц

Източници и бележки

Категория:Езици за програмиране Категория:Изобретения в САЩ Категория:Основани в САЩ през 1964 година