Học Pascal/Kiểu dữ liệu
Giao diện
Kiểu xâu
[sửa]Khái niệm
[sửa]- Xâu là một dãy các kí tự trong bảng 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 xâu được gọ là độ dài xâu (length).
- Xâu có độ dài bằng không gọi là xâu rỗng, được biểu diễn bằng hai dấu nháy đơn (
''
). Lưu ý: Khoảng trắng (space) cũng được xem là một ký tự. - Tham chiếu đến một phần tử của xâu: <Tên biến xâu>[chỉ số].
- Lưu ý: Có thể xem xâu như mảng một chiều với mỗi phần tử là 1 kí tự (char).
Kiểu dữ liệu | Độ dài tối đa 1 xâu |
---|---|
Char | 1 |
WideChar | ? |
String | 255 (Turbo) |
ShortString | 255 |
AnsiString | Tuỳ |
Khai báo
[sửa]Cú pháp:
VAR <tên biến>:string[<độ dài tối đa cho xâu>];
VAR <tên biến>:<kiểu dữ liệu xâu>;
VD:
VAR ten:string[40];
s:string;
st:ansistring;
- Lưu ý: Ta có thể bỏ qua độ dài của xâu khi khai báo. Lúc này độ dài của xâu sẽ được mặc định là giá trị lớn nhất: 255.
Các thao tác xử lý xâu
[sửa]So sánh
[sửa]- Xâu A = B nếu chúng giống nhau hoàn toàn.
- VD:
A:='PASCAL' và B:='PASCAL'
- VD:
- Xâu A > B nếu kí tự khác nhau đầu tiên từ trái sang trong xâu A có mã ASCII lớn hơn kí tự trong xâu B.
- VD:
A:='Wikiquote'và B:='Wikibooks'
- VD:
Ta thấy từ trái sang, 4 kí tự đầu trong xâu A hoàn toàn giống 4 kí tự đầu trong xâu B. Kí tự thứ 5 trong xâu A là 'q' có mã ASCII là 113, lớn hơn kí tự 'b' trong xâu B vì chỉ có mã ASCII là 98. Vậy xâu A>B.
- Xâu B > A nếu xâu A là đoạn đầu của B.
- VD:
B:='Wikibooks'và A:='Wiki'
- VD:
Ghép xâu
[sửa]A B A+B B+A 'Pascal ' 'cơ bản' 'Pascalcơ bản' 'cơ bảnPascal ' 'Việt' ' Nam ' 'ViệtNam ' ' NamViệt' 'Wikibooks' ' Tủ sách mở cho một thế giới mở' 'Wikibooks Tủ sách mở cho một thế giới mở' ' Tủ sách mở cho một thế giới mởWikibooks'
Các hàm và thủ tục xử lý xâu
[sửa]Thao tác Ý nghĩa s:= 'Wikibooks Tủ sách mở cho một thế giới mở' Delete(s,vt,n) Xoá đi n kí tự của xâu s kể từ kí tự thứ vt delete(s,20,20) s='Wikibooks Tủ sách mở' Insert(r,s,vt) Chèn xâu r vào xâu s bắt đầu từ vị trí vt insert('Việt Nam ',s,10) s='Wikibooks Việt Nam Tủ sách mở cho một thế giới mở' Length(s) Cho độ dài xâu (số kí tự của xâu) n:=length(s); n=40 Copy(s,vt,n) Copy n kí tự của xâu s từ vị trí vt st:=Copy(s,1,9); st='Wikibooks' Pos(r,s) Vị trí xuất hiện đầu tiên của r trong s, nếu không xuất hiện thì trả về 0 vt:=pos('mở',s); vt=19 Upcase(s) In hoa cả xâu t:=upcase(s); t='WIKIBOOKS TỦ SÁCH MỞ CHO MỘT THẾ GIỚI MỞ' Upcase(s[i]) In hoa một kí tự của xâu t:=upcase(s[length(s)−1]); t='M' Lowercase(s) Chuyển in hoa thành in thường st:=lowercase(s); st='wikibooks tủ sách mở cho một thế giới mở' Lowercase(s[i]) In thường 1 kí tự st:=lowercase(s[1]); st='w' Concat(S1,..,Sn) Ghép các xâu từ S1 đến Sn concat('Wikibooks', ' Tủ sách mở') 'Wikibooks Tủ sách mở' Hàm đặc biệt (st:= '1234'; m = 909) Str(m,s) Đổi giá trị kiểu số m sang dạng xâu s str(m,s); s='909' Val(st,n,code) Đổi xâu st thành số gán cho biến n. Nếu thành công code sẽ nhận giá trị 0, ngược lại cho giá trị khác 0 val(st,n,code); Trường hợp thành công n=1234
code = 0
ORD(s) Lấy mã ASCII của một kí tự ord('T') 84 CHR(n) Trả về kí tự tương ứng với mã ASCII n chr(84) T
- Lưu ý : lowercase có thể không hoạt động ở một số Compiler
Kiểu Logic
[sửa]Kiểu dữ liệu Giá trị Số Byte được dùng Boolean True/False 1