1. Trang chủ
  2. » Giáo án - Bài giảng

Phương pháp dạy học sinh cách viết chương trình sử dụng kiểu dữ liệu tệp văn bản

23 819 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT HÀ TRUNG SÁNG KIẾN KINH NGHIỆM PHƯƠNG PHÁP DẠY HỌC SINH CÁCH VIẾT CHƯƠNG TRÌNH SỬ DỤNG KIỂU DỮ LIỆU TỆP VĂN BẢN Người thực hiện: Lê Thùy Giang Chức vụ: Giáo viên SKKN thuộc lĩnh mực (môn): Tin học THANH HOÁ NĂM 2016 A MỞ ĐẦU Lý chọn đề tài Nhận thấy số tốn có khối lượng liệu lớn, có u cầu lưu trữ lại để xử lý nhiều lần cần phải có kiểu liệu tệp (File) kiểu liệu tệp có đặc điểm lớn: Thứ nhất: lưu trữ lâu dài nhớ (đĩa từ, đĩa CD…) nên liệu không bị tắt nguồn điện Thứ hai: Lượng liệu tệp lớn phụ thuộc vào dung lượng đĩa Nhưng điều làm băn khoăn học sinh bắt đầu tiếp cận (học) với kiểu liệu tệp học sinh khơng hiểu chất, cách sử dụng tệp viết chương trình nên tơi khơng khỏi băn khoăn suy nghĩ làm để học sinh hiểu, nắm bắt chất kiểu liệu tệp (cụ thể chương trình tin học 11 dạy tệp văn bản) viết chương trình tốt sử dụng kiểu liệu tệp văn Sau thời gian giảng dạy, ôn thi học sinh giỏi, miệt mài nghiên cứu tham khảo ý kiến đồng nghiệp xin mạnh dạn trình bày vấn đề đề tài: “PHƯƠNG PHÁP DẠY HỌC SINH CÁCH VIẾT CHƯƠNG TRÌNH SỬ DỤNG KIỂU DỮ LIỆU TỆP VĂN BẢN” Mục đích nghiên cứu Nhận thấy việc viết chương trình giải tốn có sử dụng kiểu liệu tệp văn ngơn ngữ lập trình (hiện học sinh phổ thông sử dụng ngôn ngữ lập trình Pascal nên ví dụ tập sử dụng ngôn ngữ Pascal để minh họa) cần thiết đặc biệt đối tượng học sinh bước đầu làm quen với cách viết chương trình có sử dụng kiểu liệu tệp văn đối tượng học sinh yếu trường Hệ thống lại kiến thức tệp thao tác với tệp Vì thế, mục đích cuối muốn phần lớn đa số học sinh viết chương trình sử dụng kiểu liệu tệp văn nên bước dạy học sinh cách viết chương trình giải tốn chuyển đổi từ chương trình khơng sử dụng kiểu liệu tệp văn sang chương trình sử dụng phần kiểu liệu tệp văn đến chương trình hồn tồn sử dụng kiểu liệu tệp văn ví dụ cụ thể minh họa Đối tượng nghiên cứu - Học sinh khối 11 trường THPT Hà Trung - Cách viết chương trình để giải toán kiểu liệu tệp văn Phương pháp nghiên cứu Để hồn thành SKKN tơi sử dụng phối kết hợp nhiều phương pháp phương pháp chủ yếu nghiên cứu xây dựng sở lý thuyết, phương pháp điều tra thực tế học sinh, thu thập thông tin, phương pháp dạy học đổi Xây dựng số ví dụ từ đơn giản đến nâng cao dần B NỘI DUNG Cơ sở lý luận sáng kiến kinh nghiệm Thứ nhất: Khi học sinh bước sang học kỳ II môn tin học lớp 11 phần lớn em chưa hiểu cách viết chương trình sử dụng kiểu liệu tệp Thứ hai: Hiện thi học sinh giỏi mơn tin THPT tất tốn giải kiểu liệu tệp Vì phần phần vô quan trọng học sinh kể học sinh yếu giỏi Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm Thực tế sau nhiều năm giảng dạy môn tin học 11, đặc biệt năm học 2015 - 2016 nhà trường phân cơng giảng dạy tồn khối 11(gồm lớp) nên tơi có nhìn tồn diện hơn, bao quát hơn, khách quan khả học tiếp thu học sinh môn tin học 11, cách đánh giá học sinh cụ thể đa số em học sinh không hiểu kiểu liệu tệp hiểu mơ hồ, chí khơng biết viết chương trình có sử dụng kiểu liệu tệp, viết chương trình viết máy móc, dập khn theo SGK, sách tham khảo theo mẫu giáo viên mà không hiểu chất cách xử lý kiểu liệu tệp Trường THPT Hà Trung nằm địa bàn xã Hà Bình huyện Hà Trung xã nơng thơn huyện, có khoảng 80% học sinh trường em nhà làm nơng nghiệp nên chưa có đủ điều kiện kinh tế cho phép gia đình có máy vi tính phục vụ việc học tập em Mặc dù điều kiện sở vật chất trường tương đối tốt, năm học 2015 – 2016 nhà trường cấp thêm phịng máy nên trường có 03 phịng máy hoạt động tốt liên tục đáp ứng, phục vụ cho việc học tập thực hành học sinh, bên cạnh nhà trường có đội ngũ giáo viên trẻ nhiệt tình tâm huyết với nghề, Nhưng chủ yếu ý thức trình độ lực em chưa cao nên dẫn đến trình trạng Các giải pháp sử dụng để giải đề đặt 3.1 Phần lý thuyết Muốn học sinh viết chương trình có sử dụng kiểu tệp văn việc học sinh phải hiểu rõ nắm vững chất kiểu liệu tệp văn thao tác với tệp 3.1.1 Khai báo tệp Tệp văn kiểu tệp Turbo Pascal định nghĩa sẵn với từ khóa TEXT Cách khai báo biến tệp văn có dạng: Var : text; Trong đó: - Tên biến tệp: người lập trình tự đặt tuân theo quy tắc đặt tên Pascal - text: kiểu liệu tệp văn Chú ý: gọn tên biến tệp gọi biến tệp Khai báo biến tệp để sau thực thao tác với tệp thông qua biến tệp Cần phân biệt tên biến tệp khác với tên tệp Ví dụ: Var f1, f2: text; 3.1.2 Thao tác với tệp a, Gắn tên tệp với biến tệp Gắn tên tệp với biến tệp thực chất tạo tham chiếu tệp đĩa (do tên tệp đường dẫn tương ứng HĐH xác định) biến tệp chương trình, làm cho biến tệp trở thành đại diện cho tệp Biến tệp trở thành đối tượng trực tiếp chương trình để nhận thao tác tệp đĩa Gắn tên tệp thủ tục: Assign(, ); Trong đó: - Tên tệp xâu biến xâu - Tên tệp đường dẫn chứa ổ đĩa, danh sách thư mục liên tiếp cách dấu đường dẫn( \ ), cuối tên tệp: : \\\…\ Ví dụ 1: Gắn biến tệp f1với tên tệp Bai1.inp thủ tục: Assign(f1, ‘Bai1.inp’); Ví dụ 2: Để đọc liệu từ tệp Nguyento.inp thư mục gốc ổ đĩa D với biến tệp f2 thủ tục: Assign(f2, ‘D:\TP\Nguyento.inp’); b, Mở tệp Tệp dùng để chứa liệu vào kết Trước mở tệp , biến tệp phải gắn tên tệp thủ tục assign + Mở tệp văn dùng để đọc liệu thủ tục: Reset (); Ví dụ: assign(tep1, ‘vidu.inp’); Reset(tep1); + Mở tệp văn dùng để ghi dữ liệu thủ tục: Rewrite(); Ví dụ: assign(tep2, ‘vidu.out’); Rewrite(tep2); c, Đọc/ ghi tệp văn + Đọc liệu tệp văn thủ tục: Read(, ); Hoặc Readln(, ); Trong đó: danh sách biến nhiều tên biến đơn, nhiều biến biến phân cách dấu phẩy Chú ý: Các liệu cần đọc tệp gán vào danh sách biến phải có kiểu tương ứng với kiểu biến dánh sách biến Ví dụ: Read(tep1, x, y, z); Readln(f1, N); + Ghi liệu vào tệp văn thủ tục: Write(, ); Hoặc Writeln(, ); Trong đó: danh sách kết gốm nhiều phần tử phần tử biến đơn biểu thức (số học, quan hệ, logic) xâu Trường hợp có nhiều phần tử phần tử phân cách dấu phẩy Ví dụ: write(tep2, min); Hoặc write(f2,X1, ‘ ‘,X2); d, Đóng tệp Đóng tệp thủ tục: Close(); Chú ý: Thủ tục Close(): chuyển nội dung nhớ vào tệp đĩa đồng thời đóng tệp lại giải tỏa nhớ dành cho biến tệp Các tệp mở mà không đóng lại liệu truy xuất biến tệp Ví dụ: Close(f1); Close(tep1); Close(f2); Close(tep2); * Các hàm chuẩn thường dùng tệp - Hàm EOF: Trả giá trị TRUE trỏ tệp vị trí cuối tệp Vị trí cuối tệp vị trí sau vị trí liệu cuối tệp Tại vị trí cuối tệp kí tự điều khiển (mã số 26) Việc đọc phần tử tệp cịn cần có điều kiện: phải thử xem tệp có cịn phần tử khơng, tức trỏ chưa trỏ đến EOF Hàm chuẩn EOF báo cho biết: trỏ trỏ vào cuối tệp EOF () = True, trỏ trỏ vào phần tử tệp EOF () = False Do trước làm thao tác để đọc tệp gán cho biến X, cần phải thử xem tệp kết thúc chưa câu lệnh: IF NOT EOF () THEN READ (Biến tệp, X); Hoặc muốn đọc tất phần tử tệp: WHILE NOT EOF () DO Begin READ (Biến tệp, X); (* Đọc phần tử tệp *) (* Xử lí biến X, cần *) End; Nếu trỏ trỏ đến phần EOF mà chương trình cố tình đọc gặp sai máy báo lỗi, sau chương trình dừng lại - Hàm EOLN(): trả giá trị TRUE trỏ tệp tới cuối dòng Nhận xét: - Việc đọc/ghi tệp văn tương tự việc đọc/ghi từ bàn phím - Tệp cấu trúc liệu dùng phổ biến Vì nắm vững chất tệp cách xử lí tệp điều cần thiết 3.2 Phần tập Hướng dẫn học sinh viết chương trình sử dụng kiểu liệu tệp văn thơng qua số ví dụ đơn giản Ở phần tập muốn hướng học sinh tư theo bước toán chia thành ba toán để hình thành cách viết chương trình kiểu liệu tệp văn Pascal Khi học sinh hiểu chất định hình tốn việc viết chương trình với kiểu liệu tệp văn khơng cịn khó Và tốn ta viết chương trình với kiểu liệu tệp Ví dụ tốn chia thành ba toán Bài toán 1: Viết chương trình khơng sử dụng tệp u cầu: - Nhập liệu từ bàn phím - Xử lí tốn, có - In kết hình Bài tốn 2: Viết chương trình có sử dụng tệp u cầu: - Mở tệp để đọc liệu từ tệp - Xử lí tốn, có - In kết hình Bài tốn 3: Viết chương trình có sử dụng tệp u cầu: - Mở tệp để đọc liệu từ tệp - Xử lí tốn, có - Ghi kết vào tệp Sau số ví dụ, lập trình giải toán sau: Bài toán 1: Một trường THPT tổ chức cho giáo viên học sinh trường cắm trại, sinh hoạt trời vườn quốc gia Cúc Phương Để lên lịch đến thăm khu trại lớp, thầy Hiệu trưởng cần biết khoảng cách từ trại (ở vị trí có toạ độ (0, 0) đến trại giáo viên chủ nhiệm Mỗi lớp có khu trại mình, vị trí trại giáo viên chủ nhiệm có toạ độ nguyên (x, y) (Ví dụ - SGK Tin học 11 Trang 87) Tơi chia tốn thành ba toán với mức yêu cầu sau: Bài toán 1a: Yêu cầu: - Toạ độ giáo viên chủ nhiệm nhập từ bàn phím; - Tính khoảng cách trại giáo viên chủ nhiệm trại thầy Hiệu trưởng; - In kết hình Phân tích tốn hướng dẫn học sinh viết chương trình Đây tốn u cầu mức thơng thường (bài tốn 1): - Nhập liệu từ bàn phím; - Xử lí tốn: Tính khoảng cách trại giáo viên chủ nhiệm trại thầy Hiệu trưởng; - In kết tính khoảng cách hình Học sinh quen thuộc với tốn viết chương trình kiểu này, nêu câu hỏi để học sinh định hướng viết chương trình: 1) Nhập từ bàn phím toạ độ giáo viên chủ nhiệm câu lệnh nào? 2) Tính khoảng cách d? Giả sử có điểm A (XA; YA) điểm B (XB; YB) Cơng thức tính khoảng cách điểm A B: d (AB) = √(XA - XB )2 + (YA - YB )2 3) In kết tính khoảng cách hình sử dụng câu lệnh nào? Từ câu hỏi gợi ý Giáo viên, Học sinh viết chương trình chạy máy để thấy kết Chương trình Program Baitoan1a; Var x, y : integer ; d : real ; Begin Writeln (‘Nhap toa cua GVCN :’); {Nhập toạ độ GVCN từ bàn phím} Writeln (‘Nhap x:’) ; Readln (x); Writeln (‘Nhap y:’) ; Readln (y); d := sqrt (x*x + y*y) ; {Tính khoảng cách} {In kết tính khoảng cách hình} Write (‘Khoang cach la :’, d : : 2); Readln End Kết chạy chương trình Nhap toa cua moi GVCN : Nhap x: Nhap y: Nhận xét: Với mức độ yêu cầu tốn 1a (bài tốn 1), đa phần học sinh hiểu viết chương trình chạy tốt, kết quả, từ toán 1a (bài tốn 1) tơi nâng u cầu lên tốn 1b (bài toán 2) Sử dụng tệp để đọc cặp số nguyên, kết ghi hình Bài tốn 1b: u cầu: - Các cặp toạ độ giáo viên chủ nhiệm đọc từ tệp TRAI.TXT (tệp TRAI.TXT gồm cặp số nguyên liên tiếp, số cách dấu cách không kết thúc dấu xuống dịng) - Tính khoảng cách trại giáo viên chủ nhiệm trại thầy Hiệu trưởng; - In hình khoảng cách vừa tính Phân tích tốn hướng dẫn HS viết chương trình Đây tốn u cầu mức toán 2, tương tự với tốn 1a, khác điểm thay nhập liệu từ bàn phím, đề u cầu đọc từ tệp TRAI.TXT cặp toạ độ giáo viên chủ nhiệm; yêu cầu lại giống với toán 1a Bài toán 1b tương tự tốn 1a, nên tơi nêu câu hỏi để HS định hướng viết chương trình: 1) Hãy viết câu lệnh mở tệp TRAI.TXT để đọc liệu? 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a Đọc số nguyên tệp hai biến nguyên x y? b Tính khoảng cách d từ trại thầy hiệu trưởng đến trại GVCN có toạ độ (x,y) vừa đọc c Ghi hình dịng gồm thơng báo “Khoang cach” giá trị d 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan1b; Var f : Text ; d: real ; x, y : integer ; Begin Assign(f, ‘TRAI,TXT’); Reset(f); {Mở tệp TRAI.TXT để đọc cặp toạ độ} While not eof (f) Begin Read ( f , x, y ) ; {Đọc cặp x, y từ tệp} d:= sqrt ( x*x + y*y) ; {Tính khoảng cách} {In kết tính khoảng cách hình} Writeln(‘ khoang cach la :’ , d : : 2); End ; Close ( f ) ; {Đóng tệp} Readln End Nhận xét: Một vấn đề đặt chạy chương trình máy Bài toán 1b, nhiều học sinh thắc mắc đặt câu hỏi, bấm tổ hợp phím Ctrl + F9 để chạy chương trình chương trình dịch báo lỗi “Error 2: File not found” (Khơng tìm thấy tệp) Vậy để chương trình dịch tìm thấy tệp TRAI.TXT ta phải làm nào? Khi dạy kiểu liệu Tệp Giáo viên cần nói cho học sinh biết số vấn đề liên quan đến việc xử lí tệp mà SGK khơng đề cập đến Như lỗi “Error 2: File not found” chẳng hạn Để sửa lỗi “Error 2: File not found” ta làm sau: Bước 1: Soạn thảo chương trình mơi trường Turbo Pascal, Nhấn F2 lưu tên chương trình (Ví dụ, ta lưu tên chương trình: Baitoan1b) Bước 2: Từ môi trường soạn thảo, thực thao tác: Chọn File + New cửa sổ soạn thảo Pascal ra, ta gõ liệu cần đọc tệp mà đề yêu cầu Baitoan 1b: Gõ (5 tương ứng với biến nguyên x y) Sau nhấn F2 lưu với tên TRAI.TXT TRAI.TXT Bước 3: Trở lại với chương trình (Baitoan1b.Pas), ta chạy chương trình bình thường giống chương trình làm, bấm tổ hợp phím Ctrl + F9 thấy kết hiển thị hình, lỗi “Error 2: File not found” khơng cịn Kết chạy chương trình TRAI.TXT Khoang cach la : 6.00 Lưu ý: - Để thay đổi liệu tệp TRAI.TXT ta trở lại với chương trình (baitoan1b Pas), sau nhấn F3 (mở tệp có), cửa sổ F3 mở bạn gõ tên tệp TRAI.TXT, tệp bạn thay đổi liệu theo yêu cầu Sau nhấn F2 để lưu thay đổi Trở lại với chương trình (baitoan1b.Pas), nhấn F2 để lưu thay đổi, bấm tổ hợp phím Ctrl + F9 thấy kết hiển thị hình - Để tiện nhanh chóng, Turbo Pascal cho phép mở nhiều cửa sổ soạn thảo đồng thời Để chuyển tới cửa sổ nhấn phím F6 Để quay cửa sổ trước đó, nhấn tổ hợp phím Shift + F6 - Thao tác tạo tệp TRAI.TXT tương tự với thao tác tạo tệp khác (Tệp TRAI.TXT gọi File liệu vào) Bài toán 1c: Yêu cầu: - Các cặp toạ độ giáo viên chủ nhiệm đọc từ tệp TRAI.TXT (tệp TRAI.TXT gồm cặp số nguyên liên tiếp, số cách dấu cách khơng kết thúc dấu xuống dịng) - Tính khoảng cách trại giáo viên chủ nhiệm trại thầy Hiệu trưởng; - Ghi kết tính khoảng cách vào tệp TRAI.OUT Phân tích tốn hướng dẫn HS viết chương trình Đây toán yêu cầu mức toán - Đọc từ tệp TRAI.TXT cặp toạ độ giáo viên chủ nhiệm; - Xử lí tốn: Tính khoảng cách trại giáo viên chủ nhiệm trại thầy Hiệu trưởng; - Ghi kết vào tệp TRAI.OUT HS viết chương trình Bài tốn 1b, với tốn khơng cịn khó Với tốn tơi lưu ý HS cần phải có hai biến tệp, biến tương ứng với tệp TRAI.TXT để đọc liệu, biến tương ứng với tệp TRAI.OUT để ghi kết Tôi nêu câu hỏi để HS định hướng viết chương trình: 1) - Hãy viết câu lệnh mở tệp TRAI.TXT để đọc liệu? - Hãy viết câu lệnh mở tệp TRAI.OUT để ghi liệu? 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a Đọc số nguyên tệp hai biến nguyên x y? b Tính khoảng cách d từ trại thầy hiệu trưởng đến trại GVCN có toạ độ (x,y) vừa đọc c Ghi kết vào tệp TRAI.OUT 10 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan1c; Var f , g : Text ; d: real ; x, y : integer ; Begin Assign(f, ‘TRAI,TXT’); Reset(f); {Mở tệp TRAI.TXT để đọc cặp toạ độ} Assign (g, ‘TRAI OUT’); Rewrite(g);{Mở tệp TRAI.OUT để ghi kết quả} While not eof (f) Begin Read ( f , x, y ) ; {Đọc cặp tọa độ x, y từ tệp} d := sqrt ( x*x + y*y) ; {Tính khoảng cách} Writeln(g , d); {ghi kết vào tệp} End ; Close ( f ) ; Close ( g ) ; {Đóng tệp} Readln End Nhận xét: 1) Đến tốn 1c lại thêm vấn đề nảy sinh: Tạo tệp TRAI.OUT có giống với cách tạo tệp TRAI.TXT khơng? Trong tệp TRAI.OUT ta có cần phải ghi liệu giống tệp TRAI.TXT không? Câu trả lời sau: Cách tạo tệp TRAI.OUT hoàn toàn giống với cách tạo tệp TRAI.TXT Nhưng điểm khác tệp TRAI.OUT (hay gọi File kết quả) TRAI.TXT (hay gọi File liệu vào) là: File kết ta khơng ghi File cả, ta cần tạo tên tệp TRAI.OUT Khi chạy File chương trình cộng với File liệu vào kết hiển thị File kết Kết chạy chương trình TRAI.T TRAI.O XT UT 2) Với toán chia thành mức độ khác theo độ khó dần học sinh dễ nắm bắt Khi dạy lập trình với kiểu liệu tệp tơi ln trình bày Bài toán (bài toán 1a, toán 1b, toán 1c) song song với mặt bảng (bảng chia thành phần để trình bày toán trên) để học sinh thấy điểm giống khác Bài toán Từ em nhìn thấy chất toán con, cách tiếp cận với kiểu liệu tệp bước làm học sinh dễ nắm bắt ý tưởng tốn từ ví dụ tương đối đơn giản Bài toán 1a Bài toán 1b Bài toán 1c Nhập liệu từ bàn - Mở tệp để đọc liệu - Mở tệp để đọc liệu 11 phím→ sử dụng cặp câu lệnh Write (; Readln(); → sử dụng cặp câu lệnh Assign Reset While not Eof () Begin Read(,); End; - Tính khoảng cách d? - Tính khoảng cách d? - In hình → sử - In hình → sử dụng cặp câu lệnh dụng cặp câu lệnh Write(); → sử dụng cặp câu lệnh Assign Reset While not Eof () Begin Read(,); End; - Tính khoảng cách d? - Mở tệp để ghi kết → sử dụng cặp câu lệnh Assign Rewrite - Ghi kết vào tệp Write (,;) Tương tự với Bài tốn 1, ta tìm hiểu Bài toán 2: Bài toán 2: Cho ba số nguyên a, b, c Tơi chia ví dụ thành ba toán với mức yêu cầu sau: Bài tốn 2a: u cầu: Tìm số lớn bốn số Dữ liệu vào: Nhập từ bàn phím ba số nguyên a, b, c; Kết quả: Ghi hình số lớn Phân tích tốn hướng dẫn học sinh viết chương trình Ý tưởng: - Khởi tạo giá trị Max = a ; - Lần lượt so sánh Max với giá trị b, c, (b c) > Max Max nhận giá trị (b c) Đây toán tương đối đơn giản, với yêu cầu toán 2a mức tốn đa số HS tơi viết chương trình tốn dễ dàng, chương trình chạy tốt, yêu cầu tốn Chương trình Program Baitoan2a; Var a, b, c, max : integer ; Begin {Nhập a, b, c từ bàn phím} Write(‘Nhap ba so a, b, c = ’); Readln (a, b, c); {Tìm giá trị lớn nhất} Max := a; If Max < b then Max := b; If Max < c then Max := c; Write (‘So lon nhat la:’, Max : 6); {In giá trị lớn hình} Readln End 12 Kết chạy chương trình Nhap ba so a, b, c = 10 So lon nhat la: 10 Bài toán 2b: Yêu cầu: Tìm số lớn ba số Dữ liệu vào: Trong File SOLN.INP chứa số nguyên a, b, c Các số dòng ghi cách dấu cách trống Kết quả: Ghi hình số lớn Hướng dẫn học sinh viết chương trình Đây ví dụ u cầu mức tốn 2, ví dụ yêu cầu em tự đặt câu hỏi cần thiết (tương tự toán 1b) để viết chương trình: 1) Hãy viết câu lệnh mở tệp SOLN.TXT để đọc ba số a, b, c 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a) Đọc số nguyên tệp biến nguyên a, b, c b) Tìm số lớn số a, b, c c) Ghi hình dịng thơng báo “so lon nhat” giá trị lớn 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan2b; Var f : Text ; a, b, c, max : integer ; Begin Assign ( f , ‘SOLN.INP’); Reset ( f ) ; {Mở tệp để đọc số a, b, c} While not eof (f) Begin Read ( f , a, b, c ) ; {Đọc số a, b, c từ tệp} {Tìm giá trị lớn nhất} Max := a; If Max < b then Max := b; If Max < c then Max := c; Write(‘So lon nhat la:’,Max:6);{In giá trị lớn hình} End ; Close ( f ) ; {Đóng tệp} Readln End Kết chạy chương trình SOLN.INP So lon nhat la: 10 10 Bài tốn 2c: u cầu: Tìm số lớn ba số 13 Dữ liệu vào: Trong File SOLN.INP chứa số nguyên a, b, c Các số dịng ghi cách dấu cách trống Kết quả: Ghi File SOLN.OUT số lớn Hướng dẫn học sinh viết chương trình Đây toán yêu cầu mức toán 3, tương tự toán 1c, toán yêu cầu em tự đặt câu hỏi cần thiết để viết chương trình: 1) Hãy viết câu lệnh mở tệp SOLN.INP để đọc ba số a, b, c Hãy viết câu lệnh mở tệp SOLN.OUT để ghi liệu; 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a) Đọc số nguyên tệp biến nguyên a, b, c b) Tìm số lớn số a, b, c c) Ghi kết vào tệp SOLN.OUT 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan1c; Var f , g : Text ; a, b, c, max : integer ; Begin Assign ( f , ‘SOLN.INP’); Reset ( f ) ; {Mở tệp để đọc số a, b, c} Assign ( f , ‘SOLN.OUT’); Reset ( f ) ; {Mở tệp để ghi giá trị lớn nhất} While not eof (f) Begin Read ( f , a, b, c) ; {Đọc số a, b, c từ tệp} {Tìm giá trị lớn nhất} Max := a; If Max < b then Max := b; If Max < c then Max := c; Write (g, Max); {ghi giá trị lớn vào tệp} End ; Close ( f ) ; Close ( g) ; {Đóng tệp f, đóng tệp g} Readln End Kết chạy chương trình SOLN.I SOLN NP OUT 10 10 Khi quen hiểu cách viết chương trình với kiểu liệu tệp (tệp văn Pascal) tốn ta lập trình tệp Ta xét tiếp ví dụ sau đây: Bài toán 3: 14 Một xâu gọi đối xứng: Khi đọc xâu từ phải sang trái thu kết giống đọc từ trái sang phải (xâu đối xứng gọi xâu Palindrome) Chia Bài toán thành ba toán với mức yêu cầu sau: Bài toán 3a: u cầu: Kiểm tra xem xâu kí tự có phải xâu đối xứng không? Dữ liệu vào: Nhập từ bàn phím xâu kí tự chữ thường Kết quả: In kết hình Hướng dẫn học sinh viết chương trình Ví dụ: xâu đối xứng: ‘abcdedcba’ Xâu không đối xứng: ‘abcabc’ Ý tưởng: - Nhập xâu kí tự chữ thường - So sánh cặp kí tự vị trí đối xứng có giống hạy khơng, cần phát vị trí mà cặp kí tự khơng giống kết luận ln xâu không đối xứng ngược lại đến so sánh hết mà khơng tìm thấy cặp kí tự đối xứng khác kết luận xâu đối xứng Bài tốn có nhiều thuật tốn, sau thuật toán để giải Bài toán (thuật toán dành cho học sinh nâng cao để trả lời cẩu hỏi 1b trang 73 SGK) Chương trình Program Baitoan3a ; Var S : string; i: integer; kiemtra: boolean; Begin Write(‘Nhap xau ki tu S:’); readln(S); {Nhập xâu S từ bàn phím} kiemtra:= true; For i := to length(S) div if S[i] S[length(S)-i+1] then kiemtra:=false; if kiemtra then writeln(‘La xau doi xung’) else writeln(‘Khong la xau doi xung’); readln End Kết chạy chương trình lần Kết chạy chương trình lần Nhap xau ki tu S: abcabc Nhap xau ki tu S: Khong la xau doi xung abcdedcba LaBài xau doi toán 3b:xung Yêu cầu: Kiểm tra xem xâu kí tự có phải xâu đối xứng khơng? Dữ liệu vào: Chứa File XAUDX.INP gồm xâu kí tự Kết quả: Ghi hình dịng thơng báo - Nếu xâu đối xứng: ‘La xau doi xung’ - Nếu không xâu đối xứng: ‘Khong la xau doi xung’ Hướng dẫn học sinh viết chương trình 15 Kiểu xâu tương tự kiểu liệu khác, học sinh tự đặt câu hỏi cần thiết để viết chương trình: 1) Hãy viết câu lệnh mở tệp XAUDX.INP để đọc xâu kí tự 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a) Đọc xâu kí tự tệp biến S b) Kiểm tra kí tự vị trí đối xứng có khác hay khơng? c) Ghi hình dịng thơng báo: Nếu thỏa mãn điều kiện ‘La xau doi xung’ Ngược lại ‘Khong la xau doi xung’ 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan3b ; Var f : Text ; S : string; i : integer; Begin Assign ( f , ‘XAUDX.INP’); Reset ( f ) ; {Mở tệp để đọc xâu kí tự} While not eof (f) Begin Read ( f , S1) ; {Đọc xâu S1 từ tệp} kiemtra:= true; For i := to length(S) div if S[i] S[length(S)-i+1] then kiemtra:=false; if kiemtra then writeln(‘La xau doi xung’) else writeln(‘Khong la xau doi xung’); End; Close (f); {Đóng tệp} readln End Kết chạy chương trình lần XAUDX.INP La xau doi xung abcdedcba Kết chạy chương trình lần XAUDX.INP Khong la xau doi xung abcabc Bài toán 3c: u cầu: Kiểm tra xem xâu kí tự có xâu đối xứng không? Dữ liệu vào: Chứa File XAUDX.INP gồm: xâu kí tự Kết quả: Ghi File XAUDX.OUT sau: - Nếu xâu đối xứng: ‘La xau doi xung’ - Nếu không xâu đối xứng: ‘Khong la xau doi xung’ Hướng dẫn học sinh viết chương trình Học sinh tự đặt câu hỏi cần thiết để viết chương trình: 16 1) - Hãy viết câu lệnh mở tệp XAUDX.INP để đọc xâu kí tự - Hãy viết câu lệnh mở tệp XAUDX.OUT để ghi liệu; 2) Hãy viết câu lệnh câu lệnh ghép sau vòng lặp while-do làm nhiệm vụ: a) Đọc xâu kí tự tệp biến S b) Kiểm tra kí tự vị trí đối xứng có khác hay không? c) Ghi kết vào tệp XAUDX.OUT 3) Hãy viết câu lệnh đóng tệp kết thúc chương trình Chương trình Program Baitoan3c ; Var f , g : Text ; S: string ; i: integer ; Begin Assign ( f , ‘XAUDX.INP’); Reset (f) ; {Mở tệp để đọc xâu kí tự} Assign (g , ‘XAUDX.OUT’); Reset (g) ; {Mở tệp để ghi} While not eof (f) Begin Read (f, S) ; kiemtra:= true; For i := to length(S) div if S[i] S[length(S)-i+1] then kiemtra:=false; if kiemtra then writeln(‘La xau doi xung’) else writeln(‘Khong la xau doi xung’); End; Close (f); Close (g); readln End Kết chạy chương trình lần XAUDX.INP XAUDX.OUT abcdedcba La xau doi xung Kết chạy chương trình lần XAUDX.INP XAUDX.OUT abcabc Khong la xau doi xung Nhận xét: Qua toán, từ cách viết chương trình sở nhất, sau sử dụng tệp, học sinh quen dần với cách viết chương trình tệp Khi đa số học sinh thành thạo quen với việc sử dụng tệp để viết chương trình ta bỏ qua toán Ta xét toán sau: Bài toán 4: Số nhị phân số tạo thành hai chữ số Muốn chuyển đổi số nguyên N (N ≥ 0) từ hệ thập phân sang hệ nhị phân ta làm sau: ta lấy số N chia cho thương P, lấy thương P chia cho Cứ lặp lại thương dừng lại, sau viết liên tiếp dư từ lên ta thu số nhị phân 17 Ví dụ 4a: Yêu cầu: Chuyển số thập phân sang nhị phân Dữ liệu vào: Chứa File NHIPHAN.INP gồm: số nguyên dương Kết quả: Ghi hình kết chuyển đổi số thập phân sang nhị phân Hướng dẫn học sinh viết chương trình Ý tưởng: - Dùng mảng chiều để lưu phần dư N chia cho - Khi N chia cho ta lấy phần nguyên - Lặp lại n = - In mảng chứa phần dư, đảo ngược ta số nhị phân Chương trình: Program Bài toán4a; Var f : Text ; A: array [1 20] of byte ; n, i, j : integer ; Begin Assign ( f , ‘NHIPHAN.INP’); Reset (f) ; While not eof (f) Begin Readln ( f, n ) ; i := 1; Repeat a[i] := n mod ; n := n div 2; i := i +1 ; Until (n = 0); Write (‘So nhi phan la:’); For j := i – downto write (a[j]); End; Close (f); Readln; End Kết chạy chương trình NHIPHAN.INP 16 So nhi phan la: 10000 Bài toán 4b: Yêu cầu: Chuyển số thập phân sang nhị phân Dữ liệu vào: Chứa File NHIPHAN.INP gồm: số nguyên dương Dữ liệu ra: Ghi File NHIPHAN.OUT gồm: Số nhị phân tương ứng Chương trình: Program Baitoan4b; Var f , g : Text ; A: array [1 20] of byte ; n, i, j : integer ; Begin 18 Assign ( f , ‘NHIPHAN.INP’); Reset (f) ; Assign ( g , ‘NHIPHAN.OUT’); Rewrite (g) ; While not eof (f) Begin Readln ( f, n ) ; i := 1; Repeat a[i] := n mod ; n := n div 2; i := i +1 ; Until (n = 0); For j := i – downto write (g, a[j]); End; Close (f); Close (g); Readln; End Kết chạy chương trình NHIPHAN.INP NHIPHAN.OUT 16 10000 3.3 Một số tập áp dụng Hãy lập trình giải tốn sau: Bài 1: Tìm số lớn số nguyên a, b, c, d Bài 1a: Yêu cầu: Tìm số lớn bốn số Dữ liệu vào: Nhập từ bàn phím bốn số nguyên a, b, c, d; Kết quả: Ghi hình số lớn Bài 1b: Yêu cầu: Tìm số lớn bốn số Dữ liệu vào: Chứa File SOLN.TXT gồm: số nguyên a, b, c, d Các số dịng ghi cách dấu cách trống Kết quả: Ghi hình số lớn Bài 1c: Yêu cầu: Tìm số lớn bốn số Dữ liệu vào: Chứa File SOLN.TXT gồm: số nguyên a, b, c, d Các số dịng ghi cách dấu cách trống Kết quả: Ghi File SOLN.OUT số lớn Bài 2: Một số nguyên dương K số nguyên tố có ước số khác Bài 2a Cho mảng gồm n số nguyên (2 < n < 40) Hãy đếm số lượng số nguyên tố có mảng vừa nhập In kết hình Bài 2b Yêu cầu: Cho biết dãy số nhập có số nguyên tố? Dữ liệu vào: Chứa File SONT.INP gồm: - Dòng 1: Số nguyên dương n (2 < n < 40 ) - Dòng tiếp theo: ghi n số a1, a2, , an 19 Các số dòng ghi cách dấu cách trống Kết quả: Ghi hình: Số lượng số nguyên tố dãy Bài 2c Yêu cầu: Cho biết dãy số nhập có số nguyên tố? Dữ liệu vào: Chứa File SONT.INP gồm: - Dòng 1: Số nguyên dương n (2 < n < 20 ) - Dòng 2: ghi n số a1, a2, , an - Kết quả: Ghi file SONT.OUT gồm: Số lượng số nguyên tố tương ứng Ví dụ: SONT.I NP 5 SONT.OUT Bài 3: Số hồn hảo số có tổng ước (trừ nó) Ví dụ : = + + Bài 3a Viết chương trình kiểm tra xem số nhập từ bàn phím có phải số hồn hảo khơng? In kết hình Bài 3b Yêu cầu: Cho biết số cho có phải số hồn hảo hay không? Dữ liệu vào: Chứa File SOHH.INP gồm: số n ngun Kết quả: Ghi hình dịng thơng báo - Nếu số hồn hảo: ‘So da cho la so hoan hao’ - Nếu không số hoàn hảo: ‘So da cho khong la so hoan hao’ Bài 3c Yêu cầu: Cho biết dãy số cho có phải số hồn hảo hay khơng? Dữ liệu vào: Chứa File SOHH.INP gồm: số n nguyên Kết quả: Ghi file SOHH.OUT sau: - Nếu số hoàn hảo: ‘So da cho la so hoan hao’ - Nếu khơng số hồn hảo: ‘So da cho khong la so hoan hao’ Bài 4: Một xâu kí tự nén lại thành xâu cách nén kí tự giống đứng cạnh Ví dụ xâu MMM nén thành 3M Hãy lập trình để nén xâu kí tự in hoa theo cách Dữ liệu vào: Chứa File NENXAU.INP gồm: xâu, mà kí tự chữ in hoa Kết quả: Ghi file NENXAU.OUT gồm: xâu kí tự sau nén Ví dụ: NENXAU.I NENXAU NP OUT AAAAIBBBKC 4AI3BKC Bài 5: Cho số tự nhiên N Yêu cầu: Hãy tính số chữ số liên tiếp bên phải N? 20 Dữ liệu vào: file Bai4.INP gồm số tự nhiên 1

Ngày đăng: 17/10/2017, 09:31

HÌNH ẢNH LIÊN QUAN

Kết quả: Ghi ra màn hình số lớn nhất. - Phương pháp dạy học sinh cách viết chương trình sử dụng kiểu dữ liệu tệp văn bản
t quả: Ghi ra màn hình số lớn nhất (Trang 12)
Kết quả: Ghi ra màn hình: Số lượng số nguyên tố trong dãy - Phương pháp dạy học sinh cách viết chương trình sử dụng kiểu dữ liệu tệp văn bản
t quả: Ghi ra màn hình: Số lượng số nguyên tố trong dãy (Trang 20)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w