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ę.