Koncepcje programowania/Łańcuchy

Każdy program zawiera jakieś 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 konkatenacja? To nic innego jak łączenie ciągów znaków. Możemy chcieć np. Połączyć imię z nazwiskiem oraz z adresem bądź kodem pocztowym. Jak to się robi?

Przykład w języku JavaScript:

"Hello, " + "world!";
// => "Hello, world!"

Przykład w języku Python:

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

Przykład w emacs lisp:

(concat "Hello, " "world!")
;; => "Hello, world!"

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 konkatenacji:

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 dziesią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 wartość 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 wartości 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, litera l indeks 2 i tak dalej. Jest to po prostu kolekcja znaków, dzięki 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.

Zadania edytuj

  1. Napisz program, który skłania użytkownika do wprowadzenia ich nazwy, a następnie używa kontatenacji, aby wyświetlić komunikat z życzeniami, taki jak „Hello, World!”
  2. Napisz program odczytu w ciągu użytkownika, a następnie wyświetla długość ciągu.
  3. Napisz program, który odczytuje dwa ciągi od użytkownika, a następnie używa połączenia ciągów do połączenia dwóch ciągów w nowy ciąg.
  4. Napisz program, który odczytuje ciąg od użytkownika, a następnie przekształca wszystkie znaki w ciągu na Overcase.
  5. Napisz program odczytu w ciągu użytkownika, a następnie używa pętli do wyświetlania każdego znaku w ciągu w osobnym wierszu.
  6. Napisz program, który odczytuje ciąg od użytkownika, a następnie używa slicing ciągów do wyświetlenia pierwszych i ostatnich znaków ciągu.
  7. Napisz program odczytu w ciągu użytkownika, a następnie używa indeksowania ciągów do wyświetlenia trzeciego znaku ciągu.
  8. Napisz program odczytu w ciągu użytkownika, a następnie używa metod ciągów do zliczenia liczby wystąpień określonego znaku w ciągu.
  9. Napisz program odczytu w ciągu użytkownika, a następnie używa metod ciągów, aby zastąpić wszystkie wystąpienia określonego znaku innym znakiem.
  10. Napisz program odczytu w ciągu użytkownika, a następnie używa metod ciągów, aby sprawdzić, czy ciąg zawiera określone podłoże.