Jump to content

PASCAL/Kiểu dữ liệu

From Wikiversity

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 ti đa cho xâu>];
VAR <tên biến>:<kiu d liu 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'
  • 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'

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'
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