You are on page 1of 17

KHOA CNTT, TRNG H KHOA HC T NHIN HQG HCM

Mn hc: K thut lp trnh CDIO

Lp trnh trn tp tin c cu trc


THNG 02/2012
Bi Th Danh
btdanh@fit.hcmus.edu.vn
Ti liu trnh by mt s k thut lp trnh trn tp tin c cu
trc, bao gm:

Kim tra dng tp tin da trn cc rng buc


Thao tc trn tp tin nh BMP
Xut d liu ra tp tin HTML
c, ghi, chuyn i tp tin vn bn dng m rng
(Unicode 16 v UTF-8)

Mc lc
1.

M t ............................................................................................................................................... 3

2.

Ni dung .......................................................................................................................................... 3

2.1.

Tp tin c cu trc ....................................................................................................................... 3

2.2.

Gii thiu cu trc ca mt vi tp tin.......................................................................................... 4

2.2.1.

Tp tin nh BMP ....................................................................................................................... 4

2.2.2.

Tp tin HTML ............................................................................................................................ 6

3.

Bi tp lp trnh ............................................................................................................................... 9

4.

Yu cu np bi ............................................................................................................................. 17

K thut lp trnh CDIO

1.

Thc hnh tun 7

M t

Bi tp thc hnh gip nhm sinh vin hiu r bi hc l thuyt, t c kt qu


hc tp mong i nh sau:

2.

Hiu r v c th thao tc trn cc tp tin c cu trc, nh:


o Kim tra cng rng buc ca cc dng tp tin
o c c cc thng tin cn thit (cn gi l meta data) t cc tp tin c cu
trc
o To ra cc tp tin tun theo nh dng nht nh

Nhm sinh vin phi t thc hnh ti nh ti thiu 18 gi hiu r bi hc.

Ni dung

2.1. Tp tin c cu trc


- L tp tin c ni dung c t chc theo mt nh dng nht nh
- Gip thao tc v x l nhanh hn
- c s dng cho cc mc ch chuyn bit, nn thng ch c mt hoc mt vi
chng trnh c th hiu c cu trc ca tp tin
V d:
*.DOC, *.DOCX: l tp tin dng lu vn bn ca phn mm MS WORD
*.HTML: dng th hin cc ni dung thng qua cc trnh duyt web.
*.JPG, *.PNG, *.BMP: l cc tp tin nh. Chng lu gi cc thng tin ca
nh nh kch thc, s lng mu, v chi tit ca nh. Chng ta c th s dng
cc phn mm MS PAINT, PICTURE VIEWER xem nh.

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 3

Thc hnh tun 7

K thut lp trnh CDIO

2.2. Gii thiu cu trc ca mt vi tp tin


2.2.1. Tp tin nh BMP
- L tp tin nh bitmap
- C kh nng lu tr nh s 2 chiu vi kch thc v phn gii khc nhau
- Mt tp tin BMP c cu trc nh sau:
Tn

Header

Kch thc
(bytes)

M t

14

Signature

Ch k

FileSize

Kch thc ca tp tin (tnh theo byte)

reserved

Thng khng s dng (= 0). c


dnh lu thng tin khc

DataOffset

File offset to Raster data

InfoHeader

40

Size

Kch thc ca vng InfoHeader (mc


nh l 40)

Width

Chiu di ca bitmap

Height

Chiu cao ca bitmap

Planes

S lng mt phng (mc nh l 1)

BitCount

S lng bit biu din mt pixel


-

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

1 : n sc. S mu = 1
4: dng bng mu 4 bit. S mu =
16
8: dng bng mu 8 bit. S mu =
256
16: RGB 16 bit. S mu =
65536
24: RGB 24. S mu = 16M
Trang 4

Thc hnh tun 7

K thut lp trnh CDIO

Compression

Loi nn
-

ImageSize

0 = BI_RGB, khng nn
1 = BI_RLE8, m ha s dng
RLE 8bit
2 = BI_RLE4, m ha s dng
RLE 4bit

Kch thc ca nh ( nn)

C th gn bng 0 nu loi nn = 0
XPixelsPerM

phn gii
(pixel/mt)

YPixelsPerM

phn gii theo chiu dc(pixel/mt)

ColorsUsed

S lng mu thc s s dng

ColorsImportant

S lng cc mu quan trng

theo

chiu

ngang

0: tt c cc mu
4 * S mu

Ch c nu s bit cho 1 pixel <= 8

Red

cng ca thnh phn

Green

cng ca thnh phn xanh l non

Blue

cng ca thnh phn xanh dng

Reserved

dnh (thng khng s dng)

ColorTable
(lp li cc dng di cho
tng mu)

RasterData

Kch
nh

thc d liu pixel.

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 5

Thc hnh tun 7

K thut lp trnh CDIO

2.2.2. Tp tin HTML


- Tp tin HTML c s dng hin th ni dung trn WWW.
- Cu trc c hiu bi cc trnh duyt web
- Bao gm cc th, hay cn gi l tag. Danh sch cc th hp l c th tham kho
link sau:
http://www.w3schools.com/html/
- Khi s dng, mi th phi c phn m v ng tng ng
- Mt tp tin HTML bt buc phi c cc th sau:
<html>
<body>

// m th body

Chn ni dung y.
</body> // ng th body
</html>
- Diy lmt s th c bn:
Tn th
<h1>
<h2>

M t

V d

L cc th dng biu din cc tiu <h1>This is a heading</h1>


. Ch s cng ln th kch thc <h2>This is a heading</h2>
tiu cng nh.
<h3>This is a heading</h3>

<h3>

Kt qu:

<h4>
<h5>

This is heading 1

<h6>

This is heading 2
This is heading 3

<p>

Dng cho on vn

<p>This is a paragraph.</p>
<p>This is a paragraph.</p>

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 6

Thc hnh tun 7

K thut lp trnh CDIO

Kt qu:
This is a paragraph.
<br/>

xung dng

This is a paragraph.
<p>This is<br />a para<br />graph
with line breaks</p>
Kt qu:
This is
a para
graph with line breaks

<table> Dng to bng


<tr>
<td>
<th>

<table border="1">

Dng nh ngha dng trong <tr>


bng, nm gia <table> ..</table>
<th>Name</th>
Dng nh ngha cell (), nm
<th>Telephone</th>
gia <tr> </tr>
<th>Telephone</th>
Dng nh ngha header ca
bng, nm gia <tr> </tr>
</tr>
<tr>
<td>Bill Gates</td>
<td>555 77 854</td>
<td>555 77 855</td>
</tr>
</table>
Kt qu:
Name Telephone Telephone
Bill Gates 555 77 854 555 77 855

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 7

Thc hnh tun 7

K thut lp trnh CDIO

- V d:
Ni dung
<html>
<body>
<h4>Table headers:</h4>
<table border="1">

Kt qu hin th
Table headers:
Name

Telephone Telephone

Bill Gates 555 77 854 555 77 855


Vertical headers:

<tr>

First Name: Bill Gates

<th>Name</th>

Telephone: 555 77 854


Telephone: 555 77 855

<th>Telephone</th>
<th>Telephone</th>
</tr>
<tr>
<td>Bill Gates</td>
<td>555 77 854</td>
<td>555 77 855</td>
</tr>
</table>
<h4>Vertical headers:</h4>
<table border="1">
<tr>
<th>First Name:</th>
<td>Bill Gates</td>
</tr>

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 8

Thc hnh tun 7

K thut lp trnh CDIO

<tr>
<th>Telephone:</th>
<td>555 77 854</td>
</tr>
<tr>
<th>Telephone:</th>

