dr inż. Jarosław Forenc

Podobne dokumenty
Podstawy Programowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Spis treści OPERACJE NA TEKSTACH W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF31

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

ŁAŃCUCHY W JĘZYKU C/C++

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

STL: Lekcja 1&2. Filozofia STL

Programowanie komputerowe. Zajęcia 5

Operatory na rzecz typu TString

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Języki programowania obiektowego Nieobiektowe elementy języka C++

Podstawy programowania w języku C++

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 7- sem.iii. M. Czyżak

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania

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

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 11. Elektrotechnika, semestr II rok akademicki 2008/2009

Język C++ wykład VIII

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

PARADYGMATY PROGRAMOWANIA Wykład 3

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Inicjacja tablicy jednowymiarowej

Wstęp do programowania

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie Proceduralne

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE, ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Programowanie obiektowe i C++ dla matematyków

JĘZYK C - TABLICE DWUWYMIAROWE,

Programowanie i struktury danych

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy programowania skrót z wykładów:

Wstęp do programowania

Wstęp do programowania

Projektowanie klas c.d. Projektowanie klas przykład

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 1 / Jerzy Grębosz. Wyd. 3 C - popr. Kraków, 2015.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Programowanie w językach

Operacje wejścia/wyjścia (odsłona druga) - pliki

dr inż. Jarosław Forenc

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie w języku C++

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

BIBLIOTEKA STANDARDOWA C++

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Tablice deklaracja, reprezentacja wewnętrzna

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Operacje wejścia/wyjścia odsłona pierwsza

Łańcuchy znakowe string

Wstęp do Programowania 2

Opus Magnum C++11 : programowanie w języku C++. T. 2 / Jerzy Grębosz. Gliwice, cop Spis treści

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

Tablice, funkcje - wprowadzenie

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

#include <iostream> #include <string> using namespace std; auto main() -> int { string s1; // pusty string. Klasa std::string

Wstęp do programowania

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

Pliki wykład 2. Dorota Pylak

Podstawy programowania 1

PARADYGMATY PROGRAMOWANIA Wykład 2

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Wstęp do programowania. Wykład 1

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Zajęcia 4 procedury i funkcje

Zadania z podstaw programowania obiektowego

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Wstęp do programowania

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Programowanie komputerowe. Zajęcia 1

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Wstęp do Programowania 2

Jak Windows zarządza pamięcią?

Transkrypt:

Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Pracownia nr 9 (20.01.2012) dr inż. Jarosław Forenc

Rok akademicki 2011/2012, Pracownia nr 9 2/34 Pracownia nr 9 Łańcuchy znaków w C Plik nagłówkowy string.h Klasa std::string definiowanie obiektów funkcja składowe funkcje globalne

Rok akademicki 2011/2012, Pracownia nr 9 3/34 Łańcuchy znaków w C Łańcuch znaków (ciąg znaków, napis, C-string) - ciąg złożony z zera lub większej liczby znaków zawartych między znakami cudzysłowu "Pies" Implementacja - tablica, której elementami są pojedyncze znaki (typ char) znaki kody ASCII

Rok akademicki 2011/2012, Pracownia nr 9 4/34 Łańcuchy znaków w C Deklaracja zmiennej przechowującej łańcuch znaków: char nazwa_zmiennej[rozmiar]; Przykład: chat txt[10]; Inicjalizacja łańcucha znaków: char txt1[10] = "Pies"; char txt2[10] = {'P','i','e','s'}; char txt3[10] = {80,105,101,115}; char txt4[] = "Pies"; char *txt5 = "Pies";

Rok akademicki 2011/2012, Pracownia nr 9 5/34 Łańcuchy znaków w C - string.h strlen() size_t strlen(const char *s); Zwraca długość łańcucha znaków, nie uwzględnia znaku \0 strcpy() char *strcpy(char *s1, const char *s2); Kopiuje łańcuch s2 do łańcucha s1 strcat() char *strcat(char *s1, const char *s2); Dołącza do łańcucha s1 łańcuch s2

Rok akademicki 2011/2012, Pracownia nr 9 6/34 Łańcuchy znaków w C - string.h strchr() char *strchr(const char *s, int c); Szuka w łańcuchu s znaku c strcmp() int strcmp(const char *s1, const char *s2); Porównuje łańcuchy s1 i s2 z rozróżnianiem wielkości liter strcmpi() int strcmpi(const char *s1, const char *s2); Porównuje łańcuchy s1 i s2 bez rozróżniania wielkości liter

Rok akademicki 2011/2012, Pracownia nr 9 7/34 Łańcuchy znaków w C - string.h strlwr() char *strlwr(char *s); Zamienia w łańcuchu s duże litery na małe strupr() char *strupr(char *s); Zamienia w łańcuchu s litery małe na duże strrev() char *strrev(char *s); Odwraca kolejność znaków w łańcuchu s

Rok akademicki 2011/2012, Pracownia nr 9 8/34 Klasa std::string Klasa przeznaczona do wykonywania operacji na tekstach Informacje: J. Grębosz: Symfonia C++ standard. Edition 2000, 2005. Rozdział 11, str. 503-614 http://www.cplusplus.com/reference/string/string/ (ang.) Dołączenie pliku nagłówkowego (bez.h na końcu) #include <string>

Rok akademicki 2011/2012, Pracownia nr 9 9/34 Klasa std::string Klasa jest częścią biblioteki standardowej, jej nazwa jest zadeklarowana w przestrzeni nazw std Dodając using namespace std; nie musimy poprzedzać identyfikatorów kwalifikatorem zakresu std:: #include <iostream> #include <string> using namespace std;...

Rok akademicki 2011/2012, Pracownia nr 9 10/34 Klasa std::string

Rok akademicki 2011/2012, Pracownia nr 9 11/34 Klasa std::string - definiowanie obiektów Standardowa definicja obiektu: nazwa_klasy nazwa_obiektu(argumenty konstruktora); Przykłady: string s1; string s2("tekst"); string s3("tekst",3); string s4(10,'@'); cout << s1 << " " << s2 << " "; cout << s3 << " " << s4 << endl; // pusty string // inicjalizacja C-stringiem // inicjalizacja fragmentem C-stringu // inicjalizacja 10 znakami @ Tekst Tek @@@@@@@@@@

Rok akademicki 2011/2012, Pracownia nr 9 12/34 Klasa std::string - definiowanie obiektów Inne przykłady: char tab[10] = "Tekst"; string s1(tab); string s2(s1); string s3(s1,2,4); string s4(tab,1,3); string s5 = "Tekst"; // inicjalizacja tablicą znaków // inicjalizacja innym obiektem klasy string // inicjalizacja fragmentem obiektu s1 // inicjalizacja fragmentem tablicy tab // inicjalizacja C-stringiem cout << s1 << " " << s2 << " " << s3 << " "; cout << s4 << " " << s5 << endl; Tekst Tekst kst eks Tekst

Rok akademicki 2011/2012, Pracownia nr 9 13/34 size() length() size_t size(); size_t length(); Zwraca liczbę znaków w obiekcie string str("12345678"); size_t d1 = str.size(); size_t d2 = str.length(); cout << "Dlugosc = " << d1 << " " << d2 << endl; Dlugosc = 8 8

Rok akademicki 2011/2012, Pracownia nr 9 14/34 max_size() size_t max_size(); Zwraca maksymalną liczbę znaków, które mogą być przechowywane w obiekcie string str; cout << str.max_size() << endl; 4294967294

Rok akademicki 2011/2012, Pracownia nr 9 15/34 resize() void resize(size_t n, char c = '\0'); Zmienia długość tekstu przechowywanego w obiekcie jeśli n < size(), to pozostawia tylko n pierwszych znaków jeśli n > size(), to zapisuje c jako dodatkowe znaki string s("123456789"); cout << s << endl; s.resize(5); cout << s << endl; s.resize(15,'*'); cout << s << endl; 123456789 12345 12345**********

