Sáng kiến kinh nghiệm Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học Lớp 11

Sáng kiến kinh nghiệm Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học Lớp 11

II. Mô tả giải pháp

1. Thực trạng (trước khi có sáng kiến)

Một số khó khăn trong dạy học nội dung Tệp và thao tác với tệp:

- Học sinh không nhớ về khái niệm và tác dụng của việc sử dụng tệp (đã học ở

lớp 10).

- Học sinh không nắm vững trình tự các bước để viết chương trình với tệp.

- Học sinh không có kĩ năng đọc dữ liệu với các dạng dữ liệu và cách lưu trữ dữ

liệu trong tệp văn bản.

- Trong các tiết thực hành học sinh rất lúng túng khi đang lập trình với việc nhập

dữ liệu từ bàn phím chuyển sang đọc dữ liệu từ tệp văn bản.

- Giáo viên thường rất mất thời gian trong việc hướng dẫn học sinh viết chương

trình có sử dụng tệp.

pdf 24 trang Người đăng phuongnguyen22 Ngày đăng 05/03/2022 Lượt xem 591Lượt tải 6 Download
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học Lớp 11", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
adln 
Xử lý các dữ liệu đã đọc 
Ghi các kết quả vào tệp .Out với Write hoặc Writeln 
Đóng các tệp đã mở bằng lệnh CLose 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 5 Trường THPT Trần Hưng Đạo 
Chương trình: 
Program Tong2so; 
Uses crt; 
Var f1, f2: Text; a, b, S: Integer; 
Begin 
Assign(f1, ‘Tong2so.Inp’); Reset(f1); 
Assign(f2, ‘Tong2so.Out’); Rewrite(f2); 
Read(f1, a, b); S := a + b; 
Write(f2, S); Close(f1); Close(f2); 
End. 
VD2: Cho 5 số x, y, a, b, R. 
Yêu cầu: Tính giá trị của biểu thức Z với 
x y
Z
x y
 
 

Input: Đọc từ tệp Tinh.Inp chứa các số lần lượt x, y, a, b, R 
Output: Ghi vào tệp Tinh.Out kết quả tìm được. 
Ví dụ: 
Tinh.Inp Tinh.Out Tinh.Inp Tinh.Out 
5 -8 3 6 2.3 -3.000 5 -8 3 6 14.3 13.000 
Chương trình: 
Program tinh; 
Var f1, f2 : text; x, y, a, b, r, z : real; 
Begin 
 Assign(f1, 'tinh.inp'); Reset(f1); 
 Assign(f2, 'tinh.out'); Rewrite(f2); 
 Readln(f1, x, y, a, b, r); 
 If sqrt(sqr(x-a)+sqr(y-b)) <= r then z := abs(x) + abs(y) 
 else z := x + y; 
 Write(f2, z:10:3); Close(f1);Close(f2); 
