Podstawy Programowania

Podobne dokumenty
dr inż. Jarosław Forenc

Zaawansowane programowanie w języku C++ Biblioteka standardowa

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

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

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

Podstawy programowania

Podstawy programowania w języku C++

Programowanie komputerowe. Zajęcia 5

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

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

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

Inicjacja tablicy jednowymiarowej

Programowanie Proceduralne

STL: Lekcja 1&2. Filozofia STL

Operatory na rzecz typu TString

Wstęp do programowania

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

Tablice deklaracja, reprezentacja wewnętrzna

Język C++ wykład VIII

PARADYGMATY PROGRAMOWANIA Wykład 3

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

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

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

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

Wstęp do programowania

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

Wstęp do programowania

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

Podstawy programowania 1

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

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

BIBLIOTEKA STANDARDOWA C++

Pliki wykład 2. Dorota Pylak

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

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

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

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

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

Programowanie w językach

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

Zajęcia 4 procedury i funkcje

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:

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

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

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

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

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

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

Wprowadzenie do programowania w języku C

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

C++ - [3-5] Pliki i strumienie w C++

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

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

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

Programowanie komputerowe. Zajęcia 4

Pliki wykład 2. Dorota Pylak

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

Projektowanie klas c.d. Projektowanie klas przykład

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Podstawy programowania w języku C++

Język C++ Różnice między C a C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

Łańcuchy znakowe string

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

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

Operacje na łańcuchach znaków

Programowanie komputerowe. Zajęcia 1

Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4];

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

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

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

9 Napisy. Napisy w stylu języka C

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Podstawy Programowania Podstawowa składnia języka C++

Informatyka 1. Przetwarzanie tekstów

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach

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

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

Część 4 życie programu

Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1

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

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

Języki i metody programowania I

Stałe i zmienne znakowe. Stała znakowa: znak

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Podstawy Programowania

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Podstawy Programowania

2 Przygotował: mgr inż. Maciej Lasota

Programowanie i struktury danych

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

Tablice, funkcje - wprowadzenie

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

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

MATERIAŁY DO ZAJĘĆ II

Transkrypt:

Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 1 / 15

Plan wykładu 1 Biblioteka cstring 2 Typ std::string 3 Funkcje bazowe dla typu string 4 Inne funkcje (składowe) dla typu string dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 2 / 15

Biblioteka cstring Wybrane elementy I char *strcpy(char *dest, const char *src); kopiuje tekst src do dest łącznie ze znakiem końca stringu, zwraca dest char *strncpy(char *dest, const char *src, size_t n); kopiuje co najwyżej n znaków z tekstu src do dest, jeśli src ma mniej niż n znaków, dopełnia dest znakami \0, zwraca dest char *strcat(char *dest, const char *src); dopisuje znaki tekstu src na koniec tekstu dest, zwraca dest char *strncat(char *dest, const char *src, size_t n); dopisuje co najwyżej n znaków tekstu src na koniec tekstu dest, zwraca dest dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 3 / 15

Biblioteka cstring Wybrane elementy II const char s1 [ ] = "Ala ma kotka" ; char s2 [ 2 0 ], s3 [ 2 0 ] ; strcpy ( s2, s1 ) ; cout << s2 << endl ; / / Ala ma k o t k a strncpy ( s3, s2, 7) ; cout << s3 << endl ; / / Ala ma strcat ( s3, "pieska" ) ; cout << s3 << endl ; / / Ala ma p i e s k a strncat ( s3, "!!!!!", 3 ) ; cout << s3 << endl ; / / Ala ma pieska!!! dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 4 / 15

Biblioteka cstring Wybrane elementy III int strcmp(const char *s1, const char *s2); porównuje tekst zawarty w s1 i s2, zwraca wartość: mniejszą od 0 dla s1 < s2 0 dla s1 == s2 większą od 0 dla s1 > s2 const char str1 = "Ala ma kota" ; const char str2 = "Ala ma kotka" ; cout << strcmp ( str1, str1 ) << endl ; / / 0 cout << strcmp ( str1, str2 ) << endl ; / / 1 cout << strcmp ( str2, str1 ) << endl ; / / 1 dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 5 / 15

Biblioteka cstring Wybrane elementy IV int strncmp(const char *s1, const char *s2, size_t n); analogiczna do strcmp, ale porównująca co najwyżej n znaków size_t strlen(const char *s); zwraca długość tekstu s const char str1 = "Ala ma kota" ; const char str2 = "Ala ma kotka" ; cout << strncmp ( str1, str1, 6) << endl ; / / 0 cout << strncmp ( str1, str2, 6) << endl ; / / 0 cout << strncmp ( str2, str1, 6) << endl ; / / 0 cout << strlen ( str1 ) << endl ; / / 11 cout << strlen ( str2 ) << endl ; / / 12 dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 6 / 15

Typ std::string Typ napisowy I typ std::string jest definiowany w bibliotece STL, aby go używać należy dołączyć plik nagłówkowy string typ std::string upodabnia korzystanie z napisów do typów podstawowych, między innymi pozwala na przypisanie i porównanie: std : : string s1 = "Ala ma kota" ; std : : string s2 = s1 ; s1 = "Ola i Jola" ; std : : cout << s1 << std : : endl << s2 ; if ( s1 == s2 ) std : : cout << "Napisy sa takie same" ; if ( s1!= s2 ) std : : cout << "Napisy sa rozne" ; if ( s1 < s2 ) std : : cout << "Napis pierwszy jest mniejszy" ; Równocześnie możliwe jest wykorzystanie typu std::string, w podobny sposób jak tablicy znakowej: dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 7 / 15

Typ std::string Typ napisowy II std : : string a = "Ala ma kota" ; a [ 3 ] = X ; std : : cout << a ; / / w y s w i e t l i : AlaXma k o t a Inne przydatne operatory dla typu std::string: std : : string a = "Ala", b = "kot", c ; c = a + b ; std : : cout << c ; / / w y s w i e t l i : Alakot a += b ; std : : cout << a ; / / w y s w i e t l i : Alakot dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 8 / 15

Typ std::string Funkcje (składowe) dla typu string I size_t size(); zwraca długość napisu (size_t length();) const char* c_str(); zwraca napis przechowywany w zmiennej typu string w postaci tablicy znakowej char * bool empty(); zwraca prawdę, jeśli napis jest pusty void clear(); czyści cały string, równoznaczne z erase(); string& erase(size_t pos = 0, size_t n = npos) usuwa n znaków począwszy od znaku na pozycji pos (npos jest interpretowane jako tak dużo, jak to możliwe ) dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 9 / 15

Typ std::string Funkcje (składowe) dla typu string II string& insert(size_t pos, const string& s); string& insert(size_t pos, const char* s); umieszcza napis s przed pozycją pos, w przypadku gdy pos większe od długości stringa funkcja powoduje błąd size_t find(const string& s, size_t pos = 0); size_t find(const char* s, size_t pos = 0); szuka napisu s w stringu począwszy od znaku pos, zwraca indeks pierwszego znaku znalezionego podciągu s, w przypadku gdy szukany podciąg nie zostanie znaleziony funkcja zwraca npos dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 10 / 15

Typ std::string Funkcje (składowe) dla typu string III string s1 = "Ala lubi kotka" ; cout << s1. size ( ) << endl ; string s2 ; if ( s1. empty ( ) == false ) cout << "s1 nie jest pusty" << endl ; if ( s2. empty ( ) == true ) cout << "s2 jest pusty" << endl ; / / c o n s t c h a r c s t r = s1 ; / / b l a d!!! const char cstr = s1. c_str ( ) ; s1. insert ( 1 2, "ecz" ) ; cout << s1 << endl ; / / Ala l u b i koteczka string s3 = "malego " ; s1. insert ( 9, s3 ) ; cout << s1 <<endl ; / / Ala l u b i malego koteczka dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 11 / 15

Typ std::string Funkcje (składowe) dla typu string IV string s1 = "Ala nie lubi koteczka" ; s1. erase ( 3, 4 ) ; cout << s1 << endl ; / / Ala l u b i koteczka s1. clear ( ) ; if ( s1. empty ( ) ) cout << "s1 zostal wyczyszczony " << endl ; string s2 = "Ala lubi kotka, a kotek lubi Ale." ; size_t i1 = s2. find ( "kot" ) ; string s3 = "kot" ; size_t i2 = s2. find ( s3, i1+1) ; cout << s2 << endl ; cout << " Pierwszy kot: " << i1 << " drugi kot: " << i2 << endl ; dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 12 / 15

Typ std::string Operacje wejścia wyjścia dla typu std::string I Dla typu std::string zdefiniowane są, analogicznie do typów wbudowanych, operatory << i >> Funkcja getline pobiera kolejne znaki ze strumienia wejściowego is i wstawia do łańcucha str, do momentu wystąpienia znaku delim: istream& getline (istream& is, string& str, char delim = \n ); gdzie is jest strumieniem wejściowym (np. cin), str zmienną typu std::string, do której zostanie wczytana zawartość strumienia do napotkania w nim znaku delim string s ; getline ( cin, s,, ) ; / / z klawiatury podajemy : Ala ma kotka, a kotek ma Ale! cout << s << endl ; / / Ala ma k o t k a getline ( cin, s,! ) ; cout << s << endl ; / / a k o t e k ma a l e dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 13 / 15

Funkcje bazowe dla typu string void swap (string& s1, string& s2); zamienia zawartość obiektów łańcuchowych s1 i s2 istream& getline (istream& is, string& str, char delim); istream& getline (istream& is, string& str); pobiera kolejne znaki ze strumienia wejściowego is i wstawia do łańcucha str, do momentu wystąpienia znaku delim. Pobieranie zatrzymuje się również po napotkaniu jakiegokolwiek błędu podczas operacji wejścia: eofbit osiągnięto koniec wczytywanego pliku failbit wystąpił błąd logiczny w operacjach I/O badbit wystąpił błąd zapisu/odczytu w operacjach I/O dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 14 / 15

Inne funkcje (składowe) dla typu string Inne funkcje składowe typu string, które warto poznać: string& assign (const string& str); przypisuje nową zawartość do łańcucha zastępując dotychczasową treść, size_t find_first_of (const string& str, size_t pos = 0) const; przeszukuje napis i zwraca pozycję pierwszego wystąpienia szukanego ciągu znaków, size_t find_last_of (const string& str, size_t pos = npos) const; string substr (size_t pos = 0, size_t n = npos) const; wyciąga podciąg znaków poszukiwany w danym napisie dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 15 / 15