Programowanie C/C++ Jezyk C, a C++. wykład IV
Transkrypt
Programowanie C/C++ Jezyk C, a C++. wykład IV
Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Programowanie C/C++ Język C, a C++. wykład IV Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete dr Jarosław Mederski Przykłady Wnioski uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV 1 Język C++ - wstęp dr Jarosław Mederski Spis 2 C++ vs. C Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski 3 Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady 4 Wnioski Programowanie C/C++ Język C, a C++. wykład IV Historia dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski 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) Programowanie C/C++ Język C, a C++. wykład IV Cechy języka C++ dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski 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 Programowanie C/C++ Język C, a C++. wykład IV Cechy języka C++ dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski 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 Programowanie C/C++ Język C, a C++. wykład IV C++ vs. C dr Jarosław Mederski Spis Język C++ wstęp Komentarze: /* C++ vs. C Deklaracja zmiennej jest instrukcją Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski */, //komentarz Typy bool, long double, Nowe pliki nagłówkowe iostream, cstdio zamiast stdio.h argumenty domyślne w funkcji main() domyślnie return 0 Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Pierwszy program w C++ g++ prog1.cpp -o prog1 Spis 1 2 C++ vs. C 3 Język C++ 4 Przestrzeń nazw Funkcje 5 Przeciążanie nazw funkcji 6 Operatory new delete 7 Przykłady 8 Wnioski 9 10 11 12 13 Język C++ wstęp # include <i o s t r e a m > int main ( ) { for ( int i=0; i <10; i++) { std : : cout << " Witaj !\n" ; } // k o n i e c p e t l i // // } Można o p u ś c i ć return 0; Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski 1 2 Język C++ 3 wstęp 4 C++ vs. C 5 Język C++ 6 Przestrzeń nazw Funkcje 7 Przeciążanie nazw funkcji 8 Operatory new delete 9 Przykłady 10 Wnioski 11 12 # include <i o s t r e a m > Spis int main ( ) { int a , b ; std : : cout << " Podaj dwie liczby calkowite :" ; std : : cin >> a >> b ; std : : cout << a << " + " << b << " = " << a+b << std : : endl ; } Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski 1 2 3 Język C++ wstęp 4 C++ vs. C 5 Język C++ 6 Przestrzeń nazw 7 Funkcje Przeciążanie nazw 8 funkcji Operatory new delete 9 Przykłady 10 Wnioski 11 12 13 Spis # include <i o s t r e a m > using namespace std ; int main ( ) { int a , b ; cout << " Podaj dwie liczby calkowite :" ; cin >> a >> b ; cout << a << " + " << b << " = " << a+b << endl << "\n" ; return 0 ; } Programowanie C/C++ Język C, a C++. wykład IV 1 2 Spis 3 4 Język C++ wstęp 5 C++ vs. C 6 Język C++ 7 Przestrzeń nazw Funkcje 8 Przeciążanie nazw 9 funkcji Operatory new delete 10 Przykłady 11 Wnioski 12 13 14 15 dr Jarosław Mederski # include <i o s t r e a m > using std : : cout ; using std : : cin ; using std : : endl ; int main ( ) { int a , b ; cout << " Podaj dwie liczby calkowite :" ; cin >> a >> b ; cout << a << " + " << b << " = " << a+b << endl << "\n" ; } 1 2 3 4 dr Jarosław 5 Mederski 6 Spis 7 Język C++ 8 wstęp 9 C++ vs. C 10 Język C++ 11 Przestrzeń nazw Funkcje 12 Przeciążanie nazw funkcji 13 Operatory new delete Przykłady 14 15 Wnioski 16 17 18 19 20 Programowanie C/C++ Język C, a C++. wykład IV # include <i o s t r e a m > namespace mojens { bool wynik=true ; } using namespace std ; // u s i n g namespace moje ns ; int main ( ) { bool wynik=false ; if ( wynik ) cout << " Prawda \n" ; else cout << " Falsz \n" ; if ( mojens : : wynik ) cout << " Prawda \n" ; else cout << " Falsz \n" ; } 1 2 3 4 dr Jarosław 5 Mederski 6 Spis 7 Język C++ 8 wstęp 9 C++ vs. C 10 Język C++ 11 Przestrzeń nazw Funkcje 12 Przeciążanie nazw funkcji 13 Operatory new delete Przykłady 14 15 Wnioski 16 17 18 19 20 21 Programowanie C/C++ Język C, a C++. wykład IV # include <i o s t r e a m > using namespace std ; bool pierwsza ( int n ) { for ( int i=2; i<n ; i++){ if ( n % i == 0 ) return false ; } return true ; } int main ( ) { int n ; cout << " Podaj liczbe : " ; cin >> n ; if ( pierwsza ( n ) ) cout << " Pierwsza \n" ; else cout << " Zlozona \n" ; } Programowanie C/C++ Język C, a C++. wykład IV 1 2 3 Spis 4 Język C++ wstęp 5 C++ vs. C 6 Język C++ 7 Przestrzeń nazw 8 Funkcje Przeciążanie nazw 9 funkcji Operatory new delete 10 Przykłady 11 Wnioski 12 13 14 15 16 17 dr Jarosław Mederski Argumenty domyślne # include <i o s t r e a m > using namespace std ; int a=10 , b=5; int sum ( int aa , int bb=15) ; int main ( ) { cout << sum ( a , b ) << "\n" ; cout << sum ( a ) << "\n" ; int sum ( int aa =35 , int bb=35) ; cout << sum ( ) << "\n" ; } int sum ( int af , int bf ) { return af+bf ; } Programowanie C/C++ Język C, a C++. wykład IV 1 2 3 Spis 4 Język C++ wstęp 5 C++ vs. C 6 Język C++ 7 Przestrzeń nazw 8 Funkcje Przeciążanie nazw 9 funkcji Operatory new delete 10 Przykłady 11 Wnioski 12 13 14 15 16 17 dr Jarosław Mederski Argumenty domyślne # include <i o s t r e a m > using namespace std ; int a=10 , b=5; int sum ( int aa , int bb=15) ; int main ( ) { cout << sum ( a , b ) << "\n" ; cout << sum ( a ) << "\n" ; int sum ( int aa =35 , int bb=35) ; cout << sum ( ) << "\n" ; } int sum ( int af , int bf ) { return af+bf ; } Tylko ostatnie argumenty mogą mieć wartości domyślne. 1 2 3 4 dr Jarosław 5 Mederski 6 Spis 7 Język C++ 8 wstęp 9 C++ vs. C 10 Język C++ 11 Przestrzeń nazw Funkcje 12 Przeciążanie nazw funkcji 13 Operatory new delete Przykłady 14 15 Wnioski 16 17 18 19 20 21 22 Programowanie C/C++ Język C, a C++. wykład IV # include <i o s t r e a m > using namespace std ; int a=10 , b=5; int sum ( int aa , int bb=15) ; double sum ( double af , double bf ) ; int main ( ) { cout << sum ( a , b ) << "\n" ; cout << sum ( a ) << "\n" ; cout << sum ( 1 0 . 6 4 , 5 . 7 7 ) << "\n" ; int sum ( int aa =35 , int bb=35) ; cout << sum ( ) << "\n" ; cout << sum ( 1 0 . 6 4 , 5 . 7 7 ) << "\n" ; double ad=(double ) a ; double bd=(double ) b ; cout << "d"<<sum ( ad , bd ) << "\n" ; double sum ( double aa =35 , double bb=35) ; cout << sum ( a , b ) << "\n" ; cout << sum ( 5 . 7 7 ) << "\n" ; Programowanie 23 C/C++ 24 Język C, a C++. 25 wykład IV dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski } 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 2 3 4 dr Jarosław 5 Mederski 6 Spis 7 Język C++ 8 wstęp 9 C++ vs. C 10 Język C++ 11 Przestrzeń nazw Funkcje 12 Przeciążanie nazw funkcji 13 Operatory new delete Przykłady 14 15 Wnioski 16 17 18 19 20 21 Programowanie C/C++ Język C, a C++. wykład IV # include <i o s t r e a m > using namespace std ; // v o i d w y s w i e t l ( i n t * t a b ) ; void wyswietl ( int tab [ ] ) ; int main ( ) { double * p ; p = new double ; *p =10.56; delete p ; int tab [ 1 0 ] ; int * tab2 ; tab2 = new int [ 1 0 ] ; // i n t * t a b 2 = new i n t [ 1 0 ] ; delete [ ] tab2 ; // d e l e t e t a b 2 ; // n i e mozna : d e l e t e t a b ; } Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Liczby losowe Funkcja rand() z biblioteki cstdlib zwróci liczbę całkowitą pseudolosową z przedziału 0,...,RAND_MAX Spis Język C++ wstęp 1 2 3 Język C++ Przestrzeń nazw 4 Funkcje 5 Przeciążanie nazw funkcji 6 Operatory new delete Przykłady 7 Wnioski 8 9 10 11 12 13 14 C++ vs. C # include <i o s t r e a m > # include < c s t d l i b > using namespace std ; int main ( ) { srand ( time ( 0 ) ) ; cout cout cout cout } << << << << " RAND_MAX =" << rand ( ) << "\n" rand ( ) << "\n" rand ( ) << "\n" RAND_MAX << "\n" ; ; ; ; Programowanie C/C++ Język C, a C++. wykład IV Liczba losowa z [0, 1] dr Jarosław Mederski 1 2 Język C++ 3 wstęp 4 C++ vs. C 5 Język C++ 6 Przestrzeń nazw Funkcje 7 Przeciążanie nazw funkcji 8 Operatory new delete 9 Przykłady 10 Wnioski 11 12 13 14 15 16 Spis # include <i o s t r e a m > # include < c s t d l i b > using namespace std ; double losuj ( ) { return rand ( ) / double ( RAND_MAX ) ; } int main ( ) { srand ( time ( 0 ) ) ; cout << losuj ( ) << "\n" ; } 1 2 3 4 dr Jarosław 5 Mederski 6 Spis 7 Język C++ 8 wstęp 9 C++ vs. C 10 Język C++ 11 Przestrzeń nazw Funkcje 12 Przeciążanie nazw funkcji 13 Operatory new delete Przykłady 14 15 Wnioski 16 17 18 19 20 21 22 Programowanie C/C++ Język C, a C++. wykład IV # include <i o s t r e a m > # include < c s t d l i b > # include <cmath> using namespace std ; double losuj ( ) { return rand ( ) / double ( RAND_MAX ) ; } double losuj ( double a , double b ) { return ( b−a ) * losuj ( ) +a ; } int main ( ) { double x , y ; long n ; cin >> n ; long licznik =0; Programowanie 23 C/C++ 24 Język C, a C++. 25 wykład IV dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski for ( long i=0; i<n ; i++){ x=losuj ( −1 ,1) ; y=losuj ( −1 ,1) ; if ( x * x+y * y<=1) licznik++; } 26 27 28 29 30 cout << " Wynik " 31 << 4 * double ( licznik ) / double ( n ) 32 << "\n" ; 33 cout << "Pi " << M_PI << "\n" ; 34 35 } Programowanie C/C++ Język C, a C++. wykład IV Całkowanie metodą Monte Carlo dr Jarosław Mederski Spis Język C++ wstęp Z b C++ vs. C a Język C++ Przestrzeń nazw Funkcje f (x)dx ≈ (b − a) Σni=1 f (xi ) , n gdzie punkty xi są wylosowane z przedziału [a, b]. Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski Zadanie Napisz program, który oblicza całkę oznaczoną danej funkcji metodą Monte Carlo. Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ wstęp C++ vs. C Język C++ Przestrzeń nazw Funkcje Przeciążanie nazw funkcji Operatory new delete Przykłady Wnioski Dziękuję za uwagę.