BASIC

From Wikipedia, the free encyclopedia

BASIC
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 ... 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,[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

Комбинации от клавиши

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

МК + А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

Външни препратки

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads