Lập trình hướng đối tượng & C++ - Chương 2: Các đặc điểm của C++

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

pdf10 trang | Chia sẻ: putihuynh11 | Lượt xem: 583 | Lượt tải: 0download
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:

  • pdfchapter2_5847_1993463.pdf