Kurs QBasic - część 8

Operacje na tekście - WIDTH, CHR$, ASC, LEFT$, RIGHT$, LCASE$, UCASE$, STRING$, SPACE$, INSTR

W tym dziale zajmiemy się poleceniami przydatnymi przy edycji tekstu. Zanim przejdziemy do konkretów, warto zapoznać się z poleceniem WIDTH x,y. Polecenie WIDTH ustawia odpowiednią szerokość i wysokość ekranu. Polecenie działa tylko w trybie pełnoekranowym. Użycie polecenia WIDTH przedstawia przykład:

10 REM Prg8.1 Zmiana rozmiaru ekranu - WIDTH
20 SCREEN 0
30 WIDTH 40
40 CLS
50 PRINT " Duze litery"
60 SLEEP 3
70 WIDTH 80
80 PRINT " Male litery"

Oczywiście WIDTH działa również w trybach graficznych. Informacji na temat możliwych wartości x i y w danym trybie graficznym powinieneś szukać w pomocy Basica (pod pojęciem SCREEN - tam znajdują się wszystkie możliwe tryby). Po króciutkim wstępie zostawiamy sprawę wielkości ekranu i przechodzimy do tematu znaków. Jak wiadomo, w kodzie ASCII znajduje się 256 znaków - zwykła klawiatura posiada jedynie 101/102 klawisze. Sprawy nie ratuje fakt, iż pojedynczy klawisz jest często wykorzystany do wpisywania dwóch różnych znaków. Sprawa jest prosta - nie mamy dostępu do części znaków za pomocą klawiatury. Jak więc uzyskać do nich dostęp ? Wystarczy użyć polecenia, które już w kursie się pojawiło: CHR$(x). Używając kombinacji poleceń PRINT CHR$(x) jesteśmy w stanie wyświetlić dowolny znak z tablicy ASCII. Wszystko przedstawia poniższy przykład:

10 REM Prg8.2 Wyswietlanie znakow z tablicy ASCII
20 CLS
30 FOR a = 15 TO 255
40 PRINT a; CHR$(a); "  ";
50 NEXT a

Powyższy program wyświetla znaki od 15 do 255. Znaki 0 - 14 są niewidoczne. Jeżeli chcesz zobaczyć pełną tablicę znaków, wejdź do pomocy Basica, wybierz Contents, a następnie ASCII character codes. Jeżeli natomiast szukasz polecenia działającego w sposób odwrotny, powinieneś skorzystać z ASC("znak"), dzięki któremu uzyskasz numer "znaku". Kolejnymi poleceniami bezpośrednio nawiązującymi do tematu są LEFT$(zmienna,numer_znaku), oraz RIGHT$(zmienna,numer_znaku). Pierwsze polecenie umożliwia pobranie ze "zmiennej" znaku o numerze porządkowym określonym przez "numer_znaku". Wyliczanie znaków rozpoczyna się od lewej strony (czyli od początku zmiennej). Drugie polecenie działa identycznie, a jedyną różnicą jest wyliczanie znaków od prawej strony. Zastosowanie poleceń przedstawia przykład

10 REM Prg8.3 Pobieranie znakow ze zmiennej - LEFT$, RIGHT$
20 CLS
30 INPUT " Jak masz na imie "; imie$
40 PRINT : PRINT" Pierwsza litera twojego imienia jest: ";LEFT$(imie$,1)
50 PRINT " Ostatnia litera twojego imienia jest: ";RIGHT$(imie$,1)

Powyższy przykład raczej dokładnie obrazuje możliwości obu poleceń. Podobnie działającym poleceniem jest MID$(zmienna,numer_znaku,ilosc_znakow), które umożliwia wyciągnięcie ciągu znaków z wnętrza zmiennej. "Numer_znaku" wskazuje na znak od którego chcemy rozpocząć wyjmowanie znaków, natomiast "ilosc_znakow" informuje ile znaków ma zostać pobranych. Kolejny przykład:

