C++ programavimo kalba

Similar documents
JAVA pagrindai Lek. Liudas Drejeris

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

Parengė ITMM Artūras Šakalys 1

std::string Quick Reference Card Last Revised: August 18, 2013 Copyright 2013 by Peter Chapin

Lecture 10. Command line arguments Character handling library void* String manipulation (copying, searching, etc.)

C programavimo kalba. 5 paskaita (Funkcijos, masyvai)

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

C++ programavimo kalba

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

C++ programavimo kalba

Ch. 10, The C++ string Class

Come to the TypeScript

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

Lecture 10. To use try, throw, and catch Constructors and destructors Standard exception hierarchy new failures

what are strings today: strings strings: output strings: declaring and initializing what are strings and why to use them reading: textbook chapter 8

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

El. pašto konfigūravimas

Dodatak D Standardna string klasa

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai

Redis Ma as, greitas, galingas. Specialiai VilniusPHP

C++ programavimo kalba

Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis

C++ programavimo kalba

CS11 Advanced C++ Lecture 2 Fall

Elektroninis.lt šakninių sertifikatų diegimas

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV

C++ programavimo kalba

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere

HTML dokumentai. Praktinės užduotys

Uždavinių sprendimas MATLAB aplinkoje

4 Strings and Streams. Testing.

Introduc)on to Arrays in C++ Review for Midterm #2 CS 16: Solving Problems with Computers I Lecture #12

A Lithuanian Verbalization Template for ORM conceptual models and rules

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė

Accessing String Elements

Discussion 1H Notes (Week 4, April 22) TA: Brian Choi Section Webpage:

K R I S T I N A L A P I N. I dalis. Matematikos ir statistikos studijų krypčių pirmo kurso studentams

Refinements to basic_string

Computer Programming

Buferio perpildymo klaida Įvadas, techniniai klausimai

CSCE 110 PROGRAMMING FUNDAMENTALS

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo)

Masyvai Javoje. Masyvai. Objektų talpyklos. Masyvo tipas. Deklaravimo pavyzdžiai. Deklaracija ir sukūrimas. Masyvo superklas - Object

double *pdouble1, *pdouble2, *pdouble3, double4;

CPS 6 Test 1 Fall 2000 Dr. Rodger String class

Programming with Haiku

KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę:

1. AJAX įvadas. AJAX principai:

KRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR C. II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS

Part 3: Function Pointers, Linked Lists and nd Arrays

PHP Lietuviškai. Turinys

Linked List using a Sentinel

CS 31 Review Sheet. Tau Beta Pi - Boelter Basics 2. 2 Working with Decimals 2. 4 Operators 3. 6 Constants 3.

C programos struktūra ir funkcijos

WWW aplikacijų saugumas 2

Unit 2: The string class

I. FFDATA STRUKTŪROS APRAŠYMAS

Objektiškai Orientuotas Programavimas su C++

Programavimo stilius ir programų internacionalizavimo mokymas

Module 7 b. -Namespaces -Exceptions handling

Class string and String Stream Processing Pearson Education, Inc. All rights reserved.

Išplė&mas. Esamo funkcionalumo papildymas naujomis galimybėmis

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI

Programavimas C kalba

Object oriented programming

Aleph skaitytojų duomenų bazė XML formato duomenų failas Failo formavimo taisyklės I dalis. Bendroji skaitytojo informacija...

Due Date: See Blackboard

CMSC 202 Midterm Exam 1 Fall 2015

More on Strings in C++ Arrays CS 16: Solving Problems with Computers I Lecture #11

18. Polymorphism. Object Oriented Programming: Pointers to base class // pointers to base class #include <iostream> using namespace std;

Register your product and get support at SHB9100. LT Vartotojo vadovas

Ch 6. Functions. Example: function calls function

CSCE 110 PROGRAMMING FUNDAMENTALS

File I/O and String Manipula3ons CS 16: Solving Problems with Computers I Lecture #11

Objektinis programavimas su C++ naudojant Qt 4

Overview. Part II: Containers and Algorithms. Overview. Overview

Paprastų lentelių kūrimas

