Đ/c: Ba Đồn - Quảng Trạch - tỉnh Quảng Bình. Tel: 052.3514658 Email: contact@thpt-so1quangtrach-quangbinh.edu.vn
Trang chủ Giới thiệu Tin tức Diễn đàn Ý kiến

Trang chủ >> Tin học


Rèn luyện tư duy lôgic ...
17-03-2009

RÈN LUYỆN TƯ DUY LÔGIC CHO HỌC SINH QUA DẠY BÀI

DỮ LIỆU KIỂU TỆP -THAO TÁC VỚI TỆP

 

A.Đặt vấn đề: Rèn luyện tư duy lôgic cho học sinh không chỉ là nhiệm vụ của các thầy cô giáo dạy các môn toán,lý,hoá …   mà còn là nhiệm vụ của các thầy cô dạy tin học.

            Khi dạy đến bài "kiểu dữ liệu tệp-thao tác với tệp" học sinh thường kêu ca không hiểu gì cả ,quả thực là như vậy nếu giáo viên không làm rõ từng vấn đề thì  học sinh khó mà áp dụng được - sau khi đọc bài này chắc các em sẽ hiểu rõ hơn cách tổ chức kiểu dữ liệu tệp và các thao tác với tệp.

 

B.Nội dung bài

I / Phân loại :

            Có 3 loại chính :

                        + File văn bản ( Text) (trọng tâm bài)

                        + File có kiểu , mỗi phần tử của File như một bản ghi

                        + File không kiểu

 

II / File văn bản ( Text ):

            1) Định nghĩa : File văn bản là một kiểu dữ liệu lưu trữ dữ liệu dưới dạng các kí tự theo từng dòng . Các kí tự này được mã số theo bảng mã ASCII . Đặc biệt các kí tự 10,13,26 có nhiệm vụ riêng :

            #13 : Báo hết 1 dòng            ( Dạng Hecxa : 0D )

            #10 : Về đầu dòng tiếp theo ( Dạng Hecxa : 0A )

            #26 : Báo hết File                 ( Dạng Hecxa : 1A )

            2) Cách khai báo :

            Cách 1  Type TenkieuFile         = Text;

                          Var   TenbienFile        : TenkieuFile;

            Cách 2   Var   TenbienFile        : Text;

            Thí dụ    Var   F1,F2  : Text;

            3) Thông báo làm việc với 1 File :

 

                                    ASSIGN(Tên_biến_File,Xâu_ký_tự_Tên_File);

 

            Thí dụ : ASSIGN(F1,’DAYSO.INP’); bắt đầu làm việc với biến file F1, biến này quản lý File ‘DAYSO.INP’ trong thư mục hiện thời .

 

            4) Thông báo mở File để đọc :

 

                                    RESET(Tên_Biến_File)

 

            Thí dụ :             ASSIGN(F1,’DAYSO.INP’);

                                    RESET(F1);  

            Sẽ mở File ‘DAYSO.INP’ của thư mục hiện thời để đọc lấy các dữ liệu trong đó.

 

            4) Thông báo mở File để ghi :

 

                                    REWRITE(Tên_Biến_File)

 

            Thí dụ :             ASSIGN(F1,’DAYSO.OUT’);

                                    REWRITE(F1);  

            Sẽ mở File ‘DAYSO.OUT’ của thư mục hiện thời để ghi các dữ liệu vào File này.

 

Chú ý 1 : Lệnh Rewrite(F) sẽ xoá các dữ liệu có sẵn trong File cũ do biến F quản lý , nó bắt đầu tạo một File mới trùng tên File cũ . Để tránh tình trạng vô ý làm mất dữ liệu cũ , muốn ghi thêm dữ liệu mới vào File , người ta gọi RESET(F) trước khi gọi REWRITE(F) hoặc dùng lệnh thông báo mở File để ghi tiếp sau đây :

 

            5) Thông báo mở File để ghi tiếp :

 

                                    APPEND(Tên_biến_File);

 

Chú ý 2 :  Trong các lệnh Reset,Rewrite,Append nêu trên nếu trước chúng có hướng dẫn biên dịch kiểm tra dữ liệu vào ra {$I-} thì khi không gặp lỗi đọc,ghi File thì hàm IORESULT trả giá trị bằng 0 , trái lại nếu có lỗi thì hàm này cho giá trị khác 0 .

 

            6) Đọc dữ liệu từ File

 

            Trong tổ chức File , có một biến con trỏ chỉ đến vị trí hiện thời cần đọc (đọc đến đâu con trỏ này dời theo tới đó ).Sau lệnh reset(F) con trỏ ở vị trí đầu File .      

           

