Koncepcje programowania/Łańcuchy

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

Każdy program zawiera jakies elementy tekstowe. Większość z nich będzie tekst od użytkownika obierała, następnie przetwarzała i zwracała. Także w większości języków programowania są obecne mechanizmy które będą nam umożliwiały z nimi pracę .

Konkatenacja[edytuj]

Czym jest konkatencja? To nic innego jak łączenie ciągów znaków. Możemy chcieć np. polączyć imię z nawiskiem oraz z adresem bądź kodem pocztowym. Jak to się robi?

string1 = 'Hello'
string2 = 'World'
printf(string1 + string2)

Za pomocą plusa, łączymy te dwa ciągi znakowe, pierwszą zmienną ze zmienną drugą. Wynikiem będzie HelloWorld. Czyli + jest operatorem dodawania ale w kontekście ciągów znakowych jest operatorem konkatenacji który dwa fragmenty tekstu połączy nam w jeden wynikowy fragment. Tylko mamy pewien szkopuł: Helloworld bez spacji. Logiczne, bo język programowania z sam siebie nie wie że ma wstawić odstęp pomiędzy słowami, dopóki tego jednoznacznie nie nakażemy. Można to naprawić, dodając po prostu spację w słowie Hello albo użyć znów operatora konkatencji:

print(string1 + ' ' + string2)

Znowu posługujemy się stringami z poprzedniego przykładu, jedynie co się zmieniło to użyli dwóch operatorów konkatenacji, dwóch plusów i dodali spację w środku, czyli tak naprawdę połączyli 3 elementy. Pierwszą zmienną string, potem dołączyli odstęp i za pomocą kolejnego plusa dodali string2. Wynik będzie oczywisty:

Witaj Świecie

Witaj + spacja + świecie. Dlatego to co musisz zapamiętać z tego rozdziały to to że plus może być zarówno operatorem dodawania jak i konkatenacji, pozwalając dodawać do siebie ciągi znaków.

Skoro + jest takim podwójnym operatorem to w jaki sposób to odróżnić żeby nie popełnić błędu? Weźmy sobie taki przykład:

x = 10
y = 10
print( x + y)

Mamy zmienną 10 i y która ma taką samą wartość i próbujemy wyprowadzić działanie. Oczywiście wyjdzie nam wartość 20, bo dodajemy 10 + 10, mamy jedną i drugą zmienną która jest wartością liczbową. I tu jest teraz bardzo ważna różnica:

x = '10'
y = '10'
print( x + y)

Znowu mamy dzisiątki ale tym razem jako tekst, znowu próbujemy ze sobą połączyć x + y i tym razem nie uzyskamy 20 tylko 1010 w formie tekstu a nie jako wartosć liczbowa. Ten sam operator, w obu przykładach mamy plusa, może pełnić różne funkcje w zależności od typów zmiennych, kiedy mieliśmy wartosci liczbowe, wykonaliśmy dodawanie, kiedy mieliśmy wartości tekstowe, dokonali konkatenacji.

Operacje na ciągach znaków[edytuj]

Wiele języków programowania posiada różne polecania które pozwalają łatwo modyfikować tekst. Prosty przykład:

napis1 = 'Hello world'
print(napis1.upper()

Zamiana na duże litery. Mamy zmienną o nazwie napis1 i klasyczny "hello world". Potem wywołuję wyświetlenie wyniku na ekran, zmienną napis1 i kropkę. Skoro mamy tekst i kropkę, oznacza to że wywołujemy metodę, która jest specjalną odmianą funkcji, funkcji które wykonujemy na jakimś obiekcie, po to by ją zmodyfikować. Skoro jest funkcją, musi mieć nawiasy na końcu. Wynik

HELLO WORLD

Każdy string ma swój indeks. Indeksy już omawiali przy okazji tablic i w działaniu są identyczne.

'Hello world

Jest to po prostu tablica, która zawiera w sobie różne znaki, tak jak w tablicach kolejno mieliśmy poszczególne wartości, tak tutaj tymi wartościami są pojedyncze znaki, także numerowane są od zera. Czyli litera H na indeks 0, litera e ma indeks 1, likera l indeks 2 i tak dalej. Jest to po prostu kolekcja znaków, dzięku temu możemy na przykład sprawdzić w którym miejscu znajduje się dany znak, python oferuje także coś co nazywamy plasterkowaniem (slicing) czyli pozwala na podzielenie stringa by z niego móc coś wyodrębnić. Przykłady:

słowo = 'hello world'
result = słowo.find('world')
result

Wynikiem będzie 6, ponieważ numeruje od zera.