CHEMISTRY
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Kiểu xâu

Go down

Kiểu xâu Empty Kiểu xâu

Bài gửi by Nguyễn Tấn Thành Mon Mar 02, 2009 5:03 pm

String


I. §Þnh nghÜa x©️u kÝ tù (String)

X©️u kÝ tù cã thÓ hiÓu ®️¬n gi¶n lµ mét m¶ng mét chiÒu cã kiÓu phÇn tö lµ c¸c kÝ tù (CHAR).

Nh­ng x©️u kÝ tù chØ cã thÓ cã tèi ®️a 255 kÝ tù nh­ng nã cã c¸c lÖnh xö lÝ x©️u nh­ : xo¸ mét ®️o¹n trong x©️u, copy mét ®️o¹n trong x©️u... mµ m¶ng kÝ tù kh«ng cã ®️­îc

II. C¸ch khai b¸o x©️u

VAR Tªn_x©️u : STRING [®️é_dµi_cùc_®️¹i];

VD : Ta khai b¸o

FileName : String[20];

Sau ®️ã ta thùc hiÖn phÐp g¸n :

FileName := 'VIDU.PAS';

Lóc nµy chiÒu dµi thùc sù cña x©️u lµ 8 mÆc dï ®️é dµi cùc ®️¹i lµ 20

Ta xÐt cÊu tróc cña x©️u :

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

V I D U . P A S * * * * * * * * * * * *

KÝ tù 0 chøa ®️é dµi thùc sù cña x©️u, ta cã thÓ viÕt

§é_dµi_thùc_sù_cña_x©️u = Ord(Filename[0]);

KÝ hiÖu * biÓu diÔn kÝ tù kh«ng x¸c ®️Þnh

NÕu trong qu¸ tr×nh thao t¸c, ®️é dµi cña x©️u v­ît qu¸ ®️é dµi cùc ®️¹i th× m¸y sÏ tù ®️éng c¾t bá phÇn phÝa sau x©️u kÓ tõ vÞ trÝ ®️é dµi cùc ®️¹i.

VD : Khi ta g¸n

FileName := 'HOI THI TIN HOC TRE KHONG CHUYEN';

Th× lóc ®️ã

FileName = 'HOI THI TIN HOC TRE ';

III. Truy nhËp vµo phÇn tö cña m¶ng: Do cÊu tróc of x©️u t­¬ng tù of m¶ng nªn c¸ch truy xuÊt of nã còng t­¬ng tù of m¶ng

Tªn_x©️u [chØ_sè_phÇn_tö]

VD : Muèn g¸n phÇn tö thø 3 cña x©️u lµ 'A'

Filename [3] := 'A';

IV. C¸c thao t¸c trªn x©️u

1. PhÐp céng x©️u

VD : S1 := 'PHAN MEM ';

S2 := 'SANG TAO';

S := S1 + S2;

Sau ®️ã S = 'PHAN MEM SANG TAO';

2. So s¸nh x©️u kÝ tù: Khi so s¸nh 2 x©️u m¸y sÏ so s¸nh tõng cÆp kÝ tù cña 2 x©️u tõ tr¸i qua ph¶i theo gi¸ trÞ cña b¶ng m· ASCII NÕu 2 x©️u cã ®️é dµi kh¸c nhau song sè kÝ tù gi«ng nhau ®️Õn ®️é dµi cña x©️u ng¾n nhÊt gièng nhau th× x©️u cã ®️é dµi ng¾n h¬n th× bÐ h¬n

VD : 'FILENAME' < 'FILENAMEA' cho gi¸ trÞ TRUE

'FiLENAME' < 'FILENAME' cho gi¸ trÞ FALSE

'FILENAME' = 'FILENAME' cho gi¸ trÞ TRUE

3. Thao t¸c nhËp xu©️t: Cã thÓ dïng c¸c hµm Write, Writeln, Readln ®️èi víi x©️u kÝ tù

VD : readln(st); Writeln(st);

V. C¸c hµm chuÈn xö lÝ x©️u kÝ tù

1. Length (St): Hµm cho ta ®️é dµi cña x©️u kÝ tù St

VD : l := length(st);

2. Delete (St, Pos, Num): Thñ tôc xo¸ ®️i Num kÝ tù kÓ tõ vÞ trÝ Pos trong x©️u St

VD :

S := 'TOI DI HOC';

Delete(s,5,3);

{ Sau ®️ã S = 'TOI HOC' }

3. Insert (Obj, St, Pos);: Thñ tôc xen x©️u Obj vµo x©️u St t¹i vÞ trÝ Pos

VD : S := 'THANH DA NANG';

Insert('PHO ',S,7);

{ Sau ®️ã S = 'THANH PHO DA NANG' }

