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
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Ở 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:
- sang_kien_kinh_nghiem_ren_luyen_ki_nang_lap_trinh_voi_tep_tu.docx
- 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.pdf