Podstawy informatyki 2012/2013

Slides:



Advertisements
Podobne prezentacje
Wstęp do programowania
Advertisements

Podstawy informatyki Informatyka Stosowana
Podstawy informatyki Informatyka Stosowana Zajęcia nr 2
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Sieć jednokierunkowa wielowarstwowa
Algorytmy rastrowe Algorytmy konwersji Rysowanie odcinków
OOPC++ - wstêp, klasy1 Klasy Do struktury można dołączyć operacje działające na jej polach. struct date { int day, month, year; void set (int d, int m,
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
„Implementacja modułu tworzenia siatki do komponentowej biblioteki Metody Elementów Skończonych w języku C++” Autor: Piotr Opiekun Wydział Inżynierii Metali.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Programowanie obiektowe III rok EiT
Podstawy informatyki 2013/2014
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Informatyka I Wykład 10 WSKAŹNIKI I ADRESY Jerzy F. Kotowski.
Symulacje komputerowe Detekcja kolizji brył sztywnych Fizyka w modelowaniu i symulacjach komputerowych Jacek Matulewski (
Procedury i funkcje.
Kochański Karol Informatyka Stosowana, SIP WIMiIP
Politechnika Rzeszowska
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Algorytmy rekurencyjne - przykład
Jerzy F. Kotowski1 Informatyka I Wykład 15 PIERWSZE KROKI.
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
1 Zagadnienia na egzamin. 2 Język C podsumowanie Struktura programu w języku C Zmienne, Stałe Operacje arytmetyczne Operatory logiczne Priorytety operatorów.
1 struktura #include struct complex {double real; double img; } alfa; struct complex beta={2.0,2.0}, delta; struct complex multi (struct complex x, struct.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Pakiety numeryczne Wprowadzenie Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Optymalizacja
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Tablice: tworzenie, indeksowanie, wymiary Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Interpolacja i aproksymacja
Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Wielomiany Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Operatory rzutowania Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Obliczenia w Matlabie Tablice
Obliczenia inżynierskie w Matlabie
Statistics for Innovation: Data Visualization and Risk Analysis
Obliczenia w Matlabie Interpolacja i aproksymacja
Podstawy informatyki Operacje we/wy
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Obliczenia w Matlabie Analiza statystyczna
Zapis prezentacji:

Podstawy informatyki 2012/2013 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

Struktura wektor struct wektor { int n; double *W; void wypisz(); }; void wektor::wypisz() for (int i=0;i<n;i++) cout << W[i] << "\t"; cout << endl; } int main() { wektor X,Y; X.n=2;X.W=new double[2]; X.W[0]=1;X.W[1]=2; X.wypisz(); Y.n=2;Y.W=new double[2]; Y.W[0]=3;Y.W[1]=4; Y.wypisz(); Y=X; Y.W[1]=3; return 0; } 1 2 3 4 1 2 1 2 1 3 1 3

Co powinien robić operator przypisania? Sprawdzić czy nie kopiuje do samego siebie (A=A). Zlikwidować dotychczasowe wnętrze. Zbudować obiekt jeszcze raz na podobieństwo obiektu wzorcowego. Zwracać skopiowany albo wzorcowy obiekt (są takie same).

Operator = wektor &wektor::operator=(const wektor &A) { if (&A==this) return *this; delete [] W; n=A.n; W=new double[n]; for (int i=0;i<n;i++) W[i]=A.W[i]; return *this; }

Struktura wektor struct wektor { int n; double *W; void wypisz(); wektor &operator=(const wektor &A); }; void wektor::wypisz() for (int i=0;i<n;i++) cout << W[i] << "\t"; cout << endl; } int main() { wektor X; X.n=2; X.W=new double[2]; X.W[0]=1; X.W[1]=2; X.wypisz(); wektor Y=X; Y.wypisz(); Y.W[1]=3; return 0; } 1 2 1 2 1 2 1 3 1 3

Struktura wektor wektor Y=X; wywoływany jest nie operator przypisania tylko konstruktor kopiujący!!!

std::string Tablice znaków (C-stringi) nie są typem fundamentalnym. Nie ma więc w C++ operacji na C-stringach. Dlatego powstała klasa string, która zawiera funkcje przydatne przy pracy z ciągami znaków.

Definiowanie - konstruktory string(); string t1; string(const char *); string t2("AGH"); char c[]="WIMiIP”; string t3(c); string t4(&c[1]); string(const char *, size_type); string t5("WIMiIP AGH",6); string(size_type, char); string t6(10,'A'); string(const string &); string t7(t2); string(const string &, size_type, size_type); string t8(t4,1,2);

Definiowanie - konstruktory #include<string> … int main(){ string t1; string t2("AGH"); char c[]="WIMiIP"; string t3(c); string t4(&c[1]); string t5("WIMiIP AGH",6); string t6(8,'A'); string t7(t2); string t8(t4,1,2); } AGH WIMiIP IMiIP WIMiIP AAAAAAAA AGH Mi

Dodawanie string operator+(const string& lhs, const string& rhs); string operator+(const char* lhs, const string& rhs); string operator+(char lhs, const string& rhs); string operator+(const string& lhs, const char* rhs); string operator+(const string& lhs, char rhs);

cout << t4 << endl; return 0; } Operator + int main() { string t1, t2, t3, t4; t1="1 IS"; t2="WIMiIP"; t3="AGH"; t4=t1+"\n"+t2+"\n"+t3; cout << t4 << endl; return 0; } 1 IS WIMiIP AGH

Dodawanie z przypisaniem string& string::operator+=(const string& str); string& string::operator+=(const char* s); string& string::operator+=(char c);

Operator += int main() { string t; for (int i=static_cast<int>('A');i<=static_cast<int>('Z');i++) t+=static_cast<char>(i); cout << t << endl; return 0; } ABCDEFGHIJKLMNOPQRSTUVWXYZ

Długość size_type string::size(); size_type string::length(); int main() { string t="AGH"; cout << t << endl; cout << t.length() << endl; cout << t.size() << endl; return 0; } AGH 3

Pojemność size_type string::capacity(); size_type string::max_size(); bool string::empty(); string tekst; tekst.empty(); tekst.length(); tekst.capacity(); tekst.max_size(); true 15 4 294 967 294

Pojemność int main() { string tekst; cout <<"Dlugosc\tPojemnosc\n"; cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; for (int i=0; i<250; i++) tekst+='A'; if (tekst.length()==tekst.capacity()) } return 0; 0 15 16 31 32 47 48 70 71 105 106 157 158 235 236 352

Rezerwacja pamięci void string::reserve(size_type ile); int main() { string tekst; cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; tekst.reserve(100); if (tekst.empty()) cout << "tekst jest pusty" << endl; return 0; } 0 15 0 111 tekst jest pusty

Zmiana długości ABCDEFGH 8 ABC 3 ABC 10 void string::resize(size_type ile, char znak=‘\0’); int main() { string tekst("ABCDEFGH"); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(3); tekst.resize(10); return 0; } ABCDEFGH 8 ABC 3 ABC 10

Zmiana długości ABCDEFGH 8 ABC 3 ABC....... 10 int main() { string tekst("ABCDEFGH"); cout << tekst << "\t"; cout << tekst.length() << endl; tekst.resize(3); tekst.resize(10,'.'); return 0; } ABCDEFGH 8 ABC 3 ABC....... 10

reserve vs resize int main() { string tekst("ABCDEFGH"); cout << tekst.length() << "\t"; cout << tekst.capacity() << endl; tekst.resize(3); tekst.resize(10); return 0; } 8 15 3 15 10 15

[] oraz at char &string::operator[](size_type pozycja); char &string::at(size_type pozycja); int main() { string tekst("AGH"); cout << tekst[1] << endl; cout << tekst.at(1) << endl; return 0; } G

[] vs at string tekst("AGH"); cout << tekst[4] << endl; cout << tekst.at(4) << endl;

[] vs at Wartość spoza stringu #include <iostream> #include<string> #include<stdexcept> using namespace std; int main() { string tekst("AGH"); try cout << tekst.at(4) << endl; } catch(out_of_range) cout << "Wartosc spoza stringu" << endl; return 0; Wartość spoza stringu

substr string string::substr(size_type pozycja, size_type ile); int main() { string tekst1("AGH WIMiIP"), tekst2; tekst2=tekst1.substr(4,6); cout << tekst1 << endl; cout << tekst2 << endl; return 0; } AGH WIMiIP WIMiIP