<td>555 77 855</td>
</tr>
</table>
</body>
</html>
2.2.3. Tp tin vn bn m rng
- Tp tin vn bn m rng y l tp tin vn bn m k t c m ha da theo
bng m Unicode thay v bng m ASCII.
- Unicode cho php m ha c hn 110,000 k t, bao ph khong 100 ngn ng
khc nhau.
- S lng byte c s dng v qui tc biu din ca cc bit khc nhau s cho ra
mt cch m ha khc nhau. Hin nay c 3 cch m ha c s dng ph bin
l: UTF-8, UTF-16 v UCS-2.
- Ti liu ch trnh by v UTF-8 v UTF-16. Phn cn li sinh vin t tm hiu.
UTF-16 v UTF-8
UTF-16
S dng 2 byte m ha k t

UTF-8
S lng byte s dng khng ging nhau
cho tng k t, thay i ty theo gi tr ca
m, c th:
- 0

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

127:

byte;

nh

Trang 9

Thc hnh tun 7

K thut lp trnh CDIO

dng0xxxxxxx
- 128 n 2047: 2 byte, c nh
dng110xxxxx 10xxxxxx
- 2048 n 65535: 3 byte, c nh
dng 1110xxxx 10xxxxxx
- Cn li: 4 byte, nhng him gp
trng hp ny.
c s dng l bng m Unicode mc c s dng rng ri trong cc HH
nh trong HH Windows
Unix/Linux
VD:
1

VD:
:

00 01

1 : 01

127: 00 7F

127: 7F

128: 00 80

128: C2 80

2047: 07 FF

2047: DF BF

2048: 08 00

2048: E0 A0 80

65535: FF FF

65535: EF BF BF
u im

D thao tc v x l

- Tng thch vi bng m ASCII


- S lng byte ty bin tit kim b
nh hn
- C th m rng.
Nhc im

Khng tng thch vi bng m ASCII C i cht kh khn trong x l do s


Lun s dng 2 byte cho 1 k t lng lng byte khc nhau ty thuc vo k t
ph b nh
S lng biu din t hn

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 10

Thc hnh tun 7

K thut lp trnh CDIO

Xc nh dng m c s dng trong tp tin vn bn


- i vi phn ln cc tp tin Unicode, BOM (Byte Order Mark) l c dng
xc nh m c s dng.
- BOM l mt tp gm nhiu hn 2 byte, ghi u tp tin. C th:
FF FE (2 byte): UCS-2LE hoc UTF-16LE
FE FF (2 byte): UCS-2BE hoc UTF-16BE
EF BB BF (3 byte): UTF-8
- Vi cc tp tin nh XML hay HTML, vic s dng BOM l khng cn thit. Cc
tp tin ny bt u bi du <. Cn c vo cch biu din cho k t ny pht
hin ra m c s dng. C th, nu tp tin bt u bi
3C 00 (2 bytes) : UCS-2LE hoc UTF-16LE
00 3C (2 bytes): USC-2BE hoc UTF-16BE
3C xx(2 bytes): UTF-8 (nu xx khc 0)
c, ghi tp tin vn bn m rng
Khc vi ngn ng C#, C++ cha h tr nhiu cc thao tc trn tp tin vn bn Unicode.
Do , thao tc vi cc vn bn Unicode bng ngn ng C++ s thc hin nh thao tc
vi tp tin nh phn.
C++

C#
Ghi tp tin

int _tmain(int argc, _TCHAR* argv[])


{
// M tp tin dng binary
fstream fOutput;
fOutput.open("output.txt",
ios_base::out | ios_base::binary);
// BOM cho UTF-16
char
encoding[2]
0xFE};

{0xFF,

// Chui unicode UTF-16 cn ghi


wchar_t line[50] = L"Hm nay
ti i hc";

staticvoid Main(string[] args)


{
// M tp tin vn bn ghi theo
//nh dng Unicode(UTF-16)
// tham s th 2 ngha l ghi
//ni dung c (not append).
// Tham s th 3 cho bit bng m
//mun s dng
StreamWriter
writer
=
newStreamWriter("output.txt",
false,
System.Text.Encoding.Unicode);
// Ghi chui vo tp tin
string line = "Hm nay ti i hc";
writer.Write(line);

// Ghi BOM vo u tp tin. Vi


//tp tin HTML, XML th khng cn // ng tp tin
//thit
writer.Close();
fOutput.write(encoding, 2);
}

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 11

Thc hnh tun 7

K thut lp trnh CDIO


// Ly chiu di ca chui
int n = wcslen(line);
// Ghi chui vo tp tin
fOutput.write((constchar*)
line, n * sizeof(wchar_t));

Lu : System.Text.Encoding bao gm
cc gi tr sau:

fOutput.close();
return 0;
}

Unicode (UTF-16)
UTF-7
UTF-8
ASCII
Default

Lu : wchar_t l kiu d liu k t biu


din bng 2 byte(word) nn c th hiu
c cc k t dng UTF-16.
Vi UTF-8, sinh vin cn thc hin chuyn
i m t UTF-16 sang UTF-8 ri ghi.
c tp tin
int _tmain(int argc, _TCHAR* argv[])
{
fstream fInput;
fInput.open("output.txt",
ios_base::in | ios_base::binary);
// Mng cha BOM
char encoding[3] = {0x00, 0x00,
0x00};
fInput.read((char*)
encoding,
3);
// Kim tra bng m
if((encoding[0] == (char)0xFF
&& encoding[1] == (char)0xFE) ||
(encoding[0] == (char)0xFE
&& encoding[1] == (char)0xFF))
{
// UTF-16
wchar_t line[25];
// Quay lui v v tr
//pha sau BOM
fInput.seekg(2,
ios_base::beg);
// c d liu
fInput.read((char*)&line,
50);
}
elseif(encoding[0]
(char)0xEF
&&
encoding[1]
(char)0xBB
&&
encoding[2]
(char)0xBF)

staticvoid Main(string[] args)


{
// M tp tin vn bn c theo
//nh dng Unicode(UTF-16)
// tham s th 2 cho bit bng m
//la chn
StreamReader
reader
=
newStreamReader("output.txt",
System.Text.Encoding.Unicode);

// c mt dng trong tp tin


string line;
line = reader.ReadLine();
// Hin th kt qu
Console.WriteLine(line);
// ng tp tin
reader.Close();
}

==
==
==

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 12

K thut lp trnh CDIO

Thc hnh tun 7

{
// UTF-8
char line[50];
// Quay lui v v tr
//pha sau BOM
fInput.seekg(3,
ios_base::beg);
// c d liu
fInput.read((char*)&line,
50);
// C th cn chuyn i
m UTF-8 --> UTF-16.
}
else
{
// Kim tra cc trng
hp cn li
// ....
}
// X l chui
//....
fInput.close();
return 0;
}

Chuyn i vn bn UTF-16 sang UTF-8


Vi nhng u im ca mnh, UTF-8 c s dng kh rng ri c bit l trong cc tp
tin web.Kch thc nh s thun li trong vic truyn ti. Ngoi ra, cc HH nh
Linux/Unix cng s dng UTF-8 Chuyn i vn bn UTF-16 sang UTF-8 l mt nhu
cu.
Vic chuyn i c th thc hin nh sau:
- i vi cc tp tin khng phi HTML hay XML
Thay i gi tr ca BOM v ghi vo u tp tin
Chuyn i tng k t (mi k t gm 2 byte) sang m k t tng ng
trong UTF-8.
Ghi kt qu xung tp tin mi
- i vi tp tin HTML v XML
Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 13

K thut lp trnh CDIO

Thc hnh tun 7

Tng t trn, nhng khng cn ghi gi tr BOM vo u tp tin

3.

Bi tp lp trnh
a) [C++]Tp tin *.ini l mt dng tp tin c s dng lu cc ty chnh cho
mt chng trnh trong my tnh. N l mt dng tp tin vn bn vi cu trc n
gin bao gm cc section v property. C th
Property: l thnh phn c bn nht. Mi property c mt tn v gi tr
tng ng, chng c ni vi nhau bi du =. Mi property nm trn mt
dng.
V d:
3g2=MPEGVideo
Trong , 3g2 l tn v MPEGVideo l gi tr
Section
- c dng nhm nhiu property li vi nhau. Mt section gm:
- Tn ca section, c t trong du ngoc vung [ ].
- Danh sch cc property tng ng. Mi property nm trn mt dng.
- Section s kt thc nu gp khai bo mt section khc.
- Di y l mt section c tn l Mail v danh sch cc property tng
ng
[Mail]
CMCDLLNAME32=mapi32.dll
CMC=1
MAPI=1
MAPIX=1
MAPIXVER=1.0.0.1
OLEMessaging=1
Hy vit chng trnh kim tra xem mt tp tin bt k c phi l mt tp tin INI
khng.

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 14

Thc hnh tun 7

K thut lp trnh CDIO

b) [C++, C#]Mt chng trnh, tm gi l PathFinder, c vit tm ng i


ca robot trong mt li vung, c kch thc n x n. thun tin trong vic
x l, tc gi chng trnh qui nh cu trc ca tp tin u vo nh sau:
Dng u tin: kch thc ca vung (n)
Dng th 2: ta ca m robot xut pht v m robot cn phi n.
Mi im gm 2 thnh phn, cho bit ta ca ca im trong li vung.
Bit rng (0,0) l ta ca nm gc trn cng, bn tri ca li vung.
n dng tip theo: mi dng gm n s, cch nhau bi khong trng. Cc
s ch nhn gi tr 0 hoc 1. Trong ,
o 0: khng c chng ngi vt
o 1: c chng ngi vt
V d: Tp tin di y m t li vung c kch thc 8 x 8. xut pht l (1,
0) v ch l (6, 7)
8
1

Hy vit chng trnh kim tra xem cu trc ca mt tp tin cho trc c hp l
s dng cho chng trnh PathFinder ni trn khng.
c) [C++]Vit chng trnh c cc thng tin lin quan ca mt tp tin nh BMP. Cho
bit cc thng tin sau:
Ch k
Kch thc ca tp tin
Kch thc ca bitmap (chiu di v chiu rng)
Dng bao nhiu bit biu din mt pixel
Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 15

Thc hnh tun 7

K thut lp trnh CDIO

nh c c nn hay khng? Nu c, dng gii thut g nn


L nh n sc hay a sc? S mu l bao nhiu?
S mu thc s c s dng trong tp tin l bao nhiu
phn gii ca nh theo chiu dc v ngang

d) [C++]Vit chng trnh cho php chuyn i mt tp tin vn bn UTF-16 sang


UTF-8 theo m t trong phn Thao tc vi tp tin vn bn m rng
e) [C++, C#]Vit chng trnh nhp vo danh sch sinh vin. Mt sinh vin gm cc
thng tin sau: MSSV, H v tn, Nm sinh.
Sau xut danh sch cc hc sinh ni trn ra tp tin HTML dng bng, vi nh
dng nh sau:
DANH SACH SINH VIEN
STT

MSSV

HO VA TEN

NAM SINH

1012011

Nguyen Van A

1992

1012089

Huynh Chau

1992

f) [C++][M rng]Tng nh yu cu ca bi 4. Nhng thay v yu cu ngi dng


nhp thng tin t mn hnh, hy c cc thng tin ny t tp tin. Tp tin ny c
lu dng Unicode v c nh dng nh sau:
Dng u tin: cho bit s lng sinh vin (N)
N dng tip theo: Thng tin mi sinh vin c ghi trn mt dng, cc
thng tin cch nhau bi du |.
V d:
2
1012011 | Nguyn Vn A | 1992
1012089 | Hunh Chu | 1992.

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 16

K thut lp trnh CDIO

4.
-

Thc hnh tun 7

Yu cu np bi
Np bi tp lp trnh trn my:
t tn d n ln l BTTuanX_NhomY.ziphocBTTuan2_Nhomxxx.rar (vi X
l s tun, Y l s th t nhm).
Hn cht np bi: xem thng bo trn din n.
Ch cn 1 sinh vin trong nhm i din np bi trn Moodle.

Khoa CNTT | H KHTN TP HCM | Thng 2/2012

Trang 17

You might also like