Professional Documents
Culture Documents
c6 Te1baadp Tin
c6 Te1baadp Tin
c6 Te1baadp Tin
Định nghĩa:
Tập tin là một vùng lưu trữ các thông tin có quan hệ với nhau được đặt tên.
Dữ liệu phải được định dạng thường xuyên vì thế nó thể được gọi lại tại bất kì thởi điểm
nào.
Trong máy tính, dữ liệu được chứa trong các thiết bị như:
Ä Đĩa mềm
Ä Đĩa cứng
Ä Băng từ
Khi dữ liệu được chứa trong bất kì thiết bị nào, dung lượng để chứa được chia ra cho dữ
liệu trong các thiết bị lưu trữ đã chọn. Vì thế, dữ liệu được lưu trữ có thể gọi lại, người sử
dụng chỉ định tên của vùng lưu trữ. Cuối cùng các ứng dụng được viết trên không gian
chứa dữ liệu. Nơi này được tham chiếu như một tập tin.
Quá trình tạo file và lưu thông tin vào nó được gọi là “saving”. Để sử dụng dữ liệu trong
file, chúng ta cần phải chỉ rõ tên file. Chương trình dùng tên file để tìm file trong thiết bị
chỉ định, mở file và đọc dữ liệu từ nó.
Phần lớn các ứng dụng cung cấp cho người sử dụng các tùy chọn cho phép:
Ä Lưu công việc như một tập tin
Ä Mở một tập tin đã có sẵn
Xem một lá thư có 2 trang được tạo bởi một ứng dụng riêng biệt. Khi người sử dụng chỉ
định lưu lá thư đó, thì trình ứng dụng:
Ä Hỏi người sử dụng các câu hỏi sau:
q File này được lưu ở đâu?
q Tên file là gỉ?
Ä Chỉ định số dung lượng cần thiết trên thiết bị chọn và chỉ định tên với dung lượng
này
Ä Ghi dữ liệu trong phạm vi được chỉ định
Dưới đây là tiến trình tạo một file. Người sử dụng có thề chỉ biết được bước đầu tiên, các
bước còn lại sẽ không bàn luận tới.
Ví dụ, thông tin về một sinh viên bao gồm mã sv, tên, lớp, tuổi và giới tính. Mỗi một
thông tin trên được đề cập như là phần tử dữ liệu. Khi các phần tử này được chứa trong
tập tin thì được gọi là trường (field).
Mỗi phần tữ dữ liệu có một giá trị gán cho nó. Ví dụ, số 5 là giá trị dữ liệu được gán vào
với mã sinh viên.
6.4.2 Mẫu tin (Record)
Định nghĩa:
Một nhóm các dữ liệu quan hệ logic với nhau được gọi là mẫu tin (record)
Thông tin về một sinh viên tạo thành một mẫu tin (record) gồm có mã sinh viên, tên, lớp,
tuổi và giới tính. Số lượng mẫu tin trong file sẽ quy định kích thước của một file. Nếu 1
file có 10 record, mỗi record chiếm 30 byte, vậy kích thước của file này là : 10*30 = 300
byte
6.4.3 Khóa
Định nghĩa:
Phần tử dữ liệu được nhận dạng duy nhất từ một mẫu tin của dữ liệu khác gọi là khóa
Một tập tin có thể chứa nhiều mẫu tin. Có một vài điểm đặc biệt của các mẫu tin. Việc
này được thực hiện bởi việc chọn hoặc tạo một phần tử dữ liệu duy nhất
Ví dụ, 2 sinh viên trong cùng một lớp có cùng tên nhưng có thể được định dạng duy nhất
bằng mã sinh viên. Vì thề, chúng ta chọn mã sinh viên làm khóa trong tập tin chứa các
sinh viên.
6.4.4 Tên tập tin
Chúng ta đã biết một tập tin được gắn một tên để có thể định vị nó ở giai đoạn sau
Tên tập tin dùng trong chương trình được tham chiếu như là tên logic (logical name) và
tên chứa trong đĩa được gọi là tên vật lý (physical name). Các tên này thường không
giống nhau tùy thuộc vào ngôn ngữ lập trình được sử dụng.
6.4.5 Đầu tập tin(BOF) và cuối tập tin (EOF)
Mỗi khi tập tin được truy xuất ở vị trí BOF và EOF có nghĩa là bắt đầu và cuối tập tin.
Khi một file được mở, một vạch dấu được đặt tại vị trí bắt đầu mẫu tin đầu tiên của file.
Giới hạn vạch dấu chỉ rõ một file sẵn sàng để sử dụng và bộ đệm mẫu tin được tạo trong
RAM. Nội dung câu lệnh READ đầu tiên của mẫu tin đầu tiên được đặt trong bộ đệm vầ
được xử lý. Với mỗi câu lệnh READ đến sau, mẫu tin kế được đặt trên cùng bộ đệm với
mẫu tin trước đó. Tiếp tục cho đến cuối tập tin.
Vạch dấu EOF kiểm tra nếu đi tới cuối tập tin. Đa số các ngôn ngữ lập trình, EOF có giá
trị là -1. Điều kiện này được kiểm tra trong chương trình để cố gắng đọc một mẫu tin
vượt quá mẫu tin cuối cùng sẽ xảy ra lỗi.
Xem tập tin sinh viên có chứa 3 mẫu tin gồm mã sinh viên, tên, tuổi và giới tính. Lưu đồ
sau đây minh họa các giới hạn khác nhau được sử dụng khi thiết kế một file:
Beginning End of
Of File File
(BOF) (EOF)
Record
Khóa
Phần tử dữ liệu
Lưu đồ 1
Ví dụ sau đây giúp chúng ta hiểu rõ hơn về file. Giả sử file Student đã được tạo, khi
chúng ta thêm mẫu tin vào file này chúng ta liệt kê nội dung, và tìm mẫu tin và xóa mãu
tin đó
Các câu lệnh sau đây tạo một file có 3 field Roll Number, Name và Age.
Ví dụ 1
Start
Open file student
Reply =’y’
Repeat
Display “Nhập vào Roll Number:”
Accept Rollno
Display “Enter Name:”
Accept Name
Display “Enter Age:”
Accept Age
Write record
Display “Nhập thêm nữa không?”
Accept reply
Until (reply =’n’)
Close file student
End
Các điểm lưu ý sau khi làm việc với tập tin:
Ä Trước khi làm việc với file, file đ ó phải được mở - thực hiện bằng câu lệnh “Open
file student”
Ä Giá trị của roll number, name và age được đưa trực tiếp vào các field của file
“student”
Ä Câu lệnh “Write record” để thêm một mẫu tin với các giá trị cho field roll number,
name và age của file “student”
Ä Tập tin được mở khi bắt đầu chương trình và phải được đóng ở cuối chương trình.
Câu lệnh “|Close file student” để đóng tập tin
Ä Chương trình kết thúc khi người sử dụng gõ vào ‘n’ cho câu thông báo “Nhập thêm
nữa không?”
Đoạn mã trong ví dụ 1 gán giá trị trực tiếp vào các field của file. Điều này cũng có thể
thực hiện bằng cách gán các giá trị này vào các biến và sau đó mới gán chúng vào của
field của tập tin sẽ được trình bày trong ví dụ sau. Sử dụng tiền tố’V’ phía trước biến để
phân biệt giữa các biến và các field của file
Ví dụ 2
Start
Open file student
Reply =’y’
Repeat
Display “Nhập vào Roll Number:”
Accept VRollno
Display “Enter Name:”
Accept VName
Display “Enter Age:”
Accept VAge
Rollno = Vrollno
Name = Vname
Age = Vage
Write record
Display “Nhập thêm nữa không?”
Accept reply
Until (reply =’n’)
Close file student
End
Chúng ta gán các giá trị cho roll number, name và age vào các biến Vrollno, Vname và
Vage. Tất cả được chứa trong các field tương ứng, được thực hiện bởi các câu lệnh sau:
Rollno = Vrollno
Ame = Vname
Age = Vage
Để liệt kê danh sách cảu tất cả sinh viên từ file “student”, viết đoạn mã như sau:
Ví dụ 3
Start
Open file student
Read record
While (NOT END OF FILE)
do
Display “Roll Number:” Rollno
Display “Name :” Name
Display “Age:” Age
Read next record
enddo
Close file student
End
Trong ví dụ trên điều kiện cuối file (EOF) được kiểm tra ngay sau khi mỗi record được
đọc. Điều này để kết thúc vòng lặp while và ngăn chương trình đọc tới mẫu tin vượt quá
mẫu tin cuối cùng. Câu lệnh “READ NEXT RECORD” để đọc mẫu tin phía sau cho đến
khi gặp vị trí EOF.
Đoạn code sau đây sẽ chỉnh sửa tuổi của Jack từ 15 thành 12.
Ví dụ 4
Start
Open file student
Read record
While (NOT END OF FILE)
do
if Name = “Jack”
Age = 12
endif
Rewrite record
enddo
Close file student
End
Dòng lệnh “WRITE RECORD” để ghi đè lên mẫu tin hiện hành các chi tiết mới
Xóa một record dựa vào mã số sinh viên. Xem ví dụ sau:
Ví dụ 5
Start
Open file student
Reply =’y’
Repeat
found =’n’
Disply ‘Enter Roll number”
Accept VRollno
Read record
While (NOT END OF FILE AND FOUND = ‘N’)
do
if Rollno = VRollno
fonud =’y’
Delete Record
Else
Read Next Record
Endif
enddo
Display “xóa record nữa không ? (Y/N) ?”
Accept reply
Until (reply = ‘n’)
Close file student
End
Trong ví dụ 5 chúng ta nhập vào mã số sinh viên cần xóa. Vòng lặp while ở đây kiểm tra
2 điều kiện. AND ở giữa hai điều kiện có nghĩa là cả hai điều kiện đó phải đúng thì vòng
lặp mới thực hiện. Vòng lặp kết thúc nếu chỉ có một điều kiện đúng.
Vòng lặp kết thúc khi:
Ä Tìm đến vị trí EOF
Ä Khi không tỉm thấy mẫu tin thỏa điều kiện
Vòng lặp Repeat ... Until kết thúc khi người sử dụng nhập vào ‘n’ cho câu thông báo
“Xóa record nữa không ? (Y/N) ?”. Câu lệnh “Delete Record” để xóa record khi giá trị
Rollno bằng với giá trị roll number do người dùng nhập vào.
6.5 Các loại file
Các file được sử dụng bởi các ngôn ngữ lập trình là tập tin chủ (master file) và file
transaction.
6.5.1 File chủ (Master file)
File này là tập hợp các mẫu tin gồm thực thể riêng biệt cho biết tình trạng hiện hành của
một đối tượng. Nó tồn tại cùng với hệ thống.
Ví dụ, trong thư viện video thông tin chi tiết về một khách hàng mượn băng được chứa
trong file chủ.
6.5.2 Transaction File
Đây là các file thực hiện 2 chức năng chính:
Ä Ghi lại các thao tác thực hiện khi xảy ra
Ä Cập nhật file chủ
Xem ví dụ về thư viện video, transaction file chứa chi tiết mượn băng của khách hàng
như ngày mượn, tiền mượn,... Chúng ta không thể cho mượn những cuốn băng không có
trong file chủ.
Vì thế, transaction file cũng cập nhật vào file chủ các mẫu tin khóa. Không giống như file
chủ, transaction file chỉ chứa trong giai đoạn ngắn. Vì thế, một transaction file chứa các
thao tác trong hàng tháng có thể bị xóa sau khi qua năm.
6.6 Các phương pháp tổ chức tập tin
Thuật ngữ tổ chức tập tin muốn nói đến việc sắp xếp các record trong một file. Nó quyết
định các record được chứa, định vị và truy lục như thế nào. Phần lớn các file thường được
tổ chức như sau:
Ä Tuần tự
Ä Chỉ mục (index)
6.6.1 Các tập tin tuần tự
Đây là cách dễ nhất để chứa và truy lục các mẫu tin trong một tập tin. Các mẫu tin trong
cách tổ chức này được chứa một mẫu tin trước mẫu tin khác, nghĩa là mẫu tin đầu tiên
được chứa ở vị trí đầu, mẫu tin thứ hai được chứa ở vị trí thứ hai và tiếp tục.
Để đọc mẫu tin thứ 50 trong tập tin tuần tự, máy tính bắt đầu từ mẫu tin đầu tiên, kế đó
đến mẫu tin thứ hai cho đến khi tìm thấy mẫu tin thứ 50. Nó không thể truy cập trực tiếp
mẫu tin thứ 50. Cách tổ chức này được sử dụng khi tất cả hoặc đa số các mẫu tin có yêu
cầu phải xử lý. Tất cả các ví dụ trên đều áp dụng các tập tin tuần tự.
Đoạn mã sau đây là một ví dụ về việc tìm mẫu tin theo mã số sinh viên.
Ví dụ 6
Start
Open file student
Reply =’y’
Repeat
found =’n’
Display “Nhập vào mã sinh viên cần tìm:”
Accept Vrollno
Read Record
While (NOT END OF FILE AND FOUND =’n’)
If Rollno = Vrollno
found =’y’
Display “Roll number : “Rollno
Display “Name : “ Name
Display “Age : “Age
Else
Read next record
Endif
Enddo
Display “Tiếp tục không ? “
Accept reply
Until (reply =’n’)
Close filr student
End
Vòng lặp while kiểm tra hai điều kiện
Vòng lặp while kết thúc khi:
Ä Đến vị trí EOF
Ä Khi record được tìm thấy
Khi tìm thấy đúng mẫu tin, các thông tin của sinh viên đó được hiển thị.
6.6.2 Tập tin chỉ mục
Cách tổ chức này cho phép truy xuất nhanh các mẫu tin. Một chỉ mục riêng được duy trì,
gồm có mẫu tin khóa và vị trí mẫu tin. Một tập tin chỉ mục luôn luôn truy xuất bằng việc
sử dụng khóa. Nó tương tự như mục lục của quyển sách bao gồm danh sách các tác giả và
số trang.
Ví dụ tập tin student có 5 mẫu tin như sau
Rollno Name Age
3 Bill 13
Rollno Name Age
1 Adam 12
3 Bill 13
4 Jane 13
1 Adam 12
5 Jack 14
4 Jane 13
2 Audrey 12
5 14
2
Khi file này được chĩ mục trên khóa Rollno thì hai tập tin sau được duy trì.???
Tập tin chỉ mục (Index)
Tập tin này có cùng tên tệp tin dữ liệu và 2 file phải khớp nhau. Nó cũng chứa vị trí các
mẫu tin được trong tập tin dữ liệu chính.
Tập tin dữ liệu (data)
6.7.4 Sưu liệu cho người không trực tiếp lập trình
Sưu liệu dành cho đối tượng này gồm có các điểm sau:
Ä Các câu lệnh cần thiết để nạp chương trình vào bộ nhớ từ nơi lưu trữ thứ cấp và bắt
đầu thực thi chương trình.
Ä Tập các tập tin cần thiết cho chương trình.
Ä Danh sách các thông báo, mô tả nội dung thông báo và các hành động cần thiết để
thực hiện thông báo.
Ä Chi tiết liên quan đến các trang thiết bị sử dụng.
Bài tập
Có tập tin chứa chi tiết của nhân viên như Mã NV, tên, tuổi, lương cơ bản và trợ cấp.
Thực hiện các yêu cầu sau:
1. Viết các câu lệnh để tạo tập tin Employee và nhận các giá trị Mã NV, tên, tuổi, lương
cơ bản và trợ cấp vào các field.
2. Gán chi tiết vào các biến sau đó lần lượt gán vào các field
3. Sau khi tạo tập tin Employee, hãy liệt kê tất cả các mẫu tin của tập tin này
4. Liệt kê các nhân viên có lương bằng 1000
5. Cập nhật lại tiền trợ cấp cho tất cả các nhân viên thàn h 300 nếu lương cơ bản nhỏ
hơn 200 ngược lại lên 500
6. Xóa các mẫu tin trong tập tin Employee theo mã nhân viên
7. Tìm các nhân viên trong tập tin Employee theo mã nhân viên
8. Liệt kê các bộ sưu liệu được sử dụng của chương trình.