ữ ệ ữ ệ
ế ế
ể ể Bi n và Ki u D Li u Bi n và Ki u D Li u
ươ
Ch
ng 2
ụ
ụM c Tiêu M c Tiêu
ượ ệ ế variables) ằ
c bi n ( ế t bi n và h ng (constants) ử ể ữ ệ t kê các ki u d li u khác nhau và s ươ ng trình C d ng chúng trong ch
Lập trình cơ bản C/Chương 2/ 2 of 22
Hi u ể đ Phân bi Li ệ ụ ể ử ố ọ Hi u và s d ng các toán t ử ụ s h c
Bi nếBi nế
B nhộ ớ
ữ ệ D li u
15
15
ữ ệ D li u trong b ộ nhớ
ộ ớ
ỗ ị
ấ M i v trí trong b nh là duy nh t
ỗ ị
ộ
ế
ấ
ớ
Bi n cho phép cung c p m t tên có ý nghĩa cho m i v trí nh
Lập trình cơ bản C/Chương 2/ 3 of 22
Ví dụVí dụ
BEGIN DISPlAY ‘Enter 2 numbers’ INPUT A, B C = A + B DISPLAY C END
trên ớ
ầ
ệ ấ
ệ
ộ
ớ
ố
ế
ị ụ ể
ộ
ớ
ế ủ
• A, B và C là các bi n trong đo n mã gi ả ạ ế • Tên bi n giúp chúng ta truy c p vào b nh mà không c n dùng ế ộ ậ ỉ ủ ị đ a ch c a chúng • H đi u hành đ m nhi m vi c c p b nh còn tr ng cho ả ệ ề ữ nh ng bi n này • Ð tham chi u đ n m t giá tr c th trong b nh , chúng ta ộ ế ể ế ỉ ầ ch c n dùng tên c a bi n
Lập trình cơ bản C/Chương 2/ 4 of 22
Khai báo Khai báo
ể ữ ệ ế ị •
•Ví d : ụ
Lập trình cơ bản C/Chương 2/ 5 of 22
int a = 3; int b; int a=3, b=4; char c = ‘A’;
H ngằH ngằ
ộ
M t ộ h ngằ (constant) là m t giá tr không bao ờ ờ ổ ị ồ ạ ủ i c a nó. thay đ i trong th i gian t n t gi
ử ụ ị ừ Đ nh nghĩa h ng: s d ng t ằ khóa const
ể ữ ệ ằ
Lập trình cơ bản C/Chương 2/ 6 of 22
const
H ngằH ngằ
Các ví dụ
ố nguyên
ằ
ằ c b t đ u b ng 0x.
ụ
ắ ầ ằ ằ
ụ
const int a= 5; h ng sằ const float x = 5.3; h ng sằ ố th cự ự const char c = ‘1’; h ng ký t H ng trong h 16 đ ượ ắ ầ ệ ằ Ví d : 0xa5 = 10*16 + 5 =165. H ng trong h 8 b t đ u b ng 0. ệ Ví d : 0345 = 3*64+4*16+5=229
Lập trình cơ bản C/Chương 2/ 7 of 22
ị
ịĐ nh danh Đ nh danh
ế
Tên c a các bi n (variables), các hàm (functions), các nhãn (labels) và
ườ
ọ
ị
ị
ng khác nhau do ng
i dùng đ nh nghĩa g i là đ nh danh
ị
Ví d v các đ nh danh đúng
ị
Ví d v các đ nh danh sai
ợ ệ
Không h p l
!
ủ ố ượ các đ i t ụ ề arena s_count marks40 class_one ụ ề 1sttest oh!god start... end
Các đ nh danh có th có b t c chi u dài nào theo quy ướ ị ượ
ề ệ
ự
ở
ố ư ấ ứ c, nh ng s ổ ậ c nh n di n b i trình biên d ch thì thay đ i
ị ộ trong m t bi n đ
ể ế ký t theo trình biên d chị
ị
ệ
ữ ườ
ữ
Các đ nh danh trong C có phân bi
t ch hoa và ch th
ng
Lập trình cơ bản C/Chương 2/ 8 of 22
ị ị
ắ ặ ắ ặ Các nguyên t c đ t tên đ nh danh Các nguyên t c đ t tên đ nh danh
ộ
ả ắ ầ ự ầ ự alphabet ự ữ ố ch , s
ế ặ ừ ằ ế Tên bi n ph i b t đ u b ng m t ký t ể đ u có th là các ký t Theo sau ký t … Nên tránh đ t tên bi n trùng tên các t khoá
ế ủ Tên bi n nên mô t ả ượ đ c ý nghĩa c a nó
ự Tránh dùng các ký t ẫ ầ gây l m l n
ướ ặ ẩ ế c đ t tên bi n chu n khi
Lập trình cơ bản C/Chương 2/ 9 of 22
ụ Nên áp d ng các quy ậ l p trình
ị
ịĐ nh danh Đ nh danh
Lập trình cơ bản C/Chương 2/ 10 of 22
ừ
ừT khóa T khóa
ấ ả ữ ộ : T t c các ngôn ng dành m t
T khóa ừ ố ừ ấ ị s t Nh ng t ữ này có m t ý nghĩa đ c bi
ừ ữ ả ủ
ộ ế ừ
ụ nh t đ nh cho m c đích riêng ệ ặ ộ t ữ ụ ể ộ trong ng c nh c a m t ngôn ng c th khóa và tên ụ ừ integer cho tên ả ngay c khi mà
Lập trình cơ bản C/Chương 2/ 11 of 22
S không có xung đ t n u t ẽ ế bi n khác nhau. Ví d t ợ ệ ế bi n thì hoàn toàn h p l ừ int khóa là t
ừ
ừT khóa T khóa
Lập trình cơ bản C/Chương 2/ 12 of 22
ể ữ ệ ể ữ ệ Ki u d li u Ki u d li u
ố
ượ ư Các ki u d li u khác nhau đ ữ ệ ữ c l u tr
Ví d : 10 hay 178993455
ố ự • S th c.
Ví d , 15.22 hay 15463452.25
ố ươ
ụ ng
• S d • S âmố
ụ Tên. Ví d : John ị ậ Giá tr lu n lý : ụ Ví d : Y hay N
Lập trình cơ bản C/Chương 2/ 13 of 22
ể ế trong bi n là: ố S (Numbers) • S nguyên. ụ
ể ữ ệ ể ữ ệ
Ki u d li u (tt.) Ki u d li u (tt.)
ể ả ạ ữ ệ ẽ ượ ư Ki u d li u mô t ữ ệ lo i d li u s đ c l u
trong bi nế
ế ặ
ứ ể Tên bi n đ t sau ki u d li u ể ữ ệ Ví d : tên bi n “varName” đ ng sau ki u d ữ ế
ệ ụ li u “int”
ể
ki u d li u
ữ ệ tên bi nế
int
varName
Lập trình cơ bản C/Chương 2/ 14 of 22
ể ữ ệ ơ ả ể ữ ệ ơ ả Ki u d li u c b n Ki u d li u c b n
ể ữ ệ ơ ả Ki u d li u c b n
int
float
char
void
double
Lập trình cơ bản C/Chương 2/ 15 of 22
ố
Ki uểKi uể s nguyên (int) ố s nguyên (int)
ư
L u tr d li u s ữ ữ ệ ố int num; ể ư ữ ấ ứ ể ữ ệ Không th l u tr b t c ki u d li u
ặ nào khác nh ư “Alan” ho c “abc”
ớ nguyên trong ạ ph m vi
ố i 32767
Lập trình cơ bản C/Chương 2/ 16 of 22
Chiếm 16 bits (2 bytes) b nhộ Bi u di n các s ễ ể ớ 32768 t Ví d ụ : 12322, 0, 232
ể ố ự ể ố ự
Ki u s th c (float) Ki u s th c (float)
ữ ữ ệ ố ứ ư ậ ầ L u tr d li u s ch a ph n th p phân
ộ ớ i 6 con s
ươ ớ (10 mũ d ng 38)
Lập trình cơ bản C/Chương 2/ 17 of 22
float num; Có đ chính xác t ố Chiếm 32 bits (4 bytes) b nhộ 3.4E38 đ n 3.4E+38 ế Ví d ụ : 23.05, 56.5, 32
ể ố ự double) ể ố ự double) Ki u s th c ( Ki u s th c (
ư
ầ
ậ
L u tr d li u s ch a ph n th p phân
ữ ữ ệ ố ứ double num;
ớ
ộ
ố
i 10 con s
ộ
Có đ chính xác t Chiếm 64 bits (8 bytes) b nh ớ 1.7E308 đ n 1.7E+308 ế Ví d ụ : 23.05, 56.5, 32
Lập trình cơ bản C/Chương 2/ 18 of 22
ể ể
Ki u ký t Ki u ký t
ự char ự
char ) )
( (
ữ ộ ư L u tr m t ký t ự ơ đ n
char gender; gender='M';
ộ
Lập trình cơ bản C/Chương 2/ 19 of 22
Chi m ế 8 bits (1 byte) b nh ớ Ví dụ: ‘a’, ‘m’, ‘$’ ‘%’ , ‘1’, ’5’
Ki u ểKi u ể voidvoid
ư ấ ứ ữ ệ
Không l u b t c d li u gì Báo cho trình biên d ch không có giá tr tr ị ả ị
Lập trình cơ bản C/Chương 2/ 20 of 22
về
ữ ữ
ẫ ẫ
ấ ể ữ ệ ấ ể ữ ệ Nh ng ki u d li u d n xu t Nh ng ki u d li u d n xu t
B b t
ể ữ ệ ẫ
ấ Ki u d li u d n xu t
ể ữ ệ Ki u d li u ơ ả c b n
ộ ổ ừ (Modifiers) ể ữ ệ ki u d li u
unsigned
int
ỉ
unsigned int ố ươ ) ng
(ch là s d
short
int
ộ ớ ơ
ế
short int (chi m ít b nh h n int
)
Long int /longdouble
ế
(chi m nhi u
ộ ớ ơ ề b nh h n
long
int/double
int/double)
Lập trình cơ bản C/Chương 2/ 21 of 22
ể ữ ệ ể ữ ệ
Các ki u d li u signed và Các ki u d li u signed và unsigned unsigned
ế ộ ỉ
unsigned int varNum; varNum=23123; ượ ấ
ỉ ị ươ ể ể ậ Ki u unsigned ch rõ r ng m t bi n ch có ằ ng th nh n giá tr d
c c p phát 2 bytes
ể ượ ể unsigned có th đ ớ c dùng v i ki u
ỗ ợ ữ ệ ạ Ki u unsigned int h tr d li u trong ph m
Lập trình cơ bản C/Chương 2/ 22 of 22
ế varNum đ B t ổ ừ ữ ệ d li u int và float ể ừ vi t 0 đ n 65535
ữ ữ
ể ữ ệ ể ữ ệ Nh ng ki u d li u long (dài) Nh ng ki u d li u long (dài) và short (ng n) ắ và short (ng n) ắ
short int chi m gi
i 127
ế ố Cho phép s có ph m vi t
2,147,483,648 và 2,147,483,647 long double chi m ế 128 bits (16 bytes)
Lập trình cơ bản C/Chương 2/ 23 of 22
ế ữ 8 bits (1 byte) ừ ớ ạ 128 t ữ 32 bits (4 bytes) long int chi m gi
ể ữ ệ ể ữ ệ
ạ ạ
ị ị Ki u d li u & ph m vi giá tr Ki u d li u & ph m vi giá tr
Ki uể
ạ Ph m vi
ngượ Dung l ằ tính b ng bit
ớ
char
8
i 127
128 t ớ
Unsigned char
8
0 t
i 255 ớ
signed char
8
128 t
i 127 ớ
int
16
i 32,767
32,768 t ớ
unsigned int
16
0 t
i 65,535
ư ể
ố
signed int
16
Gi ng nh ki u int
ư ể
ố
short int
16
Gi ng nh ki u int
ớ
unsigned short int
16
0 t
i 65, 535
Lập trình cơ bản C/Chương 2/ 24 of 22
ể ữ ệ ể ữ ệ
ạ ạ
ị ị
Ki u d li u & ph m vi giá tr (tt.) Ki u d li u & ph m vi giá tr (tt.)
Ki uể
ạ Ph m vi
Dung ngượ l tính b ng ằ bit
ố
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
0 t
ố
unsigned long int
32
i 4,294,967,295 ư ể Gi ng nh ki u long int
float
32
ố ậ 6 con s th p phân
double
64
long double
128
ố ậ 10 con s th p phân ố ậ 10 con s th p phân
Lập trình cơ bản C/Chương 2/ 25 of 22
ụ ề ụ ề
ế ế
Ví d v cách khai báo bi n Ví d v cách khai báo bi n
main () {
/*abc of type character */ char abc; /*xyz of type integer */ int xyz; 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*/
Lập trình cơ bản C/Chương 2/ 26 of 22
}
ử ố ọ (Arithmetic Operators) ử ố ọ (Arithmetic Operators)
Các toán t Các toán t
s h c s h c
ứ
ứ
1 ử
Ch c năng
2 ử
Ch c năng
Toán t ngôi
Toán t ngôi
+
ố ố
ấ
++
*
L y đ i s Tăng 1 Gi m 1ả
%
ầ
/
^
C ngộ Trừ Nhân ấ L y ph n dư Chia ấ ố L y s mũ
Lập trình cơ bản C/Chương 2/ 27 of 22