OPTADS360
ATNETWORK
ADS_ZUNIA
YOMEDIA
Banner-Video
IN_IMAGE

Tin học 11 Cánh diều Chủ đề FCS Bài 11: Thực hành thiết kế và lập trình theo Mô đun


Nội dung của Bài 11: Thực hành thiết kế và lập trình theo Mô đun chương trình Tin học lớp 11 Khoa học máy tính dưới đây sẽ giới thiệu đến các em cách vận dụng phương pháp thiết kế chương trình thành các mô đun (hàm) cho một bài toán cụ thể và cách viết chương trình thực hiện một số hàm theo thiết kế. Mời các em cùng theo dõi nội dung chi tiết của bài thực hành.

ADMICRO/lession_isads=0
 
 

Tóm tắt lý thuyết

1.1. Nhiệm vụ, yêu cầu kết quả và tổ chức thực hiện

Nhiệm vụ:

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:

KQ1 – 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ụ,

 

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.

 

1.2. Các bài thực hành

Nhiệm vụ 1. Phân tích thiết kế chương trình theo mô đun

Yêu cầu:

Dựa trên mô tả kết quả đầu ra của bài tập lớn, hãy thiết kế một số hàm (mô đun chương trình) đáp ứng các yêu cầu sau:

– 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 KQ1, KQ2KQ3.

 

Hướng dẫn thực hiện:

  • 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.txt".

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, đọ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ó KQ1:

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 xem 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 năm (một dãy điểm số).

Đầu ra:

– Thêm một dòng vào tệp “phantich_theoHS.txt” (gọi hàm ptDiem);

– Thêm (tên, chamDiem) 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ó ngay như một danh sách Python. 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 Mon

Đầ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 KQ1 KQ2b là tương tự như nhau. Hàm ptDiem 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 trình 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 3b) và 3c) cho mỗi cột trong mảng hai chiều a xem 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ừ tachMon 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).

 

Nhiệm vụ 2. Đọc dữ liệu từ tệp và tổ chức dữ liệu trong chương trình

Yêu cầu:

Viết chương trình thực hiện hàm nhapTuTep và chạy thử kiểm tra.

Hướng dẫn thực hiệ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 n, m là số học sinhsố môn học.

– Mở tệp ở chế độ “đọc”;

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.

 + Danh sách tenHS: từ cột Tên của bangDiem.

 + Danh sách tenMon: từ hàng tên cột của bangDiem.

 + Mảng hai chiều n x m, mỗi hàng là dãy điểm của một học sinh.

– Đóng tệp sau khi đọc xong.

 

Nhiệm vụ 3. Tách riêng kết quả học tập từng môn học

Yêu cầu:

Viết chương trình thực hiện hàm tachMon và chạy thử kiểm tra.

Hướng dẫn thực hiện:

Đầu vào của hàm này là kết quả thực hiện nhapTuTep, gồm có danh sách tenHS (các tên học sinh), danh sách tenMon (các tên môn học) và mảng hai chiều n X m.

– Đọ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 tenHS 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).

 

Nhiệm vụ 4. Sắp xếp kết quả một môn học theo thứ tự giảm dần

Yêu cầu:

Cải biên một hàm thực hiện thuật toán sắp xếp nào đó, ví dụ sắp xếp nhanh quicksort thành hàm quickSort_tuple_down để sắp xếp một danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần.

Hướng dẫn thực hiện:

– Cải biên hàm phandoanLomuto thành hàm 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 hàm phandoanLomuto_tuple đảo chiều phép so sánh trong câu lệnh if từ “<=” thành ">=” để sắp thứ tự giảm dần, đặt tên hàm mới là phandoanLomuto_tuple_down.

– Dùng hàm phandoanLomuto_tuple_down để cải biên quickSort thành hàm quickSort_tuple_down.

VIDEO
YOMEDIA
Trắc nghiệm hay với App HOC247
YOMEDIA
ADMICRO

2. Luyện tập Bài 11 Chủ đề FCS SGK Tin học 11 Cánh diều

Học xong bài này, em sẽ:

- Vận dụng được phương pháp thiết kế chương trình thành các mô đun (hàm) cho một bài toán cụ thể.

- Viết được chương trình thực hiện một số hàm theo thiết kế.

2.1. Trắc nghiệm Bài 11 Chủ đề FCS SGK Tin học 11 Cánh diều

Như vậy là các em đã xem qua bài giảng Bài 11 Chủ đề FCS SGK Tin học 11 Cánh diều Khoa học máy tính. Để củng cố kiến thức bài học mời các em tham gia bài tập trắc nghiệm Trắc nghiệm Tin học 11 Cánh diều Chủ đề FCS Bài 11.

Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!

2.2. Bài tập Bài 11 Chủ đề FCS SGK Tin học 11 Cánh diều

Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 11 Cánh diều Chủ đề FCS Bài 11 để giúp các em nắm vững bài học và các phương pháp giải bài tập.

Nhiệm vụ trang 135 SGK Tin học 11 Cánh diều - CD

Nhiệm vụ 1 trang 136 SGK Tin học 11 Cánh diều - CD

Nhiệm vụ 2 trang 138 SGK Tin học 11 Cánh diều - CD

Nhiệm vụ 3 trang 139 SGK Tin học 11 Cánh diều - CD

Nhiệm vụ 4 trang 139 SGK Tin học 11 Cánh diều - CD

3. Hỏi đáp Bài 11 Chủ đề FCS SGK Tin học 11 Cánh diều

Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học của HOC247 sẽ hỗ trợ cho các em một cách nhanh chóng!

Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!

-- Mod Tin Học 11 HỌC247

NONE

Bài học cùng chương

OFF