Toptailieu.vn biên soạn và giới thiệu lời giải Tin học 11 (Cánh diều) Bài 11: Thực hành thiết kế và lập trình theo mo đunhay, chi tiết sẽ giúp học sinh dễ dàng trả lời câu hỏi từ đó học tốt môn Tin học 11.
Tin học 11 (Cánh diều) Bài 11: Thực hành thiết kế và lập trình theo mo đun
Nhiệm vụ trang 135 Tin học 11: Thực hiện bài tập lớn về lập trình Python. Mô tả bài toán:
Dữ liệu đầu vào: Tệp phần mềm bảng tính chứa dữ liệu là điểm tổng kết các môn học của lớp 11A, gồm các cột: Họ và đệm, Tên, Điểm Toán, Điểm Ngữ văn, Điểm Tin học,... Để đơn giản, ta chưa xét cột Họ và đệm và giả thiết mỗi ô trong cột Tên là một từ, không có dấu cách; các tên cột bỏ bớt chữ “Điểm” và chỉ còn một từ cho ngắn gọn. Kết quả (KQ) đầu ra:
KQI – Phân tích kết quả học tập của từng học sinh: điểm trung bình chung, điểm cao nhất; điểm thấp nhất, số lượng điểm thuộc các mức (Tốt, Khá, Đạt, Chưa đạt). Ghi lưu thành tệp văn bản “phantich_theoHS.txt”.
KQ2 – Phân tích kết quả học tập theo từng môn học; ghi lưu thành tệp văn bản "phantich_theoMon.txt".
a) Danh sách sắp xếp điểm mỗi môn học theo thứ tự giảm dần, kèm tên học sinh. b) Điểm cao nhất, điểm thấp nhất, trung bình cộng, tỉ lệ phần trăm điểm theo các mức: Tốt, Khá, Đạt, Chưa đạt.
KQ3 – Lập danh sách học sinh để xét khen thưởng; ghi lưu thành tệp văn bản “xetKhenThuong.txt” gồm hai cột Tên, chamDiem. Quy tắc chấm điểm:
a) Cứ mỗi điểm môn học đạt mức Tốt, chamDiem được cộng thêm 1 điểm.
b) Mỗi điểm môn học dưới mức Khá, chamDiem bị trừ 1 điểm.
Yêu cầu kết quả:
Với mục đích luyện kĩ năng lập trình, mỗi nhóm cần hoàn thành hai sản phẩm chương trình SP#1 và SP#2 với yêu cầu như sau:
- SP#1: tự viết các hàm (mô đun) chương trình, kế thừa những kết quả lập trình đã có được đến nay.
– SP#2: sử dụng tối đa các hàm đã có sẵn trong Python để hoàn thành nhiệm vụ.
Lời giải:
Tổ chức thực hiện:
– Lập các nhóm dự án, mỗi nhóm khoảng 5 đến 6 học sinh; chọn nhóm trưởng. - Cả nhóm cùng thực hiện Nhiệm vụ 1:
+ Đọc hướng dẫn để biết cách phân tích, lựa chọn và thiết kế các hàm. Hướng dẫn chỉ là gợi ý, không bắt buộc phải theo.
+Thảo luận, đưa ra thiết kế cuối cùng sau các sửa đổi, điều chỉnh.
- Dựa trên danh sách các hàm cần thực hiện, xác định các nhiệm vụ cụ thể; phân công mỗi nhiệm vụ (các bài thực hành tiếp theo) cho 1 đến 2 học sinh đảm nhiệm.
– Nhóm trưởng phụ trách tích hợp các kết quả thành chương trình hoàn chỉnh với sự cộng tác của các thành viên khác, dưới sự hỗ trợ của thầy, cô giáo.
— Với mỗi hàm, xác định rõ chức năng hàm sẽ làm gì, tên hàm, đầu vào, đầu ra và nêu cụ thể trả về chương trình chính cái gì (nếu có trả về).
– Nêu cách phối hợp các hàm này trong chương trình chính để nhận được tất cả các kết quả đầu ra đã mô tả trong KQI, KQ2 và KQ3.
Lời giải:
Giai đoạn 1. Liệt kê các việc lớn để nhận được các kết quả KQ1, KQ2 và KQ3 1. Đọc dữ liệu từ tập Tổ chức dữ liệu trong chương trình bằng các kiểu dữ liệu của Python sao cho thuận tiện để thực hiện các việc tiếp theo,
2. Phân tích dãy điểm từng học sinh để có KQI và KQ3; viết kết quả vào các tập “phantich_theoHS.txt", "xetKhenThuong tri
3. Với mỗi môn học, sắp xếp dãy điểm để có KQ2a, viết kết quả vào tệp “phantich_
theoMon.txt";
4. Với mỗi môn học, phân tích dãy điểm để có KQ2b; viết kết quả vào tệp "phantich
theoMon.txt".
Giai đoạn 2. Thiết kế các hàm
1. Đọc dữ liệu từ tập
Dữ liệu đầu vào chứa trong một tệp, dọc vào từng dòng và xử lí không phức tạp. Có thể viết một hàm thực hiện việc này. Đặt tên hàm: ví dụ là nhapTuTep.
Đầu vào: tập phần mềm bảng tính chứa dữ liệu như mô tả ở đầu bài học. Đầu ra: dữ liệu trong chương trình được tổ chức như sau:
- Mảng hai chiều các điểm số: Mảng nx m, mỗi hàng là dãy điểm của một học sinh, sẵn sàng để phân tích kết quả cho từng học sinh.
- Cột Tên trong bảng kết quả học tập tạo thành danh sách các tên học sinh để ghép với từng cột điểm số môn học, tách riêng được kết quả học tập theo từng môn.
– Hàng các tên môn học tạo thành danh sách tên môn học để dễ dàng lấy ra từng tên môn học theo chỉ số cột.
2. Phân tích điểm theo học sinh
Có thể tách thành các việc nhỏ, cụ thể hơn như sau:
2a) Phân tích dãy điểm số (là một hàng của mảng hai chiều) để có KQI: Thiết kế một hàm và đặt tên, ví dụ là ptDiem
Đầu vào: một dãy điểm số
Đầu ra: trả về sum, max, min, số lượng điểm thuộc các mức xếp hạng Tốt, Khá
Dat, Chura dat.
2b) Xét khen thưởng
Nếu chamDiem > 0 thì viết thêm (tên, chamDiem) thành một dòng vào tập “xetKhenThuong.txt"; có thể thực hiện việc này bằng một vài câu lệnh ngắn gọn, không cần viết thành một hàm riêng.
Lặp lại các việc 2a) và 2b) cho mỗi hàng trong mảng hai chiều axim sẽ hoàn thành phân tích điểm cho toàn bộ học sinh và lập xong danh sách học sinh được xét khen thưởng.
Có thể thiết kế thân vòng lặp thành một hàm và đặt tên, ví dụ là ptHocSinh.
Đầu vào: Một hàng trong mảng hai chiều axim (một dãy điểm số).
Dau ra
- Thêm một dòng vào tập “phantich theoHS.txt" (gọi hàm ptDiem) — Thêm (tên, chamliem) vào tập “xetKhenThuong.txt" nếu chamDiem ≥ 0, 3. Phân tích điểm theo môn học
3a) Chuẩn bị đầu vào để sẵn sàng phân tích điểm theo môn học:
Dãy điểm số một môn học là một cột của mảng hai chiều năm không sẵn có ngayn như một danh sách Phython. Cũng chưa có sẵn danh sách các cặp (tên, điểm) là kết quả của mỗi môn học (ở đây tên là tên học sinh).
Thiết kế một hàm, đặt tên ví dụ là tach Mom
- Đầu vào: dữ liệu trong chương trình (sau khi đọc từ tập vào)
- Đầu ra: trả về tên danh sách dãy điểm số một môn học và tên danh sách các cặp (tên, điểm) cho môn học đó.
3b) Phân tích điểm một môn học.
Nhận thấy rằng yêu cầu kết quả đầu ra KQI và KQ28 là tương tự như nhau. Hàm ptlhiem sử dụng được cho cả hai việc, phân tích điểm từng học sinh và phân tích điểm từng môn học.
3c) Sắp xếp danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần để có KQ2a.
Ta đã viết một số chương trinh thực hiện các thuật toán sắp xếp dãy số. Có thể cải biên để nhận được một hàm thực hiện sắp xếp danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần.
Lặp lại các việc 3h) và 30) cho mỗi cột trong mảng hai chiều a x m sẽ hoàn thành phân tích điểm cho toàn bộ các môn học. Có thể thiết kế một hàm nhận kết quả từ tach Mon và thực hiện 3b) và 3c) cho một môn học; đặt tên, ví dụ là ptMonHoc. - Đầu vào: danh sách điểm một môn học và danh sách các cặp (tên, điểm).
- Đầu ra:
+Thêm một dòng vào tập “phantich_theoMon.txt" (gọi hàm ptDiem). +Thêm danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần vào tập “phantich theoMon.txt" (gọi hàm sắp xếp đã cải biển).
- Tạo tập dữ liệu đầu vào Một cách đơn giản là cắt dán cả khối ô cần thiết từ cửa số phần mềm bảng tính điện tử vào tập đang soạn thảo trong IDE của Python. Lưu thành tập có đuôi tên "txt". Để tiện trình bày, ta đặt tên tập đầu vào, ví dụ là “bangDiem.txt". Bổ sung thêm vào dòng đầu tiên của tập hai số nguyên dương a, x là số học sinh và số môn học.
- Mo lepo che do "doc":
- Viết các câu lệnh đọc dữ liệu từ tập kế thừa, sử dụng các câu lệnh đã viết trong các bài thực hành về cấu trúc mảng một và hai chiều. Kết quả đầu ra:
Lời giải:
+ Danh sách tenfES: từ cột Tên của bangDiem
+ Danh sách tenlfon từ hàng tên cột của bangDiem.
+ Mảng hai chiều n - m, mỗi hàng là dãy điểm của một học sinh.
Đóng tập sau khi đọc xong.
Lời giải:
Đầu vào của hàm này là kết quả thực hiện nhapTuTep. gồm có danh sách xenf£S (các tên học sinh), danh sách tenlfon (các tên môn học) và mảng hai chiều x x x – Đọc từng cột của mảng hai chiếu để có dây số các điểm mỗi môn học.
- Ghép tương ứng mỗi tên học sinh từ danh sách tuS với mỗi điểm môn học sẽ thành danh sách các cấp (tên, điểm) cho môn học đó.
- Trả về tên danh sách dãy điểm số môn học và tên danh sách các cấp (tên, điểm).
Lời giải:
- Cải biển hàm phandoanLomuto thành him phandoanlomuto_tuple để sắp các cặp (Tên, điểm môn học) theo thành phần điểm môn học.
- Trong him phandoanLomuto_tuple đảo chiều phép so sánh trong câu lệnh if từ "ca" thành "y" để sắp thứ tự giảm dần, đặt tên hàm mới là phanhoanLamuto_tuple_down.
- Dùng hàm phanhoanLamuto_tuple_down để cải biên quícksort thành hàm quickSort_tuple_down.
Lời giải:
Chạy chương trình thực hiện quickSort_tuple_down vừa hoàn thành với đầu vào là kết quả môn Tin học của lớp em và cho biết kết quả: điểm cao nhất: những bạn có điểm cao nhất: điểm thấp nhất.
Xem thêm các bài giải Tin học 11 Cánh diều hay, chi tiết khác:
Bài 9: Lập trình thuật toán sắp xếp nhanh
Bài 10: Thiết kế chương trình từ trên xuống và phương pháp mô đun hoá
Bài 12: Thực hành thiết kế và lập trình theo mo đun (tiếp theo)
Bài 13: Thực hành thiết kế và lập trình theo mo đun (tiếp theo)
CÔNG TY TNHH ĐẦU TƯ VÀ DỊCH VỤ GIÁO DỤC VIETJACK
- Người đại diện: Nguyễn Thanh Tuyền
- Số giấy chứng nhận đăng ký kinh doanh: 0108307822, ngày cấp: 04/06/2018, nơi cấp: Sở Kế hoạch và Đầu tư thành phố Hà Nội.
2021 © All Rights Reserved.