Bài giảng Kỹ thuật lập trình: Bài 1 do TS. Ngô Hữu Dũng biên soạn cung cấp cho người học các kiến thức: Giải thuật đệ quy, quy nạp toán học, lập trình đệ quy, kiểu dữ liệu cấu trúc, kiểu cấu trúc - struct, kiểu hợp - union, biến động và kiểu con trỏ, biến động và tĩnh, biểu con trỏ - pointer, biểu tập tin và vào ra dữ liệu,...
TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Kỹ thuật lập trình Programming Fundamentals Ngơ Hữu Dũng Bài – Giới thiệu Blog: http://monktlt.blogspot.com/ Group: https://www.facebook.com/groups/monktlt Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Nội dung Giải thuật đệ quy Kiểu liệu cấu trúc Kiểu cấu trúc - struct Kiểu hợp - union Biến động kiểu trỏ Quy nạp tốn học Lập trình đệ quy Biến động tĩnh Kiểu trỏ - pointer Kiểu tập tin vào liệu Các thao tác với tập tin Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Tài liệu Slide giảng Brian W Kernighan and Dennis M Ritchie The C Programming Language (Second Edition) Prentice-Hall Englewood Cliffs, New Jersey, 1988 Bản dịch tiếng Việt: Giáo trình Ngơn ngữ lập trình C Bài tập thực hành Tham khảo thêm Phạm Văn Ất Kỹ thuật lập trình C NXB Khoa học Kỹ thuật, 1995 Randal E.Bryant and David R.O’Hallaron Computer’s Perspective, 2001 Bjarne Stroustrup The C++ Programming Language, AT&T Labs Murray Hill, New Jersey Addison-Wesley, 1997 Andy Oram and Greg Wilson, Beautiful Code, 2007 cplusplus.com Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Lịch trình Tuần Nội dung Lý thuyết Thực hành Thảo luận Tự học 4 4 2 Quy nạp tốn học Lập trình đệ quy Kiểu cấu trúc ứng dụng 3 (Bài tập) 10 Biến động kiểu trỏ (Bài tập) 11 12 13 14 15 (Bài tập) Kiểu tập tin, vào/ra liệu Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Kiểm tra đánh giá Kiểm tra thường kỳ: 20% Kiểm tra kỳ: 30% Kiểm tra cuối kỳ: 50% Số tín chỉ: (60 tiết) Lý thuyết: 24 Thảo luận: Thực hành: 30 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Ơn tập qua số ví dụ 10 11 12 #include #include /*Tập tin header*/ /*Tập tin header*/ int main() //Chương trình { int x, y, z; //Khai báo biến x = 5; y = 10; z = x + y; printf("Tong la %d", z); getch(); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Hằng số 10 11 12 13 #include #define PI 3.14 /* PI số */ int main() { int r; // Bán kính hình trịn float S; // Diện tích hình trịn printf("Nhap ban kinh hinh tron: "); scanf("%d", &r); S = PI * r * r; printf("Dien tich hinh tron = %f\n", S); printf("Chu vi hinh tron = %f", 2*r*PI); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Hoán vị – Dùng biến tạm #include int main() { int x, y, temp; // temp biến tạm x = 10;y = 60; printf("x = %d, y = %d.\n",x, y); temp = x; // Hoán vị dùng biến tạm x = y; y = temp; printf("Hoan vi: x = %d, y = %d.",x, y); return 0; } 10 11 12 // Khai báo thư viện Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Hốn vị – Khơng dùng biến tạm #include int main() { int x, y; // Không dùng biến tạm x = 10;y = 60; printf("x = %d, y = %d.\n",x, y); x = x + y; y = x - y; x = x - y; printf("Hoan vi: x = %d, y = %d.",x, y); return 0; } 10 11 12 10 // Khai báo thư viện Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng Mảng – dãy số 10 11 12 13 16 #include int main() { int mang[5]; // Dãy số gồm phần tử int i = 3; mang[0] = 1; // Phần tử đầu tiên: mang[0] mang[1] = mang[0] + 1; mang[2] = mang[0] + mang[1]; mang[i++] = mang[i-2] + mang[i-1]; mang[i] = mang[i-2] + mang[i-1]; printf("%d",mang[4]); return mang[4]; mang[0] mang[1] mang[2] mang[3] } ? ? ? Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngơ Hữu Dũng mang[4] ? Mảng (tiếp theo) 10 11 12 17 #include int main() { float diemky1[3] = {5.9, 8.6, 7.4}; float diemky2[] = {6.3, 8.5, 6.3}; float toan, ly, hoa; toan = (diemky1[0] + diemky2[0])/2; ly = (diemky1[1] + diemky2[1])/2; hoa = (diemky1[2] + diemky2[2])/2; printf("Diem tong ket: %.1f",(toan+ly+hoa)/3); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Mảng đa chiều Học kỳ (cột 0) 10 11 12 18 Học kỳ (cột 1) Toán (hàng 0) diem[0][0]=5.9 diem[0][0]=6.3 #include Lý (hàng 1) diem[0][0]=8.6 diem[0][0]=8.5 int main() Hóa (hàng 2) diem[0][0]=6.4 diem[0][0]=5.3 { float diem[3][2] = {{5.9,6.3},{8.6,8.5},{6.4,5.3}}; float toan, ly, hoa, tongket; toan=(diem[0][0]+diem[0][1])/2; ly=(diem[1][0]+diem[1][1])/2; hoa=(diem[2][0]+diem[2][1])/2; tongket = (toan+ly+hoa)/3; printf("Diem tong ket: %.1f.",tongket); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Chuỗi ký tự 10 11 12 13 14 19 #include #include 'C' 'h' 'a' 'o' int main() { char ten [30]; char gioithieu[50] = "Toi ten la "; char chao[6] = {'C','h','a','o','!','\0'}; printf("Nhap ten cua ban: "); scanf("%[^\n]s",&ten); strcat(gioithieu,ten); printf("%s \n%s \n", chao, gioithieu); printf("Ten cua toi co %d ky tu.",strlen(ten)); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng '!' '\0' Kiểu liệt kê - enum 10 11 12 13 14 15 16 20 #include enum week {SUN, MON, TUE, WED, THU, FRI, SAT}; int main() { enum week today; int date=5; today = TUE; printf("Hôm "); (today==0)?printf("CN"):printf("thứ %d",today+1); printf("\nNgày hẹn "); if (date==SAT||date==SUN) printf("cuối tuần."); else printf("ngày tuần."); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng else if 10 11 12 13 14 15 16 17 18 21 #include enum week {SUN, MON=2, TUE, WED, THU, FRI, SAT}; int main() { enum week today=WED; printf("Hom la "); if (today==MON) printf("thu hai."); else if (today==TUE) printf("thu ba."); else if (today==WED) printf("thu tu."); else if (today==THU) printf("thu nam."); else if (today==FRI) printf("thu sau."); else printf("cuoi tuan."); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Switch 10 11 12 13 14 15 16 17 18 19 22 #include #include int main() { time_t t = time(NULL); // Lấy thời gian struct tm *time = localtime(&t); // Đưa vào tm struct int today = time->tm_wday; // Week day từ đến printf("Hom la "); switch (today) { case 1: printf("thu hai.");break; case 2: printf("thu ba.");break; case 3: printf("thu tu.");break; case 4: printf("thu nam.");break; case 5: printf("thu sau.");break; default: printf("cuoi tuan."); } return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng Switch (tiếp theo) 10 11 12 13 14 23 #include int main() { int m = 1; switch(m) { case 0: printf("Zero\n"); case 1: printf("One\n"); case 2: printf("Two\n"); case 3: printf("Three\n"); } printf("m = %d\n", m); return 0; } Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng For 10 11 12 24 #include int main() { int a[10] = {1,2,3,4,5,-6,7,-8,9,10}; int i, tong = 0; for (i=0; i