PASCAL/Kiểu dữ liệu
Appearance
< PASCAL
Khai báo kiểu dữ lieu dùng trong chương trình
Cú pháp
[edit]- VAR <tên biến>:Kiểu dữ liệu;
Kiểu dữ lieu
[edit]Kiểu nguyên
[edit]Kiểu dữ liệu Phạm vi dữ liệu Số Byte sử dụng Byte 0 .. 28 −1 1 ShortInt −27 .. 27 −1 1 SmallInt −215 .. 215 −1 2 Integer −215 .. 215 −1 2 Word 0 .. 216 −1 2 LongInt −231 .. 231 −1 4 LongWord 0 .. 232 −1 4 Cardinal 0 .. 232 −1 4 DWord 0 .. 232 −1 4 Int64 −263 .. 263 −1 8 Word 0 .. 264 8
Kiểu thực
[edit]Kiểu dữ liệu Phạm vị dữ liệu Số chữ số có nghĩa Số Byte sử dụng Real ≈ 2,9×10−39 .. 1,7×1038 ? 4 Single ≈ 1,5×10−45 .. 3,4×1038 7-8 4 Double ≈ 5×10−324 .. 1,7×10308 15-16 8 Extended ≈ 1,9×10−4932 .. 1,1×104932 19-20 10 Comp ≈ -2×1064 +1 .. 2×1063 −1 19-20 8 Currency ≈ −263 .. 263 19-20 8
Kiểu xâu
[edit]Khái niệm
[edit]- 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
[edit]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
[edit]So sánh
[edit]- 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
[edit]A B A+B B+A 'Pascal ' 'cơ bản' 'Pascal cơ bản' 'cơ bảnPascal ' 'Việt' ' Nam ' 'Việt Nam ' ' Nam Việ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
[edit]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(st)−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(s,m); 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
Kiểu Logic
[edit]Kiểu dữ liệu Giá trị Số Byte được dùng Boolean True/False 1