intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - Trịnh Tấn Đạt (2024)

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:32

4
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Kỹ thuật lập trình: Giới thiệu môn học" giới thiệu tổng quan về môn học, các nội dung chính của môn học, đánh giá, tài liệu tham khảo, đề tài cho đồ án môn học (option), trao đổi và thảo luận. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - Trịnh Tấn Đạt (2024)

  1. Kỹ Thuật Lập Trình Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/
  2. Nội dung ▪ Giới thiệu môn học ▪ Các nội dung ▪ Đánh giá ▪ Tài liệu tham khảo ▪ Đề tài cho đồ án môn học (option) ▪ Trao đổi và thảo luận
  3. Giới Thiệu ▪ Tên học phần: Kỹ thuật lập trình ▪ Số tín chỉ: 4 (3,1) ▪ Số tiết (lí thuyết, thực hành): 75 (45; 30) ▪ Mô tả học phần o Học phần Kỹ thuật lập trình trình bày các kiến thức tiếp nối của học phần Cơ sở lập trình, bao gồm các chương: Kỹ thuật lập trình đệ qui, Kỹ thuật lập trình con trỏ, Kỹ thuật lập trình ký tự và chuỗi ký tự, Kỹ thuật lập trình với tập tin văn bản, một số kỹ thuật lập trình nâng cao. o Học phần này giúp người học hoàn thiện và nâng cao kiến thức về ngôn ngữ lập trình. Giúp người học rèn luyện nhằm nâng cao tư duy về kỹ thuật lập trình. ▪ Mục tiêu: hoàn thiện các kỹ năng về lập trình như: phát triển tư duy lập trình, Phân tích vấn đề bài toán, thiết kế chương trình, soạn thảo chương trình, hình thành phong cách lập trình hiệu quả, xử lý lỗi chương trình, ...
  4. Nội dung môn học ▪ Giới thiệu và Ôn Tập ▪ Con trỏ (Pointer) ▪ Thiết kế chương trình ▪ Đệ quy (Recursion) ▪ Tập tin (FILE) ▪ Chuỗi ký tự (String) ▪ Các kỹ thuật lập trình tối ưu o Qui hoạch động o Chia để trị o Tìm kiếm và Quay lui o Tham lam
  5. Giới Thiệu ❖ Tài liệu tham khảo: ▪ Tài liệu chính [1] Huỳnh Minh Trí, Phan Tấn Quốc, Nguyễn Nhựt Đông, Giáo trình kỹ thuật lập trình, NXB Đại học Quốc Gia TPHCM, 2016. ▪ Tài liệu khác (khuyến khích đọc thêm tài liệu bằng Tiếng Anh) [2] Phạm Văn Ất, “Kỹ thuật lập trình C - cơ sở và nâng cao”, NXB Giáo Dục, 2006. [3] K.N.King, C Programming: A Modern Approach, 2nd Edition [4] Brian W. Kernighan and Dennis M. Ritchie ,The C Programming Language (2nd Edition) [5] Wikibooks.org, “C Programming”, 2012. ▪ Nguồn tham khảo khác (tử internet, tìm kiếm bằng tiếng Anh) o https://www.cprogramming.com/tutorial/c-tutorial.html o http://www.eskimo.com/~scs/cclass/notes/top.html o Stackoverflow: https://stackoverflow.com/ o GeeksforGeeks : https://www.geeksforgeeks.org/ o Google, Bing, …
  6. Đánh giá môn học ▪ Điểm quá trình: 50% o Điểm lý thuyết: ✓ Chuyên cần, thảo luận : (10%) ✓ Kiểm tra giữa kỳ: (20%) ✓ Điểm đồ án môn học (điểm thưởng): không bắt buộc o Điểm thực hành : ✓ Kiểm tra thực hành: (20%) Điểm thưởng ▪ Thi kết thúc học phần: 50% ✓ Tự luận, đề đóng, thời gian làm bài: 90 phút
  7. Project môn học (không bắt buộc) ▪ Yêu cầu: • Lý thuyết: đọc hiểu, viết theo hiểu (không dịch word-by-word) • Cài đặt: code và run chương trình. (dựa vào các ví dụ) • Viết báo cáo ❖ Số lượng thành viên (tối đa 03 SV/nhóm) ❖ Thời gian nộp: tuần 14 ❖ SV nộp đồ án được cộng điểm thưởng (tối đa 2,0đ)
  8. Project môn học (không bắt buộc) ▪ Danh sách các đề tài: 1. Thuật toán quay lui (Backtracking) và bài 12. Thuật toán Balan ngược (Reserve 18. Tìm hiểu về thư viện Standard toán 8 hậu, mã đi tuần Polish Notation) và ứng dụng Template Library (containers, 2. Thuật toán nhánh cận và ứng dụng (ít nhất 3 13. Thuật toán Dynamic Time Warping iterators, algorithms) trong C++ và ví dụ) (dựa trên quy hoạch động) các ví dụ 3. Thuật toán tham lam và ứng dụng (ít nhất 3 ví dụ) 14. Thuật toán gradient descent và ứng 19. Tìm hiểu về C++ Exception 4. Thuật toán leo đồi (Hill Climbing) và ứng dụng Handling, C++ Standard dụng 15. Ma trận thưa và Thuật toán nhân Exceptions, và các ví dụ. 5. Thuật toán luyện kim (Simulated (nhanh) hai ma trận thưa 20. Tìm hiểu về C++ Namespaces, Annealing) và ứng dụng 16. Sum-area Table (Integral Image) và C++ Template và C++ Preprocessor, 6. Tabu Search và ứng dụng ứng dụng. và các ví dụ. 7. Tối ưu bầy đàn (Particle 17. Các thuật toán nhân ma trận Swarm Optimization) và ứng dụng 8. Giải thuật đàn kiến (Ant colony optimization) và ứng dụng 9. Giải thuật di truyền (Genetic Algorithm) và ứng dụng và ứng dụng 10. Thuật toán tối ưu sói xám (Grey Wolf Optimizer) và ứng dụng 11. Thuật toán tối ưu cá voi (Whale Optimization Algorithm) và ứng dụng
  9. Từ bài toán đến chương trình ▪ Các bài toán thực tế thường rất phức tạp Phải xác định được o Các dữ liệu liên quan đến bài toán o Các thao tác cần thiết để giải quyết bài toán ▪ Ví dụ Bài toán quản lý sinh viên đăng ký học phần Cần quản lý những thông tin nào? • Thông tin về sinh viên: tên, ngày sinh, MSSV, Khoa, … Cần thực hiện những thao tác nào? • Tạo ra tài khoản sinh viên. • Cập nhật một số thông tin về sinh viên. • Thêm, xóa , sửa đăng ký học phần. Ai được phép thực hiện thao tác nào?
  10. Từ bài toán đến chương trình Giải thuật Thiết kế - Dùng Mã giả Đánh giá Giải thuật tốt/tối ưu Coding Bài toán thực (Pseudocode) tế - Dùng flowchart - Mô hình toán Phân tích, đánh giá Ngôn ngữ lập trình - Chọn kiểu dữ liệu, thuật toán C/C++ cấu trúc dữ liệu -Độ phức tạp Java - Thiết kế giải thuật - Cải tiến thuật toán Python …
  11. Khái niệm Kỹ thuật lập trình ▪ Kỹ thuật lập trình: là kỹ thuật giải quyết một bài toán trên máy tính dựa trên nền tảng một phương pháp luận và một hoặc nhiều ngôn ngữ lập trình phù hợp với yêu cầu. Tư tưởng thiết kế + Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình
  12. Khái niệm Kỹ thuật lập trình ▪ Thế nào là lập trình o Viết chương trình tính 23 o Viết chương trình tính xn o Viết chương trình tính tổng 10 o Viết chương trình tính tổng k số nguyên tố đầu tiên. số nguyên tố đầu tiên.
  13. Khái niệm Kỹ thuật lập trình ▪ Khái niệm lập trình Với mỗi bài toán (vấn đề) đặt ra, cần: o Thiết kế thuật toán để giải quyết bài toán đó. o Cài đặt thuật toán bằng một chương trình máy tính.
  14. Khái niệm Kỹ thuật lập trình ▪ Thế nào là lập trình tốt Đúng / Chính xác Khả năng nâng cấp o Thỏa mãn các nhiệm vụ o Dễ dàng chỉnh sửa Hiệu quả o Được khách hàng chấp nhận o Dễ dàng nâng cấp trong điều o Thời gian lập trình ngắn kiện bài toán thay đổi o Khả năng bảo trì dễ dàng Ổn định Tái sử dụng o Giá trị sử dụng lại lớn o Ổn định o Tái sử dụng hoặc kế thừa o Sử dụng đơn giản, thân thiện o Ít lỗi hoặc lỗi nhẹ có thể cho bài toán khác o Nhiều chức năng tiện ích chấp nhận được Tương thích Hiệu suất o Thích ứng tốt các môi o Chương trình nhỏ gọn, ít bộ trường khác nhau nhớ o Tốc độ nhanh, sử dụng ít CPU
  15. Khái niệm Kỹ thuật lập trình ▪ Làm thế nào để lập trình tốt? o Tư duy và phương pháp lập trình o Hiểu sâu về máy tính o Nắm vững ngôn ngữ o Đam mê o Luyện tập
  16. Thiết kế chương trình ▪ Thế nào là chương trình tốt? o Cấu trúc rõ ràng o Chương trình có tính logic + các biểu thức được diễn đạt dễ hiểu o Tên dùng trong chương trình có tính chất miêu tả o Chú thích hợp lý o Tôn trọng chiến lược divide/conquer (chia để trị) ▪ Làm thế nào để tạo ra chương trình tốt o Thiết kế top-down o Tinh chỉnh từng bước
  17. Thiết kế chương trình ▪ Nguyên tắc chung Đơn giản Trực tiếp Rõ ràng Cấu trúc tốt • Thể hiện giải thuật dễ • Sử dụng thư viện mọi lúc • Dùng khối lệnh để tránh • Tôn trọng tính cấu trúc đọc, dễ hiểu có thể. nhập nhằng. của chương trình (chẳng • Lựa chọn cấu trúc dữ liệu • Tránh việc kiểm tra điều • Đặt tên biến, hàm, .. sao hạn dựa vào hàm/ thủ tục ). sao cho việc viết giải thuật kiện không cần thiết. cho tránh được nhầm lẫn • Viết và kiểm thử dựa là đơn giản nhất trên cấu trúc phân cấp của • Tìm cách đơn giản hóa chương trình. các biểu thức • Viết giải thuật bằng giả • Thay những biểu thức lặp ngữ, rồi mới viết bằng 1 đi lặp lại bằng chương NNLT cụ thể trình con tương ứng
  18. Thiết kế giải thuật ▪ Chia bài toán ra thành nhiều bài toán nhỏ hơn ▪ Tìm giải pháp cho từng bài toán nhỏ ▪ Gộp các giải pháp cho các bài toán nhỏ thành giải pháp tổng thể cho bài toán ban đầu ▪ Có 02 cách thiết kế: o Thiết kế kiểu bottom-up o Thiết kế kiểu top-down
  19. Thiết kế giải thuật ▪ Thiết kế từ dưới lên (bottom-up): o Là phương pháp thiết kế đi từ việc thiết kế chi tiết nhỏ sau đó kết hợp lại thành bài toán hoàn chỉnh. o Ví dụ: thiết kế chi tiết một phần chương trình, thiết kế chi thiết phần khác, … lặp lại quá trình cho đến hết. o Là cách thiết kế đơn giản, dễ thực hiện, không đòi hỏi kỹ năng cao của người thiết kế. Tuy nhiên, khi gặp hệ thống phức tạp, cách tiếp cận này sẽ không hiệu quả.
  20. Thiết kế giải thuật ▪ Thiết kế từ trên xuống (top-down): o Là phương pháp lý tưởng nhất trong thiết kế. Ý tưởng là đi từ thiết kế toàn bộ sản phẩm một cách hệ thống, tổng thể sau đó chia nhỏ/ phân rã xuống các bài toán nhỏ hơn để giải quyết, tinh chỉnh cho đến khi hoàn thiện. o Ví dụ: thiết kế top-down trong lập trình • Phác họa hàm main (viết bằng mã giả - pseudocode) • Tinh chỉnh từng lệnh mã giả ✓ Lệnh đơn giản - > thay bằng code ✓ Lệnh phức tạp -> dùng lợi gọi hàm/chương trình con • Lặp lại (trong hầu hết các trường hợp) ở mức sâu hơn, cụ thể hơn, cho đến khi các hàm được định nghĩa xong. • Chương trình có cấu trúc phân cấp. ▪ Ví dụ: thiết kế giải thuật cho bài toán sau:
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2