Tài liệu Kỹ thuật lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng: Kỹ thuật lập trình
Programming Fundamentals
Ngô Hữu Dũng
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
Bài 1 – Giới thiệu
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20172
Blog:
Group: https://www.facebook.com/groups/monktlt
Ngô Hữu Dũng
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
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20173 Ngô Hữu Dũng
Tài liệu
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20174
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 Da...
30 trang |
Chia sẻ: putihuynh11 | Lượt xem: 505 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu 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
Kỹ thuật lập trình
Programming Fundamentals
Ngô Hữu Dũng
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
Bài 1 – Giới thiệu
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20172
Blog:
Group: https://www.facebook.com/groups/monktlt
Ngô Hữu Dũng
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
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20173 Ngô Hữu Dũng
Tài liệu
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20174
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
Ngô Hữu Dũng
Lịch trình
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20175
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
Kiểu cấu trúc và ứng dụng
2 3 6
5 3 2 (Bài tập) 5
6 2 3 6
7 2 3 6
8
Biến động và kiểu con trỏ
2 3 6
9 2 3 5
10 3 2 (Bài tập) 5
11 2 3 5
12 2 3 5
13
Kiểu tập tin, vào/ra dữ liệu
2 (Bài tập) 5
14 2 3 5
15 2 4
Ngô Hữu Dũng
Kiểm tra đánh giá
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-20176
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
Ngô Hữu Dũng
Ô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
Hằng số
8
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. }
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
9
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Hoán vị – Không dùng biến tạm
10
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Toán tử quan hệ
11
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 nho hon hoac bang b.\n");
8. 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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Toán tử luận lý
12
1. #include
2. int main()
3. {
4. int a, b = 10;
5. printf("a = "); scanf("%d",&a);
6. if (a >= 10 && a < 100)
7. printf("a là số có 2 chữ số.\n");
8. else
9. printf("a không phải là số có 2 chữ số.\n");
10. (a > b || a < b)?printf("a khác b."):printf("a bằng b.");
11. return 0;
12. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Toán tử tăng, giảm
13
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Toán tử trên bit
14
#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 trái 1101 0000
printf("%d << 2 = %d\n", a, c);
c = a >> 2; // Dịch phải 0000 1101
printf("%d >> 2 = %d\n", a, c);
return 0;
}
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Toán tử gán
15
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Mảng – dãy số
16
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];
13. }
mang[0] mang[1] mang[2] mang[3] mang[4]
1 ? ? ? ?
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Mảng (tiếp theo)
17
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Mảng đa chiều
18
1. #include
2. int main()
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. }
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
Lý (hàng 1) diem[0][0]=8.6 diem[0][0]=8.5
Hóa (hàng 2) diem[0][0]=6.4 diem[0][0]=5.3
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Chuỗi ký tự
19
1. #include
2. #include
3. int main()
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. }
'C' 'h' 'a' 'o' '!' '\0'
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Kiểu liệt kê - enum
20
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
else if
21
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Switch
22
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
Switch (tiếp theo)
23
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. }
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-2017 Ngô Hữu Dũng
For
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201724
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. }
Ngô Hữu Dũng
For (tiếp theo)
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201725
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. }
Ngô Hữu Dũng
While
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201726
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. }
Ngô Hữu Dũng
Do while
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201727
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. }
Ngô Hữu Dũng
Break
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201728
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. }
Ngô Hữu Dũng
Continue
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201729
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. }
Ngô Hữu Dũng
Hết bài 1
Kỹ thuật lập trình | DHTH11C | HK1 | 2016-201730
Giới thiệu
Nội dung
Tài liệu
Lịch trình
Kiểm tra
Ôn tập qua ví dụ
Blog:
Group: https://www.facebook.com/groups/monktlt
Ngô Hữu Dũng
Các file đính kèm theo tài liệu này:
- bai_giang_ky_thuat_lap_trinh_ts_ngo_huu_dung_ky_thuat_lap_trinh_ngo_huu_dung_bai_01_6525_1985326.pdf