Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów."

Transkrypt

1 Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów. Przykład: dodawanie elementów danych 4 funkcje do różnych typów 1

2 // Przeciazenie funkcji #include<iostream> #include<string> using namespace std; int Dodaj(int a,int b); double Dodaj(double a,double b); char Dodaj(char a,char b); string Dodaj(string a,string b); void main() cout<<"int\t"<<dodaj(2,3)<<endl; cout<<"double\t"<<dodaj(2.5,3.6)<<endl; cout<<"char\t"<<dodaj('a','b')<<endl; cout<<"string\t"<<dodaj("abcd","efgh")<<endl; system("pause"); return; 2

3 int Dodaj(int a,int b) return a+b; double Dodaj(double a,double b) return a+b; char Dodaj(char a,char b) return a+b; string Dodaj(string a,string b) return a+b; Int 5 Double 6.1 Char â String abcdefgh Press any key to continue... 3

4 Szablony funkcji w C++ Mechanizm pozwalający na napisanie przepisu, na podstawie którego kompilator będzie tworzył funkcje stosując różne typy parametrów. template<class T> T Dodaj(T x, T len) template<typename T> T Dodaj(T x, T len) ciało funkcji return.; 4

5 // Szablony funkcji #include<iostream> #include<string> using namespace std; template<typename T> T Dodaj(T a,t b) T wynik=a+b; return wynik; void main() cout<<"int\t"<<dodaj(2,3)<<endl; cout<<"double\t"<<dodaj(2.5,3.6)<<endl; char a1='a', b1='b'; cout<<"char\t"<<dodaj(a1,b1)<<endl; //cout<<"char\t"<<dodaj('a','b')<<endl; 5

6 string a2="abcd",b2="efgh"; cout<<"string\t"<<dodaj(a2,b2)<<endl; //cout<<"string\t"<<dodaj("abcd","efgh")<<endl; system("pause"); return; Int 5 Double 6.1 Char â String abcdefgh Press any key to continue... 6

7 //szablon max elementu tablicy #include<iostream> using namespace std; // Szablon funkcji max template<typename T> T max(t x[], int rozmiar) T max = x[0]; for (int i = 1; i < rozmiar; i++) if (max < x[i]) max = x[i]; return max; int main() int Tablica_int[] = 3, 21, 34, 15; long Tablica_long[]=23, 245, 123, 1, 234, 2345; 7

8 double Tablica_double[]=23.0, 1.4, 2.5, 345.0, 12.3, 2.51; char Tablica_char[]="abdgrcf"; int rozmiar_int=sizeof Tablica_int/sizeof Tablica_int[0]; int rozmiar_long=sizeof Tablica_long/sizeof Tablica_long[2]; int rozmiar_double=sizeof Tablica_double/sizeof Tablica_double[0]; int rozmiar_char=sizeof Tablica_char/sizeof Tablica_char[0]; cout<< max(tablica_int, rozmiar_int)<<endl; cout<< max(tablica_long, rozmiar_long)<<endl; cout<< max(tablica_double, rozmiar_double)<<endl; cout<< max(tablica_char, rozmiar_char)<<endl; system("pause"); return 0; 8

9 r Press any key to continue... 9

10 Makro Preprocesor jednostka kompilatora przetwarzająca kod przed jego rzeczywistą kompilacją. #define do tworzenia funkcji makro preprocesor podstawi ciąg tekstowy w miejscu, gdzie wystąpi argument #define #define MAX(x,y) ((x)>(y)? (x) : (y)) #define MIN(x,y) ((x)<(y)? (x) : (y)) 10

11 // Rozwijanie makr #include<iostream> using namespace std; #define CUBE(a) ((a)*(a)*(a)) #define THREE(a) a*a*a int main() long x = 5; long y = CUBE(x); long z = THREE(x); cout <<"y: "<<y<<endl; cout <<"z: "<<z<<endl; long a = 5, b = 7; y = CUBE(a+b); z = THREE(a+b); cout <<"y: "<<y<<endl; cout <<"z: "<<z<<endl; system("pause"); return 0; y: 125 z: 125 y: 1728 z: 82 Aby kontynuować, naciśnij dowolny klawisz... 11

