1. Khai báo
☺ Cú pháp: Var <Tên biến>:String[Độ dài lớn nhất của xâu];Khai báo: Var st:String;có ý nghĩa là xâu st có độ dài tối đa 255 kí tự.
Tham chiếu đến vị trí thứ 3 viết: St[3], vị trí thứ 5 viết St[5], vị trí thứ i viết: St[i].
– Có thể xem xâu là mảng một chiều mà các phần tử là một kí tự.
– Cho xâu: St=’Tin hoc ung dung’ g Kết quả St[3] là ‘n’
2. Các thao tác xử lý xâu
a) Ghép xâu
Phép ghép xâu dùng kí hiệu “+”
Chú ý: Phép ghép xâu sử dụng kí tự dấu “+” nhưng không có tính chất giao hoán.
b) So sánh (Cho xâu A và B)
- A>B: Kí tự đầu tiên khác nhau tính từ bên trái qua trong xâu A có mã Ascii lớn hơn.
- A=B: Giống nhau hoàn toàn.
- Hai xâu B có độ dài lớn hơn xâu A và xâu A là đoạn đầu của xâu B thì xâu B>A.
Thủ tục / Hàm | Ví dụ | Kết quả |
Delete(st,vt,n); | St:=’Cong nghe thong tin’; Delete(st,5,5) | st=’Cong thong tin’ |
Insert(s1,s2,vt); | s2:=’May tinh IBM PC’; s1:=’ vi ’; Insert(s1,s2,4); | s2=’May vi tinh IBM PC’ |
Copy(S,vt,N) | S:=’Truong THPT NBKCS’; St:=Copy(S,13,5); | St=’NBKCS’ |
Length(s) | S:=’Truong THPT NBKCS’; n:=Length(S); | n=17 |
Pos(s1,s2) | s2:=’May vi tinh IBM PC’; s1:=’vi ’; vt:=Pos(s1,s2); | vt=5 |
Upcase(ch) * Free Pascal thì ch có thể là một xâu. | ch1:=’a’; ch2:=’E’; kt1:=Upcase(ch1); kt2:=Upcase(ch2); | kt1=’A’ kt2=’E’ |
Ord(ch) | m:=Ord(‘A’);=65; n:=Ord(‘a’);=97; | m=65; n=97 |
Chr(n) | kt1:= Chr(65); kt2:= Chr(97); | kt1=’A’; kt2=’a’ |
– Hàm trả về giá trị duy nhất, hàm sẽ được dùng trong các biểu thức, phép gán và trong các hàm, thủ tục khác.
– Các thủ tục được sử dụng như các lệnh chuẩn của Pascal.
* Một ví dụ về sử dụng kiểu xâu để thực hiện các phép toán số học với số lớn:
Số a=234509…1 (hàng trăm chữ số)
Số b=1244 ….2 (hàng trăm chữ số)
Tính: a+b; a*b; | Xây dựng kiểu dữ liệu lớn dùng mảng 1 chiều hoặc kiểu xâu. |
3. Một số ví dụ
Bài 1: Lập chương trình nhập vào 2 xâu st1,st2 và đưa ra màn hình xâu dài hơn, nếu bằng nhau thì đưa ra màn hình xâu thứ 2.
Program vidu1; Var st1,st2:String[30]; Begin Write(‘Nhap ho ten thu nhat:’); readln(st1); Write(‘Nhap ho ten thu hai:’); readln(st2); If length(st1)>length(st2) then Write(st1) Else Write(st2); Readln; End. |
Bài 2: Lập chương trình nhập vào một xâu st và hiện ra màn hình xâu đảo ngược của nó.
Program daoxau; Var St, St1:String; Begin Write(‘Nhap xau St=’); Readln(st); st1:=’’; For i:=length(st) downto 1 do st1:=st1+st[i]; Write(‘Xau dao nguoc la:’,st1); Readln; End. |
Bài 3: Lập chương trình nhập vào một xâu st hiện ra màn hình các kí tự là các chữ số trong xâu đó.
Program hienchuso; Var St:String; Begin Write(‘Nhap xau St=’); Readln(st); Write(‘Cac chu so:’); For i:=1 to length(st) do If (st[i]>=’0’) and (st[i]<=’9’) Then Write(st[i]:4); Readln; End. |
Bài 4: Lập chương trình nhập vào 1 xâu, đếm số lượng kí tự là chữ số trong xâu.
Hướng dẫn
* Nhập xâu
* Khởi tạo d=0, duyệt từ đầu xâu đến cuối xâu, nếu kí tự thứ i trong xâu: thì S[i] là chữ số, khi đó tăng biến d lên 1 đơn vị.
* Duyệt xong, thông báo kết quả là d.
Program demso; |
Bài 5: Lập chương trình nhập vào một xâu bất kỳ, đổi xâu đó thành xâu in thường.
Program doiktthuong; |
Bài 6: Lập chương trình nhập vào một xâu và kiểm tra xâu đó có đối xứng gương hay không?
Program daoxau; Var St, St1:String; Begin Write(‘Nhap xau St=’); Readln(st); st1:=’’; For i:=length(st) downto 1 do st1:=st1+st[i]; If st1=st then Write(‘Xau doi xung guong!’) Else Write(‘Xau khong doi xung guong!’); Readln; End. |

Program KT_csc; Uses crt; Var A:Array[1..100] of Integer; d,i,n:byte; kt:boolean; Begin Clrscr; {Nhap so pt N} Write(‘Nhap so phan tu N=’); Readln(n); {Nhap day A[1],A[2],…,A[N]} For i:=1 to n do Begin write(‘A[‘,i,’]=’); readln(A[i]); End; d:=A[2]-A[1]; For i:=3 to n do If A[i] = A[1]+(i-1)*d then kt:=true Else Begin kt:=false; break; End; i:=3; kt:=true; While kt and (i<=N) Do Begin if A[i]-A[i-1]<>d then kt:=false; i:=i+1; End; If kt then write(‘Day A la CSC’) Else write(‘Day A ko la CSC’); readln; End. |

Program Dem_snt; Uses crt; Var A:Array[1..100] of Integer; du,snt,i,k,n:byte; Begin clrscr; write(‘Nhap so phan tu N=’); readln(n); {Nhap day A[1],A[2],…,A[N]} For i:=1 to n do Begin write(‘A[‘,i,’]=’); readln(A[i]); End; snt:=0; For i:=1 to n do Begin du:=0; For k:=1 to abs(A[i]) do If A[i] mod k =0 Then du:=du+1; If du=2 Then snt:=snt+1; End; write(‘So luong SNT la:’,snt); Readln; End. |

Program Tim_FiboN; Uses crt; Var F1,F2,F: Word; N,i:Word; Begin clrscr; write(‘Nhap gia tri N=’); readln(n); F1:=1; F2:=1; For i:=3 to N do Begin F:=F1+F2; F1:=F2; F2:=F; End; write(‘So Fibo thu ’,N,’la:’,F); readln; End. |
Xin chào, hẹn các bạn ở chuyền đề kế tiếp >>
Thanks!