End. 
nếu điểm (x, y) thuộc hình tròn bán kính r, tâm (a, b). 
trong trường hợp còn lại. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 6 Trường THPT Trần Hưng Đạo 
Bài tập áp dụng 
BT1: Cho 2 số nguyên a và b. Yêu cầu: Tính tổng, hiệu, tích, thương của 2 số a, b. 
Input: Đọc từ tệp Tinh.Inp chứa 2 số nguyên a và b. 
Output: Ghi vào tệp Tinh.Out kết quả tìm được. 
Ví dụ: 
Tinh.Inp Tinh.Out 
5 4 
Tong 2 so la 9 
Hieu 2 so la 1 
Tich 2 so la 20 
Thuong 2 so la 1.25 
BT2: Cho 1 số nguyên a (với a ≠ 0). 
Yêu cầu: Tính chu vi và diện tích của hình vuông với cạnh là a. 
Input: Đọc từ tệp hvuong.Inp chứa 1 số nguyên a. 
Output: Ghi vào tệp hvuong.Out kết quả tìm được. 
Ví dụ: 
hvuong.Inp hvuong.Out 
5 Chu vi hinh vuong la 20 
Dien tich hinh vuong la 25 
BT3: Cho 2 số a, b (với a, b ≠ 0). 
Yêu cầu: Tính chu vi và diện tích của hình chữ nhật với 2 cạnh là a, b. 
Input: Đọc từ tệp hcn.Inp chứa 2 số nguyên a, b. 
Output: Ghi vào tệp hcn.Out kết quả tìm được. 
Ví dụ: 
hcn.Inp hcn.Out 
5 9 CV = 28 
DT = 45 
BT4: Cho 1 số R (với R > 0). 
Yêu cầu: Tính chu vi và diện tích của hình tròn với bán kính R. 
Input: Đọc từ tệp htron.Inp chứa 1 số R. 
Output: Ghi vào tệp htron.Out kết quả tìm được. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 7 Trường THPT Trần Hưng Đạo 
Ví dụ: 
htron.Inp htron.Out 
7 Chu vi hinh tron la 43.96 
Dien tich hinh tron la 153.86 
BT5: Yêu cầu: Tính vận tốc v khi chạm đất của một vật rơi từ độ cao h, biết rằng 
2v gh , trong đó g là gia tốc rơi tự do và 29,8 /g m s . 
Input: Đọc từ tệp VT.Inp chứa 1 số nguyên h. 
Output: Ghi vào tệp VT.Out kết quả tìm được (làm tròn đến 3 chữ số thập 
phân). 
VT.Inp VT.Out 
13 15.962 
BT6: Cho 3 số nguyên a, b, c (với a, b, c > 0). 
Yêu cầu: Kiểm tra xem 3 số a, b, c đó có tạo thành tam giác hay không? Nếu 
có thì tính chu vi, diện tích của tam giác. Ngược lại đưa ra thông báo 
“ 3 so khong tao thanh tam giac”. 
Input: Đọc từ tệp tamgiac.Inp chứa 1 số nguyên a, b, c. 
Output: Ghi vào tệp tamgiac.Out kết quả tìm được. 
Ví dụ: 
tamgiac.Inp tamgiac.Out tamgiac.Inp tamgiac.Out 
9 3 5 khong tao thanh tam giac 3 4 5 Chu vi tam giac la 12 
Dien tich tam giac la 6.0 
BT7: Cho 2 số a, b. Yêu cầu: Giải phương trình bậc nhất ax + b = 0. 
Input: Đọc từ tệp ptb1.Inp chứa 2 số a, b. 
Output: Ghi vào tệp ptb1.Out kết quả tìm được. 
Ví dụ: 
ptb1.Inp ptb1.Out ptb1.Inp ptb1.Out ptb1.Inp ptb1.Out 
0 0 Pt co VSN 0 7 PTVN 5 9 x = 1.800 
BT8: Cho 2 số a, b, c (a, b, c ≠ 0). 
Yêu cầu: Giải phương trình bậc hai ax2 + bx + c = 0. 
Input: Đọc từ tệp ptb2.Inp chứa 3 số a, b, c. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 8 Trường THPT Trần Hưng Đạo 
Output: Ghi vào tệp ptb2.Out kết quả tìm được. 
Ví dụ: 
ptb2.Inp ptb2.Out ptb2.Inp ptb2.Out 
2 2 3 PTVN 2 5 2 X1 = -0.5 
X2 = -2.0 
BT9: Cho 2 số x, y. Yêu cầu: Tính giá trị của biểu thức Z với 
2 2
0,5
x y
Z x y
 

 