Midterm Exam 5 April 20, 2015

CS31 Discussion 1E Spring 17 : week 08

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1.

Pažintis su C++ Builder

Vienlusčių įtaisų projektavimas. 1 paskaita

CS 240 Computer Programming 1 Arrays

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas)

Collections (Java) Collections Framework

16. ŠABLONAI. int abs( int ); float fabs( float ); double dabs( double ),...

2-3 PASKAITOS. Paprasčiausia programa:

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol.

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017

T u r b o P a s k a l i s 7.0

C++ programavimo kalba

Data Structures and Algorithms

C++ Final Exam 2017/2018

Trumpai-ilga istorija

Transcription:

C++ programavimo kalba Rodyklė this, C++ string klasė (9 paskaita)

Rodyklėthis Visos objekto funkcijos gali naudotis rodykle this, kuri rodo į patį objektą. Tokiu būdu kiekviena funkcija gali rasti objekto, kuriai ji priklauso adresą. Pavyzdys: class where { private: char c_array[10]; public: void address () { cout<< Mano objekto adresas = << this<<endl; ; void main() { where w1, w2, w3; w1.address (); w2.address (); w3.address (); 2

Rodyklėthis Rodyklės this pagalba galima pasiekti objekto duomenis. Pavyzdys: class what { private: int alfa; public: void tester () { this->alfa = 11; // tas pats kaip alfa = 11; cout<< this->alfa<<endl; // cout<< alfa<<endl; ; void main() { what w1; w1.tester (); 3

Rodyklėsthis naudojimas sureturn Praktikoje dažnai rodyklė this naudojama, kai reikia grąžinti reikšmes iš funkcijų ar perkrautų operatorių. Pavyzdys: class alfa { private: int data; public: alfa() { alfa(int d) { data = d; void main() { alfa a1(35); alfa a2, a3; a3=a2=a1; alfa& operator = (alfa& a) { data = a.data; cout<< Iškviestas priskirimo operatorius <<endl; return *this; ; 4

Rodyklėsthis naudojimo pavyzdys class Dummy { public: int is_itme ( Dummy param); { if (&param == this) return 1; else return 0; void main () { Dummy a; Dummy* b = &a; if ( b->is_itme(a) ) // tikrina ar argumentas tas pats objektas // tikrina ar argumentas tas pats objektas cout << Taip, &a yra priskirtas rodyklei *b"; 5

Rodyklėsthis naudojimo pavyzdys class Figura { protected: int ilgis, aukstis; public: void set_values (int a, int b) { ilgis = a; plotis = b; ; virtual int area (void) =0; void print_area (void) { cout << this->area() << endl; class Staciakampis: public Figura { public: int area (void) { return (width * height); ; class Trikampis: public Figura { public: int area (void) { return (width * height / 2); ; 6

Rodyklėsthis naudojimo pavyzdys int main () { Figura * ppoly1 = new Staciakampis; Figura * ppoly2 = new Trikampis; ppoly1->set_values (4,5); ppoly2->set_values (4,5); ppoly1->printarea(); // anksčiau buvo ppoly1->area(); ppoly2->printarea(); // anksčiau buvo ppoly2->area(); delete ppoly1; delete ppoly2; return 0; 7

Rodyklėsthis naudojimo pavyzdys void main () { char fi; const int N=5; Figura *ppoly[n]; for (int i = 0; i<n; i++) { cout<< "Ką įvedinėsite: T/S:"; cin>>fi; if ( fi=='t fi=='t ) { ppoly[i]= new Trikampis; ppoly[i]->set_values(1,2); else {ppoly[i]= new Staciakampis; ppoly[i]->set_values(3,4); for ( i = 0; i < N; i++) ppoly[i]->printarea(); for ( i = 0; i<n; i++) delete ppoly[i]; 8

C-string ir string klasė C++ darbui su eilutėmis galima naudoti C kalbos funkcijas iš bibliotekos string.h arba specialiai darbui su eilutėmis sukurta klase string. Taip užtikrinamas C/C++ suderinamumas. #include <string.h> arba #include<cstring> // C-string Klasę string naudoti darbui su eilutėmis yra patogiau, nes: nereikia rūpintis dinaminiu atminties valdymu didinant mažinant eilutes; leidžiama naudoti perkrautus operatorius; didesnis našumas ir saugumas; #include <string> // string klasė 9

string klasės konstruktoriai string klasė turi keletą konstruktorių, kurie leidžia įvairiai sukurti eilutę. Konstruktoriai: string (); string( const string &s); string( const string &s, size_t start, size_t n= npos); string( const char *cp); string( const char *cp, size_t start, size_t n= npos); string( char c); string( size_t n=npos, char c); // tuščia eilutė // kopijos konstruktorius // kopijos konstruktorius // eilutės priskyrimas // kopijuoje n simbolių // eilutė tai vienas simbolis // eilutė tai n simbolių Pavyzdžiai string s1; string s2 ( Batuotas katinas ); string s3( A ); string s4(5, B ); 10

Pavyzdys #include <string> void main() { string s1( Vyras ); string s2 = Moteris ; string s3; s3= s1; cout<< s3= << s3 << endl; s3 = SEIMA - tai + s1 ; s3 += ir + s2; cout << s3 << endl; s1.swap(s2); // apsikeičia s1 ir s2 cout<< s1 << arba << s2 << endl; 11

String objektų įvedimas/išvedimas Įvedimas/išvedimas atliekamas panašiai, kaip C-string. Operatoriai << ir >> pekraunami dirbant su string objektais. #include <string> void main() { string full_name, nickname, address; string greeting ( Labas ); cout<< Ivesk varda ir pavarde ; getline(cin, full_name); cout << greetings<< full_name<<endl; cout<< Ivesk nick a ; cin >> nickname; greetings += nickname; cout << greetings; cout<< Adresas. Uzbaigti su $ zenklu ); getline(cin, address, $ ); cout << Tavo adresas << adress<<endl; 12

Eilutės dydžio keitimas Metodai size() rodo eilutės ilgį (užpildytų simbolių skaičių); capacity() rodo eilutei išskirtą atminties dydį; length() size() sinonimas; max_size() rodo maksimalų leistiną eilutės simbolių skaičių; reserve() keičiamas eilutei išskirtos atminties dydis; resize() keičia (didina/mažina) eiltutės ilgį; empty() grąžina true, jei eilutė tuščia. string s6 = Mano batai buvo du ; cout<< s6.size()<<endl; s6.reserve(200); cout<<s6.capacity()<< endl; cout<< s6.max_size()<<endl; if (s6.empty() ) cout << Eilutė tuščia \n ; // empty() grąžina true, jei eilutė tuščia 13

string klasės paieškos metodai Metodas find() randa eilutę, simbolį, ar simbolių masyvą einamojoje eiltutėje ir grąžina jos poziciją (indekso numerį). Metodo prototipai: size_type find (const string & SearchString, size_type pos = 0) const; size_type find (const char * str, size_type position, size_type n) const; size_type find (const char * str, size_type position = 0) const; size_type find (char c, size_type position = 0) const; Metodas rfind() analogiškas find() tik paieška pradedama nuo eilutės galo. Kiti paieškos metodai: find_first_of() - randamas pirmas simbolis einamojoje eilutėje iš patiektų sąraše find_last_of() - randamas paskutinis simbolis einamojoje eilutėje iš patiektų sąraše find_first_not_of() - randamas pirmas simbolis einamojoje eilutėje, kuris neatitinka iš patiektų sąraše find_last_not_of() - randamas paskutinis simbolis einamojoje eilutėje, kuris neatitinka iš patiektų sąraše 14

string objekto paieška #include <string> void main() { string s1 = Mano batai buvo du, vienas dingo nerandu ; int n; if ( s1.find( batai ) >=0) // n= 5, nes numeracija pradedama nuo 0. cout<< batai rastas. Pozicija: <<n<<endl; n = s1.find_first_of( aov ); // n = 1 cout<< Pirmasis iš aov rastas pozicijoje: <<n<<endl; n = s1.find_first_not_of( Maov ); // n = 2 cout<< Pirmasis ne iš Maov rastas pozicijoje: <<n<<endl; 15

string klasės modifikavimo metodai Metodas instert() leidžia įtepti kitą eilutę, simbolių masyvą ar simbolį į einamą eiltutę. Jo prototipai: string& insert (size_type position, const string & str); string& insert (size_type position, const string & str, size_type pos2=0, n = npos); string& insert (size_type position, const char * str); string& insert (size_type position, size_type n, char c); Metodas replace() keičia einamojoje eilutėje simbolius į kitus simbolius arba eilutę. Metodo prototipai: string& replace (size_type position, size_type n, const string & str ); string& replace (size_type pos1, size_type n1, const string & str, size_type pos2, size_type n2); string& replace (size_type position, size_type n1, const char *s, size_type n2); string& replace (size_type position, size_type n1, const char *s); string& replace (size_type position, size_type n1, size_type n2, char c); 16

string objekto modifikavimas #include <string> void main() { string s1( Quick! Send for Count Greystone. ); string s2( Lord ); string s3( Don t ); s1.erase(0, 7); // ištrina Quick s1.replace(9, 5, s2); // pakeičia Count su Lord s1.replace(0,1, s ); // pakeičia S į s s1.insert(0, s3); // įterpia Don t pradžioje s1.erase(s1.size() -1, 1); // ištrina. s1.append (3,! ); // prideda gale!!! int x = s1.find ( ); while (x < s1.size() ) { s1.replace(x, 1, / ); x = s1.find( ); cout << s1<<endl; 17

string objektų kopijavimas ir trinimas Metodas copy() kopijuoja einamąją eilutę (arba jos dalį)įeilutę *c, nuo nurodytos pozicijos. Grąžinamas nukopijuotų simbolių skaičius. copy() prototipas: size_t copy (char *c, size_type n, size_type position) const; Pvz. s3.copy(str, 3, 5); // į eilutę str bus nukopijuoti 3 simboliai iš s3 pradedant nuo 5 pozicijos Metodas substr() grąžina einamosios eilutės dalį. Prototipas: string substr (size_type position, size_type n); Pvz. s4 = s3.substr(0, 3); // grąžinama eilutė iš 3 pirmųjų simbolių Metodas erase() trina simbolius einamojoje eilutėje. Prototipas: string erase (size_type position, size_type n); Pvz. s3.erase(0,3); // ištrina pirmus 3 simbolius 18

string objektų lyginimo metodai Klasė string turi visą eilę perkrautų operatorių skirtų objektų eilučių palyginimui. Jų prototipas: bool operator == ( const string & str1, const string & str2); bool operator == ( const string & str1, const char* str2); bool operator == ( const char* str1, const string & str2); Leidžiami tokie pekrauti operatoriai :!=, <, >, <=, >=. Palyginimui galima naudoti ir metodą compare(). Jo prototipai: int compare ( const string & str ); int compare ( size_t position, size_t n, const string & str ); Pvz. s1.compare(s2); Gražinamos reikšmės: 0, jei eilutes lygios 1,jei s1 didesnė nei s2-1,jei s2 didesnė nei s1 19

string objektų lyginimas #include <string> void main() { string aname = Jurgis ; string username; cout << Įveskite vardą ; cin >> username; if (username == aname) cout << Sveikas Jurgi\n ; else if (username < aname) cout << Tu esi prieš Jurgį\n ; else cout << Tu esi po Jurgio\n ; int n = username.compare(0, 2, aname, 0, 2); cout << Dvi pirmosios tavo vardo raidės ; if (n == 0 ) cout << sutampa ; else if (n < 0) cout << eina pries ; else cout<< eina po ; cout << aname.substr(0,2); cout<<endl; 20

Eilutės elementai #include <string> void main() {char array [80]; string word; cout << Įvesk žodį: ; cin >> word; int wlen = word.length(); cout<< Vienas simbolis: ; for (int j = 0; j < wlen; j++ ) cout << word.at(j); // cout << word[ j ]; galimas ir toks variantas word.copy(array, wlen, 0); array[wlen] = \0 ; cout << \narray: << array << endl; 21