BASIC
From Wikipedia, the free encyclopedia
Remove ads
Бе́йсик (BASIC, съкращение на английски: Beginner's All-purpose Symbolic Instruction Code – многоцелеви език от символни инструкции за начинаещи) е семейство от езици за програмиране от високо ниво. Той е създаден през 1964 г. от професорите Джон Ке́мени (1926 – 1992) и Томас Курц (1928 – 2024) от Колежа „Дартмут“, които го публикуват на 1 май 1964 г.[1][2][3]
Remove ads
Синтаксис
Синтаксисът на Бейсик се състои от прости команди (като 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 ... WENDandREPEAT ... 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,[4] Purebasic,[5] и Powerbasic[6] също поддържат езика асемблерна вложка, което позволява на програмиста да смесва код от високо и ниско ниво, обикновено с префикс "ASM" или "!".
Типове данни и променливи
Минималните версии на BASIC имат само целочислени променливи и имена на променливи с една или две букви, което минимизира изискванията за ограничена и скъпа памет (RAM). По-мощните версии имат аритметика с плаваща запетая, а променливите можгат да бъдат обозначени с имена с дължина шест или повече знака. В ранните реализации има някои проблеми и ограничения; например, Applesoft BASIC позволява имената на променливите да бъдат с дължина от няколко знака, но само първите два са значими, като по този начин е възможно неволно да се напише програма с променливи "LOSS" и "LOAN", които ще се третират като еднакви; присвояването на стойност на "LOAN" тихомълком презаписва стойността, предназначена като "LOSS". Ключови думи не могат да се използват в променливи в много ранни BASIC; "SCORE" се интерпретира като "SC" OR "E", където OR е ключова дума. Низовите променливи обикновено се разграничават в много микрокомпютърни диалекти, като към името им се добавя суфикс $ като сигил,[7] а стойностите често се идентифицират като низове, като са разделени с „двойни кавички“. Масивите в BASIC могат да съдържат цели числа, променливи с плаваща запетая или низови променливи.
Някои диалекти на BASIC поддържат матрици и матрични операции, които могат да се използват за решаване на системи от едновременни линейни алгебрични уравнения. Тези диалекти биха поддържали директно матрични операции като присвояване, събиране, умножение (на съвместими матрични типове) и оценка на детерминанта. Много микрокомпютърни BASIC-ове не поддържат този тип данни; матричните операции все още са възможни, но трябва да се програмират изрично върху елементи от масив.
Remove ads
Комбинации от клавиши
Едновременното натискане на клавиша машинен контрол MК и буквен клавиш дава следните команди:
МК+А0– латиницаМК+А1– кирилицаМК+E– ГОЛЕМИ СИМВОЛИМК+R– удебелени символиМК+T– високи символиМК+W– широки символиМК+I,МК+U– повтаря символиМК+H– връща символиМК+J– движи маркера надолуМК+K– движи маркера нагореМК+P– придвижва бавно нагоре цялата картина с 2 редаМК+X– анулира текущия ред и минава на нов редМК+M(RETURN) – нов редМК+L(HOME) – изчиства екранаМК+G– еднократен звукМК+V– еднократен шум.
Remove ads
Примери
Класически Бейсик
При класическия 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
Remove ads
Външни препратки
Източници и бележки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
