Giải ngắn gọn Tin học 11 định hướng KHMT Kết nối bài 29: Thực hành thiết kế chương trình theo modun

Giải siêu ngắn bài 29: Thực hành thiết kế chương trình theo modun sách tin học 11 định hướng Khoa học máy tính kết nối tri thức. Với câu từ ngắn gọn, ý tứ xúc tích, dễ hiểu, học sinh nhanh chóng nắm bắt các ý chính của bài, giúp nhớ nhanh và nhớ lâu. Từ đó, việc chinh phục kiến thức trở nên dễ hơn bao giờ hết.

LUYỆN TẬP

Câu 1: Hãy chỉnh sửa lại chương trình trên nêu bổ sung thêm điều kiện sau vào nhiệm vụ:

Trong tệp kết quả đầu ra, thứ tự các vận động viên được ghi theo thứ tự giảm dần của điểm đánh giá.

Trả lời:

def nhapDL(finp):

 f = open(finp)

 A = []

 B = []

 for line in f:

  s = line.split()

  A.append(s[0])

  temp = s[1:len(s)]

  temp = [float(x) for x in temp]

  B.append(temp)

 f.close()

 return A, B

def diem_gk(d):

 diem = sum(d) + d[0] + d[len(d) - 1]

 diem = diem / (len(d) + 2)

 return round(diem, 2)

def xuly(B):

 kq = []

 for i in range(len(B)):

  diem = diem_gk(B[i])

  kq.append(diem)

 return kq

def ghiDL(fout, A, B):

 f = open(fout, "w")

 A, B = zip(*sorted(zip(A, B), key=lambda x: x[1], reverse=True))

 for i in range(len(A)):

  print(A[i], B[i], file=f)

 f.close()

finp = "seagames.inp"

fout = "ketqua.out"

DS, Diem = nhapDL(finp)

Kq = xuly(Diem)

ghiDL(fout, DS, Kq)

 

Câu 2: Trong nhiệm vụ trên, nếu công thức tính điểm tổng hợp của Sea Games thay đổi thì chúng ta có phải sửa lại toàn bộ chương trình hay không? Nếu cần thì chỉ phải sửa mo đun nào? Hàm nào?

Trả lời:

  • Chỉ cần sửa lại hàm diem_gk(d). 

 

VẬN DỤNG

Thiết lập chương trình thiết kế theo mô đun cho các bài toán sau:

Câu 1: Cho trước số tự nhiên n, cần in ra trên màn hình dãy n số nguyên tố đầu tiên. Ví dụ nếu n = 5 thì dãy cần in ra sẽ là 2, 3, 5, 7, 11.

Trả lời:

def is_prime(num):

 """Kiểm tra xem một số có phải là số nguyên tố hay không."""

 if num <= 1:

  return False

 for i in range(2, int(num**0.5) + 1):

  if num % i == 0:

   return False

 return True

def print_prime_numbers(n):

 """In ra n số nguyên tố đầu tiên."""

 count = 0

 num = 2

 while count < n:

  if is_prime(num):

   print(num)

   count += 1

  num += 1

# Số nguyên n cần in ra dãy số nguyên tố đầu tiên

n = int(input())

# Gọi hàm in ra dãy số nguyên tố

print_prime_numbers(n)

Câu 2: Trong một kì thi Tin học trẻ, mỗi học sinh sẽ phải làm 3 bài thi. Với mỗi bài, nêu học sinh làm sẽ được ban giám khảo chấm và cho điểm, nếu không làm thì sẽ không tính điểm. Sau khi thi, dữ liệu điểm thi của học sinh sẽ được lưu trong một tệp văn bản và gửi về ban tổ chức. Mẫu một tệp điểm thi có dạng sau:

Quy định ghi trong tệp trên như sau:

  • Mỗi dòng sẽ bắt đầu bằng số báo danh của thí sinh, tiếp theo là ba giá trị điểm tương ứng với ba bài thì.

  • Điểm thi sẽ là một số tự nhiên từ 0 đến 20.

  • Nếu học sinh không làm thì bài đó ghi -1.

Em có nhiệm vụ tính toán tổng só điểm thi của các bạn học sinh và đưa dữ liệu ra tệp ketqua.out là danh sách ba bạn có tổng điểm cao nhất được sắp xếp giảm dần từ trên xuống đưới. Khuôn dạng dữ liệu đưa ra bao gồm: số báo danh, các điểm thi từng bài và cuối cùng là tổng điểm cả ba bài.

Ví dụ với dữ liệu trên thì kết quả như sau:

Trả lời:

# Đọc dữ liệu tệp điểm thi

with open("diemthi.inp", "r") as file:

 data = file.readlines()

# Tạo danh sách lưu thông tin điểm thi của các thí sinh

scores = []

for line in data:

 line = line.strip().split()# Tách dữ liệu trên mỗi dòng thành các từ

 sbd = line[0]# Lấy số báo danh của thí sinh

 diem1 = int(line[1])# Lấy điểm bài 1

 diem2 = int(line[2])# Lấy điểm bài 2

 diem3 = int(line[3])# Lấy điểm bài 3

 tong_diem = diem1 + diem2 + diem3# Tính tổng điểm

 scores.append((sbd, diem1, diem2, diem3, tong_diem))# Thêm thông tin vào danh sách

# Sắp xếp danh sách giảm dần theo tổng điểm

scores.sort(key=lambda x: x[4], reverse=True)

# Ghi kết quả vào ketqua.out

with open("ketqua.out", "w") as file:

 for score in scores:

  sbd = score[0]

  diem1 = score[1]

  diem2 = score[2]

  diem3 = score[3]

  tong_diem = score[4]

  file.write(f"{sbd}\t{diem1}\t{diem2}\t{diem3}\t{tong_diem}\n")

Nội dung quan tâm khác

Thêm kiến thức môn học

Từ khóa tìm kiếm: Giải ngắn gọn Tin học 11 Kết nối tri thức bài 29: Thực hành thiết kế chương trình theo modun, Giải ngắn gọn Tin học 11 KNTT bài 29: Thực hành thiết kế chương trình theo modun

Bình luận

Giải bài tập những môn khác