Input: Đọc từ tệp Tinh.Inp chứa 2 số x, y. 
Output: Ghi vào tệp Tinh.Out kết quả tìm được. 
Ví dụ: 
Tinh.Inp Tinh.Out Tinh.Inp Tinh.Out Tinh.Inp Tinh.Out 
0.5 0.1 0.26 2 2.5 4.5 2 1 0.5 
PHẦN 3: Hướng dẫn học sinh thực hành các bài tập trên máy tính 
Giáo viên yêu cầu học sinh ghi nhớ trình tự thực hành một bài toán qua 6 bước 
sau: 
B1: Soạn thảo chương trình giải bài toán: Program .... End. 
B2: Lưu bài với tên trùng với tên tệp Inp, Out (VD: Tong2so.Pas; 
Tong2so.Inp; Tong2so.Out). 
B3: Đưa con trỏ đến phần tên của tệp Inp, bấm Ctrl + Enter, bấm Enter 2 
lần, gõ các giá trị bất kì theo đề bài cho trong tệp Inp, mỗi giá trị cách 
nhau 1 dấu cách 
B4: Chọn tệp chương trình Pas, đưa con trỏ đến phần tên của tệp Out, bấm 
Ctrl + Enter, bấm Enter 2 lần 
B5: Hiển thị 3 tệp cùng một lúc trên màn hình: Vào menu Window / Tile 
B6: Đưa con trỏ vào tệp Pas, bấm Ctrl + F9, chạy chương trình, kiểm tra kết 
quả ở tệp Out. Nếu chương trình có lỗi thì sửa lỗi và thực hiện lại B6 
Giáo viên thực hành trực tiếp trên bài toán ở ví dụ 1 
nếu x2 + y2 ≤ 1 
nếu x2 + y2 ≥ 1 và y ≥ x 
nếu x2 + y2 ≥ 1 và y < x 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 9 Trường THPT Trần Hưng Đạo 
PHẦN 4: Rèn luyện kĩ năng đọc/ghi dữ liệu bằng việc đưa ra các dạng dữ liệu có 
trong tệp Input 
Dạng 1: Dữ liệu là số trong tệp INPUT được xác định trước 
Với dạng dữ liệu này giáo viên sẽ gợi cho học sinh ghi nhớ sâu hơn về cách sử 
dụng cấu trúc lặp với số lần lặp biết trước FOR – DO 
VD1: Cho dãy gồm 10 số nguyên. 
Yêu cầu: Tính tổng các số trong dãy trên. 
Input: Đọc từ tệp Tongday.Inp 10 số nguyên, mỗi số cách nhau 1 dấu cách. 
Output: Ghi vào tệp Tongday.Out kết quả tìm được 
Ví dụ: 
Tongday.Inp Tongday.Out 
4 6 7 8 9 2 6 5 1 5 53 
Cách 1: Đọc 10 giá trị bằng 1 biến đơn 
Program Tinh; 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 10 Trường THPT Trần Hưng Đạo 
Uses crt; 
Var f1, f2: Text; a, i, S: Integer; 
Begin 
Assign(f1, ‘DS1.Inp’); Reset(f1); 
Assign(f2, ‘DS1.Out’); Rewrite(f2); 
S:=0; For i:=1 to 10 do 
 Begin Read(f1, a); S:=S+a; end; 
 Write(f2, S); Close(f1); Close(f2); 
End. 
Cách 2: Dùng mảng để đọc dãy 10 số. Với cách này học sinh có thể áp dụng cho bài 
toán có nhiều yêu cầu cần xử lí dữ liệu. 
Program Tinh; 
Uses crt; 
Var f1, f2: Text; a: array[1..10] of Integer; i, S: Integer; 
Begin 
Assign(f1, ‘DS1.Inp’); Reset(f1); 
Assign(f2, ‘DS1.Out’); Rewrite(f2); 
S:=0; For i:=1 to 10 do 
 begin Read(f1, a[i]); S := S + a[i]; end; 
 Write(f2, S); Close(f1); Close(f2); 
End; 
Từ bài toán này giáo viên gợi ý cho học sinh thực hành với số lượng giá trị trong 
dãy lớn hơn. 
VD2: Cho dãy gồm N số nguyên. 
Yêu cầu: Tính tổng của N số nguyên đó. 
Input: Đọc từ tệp Tongday.Inp chứa 
- Dòng 1:1 số nguyên N (1 < N < 10000) 
- Dòng 2: gồm N số nguyên mỗi số cách nhau 1 dấu cách. 
Output: Ghi vào tệp Tongday.Out kết quả tìm được 
Ví dụ: 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 11 Trường THPT Trần Hưng Đạo 
Tongday.Inp Tongday.Out 
7 
4 6 7 8 9 2 6 
42 
Ở bài toán này giáo viên hướng dẫn học sinh xác định được dãy số này gồm N 
số và cách giải tương tự VD1, thêm phần đọc giá trị N. 
Program Tinh; 
Uses crt; 
Var f1, f2: Text; N, a, i, S: Integer; 
Begin 
Assign(f1, ‘DS1.Inp’); Reset(f1); 
Assign(f2, ‘DS1.Out’); Rewrite(f2); 
Read(f1, N); S:=0; 
For i:=1 to N do 
Begin Read(f1, a); S:=S+a; end; 
 Write(f2, S); Close(f1); Close(f2); 
