Kiểu string là gì


Các kiểu dữ liệu đơn giản

1. Kiểu dữ liệu trong ngôn ngữ lập trình.

            Một kiểu dữ liệu (data type) là một sự qui định về cấu trúc, miền trị của dữ liệu và tập các phép toán tác động lên miền trị đó.

Một ngôn ngữ lập trình chỉ chấp nhận và xử lý những dữ liệu tuân theo sự qui định về kiểu của ngôn ngữ lập trình đó. Trong một ngôn ngữ lập trình, một dũ liệu bao giờ cũng thuộc về một kiểu dữ liệu nhất định.

Các kiểu dữ liệu trong Turbo Pascal được chia ra thành hai loại chính :

-    Kiểu dữ liệu đơn giản (simple type).

-    Kiểu dữ liệu có cấu trúc (tructure type).


Chú ý :

@     Riêng chuỗi ký tự (STRING) là một kiểu dữ liệu đặc biệt, vừa có tính đơn giản vừa có tính cấu trúc. Mỗi chuỗi có thể xem là một giá trị, nhưng cũng có thể xem là một mảng các giá trị kiểu ký tự. Vì vậy, việc sử dụng chuỗi cũng có hai mức khác nhau : mức đơn giản và mức có cấu trúc.

@     Các kiểu có dấu (*) gọi là kiểu vô hướng đếm được (hay có thứ tự).

Dưới đây sẽ lần lượt trình bày 5 kiểu dữ liệu đơn giản thông dụng : kiểu logic, kiểu nguyên, kiểu thực, kiểu ký tự và chuỗi.

2. Các kiểu dữ liệu đơn giản.

2.1. Kiểu logic (boolean type) :

-         Chỉ có hai giá trị được biểu thị qua hai hằng chuẩn là TRUE (đúng), FALSE (sai).

-         Một giá trị logic được lưu trử trong 1 byte.

-         Quy ước : FALSE < TRUE.

-         Các phép toán : NOT, AND, OR và XOR. Kết quả của các phép toán này được thể hiện qua bảng sau :

A

not A

True

False

False

True

A

B

A and B

A or B

A xor B

True

True

False

False

True

False

True

False

True

False

False

False

True

True

True

False

False

True

True

False

Ví dụ 1 : Kết quả của các tính toán sau sẽ cho giá trị logic :

  Delta > 0,     A <> 0,         (Delta > 0) and (A <> 0)

Chú ý : trước và sau các từ khoá AND, OR, NOT, XOR chỉ có dấu cách.

2.2. Kiểu số nguyên :

q       Kiểu số nguyên thuộc tập Z. Có 5 kiểu số nguyên : Integer, Byte, Word, ShortInt và LongInt. Dưới đây là bảng chi tiết về tên gọi, phạm vi giá trị và số byte dùng để lưu trữ trong bộ nhớ của từng kiểu :

Tên kiểu

Phạm vi giá trị

số byte

ShortInt

Byte

Integer

Word

LongInt

-128 ..127

0..255

-32768..32767

0..65535

-2147483648..2147483647

1

1

2

2

4

     Các phép tính số học trên số nguyên :

·        Phép cộng và trừ : Ký hiệu +- như thường lệ.

·        Phép nhân : Ký hiệu bằng dấu *. Chẳng hạn : 3*2 cho kết quả là 6.

·        Phép chia (lấy kết quả là số thực) : Ký hiệu bằng dấu /. Chẳng hạn : 5/2 cho kết quả là 2.5

·        Phép chia lấy phần nguyên : Ký hiệu bằng từ khoá DIV. Chẳng hạn :       5 DIV 2 cho kết quả là 2;  3 DIV 4 cho kết quả là 0.

·        Phép lấy phần dư nguyên của phép chia : Ký hiệu bằng từ khoá MOD. Chẳng hạn : 5 MOD 2 cho kết quả là 1;  10 MOD 4 cho kết quả là 2.

Chú ý :

-     Các phép toán trên đều cho kết quả là các số nguyên, trừ ra phép chia (/) luôn cho kết quả là một số thực. Vì thế, nếu N là một biến nguyên, mà gán :

N := 20/5;

thì máy sẽ báo lỗi, bởi vế phải có giá trị kiểu thực (5.0) mặc dù phần lẻ bằng không.

-    Khi viết các số nguyên phải tuân theo các quy định :

-         Không có khoảng trống giữa các số.

-         Dấu + hay - (nếu có) phải đặt ngay trước chữ số đầu tiên.

