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

docx 24 trang sk11 21/07/2024 920
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 hãy click vào nút Download ở trên.

Tóm tắt nội dung 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

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Ở GIÁO DỤC VÀ ĐÀO TẠO NAM ĐỊNH
 TRƯỜNG THPT TRẦN HƯNG ĐẠO
 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ác giả : Phạm Thị Khánh 
 Trình độ chuyên môn: Cử nhân 
 Chức vụ: Giáo viên Tin học
 Nơi công tác: Trường THPT Trần Hưng Đạo
 Nam Định, tháng 5 năm 2017 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 định hướng cho học sinh tại sao nên sử dụng tệp khi lập trình giải 
toán; điểm khác biệt giữa việc lập trình từ bàn phím và lập trình sử dụng tệp văn bản.
 Do đặc điểm của bộ nhớ trong nên ta phải sử dụng tệp để lưu trữ dữ liệu lâu dài 
với dung lượng lớn. Khi lập trình giải một bài toán trên máy tính với dữ liệu Input 
nhập vào từ bàn phím và in kết quả ra màn hình thì không lưu trữ được kết quả trên 
máy tính. Việc lập trình với tệp không những lưu trữ được kết quả bài toán lâu dài mà 
với một bộ Input có thể dùng để giải nhiều hơn một bài toán. Hơn nữa kết quả của 
một bài toán có thể được dùng làm dữ liệu vào cho bài toán khác.
 Với các bài toán đã học và thực hành:
 + Input: dữ liệu bài toán cho (dữ liệu vào) được nhập từ bàn phím
 + Output: kết quả của bài toán (dữ liệu ra) được in ra màn hình 
 Khi lập trình với tệp:
 + Input: dữ liệu bài toán cho (dữ liệu vào) được lấy (đọc) từ file dữ liệu 
 (thường có phần mở rộng là INP)
 + Output: kết quả của bài toán (dữ liệu ra) được đưa (ghi) vào file dữ liệu 
 khác (thường có phần mở rộng là OUT)
 Khi đó để giải một bài toán, người lập trình phải tương tác với 3 tệp:
 Tệp dữ liệu Tệp chương trình Tệp dữ liệu 
 vào Input (.PAS) ra Output 
 (.INP) (.OUT)
 Để thực hiện được sự tương tác trên ta cần sử dụng các thao tác làm việc với tệp 
như sau:
 1. Khai báo tệp Var : Text;
 2. Mở tệp để đọc dữ liệu ASSIGN(biến tệp, tên tệp); RESET(biến tệp);
 3. Mở tệp để ghi dữ liệu ASSIGN(biến tệp, tên tệp); REWRITE(biến tệp);
 4. Đọc dữ liệu từ tệp READ(biến tệp, danh sách biến);
 READLN(biến tệp, danh sách biến);
 5. Ghi dữ liệu vào tệp WRITE(biến tệp, danh sách kết quả);
 WRITELN(biến tệp, danh sách kết quả);
Giáo viên: Phạm Thị Khánh 3 Trường THPT Trần Hưng Đạo 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
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 nếu điểm (x, y) thuộc hình tròn bán kính r, tâm (a, b). 
 Z 
 x y trong trường hợp còn lại.
 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.
Giáo viên: Phạm Thị Khánh 5 Trường THPT Trần Hưng Đạo 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
 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
 v 2gh , trong đó g là gia tốc rơi tự do và g 9,8m / s 2 .
 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.
Giáo viên: Phạm Thị Khánh 7 Trường THPT Trần Hưng Đạo 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
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;
Giáo viên: Phạm Thị Khánh 9 Trường THPT Trần Hưng Đạo 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
 Tongday.Inp Tongday.Out
 7 42
 4 6 7 8 9 2 6
 Ở 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
 5 25 1
 7 11 9
 18 27
Giáo viên: Phạm Thị Khánh 11 Trường THPT Trần Hưng Đạo 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
 - 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 5 7 11 13
 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
 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 53
 6 35 4 12 28 7 496 9 11 120 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.
Giáo viên: Phạm Thị Khánh 13 Trường THPT Trần Hưng Đạo 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
 2 0
 Ví dụ: Số A = 5  A = 2 + 2 . Do đó 5 = 1012
 3 1
 B = 10  B = 2 + 2 . 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) VD.INP
 VD.INP
 3 6 Eoln 
 5 7 3 8 6 9 4 5 6 7 9 Eoln
 74 3 Eoln 
 Eof
 45 69 Eoln 
 Eof
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ụ:
Giáo viên: Phạm Thị Khánh 15 Trường THPT Trần Hưng Đạo 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
 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 10.30
 12 16 20.00
 56 68 88.09
 23 29 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 CO 
 24 KHONG 
 20 KHONG 
 169 CO
 25 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
Giáo viên: Phạm Thị Khánh 17 Trường THPT Trần Hưng Đạo

File đính kèm:

  • docxsang_kien_kinh_nghiem_ren_luyen_ki_nang_lap_trinh_voi_tep_tu.docx
  • pdfSá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.pdf