End. 
VD3: Input: Đọc từ tệp UCLN.Inp chứa: 
- Dòng 1:1 số nguyên N (1 < N < 50) 
- N dòng tiếp theo: mỗi dòng gồm 2 số nguyên a và b; mỗi số cách 
nhau 1 dấu cách. 
Yêu cầu: Tìm ước chung lớn nhất của mỗi cặp số (a, b). 
Output: Ghi vào tệp UCLN.Out gồm N dòng, mỗi dòng là kết quả tìm được 
ứng với từng cặp số (a, b). 
Ví dụ: 
UCLN.Inp UCLN.Out 
3 
5 25 
7 11 
18 27 
5 
1 
9 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 12 Trường THPT Trần Hưng Đạo 
Đối với bài toán này học sinh có thể nhận biết được việc tìm UCLN của các cặp 
(a, b) là N lần do đó ta cần đọc dữ liệu theo từng dòng, tìm UCLN và ghi kết quả vào 
tệp. Hai bài toán trên chỉ có một kết quả nên có thể dùng thủ tục Write hoặc Writeln 
để ghi vào tệp OUT. Bài toán có nhiều kết quả UCLN, mỗi kết quả trên 1 dòng thì sử 
dụng cấu trúc nào? 
Chương trình: 
Program UCLN; 
Uses crt; 
Var f1, f2: Text; N, a, b, i: Integer; 
Begin 
Assign(f1, ‘UCLN.Inp’); Reset(f1); 
Assign(f2, ‘UCLN.Out’); Rewrite(f2); 
Read(f1, N); For i:=1 to N do 
begin Read(f1, a, b); While a b do 
 If a > b then a := a – b else b := b – a; 
Writeln(f2, a); end; Close(f1); Close(f2); 
 End. 
Bài tập áp dụng 
BT1: Cho một dãy gồm 10 số nguyên. 
Yêu cầu: Đếm số lượng số chẵn, số lượng số lẻ trong dãy đó. 
Input: Đọc từ tệp ChanLe.Inp chứa 1 dãy gồm 10 số nguyên, mỗi số cách nhau 
1 dấu cách. 
Output: Ghi vào tệp ChanLe.Out kết quả tìm được. 
Ví dụ: 
ChanLe.Inp ChanLe.Out 
3 6 7 8 9 2 6 5 1 5 So luong so chan la: 4 
So luong so le la: 6 
BT2: Cho một dãy gồm N số nguyên dương. 
Yêu cầu: Kiểm tra xem trong dãy có bao nhiêu số nguyên tố. 
Input: Đọc từ tệp NguyenTo.Inp chứa 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 13 Trường THPT Trần Hưng Đạo 
- Dòng 1:1 số nguyên N (1 < N < 10000) 
- Dòng 2: gồm N số nguyên dương, mỗi số cách nhau 1 dấu cách. 
Ouput: Ghi vào tệp NguyenTo.Out các số nguyên tố tìm được, mỗi số cách 
nhau 1 dấu cách 
Ví dụ: 
NguyenTo.Inp NguyenTo.Out 
15 
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
2 3 5 7 11 13 
Kết quả ghi vào tệp OUT là các số nguyên tố, mỗi số cách nhau 1 dấu cách nên 
giáo viên hướng dẫn học sinh thêm kí tự dấu cách vào sau kết quả cần ghi. 
Ví dụ: Write(f2, a, ‘ ‘); 
BT3: Số hoàn hảo được định nghĩa là số có tổng các ước số của nó (trừ nó) bằng 
chính nó. Ví dụ: Số 6, 28 là các số hoàn hảo 
Vì 6 có các ước số là 1, 2, 3, 6 mà 1 + 2 + 3 = 6 
 28 có các ước số là 1, 2, 4, 7, 14, 28 mà 1 + 2 + 4 + 7 + 14 = 28 
Cho dãy gồm N số nguyên dương. 
Yêu cầu: Tính tổng các số lẻ và kiểm tra xem có bao nhiêu số hoàn hảo trong 
dãy. 
Input: Đọc từ tệp Hoanhao.Inp chứa 
- Dòng 1:1 số nguyên N (1 < N < 10000) 
- Dòng 2: gồm N số nguyên dương, mỗi số cách nhau 1 dấu cách. 
Output: Ghi vào tệp Hoanhao.Out gồm 2 dòng: 
- Dòng 1: Tổng các số lẻ của dãy. 
- Dòng 2: Các số hoàn hảo tìm được, mỗi số cách nhau 1 dấu cách 
Ví dụ: 
HoanHao.Inp Hoanhao.Out 
10 
6 35 4 12 28 7 496 9 11 120 
53 
6 28 496 
Học sinh có thể áp dụng cách đọc dãy số vào mảng, giáo viên hướng dẫn học 
sinh dựa vào giới hạn của N để khai báo số lượng phần tử của mảng chứa dãy. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 14 Trường THPT Trần Hưng Đạo 
BT4: Cho dãy gồm N số nguyên. 
Yêu cầu: Tìm GTLN trong dãy và sắp xếp dãy theo thứ tự tăng dần. 
Input: Đọc từ tệp Sapxep.Inp chứa 
- Dòng 1: số nguyên N (1 < N < 10000) 
- Dòng 2: gồm N số nguyên, mỗi số cách nhau 1 dấu cách. 
Output: Ghi vào tệp Sapxep.Out gồm 2 dòng: 
- Dòng 1: GTLN của dãy 
- Dòng 2: Dãy đã sắp xếp, mỗi số cách nhau 1 dấu cách 
Ví dụ: 
Sapxep.Inp Sapxep.Out 
10 
6 35 4 12 28 745 8 9 11 120 
745 
4 6 8 9 11 12 28 35 120 745 
BT5: (Dành cho học sinh Khá – Giỏi) 
Cho dãy gồm N số nguyên dương a1, a2, ..., aN. 
Yêu cầu: Tính tổng các chữ số của từng số. 
Input: Đọc vào từ tệp Tongchuso.Inp gồm: 
- Dòng 1: 1 số nguyên dương N (N ≥ 1). 
- N dòng tiếp theo: mỗi dòng 1 số nguyên dương (0 < ai ≤ 106). 
Output: Ghi vào tệp Tongchuso.Out gồm N dòng, mỗi dòng là một kết quả 
tính được. 
Ví dụ: 
Tongchuso.Inp Tongchuso.Out 
3 
25 
711 
12345 
7 
9 
15 
BT6: (Dành cho học sinh Khá – Giỏi) 
Máy tính điện tử xử lí thông tin bằng cách chuyển đổi tất cả dữ liệu sang dạng 
nhị phân (hệ đếm cơ số 2). Hệ nhị phân là một hệ đếm sử dụng 2 kí tự để biểu diễn 
một giá trị số, bằng tổng số các lũy thừa của 2. Hai ký tự đó thường là 0 và 1. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 15 Trường THPT Trần Hưng Đạo 
Ví dụ: Số A = 5  A = 22 + 20. Do đó 5 = 1012 
 B = 10  B = 23 + 21. Do đó 10 = 10102 
Cho dãy gồm N số nguyên dương a1, a2, ..., aN. 
Yêu cầu: Hãy biễu diễn từng số trong dãy sang hệ nhị phân. 
Input: Đọc vào từ tệp Nhiphan.Inp gồm: 
- Dòng 1: 1 số nguyên dương N (N ≥ 1). 
- N dòng tiếp theo: mỗi dòng 1 số nguyên dương (0 < ai ≤ 100). 
Output: Ghi vào tệp Nhiphan.Out gồm N dòng, mỗi dòng là một kết quả biểu 
diễn được. 
Ví dụ: 
Nhiphan.Inp Nhiphan.Out 
Dạng 2: Dữ liệu dạng số trong tệp INPUT không được xác định trước 
Với dạng dữ liệu này, giáo viên hướng dẫn học sinh sử dụng hàm kiểm tra kết 
thúc tệp: 
* Hàm EoLn() : Trả về giá trị True nếu con trỏ tệp đang chỉ tới cuối 
dòng. 
* Hàm Eof() : Trả về giá trị True nếu con trỏ tệp đang chỉ tới cuối 
tệp. 
Ví dụ mô tả cấu trúc 1 tệp văn bản (chữ in đậm trong file sẽ không được thể 
hiện) 
VD1: Cho tệp Tongday.Inp chứa 1 dãy gồm nhiều số nguyên, mỗi số cách nhau 1 
dấu cách. Đọc và tính tổng của dãy số nguyên đó. Kết quả ghi vào tệp 
Tongday.Out. 
Ví dụ: 
3 6 Eoln 
74 3 Eoln 
45 69 Eoln 
Eof 
VD.INP 
5 7 3 8 6 9 4 5 6 7 9 Eoln 
Eof 
VD.INP 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 16 Trường THPT Trần Hưng Đạo 
Tongday.Inp Tongday.Out 
4 6 7 8 9 2 6 5 1 5 53 
Ta có thể sử dụng 2 cách đọc giá trị của VD1 trong dạng 1. 
Program Tinh; 
Uses crt; 
Var f1, f2: Text; 
 a, S: Integer; 
