Bài giảng Kỹ thuật lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng

pdf 30 trang ngocly 3390
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_bai_1_gioi_thieu_ngo_huu_dung.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng

  1. 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
  2. Bài 1 – Giới thiệu Blog: Group: 2 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  3. Nội dung  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  Kiểu con trỏ - pointer  Kiểu tập tin và vào ra dữ liệu  Các thao tác với tập tin 3 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  4. Tài liệu  Slide bài 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 và 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 4 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  5. Lịch trình Tuần Nội dung Lý thuyết Thực hành Thảo luận Tự học 1 Quy nạp toán học và Lập trình đệ quy 2 4 2 2 4 3 2 4 4 2 3 6 5 3 2 (Bài tập) 5 6 Kiểu cấu trúc và ứng dụng 2 3 6 7 2 3 6 8 2 3 6 9 2 3 5 10 Biến động và kiểu con trỏ 3 2 (Bài tập) 5 11 2 3 5 12 2 3 5 13 2 (Bài tập) 5 14 Kiểu tập tin, vào/ra dữ liệu 2 3 5 15 2 4 5 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  6. Kiểm tra đánh giá  Kiểm tra thường kỳ: 20%  Kiểm tra giữa kỳ: 30%  Kiểm tra cuối kỳ: 50%  Số tín chỉ: 4 (60 tiết)  Lý thuyết: 24  Thảo luận: 6  Thực hành: 30 6 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  7. Ôn tập qua một số ví dụ 1. #include /*Tập tin header*/ 2. #include /*Tập tin header*/ 3. int main() //Chương trình chính 4. { 5. int x, y, z; //Khai báo biến 6. x = 5; 7. y = 10; 8. z = x + y; 9. printf("Tong la %d", z); 10. getch(); 11. return 0; 12. } 7 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  8. Hằng số 1. #include 2. #define PI 3.14 /* PI là hằng số */ 3. int main() 4. { 5. int r; // Bán kính hình tròn 6. float S; // Diện tích hình tròn 7. printf("Nhap ban kinh hinh tron: "); 8. scanf("%d", &r); 9. S = PI * r * r; 10. printf("Dien tich hinh tron = %f\n", S); 11. printf("Chu vi hinh tron = %f", 2*r*PI); 12. return 0; 13. } 8 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  9. Hoán vị – Dùng biến tạm 1. #include // Khai báo thư viện 2. int main() 3. { 4. int x, y, temp; // temp là biến tạm 5. x = 10;y = 60; 6. printf("x = %d, y = %d.\n",x, y); 7. temp = x; // Hoán vị dùng biến tạm 8. x = y; 9. y = temp; 10. printf("Hoan vi: x = %d, y = %d.",x, y); 11. return 0; 12. } 9 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  10. Hoán vị – Không dùng biến tạm 1. #include // Khai báo thư viện 2. int main() 3. { 4. int x, y; // Không dùng biến tạm 5. x = 10;y = 60; 6. printf("x = %d, y = %d.\n",x, y); 7. x = x + y; 8. y = x - y; 9. x = x - y; 10. printf("Hoan vi: x = %d, y = %d.",x, y); 11. return 0; 12. } 10 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  11. Toán tử quan hệ 1. #include // Khai báo thư viện 2. int main() 3. { 4. int a, b, c = 10; 5. printf("Nhap a:"); scanf("%d",&a); 6. printf("Nhap b:"); scanf("%d",&b); 7. if (a b) printf("a lon hon b.\n"); 9. if (a==c) printf("a bang c.\n"); 10. if (a!=c) printf("a khac c.\n"); 11. return 0; 12. } 11 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  12. Toán tử luận lý 1. #include 2. int main() 3. { 4. int a, b = 10; 5. printf("a = "); scanf("%d",&a); 6. if (a >= 10 && a b || a < b)?printf("a khác b."):printf("a bằng b."); 11. return 0; 12. } 12 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  13. Toán tử tăng, giảm 1. #include 2. int main() 3. { 4. int a, b = 10; 5. a = ++b; // Tăng trước 6. printf("a = %d, b = %d\n", a, b); 7. a = b++; // Tăng sau 8. printf("a = %d, b = %d\n", a, b); 9. a = b * 2; // Giảm trước 10. printf("a = %d, b = %d\n", a, b); 11. a = b * 2; // Giảm sau 12. printf("a = %d, b = %d\n", a, b); 13. return 0; 14. } 13 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  14. Toán tử trên bit #include int main() { int a = 52; // 0011 0100 int b = 29; // 0001 1101 int c; c = a & b; // Phép AND 0001 0100 printf("%d & %d = %d\n", a, b, c); c = a | b; // Phép OR 0011 1101 printf("%d | %d = %d\n", a, b, c); c = a ^ b; // Phép XOR 0010 1001 printf("%d ^ %d = %d\n", a, b, c); c = ~a; // Phép NOT 1100 1011 printf("~%d = %d\n", a, c); c = a > 2; // Dịch phải 0000 1101 printf("%d >> 2 = %d\n", a, c); return 0; } 14 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  15. Toán tử gán 1. #include 2. int main() 3. { 4. int a = 5, b; 5. b = a++; printf("b = a++; a = %d, b = %d. \n", a, b); 6. b += a; printf("b += a; a = %d, b = %d. \n", a, b); 7. b -= a; printf("b -= a; a = %d, b = %d. \n", a, b); 8. b *= a; printf("b *= a; a = %d, b = %d. \n", a, b); 9. b /= a; printf("b /= a; a = %d, b = %d. \n", a, b); 10. b = 40; 11. b %= a; printf("b %= a; a = %d, b = %d. \n", a, b); 12. b &= a; printf("b &= a; a = %d, b = %d. \n", a, b); 13. b |= a; printf("b |= a; a = %d, b = %d. \n", a, b); 14. b ^= a; printf("b ^= a; a = %d, b = %d. \n", a, b); 15. return 0; 16. } 15 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  16. Mảng – dãy số 1. #include 2. int main() 3. { 4. int mang[5]; // Dãy số gồm 5 phần tử 5. int i = 3; 6. mang[0] = 1; // Phần tử đầu tiên: mang[0] 7. mang[1] = mang[0] + 1; 8. mang[2] = mang[0] + mang[1]; 9. mang[i++] = mang[i-2] + mang[i-1]; 10. mang[i] = mang[i-2] + mang[i-1]; 11. printf("%d",mang[4]); 12. return mang[4]; mang[0] mang[1] mang[2] mang[3] mang[4] 13. } 1 ? ? ? ? 16 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  17. Mảng (tiếp theo) 1. #include 2. int main() 3. { 4. float diemky1[3] = {5.9, 8.6, 7.4}; 5. float diemky2[] = {6.3, 8.5, 6.3}; 6. float toan, ly, hoa; 7. toan = (diemky1[0] + diemky2[0])/2; 8. ly = (diemky1[1] + diemky2[1])/2; 9. hoa = (diemky1[2] + diemky2[2])/2; 10. printf("Diem tong ket: %.1f",(toan+ly+hoa)/3); 11. return 0; 12. } 17 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  18. Mảng đa chiều Học kỳ 1 (cột 0) Học kỳ 2 (cột 1) Toán (hàng 0) diem[0][0]=5.9 diem[0][0]=6.3 1. #include Lý (hàng 1) diem[0][0]=8.6 diem[0][0]=8.5 2. int main() Hóa (hàng 2) diem[0][0]=6.4 diem[0][0]=5.3 3. { 4. float diem[3][2] = {{5.9,6.3},{8.6,8.5},{6.4,5.3}}; 5. float toan, ly, hoa, tongket; 6. toan=(diem[0][0]+diem[0][1])/2; 7. ly=(diem[1][0]+diem[1][1])/2; 8. hoa=(diem[2][0]+diem[2][1])/2; 9. tongket = (toan+ly+hoa)/3; 10. printf("Diem tong ket: %.1f.",tongket); 11. return 0; 12. } 18 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  19. Chuỗi ký tự 1. #include 2. #include 3. int main() 'C' 'h' 'a' 'o' '!' '\0' 4. { 5. char ten [30]; 6. char gioithieu[50] = "Toi ten la "; 7. char chao[6] = {'C','h','a','o','!','\0'}; 8. printf("Nhap ten cua ban: "); 9. scanf("%[^\n]s",&ten); 10. strcat(gioithieu,ten); 11. printf("%s \n%s \n", chao, gioithieu); 12. printf("Ten cua toi co %d ky tu.",strlen(ten)); 13. return 0; 14. } 19 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  20. Kiểu liệt kê - enum 1. #include 2. enum week {SUN, MON, TUE, WED, THU, FRI, SAT}; 3. int main() 4. { 5. enum week today; 6. int date=5; 7. today = TUE; 8. printf("Hôm nay là "); 9. (today==0)?printf("CN"):printf("thứ %d",today+1); 10. printf("\nNgày hẹn là "); 11. if (date==SAT||date==SUN) 12. printf("cuối tuần."); 13. else 14. printf("ngày trong tuần."); 15. return 0; 16. } 20 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  21. else if 1. #include 2. enum week {SUN, MON=2, TUE, WED, THU, FRI, SAT}; 3. int main() 4. { 5. enum week today=WED; 6. printf("Hom nay la "); 7. if (today==MON) printf("thu hai."); 8. else if (today==TUE) 9. printf("thu ba."); 10. else if (today==WED) 11. printf("thu tu."); 12. else if (today==THU) 13. printf("thu nam."); 14. else if (today==FRI) 15. printf("thu sau."); 16. else printf("cuoi tuan."); 17. return 0; 18. } 21 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  22. Switch 1. #include 2. #include 3. int main() 4. { 5. time_t t = time(NULL); // Lấy thời gian hiện tại 6. struct tm *time = localtime(&t); // Đưa vào tm struct 7. int today = time->tm_wday; // Week day từ 0 đến 6. 8. printf("Hom nay la "); 9. switch (today) 10. { 11. case 1: printf("thu hai.");break; 12. case 2: printf("thu ba.");break; 13. case 3: printf("thu tu.");break; 14. case 4: printf("thu nam.");break; 15. case 5: printf("thu sau.");break; 16. default: printf("cuoi tuan."); 17. } 18. return 0; 19. } 22 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  23. Switch (tiếp theo) 1. #include 2. int main() 3. { 4. int m = 1; 5. switch(m) 6. { 7. case 0: printf("Zero\n"); 8. case 1: printf("One\n"); 9. case 2: printf("Two\n"); 10. case 3: printf("Three\n"); 11. } 12. printf("m = %d\n", m); 13. return 0; 14. } 23 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  24. For 1. #include 2. int main() 3. { 4. int a[10] = {1,2,3,4,5,-6,7,-8,9,10}; 5. int i, tong = 0; 6. for (i=0; i<5; i++) 7. { 8. tong = tong + a[i]; 9. } 10. printf("Tong = %d", tong); 11. return 0; 12. } 24 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  25. For (tiếp theo) 1. #include 2. #include 3. int main() 4. { 5. char string[20]="Lap trinh C",c; 6. int i,j; 7. for (i=0,j=strlen(string)-1;i<j;i++,j ) 8. { 9. c=string[i]; 10. string[i]=string[j]; 11. string[j]=c; 12. } 13. printf("%s",string); 14. return 0; 15. } 25 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  26. While 1. #include 2. int main() 3. { 4. int a[10] = {1,2,3,4,5,-6,7,-8,9,10}; 5. int i = 0, tong = 0; 6. while (i<8) 7. { 8. tong = tong + a[i]; 9. i++; 10. } 11. printf("Tong = %d",tong); 12. return 0; 13. } 26 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  27. Do while 1. #include 2. int main() 3. { 4. int a;char c; 5. do{ 6. printf("Nhap vao mot so chan: "); 7. scanf("%d",&a); 8. }while (a%2!=0); 9. do{ 10. scanf("%c",&c); 11. }while (c!='e'); 12. return 0; 13. } 27 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  28. Break 1. #include 2. #define n 10 3. int main() 4. { 5. int i, tong = 0; 6. int a[n] = {1,2,3,4,5,-6,7,-8,9,10}; 7. for (i = 0;i < n;i++) 8. { 9. if (a[i]<0) 10. break; 11. tong = tong + a[i]; 12. } 13. printf("Tong = %d",tong); 14. return 0; 15. } 28 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  29. Continue 1. #include 2. #define n 10 3. int main() 4. { 5. int i, tong = 0; 6. int a[n] = {1,2,3,4,5,-6,7,-8,9,10}; 7. for (i = 0;i < n;i++) 8. { 9. if (a[i]<0) 10. continue; 11. tong = tong + a[i]; 12. } 13. printf("Tong = %d",tong); 14. return 0; 15. } 29 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
  30. Hết bài 1  Giới thiệu  Nội dung  Tài liệu  Lịch trình  Kiểm tra Blog:  Ôn tập qua ví dụ Group: 30 Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng