View
228
Download
0
Category
Preview:
Citation preview
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
1/117
NGN NG LP C Gio vin
V Vn nh
1Ngn ng lp trnh C - Smith.N Studio!
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
2/117
2Ngn ng lp trnh C - Smith.N Studio!
Bi 1: Tng quan v ngn ng lptrnh C
Ngn ng C c mt s cc c im ni btsau :
B lnh ph h p v i ph ng php lp trnh cutrc.Kiu d liu phong ph.Mt ch ng trnh C bao gi cng g m mt hocnhiu hm v cc hm r i nhau.L ngn ng linh ng v c php, chp nhnnhiu cch thhin ch ng trnh .
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
3/117
3Ngn ng lp trnh C - Smith.N Studio!
I. Hng dn s dng mi trng kt hp Turbo C 1. Khi ng
C1: T DOS [ ng dn ] \ TC.EXEC2: T Win C-> TC -> BIN -> TC.EXEC3: Start -> Run -> C:\TC\BIN\TC.EXE
2. M File M file mi : File-> NewM file c: File-> Open
3. Ghi FileSave (F2) : Ghi tp mi ang son tho vo a Save as : Ghi tp ang son tho vo a theo tn
mi hoc e ln tp c
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
4/117
4Ngn ng lp trnh C - Smith.N Studio!
Chy mt chng trnh F9 : Bin dch
Ctrl F9 : Thc thi chng trnh Alt F5 : Xem kt qu
Thot khi C Thot tm thi v DOS : Dos Shell Thot hn khi C: File \ Quit ( Alt + X)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
5/117
5Ngn ng lp trnh C - Smith.N Studio!
II. Gii thiu ngn ng lp trnh C 1. Cc thnh phn ca NNLT C
Tp cc k t Ch ci: A .. Z, a .. z Ch s : 0..9
K hiu ton hc : + - * / = ( )K t gch ni: _ Cc k hiu c bit khc nh : . , ; : [ ] { } ? ! \ & | % # $,
T kho L nhng t c mt ngha hon ton xc nh
Asm, char, do, int, float, for, do, While, TnDng xc nh cc i lng khc nhau trong mt chng trnh Bt u bng ch ci hoc gch ni di cc i mc nh l 32
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
6/117
6Ngn ng lp trnh C - Smith.N Studio!
2. Cc kiu d liu c s trong C Kiu s k t (char) Kiu s nguyn (int) Kiu du phy ng (chnh xc n (float),chnh xc kp (double)) Kiu void
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
7/117
7Ngn ng lp trnh C - Smith.N Studio!
2.1 Kiu k t (char)Mt gi tr kiu k t (char) chim 1 byte trong bnh
v biu din mt k t thng qua bng m ASCII.V d
K t M ASCII
0 48
1 49
2 50 A 65
a 97
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
8/117
8Ngn ng lp trnh C - Smith.N Studio!
Trong ngn ng C cung cp hai kiu k t (char) lsigned char v unsigned char
Phm vi Sk t Kch th csigned char -128..127 1 byteunsigned char 0..255 1 byte
V d : char ch, ch1;
ch= a ; ch1= 97;
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
9/117
9Ngn ng lp trnh C - Smith.N Studio!
2.2 Kiu snguyn (int)Kiu snguyn trong C g m cc kiu sau:
Kiu Phm vi biu din Kch th c
int -32768 -> 32767 2 byte
Unsigned int 0 -> 65535 2 byte
-2147483648 - 4 byte
4 byte
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
10/117
10Ngn ng lp trnh C - Smith.N Studio!
2.3 Kiu s thc hay cn gi l kiu du phy ng
Kiu Phm vi biu din S ch sc ngha
Kchthc
float 3.4-38E -> 3.4E+38 7-8 4 byte
double 1.7E-308 -> 1.7E+308 15-16 8 byte
laongdouble 3.4E-4932 -> 1.1E+4932 17-18 10 byte
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
11/117
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
12/117
12Ngn ng lp trnh C - Smith.N Studio!
H ng s : l cc gi tr s xc nh, c th l kiunguyn hay kiu thc
Hng nguyn: Gi tr ch bao g m cc ch s, du +, - c lu tr theo kiu int. V d: 12,-12Nu gi tr v t qu min gi tr ca int hoc c k t l (hay L ) theo sau gi tr th lu theo kiu long int. Vd: 43L hoc 43l l hng nguyn lu theo kiu long int.Hng thc: Trong gi tr c du chm thp phn, hocghi d i dng s c m, v c lu theo kiu float,
double, long double. V d: 1.2 , 2.1E -3 (2.1E-3=0.0021) hoc 3.1e-2 (3.1e-2=0.031).
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
13/117
13Ngn ng lp trnh C - Smith.N Studio!
H ng k t Mt hng kiu k t c vit trong du ngoc n (' )nh 'A' hoc 'z'.Hng k t 'A' thc s ng ngha v i gi tr nguyn 65,l gi tr trong bng m ASCII ca ch hoa 'A' (Nh v y gi tr ca hng chnh l m ASCII ca n). i v i mt
vi hng k t c bit, ta cn s dng cch vit thmdu \ , nh '\t' t ng ng v i phm tab:Hng k t c th tham gia vo php ton nh mi s
nguyn khc: VD: '8' - '1'= 56-49=7.
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
14/117
14Ngn ng lp trnh C - Smith.N Studio!
Cch vit K t \ n Xung hng \ t Tab \ o nul tng ng vi gi tr
nguyn 0 trong bng m
ASCII \ b Backspacse \ r V u dng
\ f Sang tri \\ \ \
\
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
15/117
15Ngn ng lp trnh C - Smith.N Studio!
H ng chu i L chui k t nm trong cp du nhy kp " ". Cc k
t
ny cng c th
l cc k t
c biu di
n b
ng chui thot.
V d : "Turbo C", "Ngn ng C++ \n\r" M t h ng chu i c l u tr t n cng b ng m t k t Nul (\0), v d chu i "Turbo C" c l u tr trong b nh nh sau:
T u r b o C \0
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
16/117
16Ngn ng lp trnh C - Smith.N Studio!
Cch nh ngha hng s dng trong chng tr nhVi cc gi tr hng thng c dng trong mt
chng trnh ta nn nh ngha u chng tr nh(sau cc dng khai bo nhng th vin chun) theo cphp:
#define V d: #define PI 3.1415
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
17/117
17Ngn ng lp trnh C - Smith.N Studio!
3.2 Bin- Cch khai bo:Mi bin trong ch ng trnh u phi
c khai bo tr c khi s dng v i c php khai:Kiu d liu ;
L u : n u c nhi u tn bi n th gi a cc tn bi n ph i c d u , ngn cch V d : int a,b; float x;
- Kh i u cho cc binNgay trn dng khai bo ta c th gn cho bi n m t gi tr . Vi c lm ny g i l kh i u cho bi n.V d : int a,b=6,d=1;
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
18/117
18Ngn ng lp trnh C - Smith.N Studio!
Cch truy xut n a ch ca binMt shm ca C dng n a ch ca bin v d
nh hm scanf . nhn a ch ca bin dng tont: &V d : &tn_bi n - &a : a ch c a bi n a
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
19/117
19Ngn ng lp trnh C - Smith.N Studio!
3.3 Cu trc tng qut ca ch ng trnh C
Mt ch ng trnh C chun g m c cc thnh ph n sau:1. Cc ch th tin bin d ch2. Khai bo cc kiu d liu m i
3. Khai bo hng, khai bo bin4. Khai bo hm5. Ch ng trnh chnh
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
20/117
20Ngn ng lp trnh C - Smith.N Studio!
1. Ch th tin bin d ch: gip trnh bin dch thc hin mtscng vic tr c khi thc hin mt scng vic tr ckhi thc hin bin d ch chnh thc
VD: #include ;#include ;2. Khai bo kiu d liu m i: dung t kho typedef.
VD: typedef int songuyen;typedef float mang[10];
3. Khai bo hng v bin: khai bo cc hng sv bin dng trong ch ng trnh
4. Khai bo hm: khai bo cc hm t vit5. Ch ng trnh chnh: hm main l hm b t buc trong
ch ng trnh. Hm main c th tr v gi tr kiu nguyn(int) hoc khng tr v gi tr no (void)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
21/117
21Ngn ng lp trnh C - Smith.N Studio!
/* Chng trnh in ra dng ch Trung tm o to Tr c trn mn hnh */ # include void main () /* Ham chinh */ {
printf(" \ n Trung tm o to Tr c ");
/*xuong dong in chu Trung tm o to Tr c */ }
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
22/117
22Ngn ng lp trnh C - Smith.N Studio!
* Chng trnh tnh chu vi v din tch hnh trn, bit bn kl mt hng s c gi tr =3.1 */ # include /* khai bo th vin hm nhp xut chun # include /* khai bo th vin hm ton hc */ #define r 3.1void main (){
float cv,dt; /* khai bao bien chu vi va dien tich kieu so thuc */ cv=2*r*M_PI; /* tinh chu vi */ dt=M_PI*r*r; /* Tinh dien tich */ printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt);
/* In ket qua len man hinh */ getch(); /* Tam dung chuong trinh */ }
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
23/117
23Ngn ng lp trnh C - Smith.N Studio!
*Chng trnh ny minh ha cch va khai bo, va khu mt bin trong C */
#include void main(){
char ki_tu = 'a'; /* Khai bo/khi u k t. */ int so_nguyen = 15; /* Khai bo khi u s nguyn */ float so_thuc = 27.62; /* Khai bo/khi u s thc / printf("%c la mot ki tu.\n",ki_tu);printf("%d la mot so nguyen.\n",so_nguyen);printf("%f la mot so thuc.\n",so_thuc);}
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
24/117
24Ngn ng lp trnh C - Smith.N Studio!
Bi 2:Biu thc v cc php ton
I. Biu thcL s k t h p cc php ton v cc ton h ng din t mt cng thc ton hc no . Biu thc trong C g m c biu thc ton hc vbiu thc logic
Biu thc ton hc bao g m cc php ton s hc v cchng, cc bin, cc hmBiu thc logic bao g m cc bin, hng, hm v phpton logic (!: php ph nh, &&: php v, || : phphoc)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
25/117
25Ngn ng lp trnh C - Smith.N Studio!
II. Cc php tonPhp ton shcPhp ton ngha + Cng - Tr * Nhn/ Chia% Ly phn d Ch :
-Php ton chia 2 snguyn scht ct phn thpphn.-Php ton ly phn d khng p dng cho cc gitr float v double
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
26/117
26Ngn ng lp trnh C - Smith.N Studio!
II. Cc php tonPhp ton quan h Php ton ngha V d
> C ln hn khng? a>b
>= C ln hn hay bng khng?a>=b< C nh hn khng?a
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
27/117
27Ngn ng lp trnh C - Smith.N Studio!
II. Cc php ton
Php ton logicPhp ph nh ! Php v (AND) &&Php hoc (OR) ||
Cc php ton quan h c u tin nh hnso vi ! nhng ln hn so vi php && v ||
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
28/117
28Ngn ng lp trnh C - Smith.N Studio!
Cu lnhgn v biu thc C php ca lnh gn: = ; VD: x = -10;
m = y + 2 m;Trong C cho php ngi s dng c gp lnh gntheo c php :
a = b = c = 7;
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
29/117
29Ngn ng lp trnh C - Smith.N Studio!
Php ton tng gi m Ton t + + : dng tng gi tr ca cc bin nguyn hay bin thc
Ton t - - dng gim gi tr ca bin nguyn hay binthc
Ton t + + v -- u c th ng tr c hoc sau tonhng
VD: + + n ; n+ +; --m ; m--;Khi cc ton t + +, -- ng tr c ton hng th gi tr
ca ton hng c tng hoc gim tr c khi s dng vng c li nu ton t ++, -- ng sau ton hng th tonhng c tng hay gim sau khi thc hin
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
30/117
30Ngn ng lp trnh C - Smith.N Studio!
Chuyn i kiu gi tr Vic chuy n i kiu gi tr trong C th ng din ra t ng trong tr ng h p sau:
Trong biu thc c cc ton hng khc kiuKhi gn mt gi tr kiu ny cho mt gi tr kiu khcNgoi ra ta c thdng php chuy n kiu p kiu d
liu sang kiu khc (type) biu_th cCh :- Khi chuy n i kiu tng biu thc th i v i ton hng
c kiu thp h n s c nng thnh kiu cao h n tr ckhi htc hin php ton v k t qu thu c sc k t qu theo kiu cao h n
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
31/117
31Ngn ng lp trnh C - Smith.N Studio!
Kiu int v kiu long th int ----> long int v float th int ---> float
Float v double th float -----> doubleKiu int c thchuy n thnh float v ng c li
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
32/117
32Ngn ng lp trnh C - Smith.N Studio!
I. Hm xut nhp chun trong th vin Hm a kt qu ra mn hnh
C php: printf(, bt1, bt2,...btk); ngha: bt1,...btk : l k biu thc cn in kt qu ra mn hnh l mt hng xu k t bao gm 3 - K t diu khin vic xung dng tip theo \ n - K t hin th: l k t c in ra mn hnh - K t m t cch a ra mn hnh ca cc bin(
ca kiu). Mi biu thc c c t tng ng
Bi 3Cc hm vo ra d liu
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
33/117
33Ngn ng lp trnh C - Smith.N Studio!
c t kiu nguyn i v i biu thc c gi tr kiu s nguyn %[n]d . Trong
n l s nguyn xc nh rng ti thiu dnh cho gitr biu thc in ra mn hnhc t kiu s thc %[n][.m]f. Trong
m l sch s sau du phy, n l mt snguyn xc
nh rng ti thiu trn mn hnh cho gi tr ca biuthc:
VD:
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
34/117
34Ngn ng lp trnh C - Smith.N Studio!
%c : in mt k t c m ASCII tng ng
%[n]d : in mt s nguyn vi chiu di ti thiu l n %[n]ld: in mt s nguyn (long int) %[n.m]f : in mt s thc vi chiu di n v ly m s
phn
%s : in ra chui k t
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
35/117
35Ngn ng lp trnh C - Smith.N Studio!
Hm hin th mt xu k t ra mn hnhC php: int puts(char *s);
ngha:Hin th mt xu k t s ln mn hnh, sau khi inxong th con tr s c chuy n xung dng. Trong s lcon trkiu char tr t i vng cha xu k t Hm a mt k t ra mn hnhC php: int putchar(int ch); ngha: Hm sk t ch ra mn hnh v i ch l m ca l t cn in
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
36/117
36Ngn ng lp trnh C - Smith.N Studio!
Hm nhn d liu t bn phmC php: scanf(dt1dt2..dtk, &bi n1,
...&bink); ngha: dt1,...dtk l mt hng xu k t c t ca k bin&bin1, ..&bink: l a chca bin trong bnh
Hm nhn t bn phm mt xu k t C php: int *getchar(char *s); ngha:
Hm nhn dy k t t bn phm vo cho n khi g pk t \ n th dng lis l con tr tr t i vng nh scha xu v a nhn
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
37/117
37Ngn ng lp trnh C - Smith.N Studio!
Hm nhn mt k t t bn phmC php: getchar(void);
ngha:nhn k t c nhp t bn phm
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
38/117
38Ngn ng lp trnh C - Smith.N Studio!
II. Hm xut nhp chun trong th vin Hm getch() v getche
C php : int getch( void ) int getche( void ) - Hai hm trn ch nhn mt k t trc tip t b m bn
phm. Nu b m rng th ch . Khi mt phm c nth nhn ngay k t m khng cn phi enter nh cchm nhp t stdio.h
- Hm getche() cho hin k t ln mn hnh cn getch() th
khng - K t qu tr v ca hm l k t c n trn bn phm.
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
39/117
39Ngn ng lp trnh C - Smith.N Studio!
Xut k t c muC php : cprintf
ngha: in ra k t c mu c n nh b i hmtextcolor.Nhp k t c mu
C php: cscanf ngha: + N i dung nhp c mu c n nh b i hm
textcolor+ Nh n ni dung trc tip t b m bn phm. V
v y v i hm cscanf ta cng phi kh k t \n trong b m bng %*c hoc bng hm getch()
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
40/117
40Ngn ng lp trnh C - Smith.N Studio!
III.Mt shm thao tc trn mn hnhHm xa mn hnh: clrscr();
C tc dng xa ton bm n hnh v sau khi xa contr s v tr gc pha bn tri.Hm t t a con tr : gotoxy(int x, int y);
t con tr ti v tr x, y Hm t m u n n textbackground
void textbackground(int color);t mu nn Color l mt biu thc nguyn c gi
tr t 0 n 7 t ng ng v i mt trong 8 hng smu u tin ca bng mu v n bn.
h l
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
41/117
41Ngn ng lp trnh C - Smith.N Studio!
Hm t m u ch textcolor void textcolor(int newColor);
La chn mu k tm i newColor.Trong newColor lmt biu thc nguyn c gi tr t 0 n 15 t ng ng v imt trong cc hng smu ca bng mu v n bn.
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
42/117
42Ngn ng lp trnh C - Smith.N Studio!
Bi 4: Cu trc iu khin Cu lnh, khi lnh
Cu lnh: mi cu lnh thc hin mt cng vic vc kt thc bi du ; Khi lnh: l tp hp cc cu lnh bt u bng du{ v kt thc bng du }
I C i khi if
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
43/117
43Ngn ng lp trnh C - Smith.N Studio!
I. Cu trc i u khin if 1. Cu trc if dng 1
C php: if (bt) s ; ngha: bt l biu thc lgic, s l lnh n hoc lnhphc. nu bt nhn gi tr true th thc hin s, ng c li s c bqua
2. Cu trc if dng 2C php: if(bt) s;else s1 ;
ngha: bt l biu thc lgic, nu bt nhn gi tr true ththc hin s bqua s1, ng c li nu bt nhn gi tr flaseth thc hin s1 bqua s(s v s1 c th l lnh n hoclnh phc)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
44/117
44Ngn ng lp trnh C - Smith.N Studio!
Ch : trong C cho php s dng cc cu trc if lng nhau gii quy t bi ton
3. Bi tp- Nhp 2 s thc a, b t bn phm. Tm v in ra mn hnh
s l n nht v sb nht- Gii hph ng trnh bc nht hai n s
ax + by = cdx + ey = f
II Cu trc rnhnh switch
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
45/117
45Ngn ng lp trnh C - Smith.N Studio!
II. Cu trc rnhnh switch1. Cu trc tng qut
C php: switch (bt) { case n1 : s1
case n2 : s2 ....
case nk : sk [default : s(k+1 )]
}
h
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
46/117
46Ngn ng lp trnh C - Smith.N Studio!
ngha: Bt: l biu thc ton hc c gi tr kiu nguyn
Ni(i=1..k): l cc skiu nguyn, kiu hng k t, hocbiu thcSi(i=1..k): l cc lnh n hoc lnh phc[default : s(k+1 )] : l phn tu chn c thc hockhng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
47/117
47Ngn ng lp trnh C - Smith.N Studio!
Hot ng: lnh switch ph thuc vo gi tr ca biuthc bt vit sau switch, nu:
Gi tr bt = ni th th c hin cu lnh sau case ni;Khi gi tr biu thc khc tt c cc ni th thc hin culnh sau default nu c, hoc thot khi cu lnh switch.Khi ch ng trnh thc hin xong cu lnh ca case nino th n s thc hin lun cc lnh thuc case bnd i n m khng xt li iu kin ( do cc ni cn cxem nh cc nhn). V v y, ch ng trnh thot khilnh switch sau khi thc hin xong mt tr ng h p, tadng lnh break.
3 Bi
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
48/117
48Ngn ng lp trnh C - Smith.N Studio!
3. Bi tp- Vit ch ng trnh nhp vo t bn phm mt m s
nguyn v a ra nh ga trnh theo yu cu:1: trnh s cp2 : trnh trung cp3: trnh i hc
4: trnh Cao hc5: trnh Tin s Cc s khc: Khng xc nh
- Cho mt s t nhin, in ra mn hnh tn g i ca s ln mn hnh(Bi s12)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
49/117
H t
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
50/117
50Ngn ng lp trnh C - Smith.N Studio!
Hot ng: Bc 1: Thc hin bt1
Bc 2: Tnh ton, xc nh gi tr ca bt2 Bc 3: Nu bt2 c gi tr false th thot khi vng lp Ngc li bt2 c gi tr true th s c thc hin Bc 4: sau khi thc hin s thc hin bt3 v quay li bc 2
Nhn xt: ch c thc hin duy nht mt ln khi bt u
vng lp , v S c th c tnh ton v thc hin nhiu ln
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
51/117
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
52/117
52Ngn ng lp trnh C - Smith.N Studio!
2. Bi tp Vit ch ng trnh tnh tng ca n s u tin ca dy s
sau: S = 1+1/2+1/3+1/4+...+1/n. Vit ch ng trnh tm tt c cc snguyn c ba ch s sao cho tng tam tha ca ba ch shng trm, hng chc, hng n v sbng snguyn . V d:13+5 3+3 3=153
IV Cu lnh while
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
53/117
53Ngn ng lp trnh C - Smith.N Studio!
IV. Cu lnh while1. C php :
While (bt)S; ngha : bt l biu thc lgic, S l mt lnh hoc mt dy lnh
Hot ng - Xc nh gi tr ca bt. Nu gi tr ca bt= true(0) th
chuy n sang b c 2, ng c li th thot khi vng lp- Thc hin S sau quay v b c 1(Lnh S c th c
thc hin nhiu ln hoc khng c thc hin ln nonu bt =false ngay t u)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
54/117
54Ngn ng lp trnh C - Smith.N Studio!
Ch : trong cu lnh lp while ta c thdng cu lnhbreak thot khi vng lp theo mun
2. Bi tp :
- Nhp hai snguyn t bn phm, tm v in ra mn hnh c schung l n nht ca hai s
- Tm hnh ch nht c din tch l n nht khi bit chu vica n(bi s25)
V Cu lnh do while
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
55/117
55Ngn ng lp trnh C - Smith.N Studio!
V. Cu lnh do.. while1. C php
do S while (bt); ngha: S l mt cu lnh n hoc phc, bt l biuthc lgic
Hot ng:- (1) Thc hin lnh S- (2) Xc nh gi tr ca bt. Nu gi tr ca bt = true th
chuy n sang b c (1), ng c li th thot khi vng lp- Lnh S lun c thc hin t nht 1 ln trong cu lnh
Bi 5: D liu kiu mng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
56/117
56Ngn ng lp trnh C - Smith.N Studio!
Bi 5: D liu kiu mng 1. Khi nim:
Mng c hiu l mt tp hp cc gi tr ccng kiu d liu nm lin tip nhau trong bnh my tnh
Mng c coi nh mt bin mng v tnmng c t theo quy tc t tn binMng c nhng thnh phn sau:
Kiu d liu ca cc phn t trong mng Tn mng S chiu v kch thc ca mi chiu
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
57/117
57Ngn ng lp trnh C - Smith.N Studio!
2. Cch khai bo bin mng
VD: int A[10];//m ng 1 chiu A g m 10 phn t kiu snguyn
float B[2] [3];// M ng 2 chiu B g m 2 hng v 3 ct, cc phn t c kius thc
3 C h t h t t h t g
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
58/117
58Ngn ng lp trnh C - Smith.N Studio!
3. Cch tchc v truy xut n phn tmng Phn t ca mng c xc nh thng qua ch s. Ch sca phn t trong mng lun l mt snguynkhng v t qua kch th c ca mng Cc phn t ca mng c sp xp lin nhau trong b nh ca my tnh v ch cho php truy cp n a ch
trc tip ca phn t i v i mng mt chiu. Cchtruy cp theo a ch &tn_bin[i]
trong i l ch sca phn t VD: a= &a[0]
//Tn m ng ch t i a ch phn t u tin ca mng
4 Cch xut nhp d liu trn mng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
59/117
59Ngn ng lp trnh C - Smith.N Studio!
4. Cch xut nhp d liu trn mng - Nhp xut trc tip ng dng cho mng mt chiu v
mng hai chiu c phn t kiu int thng qua a ch - Nhp d liu cho mng
for( i=0;i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
60/117
60Ngn ng lp trnh C - Smith.N Studio!
- Nhp xut d liu gin tip thng qua mt bin trung gian i v i mng mt chiu v mng a chiufor(i=0;i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
61/117
61Ngn ng lp trnh C - Smith.N Studio!
Bi 6: Con tr 1. Khi nim con tr v a ch -
a ch: Da vo kiu d liu khi khai bo bin my s cp pht cho bin mt a ch lu tr bin trn vng nh . Mi bin c kiu khc nhau th c lu vocc a ch khc nhau
- Con tr l mt bin dng cha a ch. Mi loi ach th c loi con tr t ng ng. Tr c khi s dng bincon tr ta phi khai bo tr c khi s dng
- Khai bo: * ;- VD1: int x, y, *p, *c;
x, y l hai bin kiu nguyn, p, c l hai bin con trkiunguyn
VD2: float *t, *d ;
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
62/117
62Ngn ng lp trnh C - Smith.N Studio!
, ;//Khai bo bi n con tr t v d c kiu thc
Bin con tr c dng theo hai tr ng h p sau: Tn con trch n a ch ca bin c lu trong contr:
float a,*p,*q;
p=&a; /* l u a ch c a bi n a vo con tr p */q= p; /* l u a ch trong p vo con tr q*/
Dng khai bo ca con trch n gi tr lu ti vng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
63/117
63Ngn ng lp trnh C - Smith.N Studio!
Dng khai bo ca con trch n gi tr lu ti vng nh m con tr tr t i.VD: float x=5, y , z=20, *px, *pz;,*py;
px=& x; /* khi *px = x =5*/ pz=&z; /* *pz=z=20*/
khi ba bi u th c sau l t ng ng: y=3*x+z; *py=3*x+z; *py=3*(*px)+*pz;
2. Con trv mng mt chiu
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
64/117
64Ngn ng lp trnh C - Smith.N Studio!
2. Con tr v m ng mt chi uCc phn t ca mng c th c xc nh thng qua con tr. Ta c khai bo : float a[10];
//Khai bo m ng g m 10 phn t kiu thc Ta c tn m ng chnh l mt hng a ch tr t i
a ch
phn t
u tin c
a m
ng va t ng ng v i &a[0]
a+i t ng ng v i &a[i]
*(a+i) t ng ng v i a[i] V y
a[k] a[k+1]a[k-1]
pa pa +ipa - i
Cc cch vit a[i] *(a+i) *(p+i) p[i] l tng ng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
65/117
65Ngn ng lp trnh C - Smith.N Studio!
Cc cch vit a[i], *(a+i), *(p+i), p[i] l t ng ng nhau
VD: Nhp t bn phm cc phn t ca mng v tnhtng cc phn t
#include
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
66/117
66Ngn ng lp trnh C - Smith.N Studio!
#include#includevoid main(){ float a[5], s ; int i;
for(i=0;i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
67/117
67Ngn ng lp trnh C - Smith.N Studio!
3. Con tr vi mng nhiu chiu Php ton ly a ch ni chung khng dng c ivi cc thnh phn ca mng nhiu chiu (tr trnghp mng hai chiu cc s nguyn). tnh ton a ch ca thnh phn a[i][j] chng ta sdng cng thc sau :
(float *)a+i*n+j.a l mt hng con tr tr n cc dng ca mt ma trhai chiu, v vy
a tr n dng th nht a+1 tr n dng th hai a+2 tr n dng th ba
tnh ton c a ch ca phn t dng i ct j
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
68/117
68Ngn ng lp trnh C - Smith.N Studio!
tnh ton c a ch ca phn t dng i ct jchng ta phi dng php chuyn i kiu bt buc vi a: (float * )aa l con tr tr n thnh phn a[0][0] ca ma trn. a[i][j] s c a ch l (float *a) +i*n+j Xt VD nhp gi tr ca ma trn hai chiu:Tro2
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
69/117
4. Php ton trn con tr
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
70/117
70Ngn ng lp trnh C - Smith.N Studio!
4. Php ton trn con tr - Php gn: ch nn thc hin trn cc con tr c cng
kiu, khi thc hin trn con tr phi thc hin php pkiu: Vd: int x;
char *p;p=(char*)(&x);
- Php tng gim a ch VD: float x[30], *px; px=&x[10];// p l con tr thc tr ti phn t x[10]
px+i tr ti phn t x[10+i] px i tr ti phn t x[10-i]
- Php so snh: dng so snh cc con tr cng kiu, gi
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
71/117
71Ngn ng lp trnh C - Smith.N Studio!
- Php so snh: dng so snh cc con tr cng kiu, gis p1 v p2 l hai con tr kiu float th tn ti php sosnh
p1 < p2 // a ch p1 tr ti thp hn a ch p2 tr ti p1==p2
5. Con tr kiu void
L con tr c bit khng c kiu, n c th nhn bta ch no. Con tr kiu void thng dng lm i nhn bt k a ch no thng qua php p kiu trongthn hmCc php ton tng gim a ch, so snh khng dngc con tr kiu void
6 Mng con tr
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
72/117
72Ngn ng lp trnh C - Smith.N Studio!
6. Mng con tr Mng con tr l mt mng m mi phn t ca n ccha mt a ch no . Mng con tr c nhiu kiu,mi phn t ca mng kiu no th s cha a ch kitng ng vi n. Mng con tr c khai bo theo msau:
*[N] Khi gp khai bo mng con tr th my s cp pht Nkhong nh lin tip cho N phn t tng ng trongmng Ch : Mng con tr khng dng lu s liu, trckhi s dng mng con tr cn gn cho mi phn t mgi tr l a ch ca mt bin hoc ca mt phn ttrong mng
Bi 7: Hm v chng trnh
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
73/117
73Ngn ng lp trnh C - Smith.N Studio!
Bi 7: Hm v chng trnh 1. Khi nim
Chng trnh: Mt chng trnh C bao gm mt hocnhiu hm. Hm main() l thnh phn bt buc cachng trnh. Chng trnh bt u thc hin t culnh u tin ca hm main( ) cho n khi gp du }cui cng ca hm ny. Hm : L mt on chng tr nh c lp thc hin trnvn mt cng vic ri tr v mt gi tr cho chngtrnh gi n. c im ca hm:
L mt n v c lp ca chng tr nh.Khng cho php xy dng mt hm bn trong mthm khc .
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
74/117
74Ngn ng lp trnh C - Smith.N Studio!
2 Quy tc xy dng hm: Mt hm gm c cc thnh
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
75/117
75Ngn ng lp trnh C - Smith.N Studio!
2. Quy tc xy dng hm: Mt hm gm c cc thnh phn sau
- Nguyn mu ca hm:Bao gm < tn hm (ds cc tham s)>; C th c hoc khng khai bo nguyn mu ca hm,khi khng khai bo nguyn mu th b bin dch skim tra vic truyn tham s, gi tr tr v c ph hphay khng ri mi cho thc hin hm. Tt c nguyn mu ca cc hm c trong chng trnhnn t trc hm main().
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
76/117
Cu trc ca mt hm
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
77/117
77Ngn ng lp trnh C - Smith.N Studio!
(){ ;
;[return];
};
Ch :- i v i cc hm khng c kiu tr v ta c hm kiu void- Hm khng c i th dng kiu void khai bo i. VD
void bell(void){ int i;
for(i=0;i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
78/117
78Ngn ng lp trnh C - Smith.N Studio!
hm. ([ds tham s thc])
- Tham s thc phi bng tham s hnh thc - Kiu ca tham s thc phi ph hp vi kiu ca tham
s hnh thc
Hot ng ca hm khi c li gi hm Cp pht b nh cho tham s hnh thc v bin cc b Gn gi tr ca tham s thc cho tham s hnh thc
Thc hin cc lnh trong thn hm Khi gp cu lnh return hoc du hiu kt thc hm th b nh s xo cc tham s hnh thc v bin cc b sa thot khi hm quay v chng trnh gi hm
3. Cc tham s trong hm
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
79/117
79Ngn ng lp trnh C - Smith.N Studio!
3. Cc tham s trong hm3.1 Phn loi tham s theo cch s dng o Tham shnh thc: Cc tham sm ta ghi trong nguyn
mu hay ghi lc khai bo hm g i l tham shnh thc.o Tham s thc:Cc gi tr, bin m ta ghi sau tn hm khi g i
hm thc hin g i l tham s thc. Trong C, cc thams thc li chia ra lm hai loi:
Tham chiu: L cc tham s thc m ta truy n cho Hmd i dng con tr (dng a ch ). Tham chiu m i ghi nhnli c nhng k t qu v a tnh ton trong Hm khi Hmk t thc.
Tham tr : L cc tham s thc m ta truy n cho Hm d idng bin. Tham tr khng bo lu li nhng k t qu thay i ca n c tnh ton trong Hm khi Hm k t thc.
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
80/117
4 Hm c i con tr
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
81/117
81Ngn ng lp trnh C - Smith.N Studio!
4. Hm c i con tr i s ca hm l con trkiu int (float,double,. )th tham
s thc t ng ng phi l a ch ca bin kiu int (float,double,.). Khi a ch ca bin c truy n cho icon tr t ng ng.Khi mun bo lu li k t qu tnh ton c ca cc is trong hm s dng cho ch ng trnh g i hm c i s th chng ta phi khai bo i sca hm l thamchiu (con trhay dng a ch ).
VD:
Bi 8: Chui k t
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
82/117
82Ngn ng lp trnh C - Smith.N Studio!
Bi 8: Chui k t 1. Khi nim
Chui k t l mt dy cc k t t trong cp dunhy kp. Chui rng c k hiu bng hai du nhkp i lin nhau. Mt chui k t c cp pht mkhong nh cho mt mng kiu char cha cc k t
chui v cha thm k t ' \ 0' l k t kt thc chui. Mi k t ca chui c cha trong mt phn tmng. Chui k t l mt trng hp ring ca mnmt chiu khi mi thnh phn ca mng l k t Chui k t thng c khai bo theo khaibo theo haimu:
char ten_chuoi[] ; hoc char *ten_chuoi;
2. Cc thao tc trn chui
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
83/117
83Ngn ng lp trnh C - Smith.N Studio!
Trong C khng tn ti cc php ton so snh, gn nidung ca chui ny cho chui khc.
thc hin cc thao tc ny ta s dng mt th vicc hm chun l .Hm strlen: int strlen(char s[])Tr v di ca chui s, chnh l ch s ca k t NULL trong chui. Hm strcpy: strcpy(char dest[], char source[])Sao chp ni dung chui source vo chui dest.
Hm strchr: char *strchr(char s[], char c)Tm ln xut hin u tin ca k t c trong chui s, tv a ch ca k t ny.
Hm strncpy: strncpy(char dest[], char source[], int n)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
84/117
84Ngn ng lp trnh C - Smith.N Studio!
Hm strncpy: strncpy(char dest[], char source[], int n)Sao chp n k t trong chui source vo chui dest.Trong trng hp khng c n k t trong source th hm s in thm cc k t trng vo chui dest. Hm strcat : strcat(char ch1[], char ch2[]) Ni chui ch2 vo cui chui ch1. Sau li gi hm n di chui ch1 bng tng di ca c hai chui chv ch2 trc li gi hm. Hm strncat : strncat(char ch1[], char ch2[],int n)
Ni n k t u tin ca ch2 vo ch1
Hm strstr : char *strstr(char s1[], char s2[])
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
85/117
85Ngn ng lp trnh C - Smith.N Studio!
( )Tm kim chui s2 trong chui s1, Tr v a cca ln xut hin u tin ca s2 trong s1 hoc NULL khi khng tm thy. Hm strcmp : int strcmp(char ch1[], char ch2[])So snh hai chui ch1 v ch2. Nguyn tc sosnh theo kiu t in. Gi tr tr v:
= 0 nu chui ch1 bng chui ch2 > 0 nu chui ch1 ln hn chui ch2 < 0 nu chui ch1 nh hn chui ch2
VD: m s ln xut hin ca k t a trongmt xu k t cho trc
#include
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
86/117
86Ngn ng lp trnh C - Smith.N Studio!
#include#define HANG 128 void main(){ char xau[HANG]; int i,na;
clrscr();printf("\nNhap mot xau ky tu:");gets(xau);na=i=0; while(xau[i])
if (xau[i++]=='a') na++;printf("\nXau co %d chu a",na);getch();
return;}
3. Mng v chui k t
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
87/117
87Ngn ng lp trnh C - Smith.N Studio!
Mt dng s dng con tr c bit l vic s dng mmng cc bin con tr. Khai bo theo mu
type *pointer_array[size];VD: khai bo char *temp[10];s khai bo mt mng 10 con trchar c th c dng
khai bo mt mng lu tr a ch ca mi chuk t no . Bi tp:vit chng trnh nhp nhiu tn ngi vo t bn phm, sp xp li theo th t v in kt qu spxp ra.
+ Sp xp licc tn ny theo th t alphabet + In cc tn ra theo th t .
VD: xt mt mng cc con tr ptr array c
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
88/117
88Ngn ng lp trnh C - Smith.N Studio!
VD: xt mt mng cc con tr ptr_array cgn cc a ch ca cc bin int c gi tr v v t
bt k. Dng mt hm sp xp li cc a chny trong mng sao cho cc a ch ca cc b c xp trc a ch ca cc s ln hn. L d chng ta khng lm thay i v tr hocthay i cc gi tr ca cc bin nhng mng vging nh mt mng ch n cc gi tr spxp c th t.
Bi tp:
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
89/117
89Ngn ng lp trnh C - Smith.N Studio!
Bi tp:Vit chng trnh m s ln xut hin ca mt k ttrong mt xu k t Vit chng trnh nhp mt ch, xut ra ch nhiuln dng con tr
Bi 9: Cp pht v gii phng b nh ng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
90/117
90Ngn ng lp trnh C - Smith.N Studio!
9: Cp p t v g p g b g
1. Khi nim Bin ng:L cc binc to ra lc chy chng trnh, ty theo nhu cu. S bin ny hon ton khngc xc nh t trc. Cc bin ng khng c tn(vic t tn thc cht l gn cho n mt a ch xcnh).Cch to ra bin ng v truy nhp n bin ngc tin hnh nh sau
Vic to ra bin ng v xa n i ( thu hi li bnh) c thc hin nh cc hm nh malloc() vfree() c sn trong th vin stdlib.h
Vic truy nhp n bin ng c tin hnh nh ccbi t C bi t h h h
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
91/117
91Ngn ng lp trnh C - Smith.N Studio!
bin con tr. Cc bin con tr c nh ngha nh c bin tnh ( c khai bo ngay t u trong phn khai
bo bin) v c dng cha a ch cc bin ng VD1: int *p; /* Khai bo bin con tr p*/ p= (int *) malloc(100);/* To bin ng*/
on chng trnh trn s cp pht 100 bytes trong bnh v gn a ch khi b nh ny cho p VD2: cp pht b nh chnh xc cho 70 k t: /* Khai bo bin con tr kiu char */
char *cp; /* To bin ng */ cp=(char *) malloc(70);
2. Cp pht v gii phng b nh ng (cc hm thuc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
92/117
92Ngn ng lp trnh C - Smith.N Studio!
stdlib.h v alloc.h) 2.1 Cp pht b nh ng bng hm malloc( )
C php void *malloc(kiu _dl size) Chc nng: Hm malloc cp pht mt vng nh c kcthc l size.
size l mt gi tr kiu_dl (l mt kiu d liu nh sntrong th vin stdlib.h). Hm malloc tr v con tr kiu void cha a ch nhu ca vng nh c cp pht. Nu khng vng cp pht hm tr v gi trNULL , v vy phi kim tragi tr tr v khi s dng hm malloc.
2.2 Cp pht b nh ng bng hm calloc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
93/117
93Ngn ng lp trnh C - Smith.N Studio!
p p g gC php
(datatype *) calloc(n, sizeof(object));Hm calloc cp pht b nh ng cho cc kiu d liuTrong :(datatype *) l kiu con tr tr ti kiu d liu datatyp n l s lng object thuc kiu datatype cn cp pht bnh. datatype c th l kiu d liu c s hoc kiu d liu
2.3 Cp pht b nh ng bng hm relloc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
94/117
94Ngn ng lp trnh C - Smith.N Studio!
C php
(datatype *) realloc(buf _p, newsize);Hm c chc nng cp pht li b nh Trong : buf_p l con tr ang tr n vng nh c cp pht t trc. newsize l kch thc mi cn cp pht, c th ln honh hn.
2.4 Gii phng bnh bng hm free
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
95/117
95Ngn ng lp trnh C - Smith.N Studio!
C php
void free( void *prt)Hm free gii phng vng nh c tr n b i con tr ptr.Nu con trptr = NULL th hm free khng lm g c .
3. B nh HEAP v c ch to bin ng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
96/117
96Ngn ng lp trnh C - Smith.N Studio!
Cc bin ng do malloc to ra c C xp vo mtvng nh t do theo kiu xp chng v c gi lHEAP ( b nh cp pht ng). Ngn ng C qun lHEAP thng qua mt con tr ca HEAP l HEAPPTR. N lun tr vo byte t do u tin ca vng nh c
t do ca HEAP. Mi ln gi malloc(), con tr caHEAP c dch chuyn v pha nh ca vng nh do mt s byte tng ng vi kch thc ca bin mi to ra. Ngc li, mi khi gii phng b nh bin ng, b bin ng c thu hi
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
97/117
97Ngn ng lp trnh C - Smith.N Studio!
Bi 10: Kiu cu trc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
98/117
98Ngn ng lp trnh C - Smith.N Studio!
1. Kiu enum
Cu lnh khai bo kiu enum c thvit theobn cchenum tk {pt1,pt2,...} tb1,tb2,...;enum tk {pt1,pt2,...};enum {pt1,pt2,...} tb1,tb2,...;enum {pt1,pt2,...};
Trong : Tk l tn kiu enum (mt kiu d liu m i),pt1,pt2,... l tn cc phn t,tb1,tb2,... l tn bin kiu enum.
V d: khai bo kiu d liu lm vic vi cc ngyt t t th d ki kd bi d
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
99/117
99Ngn ng lp trnh C - Smith.N Studio!
trong tun ta c th dng kiu weekday v bin day nsau:
enum weekday{SUNDAY,MONDAY,TUESDAY,WEDSDAY,THURSDAY, FRIDAY, SATURDAY} day;Ch bin kiu enum thc cht l bin nguyn, n
c cp pht 2 byte b nh v n c th nhn mt gtr nguyn bt k.
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
100/117
trong :
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
101/117
101Ngn ng lp trnh C - Smith.N Studio!
struct l t kha ng tr c mt khai bo cu trc,tn _ c u _ trc l mt tn h p l c dng lm tn cu trc;[danh sch cc bi n c u trc] lit k cc bin c kiu cu trc
v a khai boVD:
struct hoc_sinh {char ho_ten[20];
float diem;
} hs, dshs[100];
2.3 C php nh ngha ki u d liu m i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
102/117
102Ngn ng lp trnh C - Smith.N Studio!
Ngn ng C cho php ta t li tn kiu d liu m i bng cu lnh:
typedef kiu_ _c tn_kiu_m i;trong :
ki u_ _c l ki u d li u m ta mu n i tn.tn_ki u_m i l tn m i m ta mu n t.
2.4 Nguyn tc truy cp n thnh ph n ca cu trc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
103/117
103Ngn ng lp trnh C - Smith.N Studio!
Cc thnh phn ca cu trc c truy nhp thng qua tn bin cu trc v tn thnh ph n.
tn_bi n_c u_trc.tn_thnh_ph n truy nhp n cc thnh ph n ca bin hs chng ta
vit nh sau:
hs.ho_ten hs.diem
Ch :Khng nn s d ng ton t & i v i cc thnh ph n
c u trc ( c bi t i v i cc thnh ph n khng nguyn) trong khi nh p d li u
2.5 Con tr cu trc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
104/117
104Ngn ng lp trnh C - Smith.N Studio!
Cch khai boMt bin cu trc cng l mt bin trong b nh, c tly a ch ca mt bin cu trc bng ton t ly a &. Gi tr tr li l a ch n trng u ca cu trc. C th khai bo mt bin con tr ch n mt cu trc
c th lu a ch ca mt bin cu trc no . C phpkhai bo mt bin con tr cu trc nh sau: struct tn_cu_trc *tn_con_tr;
VD: struct hoc_sinh *ptrhs;Vic truy xut n mt thnh phn ca cu trc thngqua mt con tr c thc hin bng php ton kp->
VD:
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
105/117
105Ngn ng lp trnh C - Smith.N Studio!
printf("\nHo va ten hoc sinh %s",ptrhs->ho_ten);
printf("\nDiem %6.3f",ptrhs->diem);kt qu thc hin hai cu lnh ny tng ng vi hcu lnh sau:
printf("\nHo va ten hoc sinh %s",hs.ho_ten);
printf("\nDiem %6.3f",hs.diem);Vic s dng con tr ch n cu trc thng c sdng truyn cu trc n cho mt hm
Mt ng dng khc ca con tr cu trc l dng xdng cc cu trc t tr nh: danh sch lin kt (cn gl danh sch mc ni).
2.6 Mng c cu trc
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
106/117
106Ngn ng lp trnh C - Smith.N Studio!
Mng m g m cc thnh ph n c kiu cu trc c g il mng cu trc. Khai bo mt mng cc cu trc honton t ng t nh i v i khai bo mt mng bnhth ng, ch c mt im khc l thay cho tn cc kiu d liu bnh th ng l mt tn kiu d liu cu trc.
V d v khai bo mt mng c cu trc:struct hoc_sinh dshs[100]; //hoc_sinh l ki u c u trc Vic s dng cc mng cu trc s lm cho vic x l mttp h p cc bin cu trc tr nn dnhn h n. Cc quy nh v mng cng c p dng i v i mng cc cutrc.
3. Cu trc t tr C t t ht t th h h l t h b
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
107/117
107Ngn ng lp trnh C - Smith.N Studio!
Cu trc c t nht mt thnh ph n l con trch n bnthn cu trc c g i l cu trc t tr.
V d struct h_sinh{char ho_ten[20];
float diem; }struct h_sinh *next ;/*con tr ch n h c sinh ti p theo trong danh sch*/
khai bo ny nh ngha mt cu trc t trc thdng qun l danh sch h tn hc sinh v im shc sinh.Danh sch ny ch truy cp c theo mt chiu
3.1 Danh sch lin k t: danh sch lin k t g m ccphn t mi phn t c hai vng chnh: vng
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
108/117
108Ngn ng lp trnh C - Smith.N Studio!
phn t, mi phn t c hai vng chnh: vng d liu danh sch v vng lin k t. Vng link t l mt hoc nhiu con trch n cc phnt tr c hoc sau phn t ang c xem xtty thuc vo yu cu ca cng vic c th
C php chung cho khai bo danh sch lin k ts dng kiu d liu con trnh sau:
typedef struct kiu_d _liu{}t_kiu_d _liu
Bi 11: Kiu tp tin(File)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
109/117
109Ngn ng lp trnh C - Smith.N Studio!
File l loi d liu c th ghi ln a dng nhiuln.Trong C ch c mt loi File, nhng cu trc ca miFile c thkhc nhau. Cu trc ny c hnh thnh khita ghi d liu ln File, n ph thuc vo hm m ta dng ghi d liu ln a.
Trong C c hai loi hm thao tc trn file:Dng nhng hm cp thp lm vic v i tp tin thng quamt shiu tp tin (file handle).Dng nhng hm c xy dng t nhng hm cp thp,d s dng h n. C cc hm phc v cho vic c ghitrn tng loi d liu (s, chui, k t, cu trc...). Cchm ny lm vic v i tp tin thng qua mt con tr tptin. Con tr ny c xc nh khi ta m tp tin.
1. Cc kiu xut nhp d liu trong tp tin1 1 X h ki h h
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
110/117
110Ngn ng lp trnh C - Smith.N Studio!
1.1 Xut nhp kiu nh phnD liu ghi ln tp tin khng b thay i v khi ng tptin th m k t thc tp tin s c ghi ln a l-1.
1.2 Xut nhp kiu vn bnCh khc kiu nhp xut nh phn khi x l k t xung
dng v khi ta ng tp tin th m k t thc tp tin s c ghi ln a l 26.Khi ghi mt k t chuy n dng ln a (m 10) sghi
thnh 2 k t
m 13 v m 10. Khi c nu g p hai k t lin tip l m 10 v m 13sgom li thnh mt k t l m 10.
Ch :T ti khi hi l di d h hi di
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
111/117
111Ngn ng lp trnh C - Smith.N Studio!
Tp tin khi ghi ln a d i dng no th phi c d idng . Nu khng vic x l skhng chnh xc. Trong C c hm dng nhp xut cho c hai kiu, chm ch dng nhp xut cho mt kiu no .
2. Cc hm thao tc trn tp tin
Cc hm sau y dng chung cho c hai kiu nh phn v vn bn.2.1 M file
FILE *fopen(const char *tn_tp_tin,const char*kiu);
M mt tp tin. Nu thnh cng tr v k t qu l con tr FILE i fil li i
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
112/117
112Ngn ng lp trnh C - Smith.N Studio!
FILE t ng ng v i file v a m , ng c li tr v gi tr NULL.Sau khi m file phi kim tra xem thao tc m tptin thnh cng hay khng.* tn tp tin: L mt hng chui, hoc mt con trch n vng nh cha tn tp tin.
* kiu: l hng chui cho bit kiu truy nhp:
2.2 ng file int fclose(FILE *f)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
113/117
113Ngn ng lp trnh C - Smith.N Studio!
int fclose(FILE f)ng tp tin c ch n b i con tr f. Nu thnh cng
th gi tr ca hm = 0 ng c li c gi tr EOF. Sau khing con tr f skhng cn tr n file tr c na2.3 Lm sch vng m
int fflush(FILE *f)Lm sch vng m ca tp tin c ch n b i con tr f.Nu thnh cng cho gi tr 0, ng c li cho gi tr EOF.
int flushalll(void)Lm sch vng m ca tt c cc tp tin ang m . Nuthnh cng gi tr ca hm bng s tp tin ang m ,ng c li cho gi tr EOF
2.4 Xo tp tini li k( h * i )
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
114/117
114Ngn ng lp trnh C
- Smith.N Studio!
int unlink(const char *tn_tp_tin)Xa mt tp tin trn a. Nu thnh cng gi tr ca hmbng 0 , ng c li cho gi tr EOF
2.5 i tn tp tinint rename(const char *tn_c,const char *tn_m i)
i mt tp tin trn a. Nu thnh cng gi tr ca hmbng 0 , ng c li cho gi tr EOF
2.6 Kim tra k t thc tp tin
int feof(FILE *f)Cho gi tr khc khng nu cui tp tin, ng c li =0
3. Xut nhp d liu cho file3 1 Nhp xut k t : (file kiu nh phn v vn bn)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
115/117
115Ngn ng lp trnh C
- Smith.N Studio!
3.1 Nhp xut k t : (file kiu nh phn v vn bn) Ghi k t ln tp tin:
int putc(int ch, FILE *f)int fputc(int ch, FILE *f)Ghi ln file f k t c m = ch % 256 N u thnh cng k t qu = m ca k t ghi, ng c li =EOF (-1)
Trong tr ng h p ghi theo vn bn th khi g p m 10 s ghi thnh 13 v 10c k t t tp tin:
int getc( FILE *f)int fgetc( FILE *f)c mt k t t file f . Nu thnh cng k t qu = mca k t c c, ng c li = -1
3.2 Nhp xut chui: (Dng cho kiu vn b n)Ghi mt chui:
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
116/117
116Ngn ng lp trnh C
- Smith.N Studio!
Ghi mt chui: int fputs(const char *s, FILE *f)
Ghi mt chui c ch t i b i con tr s vo file f.K t qu= k t cui c ghi nu thnh cng, ng cli =EOFc mt chui: char *fgets(const char *s, int n, FILE *f)c mt chui t File f v a vo vng nh do s tr n.
Vic c k t thc khi c c n-1 k t , hoc g pk t xung dng , hoc g p k t k t thc File.Nu vic c c li k t qu ca hm =NULL.
3.3 c ghi d liu theo khun dng: (Dng cho kiu b n)
8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio
117/117
vn b n)Ghi d liu theo khun dng: int fprintf(FILE *f , const char * c t,....)... l danh sch cc i s t ng ng v i cc c t.S dng ging nh hm printf, d liu s c ghi ln file.c d liu theo khun dng: fscanf(FILE *f , const char * c t,....)... l danh sch cc i s t ng ng v i cc c t.S dng ging nh hm scanf, d liu s c c t Filef ri a vo cc i s t ng ng.
Recommended