Bài giảng Ngôn ngữ lập trình C - Chương 1: Tổng quan - Ngô Hữu Dũng

Nội dung

 Các thành phần cơ bản

 Nhập xuất dữ liệu và các thư viện

 Các câu lệnh có cấu trúc

 Vòng lặp

 Hàm

 Mảng và chuỗi

 Giải thuật đệ quy

 Kiểu dữ liệu cấu trúc

 Kiểu con trỏ

 Kiểu tập tin

pdf 45 trang yennguyen 4300
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình C - Chương 1: Tổng quan - Ngô Hữu Dũng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Ngôn ngữ lập trình C - Chương 1: Tổng quan - Ngô Hữu Dũng

Bài giảng Ngôn ngữ lập trình C - Chương 1: Tổng quan - Ngô Hữu Dũng
Ngôn ngữ lập trình C
Tổng quan
TS. 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
Ngôn ngữ lập trình C - Tổng quan
Email ngohuudung@iuh.edu.vn
Blog ngohuudung.blogspot.com/
2
Nội dung
 Các thành phần cơ bản
 Nhập xuất dữ liệu và các thư viện
 Các câu lệnh có cấu trúc
 Vòng lặp
 Hàm
 Mảng và chuỗi
 Giải thuật đệ quy
 Kiểu dữ liệu cấu trúc
 Kiểu con trỏ
 Kiểu tập tin
Ngôn ngữ lập trình C - Tổng quan3
Tài liệu
Ngôn ngữ lập trình C - Tổng quan
 Brian W. Kernighan and Dennis M. Ritchie. The C 
Programming Language (Second Edition). Prentice-Hall. 
Englewood Cliffs, New Jersey, 1988.
 Slide, bài giảng
 Bài tập thực hành
 Bản dịch tiếng Việt: Giáo trình Ngôn ngữ lập trình C
 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
Lịch trình
Ngôn ngữ lập trình C - Tổng quan
Tuần Nội dung
Lý
thuyết
Thực
hành
Kiểm
tra
Tự học
1 Giới thiệu môn học 3 6
2
Các thành phần cơ bản của Ngôn ngữ C
3
6
Nhập xuất dữ liệu và các thư viện 6
3 Các câu lệnh có cấu trúc 3 3 6
4 Hàm – chương trình con 3 3 TK 6
5 Mảng và chuỗi 3 3 GK 6
6 Quy nạp toán học và Lập trình đệ quy 3 3 6
7 Kiểu cấu trúc và ứng dụng 3 3 6
8 Biến động và kiểu con trỏ 3 3 6
9 Kiểu tập tin, vào/ra dữ liệu 3 3 TK 6
10 Ôn tập 3 3 6
11-12 6 CK 12
30 30
5
Kiểm tra đánh giá
Ngôn ngữ lập trình C - Tổng quan
 Lý thuyết
 Kiểm tra thường kỳ
 Thi cuối kỳ
 Thực hành
 Kiểm tra thường kỳ
 Thi giữa kỳ
 Kiểm tra cuối kỳ
 Điểm liệt: <3
 Số tín chỉ: 3 (60 tiết)
 Lý thuyết: 30
 Thực hành: 30
6
Thảo luận
Ngôn ngữ lập trình C - Tổng quan7
 Học cái gì?
 Học như thế nào?
 Vì sao phải học môn này?
 Kỹ sư là gì?
 Làm thế nào để giải được một bài toán?
Giới thiệu về môn học qua một số ví dụ
Ngôn ngữ lập trình C - Tổng quan8
 Nhập, tính toán, xuất
 Đề bài: Viết chương trình nhập vào hai số nguyên, xuất ra
màn hình tổng của hai số nguyên đó.
 Các bước chính để giải bài toán:
 Xác định rõ yêu cầu của bài toán
 Xây dựng giải thuật (cách giải) cho bài toán
 Xây dựng trình tự để giải bài toán
 Viết chương trình (cài đặt) và biên dịch
 Chạy thử và sửa lỗi
 Hoàn thiện và tối ưu hóa
Tính tổng hai số nguyên
1. #include /*Khai báo thư viện*/
2. int main() //Chương trình chính
3. {
4. int x, y, tong; //Khai báo biến
5. printf("Nhap x: ");
6. scanf("%d", &x); //Nhập x
7. printf("Nhap y: ");
8. scanf("%d", &y); //Nhập y
9. tong = x + y; //Biểu thức
10. printf("Tong la %d \n", tong);// Xuất
11. return 0; //Kết thúc
12. }
Ngôn ngữ lập trình C - Tổng quan9
Nhận xét
Ngôn ngữ lập trình C - Tổng quan10
 Khai báo thư viện: Chứa các hàm cần dùng
 #include 
 #include 
 #include 
 Chương trình chính: Nơi chương trình bắt đầu
 int main()
 {
 (nội dung chương trình)
 return 0;
 }
 Khai báo biến: Lưu trữ dữ liệu
 Kiểu , ;
 int x, y, tong, hieu, tich;
 float thuong;// Biến kiểu số thực
Nhận xét (2)
Ngôn ngữ lập trình C - Tổng quan11
 Nhập: Nhập từ bàn phím giá trị cho biến
 scanf("", &);
 scanf("%d", &x);
 scanf("%f", &z);
 Biểu thức: Phép gán, tính toán
 = ;
 tong = x + y; tich = x * y;
 thuong = (float)x/y;
 Xuất: Xuất ra màn hình dòng chữ, giá trị của biến
 printf("", ,);
 printf("Tong la %d \n", tong);
 printf("Thuong la %f \n", thuong);
Tính tổng, hiệu, tích, thương
Ngôn ngữ lập trình C - Tổng quan12
 Đề bài: Viết chương trình nhập vào hai số nguyên, xuất ra
màn hình tổng, hiệu, tích và thương của của số nguyên đó.
 Gợi ý:
1. #include /*Khai báo thư viện*/
2. int main() //Chương trình chính
3. {
4. . . . // Khai báo biến
5. . . . // Nhập
6. . . . // Biểu thức, tính toán
7. . . . // Xuất
8. return 0; //Kết thúc
9. }
Tính tổng, hiệu, tích, thương (tham khảo 1)
Ngôn ngữ lập trình C - Tổng quan13
1. #include /*Khai báo thư viện*/
2. int main() //Chương trình chính
3. {
4. int x, y, tong, hieu, tich;
5. float thuong; //Khai báo
6. printf("Nhap so nguyen x: ");
7. scanf("%d", &x); //Nhập x
8. printf("Nhap so nguyen y: ");
9. scanf("%d", &y); //Nhập y
10. tong = x + y; //Biểu thức
11. hieu = x - y; //Biểu thức
12. tich = x * y; //Biểu thức
13. thuong = (float)x / y; //Biểu thức
14. printf("Tong la %d \n", tong); // Xuất
15. printf("Hieu la %d \n", hieu); // Xuất
16. printf("Tich la %d \n", tich); // Xuất
17. printf("Thuong la %f \n", thuong); // Xuất
18. return 0; //Kết thúc
19. }
Tính tổng, hiệu, tích, thương (tham khảo 2)
Ngôn ngữ lập trình C - Tổng quan14
1. #include //Khai báo thư viện
2. int main() //Chương trình chính
3. {
4. int x, y, tong, hieu, tich; //Khai báo
5. float thuong;
6. printf("Nhap vao hai so nguyen: ");
7. scanf("%d%d", &x, &y); //Nhập x, y
8. tong = x + y; hieu = x - y;//Biểu thức
9. tich = x * y; thuong = (float)x / y;
10. printf("%d + %d = %d \n", x, y, tong);// Xuất
11. printf("%d - %d = %d \n", x, y, hieu);
12. printf("%d * %d = %d \n", x, y, tich);
13. printf("%d / %d = %f \n", x, y, thuong);
14. return 0; //Kết thúc
15. }
Hình chữ nhật
Ngôn ngữ lập trình C - Tổng quan15
 Đề bài: Viết chương trình nhập vào hai cạnh của hình chữ
nhật, xuất ra màn hình diện tích và chu vi của hình chữ
nhật.
 Gợi ý:
 Khai báo thư viện
 Chương trình chính
 Khai báo biến
 Nhập
 Biểu thức
 Xuất
 Kết thúc
a
b
DT = ?
CV = ?
Hình tròn
Ngôn ngữ lập trình C - Tổng quan16
 Đề bài: Viết chương trình nhập vào bán kính hình tròn, 
xuất ra màn hình diện tích và chu vi hình tròn.
 Gợi ý:
 Kiểu biến?
 Hằng số? rDT = ?
CV = ?
Hình tròn (tham khảo)
1. #include 
2. int main()
3. {
4. float r; // Bán kính
5. float DT, CV; // Diện tích, chu vi
6. printf("Nhap ban kinh hinh tron: ");
7. scanf("%f", &r);
8. DT = 3.14 * r * r;
9. CV = 2 * 3.14 * r;
10. printf("Dien tich hinh tron: %f\n", DT);
11. printf("Chu vi hinh tron: %f", CV);
12. return 0;
13. }
Ngôn ngữ lập trình C - Tổng quan17
Hằng số
1. #include 
2. #define PI 3.14 // PI là hằng số
3. int main()
4. {
5. float r; // Bán kính
6. float DT, CV; // Diện tích, chu vi
7. printf("Nhap ban kinh hinh tron: ");
8. scanf("%f", &r);
9. DT = PI * r * r;
10. CV = 2 * PI * r;
11. printf("Dien tich hinh tron: %.2f\n", DT);
12. printf("Chu vi hinh tron: %.2f", CV);
13. return 0;
14. }
Ngôn ngữ lập trình C - Tổng quan18
Khoảng cách
Ngôn ngữ lập trình C - Tổng quan19
 Đề bài: Viết chương trình nhập vào tọa độ của hai điểm
A(xA, yA) và B(xB, yB), xuất ra màn hình khoảng cách
giữa hai điểm.
 Gợi ý:
 Thư viện math.h?
 Hàm sqrt tính căn bậc hai
 Hàm pow tính lũy thừa
A(xA, yA)
B(xB, yB)
Khoảng cách (tham khảo)
1. #include 
2. #include 
3. int main()
4. {
5. float xA, yA; // A(xA, yA)
6. float xB, yB; // B(xB, yB)
7. float KC; // Khoảng cách
8. printf("Nhap A(xA, yA): ");
9. scanf("%f%f", &xA, &yA);
10. printf("Nhap B(xB, yB): ");
11. scanf("%f%f", &xB, &yB);
12. KC = sqrt(pow(xA-xB,2) + pow(yA-yB,2));
13. printf("Khoang cach: %f\n", KC);
14. return 0;
15. }
Ngôn ngữ lập trình C - Tổng quan20
Một số khái niệm
Ngôn ngữ lập trình C - Tổng quan21
 Thư viện
 stdio.h, math.h
 Chương trình chính
 int main(){}
 Kiểu biến
 int, float
 Tên biến
 xA, xB
 Nhập
 scanf(“%d”,&x);
 Xuất
 printf(“hello!”);
 Biểu thức
 tong = x + y;
 Toán tử
 +, -, *, /
 Hằng số
 #define PI 3.14
 Hàm
 sqrt, pow, scanf, printf
Công cụ lập trình
Ngôn ngữ lập trình C - Tổng quan22
 C-Free
Một số trình biên dịch khác
 Codeblocks: 
 Dev-C++: 
 Visual studio: 
US/products/visual-studio-express-vs
 TurboC: 
windows-7-windows-8-and-windows-xp/
 Eclipse: 
 Netbeans: https://netbeans.org/downloads/index.html
 Ideone: Biên dịch online, hỗ trợ nhiều ngôn ngữ lập trình
https://ideone.com/
Ngôn ngữ lập trình C - Tổng quan23
Một số khái niệm khác
Ngôn ngữ lập trình C - Tổng quan24
 Thuật toán/giải thuật?
 Cách giải bài toán
 Toán tử?
 Quan hệ, luận lý, tăng/giảm, 
gán, trên bit
 Lệnh cấu trúc?
 if, else, switch, case
 for, while, do while
 Vòng lặp?
 for, while, do while
 Hàm?
 Chương trình con
 Mảng?
 Dãy số
 Chuỗi ký tự
 Các thao tác cơ bản
 Đếm, tìm kiếm, tính toán, 
thêm, xóa, sắp xếp
 Đệ quy?
 Hàm gọi lại chính nó
 Kiểu cấu trúc?
 Do người dùng định nghĩa
 Kiểu con trỏ?
 Biến lưu địa chỉ của biến
 Kiểu tập tin?
 Thao tác với tập tin
Thuật toán ?
Ngôn ngữ lập trình C - Tổng quan25
 Ví dụ: Viết chương trình hoán vị hai số nguyên.
1. #include 
2. int main()
3. {
4. int x, y, temp;
5. x = 10;
6. y = 60;
7. printf("x=%d, y=%d.\n", x, y);
8. // Hoán vị
9. temp = x;
10. x = y;
11. y = temp;
12. printf("x=%d, y=%d.", x, y);
13. return 0;
14. }
Lệnh cấu trúc ? – if – else if - else
Ngôn ngữ lập trình C - Tổng quan26
 Ví dụ: Tìm giá trị lớn nhất giữa hai số nguyên A và B.
1. if (a>b) 
2. printf("a lon nhat");
3. else
4. printf("b lon nhat");
1. if (a>b) 
2. printf("a lon nhat");
3. else if (a==b)
4. printf("a bang b");
5. else
6. printf("b lon nhat");
 Toán tử quan hệ
 >
 <
 >=
 <=
 ==
 !=
 Toán tử luận lý
 &&
 ||
Toán tử luận lý ?
1. if (a >= 10 && a < 100)
2. printf("a la so co 2 chu so.\n");
3. if (a = 100)
4. printf("a khong la so co 2 chu so.\n");
5. if (a >= 10 && a < 100)
6. printf("a la so co 2 chu so.\n");
7. else
8. printf("a khong la so co 2 chu so.\n");
Ngôn ngữ lập trình C - Tổng quan27
10 100
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. // Tương đương: b = b + 1; a = b;
7. a = b++; // Tăng sau
8. // Tương đương: a = b; b = b + 1;
9. a = --b * 2; // Giảm trước
10. // Tương đương: b = b - 1; a=b*2;
11. a = b-- * 2; // Giảm sau
12. // Tương đương: a=b*2; b = b - 1;
13. return 0;
14. }
Ngôn ngữ lập trình C - Tổng quan28
Toán tử trên bit ?
1. #include 
2. int main()
3. {
4. int a = 52; // 0011 0100
5. int b = 29; // 0001 1101
6. int c;
7. c = a & b; // Phép AND 0001 0100
8. printf("%d & %d = %d\n", a, b, c);
9. c = a | b; // Phép OR 0011 1101
10. printf("%d | %d = %d\n", a, b, c);
11. c = a ^ b; // Phép XOR 0010 1001
12. printf("%d ^ %d = %d\n", a, b, c);
13. c = ~a; // Phép NOT 1100 1011
14. printf("~%d = %d\n", a, c);
15. c = a << 2; // Dịch trái 1101 0000
16. printf("%d << 2 = %d\n", a, c);
17. c = a >> 2; // Dịch phải 0000 1101
18. printf("%d >> 2 = %d\n", a, c);
19. return 0;
20. }
Ngôn ngữ lập trình C - Tổng quan29
Toán tử gán ?
1. #include 
2. int main()
3. {
4. int a = 5, b;
5. b = a++; // b=a;a=a+1;
6. b += a; // b = b + a;
7. b -= a; // b = b – a;
8. b *= a; // b = b * a;
9. b /= a; // b = b / a;
10. b = 40; 
11. b %= a; // b = b % a;
12. b &= a; // b = b & a;
13. b |= a; // b = b | a;
14. b ^= a; // b = b ^ a;
15. return 0;
16. }
Ngôn ngữ lập trình C - Tổng quan30
Lệnh switch ? – Lựa chọn các trường hợp
1. #include 
2. #include 
3. int main()
4. {
5. time_t t = time(NULL);
6. struct tm *time = localtime(&t);
7. int today = time->tm_wday;
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. }
Ngôn ngữ lập trình C - Tổng quan31
Vòng lặp ? – for – while – do while
Ngôn ngữ lập trình C - Tổng quan32
 Đề bài: Xuất ra màn hình các số nguyên từ 0 đến 10.
1. int i;
2. for (i = 0; i <= 10; i++)
3. printf("%d ", i);
1. i = 0;
2. do{
3. printf("%d ", i);
4. i++;
5. }while(i <= 10);
1. i = 0;
2. while(i <= 10)
3. {
4. printf("%d ", i);
5. i++;
6. }
Hàm/Chương trình con ?
33
1. #include 
2. int nhan(int x, int y) // Hàm nhan kiểu int
3. {
4. int z; // Biến z lưu giá trị phép nhân
5. z = x * y; // Thực hiện phép nhân
6. return z; // Trả về giá trị cho hàm nhan
7. }
8. void main()
9. {
10. int a, b, c; // Khai báo
11. a = b = 5; // Gán giá trị cho a và b
12. c = nhan(a, b); // c = giá trị hàm nhan
13. printf("%d x %d = %d",a,b,c); // Xuất kết quả
14. }
Ngôn ngữ lập trình C - Tổng quan
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;
6. mang[0] = 0;// Phần tử đầu tiên
7. mang[1] = 1;
8. mang[2] = mang[0] + mang[1];
9. mang[3] = mang[1] + mang[2];
10. i = 4;
11. mang[i] = mang[i-2] + mang[i-1];
12. printf("%d",mang[i]);
13. return 0;
14. }
mang[0] mang[1] mang[2] mang[3] mang[4]
0 ? ? ? ?
Ngôn ngữ lập trình C - Tổng quan34
Chuỗi ký tự ?
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 co %d ky tu.",strlen(ten));
13. return 0;
14. }
'C' 'h' 'a' 'o' '!' '\0'
Ngôn ngữ lập trình C - Tổng quan35
Đệ quy ?
36
1. #include 
2. int factorial(int n)
3. {
4. if (n<=0) return 1;
5. return n * factorial(n-1);
6. }
7. void main()
8. {
9. int n;
10. do{
11. scanf("%d",&n);
12. }while(n<0);
13. printf("Factorial(%d) = %d", n, factorial(n));
14. }
Ngôn ngữ lập trình C - Tổng quan
Kiểu dữ liệu cấu trúc ?
37
1. #include 
2. struct sinhvien // Khai báo kiểu struct
3. {
4. int ID; // Biến ID kiểu nguyên
5. float diem; // Biến điểm kiểu số thực
6. };
7. void main()
8. {
9. struct sinhvien a; // Khai báo biến
10. a.ID = 123456; // Gán ID cho a.ID
11. a.diem = 5.5; // Gán điểm cho a.diem
12. printf("ID: %s\n", a.ID); // Xuất ID
13. printf("Diem: %d\n", a.diem); // Xuất diem
14. }
Ngôn ngữ lập trình C - Tổng quan
Kiểu con trỏ - pointer ?
38
1. #include 
2. int main()
3. {
4. int x = 20; // Giá trị của biến x
5. int *p; // Biến con trỏ
6. p = &x; // Gán địa chỉ của biến x cho p
7. printf("Gia tri cua bien x: %d \n", x);
8. printf("Dia chi cua bien x: %p \n", &x);
9. printf("Dia chi luu trong bien p: %p \n", p);
10. printf("Gia tri cua *p: %d \n", *p);
11. p = NULL; // Gán giá trị rỗng
12. printf("Dia chi luu trong bien p: %p.", p);
13. return 0;
14. }
Biến x p
Địa chỉ 0073FB60 0073FB54
Giá trị 20 0073FB60
Ngôn ngữ lập trình C - Tổng quan
Đọc tập tin ?
39
1. #include 
2. void main()
3. {
4. FILE *f; // Khai báo biến kiểu FILE
5. char buffer[256]; // Kiểu chuỗi
6. f = fopen("input.txt", "r"); // Mở file
7. if (f == NULL) // Không có file này
8. printf("Lỗi khi mở file\n");
9. else
10. {
11. while (fgets(buffer, 256, f) != NULL)
12. printf("%s",buffer); // Xuất
13. fclose(f); // Đóng file
14. }
15. }
Ngôn ngữ lập trình C - Tổng quan
Ghi vào tập tin ?
40
1. #include 
2. void main()
3. {
4. FILE *f; // Khai báo biến kiểu FILE
5. char buffer[256]="Lap trinh C";// Kiểu chuỗi
6. f = fopen("output.txt", "w");// Mở file để ghi
7. if (f == NULL) // Không có file này
8. printf("Loi khi mo file\n");
9. else
10. {
11. fputs(buffer, f); // Ghi chuỗi vào file
12. fclose(f); // Đóng file
13. }
14. }
Ngôn ngữ lập trình C - Tổng quan
Nội dung tuần tới
Ngôn ngữ lập trình C - Tổng quan41
 Thư viện
 stdio.h, math.h, string.h
 Chương trình chính
 int main(){}
 Kiểu biến
 int, float
 Tên biến
 xA, xB
 Nhập
 scanf(“%d”,&x);
 Xuất
 printf(“hello!”);
 Biểu thức
 tong = x + y;
 Toán tử
 +, -, *, /
 Hằng số
 #define PI 3.14
 Hàm
 sqrt, pow, scanf, printf
Nội dung môn học
Ngôn ngữ lập trình C - Tổng quan42
 Thuật toán/giải thuật?
 Cách giải bài toán
 Lệnh cấu trúc?
 if, else, switch, case
 for, while, do while
 Vòng lặp?
 for, while, do while
 Hàm?
 Chương trình con
 Mảng?
 Dãy số
 Chuỗi ký tự
 Các thao tác cơ bản
 Đếm, tìm kiếm, tính toán, 
thêm, xóa, sắp xếp
 Đệ quy?
 Hàm gọi lại chính nó
 Kiểu cấu trúc?
 Do người dùng định nghĩa
 Kiểu con trỏ?
 Biến lưu địa chỉ của biến
 Kiểu tập tin?
 Thao tác với tập tin
C - ngôn ngữ lập trình nền tảng
Ngôn ngữ lập trình C - Tổng quan43
Một số gợi ý
Ngôn ngữ lập trình C - Tổng quan44
 Bám sát các nội dung thực hành (quan trọng!)
 Đọc tài liệu, slide trước khi đến lớp
 In tài liệu, slide, bài tập
 Tự đặt câu hỏi và trả lời
 Tự làm bài tập ở nhà
 Tóm tắt các nội dung chủ yếu
 Vắng học?
Hết bài 1
Ngôn ngữ lập trình C - Tổng quan
 Giới thiệu
 Nội dung
 Tài liệu
 Lịch trình
 Kiểm tra
 Nội dung môn học qua một số ví dụ
45

File đính kèm:

  • pdfbai_giang_ngon_ngu_lap_trinh_c_chuong_1_tong_quan_ngo_huu_du.pdf