12 Problemy z makro: 1. Makro musi się zmieścić w 1 linii 2. Jest rozwijane w każdym miejscu, gdzie jest wywoływane 3. Kod makra nie pojawia się w kodzie źródłowym trudne debugowanie 4. Makra nie są bezpieczne ze względu na typy bezpieczniej jest używać funkcji 12

13 Struktura unia klasa Są to definicje nowego typu danych Unia kontener do przechowywania danych Struktura zmienne składowe i funkcje składowe dostęp public Klasa - zmienne składowe i funkcje składowe dostęp private 13

14 // Unia #include<iostream> using namespace std; union Zmienna char oznaczenie; double wartosc; ; void main() Zmienna zmienna_1='a'; cout<<"zmienna_1\n"; cout<<"oznaczenie = "<<zmienna_1.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_1.wartosc<<endl; Zmienna zmienna_2=6.5; cout<<"zmienna_2\n"; cout<<"oznaczenie = "<<zmienna_2.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_2.wartosc<<endl; zmienna_1.wartosc=3.5; zmienna_2.oznaczenie='b'; 14

15 cout<<"zmienna_1\n"; cout<<"oznaczenie = "<<zmienna_1.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_1.wartosc<<endl; cout<<"zmienna_2\n"; cout<<"oznaczenie = "<<zmienna_2.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_2.wartosc<<endl; system ("pause"); return; zmienna_1 Oznaczenie = a Wartosc = e-322 zmienna_2 Oznaczenie = Wartosc = e-323 zmienna_1 Oznaczenie = Wartosc = 3.5 zmienna_2 Oznaczenie = b Wartosc = e-322 Press any key to continue... 15

16 Struktura struct KSIAZKA C - definicja nowego typu danych char Tytul[80]; char Autor [80]; char Wydawca [80]; int Rok_wydania; ; Ograniczenia: 1. Nie ma możliwości umieszczenia zmiennej o tej samej nazwie (może być wskaźnik) 2. Ze strukturami nie działają wbudowane operatory KSIAZKA Powiesc;//Deklaracja zmiennej Powiesc typu //KSIAZKA 16

17 KSIAZKA Podrecznik = C++ dla kazdego ; J. Liberty ; Helion ; 2009; ; Powiesc.Rok_wydania=2011;// Dostęp do zmiennej 17

18 // Struktura #include<iostream> #include<string> using namespace std; struct Ksiazka string Autor; string Tytul; double rok_wydania; ; void Wyswietl() cout<<"autor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 18

19 void main() Ksiazka ksiazka_1="h. Sienkiewicz","Potop",2010; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; cout<<ksiazka_1.autor<<endl; cout<<ksiazka_1.tytul<<endl; cout<<ksiazka_1.rok_wydania<<endl; cout<<"zastosowanie funkcji \n"; ksiazka_1.wyswietl(); Ksiazka ksiazka_2; ksiazka_2.autor="w. Reymont"; ksiazka_2.tytul="chlopi"; ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 19

20 Rozmiar obiektu = 72 ksiazka_1 H. Sienkiewicz Potop 2010 Zastosowanie funkcji Autor : H. Sienkiewicz Tytul : Potop Rok : 2010 Autor : W. Reymont Tytul : Chlopi Rok : 2012 Rozmiar obiektu = 72 Press any key to continue... 20

21 // Klasa #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; ; void Wyswietl() cout<<"autor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 21

22 void main() Ksiazka ksiazka_1="h. Sienkiewicz","Potop",2010; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; cout<<ksiazka_1.autor<<endl; cout<<ksiazka_1.tytul<<endl; cout<<ksiazka_1.rok_wydania<<endl; cout<<"zastosowanie funkcji \n"; ksiazka_1.wyswietl(); Ksiazka ksiazka_2; ksiazka_2.autor="w. Reymont"; ksiazka_2.tytul="chlopi"; ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 22

