TRNG I HC CN TH
KHOA CÔNG NGH THÔNG TIN VÀ TRUYN THÔNG
B MÔN VIN THÔNG & K THUT IU KHIN
Giáo trình
NGÔN NG
H THNG A
Biên son:
ThS. Nguyn Ha Duy Khang
Ks. Trn Hu Danh
-HCT-
10-2006
Ngôn Ng H Thng A Ni dung
NI DUNG
NI DUNG
GII THIU MÔN HC......................................................................................1
1. i tng môn hc...............................................................................................1
2. Ni dung ct lõi....................................................................................................1
3. Kin thc liên quan...............................................................................................2
4. Danh mc tài liu tham kho................................................................................2
PHN A - NGÔN NG C
Chng 1 – C BN V NGÔN NG C............................................................ 3
1. Tng quan v ngôn ng lp trình C...................................................................... 3
2. Câu lnh................................................................................................................4
1.1. Khái nim câu lnh............................................................................................ 4
1.2. Phân loi ............................................................................................................4
3. Các lnh đn.........................................................................................................4
3.1. Lnh gán ............................................................................................................4
3.2. Lnh nhp giá tr t bàn phím cho bin (hàm scanf)......................................... 6
3.3. Lnh xut giá tr ca biu thc lên màn hình (hàm printf)................................ 8
4. Bài tp...................................................................................................................10
4.1. Mc đích yêu cu...............................................................................................10
4.2. Ni dung ............................................................................................................10
Chng 2 - CÁC LNH CÓ CU TRÚC............................................................12
1. Khi lnh ..............................................................................................................12
2. Cu trúc r nhánh.................................................................................................. 14
3. Cu trúc la chn.................................................................................................. 19
4. C
u trúc vòng lp.................................................................................................. 23
4.1. Vòng lp for....................................................................................................... 23
4.2. Vòng lp while ..................................................................................................25
4.3. Vòng lp do… while .........................................................................................28
4.4. So sánh các vòng lp ......................................................................................... 30
5. Các câu lnh đc bit............................................................................................30
6. Bài tp...................................................................................................................31
6.1 Mc đích yêu cu................................................................................................ 31
6.2 Ni dung .............................................................................................................31
Chng 3 - HÀM và CU TRÚC CHNG TRÌNH .......................................34
1. Khái nim v hàm trong C....................................................................................34
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh i
Ngôn Ng H Thng A Ni dung
1.1. Hàm th vin .....................................................................................................35
1.2. Hàm ngi dùng................................................................................................ 36
2. Xây dng mt hàm ...............................................................................................36
2.1 nh ngha hàm ..................................................................................................36
2.2 S dng hàm....................................................................................................... 37
2.3 Nguyên tc hot đng ca hàm .......................................................................... 38
3. Truyn tham s cho hàm ......................................................................................38
4. Hàm đ quy...........................................................................................................41
4.1. nh ngha ......................................................................................................... 41
4.2. c đim cn lu ý khi vit hàm đ quy........................................................... 42
5. Bài tp...................................................................................................................42
5.1 Mc đích yêu cu................................................................................................ 42
5.2 Ni dung .............................................................................................................42
Chng 4 - KIU MNG VÀ CON TR............................................................44
1. Gii thiu kiu d liu “kiu mng” trong C .......................................................44
2. Mng m
t chiu....................................................................................................44
2.1. Khai báo............................................................................................................. 44
2.2 Truy xut tng phn t ca mng....................................................................... 45
3. Mng nhiu chiu ................................................................................................. 48
3.1 Khai báo.............................................................................................................. 48
3.2 Truy xut tng phn t ca mng 2 chiu..........................................................49
4. Gii thiu kiu d liu con tr..............................................................................51
5. Khai báo và s dng bin con tr......................................................................... 52
5.1. Khai báo bin con tr ........................................................................................52
5.2. Các thao tác trên con tr.................................................................................... 52
6. Con tr và mng ................................................................................................... 56
6.1 Con tr và mng 1 chiu.....................................................................................56
6.2 Con tr và mng nhiu chiu..............................................................................59
7. Con tr và tham s hình thc ca hàm................................................................. 60
8. Bài tp...................................................................................................................62
8.1 Mc đích yêu cu................................................................................................ 62
8.2 Ni dung .............................................................................................................62
Chng 5 - CHUI KÝ T VÀ CÁC HÀM X LÝ CHUI........................... 64
1. Khái nim .............................................................................................................64
2. Khai báo................................................................................................................ 64
2.1 Khai báo theo mng............................................................................................64
2.2 Khai báo theo con tr ......................................................................................... 64
2.3 Va khai báo va gán giá tr ..............................................................................64
3. Các thao tác trên chui ký t................................................................................65
3.1. Nhp xut chui.................................................................................................65
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh ii
Ngôn Ng H Thng A Ni dung
3.2 Mt s hàm x lý chui (trong string.h).............................................................66
4. Bài tp...................................................................................................................69
4.1 Mc đích yêu cu................................................................................................ 69
4.2 Ni dung .............................................................................................................69
Chng 6 - KIU CU TRÚC..............................................................................71
1. Kiu cu trúc trong C ...........................................................................................71
1.1 Khái nim ........................................................................................................... 71
1.2 nh ngha kiu cu trúc..................................................................................... 71
1.3 Khai báo bin cu trúc........................................................................................ 73
2. Các thao tác trên bin kiu cu trúc......................................................................73
2.1 Truy xut đn tng trng ca bin cu trúc .....................................................73
2.2 Khi to cu trúc ................................................................................................76
3. Con tr cu trúc .................................................................................................... 76
3.1 Khai báo.............................................................................................................. 76
3.2 S dng các con tr kiu cu trúc ......................................................................76
3.3 Truy cp các thành phn c
a cu trúc đang đc qun lý bi con tr ...............76
4. Bài tp...................................................................................................................77
4.1 Mc đích yêu cu................................................................................................ 77
4.2 Ni dung .............................................................................................................77
Chng 7 - KIU TP TIN ..................................................................................79
1. Mt s khái nim v tp tin ..................................................................................79
2. Các thao tác trên tp tin........................................................................................80
2.1. Khai báo bin tp tin..........................................................................................80
2.2. M tp tin ..........................................................................................................80
2.3. óng tp tin .......................................................................................................81
2.4. Kim tra đn cui tp tin hay cha?..................................................................81
2.5 Di chuyn con tr tp tin v đu tp tin - Hàm rewind()....................................81
3. Truy cp tp tin vn bn ....................................................................................... 81
3.1. Ghi d liu lên t
p tin vn bn .......................................................................... 81
3.2. c d liu t tp tin vn bn ...........................................................................83
4. Truy cp tp tin nh phân......................................................................................84
4.1 Ghi d liu lên tp tin nh phân - Hàm fwrite().................................................. 84
4.2 c d liu t tp tin nh phân - Hàm fread().................................................... 84
4.3 Di chuyn con tr tp tin - Hàm fseek().............................................................84
4.4 Ví d ...................................................................................................................85
5. Bài tp...................................................................................................................88
5.1 Mc đích yêu cu................................................................................................ 88
5.2 Ni dung .............................................................................................................88
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iii
Ngôn Ng H Thng A Ni dung
PHN B – HP NG (ASSEMBLY)
Chng 1 - T CHC B X LÝ INTEL-8086............................................... 89
1.1. B x lý Intel-8086 (CPU-8086).......................................................................89
1.1.1. Cu trúc tng quát ..........................................................................................89
1.1.2. Các thanh ghi ca 8086 ..................................................................................90
1.1.3. Trng thái tràn: ...............................................................................................93
1.2. B nh trong ca Intel-80x86............................................................................93
1.2.1. T chc d liu............................................................................................... 93
1.2.2. S phân đon b nh trong.............................................................................94
1.3. a ch các ngoi vi ...........................................................................................95
1.4. Các b x lý Intel khác......................................................................................96
1.4.1. B x lý Intel-80386.......................................................................................96
1.4.2. Tp thanh ghi ca b x lý Intel-80386: ........................................................96
1.4.3. Các ch đ vn hành ca b x lý Intel-80386 ..............................................97
1.4.4. B x lý Intel-80486: ..................................................................................... 98
1.4.5. B
x lý Intel PENTIUM:..............................................................................99
BÀI TP CHNG 1 ............................................................................................. 101
Chng 2 - HP NG...........................................................................................103
2.1. Ngôn ng máy và hp ng................................................................................103
2.2. c tính tng quát ca hp ng.........................................................................104
2.2.1. Cu trúc ca mt dòng lnh hp ng. ............................................................104
2.2.2. Macro..............................................................................................................105
2.2.3. Chng trình con............................................................................................105
2.2.4. Bin toàn cc (global), bin đa phng (local)............................................. 106
2.2.5. Các bng, thông báo: ...................................................................................... 106
2.2.6. Hp ng chéo (cross assembler) ....................................................................107
2.3. Hp ng MASM (hp ng ca CPU-8086)......................................................107
2.3.1. Cu trúc ca mt hàng lnh............................................................................107
2.3.2. Tên.................................................................................................................. 107
2.3.3. T gi nh mã lnh, l
nh gi.......................................................................... 108
2.3.4. Toán hng và toán t ......................................................................................115
2.4. Cu trúc ca chng trình hp ng MASM...................................................... 118
2.4.3. Tp tin thi hành dng COM và dng EXE .....................................................119
2.4.4. Ví d ...............................................................................................................120
2.5. Cách to chng trình hp ng.........................................................................121
Chng 3 - TP LNH CPU-8086 N GIN và KIU NH V ................124
3.1. Tp lnh ca CPU-8086 ....................................................................................124
3.1.1. Lnh sao chép d liu, đa ch:.......................................................................124
3.1.2. Lnh tính toán s hc. .................................................................................... 126
3.1.3. Nhóm lnh logic và ghi dch .......................................................................... 127
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh iv
Ngôn Ng H Thng A Ni dung
3.1.4. Nhóm lnh vào ra ngoi vi. ............................................................................ 130
1.3.5. Nhóm lnh h thng .......................................................................................131
3.2. Kiu đnh v ....................................................................................................... 131
3.2.1. nh v tc thì:................................................................................................131
3.2.2. nh v thanh ghi............................................................................................ 132
3.1.3. nh v trc tip (b nh):.............................................................................. 132
3.1.4. nh v gián tip thanh ghi............................................................................. 132
3.1.5. nh v nn ..................................................................................................... 133
3.1.6. nh v ch s.................................................................................................. 133
3.1.7. nh v ch s nn...........................................................................................134
3.1.8. nh v chui .................................................................................................. 134
3.1.9. nh v cng vào/ra ........................................................................................135
BÀI TP CHNG 3 ............................................................................................. 135
Chng 4 - H
THNG NGT MM ................................................................138
4.1. Nhng c s ca ngt mm...............................................................................138
4.2. S dng ngt trong hp ng..............................................................................138
4.3. Ngt MS-DOS ................................................................................................... 139
4.4 Các ví d.............................................................................................................144
Chng 5 - LNH NHY VÀ VÒNG LP.........................................................148
5.1. Lnh nhy (chuyn điu khin).........................................................................148
5.1.1. Lnh nhy không điu kin ............................................................................148
5.1.2. Lnh nhy có điu kin: .................................................................................149
5.2. Vòng lp ............................................................................................................ 152
BÀI TP CHNG 5 ............................................................................................. 155
Chng 6 - NGN XP VÀ CHNG TRÌNH CON.......................................157
6.1. Ng
n xp............................................................................................................157
6.1.1. T chc và vn hành....................................................................................... 157
6.1.2. Truy xut ngn xp.........................................................................................158
6.2. Chng trình con............................................................................................... 159
6.2.1. Khai báo chng trình con (Th tc).............................................................159
6.2.3. Gi th tc ......................................................................................................160
6.3. Các ví d............................................................................................................160
BÀI TP CHNG 6 ............................................................................................. 164
Chng 7 - X LÝ KÝ S VÀ X LÝ CHUI................................................. 164
7.1. X lý ký t.........................................................................................................165
7.1.1. Nhp xut s nh phân (Binary)......................................................................165
7.1.2. Nhp xut s thp lc phân (Hexa) ................................................................ 166
7.2. X lý chui ........................................................................................................167
7.2. Lnh x lý chui................................................................................................167
7.2.1. Hng x lý chui.......................................................................................... 168
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh v
Ngôn Ng H Thng A Ni dung
7.2.2. Các tin t lp REP (Repeat)..........................................................................168
7.2.3. Lnh Ghi vào chui ........................................................................................169
7.2.4. Lnh Np t chui..........................................................................................170
7.2.5. Lnh di chuyn chui .....................................................................................170
7.2.6. Lnh So sánh hai chui...................................................................................172
7.2.7. Lnh dò tìm trong chui .................................................................................174
BÀI TP CHNG 7 ............................................................................................. 176
Ph lc 1 – Môi trng biên dch TURBO C 3.0 ................................................ 177
Ph lc 2 - Hng Dn S Dng Emu8086 .........................................................187
Ph lc 3 - Môi trng phát trin hp ng RadASM........................................192
Ph lc 4 Complete 8086 instruction set .............................................................. 196
Ph lc 5 – Bng mã ASCII...................................................................................220
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh vi
GII THIU MÔN HC
I. MC ÍCH YÊU CU
Môn Ngôn Ng H Thng A (TH407) cung cp cho sinh viên nhng kin thc
c bn v lp trình h thng trên máy tính thông qua ngôn ng lp trình C và Hp Ng
(Assembly). Môn hc này là nn tng đ tip thu hu ht các môn hc khác trong
chng trình đào to. Mt khác, nm vng ngôn ng C là c s đ phát trin các ng
dng.
Hc xong môn này, sinh viên phi nm đc các vn đ sau:
- Tng quan v Ngôn ng
lp trình C.
- Các kiu d liu trong C.
- Các lnh có cu trúc.
- Cách thit k và s dng các hàm trong C.
- Mt s cu trúc d liu trong C.
- T chc b x lý Intel-8086
- Cu trúc chng trình Hp ng
- Tp lnh ca Intel-8086
- H thng ngt mm trên máy tính IBM/PC
- Lnh nhy và vòng lp trong Hp ng
- Ngn xp và Th tc
- X lý s và Chui
II. I TNG MÔN HC
Môn hc đc dùng đ ging dy cho các sinh viên sau:
- Sinh viên nm th 3 chuyên ngành Tin hc, Toán Tin, Lý Tin
- Sinh viên nm th 3 chuyên ngành in t (Vin thông, iu khin…)
III. NI DUNG CT LÕI
Trong khuôn kh 45 tit, cu trúc giáo trình đc t chc thành 2 phn chính:
- Phn A trình bày các ni dung c bn ngôn ng lp trình C, các câu lnh,
các kiu d liu….
- Phn B trình bày cu trúc b x lý Intel-8086 và các vn đ v lp trình
Hp ng trên máy tính IBM/PC
PHN A: Ngôn ng C (15 tit)
Chng 1: C bn v Ngôn ng C
Chng 2: Các lnh r nhánh và vòng lp
Chng 3: Hàm và cu trúc chng trình
Ch
ng 4: Mãng và con tr
Chng 5: Chui và các hàm x lý chui
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 1
Ngôn Ng H Thng A Gii thiu môn hc
Chng 6: Kiu d liu cu trúc
Chng 7: Truy xut tp tin
PHN B: Hp Ng (30 tit)
Chng 1: T chc b x lý Intel-8086
Chng 2: Hp ng
Chng 3: Tp lnh và Kiu đnh v
Chng 4: H thng ngt mm
Chng 5: Lnh nhy và Vòng lp
Chng 6: Ngn xp và Chng trình con
Chng 7: X lý s và Chui
IV. KIN THC LIÊN QUAN
hc tt môn Ngôn Ng H Thng A, sinh viên cn phi có các kin thc
nn tng sau:
- Kin thc K thut s.
- Kin thc Kin trúc máy tính
- Kin thc Ngôn ng lp trình cp cao: Pascal, Delphi ...
- K nng thao tác s dng máy tính.
V. DANH MC TÀI LIU THAM KHO
[1] Nguyn Vn Linh, Lâm Hoài Bo, Dng Vn Hiu, Giáo trình Lp trình cn bn
A, Khoa Công Ngh Thông Tin, i hc Cn Th, 2005.
[2] Nguyn ình Tê, Hoàng c Hi , Giáo trình lý thuyt và bài tp ngôn ng C;
Nhà xut bn Giáo dc, 1999.
[3] Nguyn Cn, C – Tham kho toàn din, Nhà xut bn ng Nai, 1996.
[4] Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice
Hall Publisher, 1988.
[5] Võ Vn Chín, Bài ging Ngôn ng h thng, Khoa Công Ngh Thông Tin, i hc
Cn Th
, 1994.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 2
Chng 1
C BN V NGÔN NG C
Ni dung chng 1 trình bày các vn đn nh sau:
• Tng quan v ngôn ng lp trình C.
• Câu lnh là gì?
• Cách s dng câu lnh gán giá tr ca mt biu thc cho mt bin.
• Cách s dng lnh scanf đ nhp giá tr cho bin.
• Cách s dng lnh printf đ xut giá tr ca biu thc lên màn hình và
cách đnh dng d liu.
1. TNG QUAN V NGÔN NG LP TRÌNH C
C là ngôn ng lp trình cp cao, đc s dng rt ph bin đ lp trình h thng
cùng vi Hp ng (Assembly) và phát trin các ng dng.
Vào nhng nm cui thp k 60 đu thp k 70 ca th k XX, Dennish Ritchie
(làm vic ti phòng thí nghim Bell) đã phát trin ngôn ng lp trình C da trên ngôn
ng BCPL (do Martin Richards đa ra vào nm 1967) và ngôn ng B (do Ken
Thompson phát trin t ngôn ng BCPL vào nm 1970 khi vit h
điu hành UNIX
đu tiên trên máy PDP-7) và đc cài đt ln đu tiên trên h điu hành UNIX ca
máy DEC PDP-11.
Nm 1978, Dennish Ritchie và B.W Kernighan đã cho xut bn quyn “Ngôn
ng lp trình C” và đc ph bin rng rãi đn nay.
u tiên, C đc thit k nhm lp trình trong môi trng ca h điu hành
Unix nhm mc đích h tr cho các công vic lp trình phc tp. Nhng v sau, vi
nhng nhu cu phát trin ngày mt tng ca công vic lp trình, C đã vt qua khuôn
kh ca phòng thí nghim Bell và nhanh chóng hi nhp vào th gii lp trình đ ri
các công ty lp trình s dng mt cách rng rãi. Sau đó, các công ty sn xut phn
mm ln lt đa ra các phiên bn h tr cho vic lp trình bng ngôn ng C và chun
ANSI C cng đc khai sinh t đó.
Ngôn ng lp trình C là m
t ngôn ng lp trình h thng rt mnh và rt “mm
do”, có mt th vin gm rt nhiu các hàm (function) đã đc to sn. Ngi lp
trình có th tn dng các hàm này đ gii quyt các bài toán mà không cn phi to
mi. Hn th na, ngôn ng C h tr rt nhiu phép toán nên phù hp cho vic gii
quyt các bài toán k thut có nhiu công thc phc t
p. Ngoài ra, C cng cho phép
ngi lp trình t đnh ngha thêm các kiu d liu tru tng khác. Tuy nhiên, điu
mà ngi mi va hc lp trình C thng gp “rc ri” là “hi khó hiu” do s “mm
do” ca C. Dù vy, C đc ph bin khá rng rãi và đã tr thành mt công c lp
trình khá mnh, đc s dng nh là mt ngôn ng lp trình ch y
u trong vic xây
dng nhng phn mm hin nay.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 3
Ngôn Ng H Thng A C bn v ngôn ng C
Ngôn ng C có nhng đc đim c bn sau:
• Tính cô đng (compact): C ch có 32 t khóa chun và 40 toán t chun,
nhng hu ht đu đc biu din bng nhng chui ký t ngn gn.
• Tính cu trúc (structured): C có mt tp hp nhng ch th ca lp trình nh
cu trúc la chn, lp… T đó các chng trình vit bng C đc t chc
rõ ràng, d hiu.
• Tính tng thích (compatible): C có b tin x lý và mt th vin chun vô
cùng phong phú nên khi chuyn t máy tính này sang máy tính khác các
chng trình vit bng C vn hoàn toàn tng thích.
• Tính linh đng (flexible): C là mt ngôn ng rt uyn chuyn và cú pháp,
chp nhn nhiu cách th hin, có th thu gn kích thc ca các mã lnh
làm chng trình chy nhanh hn.
• Biên dch (compile): C cho phép biên dch nhiu t
p tin chng trình riêng
r thành các tp tin đi tng (object) và liên kt (link) các đi tng đó li
vi nhau thành mt chng trình có th thc thi đc (executable) thng
nht.
2. CÂU LNH
2.1. Khái nim câu lnh
Mt câu lnh (statement) xác đnh mt công vic mà chng trình phi thc
hin đ x lý d liu đã đc mô t và khai báo. Các câu lnh đc ngn cách vi
nhau bi du chm phy (;).
2.2. Phân loi
Có hai loi lnh: lnh đn và lnh có cu trúc.
Lnh đn là mt lnh không cha các lnh khác. Các lnh đn gm: lnh gán,
các câu lnh nhp xut d liu…
Lnh có cu trúc là lnh trong đó cha các lnh khác. Lnh có cu trúc bao
gm: cu trúc điu kin r nhánh, cu trúc điu kin la chn, cu trúc lp và cu trúc
l
nh hp thành. Lnh hp thành (khi lnh) là mt nhóm bao gm nhiu khai báo bin
và các lnh đc gom vào trong cp du {}.
3. CÁC LNH N
3.1. Lnh gán
Lnh gán (assignment statement) dùng đ gán giá tr ca mt biu thc cho mt
bin.
Cú pháp: <Tên bin> = <biu thc>
Ví d:
int main()
{
int x,y;
x =10; /* Gán hng s 10 cho bin x */
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 4
Ngôn Ng H Thng A C bn v ngôn ng C
y = 2*x; /* Gán giá tr 2*x=2*10=20 cho x */
return 0;
}
Nguyên tc khi dùng lnh gán là kiu ca bin và kiu ca biu thc phi ging
nhau, gi là có s tng thích gia các kiu d liu. Chng hn ví d sau cho thy mt
s không tng thích v kiu:
int main()
{
int x,y;
x = 10; /*Gán hng s 10 cho bin x*/
y = “Xin chao”; /*y có kiu int, còn “Xin chao” có kiu char */
return 0;
}
Khi biên dch chng trình này, C s báo li "Cannot convert ‘char *’ to ‘int’"
tc là C không th
t đng chuyn đi kiu t char * (chui ký t) sang int.
Tuy nhiên trong đa s trng hp s t đng bin đi kiu đ s tng thích v
kiu s đc thc hin. Ví d:
int main()
{
int x,y;
float r;
char ch;
r = 9000;
x = 10; /* Gán hng s 10 cho bin x */
y = 'd'; /* y có kiu int, còn ‘d’ có kiu char*/
r = 'e'; /* r có kiu float, ‘e’ có kiu char*/
ch = 65.7; /* ch có kiu char, còn 65.7 có kiu float*/
return 0;
}
Trong nhiu tr
ng hp đ to ra s tng thích v kiu, ta phi s dng đn
cách thc chuyn đi kiu mt cách tng minh.
Cú pháp:
(Tên kiu) <Biu thc>
Chuyn đi kiu ca <Biu thc> thành kiu mi <Tên kiu>. Chng hn nh:
float f;
f = (float) 10/4; /* f lúc này là 2.5*/
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 5
Ngôn Ng H Thng A C bn v ngôn ng C
Chú ý:
- Khi mt biu thc đc gán cho mt bin thì giá tr ca nó s thay th giá tr
c mà bin đã lu gi trc đó.
- Trong câu lnh gán, du = là mt toán t; do đó nó có th đc s dng là mt
thành phn ca biu thc. Trong trng hp này giá tr ca biu thc gán
chính là giá tr ca bin.
Ví d:
int x, y;
y = x = 3; /* y lúc này cùng bng 3*/
- Ta có th gán tr cho bi
n lúc bin đc khai báo theo cách thc sau:
<Tên kiu> <Tên bin> = <Biu thc>;
Ví d: int x = 10, y=x;
3.2. Lnh nhp giá tr t bàn phím cho bin (hàm scanf)
Là hàm cho phép đc d liu t bàn phím và gán cho các bin trong chng
trình khi chng trình thc thi. Trong ngôn ng C, đó là hàm scanf nm trong th vin
stdio.h.
Cú pháp: scanf(“Chui đnh dng”, đa ch ca các bin);
Gii thích:
- Chui đnh dng: dùng đ qui đnh kiu d
liu, cách biu din, đ rng, s
ch s thp phân... Mt s đnh dng khi nhp kiu s nguyên, s thc, ký t.
nh dng Ý ngha
%[s ký s]d Nhp s nguyên có ti đa <s ký s>
%[s ký s] f Nhp s thc có ti đa <s ký s> tính c du chm
%c Nhp mt ký t
- a ch ca các bin: là đa ch (&) ca các bin mà chúng ta cn nhp giá tr
cho nó. c vit nh sau: &<tên bin>.
Ví d:
scanf(“%d”,&bien1);/*c giá tr bien1 có kiu nguyên*/
scanf(“%f”,&bien2);/*c giá tr cho bien2 có kiu thc*/
scanf(“%d%f”,&bien1,&bien2); /*c giá tr cho bien1 có
kiu nguyen, bien2 có kiu thc*/
scanf(“%d%f%c”,&bien1,&bien2,&bien3); /*bien3 có kiu
char*/
Lu ý
:
o Chui đnh dng phi đt trong cp du nháy kép (“”).
o Các bin (đa ch bin) phi cách nhau bi du phy (,).
o Có bao nhiêu bin thì phi có by nhiêu đnh dng.
o Th t ca các đnh dng phi phù hp vi th t ca các bin.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 6
Ngôn Ng H Thng A C bn v ngôn ng C
o nhp giá tr kiu char đc chính xác, nên dùng hàm fflush(stdin) đ loi b
các ký t còn nm trong vùng đm bàn phím trc hàm scanf().
o nhp vào mt chui ký t (không cha khong trng hay kt thúc bng
khong trng), chúng ta phi khai báo kiu mng ký t hay con tr ký t, s
dng đnh dng %s và tên bin thay cho đa ch bin.
o đc vào mt chu
i ký t có cha khong trng (kt thúc bng phím Enter)
thì phi dùng hàm gets().
Ví d:
int biennguyen;
float bienthuc;
char bienchar;
char chuoi1[20], *chuoi2;
Nhp giá tr cho các bin:
scanf(“%3d”,&biennguyen);
Nu ta nhp 1234455 thì giá tr ca biennguyen là 3 ký s đu tiên (123). Các
ký s còn li s còn nm li trong vùng đm.
scanf(“%5f”,&bienthuc);
Nu ta nhp 123.446 thì giá tr ca bienthuc là 123.4, các ký s còn li s còn
nm trong vùng đm.
scanf(“%2d%5f”,&biennguyen, &bienthuc);
Nu ta nhp liên tip 2 s cách nhau bi khong trng nh sau: 1223 3.142325
- 2 ký s đu tiên (12) s đc đc vào cho biennguyen.
- 2 ký s tip theo trc khong trng (23) s đc đc vào cho bienthuc.
scanf(“%2d%5f%c”,&biennguyen, &bienthuc,&bienchar)
Nu ta nhp liên tip 2 s
cách nhau bi khong trng nh sau: 12345
3.142325:
- 2 ký s đu tiên (12) s đc đc vào cho biennguyen.
- 3 ký s tip theo trc khong trng (345) s đc đc vào cho bienthuc.
- Khong trng s đc đc cho bienchar.
Nu ta ch nhp 1 s gm nhiu ký s nh sau: 123456789:
- 2 ký s đu tiên (12) s đc đc vào cho biennguyen.
- 5 ký s tip theo (34567) s đc đc vào cho bienthuc.
- bienchar s có giá tr là ký s tip theo ‘8’.
scanf(“%s”,chuoi1); hoc scanf(“%s”,chuoi2)
Nu ta nhp chui nh sau: Nguyen Van Linh ↵ thì giá tr ca bin chuoi1 hay
chuoi2 ch là Nguyen .
scanf(“%s%s”,chuoi1, chuoi2);
Nu ta nhp chui nh sau: Duong Van Hieu ↵ thì giá tr ca bin chuoi1 là
Duong và giá tr ca bin chuoi2 là Van.
Vì sao nh vy? C s đc t đu đn khi gp khong trng và gán giá tr cho
bin đu tiên, phn còn li sau khong trng là giá tr ca các bin tip theo.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 7
Ngôn Ng H Thng A C bn v ngôn ng C
gets(chuoi1);
Nu gõ trên bàn phím: Tran Huu Danh ↵ thì giá tr ca bin chuoi1 là Tran
Huu Danh
3.3. Lnh xut giá tr ca biu thc lên màn hình (hàm printf)
Hàm printf (nm trong th vin stdio.h) dùng đ xut giá tr ca các biu thc
lên màn hình.
Cú pháp: printf(“Chui đnh dng ”, Các biu thc);
Gii thích:
- Chui đnh dng: dùng đ qui đnh kiu d liu, cách biu din, đ rng, s
ch s
thp phân... Mt s đnh dng khi đi vi s nguyên, s thc, ký t.
nh dng Ý ngha
%d Xut s nguyên
%[.s ch s thp phân] f Xut s thc có <s ch s thp phân> theo quy tc
làm tròn s.
%o Xut s nguyên h bát phân
%x Xut s nguyên h thp lc phân
%c Xut mt ký t
%s Xut chui ký t
%e hoc %E hoc %g
hoc %G
Xut s nguyên dng khoa hc (nhân 10 m x)
- Các biu thc: là các biu thc mà chúng ta cn xut giá tr ca nó lên màn
hình, mi biu thc phân cách nhau bi du phy (,).
Ví d:
include<stdio.h>
int main(){
int bien_nguyen=1234, i=65;
float bien_thuc=123.456703;
printf(“Gia tri nguyen cua bien nguyen =%d\n”,
bien_nguyen);
printf(“Gia tri thuc cua bien thuc =%f\n”,
bien_thuc);
printf(“Truoc khi lam tron=%f \n Sau khi lam
tron=%.2f”,bien_thuc, bien_thuc);
return 0;
}
Kt qu in ra màn hình
nh sau:
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 8
Ngôn Ng H Thng A C bn v ngôn ng C
Nu ta thêm vào dòng sau trong chng trình:
printf(“\n Ky tu co ma ASCII %d la %c”,i,i);
Kt qu ta nhn đc thêm:
printf(“ So nguyen la %d \n So thuc la %f”, i,
(float)i );
printf(“\n So thuc la %f \n So nguyen la %d”,
bien_thuc, int
)bien_thuc);
printf(“\n Viet binh thuong = %f \n Viet kieu khoa
hoc=%e”, bien_thuc, bien_thuc);
Kt qu in ra màn hình:
Lu ý: i vi các ký t điu khin, ta không th s dng cách vit thông thng đ
hin th chúng.
Ký t điu khin là các ký t dùng đ điu khin các thao tác xut, nhp d
liu.
Mt s ký t điu khin đc mô t trong bng:
Ký t điu
khin
Giá tr thp
lc phân
Ký t đc
hin th
Ý ngha
\a 0x07 BEL Phát ra ting chuông
\b 0x08 BS Di chuyn con tr sang trái 1 ký t
và xóa ký t bên trái (backspace)
\f 0x0C FF Sang trang
\n 0x0A LF Xung dòng
\r 0x0D CR Tr v đu dòng
\t 0x09 HT Tab theo ct (ging gõ phím Tab)
\\ 0x5C \ Du \
\’ 0x2C ‘ Du nháy đn (‘)
\” 0x22 “ Du nháy kép (“)
\? 0x3F ? u chm hi (?)
\ddd ddd Ký t có mã ACSII trong h bát phân là s ddd
\xHHH oxHHH Ký t có mã ACSII trong h thp lc phân là HHH
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 9
Ngôn Ng H Thng A C bn v ngôn ng C
Ví d:
#include <stdio.h>
#include <conio.h>
int main()
{ clrscr();
printf("\n Tieng Beep \a");
printf("\n Doi con tro sang trai 1 ky tu\b");
printf("\n Dau Tab \tva dau backslash \\");
printf("\n Dau nhay don \' va dau nhay kep \"");
printf("\n Dau cham hoi \?");
printf("\n Ky tu co ma bat phan 101 la \101");
printf("\n Ky tu co ma Hexa 41 la \x041");
printf("\n Dong hien tai, xin go enter");
getch();
printf("\rVe dau dong");
getch();
return 0; }
Kt qu trc khi gõ phím Enter:
Kt qu sau khi gõ phím Enter:
4. BÀI TP
4.1. Mc đích yêu cu
Làm quen và nm vng các lnh đn gin (printf, scanf), các kiu d liu chun
(int, long, char, float...), các phép toán và các hàm chun ca ngôn ng lp trình C.
Thc hin vit các chng trình hoàn chnh s dng các lnh đn gin và các kiu d
liu chun đó.
4.2. Ni dung
1. Vit chng trình in lên màn hình mt thip mi d sinh nht có dng:
*******************************************
THIEP MOI
Thân mi bn : Nguy
n Mnh Hùng
Ti d l sinh nht ca mình
Vào lúc 19h ngày 12/10/2005
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 10
Ngôn Ng H Thng A C bn v ngôn ng C
Ti 05/42 Trn Phú - Cn Th
Rt mong đc đón tip !
H Thu Hng
*******************************************
2. Vit chng trình nhp vào bán kính r ca mt hình tròn. Tính chu vi và din tích
ca hình tròn theo công thc :
Chu vi CV = 2*Pi*r
Din tích S = Pi*r*r
In các kt qu lên màn hình
3. Vit chng trình nhp vào đ dài 3 cnh a, b, c ca mt tam giác. Tính chu vi và
din tích ca tam giác theo công thc:
Chu vi CV = a+b+c
Din tích S = sqrt(p*(p-a)*(p-b)*(p-c))
Trong đó: p=CV/2
In các kt qu lên màn hình
4. Vit chng trình tính log
a
x vi a, x là các s thc nhp vào t bàn phím, và x>0,
a>0, a != 1.( dùng log
a
x=lnx/lna)
5. Vit chng trình nhp vào ta đ ca hai đim (x1, y1) và (x2, y2)
a) Tính h s góc ca đng thng đi qua hai đim đó theo công thc:
H s góc = (y2 - y1) /(x2 - x1)
b) Tính khong cách gia hai đim theo công thc:
Khong cách =
()()
2
12
2
12
xxyy −+−
6. Vit chng trình nhp vào mt ký t:
a) In ra mã Ascii ca ký t đó.
b) In ra ký t k tip ca nó.
7. Vit chng trình nhp vào các giá tr đin tr R1, R2, R3 ca mt mch đin :
Tính tng tr theo công thc:
321
1111
RRRR
++=
8. Vit chng trình nhp vào đim ba môn Toán, Lý, Hóa ca mt hc sinh. In ra
đim trung bình ca hc sinh đó vi hai s l thp phân.
9. Vit chng trình nhp vào ngày, tháng, nm. In ra ngày tháng nm theo dng
dd/mm/yy. (dd: ngày, mm: tháng, yy : nm. Ví d: 20/11/99 )
10. Vit chng trình đo ngc mt s nguyên dng có đúng 3 ch s.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 11
Chng 2
CÁC LNH CÓ CU TRÚC
Hc xong chng này, sinh viên s nm đc các vn đ sau:
• Khi lnh trong C.
• Cu trúc r nhánh.
• Cu trúc la chn.
• Cu trúc vòng lp.
• Các câu lnh “đc bit”.
I. KHI LNH
Mt dãy các khai báo cùng vi các câu lnh nm trong cp du ngoc móc { }
đc gi là mt khi lnh.
Ví d 1:
{
char ten[30];
printf(“\n Nhap vao ten cua ban:”);
scanf(“%s”, ten);
printf(“\n Chao Ban %s”,ten);
}
Ví d 2:
#include <stdio.h>
#include<conio.h>
int main ()
{ /*đây là đu khi*/
char ten[50];
printf("Xin cho biet ten cua ban !");
scanf("%s",ten);
getch();
return 0;
} /*đây là cui khi*/
Mt khi lnh có th cha bên trong nó nhiu khi lnh khác gi là khi lnh
lng nhau. S lng nhau ca các khi lnh là không hn ch.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 12
Ngôn Ng H Thng A Các lnh có cu trúc trong C
Minh ha:
{
… lnh;
{
… lnh;
{
… lnh;
}
… lnh;
}
… lnh;
}
Lu ý v phm vi tác đng ca bin trong khi lnh lng nhau:
- Trong các khi lnh khác nhau hay các khi lnh lng nhau có th khai báo
các bin cùng tên.
Ví d 1:
{
… lnh;
{
int a,b; /*bin a, b trong khi lnh th nht*/
… lnh;
}
…lnh;
{
int a,b; /*bin a,b trong khi lnh th hai*/
… lnh;
}
}
Ví d 2:
{
int a, b; /*bin a,b trong khi lnh “bên ngoài”*/
… lnh;
{
int a,b; /*bin a,b bên trong khi lnh con*/
}
}
- Nu mt bin đc khai báo bên ngoài khi lnh và không trùng tên vi bin
bên trong khi lnh thì nó cng đc s dng bên trong khi lnh.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 13
Ngôn Ng H Thng A Các lnh có cu trúc trong C
- Mt khi lnh con có th s dng các bin bên ngoài, các lnh bên ngoài
không th s dng các bin bên trong khi lnh con.
Ví d:
{
int a, b, c;
…lnh;
{
int c, d;
…lnh;
}
}
2. CU TRÚC R NHÁNH
Cu trúc r nhánh là mt cu trúc đc dùng rt ph bin trong các ngôn ng
lp trình nói chung. Trong C, có hai dng: dng không đy đ và dng đy đ.
2.1. Dng không đy đ
Biu thc
iu Kin
CÔNG VIC
S
Cú pháp:
if (<Biu thc điu kin>)
<Công vic>
Gii thích:
<Công vic> đc th hin bng 1 câu lnh hay 1
khi lnh.
Kim tra Biu thc điu kin tr
c.
Nu điu kin đúng (!= 0) thì thc hin câu lnh
hoc khi lnh lin sau điu kin.
Nu điu kin sai thì b qua lnh hoc khi lnh
lin sau điu kin (nhng lnh và khi lnh sau
đó vn đc thc hin bình thng vì nó không
ph thuc vào điu kin sau if).
Hình A2.1: Lu đ r nhánh
Ví d 1: Yêu cu ngi th
c hin chng trình nhp vào mt s thc a. In ra màn hình
kt qu nghch đo ca a khi a
≠
0.
#include <stdio.h>
#include <conio.h>
int main ()
{
float a;
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 14
Ngôn Ng H Thng A Các lnh có cu trúc trong C
printf("Nhap a = "); scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
getch();
return 0;
}
Gii thích:
- Nu chúng ta nhp vào a
≠
0 thì câu lnh printf("Nghich dao cua
%f la %f",a,1/a) đc thc hin, ngc li câu lnh này không đc
thc hin.
- Lnh getch() luôn luôn đc thc hin vì nó không phi là “lnh lin sau”
điu kin if.
Ví d 2: Yêu cu ngi chy chng trình nhp vào giá tr ca 2 s a và b, nu a ln
hn b thì in ra thông báo “Gia tr ca a ln hn giá tr ca b”, sau đó hin th
giá tr c th ca 2 s
lên màn hình.
#include <stdio.h>
#include<conio.h>
int main () {
int a,b;
printf("Nhap vao gia tri cua 2 so a, b!");
scanf("%d%d",&a,&b);
if (a>b) {
printf("\n Gia tri cua a > b");
printf("\n a=%d, b=%d",a,b);
}
getch();
return 0;
}
Gii thích:
Nu chúng ta nhp vào giá tr ca a ln hn giá tr ca b thì khi lnh:
{
printf("\n Gia tri cua a > b");
printf("\n a=%d, b=%d",a,b);
}
s đc thc hin, ngc li khi lnh này không đc thc hin.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 15
Ngôn Ng H Thng A Các lnh có cu trúc trong C
2.2. Dng đy đ
Cú pháp:
if (<Biu thc điu kin>)
<Công vic 1>
else
<Công vic 2>
Lu đ cú pháp:
Gii thích:
Công vic 1, công vic 2 đc th hin là 1
câu lnh hay 1 khi lnh.
u tiên Biu thc điu kin đc kim tra
trc.
Nu điu kin đúng thì thc hin công vic 1.
Biu thc
iu Kin
CÔNG VIC 1
CÔNG VIC 2
Hình A2.2: Lu đ r nhánh
S
Nu đ
iu kin sai thì thc hin công vic 2.
Các lnh phía sau công vic 2 không ph thuc vào điu kin.
Ví d 1: Yêu cu ngi thc hin chng trình nhp vào mt s thc a. In ra màn hình
kt qu nghch đo ca a khi a
≠
0, khi a =0 in ra thông báo “Khong the tim
duoc nghich dao cua a”
#include <stdio.h>
#include <conio.h>
int main ()
{
float a;
printf("Nhap a = "); scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
else
printf(“Khong the tim nghich dao cua a”);
getch();
return 0;
}
Gii thích:
- Nu chúng ta nhp vào a
≠
0 thì câu lnh printf("Nghich dao cua
%f la %f",a,1/a)đc thc hin, ngc li câu lnh printf(“Khong
the tim duoc nghich dao cua a”) đc thc hin.
- Lnh getch() luôn luôn đc thc hin.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 16
Ngôn Ng H Thng A Các lnh có cu trúc trong C
Ví d 2: Yêu cu ngi chy chng trình nhp vào giá tr ca 2 s a và b, nu a ln
hn b thì in ra thông báo “Gia tr ca a ln hn giá tr ca b, giá tr ca 2 s”,
ngc li thì in ra màn hình câu thông báo “Giá tr ca a nh hn hoc bng
giá tr ca b, giá tr ca 2 s”.
#include <stdio.h>
#include<conio.h>
int main ()
{
int a, b;
printf("Nhap vao gia tri cua 2 so a va b !");
scanf("%d%d",&a,&b);
if (a>b) {
printf("\n a lon hon b”);
printf("\n a=%d b=%d ",a,b);
}
else {
printf("\n a nho hon hoac bang b");
printf("\n a=%d b=%d",a,b);
}
printf("\n Thuc hien xong lenh if");
getch();
return 0;
}
Gii thích:
- Nu chúng ta nhp vào 40 30 ↵ thì kt qu hin ra trên màn hình là
a lon hon b
a=40 b=30
Thuc hien xong lenh if
- Còn nu chúng ta nhp 40 50 ↵ thì kt qu hin ra trên màn hình là
a nho hon hoac bang b
a=40 b=50
Thuc hien xong lenh if
Ví d 3: Yêu cu ngi thc hin chng trình nhp vào mt s nguyên dng là
tháng trong nm và in ra s ngày ca tháng đó.
- Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
- Tháng có 30 ngày: 4, 6, 9, 10
- Tháng có 28 hoc 29 ngày : 2
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 17
Ngôn Ng H Thng A Các lnh có cu trúc trong C
#include <stdio.h>
#include<conio.h>
int main ()
{
int thg;
printf("Nhap vao thang trong nam !");
scanf("%d",&thg);
if
(thg==1||thg==3||thg==5||thg==7||thg==8||thg==10||thg==12)
printf("\n Thang %d co 31 ngay ",thg);
else if (thg==4||thg==6||thg==9||thg==11)
printf("\n Thang %d co 30 ngay",thg);
else if (thg==2)
printf("\n Thang %d co 28 hoac 29
ngay",thg);
else printf("Khong co thang %d",thg);
printf("\n Thuc hien xong lenh if");
getch();
return 0;
}
Gii thích:
- Nu chúng ta nhp vào mt trong các s 1, 3, 5, 7, 8, 10, 12 thì kt qu xut
hin trên màn hình s là
Thang <s> co 31 ngay
Thuc hien xong lenh if
- Nu chúng ta nhp vào mt trong các s 4, 6, 9, 11 thì kt qu xut hin
trên màn hình s là
Thang <s> co 30 ngay
Thuc hien xong lenh if
- Nu chúng ta nhp vào s 2 thì kt qu xut hin trên màn hình s là
Thang 2 co 28 hoac 29 ngay
Thuc hien xong lenh if
- Nu chúng ta nhp vào s nh hn 0 hoc l
n hn 12 thì kt qu xut hin
trên màn hình s là
Khong co thang <s>
Thuc hien xong lenh if
Trong đó <s> là con s mà chúng ta đã nhp vào.
Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh 18