Tải bản đầy đủ (.pdf) (157 trang)

Cơ sở lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 157 trang )




TRNG I HC PHM VN NG
KHOA CÔNG NGH THÔNG TIN




TRN TN T





BÀI GING

(Dùng cho sinh viên các lp i hc Công ngh
thông tin, i hc S phm tin hc)







- Tài liu lu hành ni b -





LI NÓI U
C s lp trình là hc phn giúp cho sinh viên nm c kin thc c bn 
cài t thành công mt thut toán thành chng trình bng ngôn ng lp trình C.
Qua ó, trang b cho sinh viên kin thc nn  tip cn và hc tp tt các ngôn ng
lp trình khác trong các hc k tip theo.
Bài ging c biên son và ging dy cho sinh viên nm th nht, bc i
hc ngành Công ngh thông tin và ngành S phm tin hc k t nm 2008, theo
hình thc ào to niên ch. Hin nay chng trình ào to ti Trng i hc Phm
Vn ng c chuyn i sang ào to theo hc ch tín ch. Chính vì vy, bài
ging c chnh s a, b sung cho phù hp v!i hình thc ào to theo hc ch tín
ch.
C∀ng nhân ây tôi xin chân thành cám n hi ng chuyên môn khoa Công
ngh thông tin, Th.S Hunh Triu V# và Th.S Võ c Lân ã dành thi gian c và
óng góp nhiu ý kin quý báu  bài ging c hoàn chnh hn, áp ng nhu cu
hc tp c∃a sinh viên Khoa Công ngh thông tin - Trng i hc Phm Vn ng.
Bài ging không sao tránh kh%i nhng thiu sót, mong các bn ng nghip
óng góp ý kin  bài ging hoàn thin hn trong các ln chnh s a sau.
Xin chân thành cám n quý thy cô, các bn ng nghip !
Qung Ngãi, ngày 25/12/2013
TRN TN T

Bài ging C s lp trình
-1-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
CHNG 1: CÁC THÀNH PHN C BN
Mc tiêu
Kt thúc chng, sinh viên có th:
 Nm c các thành phn c bn ca ngôn ng lp trình C: b ký hiu, t
khóa, tên và cách t tên, cách ghi li chú thích.

 Nm c cu trúc chung ca mt chng trình C.
 Hiu và vn dng c các phép toán, các hàm ã c xây dng cho các
kiu d liu c s: kiu s nguyên, kiu s thc, kiu ký t, kiu boolean.
1.1 B ký hiu và t khóa
1.1.1 B ký hiu
- 26 ch cái la tinh hoa: A, B, …, Z.
- 26 ch cái la tinh thng: a, b, …, z.
- 10 ch s thp phân: 0,1,…,9.
- Các ký hiu toán hc: +, -, *, /, = <, >, (, ).
- Các ký hiu c bit: . , ; “ ‘ _ @ # $ ! ^ [ ] { } …
- Du cách hay khong trng.
1.1.2 T khóa
Là các t dùng riêng ca ngôn ng lp trình C và mi t khóa có mt ý ngha và
tác dng c th.
* Chú ý:
- Không th nh ngha li t khóa.
- Các t khóa trong C c vit di dng ch thng.
Mt s t khóa thông dng hay dùng trong ngôn ng lp trình C
auto break case char continue default
do double else extern float for
goto if int long register return
short sizeof static struct switch typedef
union usnigned void volatile while asm ….
1.1.3 Tên và cách t tên
Trong chng trình, ngi lp trình có th dùng rt nhiu tên: tên chng
trình, tên bin, tên hng, tên hàm,… Mi tên u phi khai báo trc khi s dng.
Qui tc t tên:
- Tên bao gm dãy các ký t lin nhau nh các ch cái a,…,z, A,… Z, các ch
s 0, …, 9 và du gch ni di.
Bài ging C s lp trình

-2-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Tên không c bt u bng ch s.
- Tên không c ch a các ký t c bit nh du cách, du chm câu,… S
ký t ti a trong tên ca Turbo C là 32.
- Tên không c trùng vi t khóa.
- C là ngôn ng lp trình phân bit ch hoa và ch thng, vì vy tên
NGHIEM s! khác vi các tên: Nghiem, nghiem,….
- Không c t tên bng ting Vit (C xem cách làm ó là sai cú pháp) .
- Các ví d v t tên:
+ Mt s tên t úng: Gia_tri, _DX, pi, ….
+ Mt s tên t sai: 3X, PI$, Bien 1,
1.1.4 Chú thích
Khi vit chng trình bn nên thêm vào các li chú thích  cho chng
trình sáng sa và d∀ hiu. Trình biên dch s! không biên dch các chú thích  to ra
mã chng trình mà nó có tác dng thuyt minh thêm cho d∀ hiu.
Phn v#n bn nm gia cp ký hiu m∃ /* và óng */ chính là phn chú
thích. Phn chú thích có th nm trên nhiu dòng, mi∀n là nm trong cp du m∃ và
óng nêu trên.
Lu ý: Trong C++ li chú thích nm sau cp du // và vit trên mt dòng.
1.2 Cu trúc chung ca mt chng trình C
Cu trúc t%ng th ca mt chng trình C thng có các khi thông dng sau:
…………………………………………………………………………………
#include <…> /*  gi các tp tin tin x lý */
#define <…> /* nh ngha các hng s */
typedefs <…> /* nh ngha kiu d liu */
…………………………………………………………………………………
Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */
…………………………………………………………………………………

Khai báo các bin ngoài
………………………………………………………………………………….
<Kiu d liu tr v> main() /* chng trình C bt buc phi có hàm main */
{ Khai báo các bin cc b, các hng ca hàm main
Các câu lnh thc hin ca hàm main
return <Kt qu tr v>
}
Bài ging C s lp trình
-3-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
…………………………………………………………………………………
Function prototype /* nh ngha ni dung tng minh ca hàm */
{
Khai báo các bin, hng ca hàm.
Các câu lnh thc hin ca hàm.
}
…………………………………………………………………………………
Nh vy, mt chng trình C thng bao gm các thành phn: các ch∋ tin
x lý, các nh ngha: kiu, hng, khai báo bin ngoài, các hàm t to, hàm main.
Trong ó:
+ #include <…> /*  gi các tp tin tin x lý */
Ví d 1.1: #include <stdio.h>
+ #define <Tên hng s> <Giá tr hng> /* nh ngha các hng s */
Ví d 1.2: #define MAX 100
+ typedef <tên kiu c(> <tên kiu mi> /* nh ngha kiu d liu */
Ví d 1.3: typedef int Songuyen;
+ Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */
Trong phn khai báo nguyên m&u hàm, bn ch∋ ra kiu giá tr tr v ca
hàm, tên hàm, tham s hình th c ca hàm.

Ví d 1.4: Khai báo nguyên m&u hàm tính din tích hình tròn
float Tinh_dien_tich(float radius);
+ Khai báo các bin ngoài (bin toàn cc): Là ni khai báo các bin có tm
tác dng trong c chng trình.
Ví d 1.5: int n;
+ Trong chng trình C có th có nhiu hàm, trong ó hàm main là hàm
chính, bt buc phi có và các câu lnh c thc hin tun t t trên xung di.
V nguyên tc hàm phi tr li mt giá tr cho tên hàm, nhng nu không mun s
dng giá tr tr v, bn có th vit nh sau: void main(). T khóa void  ch∋ hàm
không có giá tr riêng ca nó (t c hàm không mang mt giá tr c th nào khi thc
hin xong hàm)
+ /* nh ngha ni dung tng minh ca hàm */
Ví d 1.6: )nh ngha ni dung hàm tính din tích hình tròn vi tham s là
radius (bán kính ca hình tròn).
float Tinh_dien_tich(float radius)
#define PI 3.14
Bài ging C s lp trình
-4-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
{ float dientich;
dientich = PI*radius*radius;
return(dientich);
}
Lu ý: )nh ngha ca hàm Tinh_dien_tich s! c vit phía di hàm
main.
* Mt s ví d:
Ví d 1.7: Chng trình in ra màn hình ch “Chao cac ban” và “Hen gap lai”
Gii
#include <stdio.h>

main()
{
printf(“Chao cac ban\n”);
printf(“Hen gap lai\n”);
getch();
}
Gii thích chng trình ví d 1.7
 #include <stdio.h>: Khai báo tp tin tin x lý stdio.h (vit tt ca t
standard input/output) là tp tin tin x lý ch a các hàm vào/ra chu∗n. Trong
chng trình có s dng hàm printf (hàm ra chu∗n) c nh ngha trong tp tin
stdio.h.
 Hàm printf là hàm cho in ra màn hình ni dung nm trong cp du “ ”
 Ký t \n là ký t iu khin xung dòng mi.
 Phn thân ca chng trình bao gm on chng trình:
main()
{
….
}
 getch(); Khi chng trình vit ra màn hình 2 câu “Chao cac ban” và
“Hen gap lai” thì dng li cho ngi s dng xem. Nu không có lnh này thì
chng trình tr∃ v màn hình v#n bn chng trình, ngi s dng s! không xem
c kt qu, lúc ó phi bm t% hp phím Alt + F5 mi xem c kt qu.
Ví d 1.8: Chng trình tính din tích hình tròn.
Gii
Bài ging C s lp trình
-5-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
#include <stdio.h>
main()

{ float R,Dien_tich;
printf(“Nhap ban kinh R = “);
scanf(“%f”,&R);
Dien_tich = 3.14*R*R;
printf(“Dien tich hinh tron co ban kinh %f là %f”,R,Dien_tich);
getch();
}
Gii thích chng trình ví d 1.8
 float R, Dien_tich; Khai báo bin R và Dien_tich có kiu s thc.
 printf(“Nhap ban kinh R = “); in ra màn hình dòng: Nhap ban kinh R =
 scanf(“%f”,&R); Hàm c giá tr t bàn phím vào cho bin R. %f là mã
nh dng  qui nh c giá tr vào cho bin R có kiu s thc, &R c hiu là
c giá tr vào cho ô nh ca bin R.
 Dòng lnh printf(“Dien tich hinh tron co ban kinh %f là
%f”,R,Dien_tich); In ra giá tr ca bin R và bin Dien_tich vi qui cách in là s
thc.
Ví d 1.9: Chng trình tính din tích hình tròn có s dng chng trình con.
Gii
#include <stdio.h>
main()
float Tinh_dien_tich(float radius);
main()
{ float R;
pritnf(“Nhap ban kinh R = “);
scanf(“%f”,&R);
printf(“Dien tich hinh tron = %f “,Tinh_dien_tich(R));
getch();
}
float Tinh_dien_tich(float radius)
#define PI 3.14

{ float dientich;
dientich = PI*radius*radius;
Bài ging C s lp trình
-6-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
return(dientich);
}
Gii thích chng trình ví d 1.9
 #define PI 3.14. )ây là khi ghép nh ngha mt macro. Vi nh ngha
này, khi ngôn ng lp trình C dch chng trình, bt c ch nào trong chng trình
xut hin tên PI s! c thay th bng 3.14.
 Vic tính din tích c thc hin bng hàm Tinh_dien_tich vi tham s
là radius. Nguyên m&u hàm Tinh_dien_tich c khai náo trc hàm main() và nh
ngha tng minh ni dung ca hàm ∃ sau hàm main.
1.3 Kiu d liu c s
1.3.1 Kiu d liu
D liu là dng biu di∀n vt lý ca thông tin. Nhng dng d liu c bn
c x lý trong máy tính in t gm: Các ký t, hình nh, âm thanh, tri th c, s
kin, lut d&n. Theo ngha rng, d liu thô là các s, ký t, hình nh hay các kt
qu khác ca các thit b chuyn %i các lng vt lý thành các ký hiu. Các d liu
loi này thng c x lý tip b∃i con ngi hoc a vào máy tính. Trong máy
tính, d liu c lu tr và x lý ti ó hoc chuyn cho mt ngi hay mt máy
tính khác. D liu thô là mt thut ng tng i, b∃i vì d liu ã c x lý ti
bc này có th là d liu thô ∃ bc tip theo. Trong máy tính in t, d liu
c biu di∀n bng chui các ký hiu ca mt bng ch cái nào ó, mà ph% bin
nht là bng ch cái nh phân (gm 2 ký hiu “0” và “1”). Mt chng trình máy
tính là mt tp hp d liu c hiu là các lnh.
Kiu d liu là mt tp hp các giá tr mà mt bin thuc kiu ó có th
nhn c và trên ó xác nh mt s phép toán. Các kiu d liu này thng c

quy nh b∃i ngôn ng lp trình, hay nói cách khác mi ngôn ng lp trình có mt
tp các kiu d liu khác nhau. Trong các ngôn ng lp trình, mi kiu d liu ch∋
biu di∀n c mt min giá tr xác nh nào ó, s gii hn này là do ph thuc
vào kích thc ca vùng nh biu di∀n s ó. Vì vy, các thông tin c trng ca
mt kiu d liu bao gm:
+ Tên kiu d liu.
+ Kích thc vùng nh biu di∀n nó (t c min giá tr).
+ Các phép toán s dng trên kiu d liu ó.
1.3.2 Kiu s nguyên
Là tp hp các s nguyên có th biu di∀n c trong máy tính và c nh
ngha vi mt s t khóa. Mi t khóa tng ng vi mt kiu s nguyên có di
biu di∀n giá tr trong phm vi nht nh. Nhng kiu s nguyên c bn trong ngôn
Bài ging C s lp trình
-7-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
ng lp trình C là kiu s nguyên có du, c nh ngha vi t khóa int chim 2
byte.
Bng các t khóa s nguyên và phm vi biu din
Kiu bin T khóa S byte Phm vi biu din
Character char 1 -128 +127
Integer int 2 -32768…+32767
Short Integer short 2 -32768…+32767
Unsigned character unsigned char 1 0…255
Unsigned Integer unsigned int 2 0 65535
Unsigned Short Integer unsigned short 2 0 65535
Long Integer long 4 -2147483648…
+2147483647
Unsigned Long Integer Unsigned long 0… 4294967295
Lu ý: Kiu char thc cht là kiu ký t, song C cho phép dùng các ký t

nh là s nguyên. Vì vy, khi tính toán trong biu thc s hc thì kiu char c s
dng nh là s nguyên (ch mã ASCII tng ng ca ký t ó) nhng khi tính toán
trong biu th c ký t thì nó c hiu là ký t. ây chính là s m!m d∀o ca ngôn
ng lp trình C.
Có nhiu phép tính c nh ngha cho s nguyên: phép tính s hc, phép
tính quan h, phép tính logic s hc.
Bng lit kê các phép tính s hc i vi kiu s nguyên
Phép toán Ký hiu Ví d
Cng
+
a + b
Tr
-
a - b
Nhân
*
a * b
Chia ly phn
nguyên
/
a / b
Chia ly s d
%
a % b
V nguyên tc phép chia 2 s nguyên cho kt qu là s nguyên. Mun nhn
c kt qu là s thc, bn phái vit (float) a / b.
Ví d 1.10: a = 15; b = 2; Vy kt qu a/b s! là 15/2 = 7. Bn mun nhn
kt qu ca phép chia là s thc phi vit: (float) a/b; Lúc ó 15/2 = 7.5
) kh∃i to mt bin có kiu nguyên ta vit:
int i; i = 10; Hoc vit int i = 10;

Bài ging C s lp trình
-8-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Hng s nguyên có nh kiu trc: ) ghi hng s nguyên vi kiu nh
trc bn ghi thêm mt ký t vào cui dãy s: L cho kiu long, U cho kiu
Unsigned Integer, UL cho kiu Unsigned Long.
Ví d 1.11: 20000U là hng s nguyên theo kiu Unsigned Integer;
* Cách biu din s nguyên di dng s Hecxa:
+ Ngoài cách vit theo dng s thp phân, C còn quy c cho phép vit s
nguyên di dng s Hecxa, ký t bt u 0x hoc 0X. Ch+ng hn s 65 trong h
thp phân c vit di dng s Hecxa là 0X41.
+ Nu vit s nguyên di dng s ∃ h c s 8 thì ký t bt u 0. Ch+ng
hn s 65 trong h thp phân c vit di dng s ∃ h c s 8 là: 0101.
Hai cách vit trên rt thun li cho nhng ngi lp trình h thng. Lúc ó,
mt byte có th biu di∀n hai ch s Hecxa vì mt s Hecxa c biu di∀n bng
mt cm s nh phân 4 bít. Ch+ng hn: s 255 trong h thp phân, biu di∀n trong
h Hecxa là 0xFF.
Ví d 1.12: Chng trình tính t%ng 2 s nguyên.
Gii
#include <stdio.h>
main()
{ int m=5,n=10;
long tong;
tong = m+n;
getch();
}
1.3.3 Kiu s thc
Là tp hp các s thc có th biu di∀n c trong máy tính và c nh
ngha b∃i mt s t khóa: float, double, long double.

Trong máy tính s thc c biu di∀n di 2 dng: dng bình thng và
dng có phn m( (dng s khoa hc).
+ Dng bình thng: 3.14, 5.0
+ Dng s khoa hc: 1.254567E+02 tng ng vi 1.254567*10
2
=
125.4567
Phm vi biu di∀n và  chính xác ca s thc ln hn nhiu so vi s
nguyên nên s thc thích hp vi nhng i lng cn giá tr ln và  chính xác
cao.

Bài ging C s lp trình
-9-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Bng các t khóa ca s thc và phm vi biu din
Kiu bin T khóa S
byte
Phm vi biu din
S thc vi  chính xác n
Single-precision floating-point
float 4 3.4e-38 … 3.4e38
 chính xác 7 ch s
S thc vi  chính xác kép
Double-precision floating-point
double 8 1.7e-308 … 1.7e308
 chính xác 15 ch s
S thc vi  chính xác kép (
dài ln)
Long double-precision floating-

point
long
double
10 3.4e-4832 … 1.1e4932
 chính xác 19 ch s
Cách vit hng s thc:
+ Không cn phn l, sau du chm: 7.
+ Không cn du chm ∃ phn nh tr nu có phn m(: 2E-8
+ Vit dng bình thng: 5.6
+ Không cn s 0 u tiên: .1512
+ Chp nhn dùng ch e: 0.07e-3
Các phép tính s hc i vi kiu thc: Cng, tr, nhân, chia. Khác v#i kiu
s nguyên, phép chia (/) cho kt qu là s thc và không tn ti phép toán % cho
kiu s thc.
Kh∃i to bin s thc ta vit: float x; x = 7.43; Hoc vit float x = 7.43;
Hng s thc nh trc kiu: Ta có th vit hng s thc vi kiu c nh
trc bng cách ghi thêm ký t vào cui dãy s (F cho kiu float, L cho kiu Long).
Ví d 1.13: 0.1234567E-33L là hng s thc kiu long.
Các hàm s hc dùng cho kiu s nguyên và s thc
Các hàm s hc dùng cho kiu s nguyên và kiu s thc c nh ngha
trong tp tin tin x lý math.h và c s dng vi các i s là s nguyên hoc s
thc. Nu ký hiu i là tham s nguyên, f là tham s thc. Ta có bng biu di∀n nh
sau:
Hàm Kiu giá tr tr v Tác dng
abs(i) Int Tr v giá tr tuyt i ca s nguyên i
fabs(d) Double Tr v giá tr tuyt i ca s thc d
sin(d) Double Tr v giá tr hàm sin
cos(d) Double Tr v giá tr hàm cos
Bài ging C s lp trình
-10-


Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
cosh(d) Double Tr v giá tr hàm cosh
tan(d) Double Tr v giá tr hàm tang
exp(d) Double Tr v giá tr e m( x
log(d) Double Tr v giá tr hàm loga c s t nhiên d
pow(d1,d2) Double Tr v giá tr d1 m( d2
floor(d) Double Hàm ct tròn s
ceil(d) Double Hàm làm tròn s
fmod(d1,d2) Double Hàm ly phn d ca phép chia d1/d2
sqrt(d) Double Hàm khai c#n bc 2
srand(d) void Kh∃i to b s ng&u nhiên, không có
giá tr tr v
Lu ý: Các hàm s hc ch a trong tp tin tin x lý math.h và bn phi khai
báo ∃ u chng trình theo cú pháp: #include <math.h>
Ví d 1.14:
floor(3.146) = 3
floor(3.746) = 3
ceil(56.678) = 57
ceil(-56,678) = -57
1.3.4 Kiu ký t
)c nh ngha vi t khóa char, bao gm tt c các ký t thng dùng:
+ Ch cái a, b, c.
+ Ch s 0,…,9.
+ Các du chm phân on câu: , ! …
Mt hng ký t c vit trong cp du nháy n. Ch+ng hn: ‘a’; ‘0’; và
mi hng ký t c lu tr trong mt byte ô nh.
Mt giá tr kiu ký t là 1 phn t ca mt tp hu hn các ký t c sp
xp có th t. Có nhiu cách sp xp b ch khác nhau (không tn ti 1 b ch
chu∗n cho tt c các máy tính). Tuy vy, b mã các ký t c dùng rng rãi và ph%

bin  trao %i thông tin gia các máy vi tính là b mã ASCII (American Standard
Code for Information Interchange). − ây ta quan tâm ti 128 ký t u ca bng
mã ASCII (phn chu∗n  xây dng b ký t cho các ngôn ng lp trình)
Khi thc hin chng trình, mt s ký t không nhìn thy c trên màn
hình, c th c trình bày trong bng sau:

Bài ging C s lp trình
-11-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Bng mã hóa các ký t không nhìn thy c
Ký t Dãy mã
Giá tr trong bng mã ASCII
Hexa-Decimal Decimal
) chuông (BEL) \a 0x07 7
Xóa trái (BackSpace) \b 0x08 8
Nhy cách ngang (HT) \t 0x09 9
Xung dòng mi (LF) \n 0x0A 10
Nhy cách  ng (VT) \v 0x0B 11
Xung di (FF) \f 0x0C 12
V u dòng (CR) \r 0x0D 13
Du “ \“ 0x22 34
Du ‘ \‘ 0x2C 39
Du ? \? 0x3F 63
Du \ \\ 0x5C 92
Mã null \0 0x00 00
Ví d 1.15: Mun in ra màn hình ch “Chao ban” vi ting chuông phát ra
trc và sau khi vit ra ch “Chao ban” thì bn vit lnh: printf(“\a Chao ban\a”);
Ngoài ra bn c(ng có th s dng cách vit di dng h c s 16 hay h c
s 8. Ch+ng hn ký t ‘A’ có th c vit \x41 hay \101. Cách vit này thng

c áp dng cho na sau ca bng mã ASCII (vì na sau ca bng mã ASCII có
hình dng và v trí khó nh).
Kh∃i to giá tr cho bin ký t: const char RC = ‘\r’; LF = ‘\n’; ESC =
‘0x1B’;
Các hàm x lý ký t nm trong tp tin tin x lý ctype.h.
Mt s hàm x lý ký t
Hàm Kiu giá tr tr v Tác dng
toASCII(c) int
Tr v mã ASCII ca ký t
ch a trong bin ký t c
tolower(c) int
Tr v ký t thng ca ký
t ch a trong bin ký t c
toupper(c) int
Tr v ký t hoa ca ký t
ch
a trong bin ký t c

Ví d 1.16: Chng trình c t bàn phím mt ký t thng, chuyn thành
ký t hoa và in ra màn hình.
Gii:
Bài ging C s lp trình
-12-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
#include <stdio.h>
#include <ctype.h>
main()
{ char kytu_thuong, kytu_hoa;
kytu_thuong = getchar();

kytu_hoa = toupper(kytu_thuong);
putchar(kytu_hoa);
}
Trong chng trình ∃ ví d 1.16, hàm getchar()  nhn mt ký t t bàn
phím và hàm putchar() vit mt ký t lên màn hình. Các hàm này nm trong tp tin
ctype.h.
1.3.5 Kiu d liu Boolean
Trong thc t ta thng gp loi i lng ch∋ nhn mt trong hai giá tr:
úng (TRUE) hoc sai (FALSE). Nhng trong C kiu d liu boolean không c
nh ngha mt cách tng minh, nó ∗n núp di dng s nguyên. Trong C, nhng
kt qu tính toán và tr v là s nguyên giá tr bng 0 s! c hiu là giá tr FALSE,
còn kt qu tr v khác 0 (thông thng là 1) c hiu là TRUE.
Các phép toán ca kiu boolean
Toán t logic Phép toán logic Ý ngha
&&

AND

Phép “và” logic

|| OR Phép “hoc” logic
! NOT Phép “o” hay “ph nh” logic

Bng chân tr ca các phép toán logic
X Y X && Y X || Y !X
0 0 0 0 1
0 S khác 0 0 1 1
S khác 0 0 0 1 0
S khác 0 S khác 0 1 1 0
Ví d 1.17: Kt qu ca câu lnh printf(“%d”,0&&3); là 0 trên màn hình.

1.4 Câu hi và bài t p chng 1
1. Tên dùng  làm gì ? Quy tc t tên trong ngôn ng lp trình C ?
2. Chng trình ngun là gì ? Có my loi chng trình dch ?
3. Kiu d liu là gì ? Các thông tin c trng ca kiu d liu ?
4. Trình bày các kiu d liu c s∃ trong ngôn ng lp tình C. Vi mi kiu
nêu khái nim, t khóa, s byte biu di∀n, phm vi biu di∀n ?
Bài ging C s lp trình
-13-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
CHNG 2: TIN X LÝ - HNG - BIN - TOÁN T
BIU THC - CÂU LNH
Mc tiêu
Kt thúc chng, sinh viên có th:
 Hiu c ý ngha và cách s dng ca các tp tin tin x lý thông dng.
 Nm c các khái nim: hng, bin, toán t, biu thc, câu lnh và cách s
dng.
2.1 Tin x lý
 thc hin mt chng trình trong C, chng trình ngun ca bn cn c
dch sang ngôn ng máy bng chng trình dch (compiler), nhng trc tiên phi
tri qua mt bc liên kt vi các i tng cn thit khác, công vic này c thc
hin bi b tin x lý. Tht vy, khi vit mt chng trình C, bn s không vit tt
c mà ch vit nhng gì liên quan trc tip n các công vic ca bn, phn còn li
thng là rc ri thì C ã vit sn và bn ch s dng nó nh là tài nguyên. B tin
x lý giúp bn tìm và liên kt chng trình ngun vi các tài nguyên này. Lúc biên
dch thành công, bn s thy trên  a ngoài tp ngun do bn vit, bn thy có vài
tp tin khác cùng tên nhng có uôi .obj, .exe.
Các lnh C mà bn s dùng là rt nhiu, vì vy  thun li cho quá trình vit
chng trình, các nhà phát trin ngôn ng C ã vit các lnh này vào trong các tp
tin tin x lý theo mt tiêu chí phc v nào ó. Ch!ng hn, b các lnh nhp, b các

lnh xut, b các hàm toán h∀c, b các lnh x lý chu#i ký t, b các lnh tng tác
màn hình, b các lnh máy in, b các lnh cho các thut toán kinh in,…
Tuy nhiên, khi vit chng trình, không phi lúc nào bn c∃ng s dng tt c
các b lnh này mà bn dùng b lnh nào thì ch cn ch ra tp tin ch%a b lnh ó
theo cú pháp:
#include <Tên tp tin cn liên kt> ho&c là #include “Tên tp tin cn liên kt”
Hai cách vit này ch khác nhau  cách tìm kim b tin x lý: Cách vit u tìm
kim rng hn, trong c th mc C; Cách vit th% nhì ch thc hin tìm kim trong
th mc làm vic ca C, khi tp tin tìm kim không có  ó, chng trình s báo
l#i.
Trong chng trình, nu có nhiu tp tin cn liên kt, bn vit chúng ln lt
m#i tp tin trên mt dòng và c &t  u chng trình ngun. Ch!ng hn:
#include <stdio.h>
#include <math.h>
Bài ging C s lp trình
-14-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Các dòng khai báo trên không phi là lnh nên không có du ch∋m ph∋y  cui
câu. Tp tin tin x lý có uôi .h (header) ch%a các nh ngh a macro, các hàm
thông dng c nh ngh a trc.
Tóm li: Trong ngôn ng lp trình C, vic dch mt tp tin ngun thành tp tin
thc thi c tin hành qua 2 bc c lp nhau: Tin x lý (Preprocessor) và biên
dch (Tranlation). Hai bc này c n i tip nhau mt cách t ng theo cách
thc mà bn có n tng rng nó ã thc hin nh là mt x lý duy nht.
S ging và khác nhau ca 2 ch th #include và #define:
+ Ch th #include c s dng nhm gp vào ni dung ca các tp tin cn có
(header file), không th thiu trong vic s dng các hàm th vin chu∋n.
+ Ch th #define hay c s dng trong các tp tin tin x lý ã c nh
ngh a trc ó và thng c các lp trình viên khai thác khi nh ngh a các ký

hiu, ch!ng hn: #define SIZE 20
CÁC TP TIN TIN X LÝ THÔNG DNG
 stdio.h: Tp tin nh ngh a các hàm vào ra chu∋n (standard input/output) nh:
printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(),
fwrite(), getchar(), putchar(),
 conio.h: Tp tin ch%a các nh ngh a vào/ra trong ch  DOS console nh:
clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(),clreol(), kbhit(),…
 math.h: Tp tin nh ngh a các hàm tính toán nh: abs(), sqrt(), log(), log10(),
sin(), cos(), acos(), asin(), atan(), pow(), exp(),…
 alloc.h: Tp tin nh ngh a các hàm liên quan n vic cp phát và qun lý b
nh, nh: calloc(), realloc(), malloc(), free(); farmalloc(), farcalloc(), farfree(),…
 io.h: Tp tin nh ngh a các hàm vào/ra cp thp, nh: open(), _open(),
read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(),
lock(),…
 ctype.h: Tp tin nh ngh a các hàm x lý ký t, nh: toASCII(), tolower(),
toupper(),…
 stdlib.h: Tp tin nh ngh a các hàm liên quan n cp phát b nh.
 string.h: Tp tin nh ngh a các hàm x lý xâu ký t.
 dos.h: Tp tin nh ngh a các hàm  ∀c và xác lp thi gian, ngày tháng
n(m.
 graphics.h: Tp tin nh ngh a các hàm liên quan n  h∀a, nh:
initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(),…


Bài ging C s lp trình
-15-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
2.2 Hng (Constant)
2.2.1 Khái nim: Là i lng có giá tr không )i trong sut thi gian s dng

trong chng trình. Hng c lu tr trong b nh và có tên  d∗ s dng.
2.2.2 nh ngha hng:
- Dùng ch th #define:
+ Cú pháp: #define <Tên_hng> <Giá_tr_hng>
+ Tác dng: Tên_hng c thay th bi Giá_tr_hng. Vi cách này có
th nh ngh a li c giá tr ca hng.
+ Ví d 2.1: #define MAX 100
Trong chng trình ch# nào g&p MAX s c thay bng giá tr 100
+ Chú ý: Không có du chm ph∋y  cui câu nh ngh a hng.
- S dng t+ khóa const:
+ Cú pháp: const <kiu_d_liu> <tên_hng> = <giá_tr_hng>;
const <tên_hng> = <giá_tr_hng>;
+ Tác dng: nh ngh a mt hng có tên là tên_hng có giá tr bng
giá_tr_hng và sau này không th nh ngh a li (sa )i) giá tr ca hng.
+ Ví d 2.2: const long double PI = 3,141592653589793;
Const d = 7; /* hng d kiu integer, có giá tr bng 7 */
+ Lu ý: Trong kiu nh ngh a th% 2, chng trình t ng n nh kiu
ca hng là kiu ngm nh, vi turbo C hng có kiu ngm nh là int.
* S khác nhau gia khai báo hng s bng define và const  ch là:
+ Vi const, ây là hng s c nh, mt hng s thc s, không th nh
ngh a li.
+ Khi g&p hng nh ngh a bng #define thì chng trình dch s lp giá tr
hng s này vào trong biu th%c cn tính. iu ó, có ngh a là khi g&p tên hng, thì
máy s dành ra s ô nh   ch%a giá tr hng vào ó. Loi hng này không th
nh ngh a li trong quá trình s dng. Nó c áp dng cho loi hng s, hng xâu
ký t, hng logic,… Thc cht ca define là <tên_hng> s c thay th tng
trng cho on v(n bn, ó là <giá_tr_hng>. Khi dch, chng trình s thay th
<tên_hng> bng <giá_tr_hng>.
2.2.3 Các loi hng:
 Hng int: Là s nguyên có kiu int.

 Hng long: Biu di∗n thêm L hay l vào sau hng int.
 Hng usigned: Biu di∗n thêm u vào sau hng int.
Bài ging C s lp trình
-16-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
 Hng int h 8 ho&c h 16: Các hng s trong C c ngm hiu là  h 10,
nhng bn hoàn toàn có th vit hng trong h c s 8 (bt u bng 0)
hay c s h 16 (bt u bng 0X). Ví d 2.3 : 025, 057, 0x24, 0x41,…
 Hng ký t: Là mt ký t c vit trong c&p du nháy n, Ví d 2.4:
‘A’, ‘3’, ‘+’,… Trình biên dch C s lu tr các hng này bng cách dùng
mã ASCII  h c s 10. C lu các hng này thông qua mã ASCII ca nó
(trong h 10). Vi ví d 2.4, các giá tr c lu tr tng %ng: 97, 43, 51
 i vi các hng ký t &c bit, C quy nh cách vit:
‘\’’ biu di∗n cho hng ’ ‘\”’ biu di∗n cho hng ”
‘\\’ biu di∗n cho hng \ ‘\n’ biu di∗n ký t xung dòng
‘\0’ biu di∗n cho hng 0 ‘\t’ biu di∗n ký t tab
‘\r’ biu di∗n v u dòng ‘\b’ biu di∗n ký t backspace
‘\f’ biu di∗n sang trang
 Hng xâu ký t (chu#i ký t): Giá tr ca hng là dãy các ký t c bao
trong hai du nháy kép. Ví d 2.5: “Truong Dai hoc”;
* Chú ý: Các hng có th c nh ngha ngoài mi hàm, trong hàm ho!c
trong mt kh i lnh. Vi C chu∀n, khi nh ngha trong mt kh i thì dòng lnh nh
ngha phi  các dòng u tiên ca kh i, tc là trc tt c các lnh khác ca kh i
lnh. Trong C++ bn có th !t nh ngha hng  bt k# v trí nào.
2.3 Bin (Variable)
- Khái nim: Là i lng có giá tr thuc mt kiu nào ó ca ngôn ng lp
trình, giá tr ca bin có th c thay )i trong thi gian tn ti ca bin. Bin
c lu tr trong b nh trong và có tên  d∗ s dng. Chng trình có th truy
xut n ô nh c cp phát cho bin  ly ho&c ghi giá tr thông qua tên bin.

Mun s dng bin bn phi khai báo trc khi s dng.
- Cú pháp khai báo bin:
<Kiu_d_liu> <Danh_sách_tên_các_bin>;
<Kiu_d_liu> <Tên_bin> = <Giá_tr>;
Trong ó:
+ <Kiu_d_liu>: Là tên mt kiu d liu tn ti trong ngôn ng lp
trình, có th là kiu d liu chu∋n ho&c kiu d liu c nh ngh a bi ngi lp
trình.
+ <Danh_sách_tên_các_bin>: Tên các bin cùng kiu, &t cách nhau bi
du ph∋y.
+ <Giá_tr>: Giá tr khi to cho bin.
Bài ging C s lp trình
-17-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Nh vy, &c trng ca bin gm: tên bin, kiu d liu ca bin, giá tr nó
ang lu gi. Trong ngôn ng lp trình C bin có th có th có kiu void (kiu
không xác nh).
Tên ca bin trong C c &t theo nguyên tc &t tên ca ngôn ng lp trình
C (ã trình bày trong phn 1.1.3 trang 1)
- Ví d 2.6: Cách khai báo các bin có kiu s nguyên, s thc, ký t
main()
{ int m = 5, n = 10; /* Khai báo bin s nguyên m, n và khi to giá tr*/
float x,y; /* Khai báo bin s thc */
char kt = ‘A’; /* Khai báo bin ký t và khi to giá tr*/
<Các câu lnh x lý trong chng trình>
}
Lu ý: Khi g&p các lnh nh ngh a bin, chng trình dch s cp phát vùng
nh có kích thc phù hp vi kiu d liu ca bin, nu có thành phn khi to thì
chng trình s gán giá tr khi to vào vùng nh ca bin. a ch ca byte u

tiên trong vùng nh c cp phát cho bin, chính là a ch ca bin.  ly a ch
ca bin, bn dùng cú pháp: &<Tên_bin>;
2.4 Biu thc và toán t
2.4.1 Biu thc (Expression)
- Khái nim: Biu th%c là mt tp hp gm các hng, hàm, bin, toán t …
Biu th%c c tính toán theo mt nguyên tc toán h∀c nào ó  cho ra mt giá tr.
Trong mt biu th%c có 2 thành phn chính: Toán t (operator) c vit ra bng
du phép toán; Toán hng (operand) có th là hng, hàm, bin.
- Ví d 2.7: 15 + sin(x); Du + là toán t, 15 và sin(x) là các toán hng.
- Các loi biu th%c:
+ Biu th%c s h∀c là biu th%c mà kt qu tính toán cho ra giá tr bng s
(s nguyên, s thc).
+ Biu th%c logic: Trong ngôn ng lp trình C biu th%c logic là biu th%c
mà kt qu tính toán cho ra giá tr TRUE (giá tr khác 0 mà thng là 1) ho&c
FALSE (giá tr bng 0).
+ Biu th%c quan h là biu th%c có ch%a các toán t quan h ( <, >, <=, >=,
==, != ). Các toán hng trong biu th%c quan h có th là s nguyên, s thc, ký t
và chúng không nht thit phi tng thích vi nhau v kiu.
2.4.2 Toán t (Operator)
2.4.2.1 Toán t s hc
Bài ging C s lp trình
-18-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Toán t s h∀c c h) tr bi ngôn ng lp trình C là:
+ (Cng)
- (Tr+)
* (Nhân)
/ (Chia)
% (ly phn d trong phép chia 2 s nguyên)

- Ví d 2.8:
int x = 15, y = 2, z;
z = x % y;
 Kt qu phép tính cho ra z = 1;
Th% t thc hin các phép toán ging nh trong toán h∀c.
2.4.2.2 Toán t thao tác bít
- Trong ngôn ng lp trình C có nhóm các toán t mà thao tác ca nó thc
hin trên t+ng bít ca các toán hng, c g∀i là toán t thao tác bít. Các toán hng
tham gia vào biu th%c có toán t thao tác bít phi có kiu s nguyên. Các phép tính
này liên quan n biu di∗n nh phân trong máy tính.
- Toán t & (phép AND theo bít)
+ Cú pháp: <Toán_hng_1> & <Toán_hng_2>
+ Ch%c n(ng: Thc hin phép AND trên t+ng bít ca 2 toán hng và tr v
kt qu có cùng kích thc vi 2 toán hng.
+ Bng chân tr ca phép &
& 0 1
0
0 0
1
0 1
+ Ví d 2.9: int a = 7, b= 14, c;
c = a & b;
 Kt qu cho ra c = 6.
- Toán t | (phép OR theo bít)
+ Cú pháp: <Toán_hng_1> | <Toán_hng_2>
+ Ch%c n(ng: Thc hin phép OR trên t+ng bít ca 2 toán hng và tr v kt
qu có cùng kích thc vi 2 toán hng. Các bít tr v c tính bng kt qu phép
tuyn gia 2 bít tng %ng ca toán hng 1 và toán hng 2.
+ Bng chân tr ca phép |


Bài ging C s lp trình
-19-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
| 0 1
0
0 1
1
1 1
+ Ví d 2.10: int a = 7, b= 14, c;
c = a | b;
Kt qu cho ra c = 15.
- Toán t ~ (phép o bít)
+ Cú pháp: ~<Toán_hng>;
+ Ch%c n(ng: Toán t ~ là toán t mt ngôi, thc hin o các bít ca toán
hng: bít 1 tr thành 0, bít 0 tr thành 1.
+ Ví d 2.11: int a = 3;
b = ~a;
Kt qu cho ra b = 252.
- Toán t ^ (phép tuyn loi tr+ XOR)
+ Cú pháp: <Toán_hng_1> ^ <Toán_hng_2> ;
+ Ch%c n(ng: Thc hin phép XOR trên t+ng bít ca 2 toán hng và kt qu
tr v là s nguyên có cùng kích thc vi 2 toán hng. Các bít tr v c tính
bng kt qu ca phép XOR gia 2 bít tng %ng ca toán hng 1 và toán hng 2.
+ Bng chân tr ca phép ^
^ 0 1
0
0 1
1
1 0

+ Ví d 2.12: int a = 3, b= 10,c;
c = a^b;
Kt qu cho ra c = 9.
- Toán t << (phép dch trái)
+ Cú pháp: <Toán_hng_1> << <Toán_hng_2> ;
+ Ch%c n(ng: Dch chuyn tun t các bít ca Toán_hng_1 sang trái, s ln
dch chuyn bng giá tr ca Toán_hng_2. Vi m#i ln dch chuyn thì bít trái nht
s b loi b,, các bít bên phi s c tun t dch sang trái 1 v trí, bít bên phi nht
s c lp bng giá tr 0.
+ Ví d 2.13: int a = 12, b;
b = a << 1;

Bài ging C s lp trình
-20-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Kt qu cho ra b = 24. Nh vy, khi dch trái s a vi s ln dch là k, nu
cha xy ra các bít có giá tr 1 ca a b mt, thì kt qu thu c là a*2
k
. Tuy nhiên,
khi dch trái k bít, có kh n(ng mt s bít cao nht có giá tr 1 ca a b loi b,, lúc
ó kt qu phép dch là a*2
k
%2
L
(L là s bít 1 b loi b,)
- Toán t >> (phép dch phi)
+ Cú pháp: <Toán_hng_1> >> <Toán_hng_2> ;
+ Ch%c n(ng: Dch chuyn tun t các bít ca Toán_hng_1 sang phi, s ln
dch chuyn bng giá tr ca Toán_hng_2. Vi m#i ln dch chuyn thì bít bên phi

nht s b loi b,, các bít bên trái c tun t dch sang phi 1 v trí, bít bên trái
nht s c lp bng giá tr 0.
+ Ví d 2.14: int a = 12, b;
b = a >> 1;
Kt qu cho ra b = 6. Nh vy, khi dch tri s a vi s ln dch là k thì thu
c kt qu a/2
k
;
 Toán t << và >> là 2 toán t c dùng trong mt s phép tính &c bit
(nhân hay chia s nguyên vi mt s l∃y th+a ca 2) nhm nâng cao tc  tính toán
m&c dù khi vit ra có th dài dòng.
Ví d 2.15: Trong mt on chng trình có thc hin phép tính I*80, 
ti u cho vic tính toán nhm nâng cao tc  tính toán, bn nên vit phép tính
di dng:
(I<<6) + (I<<4) vì 80 = 64 + 16 = 2
6
+ 2
4

 Lu ý: Không tn ti phép toán logic !, &, |, ^, ~ cho kiu float, double,
long double, void hay các kiu d liu ph%c tp khác.
2.4.2.3 Toán t logic: ã trình bày  mc 1.3.5 trang 12 (chng 1)
2.4.2.4 Toán t quan h
-  so sánh hai biu th%c vi nhau, bn có th s dng các toán t quan h.
Kiu kt qu ca các phép toán quan h luôn cho giá tr kiu boolean.
Ký hiu toán t Ý ngha
!= So sánh khác nhau
== So sánh bng nhau
>= So sánh ln hn ho&c bng
<= So sánh nh, hn ho&c bng

> So sánh ln hn
< So sánh nh, hn

Bài ging C s lp trình
-21-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Lu ý:
+ Toán t == (hai du bng) là toán t quan h dùng  so sánh 2 biu th%c
có bng nhau hay không. Du = (mt du bng) là toán t gán dùng  gán biu
th%c bên phi cho bin  v bên trái.
+ Hai v ca biu th%c so sánh phi cùng kiu (tr+ kiu thc và kiu
nguyên) và chúng có th là kiu s nguyên, s thc, char
- Ví d 2.16: Kt qu ca phép tính (7==5) là 0
Kt qu ca phép tính (6 >= 6) là 1
2.4.2.5 Toán t iu kin 3 ngôi
- Cú pháp: <Biu_th%c> ? <Giá_tr_1>: < Giá_tr_2>;
Trong ó: Biu_th%c, Giá_tr_1, Giá_tr_2 là các biu th%c.
- Tác dng: Toán t iu kin 3 ngôi s tính toán Biu_th%c và c lng giá
tr ca nó, nu Biu_th%c có giá tr úng thì biu th%c Giá_tr_1 c tính toán và
tr thành giá tr ca biu th%c, nu Biu_th%c có giá tr sai thì biu th%c Giá_tr_2
c tính toán và tr thành giá tr ca biu th%c.
- Ví d 2.17: int x = 5, y = 7, z;
z = x > y? x:y;
Kt qu phép tính z = 7;
2.4.2.6 Các toán t khác
- Toán t tng (++) và toán t gim ( ): Giúp cho chng trình t(ng ho&c
gim giá tr ch%a trong mt bin i 1 n v. Chúng tng ng vi +=1 ho&c -=1.
Vì vy, các dòng lnh sau là tng ng:
A++;

A+=1;
A = A + 1;
Tính cht ca toán t này có th là tin t ho&c hu t, ngh a là toán t ++,
có th vit trc tên bin (++A) ho&c vit sau tên bin (A++). Trong nhng
trng hp n gin, hai cách vit trên có cùng ý ngh a, nhng trong các thao
tác khác, khi mà kt ca vic t(ng hay gim c s dng trong mt biu th%c
thì chúng có th có mt ý ngh a khác bit quan tr∀ng v m&t ý ngh a.
+ Ví d 2.18:
B = 3;
A = ++B;
 Kt qu xut ra A = 4, B = 4.
Nhng nu thc hin on lnh sau:
Bài ging C s lp trình
-22-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
B = 3;
A = B++;
 Kt qu xut ra A = 3, B = 4.
Nh vy, trong trng hp toán t c s dng nh là tin t, giá tr c
t(ng trc khi biu th%c c tính và giá tr ã t(ng c s dng trong biu th%c.
Trong trng hp ngc li, toán t c s dng nh là hu t, giá tr trong bin
ch c t(ng sau khi ã tham gia tính toán trong biu th%c.
- Toán t du phy (,): M#i câu lnh ca C c kt thúc bng du chm
ph∋y, song nó có th ch%a mt dãy lnh (dãy biu th%c tính toán c lp) ch% không
phi ch có mt biu th%c tính mt giá tr. Trong trng hp ó, C cung cp cho bn
toán t du ph∋y (,) c s dng  kt hp các biu th%c li vi nhau. Bên trái
toán t du ph∋y luôn c xem là kiu void. iu ó, có ngh a là biu th%c bên
phi tr thành giá tr ca t)ng các biu th%c c phân cách nhau bi du ph∋y.
Ví d 2.19: x = (y=3,y+1);

Cách tính toán ca biu th%c trên: trc ht gán giá tr 3 cho y, ri thc hin
tính y + 1 = 4, sau ó gán 4 cho bin x. C&p du ngo&c n là cn thit vì toán t
du ph∋y có  u tiên thp hn toán t gán.
- Toán t sizeof (cho bit kích thc c a kiu d! liu, i t∀ng d! liu)
+ Cú pháp: sizeof(<Kiu_d_liu>);
sizeof(<i_tng_d_liu>);
+ Tác dng: Cho bit kích thc (tính theo byte) ca kiu d liu c∃ng nh
ca i tng d liu.
+ Ví d 2.20: int n,x;
x = sizeof(n);
 Kt qu ca phép gán x = 2.
- Toán t & (ly a ch#)
+ Cú pháp: &<Tên_bin>;
&<Tên_hng>;
+ Tác dng: Tr li a ch ca mt bin, hng ã c cp phát trong b nh
trong.
+ Ví d 2.21: int x;
printf(“%p”,&x);
 In ra a ch ca bin x ã c cp phát  b nh trong.
- Toán t * (truy xut giá tr qua con tr∃)
+ Cú pháp: *<Tên_con_tr,>;
Bài ging C s lp trình
-23-

Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
+ Tác dng: Truy xut gián tip giá tr ca bin thông qua con tr, qun lý nó.
+ Ví d 2.22: int x = 5;
int *p;
p = &x;
printf(“%d”,*p);

 Kt qu in ra ni dung ca bin x c qun lý bi con tr, p
(t%c in ra màn hình giá tr 5).
2.4.2.7 % u tiên c a các toán t
Th% t u tiên ca các toán t c trình bày trong bng sau (t+ cao xung
thp, trong m#i m%c thì u tiên t+ trái sang phi)
Th t& u tiên các phép toán Chiu tính toán
( ) [ ] -> T+ trái qua phi
! ~ & *(truy xut gián tip) - ()i du) T+ phi qua trái
++ (ép kiu) sizeof
* (phép nhân) / % T+ trái qua phi
+ - (phép tr+) T+ trái qua phi
<< >> (các phép dch bít) trái qua phi
<, <=, >, >= T+ trái qua phi
== != T+ trái qua phi
& (phép AND trên bít)
^ (phép XOR trên bít)
| (phép OR trên bít)
&&
||
?:
= += -= *= /= %= <<= >>= &= T+ phi qua trái
\+ ^= |= (du ph∋y)

Ví d 2.22: (100 > 76) && (‘B’ < ‘A’)

1 && 0

0
2.4.2.8 Chuyn ∋i kiu
C cho phép trn l−n kiu giá tr vi nhau trong cùng biu th%c tính toán.

ng thi m#i loi kiu d liu phn %ng khác nhau i vi mt phép toán. Trong

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×