Upload
nguyenlegiaphung
View
11
Download
3
Embed Size (px)
DESCRIPTION
Các đặc điểm mới của C++
Citation preview
CHNG 1. CC C IM MI CA C++
ThS. Trn Anh Dng
Ni dung
14/09/2014 Lp trnh hng i tng 2
Mt s lu 1
Ngn ng C++ 2
Tham s mc nhin 3
Ti nh ngha hm 4
Truyn tham s 5 5
Hm ni tuyn 6
Phong cch lp trnh
Nhng lu v phong cch lp trnh:
t tn (bin, hm,)
Tab
Khai bo prototype
{}
14/09/2014 Lp trnh hng i tng 3
Bi tp C
Nhp bn s nguyn v xut cc gi tr va
nhp
C bao nhiu cch gii quyt?
14/09/2014 Lp trnh hng i tng 4
Bi tp C Gii
1. Dng 4 bin cch di nht, c bn nht
2. Dng mng khai bo bin gn hn, 1
ln thay cho nhiu ln
3. Dng mng v vng lp do while vit
code nhp gn hn, vit 1 ln thay cho
nhiu ln
4. Dng mng v vng lp for vit code
gn hn, for vit gn hn vng while 14/09/2014 Lp trnh hng i tng 5
Bi tp C Gii
5. Dng mng, vng lp for gp vit code
gn hn, nhng khng tch ring c 2
phn nhp xut
6. Dng hm tch ring phn nhp xut
code c th ti s dng nhiu ln
7. Dng file nhp xut t file thay cho vic
nhp bng bn phm v xut ra mn hnh
14/09/2014 Lp trnh hng i tng 6
Bi tp C Gii
Cch 1: Dng 4 bin
14/09/2014 Lp trnh hng i tng 7
void main(){
int a1, a2, a3, a4;
printf("\nNhap a1 = ");
scanf("%d", &a1);
printf("\nNhap a2 = ");
scanf("%d", &a2);
printf("\nNhap a3 = ");
scanf("%d", &a3);
printf("\nNhap a4 = ");
scanf("%d", &a4);
printf("\nBan vua nhap 4 so: %d %d %d %d\n", a1, a2, a3, a4);
}
Bi tp C Gii
Cch 2: Dng mng
14/09/2014 Lp trnh hng i tng 8
void main(){
int a[4];
printf("\nNhap a1 = ");
scanf("%d", &a[0]);
printf("\nNhap a2 = ");
scanf("%d", &a[1]);
printf("\nNhap a3 = ");
scanf("%d", &a[2]);
printf("\nNhap a4 = ");
scanf("%d", &a[3]);
printf("\nBan nhap 4 so:%d %d %d %d\n", a[0], a[1], a[2], a[3]);
}
Bi tp C Gii
Cch 3: Dng
mng v vng
lp while
14/09/2014 Lp trnh hng i tng 9
void main(){
int a[4], i;
i = 0;
do{
printf("\nNhap a%d = ", i);
scanf("%d", &a[i]);
i++;
}while(i
Bi tp C Gii
Cch 4: Dng mng v vng lp for
14/09/2014 Lp trnh hng i tng 10
void main()
{
int a[4], i;
for (i=0; i
Bi tp C Gii
Cch 5: Dng mng v vng lp for gp
14/09/2014 Lp trnh hng i tng 11
void main()
{
int a[4], i;
for (i=0; i
Bi tp C Gii
Cch 6: Dng hm
14/09/2014 Lp trnh hng i tng 12
Bi tp C Gii
Cch 7: Dng file
14/09/2014 Lp trnh hng i tng 13
Lch s ngn ng lp trnh
14/09/2014 Lp trnh hng i tng 14
Lch s ca C++
M rng ca C
u thp nin 1980: Bjarne Stroustrup
(Bell Laboratories)
Cung cp kh nng lp trnh hng i
tng
Ngn ng lai
14/09/2014 Lp trnh hng i tng 15
Mi trng ca C++
Bin dch v thc thi chng trnh C++: Edit
Preprocess
Compile
Link
Load
Execute
14/09/2014 Lp trnh hng i tng 16
Loader
Primary
Memory
Program is created in
the editor and stored
on disk.
Preprocessor program
processes the code.
Loader puts program
in memory.
CPU takes each
instruction and
executes it, possibly
storing new data
values as the program
executes.
Compiler
Compiler creates
object code and stores
it on disk.
Linker links the object
code with the libraries,
creates a.out and
stores it on disk
Editor
Preprocessor
Linker
CPU
Primary
Memory
.
.
.
.
.
.
.
.
.
.
.
.
Disk
Disk
Disk
Disk
Disk
Khc bit i vi C
Ch thch
Cc kiu d liu
Kim tra kiu, i kiu
Phm vi v khai bo
Khng gian tn
Hng
Qun l b nh
Tham chiu
14/09/2014 Lp trnh hng i tng 17
C++
C
Khc bit i vi C
Phm vi v khai bo:
Khng ging nh C, chng ta c th khai bo mt
bin ti mt v tr bt k trong chng trnh.
Mt bin ch c tm tc dng trong khi lnh n
c khai bo.
Do , C++ cung cp ton t nh phm vi (::)
xc nh r bin no c s dng khi xy ra tnh
trng nh ngha chng mt tn bin trong mt
khi lnh con.
14/09/2014 Lp trnh hng i tng 18
Ton t phm vi
Ton t phm vi (::)
Thng c dng truy cp cc bin ton
cc trong trng hp c bin cc b trng tn
V d:
y = ::x + 3;
14/09/2014 Lp trnh hng i tng 19
Ton t phm vi
14/09/2014 Lp trnh hng i tng 20
1 // Using the unary scope resolution operator.
2 #include
3 #include
4 using namespace std;
5
6 // define global constant PI
7 const double PI = 3.14159265358979;
8 int main()
9 {
10 //define local constant PI
11 const float PI = static_cast< float >( ::PI );
Access the global PI with
::PI.
Cast the global PI to a
float for the local PI.
This example will show
the difference between
float and double.
Ton t phm vi
14/09/2014 Lp trnh hng i tng 21
12 // display values of local and global PI constants
13 cout
Nhp xut vi C++
cin
Lung nhp chun
cout
Lung xut chun
cerr
Lung thng bo li chun
14/09/2014 Lp trnh hng i tng 22
Nhp xut vi C++
cin and cout (and #include ):
cout > name;
cout
V d 1
14/09/2014 Lp trnh hng i tng 24
1 // Fig. 1.2: fig01_02.cpp
2 // A first program in C++.
3 #include
4 using namespace std;
5 // function main begins program execution
6 int main()
7 {
8 cout
V d 2
14/09/2014 Lp trnh hng i tng 25
1 #include
2 using namespace std;
3 // function main begins program execution
4 int main(){
5 int integer1; // first number to be input by user
6 int integer2; // second number to be input by user
7 int sum; // variable in which sum will be stored
8 cout > integer1; // read an integer
10 cout > integer2; // read an integer
12 sum = integer1 + integer2; // assign result to sum
13 cout
V d 3
14/09/2014 Lp trnh hng i tng 26
#include
using namespace std;
void main() {
int n;
double d;
char s[100];
cout > n >> d >> s;
cout
Cc kiu d liu ca C++
14/09/2014 Lp trnh hng i tng 27
structured
array struct union class
address
pointer reference
simple
integral enum floating
float double long double
char short int long bool
Tham s mc nhin
V d 1: Hm th hin mt ca s thng bo
trong Visual C++
14/09/2014 Lp trnh hng i tng 28
Tham s mc nhin
V d 2:
14/09/2014 Lp trnh hng i tng 29
Tham s mc nhin
Mc ch:
Gn cc gi tr mc nhin cho cc tham s ca hm.
Khai bo tham s mc nhin:
Tt c cc tham s mc nhin u phi cui hm.
Ch cn a vo khai bo, khng cn trong nh ngha.
Gi hm c tham s mc nhin:
Nu cung cp tham s dng tham s truyn vo.
Nu khng tham s dng tham s mc nhin.
14/09/2014 Lp trnh hng i tng 30
Ti nh ngha hm
Funtions overloading
C++ cho php nh ngha cc hm trng
tn.
14/09/2014 Lp trnh hng i tng 31
int abs(int i);
long labs(long l);
double fabs(double d);
int abs(int i);
long abs(long l);
double abs(double d);
Ti nh ngha hm
Qui tc ti nh ngha:
Cc hm trng tn phi khc nhau v tham s:
S lng, th t, kiu
Qui tc gi hm?
Tm hm c kiu tham s ph hp
Dng php p kiu t ng
Tm hm gn ng (ph hp) nht
14/09/2014 Lp trnh hng i tng 32
Ti nh ngha hm
V d 1:
14/09/2014 Lp trnh hng i tng 33
Ti nh ngha hm
V d 2:
14/09/2014 Lp trnh hng i tng 34
Ton t qun l b nh ng
Ton t cp pht b nh ng new
int *x;
x = new int; //x = (int*)malloc(sizeof(int));
char *y;
y = new char[100]; //y = (char*)malloc(100);
Ton t gii phng vng nh ng delete
delete x; // free(x);
delete y; // free(y);
14/09/2014 Lp trnh hng i tng 35
Truyn tham s
Truyn theo gi tr (tham tr)
Gi tr tham s khi ra khi hm s khng thay
i.
Truyn theo a ch (tham chiu)
Gi tr tham s khi ra khi hm c th thay i.
14/09/2014 Lp trnh hng i tng 36
Tham chiu
Tham chiu l a ch vng nh c cp
pht cho mt bin.
K hiu & t trc bin hoc hm xc
nh tham chiu ca chng
V d 1:
int x = 10, *px = &x, &y = x;
*px = 20;
y = 30;
14/09/2014 Lp trnh hng i tng 37
Tham chiu
V d 2:
int arrget(int *a, int i) { return a[i]; }
arrget(a, 1) = 1; // a[1] = 1;
cin >> arrget(a,1); // cin >> a[1];
V d 3:
void swap1(int x, int y) { int t = x; x = y; y = t; }
void swap2(int *x, int *y) { int *t = x; x = y; y = t; }
void swap3(int &x, int &y) { int t = x; x = y; y = t; }
14/09/2014 Lp trnh hng i tng 38
Tham chiu
14/09/2014 Lp trnh hng i tng 39
1 // Comparing pass-by-value and pass-by-reference
2 // with references.
3 #include
4 using namespace std;
5
6 int squareByValue( int ); // function prototype
7 void squareByReference( int & ); // function prototype
8 int main(){
9 int x = 2, z = 4;
10 // demonstrate squareByValue
11 cout
Tham chiu
14/09/2014 Lp trnh hng i tng 40
15 // demonstrate squareByReference
16 cout
Tham chiu
14/09/2014 Lp trnh hng i tng 41
1 // References must be initialized.
2 #include
3 using std::cout;
4 using std::endl;
5 int main(){
6 int x = 3;
7
8 int &y = x;
9 cout
Tham chiu
14/09/2014 Lp trnh hng i tng 42
1 #include
2 using namespace std;
3 int main(){
4 int x = 3;
5 int &y;
6 cout
Hm Inline
Hm inline hay cn gi l hm ni tuyn.
S dng t kha inline
Yu cu trnh bin dch copy code vo trong
chng trnh thay v thc hin li gi hm:
Gim thi gian thc thi chng trnh
Tng kch thc ca m lnh thc thi
Ch nn nh ngha inline khi hm c kch
thc nh
14/09/2014 Lp trnh hng i tng 43
Hm Inline
V d:
14/09/2014 Lp trnh hng i tng 44
Lp trnh Hng i tng 45
Tm li sai cho cc khai bo prototype hm di y (cc hm ny trong cng mt chng trnh):
int func1 (int);
float func1 (int);
int func1 (float);
void func1 (int = 0, int);
void func2 (int, int = 0);
void func2 (int);
void func2 (float);
Bi tp 1
Lp trnh Hng i tng 46
Cho bit kt xut ca chng trnh sau: void func (int i, int j = 0 ){ cout
Lp trnh Hng i tng 47
a. Vit chng trnh nhp vo mt phn s,
rt gn phn s v xut kt qu.
b. Vit chng trnh nhp vo hai phn s,
tm phn s ln nht v xut kt qu.
c. Vit chng trnh nhp vo hai phn s.
Tnh tng, hiu, tch, thng gia chng
v xut kt qu.
Bi tp 3
Lp trnh Hng i tng 48
a. Vit chng trnh nhp vo mt ngy.
Tm ngy k tip v xut kt qu.
b. Vit chng trnh nhp h tn, im ton,
im vn ca mt hc sinh. Tnh im
trung bnh v xut kt qu.
Bi tp 4
Bi tp 5
Cho mt danh sch lu thng tin ca cc nhn vin trong mt cng ty, thng tin gm:
- M nhn vin (chui, ti a l 8 k t)
- H v tn (chui, ti a l 20 k t)
- Phng ban (chui, ti a 10 k t)
- Lng c bn (s nguyn)
- Thng (s nguyn)
- Thc lnh (s nguyn, trong thc lnh = lng c bn + thng )
Hy thc hin cc cng vic sau:
a.Tnh tng thc lnh thng ca tt c nhn vin trong cng ty.
b.In danh sch nhng nhn vin c mc lng c bn thp nht.
c.m s lng nhn vin c mc thng >= 1200000.
d.In danh sch cc nhn vin tng dn theo phng ban, nu phng ban trng nhau th
gim dn theo m nhn vin.
14/09/2014 Lp trnh hng i tng 49
Q & A