Bài 10F. Chương trình con và thư viện các chương trình con có sẵn

Chương trình con và thư viện các chương trình con có sẵn trang 86 SGK Tin Học lớp 10Cánh Diều, mời các em tham khảo cùng Bumbii.

Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính. Bài 10F. Chương trình con và thư viện các chương trình con có sẵn.

KHỞI ĐỘNG

Khi giải quyết một bài toán phức tạp, ta có thể phân chia nó thành một số bài toán con. Trong lập trình có khái niệm chương trình con, em hãy đoán xem chương trình con của một chương trình là gì?

Đáp án:

Chương trình con của một chương trình là đoạn lệnh giải quyết một bài toán con (một thành phần) của bài toán cần giải quyết.

KHÁI NIỆM CHƯƠNG TRÌNH CON

Hoạt động 1

Khi giải quyết một bài toán phức tạp, người ta thường phân chia bài toán đó thành một số bài toán con. Em sẽ chia bài toán sau đây thành những bài toán con nào?

Bài toán: Cho ba tam giác có độ dài ba cạnh lần lượt là a, b và c; u, v và w; p, q và r. Độ dài các cạnh đều là số thực cùng đơn vị đo. Em hãy tính diện tích của mỗi tam giác đó và đưa ra diện tích lớn nhất trong các diện tích tính được. Công thức Heron tính diện tích tam giác theo độ dài ba cạnh:

Đáp án:

Có thể chia bài toán trên thành các bài toán con sau:

1) Tính diện tích một tam giác khi biết số đo ba cạnh (theo công thức Heron).

2) Tìm diện tích lớn nhất trong 3 diện tích tìm được.

CHUYỂN DỮ LIỆU CHO HÀM THỰC HIỆN

Hoạt động 2

Chương trình trong Hình 2 khai báo hàm ptb1(), hàm này giải phương trình có dạng ax + b = 0. Khi được gọi thực hiện, hàm ptb1() yêu cầu nhập các hệ số a, b từ bàn phím, biện luận và giải phương trình rồi đưa ra kết quả.

1) Em hãy soạn thảo chương trình ở Hình 2 đặt tên là “VD_ptb1.py”, sau đó chạy chương trình với các dữ liệu đầu vào như ở Hình 3 và đối chiếu kết quả.

2) Em hãy sửa lại chương trình “VD_ptb1.py” theo các bước trong Bảng 1, đặt tên là “Try_ptb1.py”, chạy thử và trả lời hai câu hỏi sau:

a) Chương trình “Try_ptb1.py” đã truyền trực tiếp hệ số a = 5, b = 4 vào lời gọi hàm ptb1(5, 4), kết quả khi chạy có khác gì với kết quả chạy chương trình ở Hình 2 không?

b) Vì sao trong chương trình “Try_ptb1.py”, thân của hàm không cần những câu lệnh nhập giá trị cho các hệ số a, b?

Bảng 1. Các bước sửa chương trình “VD_ptb1.py”

1) Bổ sung tham số a, b vào trong cặp ngoặc () ở dòng khai báo hàm, để được ptb1(a, b).

2) Xoá trong thân hàm hai lệnh nhập hệ số a, b từ bàn phím.

3) Thay lời gọi ptb1() bằng ptb1(5, 4) để hàm thực hiện với a = 5, b = 4.

4) Thêm các lời gọi thực hiện hàm ptb1(a, b) tương ứng với cặp hệ số a = 0, b = 0 và a = 0, b = 4.

Đáp án:

1) Thực hành như chương trình ở Hình 2 đặ tên là “VD_ptb1.py” và chạy chương trình với các dữ liệu đầu vào ở Hình 3.

2) Sửa chương trình “VD_ptb1.py” theo 4 bước đã nêu trong hoạt động. Chương trình sau khi sửa và kết quả chạy:

def ptb1(a,b): #Giải phương trình bậc nhất
    if a!= 0:
        print('Phương trình có nghiệm duy nhất là: ', -b/a)
    elif b == 0:
        print('Phương trình vô nghiệm.')
    else:
        print('Phương trình vô số nghiệm.')
ptb1(5,4)
a = 0
b = 0
ptb1(a, b)
a = 0
b = 4
ptb1(a, b)

– Lời gọi hàm ptb1(5, 4) đã làm hàm ptb1(a, b) được thực hiện với a = 5, b = 4. Và ta không cần nhập a và b từ bàn phím.

– Trong chương trình “Try_ptb1.py”, thân của hàm không cần những câu lệnh nhập giá trị cho các hệ số a, b. Vì để hàm thực hiện xử lí công việc ngày càng đơn giản, hàm có thể được sử dụng lại nhiều lần; còn các hệ số tính toán được nhập ở ngoài chương trình chính, không ảnh hưởng đến các chương trình con.

LUYỆN TẬP

Bài 1

Với hàm BCNN được xây dựng ở chương trình sau đây (Hình 8), trong những dòng lệnh có sử dụng hàm BCNN, dòng lệnh nào đúng, dòng lệnh nào sai và tại sao?

Đáp án:

Bài 2

Chương trình ở Hình 9 xây dựng một hàm tính diện tích một tam giác bằng công thức Heron theo ba cạnh của tam giác. Em hãy hoàn thiện chương trình bằng lời gọi hàm thích hợp để đưa ra màn hình kết quả tính diện tích của tam giác có ba cạnh là 3, 4, 5.

Đáp án:

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

#Tính diện tích tam giác ba cạnh a,b,c
def dientichtamgiac (a,b,c):
    p = (a+b+c)/2
    s = p*(p-a)*(p-b)*(p-c)
    return s**0.5
print('Diện tích tam giác là: ',dientichtamgiac(3,4,5))

Kết quả chương trình:

VẬN DỤNG

Sử dụng kết quả của Bài 2 phần Luyện tập, em hãy viết chương trình giải bài toánHoạt động 1.

Đáp án:

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

def dientichtg():
    a = float(input('Cạnh thứ nhất: '))
    b = float(input('Cạnh thứ hai: '))
    c = float(input('Cạnh thứ ba: '))
    p = (a+b+c)/2
    s = p*(p-a)*(p-b)*(p-c)**0.5
    return s
s1 = dientichtg()
s2 = dientichtg()
s3 = dientichtg()
print('Diện tích tam giác thứ nhất: ',s1)
print('Diện tích tam giác thứ hai: ',s2)
print('Diện tích tam giác thứ ba: ',s3)
print('Diện tích tam giác lớn nhất: ',round(max(s1,s2,s3),6))

Kết quả chương trình:

CÂU HỎI TỰ KIỂM TRA

Trong các câu sau đây, những câu nào đúng?

1) Sử dụng chương trình con sẽ làm chương trình dễ hiểu, dễ tìm lỗi hơn.

2) Hàm chỉ được gọi một lần duy nhất ở chương trình chính.

3) Hàm luôn trả một giá trị qua tên của hàm.

4) Python chỉ cho phép chương trình gọi một hàm xây dựng sẵn trong các thư viện của Python.

5) Khai báo hàm trong Python luôn có danh sách tham số.

Đáp án:

1) Đúng. Sử dụng chương trình con sẽ làm chương trình dễ hiểu, dễ tìm lỗi hơn.

2) Sai. Có thể gọi hàm nhiều lần trong chương trình chính.

3) Sai. Có các hàm không dùng tên để lưu giá trị tính toán.

4) Sai. Chương trình Python có thể gọi hàm từ thư viện do người hùng tự xây dựng.

5) Sai. Khai báo hàm trong Python có thể không có danh sách tham số.

Xem thêm các bài khác tại Giải bài tập sách giáo khoa Tin học Lớp 10 – 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