(Pascal) Chủ đề 7 – Kiểu Xâu (STRING) - .vn

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àmVí 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;Var St:String; i,d:byte;BeginWrite(‘Nhap xau St=’); Readln(st);For i:=1 to length(st)do If(st[i]>=’0’)and(st[i]<=’9’)Then d:=d+1; Write(‘So chu so trong xau la:’,d);Readln;End.

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;Var St:String; i:byte;Begin Write(‘Nhap xau St=’); Readln(st); For i:=1 to length(st) doIf (St[i] >=’A’) And (St[i]<=’Z’) ThenSt[i]:=Chr(Ord(St[i])+32); &nbsp Write(‘Xau doi ra chu thuong la:’,st);Readln;End.

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;Beginclrscr;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;Beginclrscr;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!

Từ khóa » Ghép Xâu Trong Pascal