BASIC
Z Wikipedia
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].
Spis treści |
Historia
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.
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.)
W Polsce najbardziej znane są dialekty BASIC-a napisane dla popularnych komputerów ośmiobitowych - Commodore, Amstrada CPC, Atari i Sinclair ZX Spectrum.
Semantyka
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 co 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ą RETURN) oraz warunkową (IF..THEN (oraz ELSE w niektórych dialektach). Za pomocą konstrukcji FOR..NEXT można powtarzać określone fragmenty programu w pętli iteracyjnej.
Niektóre dialekty posiadają także instrukcje pętli warunkowej (DO LOOP..UNTIL, WHILE..WEND), skoku warunkowego (ON GOTO, ON GOSUB), oraz wyboru warunkowego (CASE..SELECT).
Inne typowe instrukcje:
- RUN - uruchomienie programu
- PRINT tekst - wyprowadzenie tekstu lub wartości zmiennej na urządzenie wyjściowe (najczęściej ekran).
- INPUT zmienna - wczytanie wartości z klawiatury do zmiennej
- DIM tablica - deklaracja tablicy
- LET zmienna = wartość - deklaracja zmiennej (czasami LET można opuścić)
- STOP - zatrzymanie programu
- CONTINUE - wznowienie zatrzymanego programu (CONT w Atari BASIC)
W niektórych wersjach dostępne były skróty najczęściej wykorzystywanych instrukcji, np.
- PRINT – PR. oraz ?
- GOTO - G.
- DRAWTO – DR.
- RUN – RU.
Ponadto w większości dialektów dostępne są funkcje matematyczne (INT, ABS, SGN)trygonometryczne (SIN, COS, TAN, czasami LOG, LN) i operacji na łańcuchach (szereg funkcji zakończonych znakiem $, np. LEFT$, UPPER$).
Najbardziej znane dialekty
- Altair BASIC
- AMOS (Amiga)
- Applesoft BASIC
- Atari BASIC
- BASICA
- Blitz Basic
- Commodore BASIC (zwany też CBM BASIC)
- EBASIC - implementacja firmy Elwro dla komputerów z rodziny Elwro 500
- GW BASIC
- Locomotive BASIC (Amstrad CPC)
- QBasic
- QuickBasic
- Sinclair BASIC
- Turbo Basic
- Visual Basic
- Visual Basic .NET
- sBasic (napisany dla komunikatorów Nokia)
- Jabaco Java Bytecode BASIC (Open Source)
- PureBasic
- KBasic
- DarkBasic
- FreeBasic
- PowerBasic
- G-BASIC Basic dla konsoli Nintendo Famicom
Przykładowy program
<source lang="qbasic">10 PRINT "Witaj"20 INPUT "Ile gwiazdek mam wydrukowac"; ile30 PRINT "*";40 LET ile = ile -150 IF ile > 0 THEN GOTO 30</source>
Powyższy program to klasyczny, niestrukturalny BASIC. Linie są w nim numerowane a pętle uzyskuje się używając 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.
Ciekawostki
- 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 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 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].
Zobacz też
Przypisy
- ↑ "May 1, 1964: First Basic Program Runs"
- ↑ Vickers, Steven (1982). Sinclar ZX Spectrum BASIC Programming. Sinclair Research.
|