Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany...

23
Programowanie C/C++ Język C, a C++. wyklad IV dr Jaroslaw Mederski Spis Język C++ - wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przyklady Wnioski Programowanie C/C++ Język C, a C++. wyklad IV dr Jaroslaw Mederski uzupelnienie notatek: dr Jerzy Bialkowski

Transcript of Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany...

Page 1: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Programowanie C/C++Język C, a C++.wykład IV

dr Jarosław Mederski

uzupełnienie notatek: dr Jerzy Białkowski

Page 2: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 Język C++ - wstęp

2 C++ vs. C

3 Język C++Przestrzeń nazwFunkcjePrzeciążanie nazw funkcjiOperatory new deletePrzykłady

4 Wnioski

Page 3: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Historia

C++ został zaprojektowany w 1979 przez Bjarne Stroustrupajako rozszerzenie języka C o obiektowe mechanizmy abstrakcjidanych i silną statyczną kontrolę typów (nazwa C++ -unowocześnieniony C)

Page 4: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Cechy języka C++

� Klasa (w języku C++ jest „rozszerzeniem” struktury zjęzyka C), obiekt – instancja klasy, konstruktoryi destruktory

� Enkapsulacja - kapsułkowanie, ukrywanie informacji(public, protected, private, friend)

� Polimorfizm i metody wirtualne

� Dziedziczenie

� Szablony, STL

� Wyjątki

Page 5: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Cechy języka C++

� Klasa (w języku C++ jest „rozszerzeniem” struktury zjęzyka C), obiekt – instancja klasy, konstruktoryi destruktory

� Enkapsulacja - kapsułkowanie, ukrywanie informacji(public, protected, private, friend)

� Polimorfizm i metody wirtualne

� Dziedziczenie

� Szablony, STL

� Wyjątki

Page 6: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

C++ vs. C

� Komentarze: /* */, //komentarz

� Deklaracja zmiennej jest instrukcją

� Typy bool, long double,

� Nowe pliki nagłówkowe iostream, cstdio zamiaststdio.h

� argumenty domyślne

� w funkcji main() domyślnie return 0

Page 7: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Pierwszy program w C++

g++ prog1.cpp -o prog1

1 #include <i o s t r e a m>23 int main ( )4 {5 for ( int i=0; i<10; i++) {67 std : : cout << "Witaj!\n" ;89 }// k o n i e c p e t l i1011 // Można o p u ś c i ć12 // r e t u r n 0 ;13 }

Page 8: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 #include <i o s t r e a m>23 int main ( )4 {5 int a , b ;67 std : : cout << "Podaj dwie liczby calkowite:" ;8 std : : cin >> a >> b ;9 std : : cout << a << " + " << b << " = "10 << a+b << std : : endl ;1112 }

Page 9: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 # include <i o s t r e a m>2 using namespace std ;34 int main ( ) {5 int a , b ;67 cout << "Podaj dwie liczby calkowite:" ;8 cin >> a >> b ;9 cout << a << " + " << b << " = " << a+b10 << endl << "\n" ;1112 return 0 ;13 }

Page 10: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 #include <i o s t r e a m>2 using std : : cout ;3 using std : : cin ;4 using std : : endl ;56 int main ( )7 {8 int a , b ;910 cout << "Podaj dwie liczby calkowite:" ;11 cin >> a >> b ;12 cout << a << " + " << b << " = " << a+b13 << endl << "\n" ;1415 }

Page 11: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 #include <i o s t r e a m>23 namespace mojens4 {5 bool wynik=true ;6 }78 using namespace std ;9 // u s i n g namespace mojens ;1011 int main ( )12 {13 bool wynik=false ;1415 if ( wynik ) cout << "Prawda\n" ;16 else cout << "Falsz\n" ;1718 if ( mojens : : wynik ) cout << "Prawda\n" ;19 else cout << "Falsz\n" ;20 }

Page 12: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 #include <i o s t r e a m>2 using namespace std ;34 bool pierwsza ( int n )5 {6 for ( int i=2; i<n ; i++){7 if ( n % i == 0 ) return false ;8 }9 return true ;10 }1112 int main ( )13 {14 int n ;1516 cout << " Podaj liczbe: " ;17 cin >> n ;1819 if ( pierwsza (n ) ) cout << "Pierwsza\n" ;20 else cout << "Zlozona\n" ;21 }

Page 13: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Argumenty domyślne

1 #include <i o s t r e a m>2 using namespace std ;3 int a=10, b=5;45 int sum ( int aa , int bb=15) ;67 int main ( ) {8 cout << sum (a , b ) << "\n" ;9 cout << sum (a ) << "\n" ;1011 int sum ( int aa=35, int bb=35) ;12 cout << sum ( ) << "\n" ;13 }1415 int sum ( int af , int bf ) {16 return af+bf ;17 }

Tylko ostatnie argumenty mogą mieć wartości domyślne.

Page 14: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Argumenty domyślne

1 #include <i o s t r e a m>2 using namespace std ;3 int a=10, b=5;45 int sum ( int aa , int bb=15) ;67 int main ( ) {8 cout << sum (a , b ) << "\n" ;9 cout << sum (a ) << "\n" ;1011 int sum ( int aa=35, int bb=35) ;12 cout << sum ( ) << "\n" ;13 }1415 int sum ( int af , int bf ) {16 return af+bf ;17 }

Tylko ostatnie argumenty mogą mieć wartości domyślne.

Page 15: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 # include <i o s t r e a m>2 using namespace std ;3 int a=10, b=5;45 int sum ( int aa , int bb=15) ;6 double sum ( double af , double bf ) ;78 int main ( ) {9 cout << sum (a , b ) << "\n" ;10 cout << sum (a ) << "\n" ;11 cout << sum ( 1 0 . 6 4 , 5 . 7 7 ) << "\n" ;1213 int sum ( int aa=35, int bb=35) ;14 cout << sum ( ) << "\n" ;15 cout << sum ( 1 0 . 6 4 , 5 . 7 7 ) << "\n" ;16 double ad=(double )a ;17 double bd=(double )b ;18 cout << "d"<<sum (ad , bd ) << "\n" ;1920 double sum ( double aa=35, double bb=35) ;21 cout << sum (a , b ) << "\n" ;22 cout << sum ( 5 . 7 7 ) << "\n" ;

Page 16: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

23 }2425 int sum ( int af , int bf ) {26 return af+bf ;27 }2829 double sum ( double af , double bf ) {30 cout << "double " ;31 return af+bf ;32 }

Page 17: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 # include <i o s t r e a m>2 using namespace std ;34 // v o i d w y s w i e t l ( i n t * tab ) ;5 void wyswietl ( int tab [ ] ) ;67 int main ( ) {8 double *p ;9 p = new double ;10 *p=10.56;11 delete p ;1213 int tab [ 1 0 ] ;14 int *tab2 ;15 tab2 = new int [ 1 0 ] ;16 // i n t * tab2 = new i n t [ 1 0 ] ;1718 delete [ ] tab2 ;19 // d e l e t e tab2 ;20 // n i e mozna : d e l e t e tab ;21 }

Page 18: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Liczby losoweFunkcja rand() z biblioteki cstdlib zwróci liczbę całkowitąpseudolosową z przedziału 0,...,RAND_MAX

1 #include <i o s t r e a m>2 #include <c s t d l i b >34 using namespace std ;56 int main ( )7 {8 srand ( time ( 0 ) ) ;910 cout << "RAND_MAX=" << RAND_MAX << "\n" ;11 cout << rand ( ) << "\n" ;12 cout << rand ( ) << "\n" ;13 cout << rand ( ) << "\n" ;14 }

Page 19: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Liczba losowa z [0, 1]

1 #include <i o s t r e a m>2 #include <c s t d l i b >34 using namespace std ;56 double losuj ( ) {7 return rand ( ) /double ( RAND_MAX ) ;8 }910 int main ( ) {1112 srand ( time ( 0 ) ) ;1314 cout << losuj ( ) << "\n" ;1516 }

Page 20: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

1 #include <i o s t r e a m>2 #include <c s t d l i b >3 #include <cmath>45 using namespace std ;67 double losuj ( ) {8 return rand ( ) /double ( RAND_MAX ) ;9 }1011 double losuj ( double a , double b ) {12 return (b−a ) *losuj ( ) +a ;13 }141516 int main ( ) {17 double x , y ;18 long n ;1920 cin >> n ;2122 long licznik=0;

Page 21: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

23 for ( long i=0; i<n ; i++){24 x=losuj (−1 ,1) ;25 y=losuj (−1 ,1) ;26 if (x*x+y*y<=1)27 licznik++;28 }2930 cout << "Wynik "31 << 4*double ( licznik ) /double (n )32 << "\n" ;33 cout << "Pi " << M_PI << "\n" ;3435 }

Page 22: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Całkowanie metodą Monte Carlo

∫ baf (x)dx ≈ (b − a)Σni=1f (xi )

n,

gdzie punkty xi są wylosowane z przedziału [a, b].

ZadanieNapisz program, który oblicza całkę oznaczoną danej funkcjimetodą Monte Carlo.

Page 23: Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy

ProgramowanieC/C++Język C, aC++.wykład IV

dr JarosławMederski

Spis

Język C++ -wstęp

C++ vs. C

Język C++Przestrzeń nazw

Funkcje

Przeciążanie nazwfunkcji

Operatory new delete

Przykłady

Wnioski

Dziękuję za uwagę.