4. Str (Value, St): Thñ tôc biÕn ®️æi gi¸ trÞ b»ng sè nguyªn hoÆc thùc Value thµnh mét x©️u biÓu diÔn sè ®️ã. C¸ch biÓu diÔn cña St sÏ ®️­îc quy c¸ch do qui c¸ch cña Value

VD : I := 512; Str(I:5,St);

SÏ cho St = ' 512';

5.Val (St, Var1, Code):Thñ tôc biÕn ®️æi x©️u St (biÓu diÔn sè nguyªn, th­c) thµnh 1 sè nguyªn thùc chøa trong Var1. Code lµ sè nguyªn ®️Ó ph¸t hiÖn lçi,if phÐp biÕn ®️æi ®️óng th× Code cã gtrÞ = 0. if sai Code sÏ lµ vÞ trÞ of kÝ tù sai.

VD : St := '123.56'; Val(st,X,Result);

SÏ cho X=123.56 vµ Result=0

St := '123X'; Val(st,X,result); SÏ cho X kh«ng x¸c ®️Þnh vµ Result=4

6. Copy (St, Pos, Size): Hµm Copy sÏ nhËn Size kÝ tù trong x©️u St tõ vÞ trÝ Pos

VD : St := '123456789'; St1 := Copy(St,3,2); SÏ cho St1='34'

7. Concat(St1,St2,...StN): Hµm ghÐp nèi c¸c x©️u St1,St2,...StN thµnh x©️u kÝ tù theo thø tù ®️· viÕt

VD : St1 := 'BORLAND ';

St2 := 'PASCAL '; St3 := '7.0';

St := Concat(St1,St2,St3); SÏ cho St='BORLAND PASCAL 7.0';

C¸ch viÕt nµy t­¬ng tù víi ST := St1 + St2 + ... + StN

8. Pos (Obj, Target): Hµm tr¶ l¹i vÞ trÝ ®️Çu tiªn cña x©️u Obj gÆp trong x©️u Target

Pos = 0 nÕu kh«ng t×m thÊy

VD : St := '123456789';

Pos('45',St) cho gi¸ trÞ b»ng 3

Pos('4X',St) @1cho gi¸ trÞ 0 v× kh«ng t×m thÊy.

BT:

Bµi1:NhËp 1 chuçi kÝ tù. TØa bá dÊu c¸ch bªn ph¶i, tr¸i, tØa gi÷a (if gi÷a 2 tõ cã nhiÒu dÊu c¸ch chØ ®️Ó l¹i 1 dÊu c¸ch

VD : " que huong " -> "que huong"

uses crt;

var s:string; i:byte;

begin

clrscr;{Xo¸ mµn h×nh}

write('S = ');

readln(s);{§äc S}

while(s[1]=' ')and(s<>'')do delete(s,1,1);{Xo¸ c¸c dÊu c¸ch ®️Çu cña S}

while(s[length(s)]=' ')and(s<>'')do delete(s,length(s),1);{Xo¸ c¸c dÊu c¸ch ë cuèi}

i:=1;{G¸n i b»ng 1}

while i

begin

if(s[i]=' ')and(s[i+1]=' ')then delete(s,i,1){NÕu s[i]lµ ' ' vµ s[i+1]còng lµ ' ' th×}

else inc(i);{Ng­îc l¹i t¨ng i}

end;

writeln('Sau khi doi : ',s);{XuÊt s}

readln;

end.

Bµi 2: NhËp chuçi kÝ tù, xem chuçi ®️ã cã ®️èi xøng nhau kh«ng

VD : "ABBA" lµ ®️èi xøng

"RADAr" lµ ®️èi xøng

"AFF" lµ kh«ng ®️èi xøng

H­íng dÉn

i:=1;j:=length(s);

while(upcase(s[i])=upcase(s[j]))and(i<=j)do

begin

inc(i);dec(j);

end;

NÕu i>j th× chuçi ®️èi xøng, ng­îc l¹i th× kh«ng ®️èi xøng}

uses crt;

var s:string;{X©️u S} i,j:byte;{i,j kiÓu byte}

begin

clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S}

i:=1;j:=length(s);{G¸n i b»ng 1 vµ j b»ng chiÒu dµi s}

while(upcase(s[i])=upcase(s[j]))and(i<=j)do{Trong khi s[i]=s[j] vµ i<=k th×}

begin

inc(i);dec(j);{T¨ng i. Gi¶m j}

end;

if i>j then write('Xau doi xung')else write('Xau khong doi xung');{XuÊt kÕt qu¶}

readln;

end.

Nguyễn Tấn Thành
Nguyễn Tấn Thành
Morderater
Morderater

Tổng số bài gửi : 11
Age : 31
Đến từ : toán tin_2007-2010
Registration date : 16/02/2009

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết