BASIC

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

BASIC (Beginner's All-purpose Symbolic Instruction Code) – język programowania wysokiego poziomu, opracowany w 1964 przez Johna George'a Kemeny'ego i Thomasa E. Kurtza w Dartmouth College w oparciu o Fortran i Algol-60. Jego pierwsza wersja znana była później pod nazwą Dartmouth BASIC, pierwszy program w BASIC-u został uruchomiony 1 maja 1964 na komputerze General Electric GE-225 typu mainframe[1].

Historia[edytuj | edytuj kod]

Założenia projektantów BASIC-a uwzględniały łatwość użytkowania, wszechstronność zastosowań, interaktywność i dobrą komunikację z użytkownikiem poprzez jasne komunikaty błędów.

Ucz się BASIC-a codziennie – plakat w rosyjskiej szkole, 1985-1986

BASIC wybił się na czoło języków do zastosowań amatorskich i półprofesjonalnych po wprowadzeniu na rynek mikrokomputera Altair 8800. Twórcami dialektu BASIC-a dla tej maszyny byli Bill Gates i Paul Allen. BASIC szybko zaimplementowany został przy budowie serii komputerów Apple, a później (jako GW BASIC) w IBM PC (początkowo w ROM, a po pojawieniu się DOS-a – na dyskietce).

Następcą GW BASIC-a dla komputerów PC został QB, później rozprowadzany komercyjnie jako QuickBASIC, który w końcu wyewoluował w Visual Basic for Windows. Istnieją też alternatywne interpretery i kompilatory tego języka dla platformy win32 (Power BASIC, DarkBASIC itp.)

Do najbardziej znanych dialektów można zaliczyć: Altair BASIC, AMOS (Amiga), Applesoft BASIC, Atari BASIC, BASICA, Blitz Basic, Commodore BASIC (CBM BASIC), EBASIC (dla Elwro 500), GW BASIC, Locomotive BASIC (dla Amstrad CPC), QBasic, QuickBasic, Sinclair BASIC, Turbo Basic, Visual Basic, Visual Basic .NET, sBasic (dla komunikatorów Nokia), Jabaco (Java Bytecode BASIC; Open Source), PureBasic, KBasic, DarkBasic, FreeBASIC, PowerBASIC, G-BASIC (dla konsoli Famicom), GFA Basic (rodzina Atari ST, później Amiga i PC).

W Polsce najbardziej znane są dialekty BASIC-a napisane dla popularnych komputerów ośmiobitowychCommodore'a, Amstrada CPC, Atari i Sinclaira ZX Spectrum.

Semantyka[edytuj | edytuj kod]

Ponieważ istnieje ponad 200 różnych dialektów języka BASIC, poniższa charakterystyka dotyczy najpopularniejszych rozwiązań.

Programy w BASIC-u składają się z kolejno wykonywanych instrukcji, które zebrane są w wiersze. Wszystkie dialekty oprócz najprymitywniejszych dopuszczają kilka instrukcji w jednym wierszu, rozdzielonych zazwyczaj znakiem dwukropka. Starsze wersje wymagały numerowania wierszy (maksymalny numer wynosił zwykle 9999, 16384, 32767, czasami 65535, jak to miało miejsce w Meritum).

Zmienne mogą mieć dowolnie długie nazwy zaczynające się od litery. Nazwy zmiennych łańcuchowych zakończone są znakiem dolara, np. x$, zmienna$. Tablice mogą mieć dwa lub więcej wymiarów (w niektórych dialektach tablice znakowe służą do wskaźnikowego dostępu do łańcuchów, jak w C).

BASIC w sprowadzonej do wspólnego mianownika wersji posiada bardzo proste mechanizmy sterowania przebiegiem programu – instrukcję skoku bezwarunkowego GOTO, wywołania podprogramu GOSUB kończonego instrukcją powrotu RETURN oraz warunkową IF…THEN (w niektórych dialektach również ELSE). pętla iteracyjna zapisywana jest za pomocą konstrukcji FOR…NEXT.

Niektóre dialekty posiadają także instrukcje pętli warunkowej DO LOOP…UNTIL, WHILE…WEND, skoku warunkowego ON GOTO, ON GOSUB, oraz wyboru CASE…SELECT.

Inne typowe instrukcje:

RUNinstrukcja wywołania (uruchomienie programu),
PRINT tekstinstrukcja wyjścia (wyprowadzenie tekstu lub wartości zmiennej na urządzenie wyjściowe, najczęściej ekran),
INPUT zmiennainstrukcja wejścia (wczytanie wartości z klawiatury do zmiennej),
DIM tablica – instrukcja deklaracji tablicy
LET zmienna = wartośćinstrukcja przypisania (niekiedy dozwolone jest opuszczenie słowa kluczowego LET)
STOPinstrukcja zatrzymania
CONTINUEinstrukcja kontynuacji (wznowienie zatrzymanego programu)

W niektórych wersjach dostępne były skróty najczęściej wykorzystywanych instrukcji, np. PRINT, GOTO, DRAWTO, RUN odpowiadały odpowiednio: PR. lub ?, G., DR., RU..

Ponadto w większości dialektów dostępne są funkcje matematyczne: części całkowitej INT, wartości bezwzględnej ABS, signum SGN, trygonometryczne SIN, COS, TAN, niekiedy funkcje logarytmów: dziesiętnego LOG i naturalnego LN oraz operacji na łańcuchach, zwykle zakończonych znakiem $, np. LEFT$, UPPER$.

Przykład[edytuj | edytuj kod]

Poniższy program został napisany w duchu paradygmatu imperatywnego, promowanego przez wczesne implementacje języków z rodziny BASIC.

10 PRINT "Witaj"
20 INPUT "Liczba gwiazdek do wyświetlenia: "; ile
30 PRINT "*"
40 LET ile = ile -1
50 IF ile > 0 THEN GOTO 30

Wiersze programu są numerowane, a pętle konstruuje się za pomocą instrukcji skoku GOTO. Duża liczba skoków powodowała, że kod wczesnego BASIC-a był często trudny do odczytania i zrozumienia, powstał nawet termin spaghetti code określający taki sposób tworzenia programów. Wiele dialektów zawierało jednak instrukcje pętli FOR…NEXT, którą zastosowano w poniższym przykładzie:

10 PRINT "Witaj"
20 INPUT "Liczba gwiazdek do wyświetlenia: "; ile
30 FOR licznik = 1 TO ile
40 PRINT "*"
50 NEXT licznik

Interpretery[edytuj | edytuj kod]

Information icon.svg Osobny artykuł: interpreter.

Podejmowano różne próby ułatwienia pisania programów przez osoby nie robiące tego zawodowo (czyli większość posiadaczy komputerów domowych). Najbardziej oryginalne rozwiązanie było zastosowane w komputerach ZX Spectrum, gdzie do każdego klawisza przypisana było słowo kluczowe bądź nazwa funkcji wbudowanej języka Sinclair BASIC (tak, aby nie było potrzeby wpisywania ich znak po znaku). Miało to znacznie ułatwić i przyspieszyć pisanie programów. Rozwiązanie to w praktyce oznaczało niemałe trudności (na początku) w pisaniu programów, gdyż język dostępny dla tego komputera miał na tyle dużo instrukcji, że każdemu klawiszowi przypisane było ich wiele. Dostęp do nich był możliwy po kłopotliwym przełączaniu trybów edytora[2]. Jednak w rzeczywistości po dłuższym użytkowaniu klawiatury ZX Spectrum i nabraniu wprawy pisanie programów okazywało się dużo wygodniejsze, szybsze i łatwiejsze niż w innych rodzajach klawiatur.

Zobacz też[edytuj | edytuj kod]

Przypisy