Bài 12. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)

Chủ đề Fcs : Giải quyết vấn đề với sự trợ giúp của máy tính – Kĩ thuật lập trình – Bài 12. Thực hành thiết kế và lập trình theo mô đun (tiếp theo) – sách giáo khoa trang 140 lớp 11 Khoa học máy tính – Cánh Diều, mời các em tham khảo cùng Bumbii.

Chủ đề Fcs : Giải quyết vấn đề với sự trợ giúp của máy tính – Bài 12. Thực hành thiết kế và lập trình theo mô đun (tiếp theo)

Nhiệm vụ 1

Viết hàm phân tích điểm.

Yêu cầu:

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

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

Tách thành các việc cụ thể:

– Đếm số điểm thuộc mỗi mức xếp hạng Tốt, Khá, Đạt, Chưa đạt.

– Tìm sum, max, min.

Có hai lựa chọn viết chi tiết các câu lệnh: 1-Duyệt dãy điểm số đầu vào nhiều lần, mỗi lần làm một việc hoặc 2-Duyệt dãy điểm số đầu vào chỉ một lần, làm đồng thời nhiều việc trong một lần duyệt.

– Trả về các giá trị: điểm trung bình, max, min, số điểm thuộc mỗi mức xếp hạng.

Tham khảo đoạn chương trình sau:

# các hằng xác định mức điểm
TOT, KHA, DAT = 8.5, 7.0, 5.0

def ptDiem(ds): # ds là dãy số thực
    n = len(ds)
    tong, tot, kha, dat, chuadat = 0, 0, 0, 0, 0
    i, i_max, i_min = 0, 0, 0

    while i < n:
        if ds[i] > ds[i_max]:
            i_max = i
        if ds[i] < ds[i_min]:
            i_min = i
        tong = tong + ds[i]
        if ds[i] >= TOT: # TOT là hằng xác định mức điểm tốt
            tot += 1
        elif ds[i] >= KHA: # KHA là hằng xác định mức điểm khá
            kha += 1
        elif ds[i] >= DAT: # DAT là hằng xác định mức điểm đạt
            dat += 1
        else:
            chuadat += 1
        i += 1
    return (ds[i_max], ds[i_min], tong, tot, kha, dat, chuadat)

Nhiệm vụ 2

Thực hiện phân tích điểm một học sinh.

Yêu cầu:

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

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

– Gọi hàm ptDiem; viết kết quả vào tệp “phantich_theoHS.txt”.

– Theo kết quả đếm số điểm thuộc mỗi mức xếp hạng Tốt, Khá, Đạt, Chưa đạt, nếu chamDiem > 0 thì viết thêm tên học sinh vào tệp “xetKhenThuong.txt”.

– Định dạng in ra số thực bằng một trong các cách sau:

+ Dùng hàm round() làm tròn số trước khi in ra: round(số_thực, d) chỉ giữ lại d chữ số phần lẻ sau dấu chấm thập phân của số_thực. Ví dụ, nếu x = 345.678 thì round(x, 2) = 345.68.

+ Dùng lệnh in có giữ chỗ bằng “{}” để định dạng bằng hàm format. Nếu muốn in ra số thực với hai chữ số phần lẻ thì giữ chỗ bằng {:.2f} (Hình 1).

Tham khảo đoạn chương trình sau:

Gọi hàm ptDiem với hai tham số đầu vào:

  • chiso: chỉ số i của một HS trong danh sách.
  • ds: dãy điểm của HS có chỉ số i, là hàng i của mảng hai chiều.

Trước khi gọi hàm này, trong chương trình chính cần gán lại đầu ra chuẩn là tệp out_1 để lệnh print sẽ in ra tệp.

out_1 = open("phanTich_theoHS.txt", "w", encoding = 'utf-8')

sys.stdout = out_1

def ptHocSinh(ds, chiso):   #ds: dãy điểm của HS[chiso]
    n = len(ds)
    kq = ptDiem(ds)
    chamDiem = kq[3] - kq[5]
    if (chamDiem > 0):  #xét khen thưởng
        tenKhenThuong.append([tenHS[chiso], chamDiem])
    diemTBC.append(kq[2]/n)
    print (tenHS[chiso], kq[0], kq[1], kq[2], kq[3], kq[4], kq[5], kq[6])

Nhiệm vụ 3

Thực hiện phân tích điểm một môn học.

Yêu cầu:

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

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

– Gọi hàm ptDiem; viết kết quả vào tệp “phantich_theoMon.txt”.

– Gọi hàm quickSort_tuple_down; viết kết quả vào tệp “phantich_theoMon.txt”.

– Chạy thử với đầu vào là hai danh sách: 1-Danh sách số thực; 2-Danh sách các cặp (tên người, số thực).

Tham khảo đoạn chương trình sau:

Gọi hàm ptMonHoc với hai tham số đầu vào là tên hai sanh sách.

– ds_1: dãy điểm số môn học đó của cả lớp.

– ds_2 : danh sách các cặp (tên HS, điểm).

Trước khi gọi hàm này, trong chương trình chính cần gán lại đầu ra chuẩn là tệp out_2 để lệnh print sẽ in ra tệp.

out_2 = open("phanTich_theoMon.txt", "w", encoding ='utf-8')

sys.stdout = out_2

def ptMonHoc(ds_1, ds_2):   
    kq = ptDiem(ds_1)
    print('max = ', "{:.2f}".format(kq[0]),\
          'min = ', "{:.2f}".format(kq[1]),\
          'trung bình = ', "{:.2f}".format(kq[2]/soHS),\
          'tot = ', kq[3],'kha = ', kq[4],\
          'dat = ', kq[5],'chuadat = ', kq[6])
quickSort_tuple_down(ds_2, 0, soHS - 1)
print("Sắp xếp theo điểm giảm dần: ")
print(ds_2)

Nhiệm vụ 4

Phối hợp các hàm đã viết thành chương trình chính.

Yêu cầu:

Viết chương trình chính và chạy thử kiểm tra.

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

– Gọi hàm nhapTuTep.

– Mở tệp ở chế độ “viết” và gán làm đầu ra chuẩn (để có thể xuất kết quả ra bằng lệnh print).

– Lặp theo i là chỉ số hàng của mảng (danh sách) 2 chiều n×m thực hiện ptHocSinh.

– Lặp theo k là chỉ số cột ứng với điểm các môn học, thực hiện tachMon cho môn học k, thực hiện ptMonHoc.

– Đóng tệp.

Tham khảo đoạn chương trình sau:

Đầu chương trình là các câu lệnh khai báo:

– Các thư viện sẽ sử dụng.

– Các hằng xác định các mức điểm xếp hạng kết quả học tập.

– Các biến toàn cục cho cả chương trình là các danh sách:

tenHS, tenMon, tenKhenThuong, diemTBC

– Mảng hai chiều mỗi hàng là điểm của một HS, mỗi cột là điểm một môn học. Sau khi hoàn thành nhiệm vụ viết các hàm như đã trình bày, chương trình chính gồm một số câu lệnh như sau:

-Gọi hàm nhapTuTep. Hàm trả về hai giá trị là số HS và số môn học.

– Mở các tệp làm đầu ra.

– Gán đầu ra chuẩn là tệp phù hợp (để viết ra bằng câu lệnh print quen thuộc).

– Gọi hàm thực hiện công việc theo thiết kế.

...

n, m = nhapTuTep()
soHS = n_m[0]
soMon = n_m[1]

out_1 = open("phanTich_theoHS.txt", "w", encoding = 'utf-8') 
out_2 = open("phanTich_theoHS.txt", "w", encoding = 'utf-8') 
out_3 = open("phanTich_theoHS.txt", "w", encoding = 'utf-8') 
sys.stdout = out_1  # output ra file
for i in range(soHS):
    ptHocSinh(a[i], i)
sys.stdout = out_2
for k in range(soMon):
    kq = tachMon(a, k)

    print("--------", kq[0], "--------")
    ptMonHoc(kq[1], kq[2])

sys.stdout = out_3
for item in tenKhenThuong:
    print(item)

#đóng các tệp đầu ra
out_1.close()
out_2.close()
out_3.close()

Xem các bài giải khác: Giải Bài Tập Sách Giáo Khoa Tin Học Lớp 11 Khoa Học Máy Tính – Cánh Diều

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x