bai 4 - tap tin co cau truc

20
1 Data Structure & Algorithm Xây dng tp tin có cu trúc (Structured files) Nguyn Tri Tun Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 2 Structured files Gii thiu Tp tin văn bn thô (plain text) Tp tin nhphân (binary) Tp tin hình nh PCX Tp tin CSDL DBF

Upload: mo125

Post on 27-Apr-2015

579 views

Category:

Documents


6 download

DESCRIPTION

cui thom

TRANSCRIPT

Page 1: Bai 4 - Tap Tin Co Cau Truc

1

Data Structure & Algorithm

Xây dựng tập tin có cấu trúc(Structured files)

Nguyễn Tri TuấnKhoa CNTT – ĐH.KHTN.Tp.HCMEmail: nttuan@ fit.hcmuns.edu.vn

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 2

Structured files

Giới thiệu

Tập tin văn bản thô (plain text)

Tập tin nhị phân (binary)

Tập tin hình ảnh PCX

Tập tin CSDL DBF

Page 2: Bai 4 - Tap Tin Co Cau Truc

2

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 3

Giới thiệuªCác thuật ngữ thường dùng:

File structure

File format

File header

Website tham khảo: http://www.wotsit.org/

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 4

Giới thiệu (tt)ªFile là một cách thức lưu trữ dữ liệu phổ biến

trên bộ nhớ phụ

ªDữ liệu lưu trữ trên file có cấu trúc thích hợp à hiệu suất truy xuất cao

Page 3: Bai 4 - Tap Tin Co Cau Truc

3

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 5

Giới thiệu (tt)ªDữ liệu lưu trữ trên file thường theo 2 dạng phổ

biến:Dữ liệu text thô (plain text)Dữ liệu nhị phân (binary)

File dữ liệu plain text File dữ liệu nhị phân

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 6

Structured files

Giới thiệu

Tập tin văn bản thô (plain text)

Tập tin nhị phân (binary)

Tập tin hình ảnh PCX

Tập tin CSDL DBF

Page 4: Bai 4 - Tap Tin Co Cau Truc

4

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 7

Plain textªPlain text phi cấu trúc:

Không phân hoạch theo ý nghĩa, chức năngRất khó xử lý

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 8

Plain text, có cấu trúc

[left]path=I:\DCIM\101MSDCF\ShowAllDetails=1show=1sortorder=3negative Sortorder=1[right]path=F:\Nguyen Tri Tuan\…

[SQL Server (32 bit)]Driver=H:\WINNT\System32\sqlsrv32.dllSetup=H:\WINNT\System32\sqlsrv32.dll32Bit=1

Tập tin định driver kết nối DB (ODBC.INI)

Tập tin định cấu hình WinCommander (WINCMD.INI)

Page 5: Bai 4 - Tap Tin Co Cau Truc

5

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 9

Plain text, có cấu trúc (tt)ªĐịnh nghĩa:

Dữ liệu được chuyển thành dạng chuỗi (string) và lưu lên file theo một qui tắc nhất định

ªCác tính chất:Dễ truy xuất và xử lýDễ thay đổi nội dung khi cầnĐộ bảo mật kémTốc độ truy xuất chậmKích thước lớn

VD. Lưu số nguyên 12345 ở dạng binary (2 bytes) và dạng chuỗi (5 bytes)

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 10

Plain text, có cấu trúc (tt)ªCác dạng thường gặp:

File cấu hình phần mềm (*.INI, *.CFG)

File *.HTML, *.XML

Page 6: Bai 4 - Tap Tin Co Cau Truc

6

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 11

Plain text, có cấu trúc (tt)// Minh họa đoạn code tạo file WINCMD.INI

FILE *f;char path[MAX_LEN];int showAllDetails, show;int sortOrder, negativeSortOrder;

f = fopen(“wincmd.ini”, “wt”);fprintf(f, “[left]\n”);fprintf(f, “path=%s\n”, path);fprintf(f, “ShowAllDetails=%i\n”, showAllDetails);fprintf(f, “show=%i\n”, show);fprintf(f, “sortorder=%i\n”, sortOrder);fprintf(f, “negative Sortorder=%i\n”,

negativeSortOrder);fclose(f);

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 12

Structured files

Giới thiệu

Tập tin văn bản thô (plain text)

Tập tin nhị phân (binary)

Tập tin hình ảnh PCX

Tập tin CSDL DBF

Page 7: Bai 4 - Tap Tin Co Cau Truc

7

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 13

Tập tin nhị phânªĐịnh nghĩa:

Dữ liệu được lưu trên file giống như cách mà nó thường được lưu trong bộ nhớ chínhDữ liệu thường lưu dạng record

typedef struct {unsigned int ID;char name[30];float avgPoint;

} STUDENT;

// strucsize (in memory) // = 38 bytes avgPoint

name

ID

4 bytes

30 bytes

4 bytes

Memory block of STUDENT

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 14

Tập tin nhị phân (tt)// Minh họa đoạn code đọc dữ liệu file STUDENTS.DAT

FILE *f;STUDENT oneStudent;

// open file to readf = fopen(“students.dat”, “rb”);while (fread(&oneStudent, sizeof(STUDENT), 1, f)) {

// xử lý record oneStudent…

}fclose(f);

Page 8: Bai 4 - Tap Tin Co Cau Truc

8

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 15

Tập tin nhị phân (tt)

#define MAX_LEN 128

typedef struct {char path[MAX_LEN];int showAllDetails;int show;int sortOrder;int negativeSortOrder;

} WINCMD_CFG;

// strucsize (in memory) // = 144 bytes

4 bytesnegativeSortOrder

4 bytessortOrder

show

showAllDetails

path

4 bytes

4 bytes

128 bytes

Memory block of WINCMD_CFG

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 16

Tập tin nhị phân (tt)// Minh họa đoạn code tạo file WINCMD.CFG

FILE *f;WINCMD_CFG leftPanelCfg, rightPanelCfg;

// tạo filef = fopen(“wincmd.cfg”, “wb”);// tạo 1st recordfwrite(&leftPanelCfg, sizeof(WINCMD_CFG), 1, f);// tạo 2nd recordfwrite(&rightPanelCfg, sizeof(WINCMD_CFG), 1, f);

fclose(f);

Page 9: Bai 4 - Tap Tin Co Cau Truc

9

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 17

Tập tin nhị phân (tt)ªCác tính chất:

Dễ truy xuất và xử lýTốc độ truy xuất nhanhTính bảo mật cao hơn

ªChiếm phần lớn số file đang được dùng trên máy tính

Các file dữ liệu riêng, có cấu trúc tự tổ chức*.DOC, *.XLS, *.PDF, *.PPT*.JPG, *.PCX, *.BMP, *.TIF*.MP3, *.WAV, *.AVI, …

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 18

Tập tin nhị phân (tt)ªHai dạng file nhị phân thường dùng:

File có cấu trúc riêng, tự tổ chức

File có cấu trúc chuẩn

Page 10: Bai 4 - Tap Tin Co Cau Truc

10

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 19

Tập tin nhị phân (tt)ªFile có cấu trúc riêng, tự tổ chức:

Thường được thiết kế chuyên biệt cho ứng dụngCấu trúc file được qui ước ngầm định trong ứng dụngCấu tạo không phức tạp

VD. File students.dat và file wincmd.cfg

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 20

Tập tin nhị phân (tt)ªFile có cấu trúc chuẩn:

Được công nhận rộng rãiCấu tạo thường phức tạpThường được tổ chức dạng file có header

VD. *.DOC, *.XLS, *.DBF, *.PCX,…

Page 11: Bai 4 - Tap Tin Co Cau Truc

11

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 21

Tập tin nhị phân (tt)ªFile có cấu trúc chuẩn: (tt)

Header: là phần dữ liệu (thường lưu ở đầu file) đểcung cấp thông tin về cấu trúc chi tiết của file đó

Dữ liệu điểm ảnh

Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…

Dữ liệu các record

Header:Số field; tên các field; kiểu dữ liệu các field; sốrecord; ngày cập nhật;…

File CSDL (table)File ảnh (bitmap)

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 22

Tập tin nhị phân (tt)ªHeader: (tt) Có 2 dạng header phổ biến:

Header tĩnh:Kích thước của header không thay đổi trong mọi trường hợpDùng cho các file có cấu tạo không phức tạp;và các thành phần cấu tạo không thay đổi

VD. File ảnh bitmap PCX: header 128 bytes

Header động:Kích thước header thay đổi tùy fileDùng cho các file có thành phần cấu tạo biến thiên

VD. Bảng (table) có số field thay đổi từ 1 – 255 fieldsẢnh bitmap có bảng màu thay đổi từ 2 màu – 16 triệu màu

Page 12: Bai 4 - Tap Tin Co Cau Truc

12

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 23

Structured files

Giới thiệu

Tập tin văn bản thô (plain text)

Tập tin nhị phân (binary)

Tập tin hình ảnh PCX

Tập tin CSDL DBF

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 24

Tập tin hình ảnh *.PCXªLịch sử hình thành, công dụng

ªẢnh bitmap

ªCấu trúc header

ªLưu trữ dữ liệu điểm ảnh

Page 13: Bai 4 - Tap Tin Co Cau Truc

13

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 25

Tập tin hình ảnh *.PCX (tt)ª Lịch sử hình thành, công dụng:

Được xây dựng ~1985, bởi công ty ZSoft CorporationLà một trong các chuẩn tập tin dùng để lưu ảnh bitmap đầu tiên; được dùng trong phần mềm PC PaintBrushCho phép lưu các ảnh bitmap đơn; dạng 2 màu, 16 màu, 256 màu, 16 triệu màuĐược hỗ trợ trong nhiều phần mềm xử lý ảnhLà dạng file nhị phân có cấu trúc header tĩnh

3.0 (dùng cho PC Paintbrush, Publisher’s Paintbrush). Thể hiện được ảnh 24 bits màu

Dùng cho PC Paintbrush Windows2.8 không có bảng màu2.8 có bảng màu (palette)2.5 (dùng cho PC Paintbrush – DOS)VersionMã

54320

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 26

Tập tin hình ảnh *.PCX (tt)ªẢnh bitmap:

Là một ma trận các điểm ảnh (pixel)Kích thước W cột, H dòng (W*H pixels)Có một số lượng hữu hạn màu để thể hiện các pixel

Loại ảnh trắng đen (2 màu)Loại ảnh 16 màuLoại ảnh 256 màuLoại ảnh 16 triệu màu

Các màu được lưu thànhbảng màu (Palette)

Page 14: Bai 4 - Tap Tin Co Cau Truc

14

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 27

Tập tin hình ảnh *.PCX (tt)ªẢnh bitmap: (tt)

Mỗi màu được tạo thành từ 3 thành phần cơ bản (Red, Green, Blue), mỗi thành phần biểu diễn bằng 1 byte à cần 3 bytes/màuMỗi pixel được biểu diễn bằng 1 số lượng bit tùy theo số lượng màu

2 màu à 1 bit/pixel16 màu à 4 bits/pixel256 màu à 8 bits/pixel16 triệu màu à 24 bits/pixel

Các thông số khác: Độ phân giải (DPI)Hình thức nén dữ liệu

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 28

Tập tin hình ảnh *.PCX (tt)ªCấu trúc header:

Dữ liệu điểm ảnh

Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…(Header size = 128 bytes)

Header mở rộng (768 bytes) = bảng màu 256 màu

Dữ liệu điểm ảnh

Header:kích thước ảnh (W, H); số màu; bảng màu; độphân giải;…(Header size = 128 bytes)

File *.PCX: 2, 16 màu hay 16 triệu màu

File *.PCX: 256 màu

Page 15: Bai 4 - Tap Tin Co Cau Truc

15

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 29

Tập tin hình ảnh *.PCX (tt)ª Cấu trúc header: (tt)

Offset Chiều dài Thành phần Ý nghĩa0 1 Manufacturer Hằng số để nhận dạng loại file PCX (= 10: ZSoft .PCX) 1 1 Version Version2 1 Encoding Cờ cho biết hình thức mã hóa dữ liệu pixel

(1: nén PCX RLE; 0: không nén)3 1 BitsPerPixel Số bit dữ liệu dùng cho 1 pixel (trên 1 scan line).

Giá trị 1, 4, 84 2 Xmin Tọa độ X của góc trên trái6 2 Ymin Tọa độ Y của góc trên trái8 2 Xmax Tọa độ X của góc dưới phải10 2 Ymax Tọa độ Y của góc dưới phải

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 30

Tập tin hình ảnh *.PCX (tt)

ª Cấu trúc header: (tt)

Offset Chiều dài Thành phần Ý nghĩa12 2 HDPI Độ phân giải ngang (DPI)14 2 VDPI Độ phân giải dọc (DPI)16 48 ColorPalette Bảng màu của ảnh 2/16 màu (2/16 entries)64 1 Reserved Dành riêng (= 0)65 1 ColorPlane Giá trị Color Plane66 2 BytesPerLine Số byte thực sự được lưu cho 1 scan line.

Luôn làm tròn word68 2 PaletteInfo Thông tin về Palette (1: Color/B&W; 2: Grayscale)70 58 Filter Không dùng (= 0)

Page 16: Bai 4 - Tap Tin Co Cau Truc

16

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 31

Tập tin hình ảnh *.PCX (tt)ª Cấu trúc header: (tt)

W = Xmax – Xmin + 1 (cột)H = Ymax – Ymin + 1 (dòng)Số màu:

31141

Color Plane

24 bits màu (16 tr màu)256 màu16 màu16 màuB/WSố màuBitPerPixel

88411

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 32

Tập tin hình ảnh *.PCX (tt)// Cấu trúc mô tả 1 thành phần màu (RGB)

typedef struct RGB_ENTRY {unsigned char R;unsigned char G;unsigned char B;

};

Page 17: Bai 4 - Tap Tin Co Cau Truc

17

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 33

Tập tin hình ảnh *.PCX (tt)// Cấu trúc dữ liệu để lưu PCX Header// giả sử đang dùng HĐH 16 bitstypedef struct PCX_HEADER {

unsigned char manufacturer;unsigned char version;unsigned char encoding;unsigned char bitsPerPixel;unsigned int xMin, yMin, xMax, yMax;unsigned int hDPI;unsigned int vDPI;RGB_ENTRY colorPalette[16];unsigned char reserved;unsigned char colorPlane;unsigned int bytesPerLine;unsigned int paletteInfo;char filter[58];

};

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 34

Tập tin hình ảnh *.PCX (tt)// Chương trinh minh họa đọc *.PCX headerFILE *f;PCX_HEADER pcxHeader;RGB_ENTRY _256ExtendColorPalette[256];

f = fopen(“xyz.pcx”, “rb”);

fread(&pcxHeader, sizeof(PCX_HEADER), 1, f);

// Nếu file 256 màu à đọc palette mở rộng ở cuối fileif (pcxHeader.bitsPerPixel==8 && pcxHeader.colorPlane==1){

int n = 256*sizeof(RGB_ENTRY);

fseek(f, -n, SEEK_END);fread(_256ExtendColorPalette, sizeof(RGB_ENTRY), 256, f);

}

Page 18: Bai 4 - Tap Tin Co Cau Truc

18

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 35

Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh:

1010 00

Pixel trên ảnh

Ảnh B/W (1 bit/pixel) – Không cần sử dụng PaletteBlack à bit = 0White à bit = 1

8 pixels à 1 byte dữ liệu

Dữ liệu được lưu trữ

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 36

Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)

1100 0 0 10

.

.

.

012

9

15

Pixel trên ảnh

Dữ liệu được lưu trữ

Ảnh 16 màu (4 bits/pixel) – Palette có 16 phần tử2 pixels à 1 byte dữ liệu

Page 19: Bai 4 - Tap Tin Co Cau Truc

19

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 37

Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)

1010 0 0 10

.

.

.

012

41

255

Pixel trên ảnh

Dữ liệu được lưu trữ

Ảnh 256 màu (8 bits/pixel) – Palette có 256 phần tử1 pixel à 1 byte dữ liệu

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 38

Tập tin hình ảnh *.PCX (tt)ªLưu trữ dữ liệu điểm ảnh: (tt)

1 0110 000 111 001 0 01010 0 0 10

R G B

Pixel trên ảnh

Dữ liệu được lưu trữ

Ảnh 16 triệu màu (24 bits/pixel) – Không cần dùng Palette1 pixel à 3 bytes dữ liệu

Page 20: Bai 4 - Tap Tin Co Cau Truc

20

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 39

Thank you Thank you for your attentionfor your attention

Sprint 2006 Data Structure & Algorithm - Structured files - Nguyen Tri Tuan, DH.KHTN Tp.HCM 40

Q & AQ & A