Bài giảng Phương pháp lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình - Bài 1: Giới thiệu - 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
Tài liệu đính kèm:
- bai_giang_phuong_phap_lap_trinh_bai_1_gioi_thieu_ngo_huu_dun.pdf
Nội dung text: Bài giảng Phương pháp lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng
- TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Phương pháp lập trình Tổng quan TS. Ngô Hữu Dũng
- Bài 1 – Giới thiệu Blog ngohuudung.blogspot.com Email ngohuudung@iuh.edu.vn 2 Phương pháp lập trình - Tổng quan
- 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 3 Phương pháp lập trình - Tổng quan
- Tài liệu 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 Phương pháp lập trình - Tổng quan
- Lịch trình Lý Thực Kiểm Tuần Nội dung Tự học thuyết hành tra 1 Giới thiệu môn học 3 6 Các thành phần cơ bản của Ngôn ngữ C 6 2 3 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 Phương pháp lập trình - Tổng quan
- Kiểm tra đánh giá 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 Phương pháp lập trình - Tổng quan
- Thảo luận Why? What? How? Where? When? 7 Phương pháp lập trình - Tổng quan
- Giới thiệu về môn học qua một số ví dụ 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 8 Phương pháp lập trình - Tổng quan
- Các bước giải bài toán 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ả 9 Phương pháp lập trình - Tổng quan
- 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. } 10 Phương pháp lập trình - Tổng quan
- Nhận xét 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 11 Phương pháp lập trình - Tổng quan
- Nhận xét (2) 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); 12 Phương pháp lập trình - Tổng quan
- Tính tổng, hiệu, tích, thương Đề 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 } 13 Phương pháp lập trình - Tổng quan
- Tính tổng, hiệu, tích, thương (tham khảo 1) 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. } 14 Phương pháp lập trình - Tổng quan
- Tính tổng, hiệu, tích, thương (tham khảo 2) 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. } 15 Phương pháp lập trình - Tổng quan
- Hình chữ nhật Đề 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 ý: a Khai báo thư viện Chương trình chính Khai báo biến DT = ? Nhập b CV = ? Biểu thức Xuất Kết thúc 16 Phương pháp lập trình - Tổng quan
- Hình tròn Đề 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ố? DT = ? r CV = ? 17 Phương pháp lập trình - Tổng quan
- 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. } 18 Phương pháp lập trình - Tổng quan
- 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. } 19 Phương pháp lập trình - Tổng quan
- Khoảng cách Đề 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. A(xA, yA) 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 B(xB, yB) 20 Phương pháp lập trình - Tổng quan
- 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. } 21 Phương pháp lập trình - Tổng quan
- Một số khái niệm Thư viện Xuất stdio.h, math.h printf(“hello!”); Chương trình chính Biểu thức int main(){ } tong = x + y; Kiểu biến int, float Toán tử Tên biến +, -, *, / xA, xB Hằng số Chú thích #define PI 3.14 // Lời chú thích Hàm Nhập sqrt, pow, scanf, printf scanf(“%d”,&x); 22 Phương pháp lập trình - Tổng quan
- Công cụ lập trình C-Free 23 Phương pháp lập trình - Tổng quan
- 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: Ideone: Biên dịch online, hỗ trợ nhiều ngôn ngữ lập trình 24 Phương pháp lập trình - Tổng quan
- Nội dung môn học Thuật toán/giải thuật? Các thao tác cơ bản Cách giải bài toán Đếm, tìm kiếm, tính toán, Lệnh cấu trúc? thêm, xóa, sắp xếp if, else, switch, case ĐệĐệ quy? for, while, do while Hàm gọi lại chính nó Vòng lặp? Kiểu cấu trúc? for, while, do while Do người dùng định nghĩa Hàm? Kiểu con trỏ? Chương trình con Biến lưu địa chỉ của biến Mảng? Dãy số Kiểu tập tin? Chuỗi ký tự Thao tác với tập tin 25 Phương pháp lập trình - Tổng quan
- Tìm hiểu sơ lược nội dung qua ví dụ Thuật toán? Vòng lặp? Toán tử ? for while Luận lý? do while Quan hệ? Hàm? Tăng giảm? Mảng? Trên bit? Chuỗi? Gán? Đệ quy? Lệnh rẽ nhánh? Kiểu cấu trúc? if, else, else if Kiểu con trỏ? switch Kiểu tập tin? 26 Phương pháp lập trình - Tổng quan
- Thuật toán ? 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. } 27 Phương pháp lập trình - Tổng quan
- Toán tử luận lý ? 1. if (a >= 10 && a = 100) 4. printf("a khong la so co 2 chu so.\n"); 10 100 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"); 28 Phương pháp lập trình - Tổng quan
- 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. } 29 Phương pháp lập trình - Tổng quan
- 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 phải 0000 1101 18. printf("%d >> 2 = %d\n", a, c); 19. return 0; 20. } 30 Phương pháp lập trình - Tổng quan
- 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. } 31 Phương pháp lập trình - Tổng quan
- Lệnh rẽ nhánh ? – if – else if - else Ví dụ: Tìm giá trị lớn nhất giữa hai số nguyên A và B. 1. if (a>b) Toán tử quan hệ 2. printf("a lon nhat"); > 3. else = b) == 2. printf("a lon nhat"); != 3. else if (a==b) Toán tử luận lý 4. printf("a bang b"); && 5. else || 6. printf("b lon nhat"); 32 Phương pháp lập trình - Tổng quan
- 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. } 33 Phương pháp lập trình - Tổng quan
- Vòng lặp ? – for – while – do while Đề 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; 1. i = 0; 2. while(i <= 10) 2. do{ 3. { 3. printf("%d ", i); 4. printf("%d ", i); 4. i++; 5. i++; 5. }while(i <= 10); 6. } 34 Phương pháp lập trình - Tổng quan
- Hàm/Chương trình con ? 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. } 35 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; mang[0] mang[1] mang[2] mang[3] mang[4] 14. } 0 ? ? ? ? 36 Phương pháp lập trình - Tổng quan
- Chuỗi ký tự ? 1. #include 2. #include 3. int main() 'C' 'h' 'a' 'o' '!' '\0' 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. } 37 Phương pháp lập trình - Tổng quan
- Đệ quy ? 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. } 38 Phương pháp lập trình - Tổng quan
- Kiểu dữ liệu cấu trúc ? 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. } 39 Phương pháp lập trình - Tổng quan
- Kiểu con trỏ - pointer ? Biến x p 1. #include 2. int main() Địa chỉ 0073FB60 0073FB54 3. { Giá trị 20 0073FB60 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. } 40 Phương pháp lập trình - Tổng quan
- Đọc tập tin ? 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. } 41 Phương pháp lập trình - Tổng quan
- Ghi vào tập tin ? 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. } 42 Phương pháp lập trình - Tổng quan
- Một số gợi ý 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? 43 Phương pháp lập trình - Tổng quan
- Hết bài 1 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 Phương pháp lập trình - Tổng quan
- Nội dung tiếp theo (Yêu cầu tự học trước) Thư viện Xuất stdio.h, math.h, string.h printf(“hello!”); Chương trình chính Biểu thức int main(){ } tong = x + y; Kiểu biến Toán tử int, float +, -, *, / Tên biến xA, xB Hằng số Chú thích #define PI 3.14 // Lời chú thích Hàm Nhập sqrt, pow, scanf, printf scanf(“%d”,&x); 45 Phương pháp lập trình - Tổng quan