Giáo trình Ngôn ngữ lập trình C - Bài 1: Tổng quan - Ngô Hữu Dũng

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

pdf45 trang | Chia sẻ: thucuc2301 | Lượt xem: 571 | Lượt tải: 1download
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:

  • pdfts_ngo_huu_dung1_ngon_ngu_lap_trinh_c_tong_quan_9813_2021771.pdf