ABS funkcja APPEND słowo kluczowe
ABSOLUTE słowo kluczowe AS słowo kluczowe
ACCESS słowo kluczowe ASC funkcja
AND operator boolowski ATN funkcja
ANY słowo kluczowe Atrybuty i wartości koloru
Przekazuje sterowanie z bieżącego programu do innego programu w Basicu.
CHAIN filespec$
• filespec$ Nazwa programu, do którego przekazywane jest sterowanie.
Zobacz także: CALLCOMMONRUNRóżnice w porównaniu z BASICA
Przykład:
'Zakładając, że program TEST.BAS jest w katalogu \DOS:
CHAIN "C:\DOS\TEST.BAS"
MNEMOTECHNIKA: CHAIN - łańcuch (programów nawzajem się wywołujących).
Powtarza blok poleceń, gdy warunek jest prawdziwy, lub do chwili aż warunek
stanie się prawdziwy.
DO [{WHILE | UNTIL} warunek]
[blok_poleceń]
LOOP
DO
[blok_poleceń]
LOOP [{WHILE | UNTIL} warunek]
• warunek Wyrażenie numeryczne, które Basic interpretuje jako
prawdę (nie-zero) lub fałsz (zero).
Zobacz także: EXITFOR...NEXTWHILE...WEND
Przykład:
i% = 0
PRINT "Wartosc i% na poczatku petli wynosi "; i%
DO WHILE i% < 10
i% = i% + 1
LOOP
PRINT "Wartosc i% na koncu petli wynosi "; i%
Wartosc i% na poczatku petli wynosi 0
Wartosc i% na koncu petli wynosi 10
MNEMOTECHNIKA: DO - rób, wykonuj; WHILE - podczas gdy; UNTIL
- aż do; LOOP - pętla.
Kończy program, procedurę, blok lub typ danych użytkownika.
END [{DEF | FUNCTION | IF | SELECT | SUB | TYPE}]
• DEF Kończy wielowierszową definicję funkcji DEF FN.
• FUNCTION Kończy definicję procedury FUNCTION.
• IF Kończy blok polecenia IF...THEN...ELSE.
• SELECT Kończy blok SELECT CASE.
• SUB Kończy procedurę SUB.
• TYPE Kończy definicję typu danych użytkownika.
• Jeśli żaden argument nie jest dołączony, END kończy program i zamyka
wszystkie pliki
Zobacz także: DEF FNFUNCTIONIF...THEN...ELSESELECT CASE
Przykład:
PRINT "Game over."
END
Powoduje wyjście z pętli DO lub FOR, procedury FUNCTION lub SUB, albo
funkcji DEF FN.
EXIT {DEF | DO | FOR | FUNCTION | SUB}
• DEF - z funkcji DEF FN
• DO - z pętli DO
• FOR - z pętli FOR
• FUNCTION - z procedury FUNCTION
• SUB - z procedury SUB SUB
Zobacz także: DEF FNDO...LOOPFOR...NEXTFUNCTIONSUB
Przykład:
i% = 0
DO
i% = i% + 1
IF i% = 500 THEN EXIT DO
LOOP
PRINT "Wyjscie przez EXIT przy "; i%
Powtarza blok poleceń wyszczególnioną liczbę razy.
FOR licznik = start TO end [STEP increment]
[blok_poleceń]
NEXT [licznik [,licznik]...]
• licznik Zmienna numeryczna użyta jako licznik powtórzeń pętli.
• start i end Początkowa i końcowa wartość licznika.
• increment Wielkość, o jaką zwiększany jest licznik po każdym
przebiegu pętli.
Zobacz także: DO...LOOPEXIT WHILE...WEND
Przykład:
FOR i% = 1 TO 15
PRINT i%
NEXT i%
FOR i% = 7 to -6 STEP -3
PRINT i%
NEXT i%
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 7 4 1 -2 -5
Press any key to continue
MNEMOTECHNIKA: FOR i = 1 TO 100: NEXT i - DLA i = 1 DO 100: (weź) NASTĘPNE I
Wykonuje polecenie lub blok poleceń zależnie od określonych warunków.
IF warunek1 THEN
[blok_poleceń-1]
[ELSEIF warunek2 THEN
[blok_poleceń-2]]...
[ELSE
[blok_poleceń-n]]
END IF
IF warunek THEN polecenia [ELSE polecenia]
• warunek1 Jakieś wyrażenie, które może być zinterpretowane
warunek2 jako prawda (nie-zero) lub fałsz (zero)
• blok_poleceń-1 Jedno lub więcej poleceń, w jednej lub więcej linii.
blok_poleceń-2
blok_poleceń-n
• polecenia Jedno lub więcej poleceń, oddzielonych dwukropkami.
Zobacz także: ON...GOSUBON...GOTOSELECT CASE
Przykład:
INPUT "1 czy 2? ", i%
IF i% = 1 OR i% = 2 THEN
PRINT "OK"
ELSE
PRINT "Poza zakresem"
END IF
1 czy 2? 1
OK
1 czy 2? 2
OK
1 czy 2? 3
Poza zakresem
MNEMOTECHNIKA: IF...THEN...ELSE - jeżeli... to..., inaczej ... (jeszce coś innego)
Wychodzi do podprogramu i wraca z podprogramu.
GOSUB line1
.
.
.
RETURN [line2]
• line1 Etykieta lub numer linii pierwszej linii podprogramu.
• line2 Etykieta lub numer linii, dokąd ma nastąpić powrót
z podprogramu.
• Jeśli nie umieścisz etykiety lub numeru linii w poleceniu RETURN,
program podejmuje wykonywanie od polecenia następującego po GOSUB
(przy wywoływaniu podprogramu), lub od miejsca, gdzie nastąpiło
zdarzenie (przy obsłudze zdarzeń). Zob. słowo ON dla informacji
o poleceniach obsługujących zdarzenia.
• Polecenia SUB i CALL stanowią lepszą alternatywę dla podprogramów
GOSUB.
Zobacz także: CALL Słowo kluczowe ONON...GOSUBSUB
Przykład:
FOR i% = 1 TO 20
GOSUB Kwadrat
NEXT i%
END
Kwadrat:
PRINT i%, i% * i%
RETURN
Przekazuje wykonywanie programu do określonej linii.
GOTO line
• line Etykieta lub numer linii do następnego wykonania.
• DO...LOOP, SELECT CASE, IF...THEN...ELSE, SUB, i FUNCTION zapewniają
lepsze drogi sterowania przebiegiem programu.
• GOTO jest także używane jako słowo kluczowe w poleceniu ON ERROR.
Przykład
Zobacz także: DO...LOOPFUNCTIONIF...THEN...ELSEON ERRORON...GOTOSELECT CASESUB
Przekazuje sterowanie do jednego z kilku miejsc, w zależności od wartości
wyrażenia.
ON wyrażenie% GOSUB lista_linii
ON wyrażenie% GOTO lista_linii
• wyrażenie% Wyrażenie z zakresu 0 do 255.
• lista_linii Zestaw etykiet lub numerów linii. Jeśli wartością
wyrażenia jest 1, program idzie do pierwszej linii
na liście; jeśli 2 - do drugiej linii, itd.
• SELECT CASE dostarcza lepszej drogi do wykonania wielokrotnego
odgałęzienia.
Zobacz także: Słowo kluczowe ONSELECT CASE
Przykład:
FOR i% = 1 TO 2
ON i% GOSUB Jeden, Dwa
NEXT i%
END
Jeden: PRINT "Jeden"
RETURN
Dwa: PRINT "Dwa"
RETURN
Wykonuje jeden z kilku bloków poleceń w zależności od wartości wyrażenia.
SELECT CASE wyrażenie_testowe
CASE lista_wyrażeń1
[blok_poleceń-1]
[CASE lista_wyrażeń2
[blok_poleceń-2]]...
[CASE ELSE
[blok_poleceń-n]]
END SELECT
• wyrażenie_testowe Jakieś wyrażenie numeryczne lub łańcuchowe.
• lista_wyrażeń1 Jedno lub więcej wyrażeń odpowiadających wyrażeniu
lista_wyrażeń2 testowanemu
Słowo IS musi stać przed operatorem relacji, jeśli jest on użyty
w wyrażeniu.
• blok_poleceń-1 Jedno lub więcej poleceń w jednej lub wielu liniach.
blokpoleceń-2
blok_poleceń-n
• Argumenty listy wyrażeń mogą mieć którąkolwiek z następujących
form, lub ich kombinacji, oddzielonych przecinkami:
wyrażenie[,wyrażenie]...
wyrażenie TO wyrażenie
IS operator_relacji wyrażenie
wyrażenie Jakiekolwiek wyrażenie numeryczne lub łańcuchowe
zgodne z wyrażeniem testowym.
operator_relacji Jeden z następujących operatorów relacji:
<, <=, >, >=, <>, lub =.
Zobacz także: IF...THEN...ELSE
Przykład:
INPUT "Wpisz akceptowany poziom ryzyka(1-5): ", Razem
SELECT CASE Razem
CASE IS >= 5
PRINT "Maksimum ryzyka i potencjalnych zysków."
PRINT "Wybierz inwestowanie w akcje."
CASE 2 TO 4
PRINT "Ryzyko i potencjalne zyski umiarkowane do wysokich."
PRINT "Zainwestuj w fundusz powierniczy."
CASE 1
PRINT "Bez ryzyka, mały zysk."
PRINT "Wybierz bank."
END SELECT
Wpisz akceptowany poziom ryzyka(1-5): 5
Maksimum ryzyka i potencjalnych zysków.
Wybierz inwestowanie w akcje.
Wpisz akceptowany poziom ryzyka(1-5): 4
Ryzyko i potencjalne zyski umiarkowane do wysokich.
Zainwestuj w fundusz powierniczy.
Wpisz akceptowany poziom ryzyka(1-5): 3
Ryzyko i potencjalne zyski umiarkowane do wysokich.
Zainwestuj w fundusz powierniczy.
Wpisz akceptowany poziom ryzyka(1-5): 2
Ryzyko i potencjalne zyski umiarkowane do wysokich.
Zainwestuj w fundusz powierniczy.
Wpisz akceptowany poziom ryzyka(1-5): 1
Bez ryzyka, mały zysk.
Wybierz bank.
Zawiesza wykonywanie programu w Basicu na czas uruchomienia komendy DOSa
lub pliku wsadowego.
SHELL [łańcuch_komendy$]
• łańcuch_komendy$ Nazwa komendy DOSa lub pliku wsadowego.
• Program Basica wznowi się, gdy zakończy się działanie komendy DOSa
lub pliku wsadowego.
• Jeżeli opuścisz łańcuch komendy, SHELL wywołuje środowisko DOSa
i wyświetla jego znak zachęty. Zastosuj wtedy komendę EXIT,
aby wznowić program w Basicu.
Przykład:
SHELL "DIR"
Wolumin w stacji dysków A nie ma etykiety
Numer seryjny woluminu: 0A31-11F7
Katalog A:\
Zatrzymuje program.
STOP
• Słowo kluczowe STOP także zawiesza wychwytywanie zdarzeń
w następujących poleceniach:
COM, ON COMKEY, ON KEYPEN, ON PENPLAY, ON PLAYSTRIG, ON STRIGTIMER, ON TIMER
Zobacz także: ENDSYSTEM
Przykład:
FOR i% = 1 TO 10
PRINT i%
IF i% = 5 THEN STOP 'STOP pauses; F5 Continues.
NEXT i%
Wykonuje serie poleceń tak długo, jak długo określony warunek jest prawdziwy.
WHILE warunek
.
.
.
WEND
• warunek Wyrażenie numeryczne, które Basic interpretuje jako
prawdę (nie-zero) lub fałsz (zero).
• DO...LOOP stanowi lepszy sposób wykonywania poleceń w pętlach.
Zobacz także: DO...LOOPFOR...NEXT
MNEMOTECHNIKA: WHILE - podczas gdy; WEND - WHILE END - koniec WEND
Definiuje zmienne globalne, które mogą być wspóldzielone w programie albo
pomiędzy dołączanymi programami.
COMMON [SHARED] lista_zmiennych
• SHARED Określa, że zmienne są wspólne dla wszystkich
procedur SUB lub FUNCTION.
• lista_zmiennych Jedna lub więcej zmiennych współdzielonych:
zmienna[( )] [AS typ] [, zmienna[( )] [AS typ]]...
zmienna Nazwa zmiennej Basica. Nazwy zmiennych
mogą składać się z najwyżej 40 znaków
i muszą zaczynać się od litery. Akceptowane
są znaki A-Z, 0-9 i kropka (.).
typ Typ danych zmiennej (INTEGER, LONG, SINGLE,
DOUBLE, STRING albo typ zdefiniowany przez
użytkownika.
• Jeśli nie zadeklarowano tablicy statycznej w uprzednim poleceniu
DIM, zmienne tablicowe w poleceniu COMMON są tablicami dynamicznymi.
Ich rozmiar musi być określony przez późniejsze polecenie DIM
lub REDIM.
Zobacz także: CHAINDIM, REDIMFUNCTIONSHARED, STATICSUB
Deklaruje jedną lub więcej stałych symbolicznych.
CONST nazwa_stałej = wyrażenie [, nazwa_stałej= wyrażenie]...
• nazwa_stałej Nazwa stałej. Nazwa może składać się z maksymalnie
40 znaków i musi zaczynać się od litery. Akceptowane są
znaki A-Z, 0-9, i kropka (.).
• wyrażenie Wyrażenie, które jest przypisane do stałej. Wyrażenie
może składać się z literałów (takich jak 1.0), innych
stałych, operatorów arytmetycznych lub logicznych
z wyjątkiem potęgowania (^), lub z pojedynczego łańcucha
literału.
Przykład:
CONST PI = 3.141593
INPUT "Promien okregu: "; r
PRINT "Powierzchnia = "; PI * r ^ 2
DATA zawiera wartości, ktore będą czytane przez późniejsze polecenia READ.
READ czyta te wartości i przypisuje je do zmiennych.
RESTORE pozwala READ wczytywać powtórnie wartości z określonych poleceń DATA.
DATA stała[,stała]...
READ lista_zmiennych
RESTORE [linia]
• stała Jedna lub więcej stałych liczbowych lub łańcuchowych,
będących danymi do odczytania. Stałe łańcuchowe
zawierające przecinki, dwukropki, lub wiodące albo
kończące spacje, zamykane są w cudzysłowach (" ").
• lista_zmiennych Jedna lub więcej zmiennych oddzielonych przecinkami,
którym są przypisywane wartości z DATA. Nazwy zmiennych
mogą składać się z maksymalnie 40 znaków i muszą
zaczynać się od litery. Akceptowane znaki to A-Z, 0-9,
i kropka (.).
• linia Etykieta lub numer linii polecenia DATA. Jeśli linia
jest opuszczona, następne polecenie READ czyta wartości
z pierwszego polecenia DATA w programie.
Przykład:
FOR i% = 1 TO 3
READ a%, b$
PRINT a%, b$
RESTORE
NEXT i%
DATA 1, "Powtarzaj"
1 Powtarzaj
1 Powtarzaj
1 Powtarzaj
MNEMOTECHNIKA: DATA - dane; READ - czytaj; RESTORE - przywróć
Określa domyślny typ danych dla zmiennych, funkcji DEF FN i procedur
FUNCTION.
DEFINT zakres_liter [,zakres_liter]...
DEFLNG zakres_liter [,zakres_liter]...
DEFSNG zakres_liter [,zakres_liter]...
DEFDBL zakres_liter [,zakres_liter]...
DEFSTR zakres_liter [,zakres_liter]...
• zakres_liter Litera lub zakres liter (jak np. A-M). Qbasic
ustawi domyślny typ danych dla zmiennych, funkcji
DEF FN i procedur FUNCTION, których nazwy zaczynają
się od określonej litery lub liter, następująco:
Polecenie Domyślny typ danych
--------- -----------------------
DEFINT Integer (Liczba całkowita)
DEFLNG Long integer (Długa liczba całkowita)
DEFSNG Single precision (Liczba pojedynczej precyzji)
DEFDBL Double precision (Liczba podwójnej precyzji)
DEFSTR String (Łańcuch)
• Przyrostki typu danychA (%, &, !, #, lub $) zawsze mają pierwszeństwo
przed poleceniem DEFtyp.
• Pojedyncza precyzja jest domyślnym typem danych (liczbowych), jeżeli
nie określisz ich w poleceniu DEFtyp.
• Po tym, jak określisz polecenie DEFtyp w programie, QBasic
automatycznie wstawi odpowiadające polecenia DEFtyp w każdej
procedurze, którą utworzysz.
Zobacz także: Różnice w porównaniu z BASICA
Przykład:
DEFDBL A-Z
a = SQR(3)
PRINT "Pierwiastek kwadratowy z 3 = "; a
Pierwiastek kwadratowy z 3 = 1.732050807568877
MNEMOTECHNIKA: DEFINE INTEGER - zdefiniuj (jako) liczbę całkowitą; DEFine LoNG - zdefiniuj długą (liczbę całkowitą); DEFine SiNGle precision; DEFine DouBLe precision; DEFine STRing
DIM deklaruje tablicę lub określa typ danych dla zmiennych nietablicowych.
REDIM deklaruje lub zmienia rozmiar tablicy dynamicznej, usuwając wszystkie
poprzednio przechowywane w niej wartości.
DIM [SHARED] zmienna[(indeksy)] [AS typ]
[,zmienna[(indeksy)] [AS typ]]...
REDIM [SHARED] zmienna(indeksy) [AS typ]
[,zmienna(indeksy) [AS typ]]...
• SHARED Określa, że zmienne są wspólne dla wszystkich procedur
SUB lub FUNCTION w module.
• zmienna Nazwa tablicy lub zmiennej.
• indeksy Wymiary tablicy, wyrażone następująco:
[dolny TO] górny [,[dolny TO] górny]...
dolny Dolna granica indeksów tablicy. Domyślną dolną
granicą jest zero.
górny Górna granica indeksów.
• AS typ Deklaruje typ danych tablicy lub zmiennej
(INTEGER, LONG, SINGLE, DOUBLE, STRING, albo
typ danych zdefiniowany przez użytkownika).
• DIM deklaruje zarówno tablice statyczne jak i dynamiczne. Jeśli tablica
nie została okreslona przez $STATIC, $DYNAMIC lub COMMON, tablice
zwymiarowane cyframi są statyczne, a tablice zwymiarowane przez zmienne
są dynamiczne. REDIM zawsze deklaruje tablice dynamiczne.
• Pamięć dla tablicy statycznej jest przydzielana gdy program startuje
i pozostaje stała. Pamięć dla tablic dynamicznych jest przydzielana
podczas przebiegu programu.
Zobacz także: COMMONERASEOPTION BASESHARED, STATIC$STATIC, $DYNAMICRóżnice w porównaniu z BASICA
Przykład:
' $DYNAMIC
DIM A(49, 49)
REDIM A(19, 14)
Reinicjalizuje elementy tablicy lub zwalnia pamięć tablic dynamicznych.
ERASE nazwa_tablicy [,nazwa_tablicy]...
• nazwa_tablicy Nazwa tablicy.
• Dla tablic statycznych ERASE ustawia każdy element tablicy liczbowej
na zero, a każdy element tablicy łańcuchowej na łańcuch pusty.
• Dla tablic dynamicznych - ERASE zwalnia pamięć zajmowaną przez
talicę. Nalezy zadeklarować powtórnie wymiary tablicy przez REDIM
lub DIM przed jej użyciem.
Zobacz także: CLEARDIM, REDIM
Przykład:
DIM a%(0)
a%(0) = 6
PRINT "Przed: "; a%(0)
ERASE a%
PRINT "Po: "; a%(0)
Zwraca dolną i górną granicę (najmniejszy i największy dostępny indeks)
dla określonego wymiaru tablicy.
LBOUND(tablica[,wymiar%])
UBOUND(tablica[,wymiar%])
• tablica Nazwa tablicy.
• wymiar% Wskazuje wymiar tablicy, którego dolna lub górna granica
ma być zwrócona. Stosuj 1 dla pierwszego wymiaru, 2 dla
drugiego wymiaru itd. Domyślnie jest 1.
Zobacz także: DIM, REDIM
Przykład:
DIM a%(1 TO 3, 2 TO 7)
PRINT LBOUND(a%, 1), UBOUND(a%, 2)
Ustawia domyślną dolną granicę indeksów tablicy.
OPTION BASE {0 | 1}
• Polecenie DIM z członem TO zapewnia lepszą drogę ustawiania dolnej
granicy indeksu tablicy.
Zobacz także: DIM, REDIMLBOUND, UBOUND
Pozwala wstawiać do programu komentarze objaśniające.
REM komentarz
' komentarz
• komentarz Dowolny tekst.
• Komentarze sa ignorowane podczas pracy programu, z wyjątkiem gdy
zawierają metapolecenia.
• Komentarz może być wstawiony w linii po wykonywalnym poleceniu,
jeśli jest poprzedzony apostrofową (') formą REM, lub jeśli REM jest
poprzedzone przez dwukropek (:).
Zobacz także: $STATIC, $DYNAMIC
Przykład:
REM To jest komentarz.
' To jest także komentarz.
PRINT "Test1" 'To jest komentarz po poleceniu PRINT.
PRINT "Test2" : REM To jest także komentarz po poleceniu PRINT.
Definiuje typ danych zawierający jeden lub wiecej elementów.
TYPE typ_użytkownika
nazwa_elementu AS nazwa_typu
[nazwa_elementu AS nazwa_typu]
.
.
.
END TYPE
• typ_użytkownika Nazwa definiowanego typu danych. Nazwa może składać
się z maksymalnie 40 znaków i musi zaczynać się
od litery. Akceptowane znaki to A-Z, 0-9, i kropka (.).
• nazwa_elementu Element typu danych użytkownika.
• nazwa_typu Typ elementu (INTEGER, LONG, SINGLE, DOUBLE,
STRING, lub typ danych użytkownika).
• Stosuj DIM, REDIM, COMMON, STATIC, lub SHARED do tworzenia zmiennych
o typie danych zdefiniowanym przez użytkownika.
Zobacz także: COMMONDIM, REDIMSHARED, STATIC
Przykład:
TYPE Karty
Kolor AS STRING * 9
Wartosc AS INTEGER
END TYPE
DIM Talia(1 TO 52) AS Karty
Talia(1).Kolor = "Kier"
Talia(1).Wartosc = 2
PRINT Talia(1).Kolor, Talia(1).Wartosc
Ustawia domyślną pamięć dla tablicy.
{REM | '} $STATIC
{REM | '} $DYNAMIC
• {REM | '} REM lub znak komentarza (') musi stać
przed metapoleceniem.
• $STATIC Określa, że tablice deklarowane w następnych poleceniach
DIM są tablicami statycznymi (z wyjątkiem gdy są deklaro-
wane w nie-statycznej procedurze SUB lub FUNCTION).
Pamięć dla tablic jest alokowana przy starcie programu
i pozostaje stała.
• $DYNAMIC Określa, że tablice deklarowane w następnych poleceniach
DIM są tablicami dynamicznymi. Pamięć dla tablic jest
alokowana dynamicznie podczas przebiegu programu.
• DIM i REDIM zazwyczaj zapewniają lepsza drogę do określenia, czy
tablice mają być statyczne, czy dynamiczne.
Zobacz także: DIM, REDIMREMSHARED, STATIC
VARPTR returns the offset address of a variable.
VARSEG returns the segment address of a variable.
VARPTR(nazwa_zmiennej)
VARSEG(nazwa_zmiennej)
• nazwa_zmiennej Dowolna zmienna Basica.
Zobacz także: CALL ABSOLUTEDEF SEGPEEK, POKEVARPTR$
Przekazuje sterowanie do procedury SUB.
[CALL] nazwa [([lista argumentów])]
• nazwa Nazwa wywoływanej procedury SUB.
• lista argumentów Zmienne lub stałe, które mają zostać przekazane
do procedury SUB. Wiele argumentow oddziela się
przecinkami. Argumenty tablicy określa się przez
nazwę tablicy zakończoną pustymi nawiasami.
• Jeśli opuszcza się słowo CALL, należy także pominąć nawiasy
wokół listy argumentów. Albo deklaruj procedurę poleceniem DECLARE
przed jej wywołaniem, albo po prostu zapisz program, a Basic
automatycznie wygeneruje polecenie DECLARE.
• Aby wskazać argument, ktorego wartość nie będzie zmieniana
przez procedurę, należy zamknąć argument w nawiasach.
Przykład:
Program REMLINE.BAS ilustruje wywoływanie procedur SUB. Aby obejrzeć
lub uruchomić ten program, załaduj REMLINE.BAS używając komendy Open
z menu File.
Zobacz także: CALL ABSOLUTEDECLARESUB
Przekazuje sterowanie do procedury w języku maszynowym.
CALL ABSOLUTE ([lista_argumentów,] ofset%)
• lista_argumentów Argumenty przekazywane do procedury w języku
maszynowym jako ofsety z bieżącego segmentu danych.
• ofset% Ofset z bieżącego segmentu danych, ustawiony przez
DEF SEG, do lokacji startowej procedury.
Przykład:
'Wywołuje program drukowania ekranu na drukarce.
DIM a%(2)
DEF SEG = VARSEG(a%(0))
FOR i% = 0 TO 2
READ d%
POKE VARPTR(a%(0)) + i%, d%
NEXT i%
DATA 205, 5, 203 : ' int 5 retf 'Kod w języku maszynowym
'do drukowania ekranu
CALL ABSOLUTE(VARPTR(a%(0)))
DEF SEG
Zobacz także: CALLVARPTR, VARSEGRóżnice w porównaniu z BASICA
Deklaruje procedurę FUNCTION lub SUB i wywołuje sprawdzenie typu danych
argumentu.
DECLARE {FUNCTION | SUB} nazwa [([lista_parametrów])]
• nazwa Nazwa procedury
• lista_parametrów Jedna lub więcej zmiennych, które wyszczególniają
parametry mające zostać przekazane do procedury, gdy
bedzie wywoływana:
zmienna[( )] [AS typ] [, zmienna[( )] [AS typ]]...
zmienna Nazwa zmiennej Basica
typ Typ danych zmiennej (INTEGER,
LONG, SINGLE, DOUBLE, STRING, albo typ
zdefiniowany przez użytkownika). ANY
zezwala na każdy typ danych.
Program REMLINE.BAS ilustruje wywoływanie procedur SUB. Aby obejrzeć
lub uruchomić ten program, załaduj REMLINE.BAS używając komendy Open
z menu File.
Zobacz także: CALLFUNCTIONSUB
Definiuje funkcję.
DEF FNname[(lista_parametrów)] = wyrażenie
DEF FNname[(lista_parametrów)]
[blok_poleceń]
FNname = wyrażenie
[blok_poleceń]
EXIT DEF]
[blok_poleceń]
END DEF
• lista_parametrów Jeden lub wiecej parametrów w następującej formie:
zmienna[( )] [AS typ] [, zmienna[( )] [AS typ]]...
zmienna Nazwa zmiennej Basica.
typ Typ danych w zmiennej (INTEGER,
LONG, SINGLE, DOUBLE, STRING, albo
typ zdefiniowany przez użytkownika).
• wyrażenie Zwraca wartość funkcji.
• Polecenie FUNCTION zapewnia lepszą drogę definiowania funkcji.
Zobacz także: EXITFUNCTIONSHARED, STATIC
Definiuje procedurę FUNCTION.
FUNCTION name [(lista_parametrów)] [STATIC]
[blok_poleceń]
nazwa = wyrażenie
[blok_poleceń]
END FUNCTION
• nazwa Nazwa funkcji i typ danych, które zwraca, określony
przez przyrostki typu danych (%, &, !, #, or $).
• lista_parametrów Jedna lub więcej zmiennych, które wyszczególniają
parametry mające zostać przekazane do funkcji gdy
jest ona wywoływana:
zmienna[( )] [AS typ] [, zmienna[( )] [AS typ]]...
zmienna Nazwa zmiennej Basica.
typ Typ danych w zmiennej (INTEGER,
LONG, SINGLE, DOUBLE, STRING, albo
typ zdefiniowany przez użytkownika).
• STATIC Określa, że wartości zmiennych lokalnych funkcji są
zachowywane między wywołaniami funkcji.
• wyrażenie Zwraca wartość funkcji.
• Gdy wywołujesz funkcję, możesz określić, że wartości argumentu nie będą
zmieniane przez funkcję - przez zamknięcie argumentu w nawiasach.
Przykład:
Program REMLINE.BAS ilustruje wywoływanie procedur SUB. Aby obejrzeć
lub uruchomić ten program, załaduj REMLINE.BAS używając komendy Open
z menu File.
Zobacz także: DECLAREDEF FNEXITSHARED, STATICSUB
Uruchamia beżący program, lub program wyspecyfikowany.
RUN [{numer_linii | plik$}]
• numer_linii Numer linii w bieżącym programie, od której winno
zacząć się jego wykonywanie. Jeśli numer linii nie jest
podany, wykonywanie zacznie się od pierwszej wykonywalnej
linii.
• plik$ Nazwa pliku źródłowego Basica. QBasic zakłada
rozszerzenie .BAS.
• RUN zamyka wszystkie pliki i czyści pamięć przed załadowaniem
programu. Zastosuj polecenie CHAIN aby uruchomić program bez zamykania
otwartych plików.
Przykład:
'Zakładając, że program TEST.BAS jest w katalogu \DOS:
RUN "C:\DOS\TEST.BAS"
Zobacz także: CHAIN
SHARED daje procedurom dostęp do zmiennych na poziomie modułu.
STATIC czyni zmienną lokalną dla funkcji lub procedury i zachowuje jej
wartość pomiędzy wywołaniami.
SHARED zmienna[()] [AS typ] [,zmienna[()] [AS typ]]...
STATIC zmienna[()] [AS typ] [,zmienna[()] [AS typ]]...
• zmienna Nazwa zmiennej na poziomie modułu, którą chcemy
współdzielić, lub zmiennej którą chcemy uczynić lokalną.
Nazwy zmiennych mogą składać się z maksimum 40 znaków
i muszą zaczynać się od litery. Akceptowane znaki
to A-Z, 0-9, i kropka (.).
• AS typ Deklaruje typ danych w zmiennej (INTEGER, LONG,
SINGLE, DOUBLE, STRING, lub typ zdefiniowany przez
użytkownika).
Przykład:
Program REMLINE.BAS ilustruje użycie poleceń SHARED i STATIC. Aby
obejrzeć lub uruchomić ten program, załaduj REMLINE.BAS używając
komendy Open z menu File.
Zobacz także: COMMONDIM, REDIM
Definiuje procedurę SUB.
SUB nazwa[(lista_parametrów)] [STATIC]
[blok_poleceń]
END SUB
• nazwa Nazwa procedury SUB, do 40 znaków długości, bez
przyrostków typu danych.
• lista_parametrów Jedna lub więcej zmiennych, które określają
parametry mające zostać przekazane do procedury SUB
gdy zostanie wywołana:
zmienna[( )] [AS typ] [, zmienna[( )] [AS typ]]...
zmienna Nazwa zmiennej Basica.
typ Typ danych w zmiennej (INTEGER, LONG,
SINGLE, DOUBLE, STRING, lub typ
zdefiniowany przez użytkownika).
• STATIC Określa, że wartości zmiennych lokalnych w procedurze
SUB są zachowywane między wywołaniami funkcji.
• Gdy wywołujesz procedurę SUB, możesz określić, aby wartości
argumentów nie były zmieniane przez procedurę - przez zamknięcie
argumentu w nawiasach.
Przykład:
Program REMLINE.BAS ilustruje wywoływanie procedur SUB. Aby obejrzeć
lub uruchomić ten program, załaduj REMLINE.BAS używając komendy Open
z menu File.
Zobacz także: CALLDECLAREEXITFUNCTIONSHARED, STATIC
Czyści ekran.
CLS [{0 | 1 | 2}]
CLS Czyści zarówno ekran tekstowy jak i graficzny. Jeśli było
ustawione okno graficzne (przez użycie VIEW), czyści tylko
to okno. W przeciwnym razie - czyści okno tekstowe
lub cały ekran.
CLS 0 Czyści ekran z całego tekstu i grafiki.
CLS 1 Czyści okno graficzne, lub cały ekran, jeśli okno graficzne
nie było ustawione.
CLS 2 Czyści okno tekstowe.
Zobacz także: VIEWVIEW PRINTWINDOW
LOCATE przesuwa kursor do określonej pozycji na ekranie.
CSRLIN zwraca pozycję wiersza, w którym znajduje się kursor.
POS zwraca bieżącą pozycję kolumny, w której znajduje się kursor.
LOCATE [wiersz%] [,[kolumna%] [,[kursor%] [,start% [,stop%]]]]
CSRLIN
POS(wyrażenie)
• wiersz% i kolumna% Numer wiersz i kolumny, do których ma być
przesunięty kursor.
• kursor% Określa czy kursor ma być widoczny:
0 = niewidoczny, 1 = widoczny
• start% i stop% Wyrażenia całkowitoliczbowe z zakresu 0 -31,
które określają pierwszą i ostatnią linię skanu
kursora. Można zmieniać rozmiar kursora przez
zmianę linii skanu kursora.
• wyrażenie Jakieś wyrażenie.
Przykład:
CLS
LOCATE 5, 5
wiersz% = CSRLIN
kolumna% = POS(0)
PRINT "Pozycja 1 (Nacisnij cokolwiek)"
DO
LOOP WHILE INKEY$ = ""
LOCATE (wiersz + 2), (kolumna% + 2)
PRINT "Pozycja 2"
Pozycja 1 (Nacisnij cokolwiek)
Pozycja 2
MNEMOTECHNIKA: LOCATE - umiejscowić; CURSOR LINE - wiersz kursora; POSITION - położenie
Czyta znak z klawiatury.
INKEY$
• INKEY$ zwraca łańcuch zerowej długości, jeśli nie naciśnięto żadnego
klawisza.
• Dla standardowych klawiszy INKEY$ zwraca jednobajtowy łańcuch
zawierający odczytany znak.
• Dla klawiszy klawiatury rozszerzonej INKEY$ zwraca dwubajtowy
łańcuch złożony ze znaku 'null' (ASCII 0) i kodu klawiatury.
Zobacz także: Kody klawiatury
Przykład:
PRINT " Esc - wyjscie..."
DO
LOOP UNTIL INKEY$ = CHR$(27) '27 jest kodem ASCII dla Esc.
INP zwraca bajt odczytany ze sprzętowego portu wejścia/wyjścia.
OUT wysyła bajt do sprzętowego portu wejścia/wyjścia.
INP(port%)
OUT port%, datne%
• port% Liczba z zakresu 0 do 65,535 która identyfikuje port.
• dane% Wyrażenie numeryczne z zakresu 0 do 255 do wysłania
na port.
Zobacz także: WAIT
Przykład:
x% = INP(&H3FC) 'Czyta COM1 Modem Control Register.
OUT &H3FC, (x% XOR 1) 'Zmienia bit danych gotowości terminala.
MNEMOTECHNIKA: skróty od INPUT i OUTPUT, dla odróżnienia od tamtych poleceń, które mogą przenosić więcej niż jeden bajt
INPUT odczytuje wprowadzenie z klawiatury lub z pliku. LINE INPUT czyta
linię do 255 znaków z klawiatury lub z pliku.
INPUT [;] ["komunikat"{; | ,}] lista_zmiennych
LINE INPUT [;] ["komunikat";] zmienna$
INPUT #filenumber%, lista_zmiennych
LINE INPUT #numer_pliku%, zmienna$
• komunikat Opcjonalny ciąg znaków, który jest wyświetlany
zanim użytkownik wprowadzi dane. Średnik po komuni-
kacie dodaje do niego znak zapytania.
• lista_zmiennych Jedna lub więcej zmiennych oddzielonych przecinkami,
w których są przechowywane dane wprowadzane z klawia-
tury lub wczytywane z pliku. Nazwy zmiennych mogą
składać się z maksimum 40 znaków i muszą zaczynać się
od litery. Akceptowane znaki to A-Z, 0-9, i kropka (.).
• zmienna$ Przechowuje linię znaków wprowadzoną z klawiatury
albo odczytaną z pliku.
• numer_pliku% Numer otwartego pliku.
• INPUT używa przecinka jako separatora pomiędzy wprowadzeniami.
LINE INPUT czyta wszystkie znaki do znaku końca wiersza.
• Dla wpisu z klawiatury - średnik bezpośrednio po INPUT utrzymuje
kursor w tej samej linii po naciśnięciu Enter przez użytkownika.
Zobacz także: INKEY$INPUT$Tryby otwarcia plików
Przykład:
CLS
OPEN "LIST" FOR OUTPUT AS #1
DO
INPUT " IMIE: ", Imie$ 'Czyta wpisy z klawiatury.
INPUT " WIEK: ", Wiek$
WRITE #1, Imie$, Wiek$
INPUT "Dodac nowy wpis"; R$
LOOP WHILE UCASE$(R$) = "T"
CLOSE #1
'zwrotne echo z pliku
OPEN "LIST" FOR INPUT AS #1
CLS
PRINT "Zapisy w pliku:": PRINT
DO WHILE NOT EOF(1)
LINE INPUT #1, REC$ 'Czyta zapisy z pliku.
PRINT REC$ 'Wypisuje je na ekranie.
LOOP
CLOSE #1
KILL "LIST"
Zwraca łańcuch znaków odczytany z określonego pliku lub z klawiatury.
INPUT$(n[,[#]numer_pliku%])
• n Liczba znaków (bajtów) do odczytania.
• numer_pliku% Numer otwartego pliku. Jeśli numer pliku jest
opuszczony, INPUT$ czyta z klawiatury.
Zobacz także: INPUT, LINE INPUT
Przykład:
OPEN "TEST.DAT" FOR OUTPUT AS #1
PRINT #1, "The text"
CLOSE
OPEN "TEST.DAT" FOR INPUT AS #1
PRINT INPUT$(3, 1) 'Wypisuje pierwsze 3 znaki.
CLOSE
IOCTL transmituje łańcuch sterujący do sterownika urządzenia.
IOCTL$ zwraca informację o bieżącym statusie ze sterownika urządzenia.
IOCTL [#]numer_pliku%%, łańcuch$
IOCTL$([#]numer_pliku%)
• numer_pliku% Numer otwartego urządzenia.
• łańcuch$ Łańcuch sterujący wysyłany do urządzenia.
• Łańcuch sterujący IOCTL i informacja zwracana przez IOCTL$ zależy
od sterownika urządzenia. Zobacz w dokumentacji sterownika informacje
o łańcuchach sterujących IOCTL i co jest zwracane przez IOCTL$.
Przypisuje wartości łańcuchowe do klawiszy funkcyjnych i, opcjonalnie,
wyświetla wartości klawiszy.
KEY key%, wyrażenie_łańcuchowe
KEY LIST
KEY ON
KEY OFF
• key% Numer klawisza funkcyjnego. Używaj 1 do 10 dla
klawiszy F1 do F10. Używaj 30 i 31 dla klawiszy
F11 i F12 na klawiaturach rozszerzonych.
• wyrażenie_łańcuchowe Łańcuch do 15 znaków, zwracany po naciśnięciu
klawisza funkcyjnego.
• LIST Wyświetla przypisanie dla każdego klawisza.
• ON Włącza wyświetlanie linii klawiszy funkcyjnych.
• OFF Wyłącza wyświetlanie linii klawiszy funkcyjnych.
Zobacz także: KEY, ON KEY (wychwytywanie zdarzeń)
Przykład:
KEY 4, "MENU" + CHR$ (13)
KEY LIST
KEY 4, ""
KEY LIST
F2
F3
F4 MENU
F5
F6
F7
F8
F9
F10
F11
F12
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
Press any key to continue
Zwraca liczbę znaków wysłanych na drukarkę od chwili wysłania ostatniego
znaku końca wiersza (CR).
LPOS(n%)
• n% Wskazuje jeden z portów drukarki:
0 = LPT1, 1 = LPT1, 2 = LPT2, 3 = LPT3
Przykład:
'Ten przykład wymaga drukarki.
LPRINT
FOR i% = 1 TO 20
LPRINT i%;
IF LPOS(1) >= 10 THEN LPRINT 'rozpoczyna nowy wiersz.
NEXT i%
PRINT wypisuje dane na ekran lub do pliku.
LPRINT drukuje dane na drukarce LPT1.
PRINT [#numer_pliku%,] [lista_wyrażeń] [{; | ,}]
LPRINT [lista_wyrażeń] [{; | ,}]
• numer_pliku% Numer otwatego pliku. Jesli nie określisz numeru
pliku, PRINT pisze na ekran.
• lista_wyrażeń Lista jednego lub więcej wyrażeń numerycznych
lub łańcuchowych do wypisania.
• {; | ,} Określa, gdzie rozpocznie się następny wpis:
; oznacza drukowanie bezpośrednio po ostatniej
wartości.
, oznacza drukowanie od początku następnej strefy
drukowania. Strefy drukowania mają szerokość
14 znaków.
Zobacz także: PRINT USING, LPRINT USINGWIDTHWRITE
Przykład:
OPEN "TEST.DAT" FOR OUTPUT AS #1
PRINT #1, USING "##.### "; 12.12345
CLOSE
OPEN "TEST.DAT" FOR INPUT AS #1
INPUT #1, a$
PRINT a$
LPRINT "To jest linia"; 1
LPRINT "To jest linia",
LPRINT 2
12.123
MNEMOTECHNIKA: PRINT - drukuj; LINE PRINTER - drukarka wierszowa
PRINT USING wypisuje tekst sformatowany na ekran lub do pliku.
LPRINT USING drukuje tekst sformatowany na drukarce LPT1.
PRINT [#numer_pliku%,] USING łańcuch_formatujący$; lista_wyrażeń [{; | ,}]
LPRINT USING łańcuch_formatujący$; lista_wyrażeń [{; | ,}]
• numer_pliku% Numer otwartego pliku sekwencyjnego.
• łańcuch_formatujący$; Wyrażenie łańcuchowe zawierające jeden
lub wiecej znaków formatujących.
• lista_wyrażeń Lista jednego lub więcej wyrażeń numerycznych lub
łańcuchowych do wypisania, oddzielonych perzecinkami,
średnikami, apcjami lub tabulatorami.
• {; | ,} Określa, gdzie rozpocznie się następny wpis:
; oznacza drukowanie bezpośrednio po ostatniej
wartości.
, oznacza drukowanie od początku następnej strefy
drukowania. Strefy drukowania mają szerokość
14 znaków.
Zobacz także: PRINT, LPRINTWIDTH
Przykład:
a = 123.4567
PRINT USING "###.##"; a
LPRINT USING "+###.####"; a
a$ = "ABCDEFG"
PRINT USING "!"; a$
LPRINT USING "\ \"; a$
123.46
A
Znaki, które formatują wyrażenie numeryczne
# Pozycja cyfry. ¦ - Umieszczony po cyfrze,
. Pozycja kropki dziesiętnej. ¦ drukuje wiodący minus
, Umieszczony na lewo od kropki ¦ dla liczb ujemnych.
dziesiętnej, drukuje przecinki ¦ $$ Drukuje wiodący $.
co każde trzy cyfry. ¦ ** Wypełnia gwiazdkami (*)
+ Pozycja znaku liczby . ¦ wiodace spacje.
^^^^ Drukuje w postaci wykładniczej ¦ **$ Kombinacja ** and $$.
Znaki używane do formatowania wyrażenia łańcuchowego
& Drukuje cały łańcuch. ¦ \ \ Drukuje pierwszych n znaków,
! Drukuje tylko pierwszy znak ¦ gdzie n jest liczbą spacji
łańcucha. ¦ miedzy \ \ plus 2.
Znaki używane do druku literałów
_ Drukuje następny znak ¦ Każdy znak nie zamieszczony
formatujacy jako literał ¦ w tej tabeli jest drukowany
¦ jako literał.
Otwiera i inicjalizuje kanał komunikacyjny dla operacji wejścia/wyjścia
Polecenie OPEN COM musi być wykonane, zanim można bedzie użyć urządzenia
do komunikacji przez interfejs RS232.
OPEN "COMn: optlist1 optlist2" [FOR mode] AS [#]filenum% [LEN=reclen%]
• n The communications port to open (1 = COM1, 2 = COM2).
• optlist1 The most-often-used communications parameters:
[baud] [,[parity] [,[data] [,[stop]]]]
baud is the baud rate of the device to be opened:
75, 110, 150, 300, 600, 1200, 2400, 4800, 9600
parity is the method of parity checking:
N (none) E (even) O (odd)
S (space) M (mark) PE (enable error checking)
data is the number of data bits per byte:
5, 6, 7, 8
stop is the number of stop bits:
1, 1.5, 2
Defaults: 300 baud, even parity, 7 data bits, 1 stop bit.
• optlist2 A list of less-often-used parameters, separated by commas:
Option Description
------ --------------------------------------------------
ASC Opens the device in ASCII mode.
BIN Opens the device in binary mode.
CD[m] Sets the timeout period (in milliseconds) on the
Data Carrier Detect (DCD) line.
CS[m] Sets the timeout period (in milliseconds) on the
Clear to Send (CTS) line.
DS[m] Sets the timeout period (in milliseconds) on the
Data Set Ready (DS) line.
LF Sends a line-feed character after a carriage
return.
OP[m] Specifies how long (in milliseconds) OPEN COM
waits for all communications lines to become open.
RB[n] Sets the size (in bytes) of the receive buffer.
RS Suppresses detection of Request to Send (RTS).
TB[n] Sets the size (in bytes) of the transmit buffer.
• mode INPUT, OUTPUT, or RANDOM (the default).
See OPEN Statement File Modes.
• filenum% A number in the range 1 through 255 that identifies the
communications channel as long as it is open.
• reclen% Random-access-mode buffer size (default is 128 bytes).
Example:
'Use this example for trouble shooting serial communications problems.
'Slow baud, hardware handshaking is ignored and buffers are enlarged.
OPEN "COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" FOR RANDOM AS #1
Zobacz także: OPEN
Zwraca kod ASCII znaku lub atrybut koloru z określonego miejsca na ekranie.
SCREEN (wiersz%,kolumna% [,colorflag%])
• wiersz% Współrzedna wiersza znaku.
• kolumna% Współrzedna kolumny znaku.
• colorflag% Wartość (0 or 1) określająca, co jest zwracane:
Wartość Zwraca
-------------- --------------------------------
0 (lub brak) Kod ASCII znaku.
1 Atrybut koloru znaku.
Zobacz także: POINTPolecenie SCREENTabela kodów ASCIIAtrybuty i wartości koloru
Przykład:
CLS
PRINT "Hello"
PRINT "Kod ASCII znaku na pozycji 1,1 to"; SCREEN(1, 1)
Wstawia określoną liczbę spacji w poleceniach PRINT i LPRINT.
SPC(n%)
• n% Liczba spacji do wstawienia; wartość z zakresu 0 do 32767.
Zobacz także: PRINT, LPRINTPRINT USING, LPRINT USINGSPACE$TAB
Przykład:
PRINT "Tekst1"; SPC(10); "Tekst2"
Przesuwa kursor na określoną pozycję drukowania.
TAB(kolumna%)
• kolumna% Numer kolumny nowej pozycji drukowania.
Przykład:
PRINT TAB(25); "Tekst"
Zobacz także: PRINT, LPRINTPRINT USING, LPRINT USINGSPCSPACE$
Ustawia granice ekranowego okna tekstowego.
VIEW PRINT [górny_wiersz% TO najniższy_wiersz%]
• górny_wiersz% Numer najwyższego wiersza okna tekstowego.
• najniższy_wiersz% Numer najniższego wiersza okna tekstowego.
• Jeśli opuści się argumenty górny_wiersz% i najniższy_wiersz%,
VIEW PRINT ustawi cały ekran jako okno tekstowe.
• Zakresy górny_wiersz% i najniższy_wiersz% zależą od trybu ekranowego.
Zobacz także: CLSPRINT, LPRINTSCREENWIDTHTryby ekranu
Przykład:
VIEW PRINT 10 TO 15
FOR i% = 1 TO 100 'Wyprowadzenie będzie przewijane.
PRINT i%
NEXT i%
Suspends program execution until a specified bit pattern is input from an
input port.
WAIT portnumber%, AND-expression% [,XOR-expression%]
• portnumber% The number of the input port.
• AND-expression% An integer expression that WAIT combines with the
bit pattern value using an AND operator. When the
result is nonzero, WAIT stops monitoring the port.
• XOR-expression% Can be used to turn line bits on and off in the bit
pattern before the AND operation is applied.
Example:
'Reads the interrupt controller port address &H20.
'Press any key to continue.
WAIT &H20, 1
Zobacz także: INP, OUTOperatory boolowskie
Przypisuje szerokość linii wyjściowej do urządzenia (np. drukarki) lub pliku,
albo zmienia liczbę wyswietlanych na ekranie kolumn i wierszy.
WIDTH [kolumny%] [,wiersze%]
WIDTH {#numer_pliku% | urządzenie$}, kolumny%
WIDTH LPRINT columns%
• kolumny% Pożądana szerokość w kolumnach. Szerokość wyświetlania
na ekranie musi mieć 40 lub 80 kolumn.
• wiersze% Pożądana wysokość wyświetlania w wierszach. Wartość
może wynosić 25, 30, 43, 50, lub 60, zależnie od karty
graficznej i trybu ekranowego.
• #numer_pliku% Numer otwartego pliku lub urządzenia.
• urządzenie$ Nazwa urządzenia:
SCRN:, COM1:, COM2:, LPT1:, LPT2:, LPT3:
Przykład:
OPEN "LPT1:" FOR OUTPUT AS #1
WIDTH #1, 132
Zobacz także: PRINT, LPRINTSCREENVIEW PRINT
Rysuje na ekranie okrąg lub elipsę.
CIRCLE [STEP] (x!,y!),promień![,[kolor%] [,[start!] [,[end!] [,aspect!]]]]
• STEP Określa, że współrzędne są liczone względem bieżącej
pozycji kursora graficznego.
• (x!,y!) Współrzędne dla środka okręgu lub elipsy.
• promień! Promień okręgu lub elipsy w jednostkach bieżącego
systemu współrzędnych, określonego przez najświeższe
polecenia SCREEN, VIEW i WINDOW.
• kolor% Atrybut koloru, który ustawia kolor okręgu. Dostępne
atrybuty koloru zależą od karty graficznej i trybu
ekranowego ustawionego przez najświeższe polecenie SCREEN.
• start! Poczatkowy kąt dla łuku, w radianach.
• end! Końcowy kąt dla łuku, w radianach.
• aspect! Stosunek długości osi y do długości osi x, używany
do kreślenia elips.
• Aby przeliczyć stopnie na radiany, pomnóż stopnie przez (PI / 180).
Zobacz także: COLORDRAWLINESCREENVIEWWINDOWAtrybuty i wartości koloruTryby ekranu
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 2
CIRCLE (320, 100), 200
CIRCLE STEP (0,0), 100
Ustawia kolory wyświetlane na ekranie.
COLOR [foreground%][,[background%][,border%]] Tryb graficzny 0 (tylko tekst)
COLOR [background%][,palette%] Tryb graficzny 1
COLOR [foreground%] Tryby graficzne 4, 12, 13
COLOR [foreground%][,background&] Tryby graficzne 7-10
• foreground% Liczba, która określa kolor pierwszego planu. W trybie
foreground& graficznym 0 foreground% jest atrybutem koloru, który
określa kolor tekstu. W innych trybach graficznych
foreground% jest atrybutem koloru lub 4-bitową wartością
koloru (tylko w trybie 4), która określa kolor tekstu
i rysowanych linii.
• background% Liczba, ktora określa kolor tła. W trybie graficznym 0
background& background% jest atrybutem koloru. W trybie graficznym 1
background% jest 4-bitową wartością koloru. W trybach
7-10 background& jest wartością koloru.
• border% Atrybut koloru, który ustawia kolor obwódki ekranu.
• palette% Liczba (0 lub 1) okreslajaca, ktory z dwóch zestawów
atrybutów koloru zostanie użyty:
palette% Attribute 1 Attribute 2 Attribute 3
-------- ----------- ----------- ------------
0 Green Red Brown
1 Cyan Magenta Bright white
• Dostępne atrybuty i wartości koloru zależą od karty graficznej i trybu
ekranowego ustawionego przez najświeższe polecenie SCREEN.
• Jeśli system jest wyposażony w kartę EGA, VGA, lub MCGA, zastosuj
polecenie PALETTE do zmiany przypisań lub atrybutów koloru.
Zobacz także: DRAWPAINTPALETTE, PALETTE USINGSCREENAtrybuty i wartości koloruTryby ekranu
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 7
FOR i% = 0 TO 15
COLOR i%
PRINT i%
NEXT i%
Rysuje obiekt.
DRAW łańcuch_komend$
• łańcuch_komend$ Wyrażenie łańcuchowe zawierające jedną lub wiecej
następujących komend DRAW.
Komendy rysujące linię i przesuwające kursor:
D[n%] Przesuwa kursor w dół n% jednostek.
E[n%] Przesuwa kursor w góre i w prawo n% jednostek.
F[n%] Przesuwa kursor w dół i w prawo n% jednostek.
G[n%] Przesuwa kursor w dół i w lewo n% jednostek.
H[n%] Przesuwa kursor w gorę i w lewo n% jednostek.
L[n%] Przesuwa kursor w lewo n% jednostek.
M[{+|-}]x%,y% Przesuwa kursor do punktu x%,y%. Jesli x% jest
poprzedzone przez + lub -, przesuwa względem
bieżącego punktu.
R[n%] Przesuwa kursor w prawo n% jednostek.
U[n%] Przesuwa kursor w górę n% jednostek.
[B] Przedrostek opcjonalny, który przesuwa kursor
bez rysowania.
[N] Przedrostek opcjonalny, który rysuje i cofa
kursor do jego oryginalnej pozycji.
Komendy koloru, obrotu i skali:
An% Obraca obiekt n% * 90 stopni (n% może być 0, 1,
2, lub 3).
Cn% Ustawia kolor rysowania (n% jest atrybutem koloru).
Pn1%,n2% Ustawia kolory wypełnienia i obramowania obiektu
(n1% jest atrybutem koloru wypełnienia, n2% jest
atrybutem koloru obramowania).
Sn% Określa skalę rysowania przez ustawienie długości
jednostki przesunięcia kursora. Domyślne n%
wynosi 4, co jest równoważne 1 pikselowi.
TAn% Obraca o kąt n% stopni (-360 do 360).
• Jeśli opuścić n% w komendach rysowania linii i ruchu kursora, kursor
przesuwa się o 1 jednostkę.
• Aby wykonać łańcuch polecenia DRAW, użyj komendy "X":
DRAW "X"+ VARPTR$(łańcuch_komend$)
Zobacz także: PALETTE, PALETTE USINGSCREENVARPTR$Atrybuty i wartości koloruRóżnice w porównaniu z BASICA
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
Trojkat$ = "F60 L120 E60"
DRAW "C2 X" + VARPTR$(Trojkat$)
DRAW "BD30 P1,2 C3 M-30,-30"
GET przechwytuje graficzny obraz ekranu. PUT wyświetla obraz przechwycony
przez GET.
GET [STEP](x1!,y1!)-[STEP](x2!,y2!), nazwa_tablicy[(indeks%)]
PUT [STEP] (x1!,y1!), nazwa_tablicy[(indeks%)] [,actionverb]
• STEP Określa, że współrzędne są liczone względem bieżącej
pozycji kursora graficznego.
• (x1!,y1!) Współrzedne lewego górnego rogu obrazu przechwytywanego
przez GET, albo lokacji ekranowej, gdzie PUT ma
wyświetlić obraz.
• (x2!,y2!) Współrzedne prawego dolnego rogu przechwytywanego obrazu.
• nazwa_tablicy Nazwa tablicy, w której przechowywany jest obraz.
Zobacz Tablice i kompatybilność obrazów ekranu aby
określić wymagany rozmiar tablicy.
• indeks% Indeks tablicy, od którego zaczyna się przechowywany
obraz.
• actionverb Słowo kluczowe wskazujące, jak wyświetlany jest obraz:
actionverb Działanie
---------- ---------------------------------------------
AND Łączy przechowywany obraz z istniejącym
obrazem.
OR Nakłada przechowywany obraz na obraz
istniejący.
PSET Rysuje przechowywany obraz, wymazując
obraz istniejący.
PRESET Rysuje przechowywany obraz w kolorach
odwróconych, wymazując istniejący obraz.
XOR Rysuje przechowywany obraz lub wymazuje
poprzednio narysowany, podczas gdy tło jest
zachowane, wytwarzając efekty animacji.
• Polecenie PUT winno zawsze być wykonywane w tym samym trybie ekranowym,
jaki polecenie GET użyło do przechwycenia obrazu, lub w trybie
kompatybilnym.
Zobacz Tablice i kompatybilność obrazów ekranu.
Zobacz także: SCREENTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
DIM Box%(1 TO 200)
x1% = 0: x2% = 10: y1% = 0: y2% = 10
LINE (x1%, y1%)-(x2%, y2%), 2, BF
GET (x1%, y1%)-(x2%, y2%), Box%
DO
PUT (x1%, y1%), Box%, XOR
x1% = RND * 300
y1% = RND * 180
PUT (x1%, y1%), Box%
sleep 1 'opóźnienie, dodane dla umożliwienia obejrzenia
efektu przy współczesnych procesorach
LOOP WHILE INKEY$ = ""
Rysuje na ekranie linię lub prostokąt.
LINE [[STEP](x1!,y1!)]-[STEP](x2!,y2!) [,[kolor%] [,[B | BF] [,styl%]]]
• STEP Określa, że współrzędne są liczone względem bieżącej
pozycji kursora graficznego.
• (x1!,y1!), Współrzędne ekranowe początku i końca linii.
(x2!,y2!)
• kolor% Atrybut koloru, który ustawia kolor linii lub
prostokąta. Dostępne atrybuty koloru zależą od karty
graficznej i trybu ekranowego ustawionego przez
najświeższe polecenie SCREEN.
• B Rysuje prostokąt zamiast linii.
• BF Rysuje prostokąt wypełniony.
• styl% 16-bitowa wartość, której bity określają, kiedy
piksele są lub nie są rysowane. Używana do rysowania
linii przerywanych lub kropkowanych.
Zobacz także: CIRCLEINPUT, LINE INPUTPRESET, PSETSCREENAtrybuty i wartości koloruTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
LINE (110, 70)-(190, 120), , B
LINE (0, 0)-(320, 200), 3, , &HFF00
Wypełnia obszar grafiki określonym kolorem lub wzorkiem.
PAINT [STEP] (x!,y!)[,[{kolor% | kafel$}] [,[bordercolor%] [,background$]]]
• STEP Określa, że współrzędne są liczone względem bieżącej
pozycji kursora graficznego.
• (x!,y!) Współrzędne ekranowe miejsca, gdzie ma się zacząć
wypełnianie.
• kolor% Atrybut koloru, określający kolor wypełnienia.
• kafel$ Wzór wypełnienia, szerokośc 8 bitów i długości
do 64 bajtów, definiowany następująco:
kafel$ = CHR$(arg1) + CHR$(arg2) + ... + CHR$(argn%)
Argumenty dla CHR$ sa liczbami spomiędzy 0 i 255.
Każdy CHR$(argn%) definiuje 1-bajtowy, 8-pikselowy
plaster wzoru oparty na binarnej postaci liczby.
• bordercolor% Atrybut koloru, który określa barwę obramowania
wypełnianego obszaru. PAINT przestaje wypełniać obszar,
gdy napotka granicę określonego koloru.
• background$ Jednobajtowy, 8-pikselowy kafelek tła. Wyszczególnienie
plastra tła pozwala malować ponad obszarem, który już
został zamalowany.
• Dostępne atrybuty koloru zależą od karty graficznej i trybu ekranowego
ustawionego przez najświeższe polecenie SCREEN.
Zobacz także: ASC, CHR$CIRCLEDRAWLINESCREENAtrybuty i wartości koloruTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
CIRCLE (106, 100), 75, 1
LINE (138, 35)-(288, 165), 1, B
PAINT (160, 100), 2, 1
Zmienia przypisania koloru atrybutom koloru w bieżącym trybie ekranowym.
PALETTE i PALETTE USING działają tylko w systemach wposażonych w karty EGA,
VGA lub MCGA.
PALETTE [atrybut%,kolor&]
PALETTE USING nazwa_tablicy#[(indeks%)]
• atrybut% Atrybut koloru do zmiany.
• kolor& Wartośc koloru do przypisania do atrybutu.
• nazwa_tablicy# Tablica wartosci koloru do przypisania
do zestawu atrybutów bieżącego trybu ekranowego.
Tablica musi być wystarczająco duża, aby przypisać
kolory do wszystkich atryutów.
• index% Indeks pierwszego elementu tablicy do przypisania
do atrybutu.
• Dostępne atrybuty i wartości koloru zależą od karty graficznej i trybu
ekranowego ustawionego przez najświeższe polecenie SCREEN.
Zobacz także: COLORSCREENAtrybuty i wartości koloruTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
PALETTE 0, 1
SCREEN 1
FOR i% = 0 TO 3: a%(i%) = i%: NEXT i%
LINE (138, 35)-(288, 165), 3, BF
LINE (20, 10)-(160, 100), 2, BF
DO
FOR i% = 0 TO 3
a%(i%) = (a%(i%) + 1) MOD 16
NEXT i%
PALETTE USING a%(0)
LOOP WHILE INKEY$ = ""
Kopiuje jedną stronę pamięci wideo na inną.
PCOPY strona_źródłowa%,strona_docelowa%
• strona_źródłowa% Numer strony pamięci wideo do skopiowania.
• strona_docelowa% Numer strony pamięci wideo, gdzie ma iść kopia.
• Wartość identyfikująca stronę pamięci wideo jest zdeterminowana
przez rozmiar pamięci wideo i bieżący tryb graficzny ekranu.
Przykład:
PCOPY 1, 3
Zobacz także: SCREENTryby ekranowe
Returns the window coordinate equivalent to a viewport coordinate,
as defined by the WINDOW statement, or vice versa.
PMAP (startcoordinate#, n%)
• startcoordinate# A window or viewport coordinate.
• n% A value indicating which coordinate is returned:
startcoordinate# n% Returns
--------------------- -- ---------------------
Window x coordinate 0 Viewport x coordinate
Window y coordinate 1 Viewport y coordinate
Viewport x coordinate 2 Window x coordinate
Viewport y coordinate 3 Window y coordinate
Example:
'This example requires a graphics adapter that supports screen mode 1.
SCREEN 1
WINDOW SCREEN (0, 0)-(100, 100)
PRINT "Logical x=50, physical x="; PMAP(50, 0)
PRINT "Logical y=50, physical y="; PMAP(50, 1)
Zobacz także: POINTVIEWWINDOW
Zwraca bieżące współrzedne kursora graficznego albo atrybut koloru
określonego piksela.
POINT {(n%) | (x%,y%)}
• (n%) Wskazuje typ zwracanej współrzędnej:
n% Zwraca
-- ---------------------------------
0 Bieżąca współrzędna x okna
1 Bieżąca współrzędna y okna
2 Bieżąca współrzędna x ekranu
3 Bieżąca współrzędna y ekranu
• (x%,y%) Współrzędne piksela, którego kolor sprawdza POINT.
Jeśli współrzędne znajdują się na zewnątrz
bieżącego okna, POINT zwraca -1.
Zobacz także: COLORPMAPSCREENVIEWWINDOWAtrybuty i wartości koloru
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
LINE (0, 0)-(100, 100), 2
LOCATE 14, 1
FOR y% = 1 TO 10
FOR x% = 1 TO 10
PRINT POINT(x%, y%);
NEXT x%
PRINT
NEXT y%
Rysuje wyszczególniony punkt na ekranie.
PRESET [STEP] (x!,y!) [,kolor%]
PSET [STEP] (x!,y!) [,kolor%]
• STEP Określa, że x! and y! sa wyrażone względem bieżącej
lokacji kursora graficznego.
• (x!,y!) Współrzędne ekranowe ustawianego piksela.
• kolor% Atrybut koloru, ustawiający kolor piksela. Jeżeli
kolor% jest opuszczony, PRESET używa bieżącego koloru
tła, a PSET bieżącego koloru pierwszego planu.
• Dostępne atrybuty koloru zależą od karty graficznej i trybu
graficznego ekranu. Wartości współrzędnych zależą od karty graficznej,
trybu ekranu i najświeższych poleceń VIEW i WINDOW.
Zobacz także: SCREENVIEWWINDOWAtrybuty i wartości koloruTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
FOR i% = 0 TO 320
PSET (i%, 100)
FOR delay = 1 TO 100: NEXT delay
PRESET (i%, 100)
NEXT i%
'Wartość delay w pętli FOR-NEXT = 100 jest za mała dla współczesnych
' komputerów. Aby zobaczyć ruch punktu, należy ją ustawić w granicach
' 20000 - 100000. (przyp. tłum.)
Ustawia tryb graficzny i inne charakterystyki ekranu.
SCREEN tryb% [,[colorswitch%] [,[activepage%] [,visualpage%]]]
• tryb% Ustawia tryb graficzny. Zobacz. Tryby ekranowe.
• colorswitch% Wartość (0 lub 1), która przełąccza pomiędzy
wyświetlaniem w kolorze i monochromatycznym (tylko
tryby 0 i 1):
Tryb Wartość Akcja
---- -------- --------------
0 0 Wyłącza kolor
0 Nie-zero Aktywuje kolor
1 0 Aktywuje kolor
1 Nie-zero Wyłącza kolor
• activepage% Strona obrazu, na którą program zapisuje tekst
i grafikę.
• visualpage% Strona obrazu aktualnie wyświetlana na ekranie.
Zobacz także: CIRCLECOLORDRAWLINEPAINTfunkcja SCREENVIEWWINDOWTryby ekranowe
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1 '320 x 200 graphics
LINE (110, 70)-(190, 120), , B
LINE (0, 0)-(320, 200), 3, , &HFF00
Ustawia granice ekranowego okna tekstowego.
VIEW PRINT [górny_wiersz% TO dolny_wiersz%]
• górny_wiersz% Numer górnego wiersza okna tekstowego.
• dolny_wiersz% Numer górnego wiersza okna tekstowego.
• Jeśli pominąć argumenty górny_wiersz% i dolny_wiersz%, VIEW PRINT
ustawi cały ekran jako okno tekstowe.
• Zakresy górny_wiersz% i dolny_wiersz% są zależne od trybu ekranu.
Zobacz także: CLSLOCATEPRINT, LPRINTSCREENWIDTH
Przykład:
VIEW PRINT 10 TO 15
FOR i% = 1 TO 100 'wyprowadzenie bedzie przewijane.
PRINT i%
NEXT i%
Definiuje logiczne wymiary aktualnego okna graficznego. Stosuj polecenie
WINDOW do zdefiniowania własnego systemu współrzędnych okna.
WINDOW [[SCREEN] (x1!,y1!)-(x2!,y2!)]
• SCREEN Odwraca normalny kartezjański kierunek współrzędnej
ekranowej y tak, że wartości wzrastają od góry ekranu
do dołu.
• (x1!,y1!) Współrzędne logiczne, które mapują lewe-górne współrzędne
okna.
• (x2!,y2!) Współrzędne logiczne, które mapują prawe-dolne współrzędne
okna.
• WINDOW bez argumentów wyłącza system współrzędnych logicznych.
• Stosuj polecenie VIEW do zmiany rozmiaru okna.
Zobacz także: CLSPMAPPOINTSCREENVIEWWIDTH
Przykład:
'Ten przykład wymaga kolorowej karty graficznej.
SCREEN 1
FOR i% = 1 TO 10 STEP 2
WINDOW (-160 / i%, -100 / i%)-(160 / i%, 100 / i%)
CIRCLE (0, 0), 10
NEXT i%
monitor kolorowy Monitor monochromatyczny
------------------------------- ----------------------------
Atrybut Domyślna Kolor Domyślna Kolor
koloru wartość koloru(a) wyświetlany wartość koloru wyświetlany
----------------------------------------------------------------------------
SCREEN Modes 0, 7, 8, 9(b), 12, i 13
0 0 Black 0(c) Off
1 1 Blue Podkreślenie(d)
2 2 Green 1(c) On(d)
3 3 Cyan 1(c) On(d)
4 4 Red 1(c) On(d)
5 5 Magenta 1(c) On(d)
6 6 Brown 1(c) On(d)
7 7 White (biały) 1(c) On(d)
8 8 Gray 0(c) Off
9 9 Light Blue Rozjaśnienie
Podkreślenie
10 10 Light green 2(c) Rozjaśnienie
11 11 Light cyan 2(c) Rozjaśnienie
12 12 Light red 2(c) Rozjaśnienie
13 13 Light magenta 2(c) Rozjaśnienie
14 14 Yellow 2(c) Rozjaśnienie
15 15 High-intensity 0(c) Off
white
(Jaskrawo biały)
----------------------------------------------------------------------------
SCREEN Modes 1 i 9(e)
0 0 Black 0 Off
1 11 Light cyan 2 Rozjaśnienie
2 13 Light magenta 2 Rozjaśnienie
3 15 High-intensity 0 Off white
white
(Jaskrawo biały)
----------------------------------------------------------------------------
SCREEN Modes 2 i 11
0 0 Black 0 Off
1 15 High-intensity 0 Off white
white
(Jaskrawo biały)
----------------------------------------------------------------------------
(a) Numery kolorów EGA. VGA i MCGA używają display-color values, które
wytwarzają kolory równoważne wizualnie.
(b) Dla VGA lub EGA z pamięcią wideo > 64 KB.
(c) Tylko w trybie 0.
(d) Off, jeśli użyte jako tło.
(e) EGA z pamięcią wideo <= 64 KB.
Zobacz także: COLORPALETTE, PALETTE USINGSCREENTryby ekranowe
W tablicy poniżej zestawiono tryby ekranowe:
--------- Karty MDPA, CGA, Hercules, Olivetti, EGA, VGA, lub MCGA ----------
SCREEN 0: tylko tryb tekstowy
• 40 x 25, 40 x 43, 40 x 50, 80 x 25, 80 x 43, lub 80 x 50 format tekst.,
matryca znaku 8 x 8 (8 x 14, 9 x 14, lub 9 x 16 dla EGA lub VGA)
• 16 kolorów przypisywanych do każdego z 16 atrybutów (z CGA lub EGA)
• 64 kolory przypisywane do każdego z 16 atrybutów (z EGA lub VGA)
• Zależnie od rozdzielczości tekstu i karty, 8 stron pamięci wideo,
(0-7), 4 strony (0-3), 2 strony (0-1) lub 1 strona (0)
----------------------- Karty CGA, EGA, VGA, lub MCGA ----------------------
SCREEN 1: 320 x 200 grafika
• 40 x 25 format tekstowy, matryca znaku 8 x 8
• 16 kolorów tła i jeden lub dwa zestawy 3 kolorów pierwszoplanowych
przypisywanych przez użycie polecenia COLOR dla CGA
• 16 kolorów przypisywanych do 4 atrybutów przy EGA lub VGA
• 1 strona pamięci wideo (0)
SCREEN 2: 640 x 200 grafika
• 80 x 25 format tekstowy, matryca znaku 8 x 8
• 16 kolorów przypisywanych do 2 atrybutów z EGA lub VGA
• 1 strona pamięci wideo (0)
--------------------- Karty Hercules, Olivetti, lub AT&T -------------------
SCREEN 3: Wymagana karta Hercules, tylko monitor monochromatyczny
• 720 x 348 grafika
• 80 x 25 format tekstowy, matryca znaku 9 x 14
• Zazwyczaj 2 strony pamięci wideo (0-1); 1 strona, jeżeli zainstalowano
drugą kartę graficzną - kolorową
• Polecenie PALETTE nie jest obsługiwane
• Należy uruchomic sterownik MSHERC.COM przed użyciem trybu 3
SCREEN 4:
• Obsługuje Olivetti Personal Computers modele M24, M240, M28, M280,
M380, M380/C, oraz M380/T i AT&T Personal Computers serii 6300
• 640 x 400 grafika
• 80 x 25 format tekstowy, matryca znaku 8 x 16
• 1 z 16 kolorów przypisywanych jako kolor pierwszoplanowy (wybierany
poleceniem COLOR); tło jest stałe - czarne
• 1 strona pamięci wideo (0)
• Polecenie PALETTE nie jest obsługiwane
---------------------------- Karty EGA lub VGA -----------------------------
SCREEN 7: 320 x 200 grafika
• 40 x 25 format tekstowy, matryca znaku 8 x 8
• Przypisanie 16 kolorów do każdego z 16 atrybutów
• Przy pamięci karty EGA = 64 KB - 2 strony pamięci wideo (0-1), poza
tym 8 stron (0-7)
SCREEN 8: 640 x 200 grafika
• 80 x 25 format tekstowy, matryca znaku 8 x 8
• Przypisanie 16 kolorów do każdego z 16 atrybutów
• Przy pamięci karty EGA = 64 KB - 1 strona pamięci wideo (0), poza tym
4 strony (0-3)
SCREEN 9: 640 x 350 grafika
• 80 x 25 lub 80 x 43 format tekstowy, matryca znaku 8 x 14 lub 8 x 8
• 16 kolorów przypisywanych do 4 atrybutów (karta z 64 KB pamięci) albo
64 kolory przypisywane do 16 atrybutów (więcej niż 64 KB pamięci)
• Przy pamięci karty EGA = 64 KB - 1 strona pamięci wideo (0), poza tym
2 strony (0-1)
--------------- Karty EGA or, tylko monitory monochromatyczne --------------
SCREEN 10: 640 x 350 grafika, tylko monitor monochromatyczny
• 80 x 25 lub 80 x 43 format tekstowy, matryca znaku 8 x 14 lub 8 x 8
• Do 9 pseudokolorów przypisywanych do 4 atrybutów
• 2 strony pamięci wideo, wymagana pamięć karty 256 KB
----------------------------- Karty VGA lub MCGA ---------------------------
Screen 11 (VGA lub MCGA)
• 640 x 480 grafika
• 80 x 30 lub 80 x 60 format tekstowy, matryca znaku 8 x 16 lub 8 x 8
• Przypisywanie do 256K kolorów do 2 atrybutów
• 1 strona pamięci wideo (0)
Screen 12 (VGA)
• 640 x 480 grafika
• 80 x 30 lub 80 x 60 format tekstowy, matryca znaku 8 x 16 lub 8 x 8
• Przypisywanie do 256K kolorów do 16 atrybutów
• 1 strona pamięci wideo (0)
Screen 13 (VGA lub MCGA)
• 320 x 200 grafika
• 40 x 25 format tekstowy, matryca znaku 8 x 8
• Przypisywanie do 256K kolorów do 256 atrybutów
• 1 strona pamięci wideo (0)
Zobacz także: Polecenie SCREEN
Stosuj wartości 'bits-per-pixel-per-plane' i 'planes' do określenia
wymaganego rozmiaru tablicy przechowującej obraz ekranu graficznego.
Wartości 'bits-per-pixel-per-plane' i 'planes' wraz z rozdzielczością
poziomą określają także, które z trybów ekranowych są kompatybilne:
Rozdzielcz.
Bits-per-pixel- pozioma
Screen mode per-plane Planes (piksele)
---------------------------- --------------- ------ -----------
1 2 1 320
2, 4, 11 1 1 640
3 1 1 720
7 1 4 320
8, 9(> 64K video memory), 12 1 4 640
9(64K video memory), 10 1 2 640
13 8 1 320
Następujący wzór daje wymagany rozmiar (size%) w bajtach dla tablicy,
w której ma być przechowany obraz:
size% = 4 + INT(((PMAP (x2!, 0) - PMAP (x1!, 0) + 1) *
(bits-per-pixel-per-plane%) + 7) / 8) * planes% *
(PMAP (y2!, 1) - PMAP (y1!, 1) + 1)
Operacje GET i PUT są kompatybilne dla trybów ekranowych o tej samej
rozdzielczości poziomej i wartościach 'bits-per-pixel-per-plane'
i 'planes'. Np. tryby ekranowe 2, 4 i 11 są kompatybilne, i tryby 8 i 12
są kompatybilne.
Zobacz także: SCREENTryby ekranowe
CHDIR zmienia domyślny katalog (folder). MKDIR tworzy podkatalog (subfolder).
RMDIR usuwa podkatalog (subfolder). FILES wyświetla zawartość katalogu
bieżącego lub wskazanego katalogu.
CHDIR nazwa_ścieżki$
MKDIR nazwa_ścieżki$
RMDIR nazwa_ścieżki$
FILES [filespec$]
• nazwa_ścieżki$ Ścieżka do nowego domyślnego katalogu, podkatalogu do
utworzenia lub podkatalogu do usunięcia.
• filespec$ Nazwa pliku lub ścieżka (może zawierać literę dysku
i DOSowskie znaki niejednoznaczne *, ?). Jeśli filespec$
nie zostanie określone, FILES wyświetli wszystkie pliki
z bieżącego katalogu.
CHDIR, MKDIR, RMDIR są odpowiednikami takich samych komend DOS-owskich.
FILES odpowiada DOSowskiemu DIR/W.
Funkcja DATE$ zwraca bieżącą datę systemową.
Polecenie DATE$ ustawia datę systemową w komputerze.
DATE$
DATE$ = wyrażenie_łańcuchowe$
• wyrażenie_łańcuchowe$ Data w jednej z następujących form:
mm-dd-yy, mm-dd-yyyy, mm/dd/yy, mm/dd/yyyy.
• Funkcja DATE$ zwraca łańcuch w postaci mm-dd-yyyy.
DATE$ jest odpowiednikiem DOS-owskiej komendy DATE.
Zobacz także: TIME$
Przykład:
PRINT DATE$
DATE$ = "01-01-90" 'Uwaga: Nowa data systemowa pozostaje czynna,
dopóki nie zmieni się jej ponownie.
PRINT "Date ustawiono na "; DATE$
ENVIRON$ zwraca łańcuch środowiska DOSa.
ENVIRON zmienia lub dodaje łańcuch środowiska do tablicy środowiska DOSa.
ENVIRON$ (env-variable$)
ENVIRON$ (n%)
ENVIRON wyrażenie_łańcuchowe$
• env-variable$ Nazwa zmiennej środowiskowej DOSa.
• n% Określa, że ENVIRON$ zwraca n-ty łańcuch
z tablicy łańcuchów środowiska.
• wyrażenie_łańcuchowe$ Nazwa i ustawienie DOSowskiej zmiennej
środowiskowej (jak PATH lub PROMPT) w jednej
z następujących form:
env-variable$=env-string$
env-variable$ env-string$
• Zmiany dokonane przez polecenie ENVIRON są wymazywane, gdy program
zakończy się.
Przykład:
ENVIRON "PATH=TEST"
PRINT ENVIRON$("PATH")
Przemianowuje plik lub katalog.
NAME stara_nazwa$ AS nowa_nazwa$
• stara_nazwa$ i nowa_nazwa$ Nazwa istniejącego pliku i nowa nazwa
dla tego pliku. Każda nazwa może zawierać
ścieżkę.
NAME jest odpowiednikiem DOS-owskiego RENAME.
Przykład:
INPUT "Stara nazwa: "; OldFN$
INPUT "Nowa nazwa : "; NewFN$
NAME OldFN$ AS NewFN$
Zobacz także: FILES
Funkcja TIME$ zwraca bieżacy czas systemowy komputera.
Polecenie TIME$ ustawia czas systemowy w komputerze.
TIME$
TIME$ = wyrażenie_łańcuchowe$
• wyrażenie_łańcuchowe$ Czas wg jednej z następujących form:
hh Ustawia godzinę; minuty i sekundy
domyślnie jako 00.
hh:mm Ustawia godzinę i minuty; sekundy
domyślnie jako 00.
hh:mm:ss Ustawia godzinę, minuty i sekundy.
• Funkcja TIME$ zwraca łańcuch w postaci hh:mm:ss.
TIME$ jest odpowiednikiem DOS-owskiej komendy TIME.
Zobacz także: DATE$
Przykład:
PRINT TIME$
TIME$ = "08:00:58" 'Uwaga: Nowy czas systemowy działa do
PRINT "Czas ustawiony na "; TIME$ ' ponownej jego zmiany.
Zamyka jeden lub więcej otwartych plików lub urządzeń.
CLOSE [[#]numer_pliku%[,[#]numer_pliku%]...]
• numer_pliku% Numer otwartego pliku lub urządzenia.
• CLOSE bez żadnych argumentów zamyka wszystkie otwarte pliki
i urządzenia.
Zobacz także: ENDOPENRESETSTOP
Przykład:
CLS
INPUT "Wpisz nazwe pliku: ", n$
OPEN n$ FOR OUTPUT AS #1
PRINT #1, "To jest zapisywane do pliku."
CLOSE
OPEN n$ FOR INPUT AS #1
INPUT #1, a$
PRINT "Odczyt z pliku: "; a$
CLOSE
Wpisz nazwe pliku: plik
Odczyt z pliku: To jest zapisywane do pliku.
Sprawdza napotkanie końca pliku. EOF zwraca prawdę (nie-zero), jeśli koniec
pliku został osiągnięty.
EOF(numer_pliku%)
• numer_pliku% Numer otwartego pliku.
Zobacz także: CLOSELOCLOFOPEN
Przykład:
CLS
OPEN "TEST.DAT" FOR OUTPUT AS #1
FOR i% = 1 TO 10
WRITE #1, i%, 2 * i%, 5 * i%
NEXT i%
CLOSE #1
OPEN "TEST.DAT" FOR INPUT AS #1
DO
LINE INPUT #1, a$
PRINT a$
LOOP UNTIL (EOF(1))
Zwraca informację o otwartym pliku.
FILEATTR(numer_pliku%,atrybut%)
• numer_pliku% Numer otwartego pliku.
• atrybut% Określa typ zwracanej informacji. Gdy atrybut%
wynosi 1, FILEATTR zwraca wartość wskazującą tryb
dostępu do pliku:
Wartość Tryb
------- ------
1 Input
2 Output
4 Random
8 Append
32 Binary
When attribute% is 2, FILEATTR returns the DOS file
handle.
Zobacz także: OPEN
Przykład:
OPEN "TEST.DAT" FOR BINARY AS #1
PRINT FILEATTR(1, 1)
CLOSE
32
MNEMOTECHNIKA: FILE ATTRIBUTES - atrybuty pliku (nie w znaczeniu DOS-owskim!)
Zwraca najbliższy wolny numer nieużywanego pliku.
FREEFILE
Zobacz także: OPEN
Przykład:
OPEN "TEST.DAT" FOR OUTPUT AS #1
PRINT "Nastepny numer pliku: "; FREEFILE
CLOSE
GET czyta z pliku do bufora swobodnego dostępu lub zmiennej.
PUT zapisuje zmienną lub bufor swobodnego dostępu do pliku.
GET [#]numer_pliku%[,[numer_rekordu&][,zmienna]]
PUT [#]numer_pliku%[,[numer_rekordu&][,zmienna]]
• numer_pliku% Numer otwartego pliku.
• numer_rekordu& Dla plików o swobodnym dostępie - numer rekordu
do odczytania lub zapisu. Dla plików otwartych
w trybie binarnym - pozycja bajtu, skąd zaczyna się
odczyt lub zapis.
• zmienna Dla GET - zmienna użyta do przechowania odczytu
z pliku. Dla PUT - zmienna zawierająca dane do zapisu
w pliku. Zmienna jest zazwyczaj typem zdefiniowanym
przez użytkownika.
Zobacz także: FIELDGET, PUT (Grafika)LSET, RSETfunkcje MKn$, CVnTYPE
Przykład:
TYPE TestRecord
Student AS STRING * 20
Wyniki AS SINGLE
END TYPE
DIM Klasa AS TestRecord
OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(Klasa)
Klasa.Student = "MarySa"
Klasa.Wyniki = 99
PUT #1, 1, Klasa
CLOSE #1
OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(Klasa)
GET #1, 1, Klasa
PRINT "STUDENT:", Klasa.Student
PRINT "SCORE:", Klasa.Wyniki
CLOSE #1
KILL "FINAL.DAT"
Student: MarySa
Wyniki: 99
MNEMOTECHNIKA: GET - dostać się; PUT - kłaść, umieszczać
Zwraca bieżącą pozycję na pliku.
LOC(numer_pliku%)
• numer_pliku% Numer otwartego pliku lub urządzenia.
• Dla plików otwartych w trybie binarnym LOC zwraca pozycję ostatnio
czytanego lub zapisywanego bajtu.
• Dla plików o swobodnym dostępie LOC zwraca numer ostatniego rekordu
cztanego z lub zapisywanego do pliku.
• Dla plików sekwencyjnych LOC zwraca pozycję bieżącego bajtu w pliku,
podzieloną przez 128.
Zobacz także: EOFSEEK
Przykład:
OPEN "TEST.DAT" FOR RANDOM AS #1
FOR i% = 1 TO 10
PUT #1, , i%
NEXT i%
SEEK #1, 2
GET #1, , i%
PRINT "Dane: "; i%; " Biezacy rekord: "; LOC(1); " Nastepny: "; SEEK(1)
LOCK ogranicza lub zapobiega dostępowi do pliku w sieciach.
UNLOCK zdejmuje ograniczenia nałożone przez ostatnie polecenie LOCK.
LOCK [#]numer_pliku% [,{rekord& | [start&] TO end&}]
UNLOCK [#]numer_pliku% [,{rekord& | [start&] TO end&}]
• numer_pliku% Numer otwartego pliku.
• rekord& Dla plików o swobodnym dostępie - numer rekordu
do zabezpieczenia, liczony względem pierwszego
rekordu w pliku. Dla plików binarnych - numer bajtu
do zabezpieczenia, liczony względem pierwszego bajtu
w pliku.
• start& i end& Numery pierwszego i ostatniego rekordu lub bajtu
w zakresie rekordów lub bajtów do zabezpieczenia lub
odbezpieczenia.
• Dla plików sekwencyjnych - LOCK i UNLOCK działają na cały plik.
Przykład:
'Ten przykład działa tylko w środowisku sieciowym.
OPEN "TEST.DAT" FOR RANDOM AS #1
FOR i% = 1 TO 10
PUT #1, , i%
NEXT i%
LOCK #1, 2 'Zabezpiecz rekord 2.
GET #1, 2, i%
UNLOCK #1, 2 'Odbezpiecz rekord 2.
Zwraca długość pliku w bajtach.
LOF(numer_pliku% )
• numer_pliku% Numer otwartego pliku.
Przykład:
INPUT "Wpisz nazwe pliku: "; f$
OPEN f$ FOR BINARY AS #1
PRINT "Dlugosc pliku = "; LOF(1)
CLOSE
Otwiera plik lub urządzenie.
OPEN plik$ [FOR tryb] [ACCESS dostęp] [lock] AS [#]numer_pliku% [LEN=reclen%]
• plik$ Nazwa pliku lub urządzenia. Nazwa pliku może zawierać
literę napędu i ścieżkę.
• tryb Jeden z następujących trybów: APPEND, BINARY, INPUT,
OUTPUT, lub RANDOM. Zob. Tryby otwierania plików.
• dostęp W środowisku sieciowym określa, czy plik jest otwarty
do odczytu (READ), zapisu (WRITE), lub obydwu
(READ WRITE). Zob. Człon ACCESS polecenia OPEN.
• lock Okresla zabezpieczenia pliku w środowisku sieciowym:
współdzielony (SHARED), zabroniony odczyt (LOCK READ),
zabroniony zapis (LOCK WRITE), zabronione zapis i odczyt
(LOCK READ WRITE).
• numer_pliku% Liczba z zakresu 1 - 255, która identyfikuje plik
podczas jego otwarcia.
• reclen% Dla plików o swobodnym dostępie - długość rekordu
(domyślna wynosi 128 bajtów). Dla plików sekwencyjnych
- liczba buforowanych znaków (domyślna wynosi 512 B).
Zobacz także: CLOSEFREEFILEOPEN COMTYPEAlternatywna składnia polecenia OPEN
Przykład:
CLS
INPUT "Wpisz nazwe pliku: ", n$
OPEN n$ FOR OUTPUT AS #1
PRINT #1, "To jest zapisywane do pliku."
CLOSE
OPEN n$ FOR INPUT AS #1
INPUT #1, a$
PRINT "Odczyt z pliku: "; a$
CLOSE
Wpisz nazwe pliku: plik
Odczyt z pliku: To jest zapisywane do pliku.
Alternatywna składnia polecenia OPEN:
OPEN tryb2$,[#]nr_pliku%,nazwa$[,reclen%]
• tryb2$ Wyrażenie łańcuchowe, zaczynające się jedną z następujacych
liter, określające tryb otwarcia pliku:
O Tryb zapisu sekwencyjnego (Output)
I Tryb odczytu sekwencyjnego (Input)
R Tryb swobodnego dostępu Odczyt/Zapis (Random)
B Tryb binarny
A Tryb zapisu sekwencyjnego (Append). Ustawia wskaźnik
pliku na końcu pliku i numer rekordu na ostatnim
rekordzie w pliku. Polecenia PRINT # lub WRITE #
wydłużają (dopisują) plik.
• nr_pliku% Liczba z zakresu 1 do 255, która identyfikuje plik
podczas otwarcia.
• nazwa$ Nazwa pliku (może zawierać dysk i ścieżkę).
• reclen% Dla plików o swobodnym dostępie - długość rekordu
w bajtach. Dla plików sekwencyjnych - liczba znaków
buforowanych.
• QBasic obsługuję tą składnię w celu kompatybilności programów
napisanych we wcześniejszych wersjach BASICa.
Zobacz także: OPEN
Funkcja SEEK zwraca bieżącą pozycję na pliku.
Polecenie SEEK ustawia pozycję dla następnego odczytu lub zapisu.
SEEK(numer_pliku%)
SEEK [#]numer_pliku%, pozycja&
• numer_pliku% Numer otwartego pliku.
• pozycja& Pozycja, gdzie nastąpi kolejny odczyt lub zapis.
Dla plików o dostępie swobodnym - numer rekordu. Dla
pozostałych plików - pozycja bajtu względem początku
pliku. Pierwszy bajt ma pozycję 1.
Zobacz także: GET, PUTOPEN
Przykład:
OPEN "TEST.DAT" FOR RANDOM AS #1
FOR i% = 1 TO 10
PUT #1, , i%
NEXT i%
SEEK #1, 2
GET #1, , i%
PRINT "Dane: "; i%; " Biezacy rekord: "; LOC(1); " Nastepny: "; SEEK(1)
Wpisuje dane na ekran lub do pliku sekwencyjnego.
WRITE [[#]numer_pliku%,] lista_wyrażeń
• numer_pliku% Numer otwartego pliku sekwencyjnego. Jeśli numer
pliku zostanie pominięty, WRITE pisze na ekranie.
• lista_wyrażeń Jedna lub więcej zmiennych lub wyrażeń, oddzielonych
przecinkami, których wartości są wypisywane na ekran
lub do pliku.
• WRITE wypisując, wstawia przecinki między pozycjami i cudzysłowy wokół
łańcuchów. WRITE wpisuje wartości do pliku w formie, która może być
czytana przez polecenie INPUT.
Zobacz także: INPUT, LINE INPUTOPENPRINT, LPRINT
Przykład:
CLS
OPEN "LIST" FOR OUTPUT AS #1
DO
INPUT " IMIE: ", Imie$ 'Czyta wpisy z klawiatury.
INPUT " WIEK: ", Wiek$
WRITE #1, Imie$, Wiek$
INPUT "Dodac nowy wpis"; R$
LOOP WHILE UCASE$(R$) = "T"
CLOSE #1
'zwrotne echo z pliku
OPEN "LIST" FOR INPUT AS #1
CLS
PRINT "Zapisy w pliku:": PRINT
DO WHILE NOT EOF(1)
LINE INPUT #1, REC$ 'Czyta zapisy z pliku.
PRINT REC$ 'Wypisuje je na ekranie.
LOOP
CLOSE #1
KILL "LIST"
BSAVE kopiuje zawartość obszaru pamięci do pliku.
BLOAD ładuje plik utworzony przez BSAVE do pamięci.
BSAVE filespec$, offset%, długość&
BLOAD filespec$[,offset%]
• filespec$ Dla BSAVE - plik, do którego kopiowany jest obszar pamięci
(obraz pamięci bajt po bajcie). Dla BLOAD - plik obrazu
pamięci utworzony przez uprzednie BSAVE.
• offset% For BSAVE, the offset of the starting address of the
area of memory being saved. For BLOAD, the offset of
the address where loading starts.
• długość& Liczba bajtów do skopiowania (od 0 do 65535).
• The starting address of the memory area saved or loaded is determined
by the offset and the most recent DEF SEG statement.
Zobacz także: DEF SEGVARPTR, VARSEGRóżnice w porównaniu z BASICA
Ustawia adres bieżącego segmentu pamięci.
DEF SEG [=adres]
• adres Adres segmentu użyty przez BLOAD, BSAVE, CALL ABSOLUTE,
PEEK, lub POKE; wartość z zakresu 0 - 65535. Jeśli adres
zostanie opuszczony, DEF SEG resetuje adres bieżącego
segmentu do domyślnego segmentu danych.
Przykład:
DEF SEG = 0
Status% = PEEK(&H417) 'Odczytuje status klawiatury.
POKE &H417, (Status% XOR &H40) 'Zmienia stan Caps Lock, bit 6.
Zobacz także: BSAVE, BLOADCALL ABSOLUTEPEEK, POKE
Zamyka wszystkie pliki, zwalnia bufory plikowe, czyści wszystkie zmienne
COMMON, zmiennym numerycznym i tablicowym przypisuje wartość zero, zmiennym
łańcuchowym - łańcuch pusty i inicjalizuje stos. Opcjonalnie, CLEAR także
zmienia wielkość stosu.
CLEAR [,,stos&]
• stos& Ustawia rozmiar (w bajtach) stosu dla bieżącego programu.
Przykład:
CLEAR ,,2000
Zobacz także: ERASE
Zwraca ilość (w bajtach) dostępnej lub nieużywanej pamięci.
FRE(wyrażenie_numeryczne)
FRE(wyrażenie_łańcuchowe$)
• wyrażenie_numeryczne Wartość, która określa typ pamięci:
Wartość FRE zwraca
----------------- -----------------------------
-1 Rozmiar największej tablicy
(niełańcuchowej), którą można
utworzyć
-2 Nieużywane miejsce na stosie
Każda inna liczba Przestrzeń dostępna
dla łańcuchów
• wyrażenie_łańcuchowe$ Dowolne wyrażenie łańcuchowe. FRE kompaktuje
wolną przestrzeń dla łańcuchów w pojedynczy blok,
po czym zwraca ilość miejsca dostępnego dla
łańcuchów.
Przykład:
PRINT "Przestrzeń dla lańcuchow", FRE("")
PRINT "Nieuzywane miejsce na stosie "; FRE(-2)
PRINT "Przestrzen dla tablic", FRE(-1)
Przestrzen dla lancuchow 30470
Nieuzywane miejsce na stosie 1160
Przestrzen dla tablic 158310
PEEK zwraca wartość bajtu przechowywanego w określonym miejscu pamięci.
POKE wpisuje wartość bajtu do określonego miejsca pamięci.
PEEK(adres)
POKE adres,bajt%
• adres Pozycja bajtu względem adresu bieżącego segmentu,
określonego przez DEF SEG, wartość z zakresu 0 - 65535.
• bajt% Wartość bajtu do wpisania do pamięci, z zakresu 0 do 255.
Przykład:
DEF SEG = 0
Status% = PEEK(&H417) 'Odczytuje status klawiatury.
POKE &H417, (Status% XOR &H40) 'Zmienia stan Caps Lock, bit 6.
Zobacz także: DEF SEG
HEX$ zwraca łańcuch heksadecymalnej reprezentacji liczby dziesiętnej.
OCT$ zwraca łańcuch ósemkowej reprezentacji liczby dziesiętnej.
HEX$(wyrażenie_numeryczne&)
OCT$(wyrażenie_numeryczne&)
• wyrażenie_numeryczne& Jakieś wyrażenie numeryczne. Wyrażenie jest
zaokrąglane do liczby całkowitej lub długiej
liczby całkowitej przed przekształceniem.
Przykład:
INPUT x
a$ = HEX$ (x)
b$ = OCT$ (x)
PRINT x; "dziesietnie to "; a$; " szesnastkowo i "; b$; " ósemkowo."
? 255
255 dziesietnie to FF szesnastkowo i 377 ósemkowo.
Zwraca pozycję pierwszego wystąpienia łańcucha w innym łańcuchu.
INSTR([start%,]wyrażenie_łańcuchowe1$,wyrażenie_łańcuchowe2$)
• start% Ustawia pozycję znaku, od którego rozpocznie się
przeszukiwanie. Jeżeli start% jest opuszczone,
INSTR rozpoczyna od pozycji 1.
• wyrażenie_łańcuchowe1$ Łańcuch do znalezienia.
• wyrażenie_łańcuchowe2$ Łańcuch przeszukiwany.
Zobacz także: LEFT$, RIGHT$LENMID$
Przykład:
a$ = "Microsoft QBasic"
PRINT "Pozycja łańcucha ="; INSTR(1, a$, "QBasic")
Pozycja łańcucha = 11
MNEMOTECHNIKA: IN STRING - w łańcuchu (znaków drukarskich)
Przekształca litery w łańcuchu na wszystkie duże lub wszystkie małe.
LCASE$(wyrażenie_łańcuchowe$)
UCASE$(wyrażenie_łańcuchowe$)
• wyrażenie_łańcuchowe$ Jakieś wyrażenie łańcuchowe.
Przykład:
Test$ = "THE string"
PRINT Test$
PRINT LCASE$(Test$); " małymi literami"
PRINT UCASE$(Test$); " DUŻYMI LITERAMI"
THE string
the string małymi literami
THE STRING DUŻYMI LITERAMI
MNEMOTECHNIKA: LOWER CASE; (UPPER) CASE - poczet liter małych; (dużych)
Zwraca określoną liczbę znaków łańcucha, liczoną od prawej lub od lewej.
LEFT$(wyrażenie_łańcuchowe$,n%)
RIGHT$(wyrażenie_łańcuchowe$,n%)
• wyrażenie_łańcuchowe$ Jakieś wyrażenie łańcuchowe.
• n% Liczba znaków, które mają być zwrócone, poczynając
od skrajnego z lewej lub skrajnego z prawej.
Przykład:
a$ = "Microsoft QBasic"
PRINT LEFT$(a$, 5) 'Wypisze: Micro
PRINT RIGHT$(a$, 5) 'Wypisze: Basic
Zobacz także: MID$
LSET i RSET przenoszą dane do bufora pliku o swobodnym dostepie (w przygoto-
waniu dla polecenia PUT) i justują do prawej lub do lewej wartość zmiennej
łańcuchowej. LSET także kopiuje zawartość jednego rekordu zmiennej do innego.
LSET zmienna_łancuchowa$=wyrażenie_łańcuchowe$
RSET zmienna_łancuchowa$=wyrażenie_łańcuchowe$
LSET zmienna_rekordowa1=zmienna_rekordowa2
• zmienna_łańcuchowa$ Jakaś zmienna łańcuchowa albo pole pliku
o dostępie swobodnym zdefiniowane poleceniem
FIELD.
• wyrażenie_łańcuchowe$ Dla LSET - justowana do lewej wersja
zmiennej_łancuchowej$. Dla RSET - justowana
do prawej wersja zmiennej_łancuchowej$.
• zmienna_rekordowa1 Zmienne rekordowe dowolnego zdefiniowanego
zmienna_rekordowa2 przez użytkownika typu. Stosuj LSET do przypi-
sania zmiennej rekordowej o jednym typie danych
do innego zdefiniowanego przez użytkownika typu
danych.
Zobacz także: FIELDGET, PUT
Przykład:
OPEN "FILEDAT.DAT" FOR RANDOM AS #1 LEN = 10
FIELD #1, 5 AS Ls1$, 5 AS Rs1$
LSET Ls1$ = "LSET"
RSET Rs1$ = "RSET"
PUT #1, 1
CLOSE #1
OPEN "FILEDAT.DAT" FOR RANDOM AS #1 LEN = 10
FIELD #1, 5 AS Ls2$, 5 AS Rs2$
GET #1, 1
PRINT "*" + Ls2$ + "*", "*" + Rs2$ + "*"
CLOSE #1
*LSET * * RSET*
MNEMOTECHNIKA: LEFT SET; RIGHT SET - układ z lewej; z prawej
Funkcja MID$ zwraca część łańcucha (substring).
Polecenie MID$ zastępuje część zmiennej łancuchowej innym łańcuchem.
MID$(wyrażenie_łańcuchowe$,start%[,długość%])
MID$(zmienna_łańcuchowa$,start%[,długość%])= wyrażenie_łańcuchowe$
• wyrażenie_łańcuchowe$ Łańcuch, z którego funkcja MID$ zwraca
substring, albo łańcuch zamienny użyty przez
polecenie MID$. Może być dowolnym wyrażeniem
łańcuchowym.
• start% Pozycja pierwszego znaku w substring'u, który
ma być zwrócony lub zamieniony.
• długość% Liczba znaków w substring'u. Jeżeli długość
zostanie pominięta, MID$ zwróci lub zamieni
wszystkie znaki na prawo od pozycji startu.
• zmienna_łańcuchowa$ Zmienna łańcuchowa podlegająca modyfikacji
przez polecenie MID$.
Przykład:
a$ = "Where is Paris?"
PRINT MID$(a$, 10, 5) 'Wypisze: Paris
Text$ = "Paris, France"
PRINT Text$ 'Wypisze: Paris, France
MID$(Text$, 8) = "Texas "
PRINT Text$ 'Wypisze: Paris, Texas
Zobacz także: LEFT$, RIGHT$LEN
Zwraca łańcuch spacji.
SPACE$(n%)
• n% Liczba spacji w zwracanym łańcuchu.
Zobacz także: SPCSTRING$
Przykład:
FOR i% = 1 TO 5
x$ = SPACE$ (i%)
PRINT x$; i%
NEXT i%
ABS zwraca wartość bezwzględną liczby.
SGN zwraca wartość wskazującą znak wyrażenia numerycznego (1 gdy wyrażenie
jest dodatnie, 0 gdy jest równe zeru lub -1 gdy jest ujemne).
ABS(wyrażenie_numeryczne)
SGN(wyrażenie_numeryczne)
• wyrażenie_numeryczne Dowolne wyrażenie numeryczne.
Przykład:
PRINT ABS(45.5 - 100!) 'Wypisze: 54.5
PRINT SGN(1), SGN(-1), SGN(0) 'Wypisze: 1 -1 0
CINT zaokrągla wyrażenie numeryczne do liczby całkowitej.
CLNG zaokrągla wyrażenie numeryczne do długiej (4-bajtowej)liczby całkowitej.
CINT(wyrażenie_numeryczne)
CLNG(wyrażenie_numeryczne)
• wyrażenie_numeryczne Dla CINT - dowolne wyrażenie numeryczne
z zakresu od -32768 do 32767.
Dla CLNG - dowolne wyrażenie numeryczne
z zakresu od -2 147 483 648 do 2 147 483 647.
Przykład:
PRINT CINT(12.49), CINT(12.51) 'Wypisze: 12 13
PRINT CLNG(338457.8) 'Wypisze: 338458
Zobacz także: CDBL, CSNGFIX, INT
MKI$, MKL$, MKS$, i MKD$ konwertują liczby do łańcuchów liczbowych, które
mogą być składowane w zmiennych łańcuchowych polecenia FIELD. CVI, CVL, CVS
i CVD konwertuje takie łańcuchy z powrotem na liczby.
MKI$(wyrażenie_całkowite%)
MKL$(wyrażenie_long-integer&)
MKS$(wyrażenie_pojedynczej_precyzji!)
MKD$(wyrażenie_podwójnej_precyzji#)
CVI(2-bajtowy _łańcuch_liczbowy)
CVL(4-bajtowy _łańcuch_liczbowy)
CVS(4-bajtowy _łańcuch_liczbowy)
CVD(8-bajtowy _łańcuch_liczbowy)
Funkcja Zwraca Funkcja Zwraca
-------- ----------------- -------- ---------------------------
MKI$ 2-bajtowy łańcuch CVI Liczbę całkowitą
MKL$ 4-bajtowy łańcuch CVL Dlugą liczbę całkowitą
MKS$ 4-bajtowy łańcuch CVS Liczbę pojedynczej precyzji
MKD$ 8-bajtowy łańcuch CVD Liczbę podwójnej precyzji
Zobacz także: FIELDMKSMBF$, MKDMBF$, CVSMBF, CVDMBF
MKSMBF$ i MKDMBF$ konwertuje liczby formatu IEEE na łańcuchy liczbowe
formatu Microsoft-Binary, które mogą być składowane w zmiennych łańcuchowych
polecenia FIELD. CVSMBF i CVDMBF konwertują takie łańcuchy z powrotem
do liczb formatu IEEE.
MKSMBF$(wyrażenie_pojedynczej_precyzji!)
MKDMBF$(wyrazenie_podwójnej_precyzji#)
CVSMBF (4-bajtowy_łańcuch_numeryczny)
CVDMBF (8-bajtowy_łańcuch_numeryczny)
Funkcja Zwraca
-------- ------------------------------------------------
MKSMBF$ 4-bajtowy łańcuch zawierający liczbę w formacie
Microsoft-Binary
MKDMBF$ 8-bajtowy łańcuch zawierający liczbę w formacie
Microsoft-Binary
CVSMBF Liczbę pojedynczej precyzji w formacie IEEE
CVDMBF Liczbę podwójnej precyzji w formacie IEEE
• Te funkcje są użyteczne przy uzywaniu plików danych utworzonych
przez starsze wersje Basica.
Zobacz także: FIELDMKn$, CVn
Przykład:
TYPE Buffer
SngNum AS STRING * 4
DblNum AS STRING * 8
END TYPE
DIM RecBuffer AS Buffer
OPEN "TESTDAT.DAT" FOR RANDOM AS #1 LEN = 12
SNum = 98.9
DNum = 645.3235622#
RecBuffer.SngNum = MKSMBF$(SNum)
RecBuffer.DblNum = MKDMBF$(DNum)
PUT #1, 1, RecBuffer
GET #1, 1, RecBuffer
CLOSE #1
PRINT CVSMBF(RecBuffer.SngNum), CVDMBF(RecBuffer.DblNum)
FIX przycina wyrażenie zmiennoprzecinkowe do jego części całkowitej.
INT zwraca największą liczbę całkowitą mniejszą niż lub równą
wyrażeniu numerycznemu.
FIX(wyrażenie_numeryczne)
INT(wyrażenie_numeryczne)
• wyrażenie_numeryczne Dowolne wyrażenie numeryczne.
Przykład:
PRINT FIX(12.49), FIX(12.54) 'Wypisze: 12 12
PRINT INT(12.54), INT(-99.4) 'Wypisze: 12 -100
Zobacz także: CINT, CLNG
Dzieli jedną liczbę przez drugą i zwraca resztę z dzielenia.
wyrażenie_numeryczne1 MOD wyrażenie_numeryczne2
• wyrażenie_numeryczne1 Dowolne wyrażenia numeryczne. Liczby
wyrażenie_numeryczne2 rzeczywiste są zaokrąglane do całkowitych.
Przykład:
PRINT 19 MOD 6.7 'QBasic zaokrągla 6.7 do 7, i następnie dzieli.
'Wynikiem jest: 5
RANDOMIZE inicjalizuje generator liczb pseudolosowych.
RND zwraca liczbę losową pojedynczej precyzji pomiędzy 0 i 1.
RANDOMIZE [seed%]
RND[(n#)]
• seed% Liczba użyta do inicjalizacji generatora liczb pseudolosowych.
Jeśli opuszczona, RANDOMIZE upomina się o nią.
• n# Wartość, która ustala, jak RND generuje następną liczbę
losową:
n# RND zwraca
--------------------------- -----------------------------
Mniej niż 0 Tą samą liczbę dla każdego n#
Wiecej niż 0 (lub brak) Następną liczbę losową
0 Ostanią wygenerowaną liczbę
Przykład:
RANDOMIZE TIMER
x% = INT(RND * 6) + 1
y% = INT(RND * 6) + 1
PRINT "Rzut dwoma kostkami: kostka 1 ="; x%; "i kostka 2 ="; y%
Zwraca pierwiastek kwadratowy z wyrażenia numerycznego.
SQR(wyrażenie_numeryczne)
• wyrażenie_numeryczne Wartość większa niż albo równa zero.
Przykład:
PRINT SQR(25), SQR(2) 'Wypisze: 5 1.414214
COM uaktywnia, dezaktywuje lub zawiesza wychwytywanie zdarzeń na porcie
komunikacyjnym. Kiedy wychwytywanie zdarzeń jest aktywne, ON COM odsyła
do podprogramu gdy znaki są odbierane przez port.
COM(n%) ON
COM(n%) OFF
COM(n%) STOP
ON COM(n%) GOSUB linia
• n% Numer portu (szeregowego) COM (1 lub 2).
• COM(n%) ON Uaktywnia wychwytywanie zdarzeń komunikacyjnych.
• COM(n%) OFF Dezaktywuje wychwytywanie zdarzeń komunikacyjnych.
• COM(n%) STOP Zawiesza wychwytywanie zdarzeń komunikacyjnych.
Zdarzenia będą przetwarzane, gdy tylko ich wychwyty-
wanie zostanie uaktywnione przez COM ON.
• linia Etykieta lub numer pierwszej linii podprogramu
wychwytywania zdarzeń.
Zobacz także: OPEN COM
Przykład:
COM(1) ON 'Uaktywnia wychwytywanie zdarzeń w porcie 1.
ON COM(1) GOSUB ComHandler
DO : LOOP WHILE INKEY$ = ""
COM(1) OFF
END
ComHandler:
PRINT "Coś zostało wpisane na terminalu przyłączonym do COM1."
RETURN
ERDEV zwraca kod błędu z ostatniego urządzenia, które spowodowało krytyczny
błąd. ERDEV$ zwraca nazwę urządzenia, które generuje błąd.
ERDEV
ERDEV$
• Młodszy bajt wartości zwracanej przez ERDEV zawiera DOS-owski kod
błędu. Starszy bajt zawiera informację o atrybucie urządzenia.
Przykład
Zobacz także: ERR, ERLON ERROR
'Ilustruje ERDEV, ERDEV$, ERL, ERR, ERROR, ON ERROR, i RESUME.
ON ERROR GOTO Handler
10 CHDIR "a:\" 'Powoduje ERR 71 "Disk not ready"
'gdy brak dyskietki w stacji A.
20 y% = 0
30 x% = 5 / y% 'ERR 11 "Division by zero."
40 PRINT "x% ="; x%
50 ERROR 57 'ERR 57 "Device I/O error."
Handler:
PRINT
PRINT "Error "; ERR; " on line "; ERL
SELECT CASE ERR
CASE 71
PRINT "Użyte urzadzenie "; ERDEV$; " kod bledu urzadzenia = "; ERDEV
RESUME NEXT
CASE 11
INPUT "Jaka wartosc chcesz podzielic"; y%
RESUME 'Powtarza linię 30 z nową wartością y%.
CASE ELSE
PRINT "Nieprzewidziany błąd; zakończenie programu."
END
END SELECT
Error 71 on line 10
Użyte urzadzenie A: kod bledu urzadzenia = 2
Error 11 on line 30
Jaka wartosc chcesz podzielic? 10
x% = 0
Error 57 on line 50
Nieprzewidziany błąd; zakończenie programu.
ERR zwraca kod najświeższego błędu.
ERL zwraca numer linii, w której wystąpił błąd, lub najbliższy numer linii
przed linią gdzie wystąpił błąd.
ERR
ERL
• ERL nie zwraca etykiet linii. Jeżeli w programie nie ma numerów
linii, ERL zwraca 0.
Przykład
Zobacz także: ERDEV, ERDEV$ERRORON ERRORRESUMEKody błędów
Symuluje wystąpienie błędu Basica lub błędu zdefiniowanego przez użytkownika.
ERROR wyrażenie%
• wyrażenie% Kod błedu Basica lub zdefiniowanego przez użytkownika;
wartość z zakresu 1 do 255. Aby zdefiniować własny błąd,
zastosuj liczbę która nie jest wymieniona w tabeli
'Kody błędów'.
Przykład
Zobacz także: ERDEV, ERDEV$ERR, ERLON ERRORRESUME
KEY aktywuje, dezaktywuje lub zawiesza wychwytywanie zdarzeń klawiatury.
Kiedy wychwytywanie jest aktywne, ON KEY przechodzi do podprogramu gdy
zostaje naciśnięty klawisz.
KEY(n%) ON
KEY(n%) OFF
KEY(n%) STOP
ON KEY(n%) GOSUB linia
• n% Wartość, która określa klawisz funkcyjny, klawisz
strzałki lub klawisz zdefiniowany przez użytkownika:
n% Klawisz
------ --------------------------------------------
0 Wszystkie klawisze wymienione tutaj (tylko
KEY(0) ON, KEY(0) OFF i KEY(0) STOP).
1-10 Klawisze funkcyjne F1-F10.
11 Klawisz strzałki w górę.
12 Klawisz strzałki w lewo.
13 Klawisz strzałki w prawo.
14 Klawisz strzałki w dół.
15-25 Klawisze zdefiniowane przez użytkownika.
Po więcej informacji - zobacz:
Deklarowanie klawiszy użytkownika.
30, 31 Klawisze funkcyjne F11 and F12.
• KEY(n%) ON Aktywuje wychwytywanie zdarzeń dla określonego klawisza.
• KEY(n%) OFF Dezaktywuje wychwytywanie zdarzeń klawiszowych.
• KEY(n%) STOP Zawiesza wychwytywanie zdarzeń klawiszowych. Zdarzenia
będą przetwarzane znowu, gdy wychwytywanie zostanie
aktywowane przez KEY ON.
• linia Etykieta albo numer pierwszej linii podprogramu
obsługi zdarzenia.
Zobacz także: KEY (Przypisanie)Deklarowanie klawiszy użytkownika
Przykład:
'Ten przykład wymaga wyłączenia Caps Lock i Num Lock.
CONST ESC = 27
KEY 15, CHR$(&H4) + CHR$(&H1F) 'Set up Ctrl+S as KEY 15.
ON KEY(15) GOSUB PauseHandler
KEY(15) ON
WHILE INKEY$ <> CHR$(ESC)
PRINT "Press Esc to stop, Ctrl+S to pause."
PRINT
WEND
END
PauseHandler:
SLEEP 1
RETURN
Press Esc to stop, Ctrl+S to pause.
Press Esc to stop, Ctrl+S to pause.
Press Esc to stop, Ctrl+S to pause.
Press Esc to stop, Ctrl+S to pause.
Press Esc to stop, Ctrl+S to pause.
Press Esc to stop, Ctrl+S to pause.
PEN aktywuje, dezaktywuje lub zawiesza wychwytywanie zdarzeń pióra
świetlnego. Kiedy wychwytywanie jest aktywne, ON PEN przechodzi
do podprogramu, gdy aktywowane jest pióro.
PEN ON
PEN OFF
PEN STOP
ON PEN GOSUB linia
• PEN ON Aktywuje wychwytywanie zdarzeń pióra.
• PEN OFF Dezaktywuje wychwytywanie zdarzeń pióra.
• PEN STOP Zawiesza wychwytywanie zdarzeń pióra. Zdarzenia
będą przetwarzane znowu, gdy wychwytywanie zostanie
aktywowane przez PEN ON.
• linia Etykieta albo numer pierwszej linii podprogramu
obsługi zdarzenia.
Zobacz także: Funkcja PEN
Przykład:
'Ten przykład wymaga pióra świetlnego.
ON PEN GOSUB Handler
PEN ON
PRINT "Esc - wyjscie."
DO UNTIL INKEY$ = CHR$(27): LOOP
END
Handler:
PRINT "Pióro jest w wierszu"; PEN(6); ", kolumnie"; PEN(7)
RETURN
Zwraca status pióra świetlnego.
PEN(n%)
• n% Określa zwracaną informację na temat stanu pióra:
n% Zwraca
-- ---------------------------------------------------------
0 Czy pióro było użyte od ostatniego wywołania (-1, gdy tak,
0, gdy nie)
1 Współrzędna ekranowa x ostatniego naciśnięcia pióra
2 Współrzędna ekranowa y ostatniego naciśnięcia pióra
3 Bieżący stan przełącznika pióra (-1, gdy wciśnięty,
0 gdy nie
4 Współrzędna ekranowa x miejsca, gdzie pióro ostatnio
pozostawało na ekranie
5 Współrzędna ekranowa y miejsca, gdzie pióro ostatnio
pozostawało na ekranie
6 Wiersz znaku przy ostatnim naciśnięciu pióra
7 Kolumna znaku przy ostatnim naciśnięciu pióra
8 Wiersz znaku, gdzie pióro ostatnio pozostawało na ekranie
9 Kolumna znaku, gdzie pióro ostatnio pozostawało na ekranie
Przykład:
DO
P = PEN(3)
LOCATE 1, 1: PRINT "Pen is ";
IF P THEN PRINT "down" ELSE PRINT "up "
PRINT "X ="; PEN(4), " Y ="; PEN(5); " "
LOOP
Zobacz także: polecenia PEN, ON PENSCREENTryby ekranowe
Aktywuje obsługę błedu i gdy wystąpi błąd wykonania programu, kieruje
program do podprogramu obsługi błedu, albo wznawia wykonywanie.
ON ERROR {GOTO linia | RESUME NEXT}
• GOTO linia Przechodzi do pierwszej linii podprogramu
obsługi błędu, określonej przez etykietę albo numer
linii. Aby dezaktywować obsługę błedu, zapisz GOTO 0.
• RESUME NEXT Wznawia wykonywanie programu od polecenia następnego
po tym, które spowodowało błąd wykonania. Stosuj
funkcję ERR do uzyskania kodu tego błędu.
• Jeśli nie stosuje się ON ERROR, każdy błąd wykonania powoduje
zakończenie programu.
Przykład
Zobacz także: ERDEV, ERDEV$ERR, ERLERRORGOTORESUME
PLAY aktywuje, dezaktywuje lub zawiesza wychwytywanie zdarzeń dźwiękowych.
Kiedy wychwytywanie jest aktywne, ON PLAY przechodzi do podprogramu, gdy
bufor muzyczny zawiera mniej, niż określoną liczbę nut.
PLAY ON
PLAY OFF
PLAY STOP
ON PLAY(limit_kolejki%) GOSUB linia
• PLAY ON Aktywuje wychwytywanie zdarzeń dźwiękowych.
• PLAY OFF Dezaktywuje wychwytywanie zdarzeń dźwiękowych.
• PLAY STOP Zawiesza wychwytywanie zdarzeń dźwiękowych. Zdarzenia
będą przetwarzane znowu, gdy wychwytywanie zostanie
aktywowane przez PLAY ON.
• limit_kolejki% Liczba z zakresu 1 do 32. ON PLAY przechodzi
do podprogramu gdy mniej niż limit_kolejki% nut zostało
w buforze muzycznym.
• linia Etykieta albo numer pierwszej linii podprogramu
obsługi zdarzenia.
Przykład:
ON PLAY(3) GOSUB Background
PLAY ON
Music$ = "MBo3L8ED+ED+Eo2Bo3DCL2o2A"
PLAY Music$
LOCATE 2, 1: PRINT "Press any key to stop.";
DO WHILE INKEY$ = "": LOOP
END
Background:
i% = i% + 1
LOCATE 1, 1: PRINT "Background called "; i%; "time(s)";
PLAY Music$
RETURN
Zobacz także: PLAY (Muzyka) Funkcja PLAY
TIMER aktywuje, dezaktywuje lub zawiesza wychwytywanie zdarzeń zegara.
Jeśli wychwytywanie jest aktywne, ON TIMER przechodzi do podprogramu
gdy upłynie określona ilość sekund.
TIMER ON
TIMER OFF
TIMER STOP
ON TIMER(n%) GOSUB linia
• TIMER ON Aktywuje wychwytywanie zdarzeń zegara.
• TIMER OFF Dezaktywuje wychwytywanie zdarzeń zegara.
• TIMER STOP Zawiesza wychwytywanie zdarzeń zegara. Zdarzenia
będą przetwarzane znowu, gdy wychwytywanie zostanie
aktywowane przez TIMER ON.
• n% Liczba sekund, która ma upłynąć, zanim ON TIMER
przejdzie do podprogramu wychwytywania zdarzeń; wartość
z zakresu 1 do 86400 (24 godziny).
• linia Etykieta albo numer pierwszej linii podprogramu
obsługi zdarzenia.
Zobacz także: Funkcja TIMER
Przykład:
ON TIMER(1) GOSUB TimeUpdate
TIMER ON
CLS
PRINT "Time: "; TIME$
StartTime = TIMER
WHILE TimePast < 10
TimePast = TIMER - StartTime
WEND
END
TimeUpdate:
LOCATE 1, 7: PRINT TIME$
RETURN
STRIG aktywuje, dezaktywuje lub zawiesza przechwytywanie zdarzeń joystick'a.
Kiedy wychwytywanie jest aktywne, ON STRIG przechodzi do podprogramu gdy
zostaje naciśnięty określony przycisk joystick'a.
STRIG(n%) ON
STRIG(n%) OFF
STRIG(n%) STOP
ON STRIG(n%) GOSUB linia
• n% Wartości określające przycisk joystick'a:
n% Przycisk
-- --------------------------
0 Dolny przycisk, joystick A
2 Dolny przycisk, joystick B
4 Górny przycisk, joystick A
6 Górny przycisk, joystick B
• STRIG(n%) ON Aktywuje wychwytywanie zdarzeń joystick'a.
• STRIG(n%) OFF Dezaktywuje wychwytywanie zdarzeń joystick'a.
• STRIG(n%) STOP Zawiesza wychwytywanie zdarzeń joystick'a. Zdarzenia
będą przetwarzane znowu, gdy wychwytywanie zostanie
aktywowane przez STRIG ON.
• linia Etykieta albo numer pierwszej linii podprogramu
obsługi zdarzenia.
Przykład:
'Ten przykład wymaga joystick'a.
ON STRIG(0) GOSUB Handler
STRIG(0) ON
PRINT " Esc - wyjscie."
DO UNTIL INKEY$ = CHR$(27): LOOP
END
Handler:
PRINT "Nacisnieto przycisk joystick'a."
RETURN
Zobacz także: STICK Funkcja STRIG
Wznawia wykonywanie programu po zadziałaniu podprogramu obsługi błędu.
RESUME
RESUME [{linia | NEXT}]
• linia Etykieta lub numer linii, od której wznawia się wykonywanie.
jeśli numer jest 0 lub jest opuszczony, wykonywanie rozpocznie
się od polecenia, które spowodowało błąd.
• NEXT wznawia wykonywanie od polecenia następnego po tym, które
spowodowało błąd.
Przykład
Zobacz także: ERRORON ERROR
Zawiesza wykonywanie programu.
SLEEP [sekundy&]
• sekundy& Liczba sekund zawieszenia programu.
• Jeśli sekundy& wynosi 0 lub jest opuszczone, program pozostaje
zawieszony, dopóki nie zostanie naciśnięty klawisz albo nie nastąpi
zdarzenie podlegające wychwytywaniu.
Przykład:
PRINT "10 sekund drzemki..."
SLEEP 10
PRINT "Obudź się!"
Zobacz także: WAIT
Zwraca współrzędne joystick'a.
STICK(n%)
• n% Wskazuje zwracaną współrzędną:
n% Returns
-- --------------------------
0 Współrzędna x joystick'a A
1 Współrzędna y joystick'a A
2 Współrzędna x joystick'a B
3 Współrzędna y joystick'a B
• musisz wywołać STICK(0) zanim STICK(1), STICK (2), lub STICK(3).
STICK(0) zarejestrują bieżące współrzedne.
Przykład:
Temp% = STICK(0)
PRINT STICK(2), STICK(3)
Zobacz także: Funkcja STRIG Polecenia STRIG, ON STRIG
Zwraca status przycisku joystick'a.
STRIG(n%)
• n% Wartość określająca stan joysticka:
n% Stan
-- ---------------------------------------------------------------
0 Dolny przycisk joystick'a A był naciśnięty po ostatnim STRIG(0)
1 Dolny przycisk joystick'a A jest właśnie wciśnięty
2 Dolny przycisk joystick'a B był naciśnięty po ostatnim STRIG(2)
3 Dolny przycisk joystick'a B jest właśnie wciśnięty
4 Górny przycisk joystick'a A był naciśnięty po ostatnim STRIG(4)
5 Górny przycisk joystick'a A jest właśnie wciśnięty
6 Górny przycisk joystick'a B był naciśnięty po ostatnim STRIG(6)
7 Górny przycisk joystick'a B jest właśnie wciśnięty
• STRIG zwraca -1 gdy warunek jest prawdziwy, w przeciwnym razie 0.
Przykład :
PRINT "Press Esc to exit."
DO
IF STRIG(0) OR INKEY$ = CHR$(27) THEN EXIT DO
LOOP
DO
BEEP 'BEEP gdy przycisk A jest wciśnięty.
LOOP WHILE STRIG(1)
Zobacz także: STICK Polecenia STRIG, ON STRIG
Zwraca liczbę sekund, która upłynęła od północy.
TIMER
• Stosuj TIMER do mierzenia czasu w programie lub fragmencie programu,
albo - z poleceniem RANDOMIZE - do inicjalizacji generatora liczb
pseudolosowych.
Przykład:
RANDOMIZE TIMER
Zobacz także: RANDOMIZE, RND Polecenia TIMER, ON TIMER
TRON i TROFF włączają i wyłączają śledzenie poleceń programu (w procesie
poszukiwania błędów).
TRON
TROFF
• Własciwości debuggera QBasica czynią te polecenia niepotrzebnymi.
Istotnie, śledzenie programu krok po kroku zapewnia klawisz F8, natomiast TRON
nawet nie daje się skutecznie uruchomić. Za to w GW-Basicu sa one jedynym narzędziem
do śledzenia programu; są tam uruchamiane w trybie bezpośrednim. (Przyp. tłum.)
Zwraca łańcuchową reprezentację adresu zmiennej do stosowania w poleceniach
DRAW i PLAY.
VARPTR$(commandstring$)
• commandstring$ Zmienna łańcuchowa zawierająca komendy
dla DRAW i PLAY.
Przykład:
Scale$ = "CDEFGAB"
PLAY "L16"
FOR i% = 0 TO 6
PLAY "O" + STR$(i%)
PLAY "X" + VARPTR$(Scale$)
NEXT i%
Zobacz także: DRAWPLAY (Muzyka)VARPTR, VARSEG
Operatory boolowskie (operatory logiczne) wykonują operacje na bitach,
operacje boolowskie (logiczne) albo testują wielorakie relacje. Zwracają
wartość Prawda (nie-zero) lub Fałsz (zero), która może zostać użyta
do podejmowania decyzji.
wynik = wyrażenie1 operator_boolowski wyrażenie2
• operator_boolowski Jeden z następujących operatorów boolowskich:
NOT Dopełnienie bitowe (zaprzeczenie)
AND Koniunkcja
OR Dysjunkcja (łączne "or")
XOR Rozłączne "or"
EQV Równoważność
IMP Implikacja
• Wyniki zwracane przez każdy z operatorów pokazano w tabeli prawdy
poniżej. T oznacza Prawdę (nie-zero), F - Fałsz (zero):
Wyrażenie1 Wyrażenie2 NOT AND OR XOR EQV IMP
----------- ----------- --- --- --- --- --- ---
T T F T T F T T
T F F F T T F F
F T T F T T F T
F F T F F F T T
• Operatory boolowskie są wykonywane po operacjach arytmetycznych
i operacjach relacji, w kolejności nastepstwa.
• Przed wykonaniem operacji boolowskiej wyrażenia są przekształcane
do liczb całkowitych (integer) lub długich liczb całkowitych
(long integer).
• Jeśli przekształcone wyrażenie jest równe 0 lub -1, operacja boolowska
zwraca jako wynik 0 lub -1. Ponieważ operatory boolowskie wykonują
obliczenia na bitach, użycie wartości innych niż 0 dla Fałszu i -1
dla Prawdy może prowadzić do nieprzewidzianych wyników.
Zwraca liczbę nut pozostałą w buforze muzycznym.
PLAY(n)
• n Jakieś wyrażenie numeryczne.
Przykład:
Music$ = "MBT180o2P2P8L8GGGL2E-P24P8L8FFFL2D"
PLAY Music$
WHILE PLAY(0) > 5: WEND
PRINT "Just about done!"
Zobacz także: PLAY (Muzyka)PLAY, ON PLAY (Event Trapping)
Odgrywa nuty.
PLAY commandstring$
• commandstring$ Wyrażenie łańcuchowe zawierające jedna lub
wiecej następujących komend PLAY:
Oktawy i tony:
Ooktawa Ustawia bieżącą oktawę (0 - 6).
< lub > Przesuwa w górę lub w dół 0 jedną oktawę.
A - G Gra określoną nutę w bieżącej oktawie.
Nnuta Gra określoną nutę (0 - 84) z siedmiooktawowego zakresu
(0 - pauza).
Czas trwania i tempo:
Ldługość Ustawia długość każdej nuty (1-64). L1 jest całą nutą,
L2 jest półnutą itd.
ML Ustawia muzykę legato.
MN Ustawia muzykę normalnie.
MS Ustawia muzykę staccato.
Ppauza Określa pauzę (1 - 64). P1 pauzuje całą nutę, P2 jest
pauzą półnutową itd.
Ttempo Ustawia tempo w ćwierćnutach na minutę (32 - 255).
Komendy trybu:
MF Gra muzykę na pierwszym planie.
MB Gra muzykę w tle.
Krzyżyk i bemol:
# or + Podwyższa nutę o pół tonu
- (bemol) Obniża nutę o pół tonu.
. Przedłuża czas grania nuty 3/2 raza.
• Aby wykonać podłańcuch komend PLAY z łańcucha PLAY, zastosuj
komendę "X":
PLAY "X"+ VARPTR$(commandstring$)
Przykład:
'Gra gamę w 7 różnych oktawach:
scale$ = "CDEFGAB"
PLAY "L16"
FOR i% = 0 TO 6
PLAY "O" + STR$(i%)
PLAY "X" + VARPTR$(scale$)
NEXT i%
Zobacz także: BEEPPLAY FunctionPLAY, ON PLAY (Event Trapping)SOUNDVARPTR$Różnice w porównaniu z BASICA
Generuje dźwięk przez głośnik komputera.
SOUND częstotliwość, czas
• częstotliwość Częstotliwość dźwięku w hercach; wartość z zakresu
37 do 32767.
• czas Liczba cykli zegarowych trwania dźwięku; wartość
z zakresu 0 do 65535. W sekundzie jest 18.2 cykli.
Przykład:
FOR i% = 440 TO 1000 STEP 5
SOUND i%, i% / 1000
NEXT i%
Zobacz także: PLAY
Określa typ dostępu użytkownika do otwieranego pliku.
ACCESS {READ | WRITE | READ WRITE}
• READ Otwiera plik tylko do odczytu.
• WRITE Otwiera plik tylko do zapisu.
• READ WRITE Otwiera plik równocześnie do odczytu i zapisu. Tryb
READ WRITE działa tylko dla plików o swobodnym dostępie
i plików binarnych oraz plików otwartych 'for APPEND'
(do dopisywania - dostęp sekwencyjny).
Zobacz także: OPEN
Słowa kluczowe APPEND, BINARY, INPUT, OUTPUT, i RANDOM są używane
w poleceniu OPEN do określenia trybu otwarcia pliku. INPUT, OUTPUT
i RANDOM są także używane w poleceniu OPEN COM.
• APPEND określa, że plik będzie otwarty do zapisu sekwencyjnego
i ustawia wskaźnik pliku na końcu pliku. Polecenie PRINT #
lub WRITE # wówczas poszerza plik (dodaje do pliku).
• BINARY określa tryb binarny. W trybie binarnym można czytać
lub zapisywać informację na pozycji każdego bajtu w pliku stosując
polecenia GET lub PUT.
• INPUT określa, że plik jest otwierany do odczytu sekwenyjnego.
• OUTPUT określa, że plik jest otwierany do zapisu sekwencyjnego.
• RANDOM określa, że plik jest otwierany w trybie swobodnego dostępu.
RANDOM jest domyślnym trybem otwarcia.
Zobacz także: OPENOPEN COMPRINT, LPRINTWRITE
Wykonuje różne działania jako część następujących poleceń:
• W poleceniach COMMON, DECLARE, DEF FN, DIM, FUNCTION, REDIM, SHARED,
STATIC, i SUB określa typ zmiennej.
• W poleceniu TYPE określa typ elementu w typie danych użytkownika.
• W poleceniu OPEN przypisuje numer pliku do pliku lub urządzenia.
• W poleceniu FIELD określa nazwę pola.
• W poleceniu NAME określa nową nazwę pliku.
Zobacz także: COMMONDECLAREDEF FNDIM, REDIMFIELDFUNCTIONNAMEOPENSHARED, STATICSUBTYPE
Przydziela miejsce zmiennym w buforze pliku o swobodnym dostępie.
FIELD [#]numer_pliku%, długość_pola% AS zmienna_łańcuchowa$
[,długość_pola% AS zmienna_łańcuchowa$] ...
• numer_pliku% Numer otwartego pliku.
• długość_pola% Liczba znaków w polu.
• zmienna_łańcuchowa$ Zmienna identyfikująca pole i zawierająca
dane pola.
• Zmienne rekordowe zwykle stanowią lepszy sposób obsługi danych
w rekordach.
Przykład:
OPEN "FILEDAT.DAT" FOR RANDOM AS #1 LEN = 80
FIELD #1, 30 AS name$, 50 AS address$
Zobacz także: GET, PUTLSET, RSETTYPERóżnice w porównaniu z BASICA
Deklaruje klawisze zdefiniowane przez użytkownika.
Aby zadeklarować klawisz użytkownika, zastosuj następujące odmiany
polecenia KEY:
KEY n%, CHR$(keyboardflag%) + CHR$(scancode%)
• n% Wartość z zakresu 15 do 25, która identyfikuje
klawisz.
• keyboardflag% Jedna z następujących wartości, lub suma tych
wartości, określająca czy definiowany klawisz jest
użyty w kombinacji z klawiszami Shift, Ctrl, Alt,
NumLock lub Caps Lock, albo z klawiszami klawiatury
rozszerzonej:
Wartość Klawisz
------------- -----------------------------------
0 Bez keyboard flag
1 do 3 Którykolwiek Shift
4 Ctrl
8 Alt
32 NumLock
64 Caps Lock
128 Dodatkowe klawisze klawiatury
101-kkawiszowej
Aby określić wielokrotne kombinacje, dodaj wartości
do siebie. Np. wartość 12 określa, że klawisz
użytkownika jest użyty w kombinacji z Ctrl i Alt
(4 + 8).
• scancode% Kod klawiaturowy deklarowanego klawisza.
Zobacz Kody klawiatury.
Zobacz także: KEY (Przypisanie)KEY, ON KEY (Zdarzenia)
Przypisuje wartośc wyrażenia do zmiennej.
[LET] zmienna=wyrażenie
• zmienna Dowolna zmienna. Nazwy zmiennych mogą składać się
z maksymalnie 40 znaków i muszą zaczynać się od litery.
Akceptowane znaki to A-Z, 0-9, i kropka (.).
• wyrażenie Dowolne wyrażenie dostarczające wartość dla zmiennej.
• Stosowanie opcjonalnego słowa LET nie jest zalecane. Polecenie
przypisania zmienna=wyrażenie działa tak samo z LET jak i bez LET.
Zobacz także: LSET, RSET
Słowo kluczowe NEXT
Zwiększa i sprawdza licznik w pętli FOR...NEXT albo, gdy użyte z RESUME,
kontynuuje wykonywanie programu po obsłudze błędu.
Zobacz także: FOR...NEXTRESUME
Przejawia różne działania jako część następujących poleceń:
• Użyte w poleceniu ON ERROR włącza przechwytywanie błędów.
• Włącza przechwytywanie zdarzeń w poleceniach COM ON, KEY ON,
PEN ON, PLAY ON, STRIG ON i TIMER ON.
• W poleceniach ON COM, ON KEY, ON PEN, ON PLAY, ON STRING
i ON TIMER określa zdarzenie do przechwycenia.
• Określa wyrażenie w poleceniach ON...GOSUB i ON...GOTO.
Zobacz także: COM, ON COMKEY, ON KEYON ERRORON...GOSUB, ON...GOTOPEN, ON PENPLAY, ON PLAYSTRIG, ON STRIGTIMER, ON TIMER
Słowa kluczowe APPEND, BINARY, INPUT, OUTPUT, i RANDOM są używane
w poleceniu OPEN do kreślenia trybu otwarcia pliku. INPUT, OUTPUT
i RANDOM są także używane w poleceniu OPEN COM.
• APPEND określa, że plik będzie otwarty do zapisu sekwencyjnego
i ustawia wskaźnik pliku na końcu pliku. Polecenie PRINT #
lub WRITE # wówczas poszerza plik (dodaje do pliku).
• BINARY określa tryb binarny. W trybie binarnym można czytać
lub zapisywać informację na pozycji każdego bajtu w pliku stosując
polecenia GET lub PUT.
• INPUT określa, że plik jest otwierany do odczytu sekwenyjnego.
• OUTPUT określa, że plik jest otwierany do zapisu sekwencyjnego.
• RANDOM określa, że plik jest otwierany w trybie swobodnego dostepu.
RANDOM jest domyślnym trybem otwarcia.
Zobacz także: OPENOPEN COMPRINT, LPRINTWRITE
W pętli FOR...NEXT określa, o ile będzie zwiększany licznik przy każdej
iteracji. W poleceniach graficznych określa, że współrzędne piksela
są liczone względem bieżącej pozycji kursora graficznego.
Zobacz także: CIRCLEFOR...NEXTGET, PUTLINE
Określa zakresy dla:
• członu CASE w poleceniu SELECT CASE;
• licznika pętli w pętli FOR...NEXT;
• rekordów do "zamknięcia" lub "otwarcia" w poleceniu LOCK...UNLOCK;
• dolnej i górnej granicy w poleceniach DIM i REDIM.
Zobacz także: DIM, REDIMFOR...NEXTLOCK, UNLOCKSELECT CASE
Program REMLINE.BAS, służący do usuwania zbędnych numerów linii
z programów napisanych w starszych wersjach Basica, jest równocześnie
ilustracją wywołania procedur SUB i FUNCTION oraz użycia poleceń SHARED
i STATIC. Listing programu zawiera obszerne komentarze, które także
zostały spolszczone.
Z uwagi na niezgodność standardu polskich znaków między DOS-em
i Windows, listing ten prezentowany jest tu w paru wersjach:
REMLINE1.BAS - to wersja przeznaczona dla DOS-a i QBasic'a;
Remline1.txt - wersja tekstowa dla oglądania pod Windows;
REMLINE.BAS - oryginał (z komentarzami po angielsku).