Rõ nét về file powerpoint trình chiếu. => Xem thêm
Ngày soạn:…/…/…
Ngày dạy:…/…/…
BÀI 11, 12. THỰC HÀNH THIẾT KẾ VÀ LẬP TRÌNH THEO MÔ ĐUN
Sau bài học này, HS sẽ:
Năng lực chung:
Năng lực tin học:
III. TIẾN TRÌNH DẠY HỌC
Bước 1: GV chuyển giao nhiệm vụ học tập
- GV yêu cầu HS trả lời câu hỏi kiểm tra bài cũ: Trình bày các bước người lập trình cần thực hiện khi áp dụng phương pháp lập trình mô đun hóa.
Bước 2: HS thực hiện nhiệm vụ học tập
- HS nhớ lại kiến thức đã học, trả lời câu hỏi.
Bước 3: Báo cáo kết quả hoạt động và thảo luận
- GV mời 1 - 2 HS trả lời câu hỏi.
Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập
- GV nhận xét, đánh giá, dẫn dắt vào nội dung bài mới: - Bài 11, 12. Thực hành thiết kế và lập trình theo mô đun.
Hoạt động 1: Nhiệm vụ, yêu cầu kết quả và tổ chức thực hiện
HOẠT ĐỘNG CỦA GV - HS | DỰ KIẾN SẢN PHẨM |
Bước 1: GV chuyển giao nhiệm vụ học tập - GV giới thiệu nhiệm vụ: Thực hiện bài tập lớn về lập trình Python. - GV yêu cầu HS đọc hiểu mục 1 tr.135 SGK và trả lời câu hỏi: + Nêu dữ liệu đầu vào và kết quả đầu ra của bài toán. + Bài toán yêu cầu kết quả gì? - Sau khi xác định được nhiệm vụ và yêu cầu kết quả, GV tiến hành tổ chức theo mục 1 tr.136 SGK: + 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á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. ● 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. Bước 2: HS thực hiện nhiệm vụ học tập - HS đọc hiểu mục 1 SGK tr.135 - 136 thực hiện nhiệm vụ được giao. - Nhóm HS tiến hành phân công nhiệm vụ theo hướng dẫn. - GV hướng dẫn, theo dõi, hỗ trợ HS khi cần. Bước 3: Báo cáo kết quả hoạt động và thảo luận - GV mời một số HS trả lời. - HS khác nhận xét, bổ sung. Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập - GV nhận xét, đánh giá các nhóm. - GV chuyển sang hoạt động tiếp theo. | 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ả: - 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ụ.
|
Hoạt động 2: Các bài thực hành của Bài 11
HOẠT ĐỘNG CỦA GV - HS | DỰ KIẾN SẢN PHẨM |
Bước 1: GV chuyển giao nhiệm vụ học tập - GV nêu nhiệm vụ, tổ chức cho các nhóm hoạt động thực hành. Nhiệm vụ 1. Phân tích thiết kế chương trình theo mô đun + GV nêu 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, KQ2 và KQ3. + GV hướng dẫn từng nhóm dự án làm việc theo nhóm. + GV yêu cầu HS đọc lại 4 giai đoạn đã trình bày ở Bài 10. Nhiệm vụ 2. Đọc dữ liệu từ tệp và tổ chức trong chương trình + GV nêu yêu cầu: Viết chương trình thực hiện hàm nhapTuTep và chạy thử kiểm tra. + GV giải thích thêm: Ở bên ngoài hàm nhapTuTep () có câu lệnh khai báo danh sách a = [] là biến toàn cục dùng làm mảng hai chiều. Hàm chỉ trả về kết quả là hai số n, m kích thước hai chiều của mảng. Mỗi hàng của mảng a là kết quả học tập của một HS. Nhiệm vụ 3. Tách riêng kết quả học tập từng môn học + GV nêu yêu cầu: Viết chương trình thực hiện hàm tachMon và chạy thử kiểm tra. Nhiệm vụ 4. Sắp xếp kết quả môn học theo thứ tự giảm dần + GV nêu 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 dể 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. Bước 2: HS thực hiện nhiệm vụ học tập - Nhóm HS đọc hiểu hướng dẫn thực hiện nhiệm vụ trong SGK tr.136 - 139 và hướng dẫn của GV, thực hành nhiệm vụ. - GV theo dõi, hỗ trợ HS trong quá trình học tập. Bước 3: Báo cáo kết quả hoạt động và thảo luận - Nhóm HS báo cáo kết quả thực hành. Bước 4: Đánh giá kết quả, thực hiện nhiệm vụ học tập - GV nhận xét sản phẩm của các nhóm HS. - GV chỉ ra một số lỗi mà HS hay mắc phải và giúp HS điều chỉnh lại. - GV chuyển sang hoạt động tiếp theo. | 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 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ó KQ1 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 các 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 n × m, mỗi hàng là dãy điểm của một HS, sẵn sàng để phân tích kết quả cho từng HS. - 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 HS để 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 HS a) 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ụ 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á, Đạt, Chưa đạt. b) 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ụ 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 a) Chuẩn bị đầu vào để sẵn sàng phân tích điểm theo môn học: Thiết kế một hàm, đặt tên là tachMon: Đầ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 đó. b) Phân tích điểm một môn học: Hàm ptDiem sử dụng 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. c) 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: 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 n × 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ừ tachMon rồi 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 Đính kèm dưới Hoạt động 2. Nhiệm vụ 3. Tách riêng kết quả học tập từng môn học Đính kèm dưới Hoạt động 2. Nhiệm vụ 4. Sắp xếp kết quả một môn học theo thứ tự giảm dần Đính kèm dưới Hoạt động 2 |
Nhiệm vụ 2. Tham khảo đoạn chương trình sau: def nhapTuTep(): fi = open("../bangDiem.txt", encoding ='utf-8') dong = fi.readline().split() # đọc dòng thứ nhất n = int (dong[0]) m = int (dong[1]) dong = fi.readline().split() #đọc dòng thứ hai có các tên môn học for i in range(1,m+1): tenMon.append(dong[i]) for i in range(n): #đọc n dòng tiếp theo dong = fi.readline().split() ten = dong.pop(0) # lấy tên HS tenHS.append(ten) # đưa vào danh sách tenHS diem = [float(d) for d in dong] a.append(diem) # nối phần còn lại là điểm của HS # thành một hàng của a fi.close() return (n,m) Nhiệm vụ 3. Tham khảo đoạn chương trình sau: def tachMon(ds,chiso): # ds: mảng hai chiều các điểm môn học ten = tenMon[chiso] # chiso: môn học thứ k kq1, kq2 = [], [] # kq1: danh sách điểm môn học # kq2: danh sách các cặp (tên HS, điểm) for i in range(soHS): kq1.append(ds[i][chiso]) # nối thêm điểm của HS thứ i kq2.append([tenHS[i],ds[i][chiso]]) # nối thêm tên của HS # thứ i và điểm tương ứng return (ten, kq1, kq2) Nhiệm vụ 4. Đáp án 1. Kế thừa từ Bài 9 def phandoanLomuto_tuple_down(a, lo, hi): i = (lo-1) pivot = a[hi][1] # thành phần 1 là điểm môn học for i in range(lo, hi): if a[j][1] >= pivot: # giảm dần theo điểm môn học i = i+1 a[i], a[j] = a[j], a[i] a[i+1], a[hi] = a[hi], a[i+1] return (i+1) def quickSort_tuple_down(a, lo, hi): if len(a) == 1: return a if lo < hi: p = phandoanLomuto_tuple_down(a, lo, hi) quickSort_tuple_down(a,lo,p-1) quickSort_tuple_down(a,p+1,hi) Đáp án 2: Cải biên thuật toán sắp xếp khác, ví dụ thuật toán sắp xếp chèn def sxChen_tuple_down(a): # chèn tuyến tính, a là danh sách các bộ n = len(a) for i in range(1,n): val = a[i][1] # thành phần 1 là điểm môn học dsCon = a[i] j=i i=i+1 # dịch dần từng bước, tìm vị trí để chèn while (j>0) and (a[j-1][1] > val): a[j] = a[j-1] j = j-1 a[j] = dsCon |
=> Tặng kèm nhiều tài liệu tham khảo khi mua giáo án: