Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany...
Transcript of Programowanie C/C++ Jezyk C, a C++. wyk ad IVmastem/wyk4.pdf · Historia C++ został zaprojektowany...
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
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
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)
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
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
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
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 }
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 }
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 }
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 }
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 }
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 }
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.
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.
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" ;
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 }
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 }
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 }
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 }
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;
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 }
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.
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ę.