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 silną statyczną kontrolę typów (nazwa C++ - unowocześnieniony C)
Cechy języka C++ ˆ Klasa (w języku C++ jest rozszerzeniem struktury z języka C), obiekt instancja klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie, ukrywanie informacji (public, protected, private, friend) ˆ Polimorfizm i metody wirtualne ˆ Dziedziczenie
Cechy języka C++ ˆ Klasa (w języku C++ jest rozszerzeniem struktury z języka C), obiekt instancja klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie, ukrywanie informacji (public, protected, private, friend) ˆ Polimorfizm i metody wirtualne ˆ Dziedziczenie ˆ Szablony, STL ˆ Wyjątki
ˆ Komentarze: /* */, //komentarz ˆ Deklaracja zmiennej jest instrukcją ˆ Typy bool, long double, ˆ Nowe pliki nagłówkowe iostream, cstdio zamiast stdio.h ˆ argumenty domyślne ˆ w main() domyślnie return 0
g++ prog1.cpp -o prog1 Pierwszy program w C++ 1 #include <i o s t r e a m > 2 3 int main ( ) 4 { 5 for ( int i=0; i <10; i++) { 6 7 std : : cout << "Witaj!\n" ; 8 9 }// k o n i e c p e t l i 10 11 // Można o p u ś c i ć 12 // r e t u r n 0 ; 13 }
1 #include <i o s t r e a m > 2 3 int main ( ) 4 { 5 int a, b ; 6 7 std : : cout << " Podaj dwie liczby calkowite:" ; 8 std : : cin >> a >> b ; 9 std : : cout << a << " + " << b << " = " 10 << a+b << std : : endl ; 11 12 }
1 # include <i o s t r e a m > 2 using namespace std ; 3 4 int main ( ) { 5 int a, b ; 6 7 cout << " Podaj dwie liczby calkowite:" ; 8 cin >> a >> b ; 9 cout << a << " + " << b << " = " << a+b 10 << endl << "\n" ; 11 12 return 0 ; 13 }
1 #include <i o s t r e a m > 2 using std : : cout ; 3 using std : : cin ; 4 using std : : endl ; 5 6 int main ( ) 7 { 8 int a, b ; 9 10 cout << " Podaj dwie liczby calkowite:" ; 11 cin >> a >> b ; 12 cout << a << " + " << b << " = " << a+b 13 << endl << "\n" ; 14 15 }
1 #include <i o s t r e a m > 2 3 namespace mojens 4 { 5 bool wynik=true ; 6 } 7 8 using namespace std ; 9 // u s i n g namespace mojens ; 10 11 int main ( ) 12 { 13 bool wynik=false ; 14 15 if ( wynik ) cout << " Prawda\n" ; 16 else cout << " Falsz\n" ; 17 18 if ( mojens : : wynik ) cout << "Prawda\n" ; 19 else cout << " Falsz\n" ; 20 }
1 #include <i o s t r e a m > 2 using namespace std ; 3 4 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 } 11 12 int main ( ) 13 { 14 int n ; 15 16 cout << " Podaj liczbe: " ; 17 cin >> n ; 18 19 if ( pierwsza ( n ) ) cout << "Pierwsza\n" ; 20 else cout << " Zlozona\n" ; 21 }
Argumenty domyślne 1 #include <i o s t r e a m > 2 using namespace std ; 3 int a=10, b=5; 4 5 int sum ( int aa, int bb=15) ; 6 7 int main ( ) { 8 cout << sum ( a, b ) << "\n" ; 9 cout << sum ( a ) << "\n" ; 10 11 int sum ( int aa =35, int bb=35) ; 12 cout << sum ( ) << "\n" ; 13 } 14 15 int sum ( int af, int bf ) { 16 return af+bf ; 17 }
Argumenty domyślne 1 #include <i o s t r e a m > 2 using namespace std ; 3 int a=10, b=5; 4 5 int sum ( int aa, int bb=15) ; 6 7 int main ( ) { 8 cout << sum ( a, b ) << "\n" ; 9 cout << sum ( a ) << "\n" ; 10 11 int sum ( int aa =35, int bb=35) ; 12 cout << sum ( ) << "\n" ; 13 } 14 15 int sum ( int af, int bf ) { 16 return af+bf ; 17 } Tylko ostatnie argumenty mogą mieć wartości domyślne.
1 # include <i o s t r e a m > 2 using namespace std ; 3 int a=10, b=5; 4 5 int sum ( int aa, int bb=15) ; 6 double sum ( double af, double bf ) ; 7 8 int main ( ) { 9 cout << sum ( a, b ) << "\n" ; 10 cout << sum ( a ) << "\n" ; 11 cout << sum ( 1 0. 6 4, 5. 7 7 ) << "\n" ; 12 13 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" ; 19 20 double sum ( double aa =35, double bb=35) ; 21 cout << sum ( a, b ) << "\n" ; 22 cout << sum ( 5. 7 7 ) << "\n" ;
23 } 24 25 int sum ( int af, int bf ) { 26 return af+bf ; 27 } 28 29 double sum ( double af, double bf ) { 30 cout << " double " ; 31 return af+bf ; 32 }
1 # include <i o s t r e a m > 2 using namespace std ; 3 4 // v o i d w y s w i e t l ( i n t * tab ) ; 5 void wyswietl ( int tab [ ] ) ; 6 7 int main ( ) { 8 double *p ; 9 p = new double ; 10 *p =10.56; 11 delete p ; 12 13 int tab [ 1 0 ] ; 14 int * tab2 ; 15 tab2 = new int [ 1 0 ] ; 16 // i n t * tab2 = new i n t [ 1 0 ] ; 17 18 delete [ ] tab2 ; 19 // d e l e t e tab2 ; 20 // n i e mozna : d e l e t e tab ; 21 }
Liczby losowe Funkcja 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 > 3 4 using namespace std ; 5 6 int main ( ) 7 { 8 srand ( time ( 0 ) ) ; 9 10 cout << " RAND_MAX =" << RAND_MAX << "\n" ; 11 cout << rand ( ) << "\n" ; 12 cout << rand ( ) << "\n" ; 13 cout << rand ( ) << "\n" ; 14 }
Liczba losowa z [0, 1] 1 #include <i o s t r e a m > 2 #include <c s t d l i b > 3 4 using namespace std ; 5 6 double losuj ( ) { 7 return rand ( ) /double ( RAND_MAX ) ; 8 } 9 10 int main ( ) { 11 12 srand ( time ( 0 ) ) ; 13 14 cout << losuj ( ) << "\n" ; 15 16 }
1 #include <i o s t r e a m > 2 #include <c s t d l i b > 3 # include <cmath> 4 5 using namespace std ; 6 7 double losuj ( ) { 8 return rand ( ) /double ( RAND_MAX ) ; 9 } 10 11 double losuj ( double a, double b ) { 12 return ( b a ) *losuj ( ) +a ; 13 } 14 15 16 int main ( ) { 17 double x, y ; 18 long n ; 19 20 cin >> n ; 21 22 long licznik =0;
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 } 29 30 cout << " Wynik " 31 << 4* double ( licznik ) /double ( n ) 32 << "\n" ; 33 cout << "Pi " << M_PI << "\n" ; 34 35 }
Całkowanie metodą Monte Carlo b a f (x)dx (b a) Σn i=1 f (x i), n gdzie punkty x i są wylosowane z przedziału [a, b]. Zadanie Napisz program, który oblicza całkę oznaczoną danej metodą Monte Carlo.
Dziękuję za uwagę.