Các kiểu dữ liệu (Data types)
Các loại dữ
liệu khác nhau được lưu trữ trong biến là :
Số (Numbers)
Các số
nguyên.
Ví dụ : 10
hay 178993455.
Các số thực.
Ví dụ : 15.22
hay 15463452.25.
Các số dương.
Các số âm.
Tên.
Ví dụ : John.
Giá trị luận
lý.
Ví dụ : Y hay
N.
Khi dữ liệu
được lưu trữ trong các biến có kiểu dữ liệu khác nhau, nó yêu cầu dung lượng bộ
nhớ sẽ khác nhau.
Dung lượng bộ
nhớ được chỉ định cho một biến tùy thuộc vào kiểu dữ liệu của nó.
Ðể chỉ định bộ
nhớ cho một đơn vị dữ liệu, chúng ta phải khai báo một biến với một kiểu dữ liệu
cụ thể.
Khai báo một
biến có nghĩa là một vùng nhớ nào đó đã được gán cho biến. Vùng bộ nhớ đó sau
này sẽ được tham chiếu thông qua tên của biến. Dung lượng bộ nhớ được cấp cho
biến bởi hệ điều hành phụ thuộc vào kiểu dữ liệu được lưu trữ trong biến. Vì vậy,
một kiểu dữ liệu sẽ mô tả loại dữ liệu phù hợp với biến.
Dạng thức chung cho việc khai báo một biến:
Kiểu
dữ liệu (Tên biến)
Kiểu dữ liệu
thường được dùng trong các công cụ lập trình có thể được phân chia thành:
1. Kiểu dữ liệu
số - lưu trữ giá trị số.
2. Kiểu dữ liệu
ký tự – lưu trữ thông tin mô tả
Những kiểu dữ
liệu này có thể có tên khác nhau trong các ngôn ngữ lập trình khác nhau. Ví dụ,
một kiểu dữ liệu số được gọi trong C là int trong khi đó tại Visual Basic được
gọi là integer. Tương tự, một kiểu dữ liệu ký tự được đặt tên là char trong C
trong khi đó trong Visual Basic nó được đặt tên là string. Trong bất cứ trường
hợp nào, các dữ liệu được lưu trữ luôn giống nhau. Ðiểm khác duy nhất là các biến
được dùng trong một công cụ phải được khai báo theo tên của kiểu dữ liệu được hỗ
trợ bởi chính công cụ đó.
C có 5 kiểu dữ
liệu cơ bản. Tất cả những kiểu dữ liệu khác dựa vào một trong số những kiểu
này. 5 kiểu dữ liệu đó là:
int là một số
nguyên, về cơ bản nó biểu thị kích cỡ tự nhiên của các số nguyên (integers).
float và
double được dùng cho các số có dấu chấm động. Kiểu float (số thực) chiếm 4 byte
và có thể có tới 6 con số phần sau dấu thập phân, trong khi double chiếm 8
bytes và có thể có tới 10 con số phần thập phân.
char chiếm 1 byte và có khả năng lưu một ký tự đơn
(character).
void được
dùng điển hình để khai báo một hàm không trả về giá trị. Ðiều này sẽ được nói
rõ hơn trong phần hàm.
Dung lượng nhớ
và phạm vi giá trị của những kiểu này thay đổi theo mỗi loại bộ xử lý và việc
cài đặt các trình biên dịch C khác nhau.
Lưu ý: Các con số dấu chấm động được dùng để
biểu thị các giá trị cần có độ chính xác ở phần thập phân.
Kiểu dữ liệu int
Là kiểu dữ liệu
lưu trữ dữ liệu số và là một trong những kiểu dữ liệu cơ bản trong bất cứ ngôn
ngữ lập trình nào. Nó bao gồm một chuỗi của một hay nhiều con số.
Thí dụ trong
C, để lưu trữ một giá trị số nguyên trong một biến tên là ‘num’, ta khai báo
như sau:
int num;
Biến num
không thể lưu trữ bất cứ kiểu dữ liệu nào như “Alan” hay “abc”. Kiểu dữ liệu số
này cho phép các số nguyên trong phạm vi -32768 tới 32767 được lưu trữ. Hệ điều
hành cấp phát 16 bit (2 byte) cho một biến đã được khai báo kiếu int. Ví dụ:
12322, 0, -232.
Nếu chúng ta
gán giá trị 12322 cho num thì biến này là biến kiểu số nguyên và 12322 là hằng
số nguyên.
Kiểu dữ liệu số thực (float)
Một biến có
kiểu dữ liệu số thực được dùng để lưu trữ các giá trị chứa phần thập phân.
Trình biên dịch phân biệt các kiểu dữ liệu float và int.
Ðiểm khác
nhau chính của chúng là kiểu dữ liệu int chỉ bao gồm các số nguyên, trong khi
kiểu dữ liệu float có thể lưu giữ thêm cả các phân số.
Ví dụ, trong
C, để lưu trữ một giá trị float trong một biến tên gọi là ‘num’, việc khai báo
sẽ như sau :
float num;
Biến đã khai
báo là kiểu dữ liệu float có thể lưu giá trị thập phân có độ chính xác tới 6
con số. Biến này được cấp phát 32 bit (4 byte) của bộ nhớ. Ví dụ: 23.05, 56.5,
32.
Nếu chúng ta
gán giá trị 23.5 cho num, thì biến num là biến số thực và 23.5 là một hằng số
thực.
Kiểu dữ liệu double
Kiểu dữ liệu
double được dùng khi giá trị được lưu trữ vượt quá giới hạn về dung lượng của
kiểu dữ liệu float. Biến có kiểu dữ liệu là double có thể lưu trữ nhiều hơn khoảng
hai lần số các chữ số của kiểu float.
Số các chữ số
chính xác mà kiểu dữ liệu float hoặc double có thể lưu trữ tùy thuộc vào hệ điều
hành cụ thể của máy tính.
Các con số được
lưu trữ trong kiểu dữ liệu float hay double được xem như nhau trong hệ thống
tính toán. Tuy nhiên, sử dụng kiểu dữ liệu float tiết kiệm bộ nhớ một nửa so với
kiểu dữ liệu double.
Kiểu dữ liệu
double cho phép độ chính xác cao hơn (tới 10 con số). Một biến khai báo kiểu dữ
liệu double chiếm 64 bit (8 byte) trong bộ nhớ.
Thí dụ trong
C, để lưu trữ một giá trị double cho một biến tên ‘num’, khai báo sẽ như sau:
double num;
Nếu chúng ta
gán giá trị 23.34232324 cho num, thì biến num là biến kiểu double và 23.34232324
là một hằng kiểu double.
Kiểu dữ liệu char
Kiểu dữ liệu
char được dùng để lưu trữ một ký tự đơn.
Một kiểu dữ
liệu char có thể lưu một ký tự đơn được bao đóng trong hai dấu nháy đơn (‘’).
Thí dụ kiểu dữ liệu char như: ‘a’, ‘m’,
‘$’ ‘%’.
Ta có thể lưu
trữ những chữ số như những ký tự bằng cách bao chúng bên trong cặp dấu nháy
đơn. Không nên nhầm lẫn chúng với những giá trị số. Ví dụ, ‘1’, ‘5’ và ‘9’ sẽ
không được nhầm lẫn với những số 1, 5 và 9.
Xem xét những
câu lệnh của mã C dưới đây:
char gender;
gender='M';
Hàng đầu tiên
khai báo biến gender của kiểu dữ liệu char. Hàng thứ hai lưu giữ một giá trị khởi
tạo cho nó là ‘M’. Biến gender là một biến ký tự và ‘M’ là một hằng ký tự. Biến
này được cấp phát 8 bit (1 byte) trong bộ nhớ.
Kiểu dữ liệu void
C có một kiểu
dữ liệu đặc biệt gọi là void. Kiểu dữ liệu này chỉ cho trình biên dịch C biết rằng
không có dữ liệu của bất cứ kiểu nào. Trong C, các hàm số thường trả về dữ liệu
thuộc một kiểu nào đó. Tuy nhiên, khi một hàm không có gì để trả về, kiểu dữ liệu
void được sử dụng để chỉ ra điều này.
Những kiểu dữ liệu cơ bản và dẫn xuất
Bốn kiểu dữ
liệu (char, int, float và double) mà chúng ta đã thảo luận ở trên được sử dụng
cho việc trình bày dữ liệu thực sự trong bộ nhớ của máy tính. Những kiểu dữ liệu
này có thể được sửa đổi sao cho phù hợp với những tình huống khác nhau một cách
chính xác. Kết quả, chúng ta có được các kiểu dữ liệu dẫn xuất từ những kiểu cơ
bản này.
Một bổ từ
(modifier) được sử dụng để thay đổi kiểu dữ liệu cơ bản nhằm phù hợp với các
tình huống đa dạng. Ngoại trừ kiểu void, tất cả các kiểu dữ liệu khác có thể
cho phép những bổ từ đứng trước chúng. Bổ từ được sử dụng với C là signed,
unsigned, long và short. Tất cả chúng có thể được áp dụng cho dữ liệu kiểu ký tự
và kiểu số nguyên. Bổ từ long cũng có thể được áp dụng cho double.
Một vài bổ từ
như :
1. unsigned
2. long
3. short
Ðể khai báo một
biến kiểu dẫn xuất, chúng ta cần đặt trước khai báo biến thông thường một trong
những từ khóa của bổ từ. Một giải thích chi tiết về các bổ từ này và cách thức
sử dụng chúng được trình bày bên dưới.
Các kiểu có dấu (signed) và không dấu(unsigned)
Khi khai báo
một số nguyên, mặc định đó là một số nguyên có dấu. Tính quan trọng nhất của việc
dùng signed là để bổ sung cho kiểu dữ liệu char, vì char là kiểu không dấu theo
mặc định.
Kiểu unsigned
chỉ rõ rằng một biến chỉ có thể có giá trị dương. Bổ từ này có thể được sử dụng
với kiểu dữ liệu int và kiểu dữ liệu float. Kiểu unsigned có thể áp dụng cho kiểu
dữ liệu float trong vài trường hợp nhưng điều này giảm bớt tính khả chuyển
(portability) của mã lệnh.
Với việc thêm
từ unsigned vào trước kiểu dữ liệu int, miền giá trị cho những số dương có thể
được tăng lên gấp đôi.
Ta xem những
câu lệnh của mã C cung cấp ở bên dưới, nó khai báo một biến theo kiểu unsigned
int và khởi tạo biến này có giá trị 23123.
unsigned int
varNum;
varNum =
23123;
Chú ý rằng
không gian cấp phát cho kiểu biến này vẫn giữ nguyên. Nghĩa là, biến varNum được
cấp phát 2 byte như khi nó dùng kiểu int. Tuy nhiên, những giá trị mà một kiểu
unsgned int hỗ trợ sẽ nằm trong khoảng từ
0 đến 65535, thay vì là -32768 tới 32767 mà kiểu int hỗ trợ. Theo mặc định, int
là một kiểu dữ liệu có dấu.
Các kiểu long và short
Chúng được sử
dụng khi một số nguyên có chiều dài ngắn hơn hoặc dài hơn chiều dài bình thường.
Một bổ từ short được áp dụng cho kiểu dữ liệu khi chiều dài yêu cầu ngắn hơn
chiều dài số nguyên bình thường và một bổ từ long được dùng khi chiều dài yêu cầu
dài hơn chiều dài số nguyên bình thường.
Bổ từ short
được sử dụng với kiểu dữ liệu int. Nó sửa đổi kiểu dữ liệu int theo hướng chiếm
ít vị trí bộ nhớ hơn. Bởi vậy, trong khi một biến kiểu int chiếm giữ 16 bit (2
byte) thì một biến kiểu short int (hoặc chỉ là short), chiếm giữ 8 bit (1 byte)
và cho phép những số có trong phạm vi từ -128 tới 127.
Bổ từ long được
sử dụng tương ứng một miền giá trị rộng hơn. Nó có thể được sử dụng với int
cũng như với kiểu dữ liệu double. Khi được sử dụng với kiểu dữ liệu int, biến
chấp nhận những giá trị số trong khoảng từ -2,147,483,648 đến 2,147,483,647 và
chiếm giữ 32 bit ( 4 byte). Tương tự, kiểu long double của một biến chiếm giữ
128 bit (16 byte).
Một biến long
int được khai báo như sau:
long int
varNum;
Nó cũng có thể
được khai báo đơn giản như long varNum. Một số long integer có thể được khai
báo như long int hay chỉ là long. Tương tự, ta có short int hay short.
Bảng dưới đây
trình bày phạm vi giá trị cho các kiểu dữ liệu khác nhau và số bit nó chiếm giữ
dựa theo tiêu chuẩn ANSI.
Kiểu
|
Dung
lượng xấp xỉ (đơn vị là bit)
|
Phạm
vi
|
char
|
8
|
-128
tới 127
|
unsigned
|
8
|
0
tới 255
|
signed
char
|
8
|
-128
tới 127
|
int
|
16
|
-32,768
tới 32,767
|
unsigned
int
|
16
|
0
tới 65,535
|
signed
int
|
16
|
Giống
như kiểu int
|
short
int
|
16
|
-128
tới 127
|
unsigned
short int
|
16
|
0
tới 65, 535
|
signed
short int
|
16
|
Giống
như kiểu short int
|
long
int
|
32
|
-2,147,483,648 tới 2,147,483,647
|
signed
long int
|
32
|
Giống
như kiểu long int
|
unsigned
long int
|
32
|
0
tới 4,294,967,295
|
float
|
32
|
6
con số thập phân
|
double
|
64
|
10
con số thập phân
|
long
double
|
128
|
10
con số thập phân
|
Table 2.1: Các kiểu dữ liệu
và phạm vi
Ví dụ sau
trình bày cách khai báo những kiểu dữ liệu trên.
Ví dụ 2:
int main() {
char abc; /*abc of type
character */
int xyz; /*xyz of type integer */
float length; /*length of type float */
double area; /* area of type double */
long liteyrs; /*liteyrs of type long int */
short arm; /*arm of type short integer*/
}
Chúng ta xem
lại ví dụ cộng hai số và hiển thị tổng ở chương trước. Mã giả như sau :
Ví dụ 3:
BEGIN
INPUT A, B
C = A + B
DISPLAY C
END
Trong ví dụ này, các giá trị
cho hai biến A và B được nhập. Các giá trị được cộng và tổng được lưu cho biến
C bằng cách dùng câu lệnh C = A + B. Trong câu lệnh này, A và B là những biến
và ký hiệu + gọi là toán tử. Chúng ta sẽ
nói về toán tử số học của C ở phần sau đây. Tuy nhiên, có những loại toán tử
khác trong C sẽ được bàn tới ở phần kế tiếp.
Đăng nhận xét