Tài liệu Lập trình hướng đối tượng & C++ - Chương 2: Các đặc điểm của C++: CÁC ðẶC ðIỂM CỦA C++
Chương 2
1
• Cỏc khỏi niệm cơ bản của C++
• Lập trỡnh cấu trỳc trong C++
• Cỏc ủặc ủiểm mới của C++
Nội dung
• Cỏc khỏi niệm cơ bản trong C++
• Cấu trỳc ủiều khiển
• Hàm và cấu trỳc chương trỡnh
• Con trỏ và chuỗi ký tự
• Tham số mặc nhiờn của hàm
• Tỏi ủịnh nghĩa hàm
• Hàm tại chổ (inline)
• Truyền tham số
• Tham chiếu
• Struct
2
Cỏc khỏi niệm cơ bản
• Từ khúa
– Dành riờng cho ngụn ngữ khụng ủược ủặt tờn
trựng với từ khúa.
– Là chữ thường
Vd : char, int, return, for, else, const,
static
• Tờn
– Phõn biệt chữ HOA và chữ thường
– Gồm chữ, số, ‘_’ và phải bắt ủầu bằng chữ cỏi.
– ðộ dài tối ủa là 32
– Nờn theo quy cỏch ủặt tờn.
Vd: x, hoten, a1, num_of_var, Delta, TEN, ...
3
Cỏc khỏi niệm cơ bản
• Kiểu dữ liệu
Tờn kiểu Kớch thước Phạm vi
char 1 byte -128 127
unsigned char 1 byte 0 255
int 2 bytes -32768 32767
unsigned int 2 bytes 0 65535
short 2 bytes 0 65535
long 4 bytes -231 231 - 1
unsigned long 4 bytes 0 232 ...
10 trang |
Chia sẻ: putihuynh11 | Lượt xem: 572 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Lập trình hướng đối tượng & C++ - Chương 2: Các đặc điểm của C++, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CÁC ðẶC ðIỂM CỦA C++
Chương 2
1
• Cỏc khỏi niệm cơ bản của C++
• Lập trỡnh cấu trỳc trong C++
• Cỏc ủặc ủiểm mới của C++
Nội dung
• Cỏc khỏi niệm cơ bản trong C++
• Cấu trỳc ủiều khiển
• Hàm và cấu trỳc chương trỡnh
• Con trỏ và chuỗi ký tự
• Tham số mặc nhiờn của hàm
• Tỏi ủịnh nghĩa hàm
• Hàm tại chổ (inline)
• Truyền tham số
• Tham chiếu
• Struct
2
Cỏc khỏi niệm cơ bản
• Từ khúa
– Dành riờng cho ngụn ngữ khụng ủược ủặt tờn
trựng với từ khúa.
– Là chữ thường
Vd : char, int, return, for, else, const,
static
• Tờn
– Phõn biệt chữ HOA và chữ thường
– Gồm chữ, số, ‘_’ và phải bắt ủầu bằng chữ cỏi.
– ðộ dài tối ủa là 32
– Nờn theo quy cỏch ủặt tờn.
Vd: x, hoten, a1, num_of_var, Delta, TEN, ...
3
Cỏc khỏi niệm cơ bản
• Kiểu dữ liệu
Tờn kiểu Kớch thước Phạm vi
char 1 byte -128 127
unsigned char 1 byte 0 255
int 2 bytes -32768 32767
unsigned int 2 bytes 0 65535
short 2 bytes 0 65535
long 4 bytes -231 231 - 1
unsigned long 4 bytes 0 232 - 1
float 4 bytes 1.2e-38 3.4e38
double 8 bytes 2.2e-308 1.8e308
4
Cỏc khỏi niệm cơ bản
• Biến
– Khai bỏo: bất kỳ vị trớ nào trong chương trỡnh
– Khởi tạo: cú thể vừa khai bỏo và khởi tạo
Vd: int x=5, y=10;
for( int i=0, tong =0 ; i<10 ; i++)
tong +=i ;
– Biến khai bỏo trong 1 khối lệnh: chỉ cú phạm vi
hoạt ủộng trong khối lệnh ủú.
Vd: if( delta >0 ) {
float x1= (-b + sqrt(delta)) / (2*a);
float x2= (-b - sqrt(delta)) / (2*a);
...
}
5
Cỏc khỏi niệm cơ bản
• Biến
– Biến toàn cục: cú tỏc dụng trong toàn bộ CT.
– Biến ủịa phương (cục bộ): chỉ cú tỏc dụng trong
phạm vi của nú.
Vd: int so = 5;
void GanSo(int x) {
so = x;
}
int NuaSo(int x) {
int c = 2;
int so = x/c ;
return so;
}
6
Cỏc khỏi niệm cơ bản
• Hằng
– Khai bỏo: Vd: #define MAX 100
const int MAX=100;
– Một số hằng quan trọng :
• Số nguyờn: 10 , -5, 300000, 1000L, ...
• Số thực : 3.1416, .5 , 123E-5, ...
• Ký tự : char ch1 = ‘A’ , ch2=97;
• Chuỗi ký tự:
char *str=“Chuoi Ky Tu”;
char chuoi[50]; strcpy(chuoi,“ ”);
if ( strcmp(chuoi,“”)==0)
cout << “Chuoi rong”;
7
Cỏc khỏi niệm cơ bản
• Kiểu: Chuyển ủổi kiểu :
– Mặc nhiờn (tự ủộng) :
float x = 3.1416;
int y = x ; float sole = x - y;
– Do người lập trỡnh sử dụng :
Cỳ phỏp: ( Kiểu ) biểu thức
hoặc Kiểu ( biểu thức )
Vd: int a=10, b=3;
float c1 = a / b ;
float c2 = float (a/b);
float c3 = (float) a / b ;
float c4 = float (a)/b; 8
Cỏc khỏi niệm cơ bản
• Cỏc phộp toỏn
– Số học: + , - , * , / , %
– Luận lý: ==, !=, >, =, <=, &&, ||, !
– Gỏn : =
– Lấy kớch thước: sizeof (ủối tượng dữ liệu )
– ðiều kiện : e1 ? e2 : e3
– Lấy ủịa chỉ : &(biến)
– Tăng giảm : x++ , x-- , ++x , --x
tong+= i ; tich *= i;
/= , %= , -= , &= , |= , ^=
9
Cỏc khỏi niệm cơ bản
• Mảng
– Khai bỏo: [];
Vd: int m[10]; float ds[MAX];
– Thứ tự phần tử: từ 0 ủến (kớch thước -1)
Vd:
//CT tớnh tổng của 10 số Fibonacci ủầu tiờn
long a[10]; a[0] = a[1] = 1;
for (int i = 2; i < 10 ; i++)
a[i] = a[i-1] + a[i-2];
long tong = 0;
for(i=0 ; i<10 ; i++)
tong += a[i]; 10
Cỏc khỏi niệm cơ bản
• Chỳ thớch
– Trờn 1 dũng: //chỳ thớch trờn 1 dũng
– Trờn nhiều dũng: /*
chỳ thớch trờn nhiều dũng
*/
• Cỏc chỉ thị tiền biờn dịch:
#define #undefine #include
#if #else #endif
#if #elif #else #endif
#ifdef #else #endif
#ifndef #else #endif
#error
11
Cỏc khỏi niệm cơ bản
• Nhập xuất
– Thư viện hàm : #include
– Nhập : cin >> Biến
– Xuất : cout << (Biểu thức)
– Cỏc kiểu dữ liệu cú thể nhập xuất :
char , int, unsigned, long, unsigned long,
float, double, char* , char []
(void*): lấy ủịa chỉ ủầu của chuỗi
– Cú thể nhập xuất liờn tục trờn một dũng.
Vd:
cout << “Gia tri x = “ << x << “ , y = “ <<y;
cout > n;
12
Cỏc khỏi niệm cơ bản
• Nhập xuất
– Một số hàm ủịnh dạng toàn cục:
• cin.width(n)
• cout.width(n)
– Ký tự ủặc biệt : \n, \t, \0, \b, \r
– ðịnh dạng khỏc: endl, ends, flush,
13
Cỏc khỏi niệm cơ bản
• Cấu trỳc 1 chương trỡnh ủơn giản
14
Cấu trỳc ủiều khiển
• Tuần tự
– Cõu lệnh: viết trờn một hay nhiều dũng
– Khối lệnh:
• Là dóy cỏc lệnh viết trong cặp { }
• Tương ủương với 1 cõu lệnh
• Giỏ trị của biểu thức ủiều kiện
– Bằng 0 : SAI
– Khỏc 0 : ủỳng
Vd: int x=0;
if(x==2)
cout<< “ x bang 2 “;
else
cout<< “ x khac 2 “;
15
Cấu trỳc ủiều khiển
• Rẽ nhỏnh
– if (biểu thức)
Lệnh 1;
else
Lệnh 2;
– switch (biểu thức) {
case ‘giỏ trị 1’ : Lệnh 1; ... [ break; ]
case ‘giỏ trị 2’ : Lệnh 2; ... [ break; ]
...
case ‘giỏ trị n’ : Lệnh n; ... [ break; ]
default : Lệnh n+1;
}
16
Cấu trỳc ủiều khiển
• Lặp
– while (biểu thức)
Lệnh ;
– do
Lệnh ;
while (biểu thức);
– for ( e1 ; e2 ; e3 )
Lệnh;
e1 : biểu thức khởi tạo
e2 : biểu thức ủiều kiện
e3 : biểu thức lặp 17
Cấu trỳc ủiều khiển
• Từ khúa break
– Thoỏt ra khỏi cấu trỳc switch
– Thoỏt ra khỏi vũng lặp : while, do while, for
• Từ khúa continue: Trở về ủầu vũng lặp
• Lệnh nhảy goto
– Dựng chung với nhón lệnh
– Khụng nờn sử dụng vỡ sẽ phỏ vở cấu trỳc CT
– Ưu ủiểm : thoỏt khỏi cỏc vũng lặp lồng sõu
18
Hàm và cấu trỳc chương trỡnh
• Hàm - Cỳ phỏp :
(Danh sỏch kiểu và tham số)
{ [ Khai bỏo dữ liệu cục bộ ]
[ Thõn hàm ]
[ Cõu lệnh return ]
}
Vd: int Max ( int x, int y) {
int somax;
somax = (x>y) ? x : y;
return somax;
}
19
Hàm và cấu trỳc chương trỡnh
• Hàm - Khai bỏo prototype :
( Danh sỏch kiểu );
Vd: int Max ( int , int );
int Min ( int , int );
void main() {
Khai bỏo hàm
int a =10 , b =5;
cout<<“So max= “<< Max(a,b)<<endl;
cout<<“So min= “<< Min(a,b)<<endl;
}
int Max (int x , int y) { ... }
int Min (int x , int y) { ... }
20
ðịnh nghĩa
hàm
Hàm và cấu trỳc chương trỡnh
• Hàm
– Cỏch gọi :
Tờn hàm(tham số theo thứ tự từ trỏi sang)
– Tham số và ủối số: Tham số
(hỡnh thức)int Max ( int x, int y) {
if(x>y) return x;
return y;
}
void main() {
int a =10 , b = 5;
cout<<“So max= “<< Max ( a , b ) << endl;
}
21
ðối số
(Tham số thực tế)
Hàm và cấu trỳc chương trỡnh
• Cấu trỳc chương trỡnh
– Chương trỡnh theo dạng lập trỡnh cấu trỳc gồm
tập hợp nhiều hàm ủộc lập nhau.
– Hàm main() là hàm thực thi.
– Một chương trỡnh chỉ cú thể cú 1 hàm main() duy
nhất.
– Dạng chung :
22
#include
Khai bỏo prototype;
Khai bỏo dữ liệu toàn cục.
ðịnh nghĩa cỏc hàm ủó khai bỏo.
ðịnh nghĩa hàm main().
Con trỏ và chuỗi ký tự
• Khỏi niệm
– Con trỏ lưu ủịa chỉ của 1 ủối tượng dữ liệu khỏc.
– Kớch thước con trỏ = 1 ụ nhớ của hệ ủiều hành.
– Trờn MS-DOS, kớch thước của con trỏ là 2 bytes.
• Khai bỏo : *;
VD: long x = 20;
long *y; y = &x;
• Cỏc phộp toỏn
– ðịa chỉ : &y
– Giỏ trị : y
– Giỏ trị dữ liệu mà con trỏ ủang trỏ tới : *y
23
20
1036H
x
1036
1080H
*y
Con trỏ
• Cỏch tớnh ủịa chỉ
– int x=10; // Chẳng hạn biến x ủang ở ủịa chỉ 1000
– int *px = &x; // px =1000
– (*px)++; // Gỏn x=11
– px++; // px = 1002 vỡ px là con trỏ kiểu int
– px +=n; // px ủang trỏ ủến ủịa chỉ (1002 + 2*n )
• Cấp vựng nhớ : Con trỏ = new [ Số lượng ];
Vd: int *px= new int;
long *py; py= new long[20];
• Thu hồi vựng nhớ : delete ;
Vd: delete px;
delete[] py;
24
Con trỏ
• Con trỏ và mảng
– Con trỏ là 1 mảng ủộng => kớch thước cú thể thay ủổi.
– Mảng như là 1 con trỏ nhưng ủộ lớn vựng nhớ cố ủịnh.
Cỏch sử dụng mảng và con trỏ gần như giống nhau
25
Cấp vựng nhớ
vừa ủủ
cho con trỏ
Thu hồi lại vựng
nhớ
Con trỏ
Phõn biệt mảng con trỏ và con trỏ ủến mảng
26
Mảng gồm 10 con trỏ
Con trỏ ủến 1 mảng
10 phần tử kiểu int
27
Tham số mặc nhiờn
• Khỏi niệm
– Gỏn cỏc giỏ trị mặc nhiờn cho cỏc tham số của hàm.
• Ưu ủiểm
– Khụng cần phải hiểu rừ ý nghĩa tất cả cỏc tham số.
– Cú thể giảm ủược số lượng hàm cần ủịnh nghĩa.
• Khai bỏo tham số mặc nhiờn
– Tất cả cỏc tham số mặc nhiờn ủều phải ủặt ở cuối hàm.
– Chỉ cần ủưa vào khai bỏo, khụng cần trong ủịnh nghĩa.
• Gọi hàm cú tham số mặc nhiờn
– Nếu cung cấp ủủ tham số => dựng tham số truyền vào.
– Nếu khụng ủủ tham số => dựng tham số mặc nhiờn
28
Tham số mặc nhiờn
• Vớ dụ
MessageBox( LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK )
Hàm thể hiện 1 cửa sổ thụng bỏo trong Visual C++
Cú thể gọi hàm theo cỏc dạng sau:
29
MessageBox(“Hien thi thong bao ra man hinh");
MessageBox( “Chuc nang khong su dung duoc",
“Bao loi“ );
MessageBox( “Ban muon thoat khoi chuong trinh?",
“Thong bao“,
MB_YESNO | MB_ICONASTERISK );
Tham số mặc nhiờn
• Vớ dụ
void Ham1 (int a=0, int b=1) {
cout<<“tham so 1 = “<<a<<endl;
cout<<“tham so 2 = “<<b<<endl;
}
void main() {
30
int x=10, y=20;
cout << “Goi Ham1 4 lan, ta duoc : “<<endl;
Ham1(x,y);
Ham1(x);
Ham1(y);
Ham1();
}
Tỏi ủịnh nghĩa hàm
• Khỏi niệm
C++ cho phộp ủịnh nghĩa cỏc hàm trựng tờn.
• Quy tắc tỏi ủịnh nghĩa
– Cỏc hàm trựng tờn phải khỏc nhau về tham số:
• Số lượng
• Thứ tự
• Kiểu
• Quy tắc gọi hàm
– Tỡm hàm cú kiểu tham số phự hợp.
– Dựng phộp ộp kiểu tự ủộng.
– Tỡm hàm gần ủỳng (phự hợp) nhất.
31
Tỏi ủịnh nghĩa hàm
Vd
int Max (int a, int b)
{ return (a>b) ? a : b; }
float Max (float a, float b)
{ return (a>b) ? a : b; }
SinhVien Max (SinhVien a, SinhVien b)
32
{return (a.diemtb > b.diemtb) ? a : b; }
void main() {
int x1=1, y1=2;
float x2=3, y2=4;
long x3=5, y3=6;
cout << Max(x1,y1)<<“\t”<<Max(x2,y2)<<endl;
cout << Max(x3,y1) <<endl;
cout << Max(x3,y2) <<endl;
cout << Max(x3,y3) <<endl;
}
Tỏi ủịnh nghĩa hàm
Vd
int F (int a=0, int b=1)
{ }
float F (float a=5, float b=9)
{ }
33
void main() {
int x1=1, y1=2;
float x2=3, y2=4;
long x3=5, y3=6;
cout << F(x1)<<“\t”<<F(y2)<<endl;
cout << F(x3) << F() << endl;
}
Hàm inline
• Giảm thời gian thực thi chương trỡnh.
• Tăng kớch thước của mó lệnh thực thi.
• Chỉ nờn ủịnh nghĩa inline khi hàm cú kớch thước nhỏ.
• Cỳ phỏp : thờm từ khúa inline vào trước hàm.
VD: inline float sqr(float x) {
return (x*x);
}
inline int Max(int a, int b) {
return ((a>b) ? a : b) ;
}
34
Truyền tham số
• Truyền theo giỏ trị
– Giỏ trị tham số khi ra khỏi hàm sẽ khụng thay ủổi.
void Swap1(int a, int b) {
int temp = a;
a = b;
b = temp;
5
10
x
y
a
b
main Swap1
STEP
01
35
}
void main(){
int x = 5, y = 10;
Swap1( x , y );
cout << “ x = “ << x
<< “ y = “ << y
<< endl;
}
5
10
x
y
5
10
a
b
main Swap1
STEP
02
5
10
x
y
10
5
a
b
main Swap1
STEP
03
Truyền tham số
• Truyền theo ủịa chỉ (con trỏ)
– Giỏ trị tham số khi ra khỏi hàm cú thể thay ủổi.
void Swap2(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
5
10
x
y
a
b
main Swap2
STEP
01
100
200
36
}
void main(){
int x = 5, y = 10;
Swap2( &x , &y );
cout << “ x = “ << x
<< “ y = “ << y
<< endl;
}
5
10
x
y
100
200
a
b
main Swap2
STEP
02
100
200
10
5
x
y
100
200
a
b
main Swap2
STEP
03
100
200
Struct
• Khỏi niệm
Struct là 1 dạng cấu trỳc dữ liệu mà bản thõn cú thể chứa
nhiều loại dữ liệu cú kiểu khỏc nhau.
• Khai bỏo
37
SinhVien a;
2 bytes
2 bytes
4 bytes
8 bytes
diemtb
namsinh
*hoten
masosv[]
Struct
• Biến kiểu struct :
SinhVien a, b, ds1[20], *ds2;
• Truy xuất cỏc thành phần của struct :
cin >> a.masosv;
cout << “Tuoi cua b la : “<<b.tuoi;
cin >> ds[19].namsinh;
ds2->hoten = new char[50];
• Gỏn struct :
SinhVien c = a;
• Con trỏ struct :
SinhVien *ds= new SinhVien[100];
38
39
Bài tập
• Viết struct cho quản lý kho hàng húa (tồn kho) gồm cỏc
thụng tin tờn hàng,
ằ Tờn hàng
ằSố lượng,
• Khi nhập hàng sẽ cho biết tờn hàng,
ằ số lượng,
• Khi xuất sẽ chọn hàng cú trong kho
ằ số lượng bỏn
40
Các file đính kèm theo tài liệu này:
- chapter2_5847_1993463.pdf