Tiêu đề: [Lý thuyết] Xâu ký tự Tue Dec 07, 2010 5:34 pm
KHÁI NIỆM VỀ XÂU KÍ TỰ
Khi nhập xuất dữ liệu ta cần đưa các chú thích hoặc yêu cầu tới người sử dụng. Hầu hết các chương trình soạn thảo văn bản cũng phải thực hiện những động tác với xâu kí tự như xác định độ dài, ghép nối hai xâu, tìm vị trí của một xâu kí tự này trong một xâu kí tự khác. Mặc dù Pascal chuẩn khá nghèo nàn, Turbo Pascal cho ta kiểu string chuẩn đã được định nghĩa trước cùng rất nhiều hàm và thủ tục làm việc với xâu kí tự. Một biến kiểu xâu kí tự được khai báo như sau
var < tên biến > : string [ < độ dài xâu > ];
trong đó <độ dài xâu> là một số nguyên trong khoảng từ 1 tới 255. Một xâu gồm n kí tự sẽ thực chiếm n+1 byte trong bộ nhớ với byte ở vị trí không chứa độ dài xâu. Sau khi khai báo, ta có thể truy nhập trực tiếp tới từng kí tự của xâu thông qua tên biến và chỉ số như với mảng. CÁC HÀM LÀM VIỆC VỚI XÂU Chr(<số nguyên>) Hàm này nhận vào một giá trị <số nguyên> và cho ta kí tự tương ứng trong bảng mã ASCII. Ví dụ chr(65) cho ta kí tự ‘A’.
Length (<xâu kí tự> ) Hàm này cho ta biết độ dài của một <xâu kí tự>. Ví dụ : hàm length(‘Thanh pho Ho Chi Minh’) cho ra giá trị 21.
Upcase(<kí tự>) Hàm này nhận vào một <kí tự> viết thường trong khoảng từ ‘a’ tới ‘z’ và cho ta kí tự tương ứng là chữ viết hoa. Nếu kí tự nằm ngoài khoảng từ ‘a’ tới ‘z’, nó sẽ không thay đổi. Chú ý là hàm upcase không nhận đối số là một xâu kí tự. Ví dụ: Hàm upcase(‘z’) sẽ cho giá trị là chữ ‘Z’ hoa.
Phép + Giả sử ta đã có s1, s2 là các xâu kí tự, ta có thể ghép nối hai xâu này bằng cách thực hiện phép cộng: s3 := s1 + s2; Ta cũng có thể dùng hàm concat(s1, s2, ... ) để nhận được kết quả tương tự: s3 := concat(s1, s2); Ví dụ: Với s1:=’TP. ‘; và s2:=’Binh Duong’; thì lệnh gán s3:=concat(s1,s2); sẽ cho giá trị s3 là ‘TP. Binh Duong’. Copy(<xâu>, <vị trí>, <số kí tự>) Hàm này tách ra một xâu con từ một <xâu> lớn đã biết. Ta phải cho biết <vị trí> bắt đầu tách và <số kí tự> muốn tách. Ví dụ phép tách sau đây st1 := ‘HELLO’; st2 := copy(st1, 2, 3); sẽ cho ta xâu st2 có giá trị là ‘ELL’.
Delete (<xâu>, <vị trí>, <số kí tự>) Thủ tục này cho phép ta xóa bớt một phần của một <xâu> cho trước. Ta phải cho biết <vị trí> bắt đầu xóa và <số kí tự> muốn xóa. Ví dụ: st := ‘HELLO’; delete(st, 2, 3); sẽ cho ta xâu st có giá trị là ‘HO’.
Insert (<xâu 1>, <xâu 2>, <vị trí >) Thủ tục này chèn <xâu 1> vào <xâu 2> tại <vị trí> mà ta cho biết. Ví dụ : st1 := ‘A’; st2 := ‘1234567890’; insert( st1, st2, 3); sẽ cho ta xâu st2 có giá trị là ‘12A34567890’.
Pos (<xâu 1>, <xâu 2 >) Hàm này cho ta biết vị trí lần xuất hiện thứ nhất của <xâu 1> trong <xâu 2>. Nếu <xâu 1> không xuất hiện trong <xâu 2>, hàm cho kết quả là 0. Ví dụ : hàm pos(‘abc’, ‘123abcdefgh’) cho ra giá trị là 4, tức là ở tại vị trí thứ 4 trong xâu ‘123abcdefgh’ có xâu ‘abc’ cần tìm.
Str (<số >, <xâu> ) Thủ tục str chuyển giá trị <số> thành một <xâu> kí tự. Thủ tục này nhận vào hai tham số. Tham số thứ nhất là số nguyên hoặc số thực, và tham số thứ hai là một biến kiểu xâu kí tự. Ví dụ : Thủ tục sau đây sẽ chuyển giá trị số 123.05 thành xâu kí tự ‘123.05’ và lưu lại vào biến loại chuỗi có tên là st: str(123.05,st);
Val (<xâu>, <số>, <mã lỗi >). Thủ tục val chuyển một xâu kí tự thành một số. Mã lỗi là một số nguyên. Nếu việc chuyển diễn ra bình thường mã lỗi bằng 0; nếu không mã lỗi sẽ khác không.