Gái trình Lập trình hướng đối tượng với C++
Tóm tắt Gái trình Lập trình hướng đối tượng với C++: ...định sẽ không được phát sinh nữa. Khi đó mọi câu lệnh xây dựng đối tượng mới đều sẽ gọi đến một hàm tạo của lớp. Nếu không tìm thấy hàm tạo cần gọi thì Chương trình dịch sẽ báo lỗi. Điều này thường xẩy ra khi chúng ta không xây dựng hàm tạo không đối, nhưng lại sử dụng các khai báo không tham ... C::xuat(); cout << "\n" << "So nguyen lop D = " << d << " Chuoi lop D: " << str ; } } ; void main() { D h1; clrscr(); h1.nhap(); D h2(h1); cout<<"\n\nH2:"; h2.xuat(); h1.nhap(); cout<<"\n\nH2:"; h2.xuat(); cout<<"\n\nH...a tạo như thể xuất dữ liệu ra cout (xem các mục trên). + Cách 2: Dùng hàm tạo 1 để xây dựng một dòng xuất. Sau đó dùng phương thức open để mở một tệp cụ thể và cho gắn với dòng xuất vừa xây dựng. Khi không cần làm việc với tệp này nữa, chúng ta có thể dùng phương thức close để chấm dứt mọi r...
for(i=1;i<=n;++i) b[i]=rand(); cout<<"\nDay ban dau\n "; for(i=1;i<=n;++i) cout <<b[i]<<" "; cout<<"\n\nCac day tang sap xep theo "; cout << "select_sort, quick_sort, heap_sort\n"; for(k=0; k<3; ++k) { for(i=1;i<=n;++i) a[i]=b[i]; s[k]->sapxep (a+1,n,sizeof(int),ss_tang); //In for(i=1;i<=n;++i) cout <<a[i]<<" "; cout<<"\n"; } cout<<"\n\nCac day giam sap xep theo "; cout << "select_sort, quick_sort, heap_sort\n"; for(k=0; k<3; ++k) { for(i=1;i<=n;++i) a[i]=b[i]; s[k]->sapxep (a+1,n,sizeof(int),ss_giam); //In for(i=1;i<=n;++i) cout <<a[i]<<" "; cout << "\n"; } getch(); } Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 376 tenshi3003@gmail.com Phụ lục 1 Thứ tự ưu tiên của các phép toán Các phép toán được chia thành 16 nhóm. Các phép toán trong cùng nhóm có mực độ ưu tiên như nhau. Về trình tự kết hợp thì: + Các phép tính của nhóm 2, nhóm 14 và toán tử gán (nhóm 15) kết hợp từ phải sang trái. + Các phép toán còn lại kết hợp từ trái qua phải. 1. Nhóm một () Gọi hoàm (Function call) [] Chỉ số mảng (Array subscript) -> Chọn gián tiếp một thành phần (indirect component selector) :: Xác định phạm vi truy nhập (scope access/resolution) . Chọn trực tiếp một thành phần (direct component selector) 2. Nhóm hai () Gọi hoàm (Function call) ! Phủ định logic (Logical negation -NOT) ~ Lấy phần bù theo bit (Bitwise (1's) complement) + Dấu cộng (Unary plus) - Dấu trừ (Unary minus) ++ Phép tăng một (Preincrement or postincrement) -- Phép giảm một (Predecrement or postdecrement) & Phép lấy địa chỉ (Address) * Truy nhập gián tiếp (Indirection) sizeof Cho kích thước của toán hạng (returns size of operand, in bytes) new Cấp phát bộ nhớ động (dynamically allocates C++ storage) delete Giải phóng bộ nhớ (dynamically deallocates C++ storage) 3. Nhóm ba * Nhân ( Multiply) / Chia (Divide) % Lấy phần dư (Remainder - modulus) 4. Nhóm bốn .* Gọi gián tiếp tới thành phần từ một biến đối tượng ->* Gọi gián tiếp tới thành phần từ một con trỏ đối tượng 5. Nhóm năm + Cộng (Binary plus) - Trừ (Binary minus) 6. Nhóm sáu << Dịch trái (Shift left) Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 377 tenshi3003@gmail.com >> Dịch phải (Shift right) 7. Nhóm bẩy < Nhỏ hơn (Less than) <= Nhỏ hơn hoặc bằng (Less than or equal to) > Lớn hơn (Greater than) >= Lớn hơn hoặc bằng (Greater than or equal to) 8. Nhóm tám == Bằng (Equal to) != Không bằng (Not equal to) 9. Nhóm chín & Phép và theo bit (Bitwise AND) 10. Nhóm mười ^ Phép hoặc loại trừ theo bit (Bitwise XOR) 11. Nhóm mười một | Phép hoặc theo bit (Bitwise OR) 12. Nhóm mười hai && Phép và logic (Logical AND) 13. Nhóm mười ba && Phép hoặc logic (Logical OR) 14. Nhóm mười bốn ?: Toán tử điều kiện (a ? x : y means "if a then x, else y") 15. Nhóm mười năm = Phép gán đơn giản (Simple assignment) *= Phép gán sau khi nhân (Assign product) /= Phép gán sau khi chia (Assign quotient) %= Phép gán sau khi lấy phần dư (Assign remainder) += Phép gán sau khi cộng (Assign sum) -= Phép gán sau khi trừ (Assign difference) &= Phép gán sau khi AND theo bit (Assign bitwise AND) ^= Phép gán sau khi XOR theo bit (Assign bitwise XOR) |= Phép gán sau khi OR theo bit (Assign bitwise OR) <<= Phép gán sau khi dịch trái (Assign left shift) >>= Phép gán sau khi dịch phải (Assign right shift) 16. Nhóm mười sáu , Toán tử phẩy dùng để phân cách các phần tử Tất cả các toán tử nói trên đều có thể định nghĩa chồng trừ các toán tử sau: . Chọn trực tiếp một thành phần Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 378 tenshi3003@gmail.com .* Gọi gián tiếp tới thành phần từ một biến đối tượng :: Toán tử xác định phạm vi truy nhập ?: Toán tử điều kiện Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 379 tenshi3003@gmail.com Phụ lục 2 Các từ khóa của c++ asm double new switch auto else operator template break enum private this case extern protected throw catch float public try char for register typedef class friend return union const goto short unsigned continue if signed virtual default inline sizeof void delete int static volatile do long struct while Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 380 tenshi3003@gmail.com Phụ lục 3 Bảng mã asskey và giải quyết 1. Bảng mã ascii Bộ ký tự ASCII gồm 256 ký tự được phân bố như sau: + 32 ký tự đầu tiên là các ký tự điều khiển không in được như ký tự Enter (mã 13), ký tự ESC (mã 27). + Các mã ASCII 32-47, 58-64, 91-96 và 123-127 là các ký tự đặc biệt như dấu chấm, dấu phẩy, dấu cách, dấu ngoặc, dấu móc, dấu hỏi,... + Các mã ASCII 48-57 là 10 chữ số + Các mã ASCII 65-90 là các chữ cái hoa từ A đến Z + Các mã ASCII 97-122 là các chữ cái thường từ a đến z Lưu ý: Chữ thường có mã ASCII lớn hơn 32 so với chữ hoa tương ứng. Ví dụ mã ASCII của a là 97 còn mã ASCII của A là 65. + Các mã ASCII 128-255 là các ký tự đồ hoạ. Bảng sau cho mã ASCII của 128 ký tự đầu tiên. Để nhận được các ký tự đồ hoạ (có mã từ 128 đến 255) có thể dùng chương trình sau: // In các ký tự đồ hoạ lên màn hình #include #include main() { int i; clrscr(); for (i=128; i<=255; ++i) printf("%6d%2c",i,i); } Bảng mã ASCII mã ký tự mã ký tự mã ký tự (Số TT) (Số TT) (Số TT) 0 NUL 26 SUB 52 4 1 SOH 27 ESC 53 5 2 STX 28 FS 54 6 3 ETX 29 GS 55 7 4 EOT 30 RS 56 8 5 ENQ 31 US 57 9 6 ACK 32 Space 58 : 7 BEL 33 ! 59 ; 8 BS 34 “ 60 < 9 HT 35 # 61 = Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 381 tenshi3003@gmail.com 10 LF 36 $ 62 > 11 VT 37 % 63 ? 12 FF 38 & 64 @ 13 CR 39 ‘ 65 A 14 SO 40 ( 66 B 15 SI 41 ) 67 C 16 DLE 42 * 68 D 17 DC1 43 + 69 E 18 DC2 44 , 70 F 19 DC3 45 - 71 G 20 DC4 46 . 72 H 21 NAK 47 / 73 I 22 SYN 48 0 74 J 23 ETB 49 1 75 K 24 CAN 50 2 76 L 25 EM 51 3 77 M 78 N 95 _ 112 p 79 O 96 * 113 q 80 P 97 a 114 r 81 Q 98 b 115 s 82 R 99 c 116 t 83 S 100 d 117 u 84 t 101 e 118 v 85 U 102 f 119 w 86 V 103 g 120 x 87 W 104 h 121 y 88 X 105 i 122 z 89 Y 106 J 123 { 90 Z 107 k 124 | 91 [ 108 l 125 } 92 \ 109 m 126 ~ 93 ] 110 n 127 DEL 94 ^ 111 o 2. Bảng mã scan từ bàn phím Mỗi phím trên bàn phím của IBM PC đều được gán một con số, gọi là mã scan, từ 1 đến 83. IBM PC AT đùng một nhóm mã khác, từ 1 đến 108 các mã này bắt đầu bằng các phím số, các phím chữ, rồi đến các phím chức năng và cuối cùng là các phím cho con trỏ, khi một phím được nhấn thì bộ xử lý của bàn phím gửi cho CPU mã scan tương ứng, khi nó được nhả thì mã scan cộng thêm 80 hex sẽ được gửi tiếp cho CPU. Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 382 tenshi3003@gmail.com Hex Thập phân Phím của PC Phím của PC-AT 1 1 ESC Tilde 2-B 2-11 1-9,0 1-9,0 C 12 trừ, gạch dưới trừ, gạch dưới D 13 =, + =, + E 14 Backspace \,thanh đứng F 15 Tab Backspace 10 16 Q Tab 11 17 W Q 12 18 E W 13 19 R E 14 20 T R 15 21 Y T 16 22 U Y 17 23 I U 18 24 O I 19 25 P O 1A 26 [ P 1B 27 ] [ 1C 28 Enter ] 1D 29 Ctrl 1E 30 A Ctrl 1F 31 S A 20 32 D S 21 33 F D 22 34 G F 23 35 H G 24 36 J H 25 37 K J 26 38 L K 27 39 Chấm phẩy, : L 28 40 Nháy Chấm phẩy,: 29 41 Tidle Nháy 2A 42 Shift trái 2B 43 \, thanh đứng Enter 2C 44 Z Shift trái 2D 45 X 2E 46 C Z 2F 47 V X 30 48 B C Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 383 tenshi3003@gmail.com 31 49 N V 32 50 M B 33 51 Phảy N 34 52 Chấm M 35 53 /,? Phảy 36 54 Shift phải Chấm 37 55 *, PrtScr /, ? 38 56 Alt 39 57 Space bar Shift phải 3A 58 Caps Lock Alt 3B 59 F1 3C 60 F2 3D 61 F3 Space bar 3E 62 F4 3F 63 F5 40 64 F6 Caps Lock 41 65 F7 F2 42 66 F8 F4 43 67 F9 F6 44 68 F10 F8 45 69 Num Lock F10 46 70 Scroll Lock,Break F1 47 71 Home F3 48 72 mũi tên lên F5 49 73 PgUp F7 4A 74 Dấu trừ bàn tính F9 4B 75 Mũi tên trái 4C 76 5 của bàn tính 4D 77 Mũi tên phải 4F 79 End 50 80 Mũi tên xuống 51 81 PgDn 52 82 Ins 53 83 Del 5A 90 ESC 5B 91 Home 5C 92 Mũi tên trái 5D 93 End 5F 95 Num Lock 60 96 Mũi tên lên Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 384 tenshi3003@gmail.com 61 97 5 của bàn tính 62 98 Mũi tên xuống 63 99 Ins 64 100 Scroll Lock 65 101 PgUp 66 102 Mũi tên phải 67 103 PgDn 68 104 Del 69 105 Sys 6A 106 *, PrtScr 6B 107 - 6C 108 + Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 385 tenshi3003@gmail.com Phụ lục 4 Hàm với đối số bất định trong C Trong các giáo trình C thường chỉ hướng dẫn cách xây dựng hàm với các đối cố định. Mỗi đối cần có một tham số (cùng kiểu với nó) trong lời gọi hàm. Tuy nhiên một vài hàm chuẩn của C lại không như vậy, mà linh hoạt hơn, chẳng khi dùng hàm printf hay scanf thì số tham số mà ta cung cấp cho hàm là không cố định cả về số lượng lẫn kiểu cách. Ví dụ trong câu lệnh: printf(“\n Tổng = %d “ , 3+4+5) ; có 2 tham số, nhưng trong câu lệnh: printf(“\n Hà Nội“ ) ; chỉ có một tham số. Như vậy cần phân biệt các khái niệm sau: - Đối số cố định được khai báo trong dòng đầu của hàm, nó có tên và kiểu - Tham số ứng với đối số cố định gọi là tham số cố định - Đối bất định được khai báo bởi ba dấu chấm: bất định cả về số lượng và kiểu - Tham số bất định (ứng với đối bất định) là một danh sách giá trị với số lượng và kiểu tuỳ ý (không xác định) Trong phụ lục này sẽ trình bầy cách xây dựng các hàm với đối số bất định. Công cụ chủ yếu được dùng là con trỏ và danh sách. 1. Biến con trỏ Biến con trỏ (hay con trỏ) dùng để chứa địa chỉ của biến, mảng, hàm, ... Có nhiều kiểu địa chỉ, vì vậy cũng có nhiều kiểu con trỏ. Biến con trỏ được khai báo theo mẫu: Kiểu *Tên_biến_con_trỏ ; Ví dụ: float px ; // px là con trỏ thực Các phép toán quan trọng trên con trỏ gồm: + Gán địa chỉ một vùng nhớ cho con trỏ (dùng toán tử gán, phép lấy địa chỉ, các hàm cấp phát bộ nhớ) + Truy nhập vào vùng nhớ thông qua con trỏ, dùng phép toán: *Tên_con_trỏ (Để ý ở đây có 2 vùng nhớ: vùng nhớ của biến con trỏ và vùng nhớ mà địa chỉ đầu của nó chứa trong biến con trỏ) + Cộng địa chỉ để con trỏ chứa địa chỉ của phần tử tiếp theo, dùng phép toán: ++ Tên_con_trỏ hoặc Tên_con_trỏ ++ Chú ý rằng các phép toán trên chỉ có thể thực hiện đối với con trỏ có kiểu. 2. Danh sách không cùng kiểu Dùng con trỏ có kiểu chỉ quản lý được một danh sách giá trị cùng kiểu, ví dụ dẫy số thực, dẫy số nguyên, dẫy các cấu trúc,.... Khi cần quản lý một danh sách các giá trị không cùng kiểu ta phải dùng con trỏ không kiểu (void) khai báo như sau: void * Tên_con_trỏ ; Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 386 tenshi3003@gmail.com Con trỏ void có thể chứa các địa chỉ có kiểu bất kỳ, và dùng để trỏ đến vùng nhớ chứa danh sách cần quản lý. Một chú ý quan trọng là mỗi khi gửi vào hay lấy ra một giá trị từ vùng nhớ, thì tuỳ theo kiểu giá trị mà ta phải dùng phép chuyển kiểu thích hợp đối với con trỏ. Ví dụ sau minh hoạ cách lập một danh sách gồm một số nguyên, một số thực và một chuỗi ký tự. Chúng ta cần một bộ nhớ để chứa số nguyên, số thực và địa chỉ chuỗi và dùng các con trỏ void để quản lý vùng nhớ này. void *list , *p ; // Con trỏ list trỏ tới đầu danh sách // p dùng để duyệt qua các phần tử của danh sách list=malloc(sizeof(int) + sizeof(float)+ sizeof(char*) ); p=list; *((int*)p) = 12; // Đưa số nguyên 12 vào danh sách ((int*)p)++ ; // Chuyển sang phần tử tiếp theo *((float*)p) = 3.14; // Đưa số thực 3.14 vào danh sách ((float*)p)++ ; // Chuyển sang phần tử tiếp theo *((char**)p) = “HA NOI”; // Đưa địa chỉ chuỗi “HA NOI” // vào danh sách // Nhận các phần tử trong danh sách p=list; // Về đầu danh sách int a = *((int*)p); // Nhận phần tử thứ nhất ((int*)p)++ ; // Chuyển sang phần tử tiếp theo float x= *((float*)p); // Nhận phần tử thứ hai ((float*)p)++ ; // Chuyển sang phần tử tiếp theo char *str = *((char**)p) ; // Nhận phần tử thứ ba 3. Hàm với đối số bất định + Đối bất định bao giờ cũng đặt sau cùng và được khai báo bằng dấu ba chấm. Ví dụ ví dụ hàm void f(int n, char *s, ...) ; có 2 đối cố định là n, s và đối bất định. + Để nhận được các tham số bất định trong lời gọi hàm ta cần lưu ý các điểm sau: - Các tham số bất định chứa trong một danh sách. Để nhận được địa chỉ đầu danh sách ta dùng một con trỏ void và phép gán sau: void *list ; list = ... ; - Dùng một tham số cố định kiểu chuỗi để quy định số lượng và kiểu của mỗi tham số trong danh sách, ví dụ: “3i” hiểu là : tham số bất định gồm 3 giá trị int “3f” hiểu là : tham số bất định gồm 3 giá trị float “fiss” hiểu là có 4 tham số bất định có kiểu lần lượt là float, int, char*, char* Một khi đã biết được địa chỉ đầu danh sách, biết được số lượng và kiểu của mỗi tham số , thì dễ dàng nhận được giá trị các tham số để sử dụng trong thân hàm. Ví dụ sau đây minh hoạ cách xây dựng các hàm với tham số bất định. Hàm dùng để in các giá trị kiểu int, float và char. Hàm có một tham số cố định để cho biết có bao nhiêu giá trị và kiểu các giá trị cần in. Kiểu quy định như sau: i là int, f là float, s là char*. Tham số có 2 cách viết: lặp (gồm một hằng số nguyên và một chữ cái định kiểu) và liệt kê (một dẫy các chữ cái định kiểu). Ví dụ: 563 564 Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 387 tenshi3003@gmail.com “4s” có nghĩa in 4 chuỗi “siif” có nghĩa in một chuỗi, 2 giá trị nguyên và một giá trị thực: #include #include #include #include #include #include void InDanhSachGiaTri(char *st,...) { void *list ; int gt_int ; float gt_float; char *gt_str; int n,i ; char kieu; int lap; list = ... ; // list tro toi vung nho chua danh sach dia chi cac // tham so lap = isdigit(st[0]) ; if (lap) n=st[0] - '0' ; else n=strlen(st); printf("\n n= %d lap = %d",n,lap); getch(); for(i=0;i<n;++i) { if(lap) kieu=st[1]; else kieu = st[i]; printf("\nKieu= %c",kieu); getch(); switch(kieu) { case 'i' : gt_int = *((int*)list); if(!lap) ((int*)list)++ ; printf("\nGia tri %d = %d",i,gt_int); break; Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 388 tenshi3003@gmail.com case 'f' : gt_float = (float) (*((double*)list)); if(!lap) ((double*)list)++ ; printf("\nGia tri %d = %0.2f",i,gt_float); break; case 's' : gt_str = *((char**)list) ; if(!lap) ((char**)list)++ ; printf("\nGia tri %d = %s",i,gt_str); } } } void main() { float x=3.14; int a=123; char *tp="HAI PHONG"; InDanhSachGiaTri("4i",a); InDanhSachGiaTri("4s","HA NOI"); InDanhSachGiaTri("ifsssffii", a, x, tp, tp,"QUY NHON", x, 6.28, a, 246); InDanhSachGiaTri("4f",6.28); getch(); } 4. Hàm không đối và hàm với đối bất định Nhiều người nghĩ hàm khai báo như sau void f(); là hàm không đối trong C. Trong C++ thì hiểu như thế là đúng, còn trong C thì đó là hàm có đối bất định (hàm không đối trong C khai báo như sau: f(void) ). Do không có đối cố định nào cho biết về số lượng và kiểu của các tham số bất định, nên giải pháp ở đây là dùng các biến toàn bộ. Rõ ràng giải pháp này không không thuận tiện cho người dùng vì phải khai báo đúng tên biến toàn bộ và phải khởi gán giá trị cho nó trước khi gọi hàm. Ví dụ trình bầy một hàm chỉ có đối bất định dùng để tính max và min của các giá trị thực. Các tham số bất định được đưa vào theo trình tự sau: Địa chỉ chứa max, địa chỉ chứa min, các giá trị nguyên cần tính max, min. Chương trình dùng biến toàn bộ N để cho biết số giá trị nguyên cần tính max, min. int N; void maxmin() { void *lt = ... ; Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 389 tenshi3003@gmail.com float *max, *min , tg; int i; max = *((float**)lt)++; min = *((float**)lt)++; *max = *min = (float) *((double*)lt)++; for(i=1;i<N;++i) { tg= (float) *((double*)lt)++; if(tg > *max) *max = tg; if(tg < *min) *min = tg; } } Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 390 tenshi3003@gmail.com phụ lục 5 Tóm tắt các hàm của Turbo C theo thứ tự ABC 1. _chmod 2. _close 3. _creat 4. _open 5. abort 6. abs 7. acos 8. arc 9. asin 10. atan 11. atan2 12. atof 13. atoi 14. atol 15. bar 16. bar3d 17. cabs 18. calloc 19. ceil 20. chdir 21. chmod 22. circle 23. cleardevive 24. clearviewport 25. close 26. clreol 27. clrscr 28. coreleft 29. cos 30. cosh 31. cprintf 32. creat 33. cscanf 34. delay 35. delline 36. disable 37. drawpoly Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 391 tenshi3003@gmail.com 38. ecvt 39. ellipse 40. enable 41. exit 42. exp 43. fabs 44. fclose 45. fcloseall 46. fcvt 47. feof 48. ferror 49. fflush 50. fflushall 51. fgetc 52. fgets 53. fillpopy 54. findfirst 55. findnext 56. floodfill 57. floor 58. fmode 59. fopen 60. FP_OFF 61. FP_SEG 62. fprintf 63. fprintf 64. fputc 65. fputs 66. fread 67. free 68. fscanf 69. fseek 70. fteel 71. fwrite 72. gcvt 73. geninterrupt 74. getbkcolor 75. getc 76. getch 77. getchar Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 392 tenshi3003@gmail.com 78. getche 79. getcolor 80. getcwd 81. getdate 82. getimage 83. getlinesettings 84. getmaxcolor 85. getmaxx 86. getmaxy 87. getpalette 88. getpixel 89. gets 90. gettextinfo 91. gettime 92. gettime 93. getvect 94. getviewport 95. getw 96. gotoxy 97. gotoxy 98. grapherrormsg 99. graphresult 100. imagesize 101. initgraph 102. int86 103. int86x 104. intdos 105. intdosx 106. intr 107. inxdigit 108. isalnum 109. isalpha 110. iscntrl 111. isdigit 112. isgraph 113. islower 114. isprint 115. ispunct 116. isspace 117. isupper Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 393 tenshi3003@gmail.com 118. itoa 119. kbhit 120. keep 121. labs 122. line 123. linerel 124. lineto 125. log 126. log10 127. lseek 128. ltoa 129. malloc 130. memccpy hoặc 131. memchr hoặc 132. memcmp hoặc 133. memcpy hoặc 134. memicmp hoặc 135. memset hoặc 136. MK_FP 137. mkdir 138. movedata 139. movedata hoặc 140. moveto 141. nosound 142. open 143. outtext 144. outtextxy 145. peek 146. peekb 147. perror 148. pieslice 149. poke 150. pokeb 151. pow 152. printf 153. putc 154. putch 155. putchar 156. putimage 157. putpixel Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 394 tenshi3003@gmail.com 158. puts 159. putw 160. rand 161. random 162. randomize và 163. read 164. realloc 165. rectangle 166. remove 167. rewind 168. rmdir 169. scanf 170. segread 171. setbkcolor 172. setcolor 173. setdate 174. setfillstyle 175. setlinestyle 176. setpalette 177. settextjustify 178. settextstyle 179. settime 180. setvect 181. setviewport 182. setwritemode 183. sin 184. sinh 185. sleep 186. sound 187. sprintf 188. sqrt 189. srand 190. strcat 191. strchr 192. strcmp 193. strcmpi 194. strcpy 195. strcspn 196. strdup 197. stricmp Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 395 tenshi3003@gmail.com 198. strlen 199. strlwr 200. strncat 201. strncmp 202. strncpy 203. strnicmp 204. strnset 205. strpbrk 206. strrchr 207. strrev 208. strset 209. strspn 210. strstr 211. strupr 212. system 213. tan 214. tanh 215. textbackground 216. textcolor 217. textheight 218. textmode 219. textwidth 220. time 221. tolower 222. toupper 223. ultoa 224. unlink 225. wherex 226. wherey 227. window 228. write Lập Trình Hướng Đối Tượng Với C++ GS: Phạm Văn Ất 396 tenshi3003@gmail.com
File đính kèm:
- gai_trinh_lap_trinh_huong_doi_tuong_voi_c.pdf