Nội dung tuần tới
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, printfNội dung môn học
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
45 trang |
Chia sẻ: thucuc2301 | Lượt xem: 688 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Giáo trình Ngôn ngữ lập trình C - Bài 1: Tổng quan - Ngô Hữu Dũng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
Các file đính kèm theo tài liệu này:
- ts_ngo_huu_dung1_ngon_ngu_lap_trinh_c_tong_quan_9813_2021771.pdf