Rok akademicki 2011/2012, Pracownia nr 9 16/34 empty() bool empty(); Zwraca wartość true jeśli obiekt jest pusty 0-><clear() void clear(); Usuwa tekst przechowywany w obiekcie string str("12345678"); if (!str.empty()) str.clear(); cout << str.size() << "->" << str << "<-" << endl;

Rok akademicki 2011/2012, Pracownia nr 9 17/34 at() operator[] char & at(size_t pos); char & operator [](size_t pos); Umożliwia odwoływanie się do wybranych znaków w tekście, [] - bez kontroli zakresu, at() - z kontrolą zakresu (błąd powoduje rzucenie wyjątku out_of_range) string str("napis testowy"); for (int i=0; i<str.size(); i++) cout << str.at(i); for (int i=0; i<str.size(); i++) cout << str[i]; Napis testowynapis testowy

Rok akademicki 2011/2012, Pracownia nr 9 18/34 operator += string & operator +=(const string &str); string & operator +=(const char *s); string & operator +=(char c); Dodaje na końcu istniejącego tekstu dodatkowy tekst z obiektu str, tekst z tablicy s (do znaku \0) lub znak c string str("dane: "), imie("jan "); str += imie; str += "Kowalski"; str += '\n'; cout << str; Dane: Jan Kowalski

Rok akademicki 2011/2012, Pracownia nr 9 19/34 append() string & append(const string & str); string & append(const char * s); Dodaje na końcu istniejącego tekstu dodatkowy tekst z obiektu str lub tekst znajdujący się w tablicy s (do znaku \0) append() string & append(const string & str, size_t pos, size_t n); Dodaje na końcu istniejącego tekstu n znaków z obiektu str począwszy od pozycji pos

Rok akademicki 2011/2012, Pracownia nr 9 20/34 append() string & append(const char* s, size_t n); Dodaje na końcu istniejącego tekstu n pierwszych znaków z tablicy s append() string & append(size_t n, char c); Dodaje na końcu istniejącego tekstu n takich samych znaków c

Rok akademicki 2011/2012, Pracownia nr 9 21/34 Przykład (append): string s1("abc"), s2("123"); char s[10]="abcdef"; cout << s1 << endl; s1.append(s2); cout << s1 << endl; s1.append(s,4); cout << s1 << endl; s1.append(3,'@'); cout << s1 << endl; abc abc123 abc123abcd abc123abcd@@@

Rok akademicki 2011/2012, Pracownia nr 9 22/34 assign() string & assign(const string & str); string & assign(const char * s); string & assign(const string & str, size_t pos, size_t n); string & assign(const char * s, size_t n); string & assign(size_t n, char c); Zastępuje istniejący tekst nowym tekstem Znaczenie parametrów jest takie samo jak dla append()

Rok akademicki 2011/2012, Pracownia nr 9 23/34 Przykład (assign): string s1("abc"), s2("123"); char s[10]="abcdef"; cout << s1 << endl; s1.assign(s2); cout << s1 << endl; s1.assign(s,4); cout << s1 << endl; s1.assign(3,'@'); cout << s1 << endl; abc 123 ABCD @@@

Rok akademicki 2011/2012, Pracownia nr 9 24/34 insert() string & insert(size_t pos1, const string & str); Z obiektu str kopiuje cały tekst i wstawia począwszy od miejsca określonego przez pos1 insert() string & insert(size_t pos1, const string & str, size_t pos2, size_t n); Z obiektu str kopiuje n znaków począwszy od miejsca określonego przez pos2 i wstawia począwszy od miejsca określonego przez pos1

