SGK Tin Học 11 - Bài 12. Kiểu xâu

  • Bài 12. Kiểu xâu trang 1
  • Bài 12. Kiểu xâu trang 2
  • Bài 12. Kiểu xâu trang 3
  • Bài 12. Kiểu xâu trang 4
  • Bài 12. Kiểu xâu trang 5
§12. KIỂU XÂU
Dữ liệu trong các bài toán không chỉ thuộc kiểu số mà cả kiểu phi số - dạng kí tự. Dữ liệu kiểu xâu là dây các kí tự.
Ví dụ. Các xâu kí tự đơn giản:
'Bach khoa' 'KI SU'	'2007 la nam Dinh Hoi'
Xâu là dãy các kí tự trong bộ mã ASCII, mỗi kí tự được gọi là một phần tử của xâu. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 gọi là xâu rỗng.
Các ngôn ngữ lập trình đều có quy tắc, cách thức cho phép xác định:
Tên kiểu xâu;
Cách khai báo biến kiểu xâu;
Số lượng kí tự của xâu;
Các phép toán thao tác với xâu;
Cách tham chiếu tới phần tử của xâu.
Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự. Các kí tự của xâu được đánh số thứ tự, thường bắt đầu từ 1.
Tương tự mảng, tham chiếu tới phần tử của xâu được xác định bởi tên biến xâu và chỉ số đặt trong cặp ngoặc [ và ].
Ví dụ, giả sử có biến Hoten lưu trữ giá trị hằng xâu 'Nguyên Le Huyerì thì Hoten[6] cho ta kí tự 'n' là kí tự thứ sáu của biến xâu Hoten.
Dưới đây trình bày cách khai báo dữ liệu kiểu xậu, các thao tác xử lí xâu và một số ví dụ sử dụng kiểu xâu trong Pascal.
Khai báo
Để khai báo dữ liệu kiểu xâu ta sử dụng tên dành riêng string, tiếp theo là độ dài lớn nhất của xâu (không vượt quá 255) được ghi trong cặp ngoặc [ và ].
Biến kiểu xâu có thể khai báo như sau:
var '. string [độ dài lớn nhất của xâu];
Ví dụ
var Hoten: string[26] ;
Trong mô tả xâu có thể bỏ qua phần khai báo độ dài, chẳng hạn: var Chugiai: string;
Khi đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.
Các thao tác xử lí xâu
Phép ghép xâu, kí hiệu là dấu cộng (+), được sử dụng để ghép nhiều xâu thành một. Có thể thực hiện phép ghép xâu đối với các hằng và biến xâu.
Ví dụ
Phép ghép xâu:
'Ha' + ' Noi' + ' - ' + 'Viet Nam' cho xâu kết quả là 'Ha Noi - Viet Nam'.
Các phép so sánh bằng (=), khác (), nhỏ hơn (), nhỏ hơn hoặc bằng (=) có thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu và thực hiện việc so sánh hai xâu theo các quy tắc sau:
Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn.
Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B.
Ví dụ
'May tinh' < 'May tinh cuả toi'
Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn.
Ví dụ
'TIN HOC' = 'TIN HOC
Để xử lí các xâu, có thể sử dụng các thủ tục và hàm chuẩn dưới đây:
c) Thủ tục delete(st, vt, «) thực hiện việc xoá n kí tự của biến xâu st bắt đầu từ vị trí vt.
Ví dụ
Ví dụ
h) Hàm upcase(cli) cho chữ cái in hoa ứng với chữ cái trong ch. Ví dụ
Giá trị ch
Biểu thức
Kết quả
'd'
upcase(ch)
'D'
'E'
upcase(ch)
'E'
Một SỐ ví dụ
Vídụl
Chương trình dưới đây nhập họ tên của hai người vào hai biến xâu và đưa ra màn hình xâu dài hơn, nếu bằng nhau thì đưa ra xâu nhập sau.
var
a,b:string; begin
write ('Nhap ho ten thu nhat: '); readln(a); write ('Nhap ho ten thu hai:	'); readln(b);
if length(a)>length(b) then write(a) else write(b); readln
end.
Ví dụ 2
Chương trình dưới đây nhập hai xâu từ bàn phím và kiểm tra kí tự đầu tiên của xâu thứ nhất có trùng với kí tự cuối cùng của xâu thứ hai không.
var x: byte;
a,b: string;
begin
write('Nhap xau thu nhat:	');
readln(a);
write('Nhap xau thu hai: '); readln (b>) ;
X:=length(b);
{xac dinh do dai xau b de biet vi tri cua ki tu cuoi cung} if a[l]=b[x] then write('Trung nhau')
else write('Khac nhau');
readln
end.
Ví dụ 3
Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xâu đó nhưng được viết theo thứ tự ngược lại.
var i,k: byte;
a: string; begin
write('Nhap xau:'); readln(a) ;
k:= length(a);{xac dinh do dai xau} for i:= k downto 1 do write(a[i]); readln
end.
Ví dụ 4
Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xâu thu được từ nó sau khi loại bỏ các dấu cách nếu có.
var i,k: byte; a, b: string;
begin
write('Nhap xau:'); readln(a); k:= length (a) ;
b:=	(* Khoi tao xau rong *)
for i:= 1 to k do
if a[i]' ' then b:=b+a[i];
writeln('Ket qua: ',b); readln
end.
Vỉ dụ 5
Chương trình sau nhập vào từ bàn phím xâu kí tự sl, tạo xâu s2 gồm tất cả các chữ số có trong sl (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình.
program XuLiXau; var si, s2: string;
i: byte;
begin	t
write('Nhap vao xau sl: '); readln(sl);
s2:= ''; {khoi tao xau s2 rong} for i: = 1 to length(sl) do
if ('0'<=sl[i]) and (sl[ĩ]<= '9') then s2:= s2+sl[i]; writeln('Ket qua: ', s2); readln