Nội dung chính tin học 11 theo định hướng khoa học máy tính cánh diều Chủ đề F(CS) Bài 11+ 12: Thực hành thiết kế và lập trình theo mô đun
Hệ thống kiến thức trọng tâm Chủ đề F(CS) Bài 11+ 12: Thực hành thiết kế và lập trình theo mô đun sách tin học 11 theo định hướng khoa học máy tính cánh diều. Với các ý rõ ràng, nội dung mạch lạc, đi thẳng vào vấn đề hi vọng người đọc sẽ nắm trọn kiến thức trong thời gian rất ngắn. Nội dung chính được tóm tắt ngắn gọn sẽ giúp thầy cô ôn tập củng cố kiến thức cho học sinh. Bộ tài liệu có file tải về. Mời thầy cô kéo xuống tham khảo
Xem: => Giáo án tin học 11 theo định hướng khoa học máy tính cánh diều
BÀI 11, 12. THỰC HÀNH THIẾT KẾ VÀ LẬP TRÌNH THEO MÔ ĐUN
1. THỰC HÀNH BÀI 11
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
2. THỰC HÀNH BÀI 12
Nhiệm vụ 1:
- Chương trình 1:
# 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[im_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
i += 1
return (ds[i_max], ds[i_min], tong, tot, kha, dat, chuadat)
- Chương trình 2:
def tuPhanVi(day): # dãy đã sắp xếp theo thứ tự tăng dần
n = len(day)
if n<3: return
if n==3: return day
kq = []
for i in [1,2,3]:
k = i*(n+1)//4
if 4*k == i*(n+1):
kq.append(a[k-1])
else:
kq.append((a[k-1]+a[k])/2)
return kq
Nhiệm vụ 2:
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:
def ptMonHoc(ds_1,ds_2): # ds_1: dãy số thực là các điểm môn học
# ds_2: danh sách các cặp (tên HS, điểm)
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], 'chua dat = ',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:
...
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-theoMon.txt", "w", encoding ='utf-8')
out 3 = open ("xet Khen Thuong.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 # output ra file
for k in range (soMon): # soMon: số cột của mảng hai chiều
kq tachMon (a, k)
print('____', kq[0],'____: ')
ptMonHoc (kq[1], kq[2]) # kq[1]: dãy điểm số
# kq[2]: danh sách các cặp (tên HS, điểm)
sys.stdout = out_3 # output ra file
for item in tenKhenThuong:
print (item)
# đóng các tệp đầu ra
out_1.close()
out_2.close()
out 3.close()