23 1>klasa.cpp 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(23) : error C2552: 'ksiazka_1' : non-aggregates cannot be initialized with initializer list 1> 'Ksiazka' : Types with private or protected data members are not aggregate 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(26) : error C2248: 'Ksiazka::Autor' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(9) : see declaration of 'Ksiazka::Autor' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(27) : error C2248: 'Ksiazka::Tytul' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(10) : see declaration of 'Ksiazka::Tytul' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(28) : error C2248: 'Ksiazka::rok_wydania' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(11) : see declaration of 'Ksiazka::rok_wydania' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 23

24 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(30) : error C2248: 'Ksiazka::Wyswietl' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(13) : see declaration of 'Ksiazka::Wyswietl' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(32) : error C2248: 'Ksiazka::Autor' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(9) : see declaration of 'Ksiazka::Autor' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(33) : error C2248: 'Ksiazka::Tytul' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(10) : see declaration of 'Ksiazka::Tytul' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(34) : error C2248: 'Ksiazka::rok_wydania' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(11) : see declaration of 'Ksiazka::rok_wydania' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(35) : error C2248: 'Ksiazka::Wyswietl' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(13) : see declaration of 'Ksiazka::Wyswietl' 24

25 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>Build log was saved at "file://e:\praca\dydaktyka\programowanie obiektowe\visual Project\Wykład 2016\W_03_03\W_03_03\Debug\BuildLog.htm" 1>W_03_03-9 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 25

26 // Klasa #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl() cout<<"\nautor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 26

27 void Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; ; void main() Ksiazka ksiazka_1; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; ksiazka_1.wpisz(); ksiazka_1.wyswietl(); 27

28 Ksiazka ksiazka_2; //ksiazka_2.autor="w. Reymont"; //ksiazka_2.tytul="chlopi"; //ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 28

29 Rozmiar obiektu = 72 ksiazka_1 Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2009 Autor : Sienkiewicz Tytul : Potop Rok : 2009 Autor : Tytul : Rok : e+061 Rozmiar obiektu = 72 Press any key to continue... 29

30 30

31 // Klasa umiejscowienie funkcji #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(); void Wpisz(); ; void Ksiazka::Wyswietl() cout<<"\nautor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 31

32 void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; ksiazka_1.wpisz(); ksiazka_1.wyswietl(); system ("pause"); return; 32

33 Rozmiar obiektu = 72 ksiazka_1 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 1999 Autor : Reymont Tytul : Chlopi Rok : 1999 Press any key to continue... 33

34 // Klasa argumenty funkcji #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka ks_x); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka ks_x) cout<<"\nautor :\t"<<ks_x.autor<<endl; cout<<"tytul :\t"<<ks_x.tytul<<endl; cout<<"rok :\t"<<ks_x.rok_wydania<<endl; 34

35 void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; ksiazka_1.wpisz(); ksiazka_2.wpisz(); ksiazka_1.wyswietl(ksiazka_1); ksiazka_1.wyswietl(ksiazka_2); system ("pause"); return; 35

36 Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2010 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2009 Autor : Sienkiewicz Tytul : Potop Rok : 2010 Autor : Reymont Tytul : Chlopi Rok : 2009 Press any key to continue... 36

37 // Wywoływanie funkcji przez wskaźnik #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka* wsk); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka* wsk) cout<<"\nautor :\t"<<wsk->autor<<endl; cout<<"tytul :\t"<<wsk->tytul<<endl; cout<<"rok :\t"<<wsk->rok_wydania<<endl; 37

38 void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; Ksiazka* ptr; ksiazka_1.wpisz(); ksiazka_2.wpisz(); ptr=&ksiazka_1; ksiazka_1.wyswietl(ptr); ptr=&ksiazka_2; ksiazka_1.wyswietl(ptr); system ("pause"); return; 38

39 Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2007 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2000 Autor : Sienkiewicz Tytul : Potop Rok : 2007 Autor : Reymont Tytul : Chlopi Rok : 2000 Press any key to continue... 39

40 // Wywoływanie funkcji przez referencję #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka& ref); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka& ref) cout<<"\nautor :\t"<<ref.autor<<endl; cout<<"tytul :\t"<<ref.tytul<<endl; cout<<"rok :\t"<<ref.rok_wydania<<endl; 40

41 void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; ksiazka_1.wpisz(); ksiazka_2.wpisz(); Ksiazka& ref_k=ksiazka_1; ksiazka_1.wyswietl(ref_k); ref_k=ksiazka_2; ksiazka_1.wyswietl(ref_k); system ("pause"); return; 41

42 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2009 Wpisywanie danych : Autor : Tolkien Tytul : Hobbit Rok : 2014 Autor : Reymont Tytul : Chlopi Rok : 2009 Autor : Tolkien Tytul : Hobbit Rok : 2014 Press any key to continue... 42

string Rodzaj[4]= {"TV ", "wieza ", "DVD ", "kino "}; string Producent[4]={"Phillips", "Sony ", "Sanyo ", "Samsung "};

string Rodzaj[4]= {TV , wieza , DVD , kino }; string Producent[4]={Phillips, Sony , Sanyo , Samsung }; // Referencja #include #include using namespace std; string Rodzaj[4]= "TV ", "wieza ", "DVD ", "kino "; string Producent[4]="Phillips", "Sony ", "Sanyo ", "Samsung "; class Sprzet_AV

Bardziej szczegółowo

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Co nie powinno być umieszczane w plikach nagłówkowych:

Co nie powinno być umieszczane w plikach nagłówkowych: Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct

Bardziej szczegółowo

Szablony. Szablony funkcji

Szablony. Szablony funkcji Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Techniki Programowania wskaźniki

Techniki Programowania wskaźniki Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza

Bardziej szczegółowo

Ssak::Ssak(Ssak& ref):waga(ref.ile_wazy()) {cout << "Konstruktor kopiujacy klasy Ssak...\n";} 1

Ssak::Ssak(Ssak& ref):waga(ref.ile_wazy()) {cout << Konstruktor kopiujacy klasy Ssak...\n;} 1 /* Wirtualny konstruktor kopiujący*/ #include using namespace std; class Ssak public: Ssak(int w):waga(w) cout

Bardziej szczegółowo

3-4. 5-7. 8-10. 11-12 15-18. 19-22

3-4. 5-7. 8-10. 11-12 15-18. 19-22 1. 2. 3-4. 5-7. 8-10. 11-12 13-14. 15-18. 19-22 23-28. 29-30. Programowanie strukturalne i obiektowe Typ wyliczeniowy, lista wyliczeniowa. Rzutowanie w C++. Wskaźniki i referencje. Działania na wskaźnikach.

Bardziej szczegółowo

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 2.

Programowanie 2. Język C++. Wykład 2. 2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...

Bardziej szczegółowo

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 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

// Struktura programu // Katalog. #include<iostream> #include "Book.h" #include "Audio.h" using namespace std;

// Struktura programu // Katalog. #include<iostream> #include Book.h #include Audio.h using namespace std; // Struktura programu // Katalog #include #include "Book.h" #include "Audio.h" using namespace std; void main() Book book; book.wpisz(); book.drukuj(); Audio audio; audio.wpisz(); audio.drukuj();

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd. 1 Podstawy algorytmiki i programowania - wykład 5 C-struktury cd. Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com

Bardziej szczegółowo

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ programowanie w C++ dla OWK Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych przykładów programów

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

Owad():waga(1),jadowitosc(false) {cout<<konstruktor domyslny owada\n;} // Wskaźniki #include using namespace std; class Owad int waga; bool jadowitosc; Owad():waga(1),jadowitosc(false) cout

Bardziej szczegółowo

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006) Część 1. Teoria Wyjaśnij pojęcia, podaj przykład: klasa obiekt konstruktor destruktor kapsułkowanie (hermetyzacja) wskaźnik this

Bardziej szczegółowo

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

Identyfikacje typu na etapie. wykonania (RTTI)

Identyfikacje typu na etapie. wykonania (RTTI) Identyfikacje typu na etapie (Run Time Type Identification) wykonania (RTTI) Może powstać taka sytuacje, gdy w trakcie kompilacji typ obiektu nie jest znany. C++ implementuje polimorfizm poprzez hierarchie

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy 2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać

Bardziej szczegółowo

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

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Obsługa wyjątków. Język C++ WW12

Obsługa wyjątków. Język C++ WW12 Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try