Begin 
Assign(f1, ‘DS1.Inp’); Reset(f1); 
Assign(f2, ‘DS1.Out’); Rewrite(f2); 
S:=0; 
While not Eof(f1) do { Trong khi chưa kết thúc tệp thì đọc lần lượt từng 
giá trị vào biến a} 
 begin Read(f1, a); S:=S+a; end; 
 Write(f2, S); 
Close(f1); Close(f2); 
End. 
Như vậy, với dạng 1 sử dụng vòng FOR để đọc N giá trị hoặc xác định N lần 
đọc giá trị từ tệp INP. Với dạng 2 sử dụng vòng WHILE để đọc lần lượt các giá trị 
theo yêu cầu cho đến cuối tệp. 
VD2: Một trường THPT tổ chức cho giáo viên và học sinh đi cắm trại, sinh hoạt 
ngoài trời ở vườn quốc gia Cúc Phương. Để lê lịch đến thăm khu trại của các 
lớp, thầy hiệu trưởng cần biết khoảng cách từ trại của mình, ở vị trí có tọa độ 
(0, 0) đến trại của các giáo viên chủ nhiệm. Mỗi lớp có một khu trại, vị trí trại 
của giáo viên chủ nhiệm đều có tọa độ nguyên (x, y). 
Yêu cầu: Tính khoảng cách giữa trại của mỗi giáo viên chủ nhiệm và trại của 
thầy hiệu trưởng (lấy 2 chữ số phần thập phân). 
Input: Đọc từ tệp TRAI.Inp gồm nhiều dòng, mỗi dòng là cặp số nguyên (x, 
y) cách nhau 1 dấu cách. 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 17 Trường THPT Trần Hưng Đạo 
Output: Ghi vào tệp TRAI.Out gồm nhiều dòng, mỗi dòng là một khoảng cách 
tìm được tương ứng với từng cặp số (x, y) 
Ví dụ: 
TRAI.Inp TRAI.Out 
5 9 
12 16 
56 68 
23 29 
10.30 
20.00 
88.09 
37.01 
Bài tập áp dụng 
BT1: Số chính phương (hay còn gọi là số hình vuông) là số tự nhiên có căn bậc 2 là 
một số tự nhiên, hay nói cách khác, số chính phương là bình phương (lũy 
thừa bậc 2) của một số tự nhiên. Cho dãy số nguyên. 
Yêu cầu: Kiểm tra các số trong dãy có phải là số chính phương hay không? 
Input: Đọc từ tệp Cphuong.Inp gồm nhiều dòng, mỗi dòng là một số nguyên 
dương 
Output: Ghi vào tệp Cphuong.Out gồm nhiều dòng, mỗi dòng là chữ CO 
hoặc KHONG 
Ví dụ: 
Cphuong.Inp Cphuong.Out 
9 
24 
20 
169 
25 
CO 
KHONG 
KHONG 
CO 
CO 
BT2: Cho dãy số nguyên dương. 
Yêu cầu: Tính tổng các chữ số của từng số trong dãy. 
Input: Đọc từ tệp Tongchuso.Inp chứa 1 dãy số nguyên dương, mỗi số cách 
nhau 1 dấu cách. 
Output: Ghi vào tệp Tongchuso.Out gồm nhiều dòng, mỗi dòng là 1 kết quả 
tính được 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 18 Trường THPT Trần Hưng Đạo 
Ví dụ: 
Tongchuso.Inp Tongchuso.Out 
5 67 567 1956 5 
13 
18 
21 
BT4: Cho dãy số nguyên dương. 
Yêu cầu: Với mỗi số đã cho hãy xác định số lượng ước số của nó. 
Ví dụ với n = 2, a1 = 4, a2 = 12, số lượng ước số của 4 là 3 (1, 2, 4), số 
lượng ước số của 12 là 6 (1, 2, 3, 4, 6, 12). 
Input: Đọc từ tệp DEMUOC.INP gồm nhiều dòng, mỗi dòng 1 số nguyên 
dương. 
Output: Ghi vào tệp DEMUOC.OUT gồm nhiều dòng, mỗi dòng là số lượng 
ước số của từng số. 
Ví dụ: 
DEMUOC.INP DEMUOC.OUT 
17 
4 
12 
2 
3 
6 
Dạng 3: Dữ liệu trong tệp INPUT có chứa xâu kí tự (chữ cái) 
Với dạng dữ liệu này sẽ giúp học sinh gợi nhớ lại các thao tác xử lý đối với 
kiểu dữ liệu xâu STRING. 
VD1: Cho 2 xâu là họ tên của 2 học sinh. 
Yêu cầu: Hãy đưa ra họ tên dài hơn, nếu bằng nhau đưa ra họ tên của học sinh 
thứ 2. 
Input: Đọc vào từ tệp HT.Inp gồm 2 dòng, mỗi dòng là họ tên của một người. 
Output: Ghi vào tệp HT.Out chỉ 1 dòng duy nhất là kết quả tìm được. 
Ví dụ: 
HT.INP HT.OUT HT.INP HT.OUT 
Pham Thanh Lan Pham Thanh Lan Nguyen Thi Mai Mai Minh Hoang 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 19 Trường THPT Trần Hưng Đạo 
Tran Ngoc Bao Mai Minh Hoang 
Với bài toán này giáo viên cần hướng dẫn học sinh sử dụng cấu trúc Readln để 
đọc từng dòng dữ liệu (họ tên của từng người). 
Chương trình: 
Program VD; 
Var f1, f2 : text; 
 ht1, ht2 : string; 
