Podstawy programowania - wykład 3 · Łańcuch znaków – w językach C i C++ (oraz pochodnych)...

33
1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Wykład: 9 Łańcuchy znaków Podstawy programowania

Transcript of Podstawy programowania - wykład 3 · Łańcuch znaków – w językach C i C++ (oraz pochodnych)...

1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wykład: 9

Łańcuchy znaków

Podstawy programowania

2

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Łańcuch znaków – w językach C i C++ (oraz pochodnych)

łańcuch znaków przechowywany jest jako tablica znaków

zakończona znakiem o numerze zero (NULL)

A l a m a k o t a /0

0 1 2 3 4 5 6 7 8 9 10 11

3

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Obsługa zmiennych łańcuchowych (łańcuchy znaków)

C++ umożliwia zastosowanie dwóch wariantów:

1. Tablica znaków (wywodzi się z języka C)

2. Użycie klasy bibliotecznej string (częściej spotykane – w

języku c++ oraz językach pochodnych)

4

Tablica znakowa

Podstawy programowania w C++

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

5

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Ciąg znaków (łańcuch) to kolejno zapisane znaki w pamięci.

Dlatego można do jego zapisania użyć tablicy przechowującej

znaki (char).

Maksymalna długość

tablicy

Możliwe jest zainicjalizowanie takiej tablicy łańcuchem znaków

6

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Można też przypisywać znak do każdego pola:

W takim przypadku należy pamiętać o zakończenia listy znakiem

o kodzie zero ‘/0’

7

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Tablice znaków są kłopotliwe w obsłudze. Oto jeden z

problemów:

Błąd – nie można przypisać

łańcucha inne długości

Rozwiązaniem jest potraktowanie tablicy jako wskaźnika na

pierwszy element (char)

8

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wypisywanie tablicy

9

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wczytywanie tablicy

UWAGA - ta metoda wczyta tekst

tylko do pierwszej spacji

(obiekt cin traktuje spacje jako

separator)

10

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wczytywanie tablicy

Drugim sposobem, jaki można tu zastosować jest wykorzystanie

metody getline( ) obiektu cin. Funkcja ta jest ukierunkowana na

wczytywanie całych wierszy.

Bufor to wielkość tej tablicy (tablica może

przechować bufor - 1 znaków + znak końca

tablicy)

11

Tablica znaków

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Funkcja get( ) - może działać podobnie jak getline, z tą różnicą,

że znak nowego wiersza nie jest odrzucany tylko pozostaje w

kolejce wejściowej.

Oznacza to, że ponowne użycie get() nie pobierze ciągu

znaków, ponieważ zakłada, że nastąpił już koniec wiersza.

Aby zaradzić temu problemowi można użyć metody get( ) bez

argumentów. Pobiera ona następny znak, a wiec znak końca

linii zostanie usunięty i można ponownie wczytywać dane

12

Biblioteka string

Podstawy programowania w C++

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

13

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Znacznie więcej możliwości daje zestaw funkcji zawartych w

bibliotece String.

Aby z nich skorzystać należy dołączyć plik nagłówkowy #include <string>

14

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wczytywanie tekstu ze standardowego wejścia

Ten sam problem jaki wystąpił przy

wczytywaniu tablicy znaków –

wczytany zostanie tylko pierwszy

wyraz (do spacji)

Rozwiązanie:

15

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Sklejanie tekstów

16

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Sklejanie tekstów

Taka konstrukcja nie jest dozwolona.

Można ją zastąpić następującą:

17

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Czyszczenie zmiennej łańcuchowej

18

String – jako tablica

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

String może być traktowany jako tablica znaków.

Do określania długości strinag-a służy metoda lenght() obiektu

typu string.

19

String – jako tablica

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Przykład – wypisywanie łańcucha od tyłu

20

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wyszukiwanie znaku

21

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wyszukiwanie znaku

22

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wyszukiwanie znaku

Funkcja find() może przyjmować 2 argumenty.

1. Argument pierwszy to znak poszukiwany, natomiast

2. drugi określa miejsce od którego należy szukać znaku w tekście.

23

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Wyszukiwanie wszystkich wystąpień znaku

24

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Porównywanie łańcuchów

25

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Porównywanie łańcuchów

Łańcuchy można porównywać

„alfabetycznie” – czyli ściślej mówiąc,

po kodzie ASCII znaków.

26

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

substr() – kopiowanie fragmentu z łańcucha

od - do

27

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

replace() – zastępowanie części łańcucha

od – ile znaków - czym Zauważmy – liczba zastępowanych

znaków nie musi być taka sama jak

długość łańcucha który wklejamy.

28

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

insert () – wstawiane znaków do łańcucha

od –- co wstawiamy

29

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

erase () – usuwanie części łańcucha

od –- do

30

String

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

Zamiana znaku – małe litery <–> duże litery

I odwrotnie..

31

Tablica string-ów

Podstawy programowania w C++

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

32

Tablice string-ów

Łańcuch znaków

dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD

33

Literatura:

W prezentacji wykorzystano przykłady i fragmenty:

• Grębosz J. : Symfonia C++, Programowanie w języku C++ orientowane

obiektowo, Wydawnictwo Edition 2000.

• Jakubczyk K.: Turbo Pascal i Borland C++ Przykłady, Helion.

Warto zajrzeć także do:

• Sokół R. : Microsoft Visual Studio 2012 Programowanie w Ci C++, Helion.

• Kerninghan B. W., Ritchie D. M.: język ANSI C, Wydawnictwo Naukowo

Techniczne.

Dla bardziej zaawansowanych:

• Grębosz J. : Pasja C++, Wydawnictwo Edition 2000.

• Meyers S.: język C++ bardziej efektywnie, Wydawnictwo Naukowo Techniczne

dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD