BÀI 27. THAM SỐ CỦA HÀM
1. THAM SỐ VÀ ĐỐI SỐ CỦA HÀM
Tham số:
Khái niệm: Là các biến được khai báo ngay khi định nghĩa hàm. Chúng đóng vai trò như những "người nhận" dữ liệu.
Ví dụ: Khi em viết def xin_chao(ten): thì biến ten chính là tham số.
Đối số:
Khái niệm: Là giá trị thực sự mà em truyền vào cho hàm khi gọi hàm đó.
Ví dụ: Khi em gọi lệnh xin_chao("Minh") thì chữ "Minh" chính là đối số.
Cơ chế truyền giá trị:
- Khi gọi hàm, các đối số (giá trị bên ngoài) sẽ được gán lần lượt cho các tham số (biến bên trong) theo đúng thứ tự.
- Ví dụ: Có hàm def tong(a, b):
Nếu gọi tong(3, 5) thì máy tính sẽ hiểu: tham số a nhận giá trị 3, tham số b nhận giá trị 5.
CÂU HỎI TRẮC NGHIỆM
Câu 1: Các biến được khai báo ngay khi định nghĩa hàm được gọi là gì?
Câu 2: Giá trị thực sự truyền vào khi gọi một hàm được gọi là gì?
Câu 3: Trong câu lệnh def xin_chao(ten):, biến ten đóng vai trò là gì?
Câu 4: Khi gọi hàm, các đối số sẽ được gán cho tham số theo quy tắc nào?
Câu 5: Nếu có hàm def tong(a, b):, khi gọi tong(3, 5) thì biến a nhận giá trị nào?
Câu 6: Điểm khác biệt cơ bản nhất giữa tham số và đối số là gì?
Câu 7: Cho hàm f_dem(msg, sep). Nếu muốn tách chuỗi theo dấu phẩy, đối số sep là gì?
Câu 8: Để hàm in_the(ten, lop) in ra "Minh, 10A1", ta phải gọi hàm thế nào?
2. CÁCH SỬ DỤNG CHƯƠNG TRÌNH CON
Tránh viết lại mã lệnh (Tái sử dụng):
- Giúp gom các đoạn lệnh xử lý một công việc lặp đi lặp lại thành một hàm để gọi ra dùng nhiều lần, giúp chương trình có cấu trúc rõ ràng, dễ hiểu.
- Ví dụ: Thay vì phải viết đi viết lại phép tính diện tích hình chữ nhật ở nhiều nơi trong chương trình, em chỉ cần viết hàm tinh_dien_tich(dai, rong) một lần và gọi lại mỗi khi cần.
Chia để trị (Phân chia công việc):
- Giúp chia nhỏ một bài toán lớn và phức tạp thành nhiều bài toán nhỏ, từ đó phát huy được tinh thần làm việc nhóm.
- Ví dụ: Khi nhóm của em viết phần mềm máy tính bỏ túi, một bạn sẽ phụ trách viết hàm cong(), bạn khác viết hàm tru(), rồi gộp lại thành một chương trình hoàn chỉnh.
Dễ bảo trì và nâng cấp:
- Khi dùng hàm, chương trình chính sẽ rất ngắn gọn. Nếu chương trình bị lỗi hoặc cần nâng cấp, em chỉ cần tìm đến đúng hàm đó để chỉnh sửa rất thuận tiện.
- Ví dụ: Nếu phép cộng bị sai, em chỉ cần vào bên trong hàm cong() để sửa lại, không cần phải dò tìm rải rác trong toàn bộ chương trình chính.
CÂU HỎI TRẮC NGHIỆM
Câu 9: Việc gom các đoạn lệnh lặp lại thành một hàm gọi là gì?
Câu 10: Chương trình con giúp cấu trúc của chương trình trở nên thế nào?
Câu 11: Trong Python, chương trình con thường được thiết lập dưới dạng nào?
Câu 12: Tại sao nên sử dụng hàm thay vì viết lại mã lệnh nhiều lần?
Câu 13: Khi muốn thay đổi logic xử lý trong hàm đã được gọi nhiều nơi, ta cần làm gì?
Câu 14: Việc chia nhỏ chương trình thành các hàm (chương trình con) giúp ích gì?
Câu 15: Nếu cần tính diện tích cho 100 hình chữ nhật khác nhau, ta nên làm gì?
Câu 16: Khi thiết lập hàm in_the_hoc_sinh gọi 2 lần với đối số khác nhau, kết quả là gì?
3. THỰC HÀNH: TRUYỀN GIÁ TRỊ CHO ĐỐI SỐ CỦA HÀM
Nhiệm vụ 1: Máy tính tổng linh hoạt
Đề bài:
Thiết lập hàm f_sum(A, b) có chức năng tính tổng các số của danh sách A theo quy định sau:
- Nếu b bằng 0 thì tính tổng tất cả các số của danh sách A.
- Nếu b khác 0 thì chỉ tính tổng các số dương của A.
Hướng dẫn:
Định nghĩa hàm với 2 tham số: danh sách A và cờ điều khiển b.
- Tạo biến S = 0 để lưu tổng. Dùng vòng lặp for x in A: để duyệt qua từng số trong danh sách.
- Bên trong vòng lặp, dùng lệnh if kiểm tra tham số b. Nếu b == 0, ta cộng dồn mọi số x vào S.
- Ngược lại, ta dùng thêm lệnh if x > 0: để chỉ cộng các số dương. Cuối cùng dùng return S.
Chương trình Python hoàn chỉnh:
Nhiệm vụ 2: Máy đếm từ thông minh
Đề bài:
Thiết lập hàm f_dem(msg, sep) có chức năng đếm số lượng từ của một câu (xâu msg) dựa vào kí tự tách từ (sep) do người dùng tự chỉ định.
Hướng dẫn:
Để tách xâu msg thành một danh sách các từ, ta dùng lệnh split().
- Tuy nhiên, thay vì tách bằng dấu cách mặc định, ta sẽ đưa tham số sep vào làm tham số cho lệnh split(sep).
- Cuối cùng, trả về độ dài của danh sách (chính là số lượng từ) bằng hàm len().
Chương trình Python hoàn chỉnh:
Nhiệm vụ 3: Máy in thẻ học sinh
Đề bài:
Thiết lập hàm in_the_hoc_sinh(ten, lop, truong) nhận vào 3 tham số. Hàm có nhiệm vụ in ra màn hình một khung thẻ học sinh chứa các thông tin đó.
Viết chương trình chính gọi hàm này 2 lần với các đối số khác nhau để thấy sự thay đổi.
Hướng dẫn:
Khởi tạo hàm bằng lệnh def kèm 3 tham số đại diện cho 3 mẩu thông tin.
- Dùng nhiều lệnh print() để trang trí và lồng ghép các tham số vào để in ra màn hình. (Hàm này không cần lệnh return vì nó chỉ thực hiện hành động in).
- Dưới chương trình chính, gọi tên hàm và truyền vào 3 giá trị cụ thể (đối số) theo đúng thứ tự: tên, lớp, trường.