Wyszukiwanie size_type string::find(const char* co, size_type odkad=0); size_type string::find(const string & co, size_type odkad=0);, size_type string::find(const char* co, size_type odkad, size_type dlugosc); size_type string::find(char co, size_type odkad=0);

find int main() { string tekst1("AGH WIMiIP AGH"), tekst2("AGH"); string::size_type poz1,poz2; cout << tekst1 << endl; cout << tekst2 << endl; poz1=tekst1.find(tekst2); cout << poz1 << endl; poz2=tekst1.find(tekst2,poz1+1); cout << poz2 << endl; return 0; } AGH WIMiIP AGH AGH 11

Co jeśli nie ma? int main() { string tekst1("AGH"), tekst2("UJ"); string::size_type poz; poz=tekst1.find(tekst2); if (poz==string::npos) cout<<"Nie znalazlem\n"; else cout<<"Znalazlem\n"; return 0; } Nie znalazłem

find int main() { string tekst1("ABCDEF"); string::size_type poz1; cout << tekst1 << endl; poz1=tekst1.find("BCE"); cout << poz1 << endl; return 0; } 4 294 967 295

find int main() { string tekst1("ABCDEF"); string::size_type poz1; cout << tekst1 << endl; poz1=tekst1.find("BCE",0,2); cout << poz1 << endl; return 0; } 1

Wyszukiwanie size_type string::rfind(const char* co, size_type odkad=npos); size_type string::rfind(const string & co, size_type odkad=npos);, size_type string::rfind(const char* co, size_type odkad, size_type dlugosc); size_type string::rfind(char co, size_type odkad=npos);

find vs rfind AGH WIMiIP AGH AGH 11 int main() { string tekst1("AGH WIMiIP AGH"), tekst2("AGH"); string::size_type poz_p,poz_k; poz_p=tekst1.find(tekst2); poz_k=tekst1.rfind(tekst2); cout << tekst1 << endl; cout << tekst2 << endl; cout << poz_p << endl; cout << poz_k << endl; return 0; } AGH WIMiIP AGH AGH 11

Wyszukiwanie size_type string::find_first_of( ); size_type string::find_last_of( ); size_type string::find_first_not_of( ); size_type string::find_last_not_of( ); Każda z funkcji przyjmuje takie same zestawy argumentów jak funkcje find i rfind!

find_..._... abcdefghij aeiouy 8 1 9 int main() { string tekst("abcdefghij"), samogloski("aeiouy"); string::size_type poz1,poz2,poz3,poz4; poz1=tekst.find_first_of(samogloski); poz2=tekst.find_last_of(samogloski); poz3=tekst.find_first_not_of(samogloski); poz4=tekst.find_last_not_of(samogloski); cout << tekst << endl; cout << samogloski << endl; cout << poz1 << endl << poz2 << endl; cout << poz3 << endl << poz4 << endl; return 0; } abcdefghij aeiouy 8 1 9

erase oraz clear AGH WIMiIP AGH AGH AGH AGH string &string::erase(size_type od=0, size_type do=npos); void string::clear(); int main() { string tekst("AGH WIMiIP AGH"); cout << tekst << endl; tekst.erase(4,6); tekst.erase(3); tekst.clear(); return 0; } AGH WIMiIP AGH AGH AGH AGH

Wstawianie string &string::insert(size_type gdzie, const string &co); string &string::insert(size_type gdzie, const string &co, size_type odkad, size_type ile); string &string::insert(size_type gdzie, const char *co); string &string::insert(size_type gdzie, const char *co, size_type ile); string &string::insert(size_type gdzie, size_type ile, char co);

insert int main() { string tekst("AGH WIMiIP AGH"); cout << tekst << endl; tekst.erase(4,6); tekst.insert(4,"WIMiIP"); return 0; } AGH WIMiIP AGH AGH AGH AGH WIMiIP AGH

Zastępowanie string &string::replace(size_type odkad, size_type ile, const string &czym); string &string::replace(size_type odkad, size_type ile, const string &czym, size_type odkad_brac, size_type ile_brac); string &string::replace(size_type odkad, size_type ile, const char *czym); string &string::replace(size_type odkad, size_type ile, const char *czym, size_type ile_brac); string &string::replace(size_type odkad, size_type ile, size_type ile_znakow, char znak);

replace int main() { string tekst("AGH WIMiIP"); cout << tekst << endl; tekst.replace(4,6,"WEAIiE"); return 0; } AGH WIMiIP AGH WEAIiE

replace int main() { string tekst("1234567890"); cout << tekst << endl; tekst.replace(4,4,"abc",0,2); return 0; } 1234567890 1234ab90

Zmiana string na C-string const char *string::c_str();

Operatory porównania bool operator==( const string& lhs, const string& rhs ); bool operator==( const char* lhs, const string& rhs ); bool operator==( const string& lhs, const char* rhs ); Analogicznie przeładowane są operatory: != < > >= <=

Porównywanie int main() { string t[2]={"IMiIP","EAIiE"}; cout << (t[0]<t[1]) << endl; cout << (t[0]>t[1]) << endl; return 0; } 1

Porównywanie int string::compare(const string& str) const; int string::compare(const char* s) const; int string::compare(size_type pos1, size_type n1, const string& str) const; int string::compare(size_type pos1, size_type n1, const char* s) const; int string::compare(size_type pos1, size_type n1, const string& str, size_type pos2, size_type n2) const; int string::compare(size_type pos1, size_type n1, const char* s, size_type n2) const;

Porównywanie int main() { string t[2]={"IMiIP","EAIiE"}; cout << (t[0].compare(t[1])) << endl; cout << (t[0].compare(t[0])) << endl; cout << (t[1].compare(t[0])) << endl; return 0; } 1 -1

Porównywanie int main() { string t1("AB CD"),t2("CD AB"); cout<<t1.compare(t2)<<endl; cout<<t1.compare(3,2,t2)<<endl; cout<<t1.compare(3,2,"CD")<<endl; cout<<t1.compare(3,2,t2,0,2)<<endl; cout<<t1.compare(3,2,"CD",1)<<endl; return 0; } -1 AB CD CD AB -1 CD CD AB CD CD 1 CD C

swap void swap(string& lhs, string& rhs); void string::swap(string& str); int main() { string t[2]={"IMiIP","EAIiE"}; cout<<t[0]<<"\t"<<t[1]<<endl; t[0].swap(t[1]); swap(t[0],t[1]); return 0; } IMiIP EAIiE EAIiE IMiIP IMiIP EAIiE

int main() { int a,b; cin>>a; cout<<a<<endl; cin>>b; cout<<b<<endl; return 0; } 1 2 1 2

int main() { string t1,t2; cin>>t1; cout<<t1<<endl; cin>>t2; cout<<t2<<endl; return 0; } AGH WIMiIP AGH WIMiIP

getline istream& getline(istream& is, string& str); int main() { string t; getline(cin,t); cout << t << endl; return 0; } AGH WIMiIP AGH WIMiIP

getline istream& getline(istream& is, string& str, char delim); int main() { string t; getline(cin,t,'.'); cout << t << endl; return 0; } Ala ma kota. To kot Ali. Ala ma kota

Iterator iterator string::begin(); iterator string::end(); int main() { string tekst("AGH"); string::iterator i,j; i=tekst.begin(); j=tekst.end(); cout<<j-i<<endl; return 0; } 3

Iterator int main() { string tekst("AGH"); string::iterator it; it=tekst.begin(); for (int j=0; j<tekst.length(); j++, it++) cout<<*it; cout<<endl; return 0; } AGH

Iterator int main() { string tekst("AGH"); string::iterator i,j; i=tekst.begin(); j=tekst.end(); while (i!=j) cout<<*i; i++; } cout<<endl; return 0; AGH

Iterator int main() { string tekst("0123456789"); string::iterator i,j; i=tekst.begin(); j=tekst.end(); while (i<j) cout<<*i; i+=2; } cout<<endl; return 0; 02468

Iterator do stałego obiektu int main() { const string tekst("0123456789"); string::const_iterator i; i=tekst.begin(); return 0; }

Stały iterator int main() { string tekst("0123456789"); const string::iterator i=tekst.begin(); return 0; }

Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl