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
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
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:
- bai_giang_ngon_ngu_lap_trinh_c_chuong_1_tong_quan_ngo_huu_du.pdf