Bardziej szczegółowo

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50. Programowanie (język C++) referencje Wykład 2. Referencje (1) Referencja (odnośnik) jest zmienną identyfikującą inną zmienną. Wykonanie operacji na referencji ma taki sam skutek, jak wykonanie tejŝe operacji

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer

Bardziej szczegółowo

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 5 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 3 (05.11.2008) Rok akademicki 2008/2009, Wykład

Bardziej szczegółowo

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

Bardziej szczegółowo

C++ wprowadzanie zmiennych

C++ wprowadzanie zmiennych C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

class Student Deklaracja klasy Osoba: Deklaracja klasy Student: Osoba Student Będziemy mieli 2 klasy: Osoba, dla której zapamiętamy dane takie jak: imie, nazwisko i wiek Oraz klasę Student, w której będziemy też dodatkowo pamiętać kierunek studiów. Deklaracja klasy

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykład 12

Programowanie obiektowe w C++ Wykład 12 Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)

Bardziej szczegółowo

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

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

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

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

#include stdafx.h #include <iostream> #include windows.h using namespace std; // W8_3.cpp : Defines the entry point for the console application. // Przeciazenie operatorow new, delete // Przeciazenie globalne: przeciazone operatory new, delete // dzialaja dla danych dowolnych //

Bardziej szczegółowo

Techniki Programowania wskaźniki 2

Techniki Programowania wskaźniki 2 Techniki Programowania wskaźniki 2 Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Jeżeli wskaźnik pokazuje na element

Bardziej szczegółowo

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie

Bardziej szczegółowo

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

Język C++ Różnice między C a C++ Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci

Bardziej szczegółowo

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów

Bardziej szczegółowo

Laboratorium nr 10. Temat: Funkcje cz.2.

Laboratorium nr 10. Temat: Funkcje cz.2. Zakres laboratorium: Laboratorium nr 10 Temat: Funkcje cz.2. przeciążanie nazw funkcji argumenty domyślne funkcji przekazywanie danych do funkcji przez wartość, wskaźnik i referencję przekazywanie tablic

Bardziej szczegółowo

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

1 Wskaźniki. 1.1 Główne zastosowania wskaźników 1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować

Bardziej szczegółowo

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri); Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera

Bardziej szczegółowo

TEMAT : KLASY POLIMORFIZM

TEMAT : KLASY POLIMORFIZM TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

Programowanie, część I

Programowanie, część I 11 marca 2010 Kontakt Wstęp Informacje organizacyjne Materiał na ćwiczenia Plan wykładu http://www.fuw.edu.pl/~rwys/prog rwys@fuw.edu.pl tel. 22 55 32 263 Materiał na ćwiczenia Informacje organizacyjne

Bardziej szczegółowo

class Samochod { void Ruch(); }; class Amfibia : public Samochod { void Ruch(); // amfibie pływają };

class Samochod { void Ruch(); }; class Amfibia : public Samochod { void Ruch(); // amfibie pływają }; class Samochod void Ruch(); ; class Amfibia : public Samochod void Ruch(); // amfibie pływają ; 1 Rzutowanie w C++ Mechanizm pozwalający na tymczasową lub stałą zmianę interpretacji obiektu przez kompilator

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; } #include using namespace std; Prototypy funkcji Funkcja 1 void ela(int); double info (double); int main( ); return 0; Funkcja 2 void ela(int); Funkcja 3 double info(double); return 4*t; jeszcze

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,

Bardziej szczegółowo

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski. - - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double

Bardziej szczegółowo

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

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja

Bardziej szczegółowo

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Plik klasy. h deklaracje klas

Plik klasy. h deklaracje klas Plik klasy. h deklaracje klas KLASY DLA PRZYKŁADÓW Z POLIMORFIZMEM enum dim r1 = 1, r2, r3; class figura public: static int const maxliczbafigur; = 100; static int liczbafigur; dim rn; rodzaj przestrzeni

Bardziej szczegółowo

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Wzorce funkcji (szablony)

Wzorce funkcji (szablony) Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję

Bardziej szczegółowo

Przekazywanie argumentów wskaźniki

Przekazywanie argumentów wskaźniki Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo