Lý thuyết Tin học 11 Kết nối tri thức bài 20
Lý thuyết Tin học lớp 11 bài 20: Thực hành bài toán tìm kiếm hay, chi tiết sách Kết nối tri thức sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt Tin học 11.
Bài: Thực hành bài toán tìm kiếm
1. Nhiệm vụ 1: Đọc và ghi tệp trong Python
Hướng dẫn:
Để thực hiện được các bài tập thực hành trong sách, em cần biết một số lệnh và thao tác đọc, ghi dữ liệu từ tệp văn bản.
a. Đối tượng tệp
Python cho phép đọc, ghi dữ liệu với tệp văn bản (text file) rất dễ dàng. Các tệp đều được mở để đọc và ghi dưới dạng văn bản. Đối tượng tệp được tạo ra bằng lệnh open() với các cách như sau:
- Lệnh mở tệp để đọc:
f = open(, "r", encoding= "UTF-8")
Chú ý: Tham số "r" có thể bỏ qua. Tham số encoding dùng khi mở tệp văn bản có mã Unicode, ví dụ tiếng Việt. Nếu không có tham số encoding thì chỉ đọc được văn bản có mã ASCII.
- Lệnh mở tệp để ghi dữ liệu từ đầu:
f = open( , "w", encoding= "UTF-8")
Chú ý: Tham số "w" là bắt buộc.
- Lệnh mở tệp để ghi tiếp dữ liệu:
f = open( , "a", encoding= "UTF-8")
Chú ý: Tham số "a" là bắt buộc.
Sau khi mở tập thi có thể tiến hành đọc (hoặc ghi) dữ liệu. Sau khi thực hiện xong các thao tác đọc, ghi thì cần đóng đối tượng tệp bằng lệnh sau:
f.close()
b. Các lệnh đọc dữ liệu từ tệp văn bản
Dữ liệu trong các tệp văn bản được lưu dưới dạng các dòng, mỗi dòng là một xâu kí tự. Sau khi mở tệp bằng lệnh open(), con trỏ đọc mặc định ở đầu của tệp sẵn sàng chờ lệnh đọc.
Các lệnh đọc dữ liệu từ đối tượng f trong Python
Ví dụ 1. Với bộ dữ liệu trên, cần đọc và đưa vào hai list là TenHS và Diem HS. Chương trình sau đọc dữ liệu từ tệp Data.inp, đưa dữ liệu vào hai mảng trên và hiển thị kết quả ra màn hình.
c. Ghi dữ liệu ra tệp văn bản
Việc ghi dữ liệu ra tệp văn bản đơn giản nhất là sử dụng lệnh print(). Cú pháp lệnh print() như sau:
print(, , ... , file = <đối tượng file>)
Chú ý: Tham số file = <đối tượng file> là bắt buộc khi cần đưa dữ liệu ra tệp. Tất cả các tham số khác của lệnh print() vẫn có giá trị khi đưa dữ liệu ra tệp.
Ví dụ 2. Giả sử có hai mảng TenHS và DiemHS tương ứng với dữ liệu tên và điểm của các học sinh trong lớp. Chương trình sau ghi những thông tin này ra tệp Data out có định dạng tương tự như Data inp.
2. Nhiệm vụ 2: Viết chương trình tra cứu điểm thi
Yêu cầu: Viết chương trình tra cứu điểm thi theo tên các học sinh trong lớp. Chương trình cho phép người dùng nhập tên của học sinh cần tra cứu, sau đó kiểm tra và thông báo điểm số của học sinh cần tìm.
Nhập dữ liệu: Yêu cầu người dùng nhập dữ liệu điểm học sinh từ tập trên máy tính. Tệp bao gồm nhiều hàng, mỗi hàng gồm tên học sinh và điểm cách nhau bởi dấu cách. Ví dụ tệp có cấu trúc như Hình dưới.
Tra cứu dữ liệu: Cho phép người dùng nhập tên học sinh cần tra cứu, tìm và in ra màn hình kết quả điểm thi của học sinh đó. Nếu không tìm thấy tên học sinh trong danh sách đã nhập, thông báo "không tìm thấy dữ liệu của học sinh".
Hướng dẫn:
Phân tích bài toán: Nhiệm vụ này có thể được thực hiện thông qua thuật toán tìm kiếm. Với dữ liệu đầu vào là tên của học sinh, chương trình cần sử dụng thuật toán tìm kiếm để kiểm tra xem tên của học sinh có tồn tại trong danh sách không. Nếu tồn tại thì học sinh cần tìm nằm ở vị trí nào trong danh sách. Do tên học sinh và điểm số được nhập vào danh sách theo cùng một thứ tự, từ vị trí tên học sinh trong danh sách tên, chúng ta có thể suy ra điểm số của học sinh đó trong danh sách điểm.
Chương trình có thể như sau:
3. Nhiệm vụ 3: Viết chương trình kiểm tra điểm thi
Yêu cầu: Viết chương trình kiểm tra điểm thi của các học sinh trong một lớp học. Điểm thi của học sinh được ghi trong tệp diemthi_sx.inp, trong đó mỗi điểm thi của các học sinh được viết trong một hàng và được sắp xếp theo thứ tự tăng dần. Chương trình đọc dữ liệu điểm thi từ tệp, sau đó cho phép người dùng nhập một điểm số cần kiểm tra. Nếu điểm số có tồn tại thì in ra vị trí mà điểm số đó xuất hiện trong tệp, nếu điểm số không tồn tại thì in ra thông báo điểm số không tồn tại. Ví dụ tập có cấu trúc như Hình dưới.
Hướng dẫn:
Phân tích bài toán: Tương tự như Nhiệm vụ 2, nhiệm vụ này vẫn được thực hiện bằng cách sử dụng thuật toán tìm kiếm. Trong nhiệm vụ này, dữ liệu điểm số đã được sắp xếp theo thứ tự tăng dần do đó chúng ta có thể áp dụng thuật toán tìm kiếm nhị phân đề gia tăng tốc độ tìm kiếm.
Chương trình có thể như sau:
>>> Bài tiếp theo: Lý thuyết Tin học 11 Kết nối tri thức bài 21