Bài 6. Chuỗi kí tự


I. Ký tự (char)

1. Khái niệm

Kiểu char dùng để biểu diễn các ký tự thuộc bảng chữ cái, chữ số và ký tự đặc biệt.
Để biểu diễn thông tin ta cần sắp xếp các ký tự theo một bảng, thông thường ta sắp xếp theo bảng mã ASCII. Bảng mã ASCII có 256 ký tự, mỗi ký tự được gán mã số từ 0 đến 255.

2. Một số hàm liên quan

ORD(ch) cho kết quả mã ASCII của ký tự ch.;
CHR(x) cho kết quả là ký tự tương ứng với mã x.
Upcase(ch) cho ký tự chữ hoa của ch.

Trong Pascal không có hàm đổi từ ký tự hoa sang ký tự thường, tuy nhiên ta có thể tự xây dựng bằng cách biểu diên như sau: chr(ord(ch)+32).{đổi ký tự hoa ch thành ký tự thường}


II. Chuỗi ký tự (string)

String là kiểu dữ liệu có cấu trúc dùng để xử lý các chuỗi ký tự (còn gọi là xâu kí tự). Nó có nhiều điểm gần giống với mảng nhưng khác là số phần tử của mảng thì cố định còn của xâu ký tự thì có thể thay đổi.

1. Khai báo

Cách 1: Khai báo gián tiếp

 

type <tên kiểu>=string[độ dài tối đa];
var <tên biến>:<tên kiểu>;

 

Cách 2: Khai báo trực tiếp

 

var <tên biến>:string[độ dài tối đa];

 

Trong đó: độ dài tối đa của một chuỗi ký tự là 255. Ta có thể không cần ghi [độ dài tối đa] khi đó độ dài mặc định của chuỗi là 255 ký tự.

2. Truy xuất từng phần tử của chuỗi

Để truy xuất đến từng phần tử của chuỗi ta làm tương tự như đối với mảng 1 chiều.

3. Cấu trúc của biến kiểu string

Giả sử ta có một biến string là biến s. Trong bộ nhớ nó chiếm số byte bằng số ký tự tối đa cộng thêm một byte đầu tiên tại vị trí s[0]. s[0] chứ ký tự mà mã ASCII của nó bằng độ dài thực của chuỗi. Với điều này ta có thể đếm độ dài thực của chuỗi bằng cách dùng Ord(s[0]).

4. Nhập xuất chuỗi ký tự

Ta dùng các lệnh Write hoặc writeln để xuất chuỗi, lệnh read hoặc readln để nhập chuỗi ký tự.

5. Các phép toán, hàm, thủ tục trên chuỗi

a. Phép gán

Kiểu string nằm trong cặp dấu nháy đơn (‘ ‘). :=

b. Phép cộng: +

c. So sánh chuỗi

Khi so sánh hai chuỗi ký tự thì các ký tự được so sánh từng cặp một trái qua phải theo bảng mã ASCII.

d. Hàm length(st)

Cho kết quả là số nguyên chỉ độ dài thực của chuỗi st.

e. Hàm Copy(st,Pos,n)

Trả về một chuỗi trích từ chuỗi st, chép n ký tự từ vị trí pos.

g. Hàm Concat(st1,st2,st3,…,stn) nối các chuỗi

h. Hàm Pos(st1,st)

Cho kết quả là một vị trí đầu tiên của st1 trong chuỗi st. Nếu không tìm thấy thì hàm trả về kết quả là 0.

i. Hàm str(s:n:m,st)

Hàm str(s:n:m,st) đổi số s thành chuổi và gán cho st.

k. Thử tục Val(st,s,code)

Đổi chuỗi St thành số và gán cho S, Code là một biến kiểu Integer. Nếu đổi đúng thì Code nhận giá trị 0, nếu sai so St không biểu diễn dạng số nguyên hay số thực thì Code nhận giá trị bằng vị trí của ký tự sai trong chuỗi St.

l. Thủ tục DELETE(st, pos, num): xóa num ký tự trong xâu st kể từ vị trí pos

Ví dụ:

st= 'tut.tbit.vn'
Delete(st,1,4); {lúc đó st cho ra là ‘tbit.vn’}

m. Thủ tục INSERT(obj, st, pos)

Thủ tục cho kết quả bằng cách chèn xâu ký tự có tên là Obj vàoxâu st tại vị trí pos, những ký tự đứng sau pos sẽ được dời vềphía sau của xâu ký tự obj.

Ví dụ:

obj:= ‘it‘
st:=’tb.vn’;
INSERT(obj,st,3); {lúc đó st='tbit.vn'}