|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Tłumaczenie: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
Obsługa łańcuchów i slicing
| SPIS TREŚCI |
|
Slicing, używanie TO. Zauważ, że ta notacja nie należy do standardowego BASIC'a.
Mając dany łańcuch, jego podłańcuch składa się z pewnego ciągu kolejnych
znaków zawartych w nim. Stąd "tekst" jest podłańcuchem
Istnieje notacja zwana slicing (segmentowanie) do opisu podłańcuchów i można ją zastosować do dowolnych wyrażeń łańcuchowych. Ogólna postać wygląda następująco:
zatem przykładowo:
Jeśli pominiesz start, to zostanie w to miejsce przyjęta wartość 1; jeśli pominiesz koniec, to komputer zastosuje wartość równą długości łańcucha. Stąd:
| "abcdef"( TO 5)="abcdef"(1 TO 5)="abcde" "abcdef"(2 TO )="abcdef"(2 TO 6)="bcdef" "abcdef"( TO )="abcdef"(1 TO 6)="abcdef" |
(Ostatni przykład możesz również wpisać jako "abcdef"(), jednak jaką ma to wartość?)
Nieco inna postać opuszcza TO i pozostawia jedynie samą liczbę.
Chociaż zwykle zarówno start jak i koniec muszą odwoływać się do istniejących fragmentów łańcucha, to reguła ta jest unieważniana przez inną: jeśli start jest większy od koniec, to wynikiem będzie pusty łańcuch. Zatem
daje błąd 3 subscript wrong (3 zły indeks), ponieważ łańcuch zawiera jedynie 6 znaków a 7 to już zbyt wiele, lecz
i
Początek i koniec nie powinny być ujemne, inaczej otrzymasz błąd B integer out of range (B liczba całkowita poza zakresem).
Poniższy program w prosty sposób ilustruje niektóre z tych reguł.
| 10 LET a$="abcdef" 20 FOR n=1 TO 6 30 PRINT a$(n TO 6) 40 NEXT n 50 STOP |
Gdy uruchomisz ten program, wpisz NEW i wprowadź kolejny:
| 10 LET a$="TEREFEREKUKU" 20 FOR n=1 TO 12 30 PRINT a$(n TO ),a$((13-n) TO ) 40 NEXT n 50 STOP |
Przy zmiennych łańcuchowych możemy nie tylko wydobywać z nich podłańcuchy, lecz również przypisywać tym łańcuchom nowe zawartości.
Na przykład, wpisz:
a następnie:
i
Zwróć uwagę, że ponieważ podłańcuch a$(5 TO 8) ma długość tylko 4 znaków, to jedynie pierwsze 4 litery x zostały użyte w przypisaniu. Jest to cecha charakterystyczna przypisywania do łańcuchów: podłańcuch musi posiadać taką samą długość po zakończeniu operacji, jaką miał na jej początku. Aby upewnić się, że tak właśnie się stanie, przypisywany łańcuch jest przycinany z prawej strony, jeśli jest zbyt długi, lub wypełniany spacjami, jeśli jest zbyt krótki – nazywa się to przypisaniem Prokrusta (ang. Procrustean assignment). Nazwa ta pochodzi od nazwiska syna Posejdona, Prokrusta, który przebrany w skórę wilka czyhał na podróżnych na drodze Megary do Aten. Każdego złapanego nieszczęśnika kładł na swoim łożu i mierzył – jeśli był za długi, to go przycinał, jeśli był za krótki, to go naciągał. Kres temu procederowi położył grecki heros Tezeusz.
Jeśli teraz spróbujesz:
i
to zobaczysz, że ta sama rzecz wystąpiła ponownie (tym razem ze wstawieniem spacji), ponieważ a$() liczy się jako podłańcuch.
wykona zadanie poprawnie.
Skomplikowane wyrażenia łańcuchowe będą potrzebowały nawiasów wokół siebie, zanim zostaną poddane slicingowi. Na przykład:
| "abc"+"def"(1 TO 2)="abcde" ("abc"+"def)(1 TO 2)="ab" |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.