Thông tin tài liệu:
Chương này tiếp tục cung cấp các kiên thức về hàm nâng cao. Các nội dung cụ thể được trình bày trong chương này gồm: Tham số, khuôn mẫu hàm, nạp chồng hàm, nạp chồng hàm. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 2) - ThS. Đặng Bình PhươngBộmônCôngnghệphầnmềmKhoaCôngnghệthôngtinTrườngĐạihọcKhoahọcTựnhiên KỸTHUẬTLẬPTRÌNH ThS.ĐặngBìnhPhương dbphuong@fit.hcmus.edu.vn HÀMNÂNGCAO (PHẦN2) 1 &&VCVC BB BB Nộidung 1 Tham số … 2 Khuôn mẫu hàm 3 Nạp chồng hàm 4 Nạp chồng toán tử Hàmnângcao(phần2) 2 &&VCVC BB BB Thamsố… Khaibáo (, …) { … } Ýnghĩa Hàmcósốlượngthamsốkhôngbiếttrướcvà thườngcùngkiểu(khôngđượclàchar, unsignedchar,float). Phảicóítnhất1thamsốbiếttrước. Thamsố…đặtởcuốicùng. Hàmnângcao(phần2) 3 &&VCVC BB BB Thamsố… Vídụ void XuatTong1(char *msg, int n, …) { // Các lệnh ở đây } void XuatTong2(char *msg, …) { // Các lệnh ở đây } int Tong(int a, …) { // Các lệnh ở đây } Hàmnângcao(phần2) 4 &&VCVC BB BB Truyxuấtdanhsáchthamsố… Sửdụngkiểuvàcácmacrosau(stdarg.h) va_list:kiểudữliệuchứacácthamsốcó trong… va_start(va_listap,lastfix):macrothiếtlậpap chỉđếnthamsốđầutiêntrong…vớilastfixlà tênthamsốcốđịnhcuốicùng. typeva_arg(va_listap,type):macrotrảvề thamsốcókiểutypetiếptheo. va_end(va_listap):macrogiúpchohàmtrả vềgiátrịmộtcách“bìnhthường”. Hàmnângcao(phần2) 5 &&VCVC BB BB Thamsố… Vídụ #include void XuatTong1(char *msg, int n, …) { va_list ap; va_start(ap, n); // ts cố định cuối cùng int value, s = 0; for (int i=0; i &&VCVC BB BB Thamsố… Vídụ #include void XuatTong2(char *msg, …) { va_list ap; va_start(ap, msg); // ts cố định cuối int value, s = 0; while ((value = va_arg(ap, int)) != 0) { s = s + value; } va_end(ap); printf(“%s %d”, msg, s); } Hàmnângcao(phần2) 7 &&VCVC BB BB Thamsố… Vídụ #include int Tong(int a, …) { va_list ap; va_start(ap, n); // ts cố định cuối cùng int value, s = a; while ((value = va_arg(ap, int)) != 0) { s = s + value; } va_end(ap); return s; } Hàmnângcao(phần2) 8 &&VCVC BB BB Khuônmẫuhàm Viếthàmtìmsốnhỏnhấttrong2số Viếtcáchàmkhácnhauđểtìmmin2sốint,2 sốlong,2sốfloat,2sốdouble,2phânsố… Nhượcđiểm Hàmbảnchấtgiốngnhaunhưngkháckiểu dữliệunênphảiviếtnhiềuhàmgiốngnhau. Sửa1hàmphảisửanhữnghàmcònlại. Khôngthểviếtđủcáchàmchomọitrường hợpdocònnhiềukiểudữliệukhác. Hàmnângcao(phần2) 9 &&VCVC BB BB Khuônmẫuhàm Kháiniệm Viếtmộthàmduynhấtnhưngcóthểsửdụng chonhiềukiểudữliệukhácnhau. Cúpháp tempate Vídụ template hoặc template Hàmnângcao(phần2) 10 &&VCVC BB BB Khuônmẫuhàm Vídụ template T min(T a, T b) { if (a < b) return a; return b; } void main() { int a = 2912, b = 1706; int m = min(a, b); printf(“So nho nhat la %d”, m); } Hàmnângcao(phần2) 11 &&VCVC BB BB Khuônmẫuhàm Lợiíchcủaviệcsửdụngkhuônmẫuhàm Dễviết,dochỉcầnviếthàmtổngquánhất. Dễhiểu,dochỉquantâm ...