Chương 03
Tổ chức dữ liệu
trong chương trình
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
1
Nội dung
Dữ liệu cố định
Hằng
Biến
Kiểu dữ liệu
Từ khoá
Tầm vực biến
Phép toán và biểu thức
Kiểu enum, struct
Chuyển đổi kiểu dữ liệu
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
2
Dữ liệu
Dữ liệu được lưu trữ trong RAM của máy tính
trong q trình chương trình thực thi
Dữ liệu trong các chương trình C thường xuất hiện
dưới 3 hình thức:
Literals hay Fixed Value: giá trị cố định
Constant: hằng
Variable: biến
Trần Quang
© 2016
có tên (name) và giá trị thay thế (value)
có tên (name), kiểu (type) và nội dung chứa bên
trong (value)
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
3
Giá trị cố định
Giá trị số:
Số nguyên hệ bát phân (octal): bắt đầu bằng số 0
Ví dụ:
0x3D
-0x3AF8
Ví dụ:
169
-2053
Số thực dấu chấm đợng: (floating point)
Trần Quang
© 2016
-0203
Số ngun hệ thập phân (decimal): như bình thường
0165
Số nguyên hệ thập lục (hexadecimal): bắt đầu bằng 0x
Ví dụ:
Ví dụ:
3.14159
13.5f
Chương 03: Tổ chức dữ liệu trong chương trình
-83.1E-9
Kỹ thuật lập trình
4
Giá trị cố định
Giá trị cố định kiểu số nguyên có thể có phần hậu
tố (suffix) là sự kết hợp của U và L, cho kiểu
Unsigned và kiểu Long. Có thể là chữ hoa hoặc
chữ thường theo bất cứ thứ tự nào.
Ví dụ:
078
032UU
30
30u
30l
30ul
Trần Quang
© 2016
/* Khơng hợp lệ: 8 khơng có trong hệ bát phân*/
/* Khong hop le: không thể lặp lại hậu tố */
/* int */
/* unsigned int */
/* long */
/* unsigned long */
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
5
Giá trị cố định
Giá trị kiểu ký tự - chuỗi
Ký tự: đặt trong 2 dấu nháy đơn ('). Có thể ký tự
bình thường (plain character) hay escape sequence
('\n', '\t', …)
'A'
'7'
'\101' '\t'
Ch̃i: đặt trong 2 dấu nháy kép (“)
Trần Quang
© 2016
Ví dụ:
Ví dụ:
"Dai Hoc Bach Khoa"
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
6
Escape sequence
Escape
sequenc
e
Meaning
Escape
sequence
Meaning
\\
\ character
\n
Newline
\'
' character
\r
Carriage return
\"
" character
\t
Horizontal tab
\?
? character
\v
Vertical tab
\a
Alert or bell
\ooo
Octal number of one to three digits
\b
Backspace
\f
Form feed
\xhh . . .
Hexadecimal number of one or
more digits
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
7
Hằng
Hằng là một giá trị được đặt tên (thường dùng chữ
in hoa)
Cú pháp định nghĩa hằng:
const <type> <name> = <value> ;
hay
#define <ConstName> <value>
Ví dụ:
Trần Quang
© 2016
const int MAX = 15;
#define MAX 15
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
8
Ví dụ
Kiểu ký tự
const char c = ‘a’;
const char c = ‘A’;
Kiểu chuỗi
const char c[] = “LAP TRINH C/C++”;
const char c[] = “SAI GON”;
Kiểu số
const int a = 100;
const float f = 10.5f;
const double d = 10.5;
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
9
Biến
Biến là mợt vùng trong bợ nhớ của máy tính và có
các đặc điểm sau:
Trần Quang
© 2016
Có tên (name): do người dùng tự đặt ra để dùng
thay cho địa chỉ trong bộ nhớ
Có kiểu (type): liên quan đến loại và độ lớn của giá
trị mà biến có thể chứa.
Có dữ liệu: là giá trị chứa trong biến.
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
10
Biến
Là nơi lưu trữ dữ liệu của chương trình, nói khác
nó là 1 vùng nhớ được đặt tên
Do có tên, nên khi cần đọc/ghi với vùng nhớ này,
người lập trình chỉ cần dùng tên thay cho một địa
chỉ của nó.
Biến cần được khai báo trước khi dùng (đọc/ghi)
Chương trình tự động cấp phát vùng nhờ khi gặp
một khai báo biến
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
11
Khai báo biến
Cú pháp:
<type> <VariableName> [=<ConstExpr>];
trong đó:
<type> : kiểu có sẵn hay người dùng tự định nghĩa
<VariableName> : tên biến do người dùng tự đặt
<ConstExpr> : giá trị ban đầu, có thể có hoặc khơng
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
12
Khai báo biến
Ví dụ:
Tạo mợt biến
int a;
char c;
Tạo nhiều biến cùng kiểu
int a, b;
char c1, c2;
Tạo biến và khởi đợng giá trị
int a=10, b;
char c1=‘A’, c2=‘a’;
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
13
Khai báo biến
Khai báo biến đã được định nghĩa trong module
khác:
extern <type> <variable> ;
Ví dụ: extern int so;
Khai báo biến tĩnh:
static <type> <variable> [=<ConstExpr>];
Trần Quang
© 2016
Ví dụ: static long dem;
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
14
Quy tắc đặt tên biến
Quy tắc đặt tên biến theo quy tắc đặt tên danh hiệu
(tên hằng, tên biến, …)
Quy tắc đặt tên danh hiệu:
Trần Quang
© 2016
Ký tự đầu là một chữ cái hay dấu gạch dưới (_)
Các ký tự tiếp theo là chữ cái, số, dấu gạch dưới
Không được là ký hiệu nào khác: ! @ # $ % ^ & * …
Khơng được trùng với từ khố
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
15
Từ khoá
Là từ có ý nghĩa đặc biệt đã được quy định trước
bởi ngơn ngữ lập trình.
Người lập trình khơng được dùng từ khố để đặt
tên cho các tên mình tạo ra như tên biến, tên kiểu,
tên hàm, tên hằng, v.v.
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
16
Từ khoá
Trần Quang
© 2016
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
17
Kiểu dữ liệu
Dữ liệu mà chương trình lưu trữ có thể thuộc nhiều
dạng khác nhau, gọi là kiểu dữ liệu (data type)
Ký tự (character)
Kiểu số
Trần Quang
© 2016
Số nguyên (integer)
Số thực (float)
Kiểu chuỗi
Kiểu mảng (array)
Kiểu cấu trúc (struct)
Kiểu kiệt kê (enum)
…
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
18
Kiểu dữ liệu
Mỗi kiểu dữ liệu có cách tổ chức lưu trữ, cũng như
các phép toán đi kèm khác nhau
Cách tổ chức lưu trữ
Ví dụ: với số nguyên, ý nghĩa bit có trọng số lớn nhất
(MSB) phụ thuộc vào nó là số có dấu hay khơng dấu
Các phép tốn
Trần Quang
© 2016
Số khơng dấu: bit này tham gia vào tính đợ lớn giá trị
Số có dấu: bit này chỉ ra là số dương hay âm
Ví dụ: có thể thực hiện các phép tốn nhân hay chia
với kiểu số, nhưng khơng thể thực hiện nhân với kiểu
chuỗi ký tự
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
19
Các loại kiểu dữ liệu
Kiểu dữ liệu cơ bản (fundamental data type)
Kiểu dữ liệu do người lập trình định nghĩa (userdefined data type)
Ngôn ngữ C/C++ cung cấp sẵn một số các tên kiểu
Tên các kiểu này cũng là từ khoá
Tên kiểu do người lập trình tự đặt ra
Mợt số kiểu như: struct, enum
Kiểu dữ liệu dẫn xuất (derived data type)
Trần Quang
© 2016
Mảng (array)
Con trỏ (pointer)
Chương 03: Tổ chức dữ liệu trong chương trình
Kỹ thuật lập trình
20