Phương pháp lập trình - Tổng quan - Ngô Hữu Dũng

Tài liệu Phương pháp lập trình - Tổng quan - Ngô Hữu Dũng: Phương pháp lập trình 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 Phương pháp lập trình - Tổng quan Blog ngohuudung.blogspot.com Email ngohuudung@iuh.edu.vn 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  Thuật toán  Hàm – chương trình con  Kiểu dữ liệu mảng và chuỗi  Giải thuật đệ quy  Kiểu dữ liệu cấu trúc  Kiểu con trỏ, tập tin Phương pháp lập trình - Tổng quan3 Tài liệu Phương pháp lập trình - 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 L...

pdf45 trang | Chia sẻ: putihuynh11 | Lượt xem: 586 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Phương pháp lập trình - Tổng quan - 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
Phương pháp lập trình 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 Phương pháp lập trình - Tổng quan Blog ngohuudung.blogspot.com Email ngohuudung@iuh.edu.vn 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  Thuật toán  Hàm – chương trình con  Kiểu dữ liệu mảng và chuỗi  Giải thuật đệ quy  Kiểu dữ liệu cấu trúc  Kiểu con trỏ, tập tin Phương pháp lập trình - Tổng quan3 Tài liệu Phương pháp lập trình - 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 Phương pháp lập trình - 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 7.5 5-6 Vòng lặp – thuật toán 6 6 TK 15 7-8 Hàm – chương trình con 6 6 GK 15 9-10 Mảng và chuỗi 6 6 15 11 Lập trình đệ quy 3 3 7.5 12 Kiểu cấu trúc 3 3 7.5 13 Kiểu con trỏ 3 3 TK 7.5 14 Kiểu tập tin 3 6 15 Ôn tập 3 CK 6 45 30 105 5 Kiểm tra đánh giá Phương pháp lập trình - 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ỉ: 4  Lý thuyết: 45  Thực hành: 30  Tự học: 105 6 Thảo luận Phương pháp lập trình - Tổng quan7  Why?  What?  How?  Where?  When? Giới thiệu về môn học qua một số ví dụ Phương pháp lập trình - 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  Lựa chọn các biến và cấu trúc dữ liệu  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 Các bước giải bài toán Phương pháp lập trình - Tổng quan9  Xác định yêu cầu  Nhập 2 số nguyên, tính tổng, xuất ra tổng.  Lựa chọn các biến  2 biến số nguyên  1 biến tổng kiểu số nguyên  Xây dựng thuật toán và trình tự  Khai báo các biến  Nhập vào 2 số nguyên  Tính tổng  Xuất kết quả 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. } Phương pháp lập trình - Tổng quan10 Nhận xét Phương pháp lập trình - Tổng quan11  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) Phương pháp lập trình - Tổng quan12  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 Phương pháp lập trình - Tổng quan13  Đề 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 ý: #include /*Khai báo thư viện*/ int main() //Chương trình chính { . . . // Khai báo biến . . . // Nhập . . . // Biểu thức, tính toán . . . // Xuất return 0; //Kết thúc } Tính tổng, hiệu, tích, thương (tham khảo 1) Phương pháp lập trình - 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; 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 tính tổng 11. hieu = x - y; //Biểu thức tính hiệu 12. tich = x * y; //Biểu thức tính tích 13. thuong = (float)x / y; //Biểu thức tính thương 14. printf("Tong la %d \n", tong); // Xuất tổng 15. printf("Hieu la %d \n", hieu); // Xuất hiệu 16. printf("Tich la %d \n", tich); // Xuất tích 17. printf("Thuong la %f \n", thuong); // Xuất thương 18. return 0; //Kết thúc 19. } Tính tổng, hiệu, tích, thương (tham khảo 2) Phương pháp lập trình - Tổng quan15 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 Phương pháp lập trình - Tổng quan16  Đề 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 Phương pháp lập trình - Tổng quan17  Đề 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. } Phương pháp lập trình - Tổng quan18 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. } Phương pháp lập trình - Tổng quan19 Khoảng cách Phương pháp lập trình - Tổng quan20  Đề 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. } Phương pháp lập trình - Tổng quan21 Một số khái niệm Phương pháp lập trình - Tổng quan22  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  Chú thích  // Lời chú thích  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 Phương pháp lập trình - Tổng quan23  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/ Phương pháp lập trình - Tổng quan24 Nội dung môn học Phương pháp lập trình - Tổng quan25  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 Tìm hiểu sơ lược nội dung qua ví dụ Phương pháp lập trình - Tổng quan26  Thuật toán?  Toán tử ?  Luận lý?  Quan hệ?  Tăng giảm?  Trên bit?  Gán?  Lệnh rẽ nhánh?  if, else, else if  switch  Vòng lặp?  for  while  do while  Hàm?  Mảng?  Chuỗi?  Đệ quy?  Kiểu cấu trúc?  Kiểu con trỏ?  Kiểu tập tin? Thuật toán ? Phương pháp lập trình - Tổng quan27  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. 9. // Hoán vị 10. temp = x; 11. x = y; 12. y = temp; 13. printf("x=%d, y=%d.", x, y); 14. return 0; 15. } 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"); Phương pháp lập trình - Tổng quan28 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. } Phương pháp lập trình - Tổng quan29 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. } Phương pháp lập trình - Tổng quan30 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. } Phương pháp lập trình - Tổng quan31 Lệnh rẽ nhánh ? – if – else if - else Phương pháp lập trình - Tổng quan32  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ý  &&  || 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. } Phương pháp lập trình - Tổng quan33 Vòng lặp ? – for – while – do while Phương pháp lập trình - Tổng quan34  Đề 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 ? 35 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 14. } Phương pháp lập trình - 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 ? ? ? ? Phương pháp lập trình - Tổng quan36 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' Phương pháp lập trình - Tổng quan37 Đệ quy ? 38 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. } Phương pháp lập trình - Tổng quan Kiểu dữ liệu cấu trúc ? 39 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. } Phương pháp lập trình - Tổng quan Kiểu con trỏ - pointer ? 40 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 Phương pháp lập trình - Tổng quan Đọc tập tin ? 41 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. } Phương pháp lập trình - Tổng quan Ghi vào tập tin ? 42 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. } Phương pháp lập trình - Tổng quan Một số gợi ý Phương pháp lập trình - Tổng quan43  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 Phương pháp lập trình - 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ụ 44 Nội dung tiếp theo (Yêu cầu tự học trước) Phương pháp lập trình - Tổng quan45  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  Chú thích  // Lời chú thích  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ác file đính kèm theo tài liệu này:

  • pdfbai_giang_phuong_phap_lap_trinh_ts_ngo_huu_dung_1_phuong_phap_lap_trinh_tong_quan_7137_1985347.pdf