Bài 28. Thiết kế chương trình theo mô đun trang 127 SGK Tin học 11 Định hướng khoa học máy tính Kết nối tri thứcEm sẽ thiết kế chương trình như thế nào? Trao đổi với bạn về cách thiết kế chương trình sao cho hợp lí nhất.
Lựa chọn câu để xem lời giải nhanh hơn
Khởi động Em sẽ thiết kế chương trình như thế nào? Trao đổi với bạn về cách thiết kế chương trình sao cho hợp lí nhất. Phương pháp giải: Vận dụng kiến thức trong bài để trả lời câu hỏi. Lời giải chi tiết: B1. Thiết kế chung B2. Thiết kế công việc nhập dữ liệu B3. Thiết kế công việc xử lí dữ liệu B4. Thiết lập báo cáo, đưa ra dữ liệu ? mục I HĐ1 Thực hiện các bước thiết kế giải bài toán trên theo phương pháp làm mịn dần, trao đổi và thảo luận để biết được cách thiết kế chương trình theo mô đun. Phương pháp giải: Vận dụng kiến thức mục 1 trang 128, 129 SGK để trả lời câu hỏi. Lời giải chi tiết: Phương pháp thiết kế chương trình theo mô đun sẽ tách bài toán lớn thành các bài toán nhỏ hơn, hay thành các mô đun, tương đối độc lập với nhau, sau đó tiến hành thiết kế thuật toán và chương trình cho từng mô đun con. Mỗi mô đun có thể là một số hàm hoặc thủ tục độc lập. Chương trình chính là một bản ghép nối các hàm và thủ tục con. ? mục I CH1 Chương trình trên được thiết kế có bao nhiêu mô đun? Phương pháp giải: Vận dụng kiến thức trong bài để trả lời câu hỏi. Lời giải chi tiết: Chương trình trên được thiết kế có 3 mô đun ? mục I CH2 Các mô đun của chương trình trên có quan hệ với nhau như thế nào? Phương pháp giải: Vận dụng kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Mỗi mô đun thường là các chức năng độc lập, riêng biết theo yêu cầu của chương trình. ? mục II HĐ2 Với chương trình đã có trong Hoạt động 1, em sẽ làm gì nếu có các yêu cầu bổ sung như sau: 1. Yêu cầu thay đổi thông tin trong báo cáo: Ghi hai mặt hàng có doanh số cao nhất và bốn mặt hàng có doanh số thấp nhất. 2. Cập nhật, bổ sung các mặt hàng mới và doanh số trong ngày. 3. Yêu cầu làm thêm một báo cáo trong đó ghi doanh số bán trung bình trong ngày và danh sách các mặt hàng có doanh số lớn hơn doanh số trung bình này, kết quả đưa ra tệp Data2.out. Em có nhận xét gì về công việc thực hiện các công việc bổ sung này? Phương pháp giải: Vận dụng kiến thức mục 2 trang 130 SGK và kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Lời giải: Vì chương trình được thiết kế theo mô đun nên: - Các mô đun được thiết lập một lần và sử dụng nhiều lần. - Dễ dàng nâng cấp, thay đổi, chỉnh sửa mà không mất công sửa lại toàn bộ chương trình. - Dễ dàng bổ sung các mô đun mới. ? mục II CH1 Phân loại các công việc bổ sung trên vào ba loại sau: - Công việc mới hoàn toàn. - Công việc nâng cấp một mô đun cũ. - Công việc không liên quan đến thuật toán và lập trình. Phương pháp giải: Vận dụng kiến thức mục 2 trang 130 SGK để trả lời câu hỏi. Lời giải chi tiết: Dưới đây là phân loại các công việc bổ sung vào ba loại: 1. Công việc mới hoàn toàn: - Xây dựng một tính năng hoàn toàn mới. - Tạo một mô đun mới trong dự án. - Thực hiện một dự án mới mà không liên quan đến bất kỳ mã nguồn nào đã có. 2. Công việc nâng cấp một mô đun cũ: - Cải tiến mã nguồn hiện tại của một mô đun. - Tối ưu hóa mã nguồn hiện tại để cải thiện hiệu suất hoặc độ tin cậy. - Cải thiện giao diện người dùng hoặc trải nghiệm người dùng của một tính năng hoặc mô đun đã tồn tại. 3. Công việc không liên quan đến thuật toán và lập trình: - Thiết kế giao diện người dùng hoặc trải nghiệm người dùng. - Xây dựng tài liệu hướng dẫn hoặc tài liệu kỹ thuật cho dự án. - Tương tác với khách hàng hoặc người dùng cuối để thu thập thông tin phản hồi hoặc yêu cầu thay đổi. - Kiểm thử và đảm bảo chất lượng sản phẩm. - Quản lý dự án, quản lý nhóm, hoặc các công việc quản lý dự án khác. ? mục II CH2 Công việc sau đây, nếu có sẽ thuộc nhóm công việc nào? Nhập một giá trị số nào đó, ví dụ K, cần tìm trong danh sách các mặt hàng có doanh số xấp xỉ K (hơn kém nhau không quá hằng số C=1). Phương pháp giải: Dựa vào kiến thức trong bài kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Công việc này sẽ thuộc vào nhóm công việc liên quan đến Tìm kiếm và Lọc dữ liệu. Luyện tập 1 Nếu công việc bổ sung 3 có thêm yêu cầu in ra số lượng mặt hàng đã bán trong ngày thì cần thêm hay sửa lệnh nào của chương trình BC2(). Phương pháp giải: Dựa vào kiến thức trong bài kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Sửa lệnh prinf ("in ra số lượng mặt hàng bán trong ngày") Luyện tập 2 Viết thêm một chương trình cho công việc bổ sung 4 như sau: Cần in ra danh sách 1⁄3 số mặt hàng có doanh số thấp nhất trong ngày. Phương pháp giải: Tra cứu trên internet, sách, báo,…kết hợp kiến thức trong bài để trả lời câu hỏi. Lời giải chi tiết: def in_danh_sach_1_3_so_mat_hang_thap_nhat(s,p): # Sắp xếp danh sách mặt hàng theo doanh số tăng dần p.sort(key=lambda x: x[s]) # Tính số lượng mặt hàng cần in (1/3 tổng số mặt hàng) so_luong_can_in = len(p) // 3 # In ra danh sách 1/3 số mặt hàng có doanh số thấp nhất print("Danh sách 1/3 số mặt hàng có doanh số thấp nhất:") for i in range(so_luong_can_in): print(f"{i+1}. Mặt hàng {p[i][0]} - Doanh s: {p[i][p]}") Vận dụng 1 Thiết lập chương trình cho công việc thường làm vào cuối giờ bán hàng: Cho trước số K (một doanh số giả định), cần tìm ra mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất. Bài toán này có thể sử dụng thuật toán tìm kiếm nào để giải? Phương pháp giải: Dựa vào kiến thức trong bài kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Chương trình sử dụng thuật toán tìm kiếm nhị phân để tìm mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất trong danh sách mặt hàng đã được sắp xếp theo thứ tự tăng dần của doanh số. def find_nearest_item(arr, K): # Sắp xếp danh sách mặt hàng theo thứ tự tăng dần của doanh số arr.sort() low, high = 0, len(arr) - 1 result = None while low <= high: mid = (low + high) // 2# Tính giá trị trung bình mid của low và high if arr[mid] < K: # Nếu giá trị doanh số của mặt hàng ở vị trí mid nhỏ hơn K # Đặt low = mid + 1 để tìm phần tử lớn hơn K low = mid + 1 elif arr[mid] > K: # Nếu giá trị doanh số của mặt hàng ở vị trí mid lớn hơn K # Đặt high = mid - 1 để tìm phần tử nhỏ hơn K high = mid – 1 else: # Nếu giá trị doanh số của mặt hàng ở vị trí mid bằng K # Trả về mid làm kết quả result = mid break # Cập nhật giá trị gần K nhất if result is None or abs(arr[mid] - K) < abs(arr[result] - K): result = mid return arr[result] # Example usage arr = [10, 20, 30, 40, 50, 60, 70, 80, 90] K = 45 nearest_item = find_nearest_item(arr, K) print("Mặt hàng có doanh số nhỏ hơn K nhưng gần với K nhất là:", nearest_item) Vận dụng 2 Em hãy giúp công ty du lịch thiết lập tour du lịch tối ưu cho khách hàng nếu biết trước các đánh giá của khách hàng đó. Phương pháp giải: Tra cứu trên internet, sách, báo,…kết hợp kiến thức thực tế của bản thân để trả lời câu hỏi. Lời giải chi tiết: Để thiết lập tour du lịch tối ưu cho khách hàng dựa trên đánh giá của họ, công ty du lịch có thể sử dụng thuật toán tối ưu hóa hoặc các phương pháp lập lịch và quyết định dựa trên thông tin đánh giá của khách hàng. Dưới đây là một số ý tưởng và phương pháp có thể được áp dụng: -Thuật toán tối ưu hóa: Công ty du lịch có thể sử dụng các thuật toán tối ưu hóa để tìm kiếm lộ trình du lịch tối ưu dựa trên các yếu tố như thời gian, khoảng cách, ngân sách và các đánh giá của khách hàng. Các thuật toán như thuật toán di truyền, thuật toán tìm kiếm cục bộ, thuật toán quy hoạch động, ... có thể được sử dụng để giúp tối ưu hoá lộ trình du lịch dựa trên các ràng buộc và đánh giá từ khách hàng. -Phân tích đánh giá khách hàng: Công ty du lịch có thể phân tích các đánh giá của khách hàng để hiểu các yêu cầu và mong muốn của khách hàng. Các đánh giá này có thể bao gồm các yêu cầu về địa điểm tham quan, hoạt động, dịch vụ, chất lượng và dịch vụ khác. Dựa trên phân tích này, công ty du lịch có thể tạo ra các tour du lịch đáp ứng các yêu cầu và mong muốn của khách hàng. -Tư vấn và đề xuất: Công ty du lịch có thể sử dụng dữ liệu đánh giá của khách hàng để đề xuất và tư vấn cho khách hàng về các tour du lịch phù hợp dựa trên sở thích và đánh giá của họ
|