Bài giảng Nhập môn lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng

pdf 47 trang ngocly 2520
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn 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:

  • pdfbai_giang_nhap_mon_lap_trinh_bai_1_gioi_thieu_ngo_huu_dung.pdf

Nội dung text: Bài giảng Nhập môn lập trình - Bài 1: Giới thiệu - Ngô Hữu Dũng

  1. TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH Nhập môn lập trình Tổng quan TS. Ngô Hữu Dũng
  2. Bài 1 – Giới thiệu Blog ngohuudung.blogspot.com Email ngohuudung@iuh.edu.vn 2 Nhập môn lập trình - Tổng quan
  3. Nội dung  Tổng quan lập trình  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  Lệnh lựa chọn - rẽ nhánh  Thuật toán  Vòng lặp  Hàm – chương trình con  Kiểu dữ liệu mảng  Chuỗi ký tự 3 Nhập môn lập trình - Tổng quan
  4. 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 Nhập môn lập trình - Tổng quan
  5. 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 2 4 Các thành phần cơ bản của Ngôn ngữ C 4 2 2 Nhập xuất dữ liệu và các thư viện 4 3 Các câu lệnh có cấu trúc 2 6 10 4 Vòng lặp – thuật toán 2 6 TK 10 5 Hàm – chương trình con 2 6 GK 10 6 Mảng 2 6 10 7 Mảng và chuỗi 2 6 10 8 Ôn tập 1 6 8 9 6 6 10 6 6 11 6 6 12 6 6 15 60 94 5 Nhập môn lập trình - Tổng quan
  6. Kiểm tra đánh giá  Lý thuyết  Kiểm tra thường kỳ  Thực hành  Kiểm tra thường kỳ  Thi giữa kỳ  Thi cuối kỳ  Điểm liệt: <3  Số tín chỉ: 3  Lý thuyết: 15  Thực hành: 60  Tự học: 94 6 Nhập môn lập trình - Tổng quan
  7. Thảo luận  What?  Why?  How? 7 Nhập môn lập trình - Tổng quan
  8. 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? 8 Nhập môn lập trình - Tổng quan
  9. Chương trình? 1. /* Xuất ra màn hình dòng chữ: 2. Hello world! 3. */ 4. #include 5. int main() 6. { 7. printf("Hello world! "); 8. return 0; 9. } 9 Nhập môn lập trình - Tổng quan
  10. Các bước lập trình  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  Cài đặt (viết) chương trình và biên dịch  Chạy thử và sửa lỗi  Hoàn thiện và tối ưu hóa 10 Nhập môn lập trình - Tổng quan
  11. Ví dụ về các bước lập trình  Bài toán: 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  Cài đặt (viết) và biên dịch chương trình  Chạy thử và sửa lỗi  Hoàn thiện và tối ưu hóa 11 Nhập môn lập trình - Tổng quan
  12. 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 dữ liệu,  Cần lưu hai số nguyên  Cần lưu tổng hai số nguyên  Xây dựng thuật toán và trình tự,  Khai báo các biến để lưu trữ, bao nhiêu biến? Kiểu gì?  Nhập vào 2 số nguyên  Tính tổng  Xuất kết quả  Viết và biên dịch chương trình,  Chạy thử và sửa lỗi 12 Nhập môn lập trình - Tổng quan
  13. Cấu trúc chương trình C 1. //Khai báo thư viện 2. //Chương trình chính 3. int main() 4. { 5. // Khai báo biến 6. // Nội dung chương trình 7. return 0; //Kết thúc 8. } 9. // Ghi chú: // là dấu chú thích, 10. // không ảnh hưởng đến chương trình 13 Nhập môn lập trình - Tổng quan
  14. Khai báo thư viện 1. #include // Thư viện stdio.h 2. // Chứa các hàm nhập xuất cơ bản 3. // stdio : standard C input output 4. // .h : header 5. //Chương trình chính 6. int main() 7. { 8. // Khai báo biến 9. // Nội dung chương trình 10. return 0; //Kết thúc 11. } 14 Nhập môn lập trình - Tổng quan
  15. Khai báo biến 1. #include // Thư viện 2. //Chương trình chính 3. int main() 4. { 5. // Khai báo biến 6. int x; // int: integer – số nguyên 7. int y; // Cú pháp: ; 8. int tong; // Hoặc: int x, y, tong; 9. // Nội dung chương trình 10. return 0; //Kết thúc 11. } 15 Nhập môn lập trình - Tổng quan
  16. Trình tự của chương trình 1. #include // Thư viện 2. //Chương trình chính 3. int main() 4. { 5. int x, y, tong; //Khai báo biến 6. // Nhập giá trị cho x và y 7. // Tính tổng 8. // Xuất ra màn hình giá trị tổng 9. return 0; //Kết thúc 10. } 16 Nhập môn lập trình - Tổng quan
  17. Lưu đồ thuật toán và Mã giả Dùng để biểu diễn, mô tả giải thuật Start Problem Tính tổng Read x Input x, y: Integer Read y Output tong: Integer READ x, y tong = x + y tong = x + y WRITE tong Print tong END End 17 Nhập môn lập trình - Tổng quan
  18. Nhập giá trị cho biến 1. #include // Thư viện 2. int main() //Chương trình chính 3. { 4. int x, y, tong; //Khai báo biến 5. // Nhập giá trị cho x và y 6. scanf("%d", &x); //Nhập x 7. scanf("%d", &y); //Nhập y 8. // Tính tổng 9. // Xuất ra màn hình giá trị tổng 10. return 0; //Kết thúc 11. } 18 Nhập môn lập trình - Tổng quan
  19. Tính toán – Xử lý 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. // Nhập giá trị cho x và y 6. scanf("%d", &x); //Nhập x 7. scanf("%d", &y); //Nhập y 8. // Tính tổng 9. tong = x + y; // Phép gán 10. // Cú pháp: = ; 11. // Xuất ra màn hình giá trị tổng 12. return 0; //Kết thúc 13. } 19 Nhập môn lập trình - Tổng quan
  20. Xuất ra màn hình 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. // Nhập giá trị cho x và y 6. scanf("%d", &x); //Nhập x 7. scanf("%d", &y); //Nhập y 8. // Tính tổng 9. tong = x + y; // Phép gán 10. // Xuất ra màn hình giá trị tổng 11. printf("Tong la %d \n", tong); // Xuất 12. return 0; //Kết thúc 13. } 20 Nhập môn lập trình - Tổng quan
  21. Chương trình tính tổng tham khảo 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; //Tính tổng 10. printf("Tong la %d \n", tong); // Xuất 11. return 0; //Kết thúc 12. } 21 Nhập môn lập trình - Tổng quan
  22. How’s it work? 1. #include 4 7 11 2. int main() x y tong 3. { 4. int x, y, tong; 5. printf("Nhap x: "); Nhap x: 4 6. scanf("%d", &x); Nhap y: 7 7. printf("Nhap y: "); 8. scanf("%d", &y); Tong la 11 9. tong = x + y; 10. printf("Tong la %d \n", tong); 11. return 0; 12. } 22
  23. Nhận xét – Thư viện  Thư viện  Chứa các hàm đã được định nghĩa sẵn  Khai báo  #include  #include // Nhập xuất  #include // Thư viện chuẩn  #include // Toán học  #include // Chuỗi ký tự  #include // Ký tự  #include // Thời gian 23 Nhập môn lập trình - Tổng quan
  24. Nhận xét – Chương trình chính main  Chương trình chính:  Nơi chương trình bắt đầu  Cần duy nhất một chương trình chính int main() { // nội dung chương trình return 0; // Kết thúc } 24 Nhập môn lập trình - Tổng quan
  25. Nhận xét – Biến (variable)  Biến  Lưu trữ dữ liệu cần thiết  Giá trị có thể thay đổi  Có kiểu dữ liệu cụ thể (nguyên, thực, ký tự )  Khai báo  , ;  int x, y, tong, hieu, tich;// Số nguyên  float thuong; // Biến kiểu số thực  char kyTu; // Biến kiểu ký tự  char chuoi[50]; // Biến kiểu chuỗi ký tự 25 Nhập môn lập trình - Tổng quan
  26. Nhận xét – Nhập dữ liệu  Nhập  Nhập từ bàn phím giá trị cho biến  Nhập đúng kiểu dữ liệu tương ứng với kiểu của biến  scanf(" ", & );  scanf("%d", &x); // d: decimal  scanf("%i", &y); // i: integral  scanf("%f", &thuong);// f: float  scanf("%c", &kyTu); // c: char  scanf("%s", &chuoi); // s: string  gets( );  gets(chuoi); 26 Nhập môn lập trình - Tổng quan
  27. Nhận xét – Tính toán  Phép gán, biểu thức  = ;  tong = x + y;  tich = x * y;  thuong = (float)x/y;  trungBinhCong = (x + y)/2.0;  Toán tử số học  +: Cộng, -: Trừ, *: Nhân,  /: Chia,  %: Chia lấy dư (dành cho số nguyên) 27 Nhập môn lập trình - Tổng quan
  28. Nhận xét – Xuất  Xuất ra màn hình dòng chữ, giá trị của biến  printf(" ", , );  printf("Tong: %d \n", tong);  printf("Thuong: %f \n", thuong);  printf("Ky tu: %c \n", kyTu);  printf("Chuoi: %s \n", chuoi); 28 Nhập môn lập trình - Tổng quan
  29. Nhận xét – Mã giả  Dùng để biểu diễn thuật toán  Không nhất thiết chính xác về cú pháp  Không nhất thiết tuân theo một ngôn ngữ cụ thể  Ví dụ một số từ khoá: READ, WRITE, IF, ELSE, ENDIF, FOR, ENDFOR, WHILE, ENDWHILE.  Mỗi lệnh hoặc mỗi bước chỉ nên viết trên một dòng  Dùng thụt đầu dòng cho các lệnh có cấu trúc  Kết thúc lệnh bằng ENDIF, ENDFOR 29 Nhập môn lập trình - Tổng quan
  30. Nhận xét – Lưu đồ thuật toán  Biểu diễn thuật toán bằng sơ đồ khối Hình dạng Tên gọi Hành động Terminator Bắt đầu hoặc kết thúc chương trình Data Nhập hoặc xuất dữ liệu Process Xử lý, thực hiện một thao tác Decision Quyết định hướng xử lý theo điều kiện Flow direction Hướng đi của luồng xử lý Connector Điểm kết nối 30 Nhập môn lập trình - Tổng quan
  31. Hằng số  Đề 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 ý:  Hằng số PI? DT = ? r CV = ?  #define PI 3.14  const int IP = 3.14; 31 Nhập môn lập trình - Tổng quan
  32. Hằng số - tham khảo 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. } 32 Nhập môn lập trình - Tổng quan
  33. Một số khái niệm  Thư viện – Library  Xuất - Output  stdio.h, math.h  printf(“hello!”);  Chương trình chính  Phép toán – Operation  int main(){ }  tong = x + y;  Kiểu biến – Data type  int, float  Toán tử - Operator  Tên biến – Variable name  +, -, *, /  xA, xB  Hằng số - Constant  Chú thích - Comment  #define PI 3.14  // Lời chú thích  const float PI = 3.14  Nhập - Input  Hàm - Function  scanf(“%d”,&x);  sqrt, pow, scanf, printf 33 Nhập môn lập trình - Tổng quan
  34. Công cụ lập trình  C-Free, Dev-C, CodeBlocks, Visual Studio 34 Nhập môn lập trình - Tổng quan
  35. 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 35 Nhập môn lập trình - Tổng quan
  36. Giảng viên: Instructor 36 Nhập môn lập trình - Tổng quan
  37. Tự tìm hiểu nội dung môn học  Thuật toán? Algorithm  Các thao tác cơ bản  Cách giải bài toán  Nhập input  Lệnh lựa chọn? Selection  Xuất, output  (Lệnh rẽ nhánh)  Đếm, count  if else, switch case  Tìm kiếm, search  Vòng lặp? Loop  Tính toán, calculation  for, while, do while  Trích xuất, list  Hàm? Function  Liệt kê list  Chương trình con  Thêm, add  Mảng? Array  Xóa, remove  Dãy số  Sắp xếp sort  Chuỗi ký tự 37 Nhập môn lập trình - Tổng quan
  38. Bài tập 1.1 – Các thao tác lập trình 38 Nhập môn lập trình - Tổng quan
  39. Bài tập 1.1 – Các thao tác lập trình  Khởi động: Kích đôi vào biểu tượng C-Free hoặc Dev-C++  Mở tập tin mới: File New, hoặc kích vào Biểu tượng 2  Lưu file nguồn: File Save, hoặc File Save as , hoặc kích Biểu tượng 3  Gõ chương trình Hello world vào khu vực số 4  Biên dịch, chạy chương trình, dừng chương trình ở khu vực số 5  Kiểm tra và sửa lỗi biên dịch ở khu vực số 6  Xem và kiểm tra kết quả ở màn hình số 7 39 Nhập môn lập trình - Tổng quan
  40. Bài tập 1.2 – Tính toán  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 } 40 Nhập môn lập trình - Tổng quan
  41. 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. } 41 Nhập môn lập trình - Tổng quan
  42. 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; //Tính toán 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. } 42 Nhập môn lập trình - Tổng quan
  43. Bài tập 1.3 – Hình chữ nhật 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, chu vi và chiều dài đường chéo của hình chữ nhật. a  Gợi ý:  Giả sử chiều dài đường chéo là c 2 2 2 DT = ?  c = a + b b c = ?  Tính căn bậc hai CV = ?  Hàm sqrt(x) =  Hàm sqrt thuộc thư viện math.h 43 Nhập môn lập trình - Tổng quan
  44. Hình chữ nhật (tham khảo) 1. #include 2. #include 3. int main() 4. { 5. float a, b; // Hai cạnh 6. float c; // Đường chéo 7. float dienTich, chuVi; 8. printf("Nhap hai canh: "); 9. scanf("%f%f", &a, &b); 10. dienTich = a * b; 11. chuVi = (a + b)*2; 12. c = sqrt(a*a + b*b); 13. printf("Dien tich: %f\n", dienTich); 14. printf("Chu vi: %f\n", chuVi); 15. printf("Duong cheo: %f\n", c); 16. return 0; 17. } 44 Nhập môn lập trình - Tổng quan
  45. Bài tập 1.4 – 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  sqrt(x):  Hàm pow tính lũy thừa  pow(x, 2): x2 B(xB, yB) 45 Nhập môn lập trình - Tổng quan
  46. 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. } 46 Nhập môn lập trình - Tổng quan
  47. Bài tập 1.5 – Chữ số  Viết chương trình nhập vào một số nguyên có hai chữ số, xuất ra màn hình chữ số hàng chục và chữ số hàng đơn vị của số nguyên ấy.  Gợi ý:  Số hàng chục: Dùng phép chia lấy phần nguyên, ví dụ: chuc = so / 10;  Số hàng đơn vị: Dùng phép chia lấy dư, ví dụ donvi = so % 10;  Yêu cầu: Phân biệt hai phép chia lấy dư và chia lấy nguyên 47 Nhập môn lập trình - Tổng quan