Przejdź do zawartości

BasicC/Podstawy

Z Wikibooks, biblioteki wolnych podręczników.
 BasicC jest biblioteką C oraz JavaScript ułatwiającą programowanie w tych językach, zawiera też obsługę SDL oraz prosty interfejs graficzny GEM. Większa część podręcznika dotyczy biblioteki C składającej się z plików nagłówkowych Basic.h, BasicSDL.h, BasicGEM.h, BasicSND.h oraz tłumacza B2C. Dodatkowy plik BASICC.h jest odpowiednikiem Basic.h, w którym komendy pisane są w całości dużymi literami. Niniejsza instrukcja będzie odnosić się do Basic.h, w której dużymi literami zapisuje się tylko początki poszczególnych członów komend, z wyjątkami, jak operatory, niektóre zmienne i stałe. Biblioteka JavaScript składa się z plików BasicWWW.h, BasicC.html, BASFile.php oraz BasicPJS. Większość komend zdefiniowano za pomocą dyrektyw preprocesora. W procesie pre-kompilacji komendy te są zamieniane na standardowe instrukcje języka C. Powinny też działać w C++, choć mogą być konieczne drobne poprawki w plikach nagłówkowych. Ponadto BasicC zawiera dodatkowe funkcje nie zawarte w standardowym C i SDL.
Głównym celem BasicC miało być stworzenie prostszej składni, wyeliminowanie średników, klamer i wskaźników stosowanych w C, co udało się tylko częściowo.
 By używać BasicC należy przyłączyć bibliotekę Basic.h lub, jeśli używamy SDL, BasicSDL.h, lub BasicGEM.h poprzez wpisanie na początku naszego programu dyrektywy preprocesora, np.: #include "Basic.h". Pliki te najlepiej skopiować do katalogu naszego programu. Jeśli nie korzystamy z SDL i GEM - wystarczy tylko Basic.h, jeśli korzystamy - dodatkowo BasicSDL.h i BASFont.bmp, jeśli korzystamy z GEM - dodatkowo BasicGEM.h. Standardowo BasicC załącza podstawowe biblioteki C: stdio.h, stdlib.h, string.h, więc nie trzeba ich oddzielnie dołączać. BasicSDL.h zawiera załączenie SDL.h, BasicSND, opcjonalnie: SDL_image.h, SDL_ttf.h, SDL_mixer.h i math.h. BasicGEM załącza BasicSDL.h. Sposób używania wersji dla WWW opisany jest w oddzielnym rozdziale.
 Wpisanie na początku programu dyrektywy #define DEBUG 1 włącza tryb kontroli błędów, w którym niektóre komendy wypisują w terminalu informacje o ew. błędach np. przekroczenie zakresu, zbyt długi tekst. DEBUG 0 oznacza tryb zwykły. Tryb DEBUG może spowalniać działanie programu, ale jest zalecany podczas testowania.


Opis plików:
Basic.h, BASICC.h - podstawowe komendy
BasicSDL.h - obsługa SDL, załączamy zamiast Basic.h
BASFont.bmp - czcionki bitmapowe wykorzystywane przez BasicSDL.h
BasicGEM.h - obsługa GEM, załączamy zamiast BasicSDL.h
BASSND.h - podstawowa obsługa dźwięku, załączany przez BasicSDL.h zamiast BasicSND.h
BasicSND.h - obsługa dźwięku, załączany przez BasicSDL.h
BasicOGG.h - ładowanie plików .OGG dla BasicSND.h
lodepng.h - obsługa obrazów .PNG, załączany w BasicSDL.h
micromod.h - ładowanie plików .MOD dla BasicSND.h
BasicWWW.h - zamiennik powyższych bibliotek dla wersji WWW, stosujemy zamiast BasicSDL.h i Basic.h.
BasicC.html - kod strony html uruchamiającej nasz program w przeglądarce
BASFile.php - obsługa plików na serwerze, wymagany do zapisu
BasicPJS - "kompilator" BasicC do JavaScript.
B2C - tłumacz BasicC 2.

Ponadto może być konieczne dołączenie do programu plików bibliotek jak SDL2.dll, czy SDL2_image.dll.

BasicC 2

[edytuj]

Jest to dodatkowy program tłumaczący umożliwiający stosowanie składni jeszcze bardziej zbliżonej do Basic - prawie całkowite wyeliminowanie średników oraz konieczności stosowania nawiasów w komendach, brak konieczności używania Def czy Begin przy definicji funkcji i procedur, basicowa składnia For, nowe Print. By z tego korzystać należy przed skompilowaniem przetłumaczyć nasz program używając B2C: B2C program.bc program.c.

Cechy szczególne BasicC 2

[edytuj]

Wybrane różnice w porównaniu z innymi dialektami Basic, np. FreeBasic:

ZMIENNE: składnia zgodna z C + konstrukcje własne, np. deklaracja tablicy jednowymiarowej:typ nazwa Dim(rozmiar)
JEDNOLINIOWOŚĆ: brak możliwości używania kilku komend w jednej linii oddzielonych :, można stosować ; jak w C, np. w deklaracjach zmiennych, przy podstawianiu: int a,b; float c; a=5; b=6 (średnik na końcu linii zostanie dodany przez tłumacza), ogólna zasada: każda komenda w oddzielnej linii
WIELOLINIOWOŚĆ: można kilka linii łączyć w jedną umieszczając na końcu linii znak \ - powoduje to połączenie danej linii z następną
JEDNOSŁOWNOŚĆ: np. ElseIf EndSub EndIf piszemy łącznie
OPERACJE ŁAŃCUCHOWE: operatory + = == nie działają na łańcuchach znaków, należy używać odpowiednich komend, jak w C
= == != operatory jak w C: = podstawienie, == równe, != różne, brak operatora <>
KOMENTARZE: jak w C - // liniowy /* wieloliniowy */, dodatkowo (niezalecany) ' całoliniowy (' wyłącznie na początku linii), brak komentarza REM
FUNKCJE, PROCEDURY: obowiązkowe nawiasy w funkcjach, wywołanie podprogramów: Go nazwa lub nazwa(), definicje lub deklaracje przed wywołaniem, więcej szczegółów przy opisie komend
IF WIELOLINIOWE: brak jednoliniowej konstrukcji IF ... THEN ..., można używać konstrukcji C if (...) ...
THEN nie występuje w BasicC, jego użycie spowoduje błąd
Exit zamiast End - powoduje zakończenie programu, można podać wartość zwracaną, brak konstrukcji EXIT IF..., stosuje się standardowe If ... Exit EndIf (wyjście z programu) lub If ... Break EndIf (wyjście z bloku)
Break zamiast EXIT - wyjście z bloku
Cont - przejście do kolejnej iteracji w bloku
Print - używamy , zamiast ; przed zmiennymi tekstowymi należy dodać $
Next - używamy samodzielnie, bez podawania nazwy zmiennej
Draw, Line, Rect, Box - dwa ostanie parametry w Draw i Box oznaczają punkt docelowy, w Line i Rect - przesunięcie

Dodatkowe informacje

[edytuj]

Składnia BasicC była wzorowana na GFA Basic, jednak zachowuje wiele elementów i logikę C, można mieszać składnię BasicC 1, BasicC 2 i C, jednak robienie tego w tej samej linii może powodować błąd. Można stosować w zasadzie dowolną wielkość liter, choć zaleca się stosowanie dokładnie takich jak w dokumentacji, rozróżnianie: małe litery - komenda C, z dużej litery - komenda Basic. Większość komend (na początku linii) nie wymaga umieszczania parametrów w nawiasie.