Begin 
 Assign(f1, 'ht.inp'); Reset(f1); 
 Assign(f2, 'ht.out'); Rewrite(f2); 
 Readln(f1, ht1); 
 Readln(f1, ht2); 
 If length(ht1) > length(ht2) then write(f2,ht1) 
 else write(f2,ht2); 
 Close(f1); Close(f2); 
End. 
VD2: Cho xâu kí tự s1 chứa cả chữ cái và chữ số. 
Yêu cầu: Tạo xâu s2 chỉ gồm các chữ số có trong s1 (giữ nguyên thứ tự xuất 
hiện của chúng). 
Input: Đọc từ tệp Tachso.Inp chứa xâu s1 (không quá 255 kí tự). 
Output: Ghi vào tệp Tachso.Out xâu s2. 
Ví dụ: 
Tachso.Inp Tachso.Out 
hfht85an8dj9w02 858902 
Với bài toán này giáo viên có thể hướng dẫn học sinh đọc dữ liệu theo một trong 
hai cách 
Cách 1: Đọc dữ liệu vào xâu s1 sau đó kiểm tra từng kí tự trong s1 có phải là chữ số 
hay không? (dùng thủ tục Readln). 
Chương trình: 
Program Tachso; 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin học lớp 11 
Giáo viên: Phạm Thị Khánh 20 Trường THPT Trần Hưng Đạo 
Var f1, f2 : text; 
 S: string; 
Begin 
 Assign(f1,'tachso.inp'); reset(f1); 
 Assign(f2,'tachso.out'); rewrite(f2); 
 Read(f1,s); 
 For i:=1 to length(s) do if (s[i]>='0') and (s[i]<='9') then write(f2,s[i]); 
 Close(f1);close(f2); 
 End. 
Cách 2: Đọc lần lượt từng kí tự trong tệp Tachso.Inp và kiểm tra luôn (dùng thủ tục 
Read). Vì độ dài của xâu s1 là không xác định trước nên phải sử dụng cấu 
trúc kiểm tra kết thúc tệp hoặc kết thúc dòng. 
Chương trình: 
Program Tachso; 
Var f1, f2 : text; 
 ch : char; 
Begin 
 Assign(f1,'tachso.inp'); reset(f1); 
 Assign(f2,'tachso.out'); rewrite(f2); 
 While not eof(f1) do {có thể thay eof thành eoln) 
 begin 
 read(f1,ch); 
 if (ch>='0') and (ch<='9') then write(f2,ch); 
 end; 
 Close(f1);close(f2); 
End. 
VD3: Để xây dựng một chương trình đơn giản để quản lý lương nhân viên của xí 
nghiệp may người ta tạo một bảng thông tin. Dữ liệu nhập bao gồm: Họ tên (tối 
đa 20 kí tự), Hệ số lương (là số thập phân). 
Rèn luyện kĩ năng lập trình với tệp từ các bài toán cơ bản trong môn Tin 

Tài liệu đính kèm:

  • pdfsang_kien_kinh_nghiem_ren_luyen_ki_nang_lap_trinh_voi_tep_tu.pdf