-         Không được sử dụng dấu chấm thập phân.

-     Khi thực hiện các phép tính trên số nguyên, cần hết sức thận trọng xem các phép toán đó có cho kết quả vượt quá phạm vi biểu diễn của số nguyên không. Chẳng hạn, với a và b là dữ liệu Integer, khi đó hai câu lệnh sau :

a := 80;

b := (a*1245) Div 200;

            cho kết quả sai, vì a*1245  = 99600 vượt quá phạm vi của Integer.

Ví dụ 2 : Nhập một số tiền N đồng, đổi xem được bao nhiêu tờ 10 đồng, bao nhiêu tờ 5 đồng, bao nhiêu tờ 1 đồng sao cho tổng số tờ là ít nhất. Chẳng hạn : N = 67 đ Þ đổi được  6 tờ 10 đ + 1 tờ 5 đ + 2 tờ 1 đ.

Cách tính như sau :

            Số tờ 10 đ = 67 div 10 = 6;   Số tiền dư = 67 mod 10 = 7

            Số tờ 5 đ = (Số tiền dư) div 5 = 7 div 5 = 1

            Số tờ 1 đ = (Số tiền dư) mod 5 = 7 mod 5 = 2

Program Vidu_2 ;

Uses Crt;

Var  N, st10 : LongInt;

st5, st1, sodu : Byte;

Begin

  Write('Nhập số tiền N : ');Readln(N);

  st10 := N div 10;

  sodu := N mod 10;                {tính phần dư}

  st5 := sodu div 5;

  st1 := sodu mod 5;

  Writeln('Số tờ 10 đồng = ',st10);

  Writeln('Số tờ   5 đồng = ',st5);

  Writeln('Số tờ   1 đồng = ',st1);

End.

3. Kiểu số thực :

Tên kiểu

Phạm vi giá trị

số byte

Real

Single

Double

Extended

Comp

2.9*10-39 .. 1.7*1038

1.5*10-45 .. 3.4*1038

5.0*10-324 .. 1.7*10308

3.4*10-4932 .. 1.1*104932

-9.2*1018 .. 9.2*1018

6

4

8

10

8

Chú ý : Turbo Pascal thường chỉ làm việc với một kiểu Real. Muốn dùng 4 kiểu thực còn lại, phải chuyển sang mode 8087 bằng cách viết chỉ thị {$N+} ở ngay đầu chương trình.

    Cách viết một số thực : Có hai cách biểu diễn các số thực :

Cách 1 : Viết như một số thực bình thường trong toán học, trong đó dấu phẩy thập phân được thay bằng dấu chấm thập phân. Chẳng hạn : 2.12;  4.0;        -125.09;   +235.55

Cách 2 : Viết số dưới dạng khoa học.

2.345E+1                  (có giá trị là 2.345*101 = 23.45)

123.456E-4               (có giá trị là 123.456*10-4 = 0.0123456)

-52.4E2                                 (có giá trị là -52.4*102 = -5240.0)

Trong dạng này, số gồm có hai phần : phần đứng trước E gọi là phần định trị, được viết theo cách 1; phần đứng sau E gọi là phần bậc, gồm dấu cộng hoặc trừ, tiếp đến là một số nguyên.

                  Số viết theo cách 1 còn gọi là số có dấu chấm thập phân cố định, số viết theo cách 2 còn gọi là số có dấu chấm thập phân di động hay số dạng khoa học.

     Các phép toán trên số thực :  cộng (+),  trừ (-), nhân (*) và chia (/). Khi một trong các số hạng tham gia tính toán là kiểu thực thì kết quả của phép toán cũng là một số thực.

Lưu ý : Phép toán DIV và MOD không dùng cho các số thực.

q       Các hàm số học dùng cho số nguyên và số thực :

Tên hàm

Kiểu của đối số

Kiểu của kết quả

ý nghĩa

SQR,

ABS

nguyên hay thực

giống

đối số

Sqr(x) = x2.

Abs(x) = |x| : trị tuyệt đối của x.

SQRT,

SIN, COS,

ARCTAN,

LN, EXP

nguyên hay thực

thực

Sqrt(x) = .

Sin(x), Cos(x), Artan(x): tính sinx, cosx và arctgx.

Ln(x) = logex  (x > 0),  Exp(x) = ex.

TRUNC,

ROUND

nguyên hay thực

nguyên

Trunc(x) : cắt bỏ phần lẻ thập phân của x nếu có. Trunc(4.86) = 4; Trunc(-3.2) =-3.

Round(x) : cho số nguyên gần x nhất.  Round(-23.68) = -24; Round(1.5) = 2.

INT,

FRAC

nguyên hay thực

thực

Int(x) : cho số thực bằng phần nguyên của x. Int(12.57) = 12.0

Frac(x) : cho số thực bằng phần lẻ của x. Frac(12.57) = 0.57

SUCC,

FRED

nguyên

nguyên

Succ(n) = n+1,

Pred(n) = n-1.

ODD

nguyên

logic

Odd(n) cho kết quả TRUE nếu n lẻ, cho kết quả FALSE nếu ngược lại.

4. Kiểu ký tự (character type) :

q       Các ký tự dùng trong máy tính được liệt kê đầy đủ trong bảng mã ASCII gồm 256 ký tự khác nhau và được đánh số thứ tự từ 0 đến 255. Số thứ tự của mỗi ký tự còn gọi là mã ASCII của ký tự đó. Dưới đây là một phần của bảng mã ASCII :

Mã ASCII

Ký tự

7

32

43

48

49

65

66

97

98

134

Bell

Space (ký tự trắng)

+

0

1

A

B

a

b

S

Lưu ý : Các ký tự có mã từ 0 đến 31 gọi là các ký tự điều khiển, không in ra được, được dùng để điều khiển các thiết bị ngoại vi. Chẳng hạn, ký tự có mã là 7 (bell) dùng để tạo một tiếng kêu bip; ký tự có mã 13 dùng để chuyển con trỏ màn hình xuống đầu dòng dưới, ...

q       Mỗi ký tự trong bảng mã ASCII gọi là một hằng ký tự, chiếm độ dài 1 byte, và khi viết trong Turbo Pascal phải được đặt trong cặp nháy đơn, chẳng hạn: ’A’, ’2’, ’$’, ...

q       Phép toán : Chỉ có phép toán so sánh. Ký tự có mã nhỏ hơn thì nhỏ hơn. Tức là :  ‘0’ < ‘1’ < ... < ‘A’ < ‘B’ < ... < ‘a’ < ‘b’ < ...

q       Các hàm liên quan đến ký tự :

·        Hàm UPCASE(ch) : Đổi ký tự ch thành ký tự hoa. Chẳng hạn : UpCase(’a’) = ’A’; UpCase(’B’) = ’B’.

·        Hàm PRED(ch) : Cho ký tự đứng ngay trước ký tự ch trong bảng mã. Chẳng hạn : Pred(’b’) = ’a’.

·        Hàm SUCC(ch) : Cho ký tự đứng ngay sau ký tự ch trong bảng mã. Chẳng hạn : Succ(’b’) = ’c’.

·        Hàm ORD(ch) : Cho mã của ký tự ch. Chẳng hạn : Ord(’A’) = 65;  Ord(’a’) = 97.

·        Hàm CHR(k), trong đó đối số k nguyên, 0 £ k £ 255 : Cho ký tự có mã bằng k. Chẳng hạn : Chr(65) = ’A’;  Chr(97) = ’a’.

Ghi chú :

-    Có một số ký tự không có trên bàn phím, để viết chúng lên màn hình ta phải dùng lệnh Write và hàm CHR. Chẳng hạn :

-         Lệnh Write(Chr(242)) : in ra ký tự  ³

-         Lệnh Write(Chr(240)) : in ra ký tự  º

-         Lệnh Write(Chr(7)) hay Write(#7) : phát ra một tiếng bip.

-     Turbo Pascal cho phép viết gọn Chr(k) thành #k nếu k là hằng số. Chẳng hạn, các lệnh sau đều in lên màn hình ký tự A : Write(’A’); Write(#65); Write(Chr(65)).

-    Turbo Pascal không có hàm đổi ký tự hoa ra ký tự thường, nhưng có thể làm việc này nhờ công thức sau :

Ký tự thường := Chr(Ord(ký tự hoa) + 32)

5. Kiểu chuỗi ký tự (string type) : Một dãy ký tự đặt trong cặp nháy đơn gọi là một hằng chuỗi. Dưới đây là hai hằng chuỗi :

’Ho va ten’ : gồm 9 ký tự.

’TURBO PASCAL’ : gồm 12 ký tự.

            Số ký tự của chuỗi không quá 255. Chuỗi không có ký tự nào cả gọi là chuỗi rỗng.

            Dữ liệu kiểu chuỗi sẽ được trình bày chi tiết hơn ở các chương sau.


Video liên quan

Chủ đề