Các kiểu dữ liệu của Pascal

Các kiểu dữ liệu của Pascal

Phan Nhật Chánh

Chánh22 tháng 08, 2019

5 min read
·
views
·
likes

Kiểu Logic

  • Từ khóa: BOOLEAN
  • Miền giá trị: TRUE FALSE
  • Các phép toán: phép so sánh =, <, > và các phép toán logic AND OR XOR NOT
    • Trong Pascal, khi so sánh các giá trị boolean ta tuân theo qui tắc: FALSE < TRUE
    • Giả sử A và B là hai giá trị kiểu Boolean. Kết quả của các phép toán được thể hiện qua bảng dưới đây:
ABA AND BA OR BA XOR BNOT A
TrueTrueTrueTrueFalseFalse
TrueFalseFalseTrueTrueFalse
FalseTRUEFalseTrueTrueTrue
FalseFalseFalseFalseFalseTrue

Kiểu số nguyên

Tên kiểuPhạm vi
byte02810 \rightarrow 2^8 - 1
shortint27271-2^7 \rightarrow 2^7 - 1
integer2152151-2^{15} \rightarrow 2^{15} - 1
word 0021610 \rightarrow 2^{16} - 1
longint2312311-2^{31} \rightarrow 2^{31} - 1
int642632631-2^{63} \rightarrow 2^{63} - 1
Qword026410 \rightarrow 2^{64} - 1

Các phép toán trên kiểu số nguyên

  • Các phép toán số học:

    • + - * / (phép chia cho ra kết quả là số thực).
    • Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6).
    • Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4).
  • Các phép toán xử lý bit:

    • Trên các kiểu ShortInt, Integer, Byte, Word có các phép toán: NOT AND OR XOR
    ABA AND BA OR BA XOR BNOT A
    111100
    100110
    010111
    000001
    • SHL (phép dịch trái): a SHL n \Leftrightarrow a x 2n2^n
    • SHR (phép dịch phải): a SHR n \Leftrightarrow a DIV 2n2^n

Kiểu số thực

Các kiểu số thực

Tên kiểuPhạm viDung lượng
Single1.51.5 x 10453.410^{-45} \rightarrow 3.4 x 10+3810^{+38}4 byte
Real2.92.9 x 10391.710^{-39} \rightarrow 1.7 x 10+3810^{+38}6 byte
Double5.05.0 x 103241.710^{-324} \rightarrow 1.7 x 10+30810^{+308}8 byte
Extended3.43.4 x 1049321.110^{-4932} \rightarrow 1.1 x 10+493210^{+4932}10 byte

Chú ý: Các kiểu số thực Single, DoubleExtended yêu cầu phải sử dụng chung với bộ đồng xử lý số hoặc phải biên dịch chương trình với chỉ thị {$N+} để liên kết bộ giả lập số.

Các phép toán trên kiểu số thực:

Gồm các phép toán cơ bản như: + - * /. Chú ý: Trên kiểu số thực không tồn tại hai phép toán DIVMOD

Các hàm số học sử dụng cho kiểu số nguyên và số thực

  • SQR(x)SQR(x) Trả về x2x^2
  • SQRT(x)SQRT(x) Trả về x\sqrt{x} với (x0)(x \ge 0)
  • ABS(x)ABS(x) Trả về x\|x\|
  • SIN(x)SIN(x) Trả về sin(x)\sin(x) theo radian
  • COS(x)COS(x) Trả về cos(x)\cos(x) theo radian
  • ARCTAN(x)ARCTAN(x) Trả về arctang(x)arctang(x) theo radian
  • LN(x)LN(x) Trả về ln(x)\ln(x)
  • EXP(x)EXP(x) Trả về exe^x
  • TRUNC(x)TRUNC(x) Trả về số nguyên gần với xx nhất nhưng bé hơn xx
  • INT(x)INT(x) Trả về phần nguyên của xx
  • FRAC(x)FRAC(x) Trả về phần thập phân của xx
  • ROUND(x)ROUND(x) Làm tròn số nguyên xx
  • PRED(n)PRED(n) Trả về giá trị đứng trước nn
  • SUCC(n)SUCC(n) Trả về giá trị đứng sau nn
  • ODD(n)ODD(n) Cho giá trị TRUE nếu nn là số lẻ
  • INC(n)INC(n) Tăng nn thêm 1 đơn vị (n:=n+1)(n:=n+1)
  • DEC(n)DEC(n) Giảm nn đi 1 đơn vị (n:=n1)(n:=n-1)

Kiểu ký tự

  • Từ khoá: CHAR
  • Kích thước: 1 byte
  • Để biểu diễn một ký tự, ta có thể sử dụng một trong số các cách sau đây:
    • Đặt ký tự trong cặp dấu nháy đơn. Ví dụ 'A', '0'
    • Dùng hàm CHR(n)CHR(n) (trong đó n là mã ASCII của ký tự cần biểu diễn). Ví dụ CHR(65)CHR(65) biễu diễn ký tự 'A'
    • Dùng ký hiệu #n (trong đó n là mã ASCII của ký tự cần biểu diễn). Ví dụ #65
    • Các phép toán: = > >= < <= <>

Các hàm trên kiểu ký tự

  • UPCASE(ch)UPCASE(ch) Trả về ký tự in hoa tương ứng với ký tự ch. Ví dụ: UPCASE('a') = 'A'
  • ORD(ch)ORD(ch) Trả về số thứ tự trong bảng mã ASCII của ký tự ch. Ví dụ: ORD('A')=65
  • CHR(n)CHR(n) Trả về ký tự tương ứng trong bảng mã ASCII có số thứ tự là n. Ví dụ: CHR(65)='A'
  • PRED(ch)PRED(ch) cho ký tự đứng trước ký tự ch. Ví dụ: PRED('B')='A'
  • SUCC(ch)SUCC(ch) cho ký tự đứng sau ký tự ch. Ví dụ: SUCC('A')='B'

Khai báo hằng

  • Hằng là một đại lượng có giá trị không thay đổi trong suốt quá trình thực hiện chương trình.
  • Cú pháp: CONST <Tên hằng> = <Giá trị>;CONST <Tên hằng> = <Giá trị>; hoặc CONST <Tên hằng> := <Biểu thức hằng>;CONST <Tên hằng> := <Biểu thức hằng>;