Rok akademicki 2011/2012, Pracownia nr 9 25/34 Przykład (insert): string str1("abcdefghij"), str2("123456789"); string str3("abcdefghij"); cout << str1 << endl; str1.insert(4,str2); cout << str1 << endl; cout << str3 << endl; str3.insert(4,str2,3,4); cout << str3 << endl; ABCDEFGHIJ ABCD123456789EFGHIJ ABCDEFGHIJ ABCD4567EFGHIJ

Rok akademicki 2011/2012, Pracownia nr 9 26/34 insert() string & insert(size_t pos1, const char *s, size_t n); Z tablicy znaków s kopiuje n pierwszych znaków i wstawia począwszy od miejsca określonego przez pos1 insert() string & insert(size_t pos1, const char *s); Kopiuje wszystkie znaki z tablicy s i wstawia począwszy od miejsca określonego przez pos1

Rok akademicki 2011/2012, Pracownia nr 9 27/34 insert() string & insert(size_t pos1, size_t n, char c); Wstawia n znaków c począwszy od miejsca określonego przez pos1

Rok akademicki 2011/2012, Pracownia nr 9 28/34 erase() string & erase(size_t pos=0, size_t n=npos); Kasuje n znaków począwszy od pozycji pos npos - oznacza wszystkie znaki do końca string str("123456789"); str.erase(3,2); cout << str << endl; str.erase(4); cout << str << endl; str.erase(); cout << str << endl; 1236789 1236

Rok akademicki 2011/2012, Pracownia nr 9 29/34 swap() void swap(string & str); Wymienia tekst z obiektem str string s1("12345"), s2("abc"); cout << "s1: " << s1 << " s2: " << s2 << endl; s1.swap(s2); cout << "s1: " << s1 << " s2: " << s2 << endl; s1: 12345 s2: ABC s1: ABC s2: 12345

Rok akademicki 2011/2012, Pracownia nr 9 30/34 c_str() const char* c_str() const; Tworzy tablicę znaków (C-string) zakończoną znakiem \0 zawierającą tekst przechowywany w obiekcie i zwraca wskaźnik do tej tablicy char *s; string str("abc 123"); s = new char[str.size()+1]; strcpy(s,str.c_str()); printf("%s\n",s); ABC 123

Rok akademicki 2011/2012, Pracownia nr 9 31/34 find() size_t find(const string& str, size_t pos = 0); size_t find(const char* s, size_t pos, size_t n); size_t find(const char* s, size_t pos = 0); size_t find(char c, size_t pos = 0); Szuka w stringu zawartości innego stringu (str), tablicy znaków (s) lub pojedynczego znaku (c) Zwraca pozycję pierwszego znaku zawierającego poszukiwaną zawartość pos określa pozycję, od której rozpoczyna się poszukiwanie, zaś n - liczbę poszukiwanych znaków Zwraca npos, gdy zawartość nie została znaleziona

Rok akademicki 2011/2012, Pracownia nr 9 32/34 Klasa std::string - funkcje globalne getline() istream& getline(istream& is, string& str, char delim); istream& getline(istream& is, string& str) Czyta znaki ze strumienia is do napotkania znaku delim lub \n, a następnie zapisuje je w obiekcie str string str; cout << "podaj tekst: "; getline(cin,str); cout << "wczytany tekst: " << str << endl;

Rok akademicki 2011/2012, Pracownia nr 9 33/34 Klasa std::string - funkcje globalne operator+ string + string char* + string string + char * char + string string + char Zwraca string zawierający tekst będący połączeniem dodawanych argumentów string str, str1("abc"), str2("123"); str = str1 + str2; str = str2 + "DEF"; cout << str << endl; cout << str << endl; ABC123 123DEF

Rok akademicki 2011/2012, Pracownia nr 9 34/34 Klasa std::string - funkcje globalne operatory string!= string string == string relacyjne string < string string <= string string > string string >= string Porównuje dwa stringi zwracając 1 jeśli warunek jest prawdziwy i 0 jeśli warunek nie jest prawdziwy