Diễn đàn tin học Văn Lang - Vạn Ninh
Chào mừng bạn đến với Diễn đàn Tin học Văn Lang - Vạn Ninh của chúng tôi !
Hãy đăng nhập hoặc đăng kí tài khoản để trải nghiệm nhiều điều thú vị tại đây !
Thân ái !

Diễn đàn tin học Văn Lang - Vạn Ninh

Nơi trao đổi thông tin, tăng cường hợp tác, giải đáp những vướng mắc khi học lập trình Pascal
 
Trang ChínhCalendarTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập

Share | 
 

 Chuỗi (Xâu kí tự)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Admin
Admin
avatar

Posts : 113
Danh tiếng : 5
Join date : 10/11/2014
Age : 16

Bài gửiTiêu đề: Chuỗi (Xâu kí tự)   15/1/2015, 22:47

I / Định nghĩa :
Xâu kí tự là một cấu trúc dữ liệu , quản lý một dãy liên tiếp các kí tự . Số lượng các kí tự của xâu được gọi là độ dài của xâu . Để biểu diễn một hằng là 1 xâu kí tự , người ta viết xâu kí tự này giữa 2 dấu nháy
Thí dụ :
‘Tran van Thanh’ là hằng có kiểu xâu kí tự và có độ dài bằng 14.

II / Khai báo :
Type Tên_Xâu = String[ n] ; { n là độ dài tối đa của xâu có kiểu Tên_Xâu }
Var Tên_biến : Tên_Xâu;

Thí dụ :
Type STR1 = String[28];
Var S1 : STR1;
S2 : String;

Biến S1 : Có kiểu xâu kí tự độ dài tối đa 28 kí tự .
Biến S2 : Có kiểu xâu kí tự độ dài tối đa 255 kí tự .
Chú ý Truy nhập kí tự thứ i trong xâu S ( Kể từ trái qua phải ) thông qua S[i] . Đặc biệt có 1 trong 2 cách tổ chức xâu , người ta qui định S[0] là kí tự chỉ độ dài của xâu .Thí dụ :
S 1:= ‘Tran van Thanh’ thì S[0] là #14 { Ord( S[0] ) =14 }
Kích thước của biến S1 là 12+1=13 Byte ; biến S2 chiếm 255+1=256 Byte.


III / Các phép toán - Các thủ tục và hàm xử lí xâu :

1 ) Các phép toán :
+ Phép gán : Hai xâu cùng kiểu có thể gán giá trị cho nhau
+ Phép cộng : S1 = ‘Trần’;
S2 = ‘ văn Thanh’;
S = S1+S2 thì S = ‘Trần văn Thanh’
+ Các phép so sánh =, >, <
@ S1 = S2 nếu chúng cùng kiểu và từng kí tự tương ứng của chúng như nhau
@ Xét S1 , S2 cùng kiểu , có độ dài tương ứng là L1,L2 .Ta nói S1<S2 nếu :
- Hoặc N <Min{L1,L2} sao cho với mọi i<=N thì S1[i] = S2[i] , và S1[i+1]<S2[i+1] .Thí dụ :’Thanh’<‘Thi’
- Hoặc L1<L2 và với mọi i <=L1 thì S1[i]=S2[i]. Thí dụ :’Than’<‘Thanh’

2 ) Các Hàm :

+ Length(S) Cho giá trị kiểu Integer là độ dài của xâu S .
Length(S) = Ord(S[0])-48
Thí dụ X:= Length(‘ABCD’) Thì X=4

+ {Function Pos (S1,S2 : String): Byte;}
Cho giá trị kiểu Byte là vị trí bắt đầu kể từ trái qua phải thấy S1 trong S2
Thí dụ S2 := ‘ABCDE’ S1 := ‘BC’ Pos(S1,S2) sẽ là 2

+ {Function Copy(S: String; I: Integer; N: Integer): String;}
Hàm này trả giá trị là một xâu con của xâu S , đó là xâu gồm n kí tự liên tiếp của xâu S , kể từ kí tự thứ i trở đi
Thí dụ S1 := ‘ABCDE’ thì Copy(S1,2,3) sẽ là xâu ‘BCD’

+ {Function Concat (S1,S2,..,Sn : String): String}
Nối các xâu kí tự S1,S2,..,Sn thành 1 xâu
Thí dụ S2 := ‘ABCDE’ S1 := ‘BC’ thì Concat(S1,S2) sẽ là ‘BCABCDE’

2 ) Các thủ tục :

+ {Procedure Delete(var S: String; I: Integer; N:Integer)}
Xoá N kí tự liên tiếp trong xâu S , kể từ kí tự thứ I
+ {Procedure Insert (S1,S2 : String; i : Integer)}
Chèn xâu S1 vào vị trí thứ i của xâu S2
+ { Procedure Str(X [: Width [: Decimals ]]: Kiểu_x; var S:string);
Chuyển số x thành xâu kí tự chữ số là S . Kiểu_x là kiểu số
+ { Procedure Val(S; var x: Kiểu_x; var Code: Integer);}
Chuyển xâu S dạng kí tự chữ số thành số x ( Kiểu số ) , code là giá trị thông báo lỗi khi chuyển đổi ở vị trí nào đó trong xâu S .
Một số thí dụ :

Xử dụng hàm Pos
Thi du :
Var S: String;
Begin
S := ' 123.5 ';
{ Chuyển kí tự trống thành chữ số 0 }
While Pos(' ', S) > 0 do S[Pos(' ', S)] := '0';
End.

Xử dụng hàm Copy
Uses Crt;
Var S: String;
Begin
S := 'ABCDEF';
Writeln('S = ',S);
Writeln('Copy(S, 2, 3) thi S --> ',Copy(S, 2, 3)); { 'BCD' }
Readln
End.

Xử dụng hàm Concat
Var S : String;
Begin
S := Concat('ABC', 'DEF'); { 'ABCDE' }
End.

Xử dụng thủ tục STR
Uses Crt;
Var S : String;
BEGIN
Str(-53.22:10:4,S);
Writeln(-5.322,' ',S);
Readln;
END.
{Trên màn hình :
-5.3220000000E+00 -53.2200}
Xử dụng thủ tục Val
Uses Crt;
Var Code: Integer;
x : real;
Begin
Val('-5.322E+03', x, Code);
If code <> 0 then Writeln('Lỗi tại vị trí : ', Code)
Else Writeln('x = ',x:4:0);
Readln;
End.
{Trên màn hình : x = -5322}
{Nếu khai báo x : Integer ; thì trên màn hình sẽ thông báo : Lỗi tại vị trí : 3 }

Xử dụng thủ tục Delete
Var s : string;
Begin
s := 'Honest Abe Lincoln';
Delete(s,8,4);
Writeln(s); { 'Honest Lincoln' }
End.

Xử dụng thủ tục Insert
Var S: String;
Begin
S := 'Honest Lincoln';
Insert('Abe ', S, Cool; { 'Honest Abe Lincoln' }
End.
Về Đầu Trang Go down
Xem lý lịch thành viên http://forumpascalvanlang.forumvi.com
 
Chuỗi (Xâu kí tự)
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Chuối chưng caramel
» Bánh tét chuối
» Sự Tích Mèo Và Chuột
» [Paint tool SAI] [WIP] Tô màu mắt bằng chuột
» Mẫu Móc Chuột MicKey

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn tin học Văn Lang - Vạn Ninh :: Lí thuyết :: Mảng và xâu-
Chuyển đến