Lệnh 1 :                      READ(F,danh_sách_biến) ;

 

            Lần lượt đọc các giá trị ghi trong File , bắt đầu kể từ vị trí hiện thời của con trỏ , các giá trị này tương ứng gửi vào các biến kể từ trái sang phải trong danh sách biến

 

Lệnh 2 :                      READLN(F,danh_sách_biến);

           

            Lần lượt đọc các giá trị ghi trong File , bắt đầu kể từ vị trí hiện thời của con trỏ , các giá trị này tương ứng gửi vào các biến kể từ trái sang phải trong danh sách biến . Sau đó con trỏ File tự động chuyển tới vị trí đầu dòng tiếp theo của File

 

Lệnh 3 :                      READLN(F);

           

            Không đọc dữ liệu nào của dòng hiện thời , con trỏ của File chuyển ngay xuống đầu dòng sau .

 

            6) Ghi dữ liệu vào File

 

Lệnh 1 :                      WRITE(F,danh_sách_biến) ;

 

            Lần lượt ghi các giá trị của các biến kể từ trái sang phải trong danh sách biến vào trong File , bắt đầu kể từ vị trí hiện thời của con trỏ

 

Lệnh 2 :                      WRITELN(F,danh_sách_biến);

           

            Lần lượt ghi các giá trị của các biến kể từ trái sang phải trong danh sách biến vào trong File , bắt đầu kể từ vị trí hiện thời của con trỏ. Sau đó con trỏ File tự động chuyển tới vị trí đầu dòng tiếp theo của File

 

Lệnh 3 :                      WRITELN(F);

           

            Không ghi dữ liệu nào vào dòng hiện thời , con trỏ của File chuyển ngay xuống đầu dòng sau , chờ lệnh ghi tiếp vào dòng này.

 

Chú ý 3 : Chỉ trong File dạng văn bản ( dạng Text ) mới có các lệnh Readln, Writeln, Append .

 

Chú ý 4 : Khi ghi các giá trị số vào File , giữa 2 số liền nhau phải ghi ít nhất 1 dấu cách (Kí tự 32 - bằng ấn Space bar ) hoặc kí tự kết thúc dòng ( Kí tự 13 - bằng ấn Enter )

 

Chú ý 5 : Tổ chức ghi File theo qui luật như thế nào thì khi đọc File phải theo qui luật đó

Thí dụ :

Giả sử trong File ‘TD1.TXT’ chỉ ghi 1 dòng :

Trần văn Tin       18        10.0     8.0      9.0

bằng cách cho biến Hoten         :=‘Trần văn Tin’;

                        biến Tuoi          := 18;

                        biến Toan         := 10.0;

                        biến Van           := 8.0;

                        biến TBMon     := (Toan+Van)/2;

Sau đó để ghi các giá trị trên vào File dùng các lệnh :

            Assign(F,’TD1.TXT’);

            Rewrite(F);

            Writeln(F,Hoten,Tuoi,’  ‘,Toan,’  ‘,Van,’  ‘,TBMon);

Bây giờ muốn hiện các giá trị này lên màn hình ta dùng các lệnh sau :

            Assign(F,’TD1.TXT’);

            Reset(F);

            Readln(F,S,NS,T,V,TB);

            Writeln(S,’  ‘,NS,’ ‘,T,’  ‘,V,’  ‘,TB);

 

Chú ý 6 :

Để tiện ích , trong Turbo thường dùng F3 để soạn các File văn bản chứa các bộ dữ liệu phục vụ Test (Kiểm tra ) các chương trình .

 

7) Đóng File :

 

                        CLOSE(Tên_biến_File);

 

8) Xoá File :

 

                        ERASE(Tên_biến_File);

 

9) Một số hàm và thủ tục :

 

                        EOLN(Tên_biến_File);         

+ Hàm cho giá trị TRUE nếu con trỏ File ở vị trí sau giá trị  cuối cùng của dòng hiện thời , cho giá trị False khi con trỏ chưa tới vị trí của giá trị cuối cùng của dòng

 

                        EOF (Tên_biến_File);

+ Hàm cho giá trị TRUE nếu con trỏ File ở vị trí sau dòng cuối cùng của File, cho giá trị False khi con trỏ chưa tới vị trí sau dòng cuối cùng của File .

 

                        SEEKEOLN(Tên_biến_File);

+ Khi đọc File , cho con trỏ bỏ qua các kí tự dấu cách không đọc , hàm có giá trị True khi con trỏ tới vị trí sau giá trị cuối cùng của dòng hiện thời, ngược lại có giá trị False

 

                        SEEKEOF(Tên_biến_File);

+ Khi đọc File , cho con trỏ bỏ qua các kí tự dấu cách và các dòng trống không đọc , hàm có giá trị True khi con trỏ tới vị trí sau dòng cuối cùng của File, ngược lại có giá trị False

 

Chú ý 7 : Máy in (thực chất là bộ nhớ của máy in) được định nghĩa là 1 File văn bản có tên chuẩn là  LST . Vì vậy để ghi dữ liệu vào máy in ( để in ra giấy ) một giá trị của biễn x ta dùng      Lệnh 1 :            Write(LST,x);

hoặc                 Lệnh 2 :            Writeln(LST,x);

            Lệnh 2 sau khi in xong giá trị của x thì in xuống đầu dòng tiếp theo .

 

 

III / File có kiểu gồm các phần tử cùng kiểu :

 

            1) Định nghĩa : File có kiểu là một kiểu dữ liệu chứa các phần tử (Record Component ) giống hệt nhau (độ dài, kiểu ...) . Mồi phần tử gọi là 1 bản ghi của File .Con trỏ của File sẽ dịch chuyển từ bản ghi này tới bản ghi kia . Các kiểu của phần tử có thể là các kiểu chuẩn đơn giản như : Integer,Char,Byte,Real,String...) nhưng cũng có thể là những kiểu có cấu trúc như : array, Record . Song phần tử của File không được là kiểu File.

            2) Khai báo :

 

Cách 1 :           Type    Tên_kiểu_của_biến_File = File   of    Tên_kiểu_của_phần_tử;

                        Var      Tên_biến_File               : Tên_kiểu_của_biến_File;

 

Cách 2 :           Var      Tên_biến_File               : File   of    Tên_kiểu_của_phần_tử;

 

Thí dụ :Khai báo theo cách 1

                        Type    Hocsinh =         Record

                                                                        Hoten   : String[25];

                                                                        Toan,Ly,Hoa,TBM : Real;

                                                            End;

                                    Lop      = File   of   Hocsinh;

                        Var      L          : Lop;  

            Hoặc khai báo theo cách 2 :

                        Var      L          : File of  Record

                                                                        Hoten   : String[25];

                                                                        Toan,Ly,Hoa,TBM : Real;

                                                            End;

C.Ví dụ minh họa:   Xem ví dụ minh họa trang 87,88,89 (sgk tin 11)

D.Bài tập

Tạo File quản lý điểm 1 kì thi của 1 lớp gồm các chức năng :

            1 - Nhập mới các hồ sơ toàn lớp

            2 - Bổ sung thêm hồ sơ cho học sinh vào sau

            3 - Sửa chữa hồ sơ , xoá hồ sơ

            4 - Xem hồ sơ cá nhân

            5 - Xếp theo điểm TBM giảm dần .

Mỗi hồ sơ gồm :

            + Họ tên học sinh

            + Điểm Toán ,Lý,Hoá,Tin,TBM ( mỗi môn 1 con điểm )

                                                                                                (Nguồn: sgk tin 11)

                                                                                              Trần Cường (Tin-CN)

 

 



Xem bài khác
  • Ứng dụng CNTT        (06-02-2009)
  • Các bài mới đăng
  • Đề cương ôn thi tin học trẻ không chuyên, học sinh giỏi các cấp        (27-04-2014)
  • Một số thuật toán tìm kiếm trên đồ thị        (27-03-2014)
  • Một số bài toán qui hoạch động điển hình        (27-02-2014)
  • Làm thế nào để “cứu” laptop khi bị ướt ?        (22-11-2013)
  • Bài toán xâu Palindrome        (21-08-2013)
  • Đề thi thử đại học các khối A,A1,B,C,D...        (18-06-2013)
  • Đề+Đáp án HSG 12-2013        (04-04-2013)
  • Đề+Đáp án HSG 11-2013        (04-04-2013)
  • Nâng cao chất lượng trong tiết dạy thục hành nghề ...        (20-05-2012)
  • Một số kinh nghiệm dạy thực hành...        (18-05-2012)