10 REM Prg8.4 Pobieranie znakow ze zmiennej - MID$
20 CLS
30 INPUT " Jak masz na imie "; imie$
40 PRINT : PRINT" Druga, trzecia i czwarta litera twojego imienia to: ";MID$(imie$,2,3)

Kolejne polecenia przydadzą się, jeżeli duże litery znajdujące się w zmiennej będziesz chciał zamienić na małe (lub na odwrót). W przypadku zamiany dużych liter na małe należy użyć polecenia LCASE$(zmienna), natomiast gdy chcesz uzyskać odwrotny efekt powinieneś skorzystać z UCASE$(zmienna). Użycie obu poleceń prezentuje przykład:

10 REM Prg8.5 Duze i male litery - LCASE$, UCASE$
20 CLS
30 INPUT " Jak masz na imie "; imie$
40 PRINT : PRINT" Twoje imie pisane dużymi literami: ";UCASE$(imie$)
50 PRINT " Twoje imie pisane malymi literami: ";LCASE$(imie$)

W programach często zdarza się, że chcemy pewien znak powtórzyć określoną ilość razy. Co prawda można to zrobić wciskając klawisz odpowiednią ilośc razy, lub zastosować pętle, jednak istnieją łatwiejsze rozwiązania. Polecenie STRING$(ilosc_znakow, "znak") pozwala powielać "znak" tyle razy, ile zostało określone w "ilosc_znakow". Drugie polecenie - SPACE$(ilosc_znakow) umożliwia wstawienie odstępu (spacji) w ilości równej "ilosc_znakow". Zastosowanie obu poleceń przedstawiam poniżej:

10 REM Prg8.6 - STRING$, SPACE$
20 CLS
30 PRINT " Po tym tekscie pojawi sie 10 gwiazdek "; STRING$(10, "*")
40 PRINT : PRINT " Natomiast tutaj "; SPACE$(15); "znajduje sie 15 znakowy odstep"

Czasami może zajść potrzeba sprawdzenia z ilu znaków składa się zmienna. Takiej informacji może dostarczyć polecenie LEN(zmienna). Użycie polecenia może wyglądać następująco:

10 REM Prg8.7 Sprawdzanie dlugosci zmiennej
20 CLS
30 INPUT " Podaj swoje imie (max. 8 znakow) "; imie$
40 IF LEN(imie$)>8 THEN PRINT " Podane imie jest za dlugie": END
50 PRINT " Wprowadziles imie, ktore sklada sie z ";LEN(imie$);"liter."

Ostatnim poleceniem związanym z tematem będzie INSTR(zmienna,szukany_zwrot) służący do szukania ciągu znaków w zmiennych. Szukanym zwrotem może być tekst zawarty w "cudzysłowie", jak również inna zmienna. Jeżeli polecenie znajdzie szukany fragment, zwróci nam numer znaku w którym rozpoczyna się szukany zwrot. Przykład demonstruję poniżej:

10 REM Prg8.8 Szukanie ciagu znakow w zmiennej - INSTR
20 CLS
30 zmienna1$ = "Kot w butach"
40 PRINT "Wyrazenie 'w butach' zaczyna sie od:"; INSTR(zmienna1$, "w butach");"pozycji"
50 zmienna2$ = "but"
60 PRINT "Wyrazenia zmiennej2 zaczyna sie od:"; INSTR(zmienna1$, zmienna2$);"pozycji"
70 PRINT "Wyrazenie 'oko' zaczyna sie od:"; INSTR(zmienna1$, "oko");"pozycji"

Jeżeli polecenie INSTR zwróci wartość zero, oznacza to że szukane wyrażenie nie zostało znalezione.

 

Język

Polska wersja językowa    English language version

Poleć stronę

Aby polecić aktualnie oglądaną stronę kliknij:

Licznik wizyt

Liczniki

Kontakt

Wiadomości

03.12.2013

Dodano opis gry Stellar System.

16.06.2013

Dodano opis programu "System Sprzedaży", oraz poprawiono treści na stronie.

10.05.2012

Strona została całkowicie przebudowana. Zmieniono layout, poprawiono teksty, oraz dodano angielską wersję strony.