Download - Lap Trinh Can Ban
-
8/14/2019 Lap Trinh Can Ban
1/290
Lp Trnh Cn Bn
Tng Quan
-
8/14/2019 Lap Trinh Can Ban
2/290
Mc ch Yu CuKhi nim v ngn ng lp trnhKhi nim v kiu d liuKiu d liu c cu trc (cu trc d liu)Khi nim v gii thutNgn ng biu din gii thutNgn ng s (lu ), s dng lu biu dincc gii thutTng quan v Ngn ng lp trnh C
Cc kiu d liu trong CCc lnh c cu trcCch thit k v s dng cc hm trong CMt s cu trc d liu trong C
-
8/14/2019 Lap Trinh Can Ban
3/290
-
8/14/2019 Lap Trinh Can Ban
4/290
LP TRNH CN BN
Phn 1GII THIU V CU TRC D
LIU V GII THUTP.D.Nghip
-
8/14/2019 Lap Trinh Can Ban
5/290
Ni dung chngT bi ton n chng trnhGii thut
Khi nim gii thut
Cc c trng ca gii thut Ngn ng biu din gii thut Mt s gii thut c bnCc cu trc suy lun c bn ca gii thut T gii thut n chng trnh
Kiu d liuKhi nim v ngn ng lp trnhChng trnh dch
-
8/14/2019 Lap Trinh Can Ban
6/290
T Bi Ton n Chng Trnh
Cc bc gii bi ton bng my tnhM t cc bc gii bi tonV s x lVit chng trnh x l bng ngn ng giChn ngn ng lp trnh v chuyn chng trnht ngn ng gi sang ngn ng lp trnh
Thc hin chng trnh: nhp vo cc tham s,nhn kt qu
-
8/14/2019 Lap Trinh Can Ban
7/290
Gii ThutKhi nim gii thutCc c trng ca gii thut
Ngn ng biu din gii thutMt s gii thut c bnCc cu trc suy lun c bn ca gii thut
T gii thut n chng trnh
-
8/14/2019 Lap Trinh Can Ban
8/290
Khi Nim Gii ThutV d:Hon i cht lng trong 2 bnh A (ncmm) v B (ru):
Yu cu phi c thm mt bnh th ba gi l bnh C.
Bc 1: ru t bnh A sang bnh C.Bc 2: nc mm t bnh B sang bnh A.Bc 3: ru t bnh C sang bnh B.
Gii thut l mt dy cc thao tc trn nhng d liu vo sao cho sau mt hu hn bc ta thu c kt qu ca bi ton .
-
8/14/2019 Lap Trinh Can Ban
9/290
Cc c Trng Ca Gii ThutTnh kt thc
S bc l hu hnTnh xc nh
My phi thc hin c Cho cng kt qu trn cc my khc nhau
Tnh ph dng
Tnh hiu quThi gianTi nguyn my
-
8/14/2019 Lap Trinh Can Ban
10/290
Ngn Ng Biu Din GiiThut
Ngn ng t nhinNgn ng s
Ngn ng gi
-
8/14/2019 Lap Trinh Can Ban
11/290
Ngn Ng T NhinL ngn ng ca chng taV d:Gii thut gii phng trnh bc nhtax+b=0.
Bc 1: Nhn gi tr ca cc tham s a, b.
Bc 2: Xt gi tr caa xem c bng 0 hay khng?Nu a=0 th lm bc 3, nu a khc khng th lm bc 4.
Bc 3: (a bng 0) Nu b bng 0 => pt v s nghim.Nu b khc 0 => pt v nghim.
Bc 4: ( a khc 0) Ta kt lun phng trnh cnghim x=-b/a.
-
8/14/2019 Lap Trinh Can Ban
12/290
Ngn Ng S (1)M t gii thut bng cc s hnh khi c(quy c trc)
-
8/14/2019 Lap Trinh Can Ban
13/290
Ngn Ng S (2)V d:Dng lu biu din gii thut tm UCLNnh sau:
-
8/14/2019 Lap Trinh Can Ban
14/290
-
8/14/2019 Lap Trinh Can Ban
15/290
Mt S Gii Thut C Bn (1)V d 1:Yu cu:
Nhp vo 1 dy n shng a1, a2, .., an
Tnh tng S:S= a1 + a2 + a3 + ... + anIn S ra mn hnh
-
8/14/2019 Lap Trinh Can Ban
16/290
Mt S Gii Thut C Bn (2)V d 2:Yu cu:
Nhp vo 2 s a v b l2 h s ca pt: ax+b=0
Cho bit nghim caphng trnh.
-
8/14/2019 Lap Trinh Can Ban
17/290
Cc Cu Trc Suy Lun C BnCa Gii Thut (1)
Gii thut c thit k theo3 cu trc suy lun c bn:
Tun t (Sequential) :Cc cng vic c thc hin tun t, cng vic ny ni tipcng vic kia.
Cu trc la chn (Selection)La chn mt cng vic thc hin cn c vo mt iu kin
no Cu trc 1 : Nu < iu kin> (ng) th thc hin Cu trc 2 : Nu < iu kin> (ng) th thc hin ,ngc li (iu kin sai) th thc hin Cu trc 3 : Trng hp < i> thc hin
-
8/14/2019 Lap Trinh Can Ban
18/290
Cc Cu Trc Suy Lun C BnCa Gii Thut (2)
Cu trc lp (Repeating)Lp lithc hin mt cng vickhng hoc nhiuln cn c vo mt iu kin no .C 2 dng nh sau:
Lp vi s ln xc nh Lp vi s ln khng xc nh
-
8/14/2019 Lap Trinh Can Ban
19/290
T Gii Thut n ChngTrnh
C 2 u l tp cc ch th (instruction) lmth no gii quyt 1 cng vic (task).Gii thut
Ni chuyn vi con ngi, d hiu.Dng ngn ng n gin (English) khng vit bng m.
Chng trnhNi chuyn vi my tnh.C th c xem nh 1 din t hnh thc (formal expression) ca 1 gii thut.
-
8/14/2019 Lap Trinh Can Ban
20/290
Kiu D LiuV d:
int x,y;float r=3.25;
Kiu d liu l mt tp hp cc gi tr c cng mt tnh cht v tp hp cc php ton thao tc trn cc gi tr .C 2 loi
Kiu d liu s cpKiu d liu c cu trc
-
8/14/2019 Lap Trinh Can Ban
21/290
Kiu D Liu S CpKiu d liu s cp l kiu d liu m gi tr ca n l n nht.
V d: Kiuint trong Cl kiu s cpgm cc s nguyn t -32768..32767
v cc php ton: +, -, *, /, %
-
8/14/2019 Lap Trinh Can Ban
22/290
Kiu D Liu C Cu TrcKiu d liu c cu trc l kiu d liu mcc gi tr ca n l s kt hp ca cc gi tr khc.
V d : Kiu chui k t trong C.l kiu c cu trc.V d: char *chuoi = Chao cac ban!;
-
8/14/2019 Lap Trinh Can Ban
23/290
-
8/14/2019 Lap Trinh Can Ban
24/290
Khi Nim V Ngn Ng LpTrnh
Ngn ng lp trnh l mt ngn ng dng vit chng trnh cho my tnhTa c th chia ngn ng lp trnh thnh ccloi sau:
Ngn ng my Hp ng Ngn ng cp cao
-
8/14/2019 Lap Trinh Can Ban
25/290
Ngn Ng My (machinelanguage)
L cc ch th di dngnh phn, can thip trctip vo trong cc mchin t.C th c thc hinngay khng cn quabc trung gian no.Tuy nhin chng trnh
vit bng ngn ng myd sai st, cng knh vkh c, kh hiuv tonnhng con s 0 v 1.
3
Machine Language
10100110 01110110
00100110 00000000
11111010 11111010
01001110 10100110
11100110 10010110
11001110 00101110
10100110 01001110
11111010 01100110
01001110 10000110
etc...
-
8/14/2019 Lap Trinh Can Ban
26/290
Hp Ng (Assembly language)Bao gm tn cc cu lnh vquy tc vitcc cu lnh .Tn cc cu lnh bao gm haiphn:
Phn m lnh (English) ch php ton cn thc hinPhn a ch cha ton hng ca php ton .
my thc hin c mt chng trnh vit bng hp ng th chng trnh phi c dch sang ngn ng my . Cng c thc hin vic dch c gi l Assembler .
Assembly Language
MOV AL,a; chuyn gi tr a vo thanh ghi
; AL ADD AL,b ; Cng gi tr ca thanh ghi AL; vi gi tr b
-
8/14/2019 Lap Trinh Can Ban
27/290
Ngn Ng Cp Cao (High level language )
Rt gn vi ngn ng con ngi.
Mt chng trnh vit bng ngnng cp cao c gi l chngtrnh ngun(source programs).
my tnh "hiu" v thc hinc cc lnh trong chng trnhngun th phi c mtchngtrnh dch dch chng trnhngun thnh dng chng trnh c kh nng thc thi.
-
8/14/2019 Lap Trinh Can Ban
28/290
Chng Trnh Dch c dng chuyn mtchng trnhngun sang chng trnh ch.C 2 dng:
Thng dch (interpreter):Dch tng lnh mt, dch ti u thc hin ti .V d: ngn ng LISP.
Bin dch (compiler):Dch ton b chng trnh ngun thnh chng trnhch ri sau mi thc hin.V d: Pascal, C...
-
8/14/2019 Lap Trinh Can Ban
29/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
30/290
30
LP TRNH CN BN
Phn 2 - Chng 1GII THIU V NGN NG C& MI TRNG TURBO C 3.0
PDNghip
-
8/14/2019 Lap Trinh Can Ban
31/290
Ni dung
Tng quan v ngn ng lp trnh CLch sNhng c im ca C
Mi trng lp trnh Turbo C
-
8/14/2019 Lap Trinh Can Ban
32/290
Lch S (1)Ngn ng C c thit k bi Dennis Ritchiephng th nghim Bell vo u nhng nm1970.S pht trin ca C da trn cc ngn ng c:
ALGOL 60 (1960),CPL (Cambridge, 1963),BCPL (Martin Richard, 1967),B (Ken Thompson, 1970)
C l ngn ng lp trnh cp cao , c s dng rtph bin lp trnh h thng cng vi Assembler v pht trin cc ng dng, d rng ang c schuyn i sang dng C++.
90% ca UNIX c vit bng C
-
8/14/2019 Lap Trinh Can Ban
33/290
Lch S (2)
DennisRitchie(tri)vKen Thompson trc h thngPDP-11 vi 2text-terminal(1972)
-
8/14/2019 Lap Trinh Can Ban
34/290
Lch S (3)Nm 1978, DennisRitchiev Brian Kernighan xut bn 1
quyn sch m t ngnng C.
Dennis Ritchie (tri) v Kernighan
-
8/14/2019 Lap Trinh Can Ban
35/290
Lch S (4)C c chun ha vo nm 1989 bi ANSI(American National Standards Institute),c bit nh ANSI C. c chun ha ISO (International standard) nm 1990 (chun ny cng c ANSI chpnhn v c bit nh C89)
c cp nht nm 1995 (C95 ) v 1999(C99).
-
8/14/2019 Lap Trinh Can Ban
36/290
Nhng c im ca C (1)Tnh c ng (compact) :
C ch c 32 t kha chun v40 ton t chun.
Tnh cu trc (structured) : C c mt tp hp nhng ch th lp trnh:cu trc lachn, lp, n gin d hiu.
Tnh tng thch (compatible) : C c b tin x lvCc th vin chun v cng phong phNn khi chuyn t my tnh ny sang my tnh khc ccchng trnh vit bng C vn hon ton tng thch.
-
8/14/2019 Lap Trinh Can Ban
37/290
Nhng c im ca C (2)Tnh linh ng (flexible) :
C php rt uyn chuyn, chp nhn nhiu cch th hinC th thu gn kch thc ca m lnh
Lm chng trnh chy nhanh hnBin dch (compile) :
C cho php bin dch nhiu tp tin chng trnh ring rthnh cc tp tin i tng (object)v
Lin kt (link) cc i tng li vi nhau thnh mtchng trnh c th thc thi c (executable) thng nht
-
8/14/2019 Lap Trinh Can Ban
38/290
Mi trng lp trnh Turbo CTurbo C do hng Borlandcung cp.C cc chc nng: son tho chng trnh,dch, thc thi chng trnh, Phin bn c s dng y l Turbo C3.0
-
8/14/2019 Lap Trinh Can Ban
39/290
Gi Turbo C
-
8/14/2019 Lap Trinh Can Ban
40/290
Son tho chng trnh mi Vo menu File ->New
G chng trnh vo
#include
#includeint main (){
char ten[50];printf(Xin cho biet ten cua ban !);scanf(%s,ten);printf(Xin chao ban %s,ten);getch();return 0;
}
Ghi h h
-
8/14/2019 Lap Trinh Can Ban
41/290
Ghi chng trnh ang sontho vo a
S dng File->Save hoc g phm F2Lnh Save As lu chng trnh vi tn khc
Tn hin ti (tnc)
Tn mi ( k ctn th mc)
-
8/14/2019 Lap Trinh Can Ban
42/290
Qui tc t tn tp tin (file)Theo quy tc t tn tp tin ca DOS.Tn ca tp tin gm 2 phn:phn tn v phn m rng.
Phn tn:Bt u l 1 k t t a..z (khng phn bit hoa thng).Theo sau c th l cc k t t a..z, cc k s t 0..9 hay dugch di (_), phn ny di ti a l 8 k t.
Phn m rng:Di ti a 3 k t.
V d:Tn ng: CHAO.C, baitap2.c, chao_ban.cTn sai: 1CHAO.C, chao+ban.c
Th hi h h M
-
8/14/2019 Lap Trinh Can Ban
43/290
Thc hin chng trnh + Mmt chng trnh+ Thot
Thc hin chng trnhNhn Ctrl-F9hoc vo menuRun->Run
M mt chng trnh ctrn aVo menu File->Openhocnhn F3
Thot khi Turbo CVo menu File->Exithocnhn Alt-X
-
8/14/2019 Lap Trinh Can Ban
44/290
Cc lnh trn menu OptionDirectories:
Include directories: chacc tp tin ta mun a vochng trnh (file .h trongdng #include).
Library directories: chacc tp tin th vin (file .lib)Output directory: chacc tp tin i tng .objv .exe sau khi bin dchchng trnh.
Source directories: chacc tp tin ngun (.obj v.lib).
Environment: dng thit lp mi trng lmvic.
-
8/14/2019 Lap Trinh Can Ban
45/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
46/290
LP TRNH CN BN
Phn 2 - Chng 2CC THNH PHN C BN
CA NGN NG CP.D.Nghip
-
8/14/2019 Lap Trinh Can Ban
47/290
Ni dung chng nyB ch vit trong CCc t kha
Cp du ghi ch thchCc kiu d liu s cp chunTn v hng
Bin v biu thcCu trc ca mt chng trnh C
-
8/14/2019 Lap Trinh Can Ban
48/290
B ch vit trong CB ch vit trong ngn ng C bao gm cck t sau:
26 ch ci latinh ln A,B,C...Z
26 ch ci latinh nh a,b,c ...z.10 ch s thp phn 0,1,2...9.Cc k hiu ton hc: +, -, *, /, =, , (, )Cc k hiu c bit: :. , ; " ' _ @ # $ ! ^ [ ] { } ...Du cch hay khong trng.
Phn bit ch in hoa v in thng
-
8/14/2019 Lap Trinh Can Ban
49/290
Cc t kha trong CT kha l cc t dnh ring ca C.Ta khng c dng t kha t cho cc tnca ring mnh.
-
8/14/2019 Lap Trinh Can Ban
50/290
Cp du ch thch (comment)
Khi bin dch cc phn ch thch b b quaDng /* v */: ch thch di nhiu dngDng //: ch thch ch 1 dng
#include #includeint main (){
char ten[50]; /* khai bao bien tenkieu char 50 ky tu */
printf(Xin cho biet ten cua ban !);scanf(%s,ten); /*Doc vao 1 chuoi la ten ban*/printf(Xin chao ban %s\n ,ten);//Dung chuong trinh, cho go phimgetch();return 0;
}
C ki d li h
-
8/14/2019 Lap Trinh Can Ban
51/290
Cc kiu d liu s cp chuntrong C
Kiu s nguyn (integer)Kiu s thc (real)
-
8/14/2019 Lap Trinh Can Ban
52/290
Kiu s nguyn c dng lu cc gi tr nguyn hay cn gil kiu m c.
Kiu s nguyn 1 byte (8 bits)
Kiu s nguyn 2 bytes (16 bits)
Kiu s nguyn 4 byte (32 bits)
-
8/14/2019 Lap Trinh Can Ban
53/290
Kiu s thc c dng lu cc s thc hay cc s c duchm thp phn
KiuvoidMang ngha l kiu rng khng cha gi tr g cV d: voidmain(){
.}
-
8/14/2019 Lap Trinh Can Ban
54/290
Dng sizeof()Kch thc 1 kiu c th c xc nh lcchy chng trnh (runtime), dng sizeof:
V d: sizeof(double) =>8(byte)sizeof(long double)=>10(byte)
-
8/14/2019 Lap Trinh Can Ban
55/290
Kiu enum (1)enum gn ging vi tin x l#define.N cho php ta nh ngha 1 danh sch cc b danh (aliase) trnh by cc s nguyn.V d:
#define MON 1#define TUE 2#define WED 3
c th dng enum:
enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun}days; u im ca enum so vi #define l n c phmvi (scope), ngha l 1 bin ch c tc dng trongkhi (block) n c khai bo.
-
8/14/2019 Lap Trinh Can Ban
56/290
Kiu enum (2)
-
8/14/2019 Lap Trinh Can Ban
57/290
Kiu enum (3)
-
8/14/2019 Lap Trinh Can Ban
58/290
Tn v hng trong CTn (identifier)
c dng t cho chng trnh, hng, kiu,bin, chng trnh con, ...C 2 loi:
Tn chun : l tn do C t sn nh tn kiu: int,char, float,; tn hm: sin, cos...Tn do ngi lp trnh t t.
-
8/14/2019 Lap Trinh Can Ban
59/290
Ch khi t tn
-
8/14/2019 Lap Trinh Can Ban
60/290
Tn do ngi lp trnh t tV d:
Tn t hp l: Chieu_dai, Chieu_Rong, Chu_ViTn khng hp l:Do Dai, 12A2
Phi tun th quy tc:S dng b ch ci, ch s v du gch di (_)Bt u bng mt ch ci hoc du gch di.Khng c khong trng gia tn.Khng c trng vi t kha.
di ti a ca tn l 32 k t, tuy nhin cn t sao cho rrng, d nhn bit v d nh.Khng cm vic t tn trng vi tn chun nhng khi ngha ca tn chun khng cn gi tr na.
-
8/14/2019 Lap Trinh Can Ban
61/290
Hng (Constant) L i lng khng itrong sut qu trnh thc thichng trnh
=> khng th gn lI gi tr cho hng
Hng c th l:1 con s1 k t1 chui k t
-
8/14/2019 Lap Trinh Can Ban
62/290
Hng s thc Gi tr kiu:float, double, long double2 cch th hin
Cch 1 : vit thng thng
V d:123.34 -223.333 3.00 -56.0Cch 2 : vit theo s m hay s khoa hc
Mt s thc c tch lm 2 phn (phn cchbi e/E)
Phn gi tr: nh cch 1Phn m: l mt s nguyn
V d:1234.56e-3 = 1.23456 (l s 1234.56*10-3)
-123.45E4 = -1234500 ( l -123.45*104)
-
8/14/2019 Lap Trinh Can Ban
63/290
Hng s nguyn (1)Hng s nguyn 2 byte (int) hthp phn
S dng 10 k s 0..9V d:
123 (mt trm hai mi ba)
-242 (tr hai trm bn mi hai)Hng s nguyn 2 byte (int) hbt phnS dng 8 k s 0..7Cch biu din:0S bt phn : 0dndn-1dn-2d1d0 ( di c gi tr t 0..7)
=> gi tr:
V d:020=2*81 + 0*80 =(16)10
=
n
i
i
id
0
8*
-
8/14/2019 Lap Trinh Can Ban
64/290
Hng s nguyn (2)Hng s nguyn 2 byte (int) hthp lc phn
L kiu s nguyn dng:10 k s 0..9 v6 k t A, B, C, D, E ,F
Cch biu din:0xS thp lc phn : 0xd ndn-1dn-2d1d0
=> Gi tr thp phn= V d:
0x345=3*162 + 4*161 + 5*160 = (837)10 0x2A9= 2*162 + 10*161 + 9*160= (681)10
=
n
i
i
id
0
16*
-
8/14/2019 Lap Trinh Can Ban
65/290
Hng s nguyn (3)V d: Kt qu ca chng trnh sau l gi?
-
8/14/2019 Lap Trinh Can Ban
66/290
Hng s nguyn (4)Hng s nguyn 4 byte (long)
c biu din nh s int trong h thp phnnhng km theo k t l hoc L.
V d: 45345L hay 45345l hay 45345
-
8/14/2019 Lap Trinh Can Ban
67/290
Hng k t (char)V d : a, A, 0, 9L 1 k t c vit trongcp du nhy n ().Mi mt k t tng ngvi 1 gi tr trong bng mASCII.Hng k t cng c xemnh tr s nguyn.Chng ta c th thc hincc php ton s hc trn 2
k t (dng gi tr ASCII cachng)ASCII= American StandardCode for InformationInterchange
-
8/14/2019 Lap Trinh Can Ban
68/290
Hng chui k tV d: Ngon ngu lap trinh CL 1 chui hay 1 xu k t c t trong cp du nhykp ().
Ch : : chui rng - khng c ni dungKhi lu tr trong b nh, mt chui c kt thc bng k tNULL (\0: m Ascii l 0).
biu din k t c bit bn trong chui ta phi thm du \ phatrc.
V d: VitI\m a student cho Im a student VitDay la ky tu \dac biet\ cho Day la ky tu dac biet
Bin v Biu thc (variable
-
8/14/2019 Lap Trinh Can Ban
69/290
Bin v Biu thc (variableand expression)
Bin dng cha d liu trong qu trnh thc hinchng trnh.Gi tr ca bin c th b thay i.C php khai bo bin:
Danh sch cc tn bin cch nhau bi du phy ;
Khi to gi tr cho bin lc
-
8/14/2019 Lap Trinh Can Ban
70/290
Khi to gi tr cho bin lckhai bo
V d:
Cch vit gi tr cho bit lun kiu ca n:
Ch : 8864L c kiulong, cn 8864 c kiuint
-
8/14/2019 Lap Trinh Can Ban
71/290
V tr khai bo bin (1)Bin ngoi
c t bn ngoi tt ccc hm
nh hng n ton bchng trnh (bin toncc)
-
8/14/2019 Lap Trinh Can Ban
72/290
V tr khai bo bin (2)Bin trong
c t bn tronghm, chng trnh
chnh hay mt khilnhnh hng n hm,chng trnh haykhi lnh cha n(bin cc b).
-
8/14/2019 Lap Trinh Can Ban
73/290
Biu thc (1)V d:
(-b + sqrt(Delta))/(2*a)Biu thc l mt s kt hp gia
Cc ton t (operator) v
Cc ton hng (operand)Cc loi ton t trong C
Ton t s hcTon t quan h v logicTon t BitwiseTon t ?Ton t con tr & v *Ton t du phy
-
8/14/2019 Lap Trinh Can Ban
74/290
Cc ton t s hc (1)
-
8/14/2019 Lap Trinh Can Ban
75/290
Cc ton t s hc (2)
Tng v gim (++ & --)++x hay x++ gingx = x + 1
--x hay x-- gingx = x 1 Tuy nhin:
x = 10;
y = ++x; //y = 11, x=11
Cn:x = 10;
y = x++; //y = 10, x=11
-
8/14/2019 Lap Trinh Can Ban
76/290
Cc ton t s hc (3)
u l s khc nhau?x++tr vgi tr hin hnh ca x v sau tng x++x tng x trc v sau tr v gi tr mi ca x
Biu thc Boolean (boolean
-
8/14/2019 Lap Trinh Can Ban
77/290
Biu thc Boolean (booleanexpression)
Ch ! Khng c kiuBoolean r rng trong C (iu ny c gii thiu C99). Thay vo C dng cc gitr nguyn tng trng cho gi tr Boolean, vi quic:
Ch ! C dng =cho php gn, v dng ==cho phpso snh . N tr v1 nu bng v 0 nu ngc li
false Gi tr 0
true Bt k gi tr no ngoi tr 0
Cc ton t quan h v cc ton
-
8/14/2019 Lap Trinh Can Ban
78/290
Cc ton t quan h v cc tont Logic (1)
Cc php so snh sau to ra cc biu thc logic cgi tr kiu Boolean
Cc ton t quan h v cc ton
-
8/14/2019 Lap Trinh Can Ban
79/290
Cc ton t quan h v cc tont Logic (2)
V d:
Cc biu thc logic tr v0 nu false(sai)1 nu true(ng)
Cc ton t quan h v cc ton
-
8/14/2019 Lap Trinh Can Ban
80/290
Cc ton t quan h v cc tont Logic (3)
Bng chn tr cho cc ton t Logic
Th t u tin
V d: 10>5&&!(10
-
8/14/2019 Lap Trinh Can Ban
81/290
Cc ton t BitwiseTon t Bitwise gip kim tra,gn hay thay i cc bit tht strong 1 byte ca word.Ch dng cho kiuchar v int.
-
8/14/2019 Lap Trinh Can Ban
82/290
Ton t ?Ton t ? thc hin nh lnh if-else.C php:
E1 ? E2 : E3V d: X = (10 > 9) ? 100 : 200;
=>X=100
X = (10 >15 )? 100 : 200;=>X=200
-
8/14/2019 Lap Trinh Can Ban
83/290
Ton t con tr & v *V d:
int *p; //con tro so nguyenint count=5, x;
p = &count;=>t vo bin m a ch b nh ca bin count
Ton t * tr v ni dung ca nh m mt con tr
ang ch voV d:
x = *p; // x=5
-
8/14/2019 Lap Trinh Can Ban
84/290
Ton t du phyV d:
x = (y=3,y+1);Trc ht gn 3 cho y ri gn 4 cho x.
c s dng kt hp cc biu thc li vinhau.Bn tri ca du (,) lun c xem l kiuvoid.Biu thc bn phi tr thnh gi tr ca tng ccbiu thc c phn cch bi du phy.
-
8/14/2019 Lap Trinh Can Ban
85/290
Tng kt v u tin
Tng kt v u tin
-
8/14/2019 Lap Trinh Can Ban
86/290
Php gn c vit gn li x= x y;
c th c vit gn li (short form):
Cc tp tin th vin thng
-
8/14/2019 Lap Trinh Can Ban
87/290
p gdng
stdio.h : nh ngha cc hm vo/ra chun (standardinput/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(),fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(),putw()conio.h : nh ngha cc hm vo ra trong ch DOS: clrscr(),getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),math.h : nh ngha cc hm tnh ton: abs(), sqrt(), log(). log10(),sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),alloc.h: nh ngha cc hm lin quan n vic qun l b nh:calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(),io.h: nh ngha cc hm vo ra cp thp: open(), _open(), read(),
_read(), close(), _close(), creat(), _creat(), creatnew(), eof(),filelength(), lock(),graphics.h : nh ngha cc hm lin quan n ha: initgraph(),line(), circle(), putpixel(), getpixel(), setcolor(),
Cu trc ca 1 chng trnh C
-
8/14/2019 Lap Trinh Can Ban
88/290
g(1)
Cu trc mt chng trnh CTin x l v bin dchPrototype
Cc tp tin th vin thng dng
Cu trc ca 1 chng trnh C
-
8/14/2019 Lap Trinh Can Ban
89/290
g(2)
Chngtrnhchnh
Ci tcchm
Cc ch th tinx l
nh nghakiu mi
Prototype
Khai bobin
ngoi
Tin x l v bin dch (preprocess
-
8/14/2019 Lap Trinh Can Ban
90/290
Tin x l v bin dch (preprocessand compile)
Cc ch th nh hng (directive):#include, #define
C th cha cc lnh phc tp nh if-else.B tin x l (preprocessor) sthng dch ccdirective v xa b n trc khi cung cp cho trnhbin dch C.
-
8/14/2019 Lap Trinh Can Ban
91/290
#define#define khai bo mt tnmacro (macro symbol).Sau , mi ln tn
macro ny xut hin, ns c thay th bi gitr ca n.
Chia chng trnh ra cc
-
8/14/2019 Lap Trinh Can Ban
92/290
gmodule (1)
1 chng trnh phc tp c th c chia ra vi module
Chia chng trnh ra cc
-
8/14/2019 Lap Trinh Can Ban
93/290
gmodule (2)
Vn : testmodule.c phi bitcc prototype ca foor v bar .Gii php 1 (t):
Chn tay cc prototype vo cc file.c c dng n.Bt li: Mi khi prototype b thayi => phi chnh li prototype trongtt c cc file .c dng n.
Gii php 2 (tt): Lu cc prototype vo 1 file ringbit mymodule.h (h: header).Dng #include mymodule.h ucc chng trnh c dng n.
-
8/14/2019 Lap Trinh Can Ban
94/290
#includeVi #include, b tin x l s thm v thay th token#include filename bng ni dung ca filename.
Cc header file s c tm u?#include :tm file.h trong th mc c xc nhtrong INCLUDE DIRECTORIES. Hoc trong /usr/include (linux)#include C:\\TC\\file.h: tm file.h trong ng dn
-
8/14/2019 Lap Trinh Can Ban
95/290
Header fileCc header file c th cha:
Prototype cho cc hm (function) nh ngha kiu (structs, unions,
enums, typedefs)(nh ngha cc class trong C++)#define macro#pragma cho compiler
Cc bin ton ccCi t trc tip cc hm
-
8/14/2019 Lap Trinh Can Ban
96/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
97/290
LP TRNH CN BN
Phn 2 - Chng 3CC CU LNH N
TRONG CP.D.Nghip
-
8/14/2019 Lap Trinh Can Ban
98/290
Ni dung chng nyCu lnh
Khi nim cu lnhPhn loi
Cc lnh nLnhgnLnhnhp gi tr t bn phm cho binLnhxut gi tr ca biu thc ln mn hnh
-
8/14/2019 Lap Trinh Can Ban
99/290
Khi nim cu lnh1 cu lnh xc nh 1 cng vic m chngtrnh phi thc hinKt thc bi;
-
8/14/2019 Lap Trinh Can Ban
100/290
Phn loiC 2 loi
Lnh nKhng cha 1 lnh no khcGm: lnhgn, nhp, xut
Lnh c cu trcCha cc lnh khcGm:
cu trc iu kinr nhnhcu trc iu kinla chncu trc lpcu trc lnh hp thnh
-
8/14/2019 Lap Trinh Can Ban
101/290
Cc lnh nLnh gnLnh nhp gi tr t bn phm cho binLnh xut gi tr ca biu thc ln mn hnh
-
8/14/2019 Lap Trinh Can Ban
102/290
-
8/14/2019 Lap Trinh Can Ban
103/290
-
8/14/2019 Lap Trinh Can Ban
104/290
Lnh gn (3)Thng th c s chuyn i kiu t ng nu c th.
Chuyn c
-
8/14/2019 Lap Trinh Can Ban
105/290
Lnh gn (4)Kt qu chng trnh sau l g?
-
8/14/2019 Lap Trinh Can Ban
106/290
Lnh gn (5)Trong C, cc chuyn i kiu sau c lm t ng.
Nhng chuyn i trn m bo khng lm mt i s chnh xc(loss of precision).Vic chuyn i theo cc hng khc c th lm mt s chnh xcV d:
h ( )
-
8/14/2019 Lap Trinh Can Ban
107/290
Lnh gn (6)p kiu (casting type)
Lnh nhp gi tr t bn phmh b ( )
-
8/14/2019 Lap Trinh Can Ban
108/290
cho bin (1)scanf c d liu t bn phm v gn vo bin
Chui nh dng (format string): qui nh kiu dliu, cch biu din, rng, s ch s thp phn,
Lnh nhp gi tr t bn phmh bi (2)
-
8/14/2019 Lap Trinh Can Ban
109/290
cho bin (2)scanf phi lu gi tr vo 1 bin
scanf(%d,anInt): khng ng, v anInt xc nh gitr hin hnh ca 1 bin.scanf(%d,&anInt): ng, v a ch ca anInt c xc nh.
V d D S d d I
-
8/14/2019 Lap Trinh Can Ban
110/290
V d - Dng Standard Input
Lnh xut gi tr ca biu thcl h h ( )
-
8/14/2019 Lap Trinh Can Ban
111/290
ln mn hnh (1)
Cn t nht 1 i s. i s u tin l 1 chuiChui c th cha:
V d:
Output
Lnh xut gi tr ca biu thcl h h (2)
-
8/14/2019 Lap Trinh Can Ban
112/290
ln mn hnh (2)Nu mun in ra cc bin v biu thc, ta truyn n voprintf nh cc i s.Cc nh dng (format) khc nhau cho cc kiu gi trkhc nhau (dng %).
Lnh xut gi tr ca biu thcl h h (3)
-
8/14/2019 Lap Trinh Can Ban
113/290
ln mn hnh (3)
Cc nh dng:
V d O C
-
8/14/2019 Lap Trinh Can Ban
114/290
V d - Output t CHt chng
Gii th h th i tf
-
8/14/2019 Lap Trinh Can Ban
115/290
Gii thch thm v printf
-
8/14/2019 Lap Trinh Can Ban
116/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
117/290
LP TRNH CN BN
Phn 2 - Chng 4CC LNH C CU TRC
P.D.Nghip
Ni d h
-
8/14/2019 Lap Trinh Can Ban
118/290
Ni dung chng ny
Khi lnh trong CCu trc r nhnhCu trc la chnCu trc vng lpCc cu lnh c bit
Khi l h t g C (1)
-
8/14/2019 Lap Trinh Can Ban
119/290
Khi lnh trong C (1)
L 1 dy cc khai bo cng vi cc cu lnh ntrong cp du ngoc mc{ v }.
Khi l h t g C (2)
-
8/14/2019 Lap Trinh Can Ban
120/290
Khi lnh trong C (2)
1 khi lnh c th cha nhiu khi lnh khc gl khi lnh lng nhau(khng hn ch).
Ph i bi
-
8/14/2019 Lap Trinh Can Ban
121/290
Phm vi cc binC th khai bo cc bin cngtn trong cc khi. Nu mt bin c khai bo bnngoi khi lnh v khng trngtn vi bin bn trong khi lnhth n cng dng c bn trongkhi.Mt khi lnh con c th sdng cc bin bn ngoi, nhngiu ngc li khng ng.
C trc r nhnh (if)
-
8/14/2019 Lap Trinh Can Ban
122/290
Cu trc r nhnh (if)
Statement c thc hin nu boolean_expressionc gi trng (true), !=0.
Khielsel ty chn
boolean_expression !=0 => Statement1 c thc hin boolean_expression ==0 => Statement2 c thc hin
V d Lnh if
-
8/14/2019 Lap Trinh Can Ban
123/290
V d - Lnh if #include
#include
int main (){float a;
printf("Nhap a = "); scanf("%f",&a);
if (a !=0 )
printf("Nghich dao cua %f la %f",a,1/a);
getch();return 0;
}
V d Lnh if else
-
8/14/2019 Lap Trinh Can Ban
124/290
V d - Lnh if-else#include
#include
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 duoc nghich dao cuaa);
getch();
return 0;
}
Cu lnh v khi lnh
-
8/14/2019 Lap Trinh Can Ban
125/290
Cu lnh v khi lnhC cho php nhm cc cu lnh lin tip vo 1 khi.1 khi lnh c th c dng nh 1 lnh n.V d:
Nhm ln khi dng if
-
8/14/2019 Lap Trinh Can Ban
126/290
Nhm ln khi dng if
Chng trnh trn sai u?
Ch khi dng if else
-
8/14/2019 Lap Trinh Can Ban
127/290
Ch khi dng if-elseCu lnhif-elselng nhauelse s kt hp vi if gn nht cha c elseTrong trng if bn trong khng celseth phi vit ntrong cp du{} trnh s kt hp else if sai.V d
Cu trc la chn(switch case) (1)
-
8/14/2019 Lap Trinh Can Ban
128/290
(switch-case) (1)C cung cp 1 cu trc p - dng 1 dy cc cu lnhif .
-
8/14/2019 Lap Trinh Can Ban
129/290
Cu trc la chn(switch case) (3)
-
8/14/2019 Lap Trinh Can Ban
130/290
(switch-case) (3)
C php:Tnh gi tr ca biu thcexpr trc. Nu gi trexpr bngvalue1th thchinstatement_sequence1ri thot.
Nu gi trexpr khcvalue1th sosnh n vivalue2, nu bngvalue2 th thc hinstatement_sequence2rithot.C nh th, so snh ti gi trn.
Nu tt c cc php so snh trn usai th thc hindefault_statementsca trng hpdefault .
-
8/14/2019 Lap Trinh Can Ban
131/290
V d switch case (1)
-
8/14/2019 Lap Trinh Can Ban
132/290
V d - switch-case (1)
V d switch case (2)
-
8/14/2019 Lap Trinh Can Ban
133/290
V d - switch-case (2)
In ra s ngyca 1 thng
Cu trc lp
-
8/14/2019 Lap Trinh Can Ban
134/290
Cu trc lpCho php lp li thc hin 1 cng vic nhiu ln.C 2 loi:
Lp vi s ln xc nh
for Lp vi s ln khng xc nhwhiledo-while
Vng lp for (1)
-
8/14/2019 Lap Trinh Can Ban
135/290
Vng lp for (1)
Th t thc hin:B1: Tnh gi trbiu thc 1B2: Tnh gi trbiu thc 2
Nu gi trbiu thc 2 lsai (==0)=> thot khifor Nu gi trbiu thc 2 lng (!=0)=> thc hin
B3: Tnh gi tr biu thc 3ri quay liB2
for (Biu thc 1; biu thc 2; biu thc 3) ;
Vng lp for (2)
-
8/14/2019 Lap Trinh Can Ban
136/290
Vng lp for (2)
Vng lp for (2)
-
8/14/2019 Lap Trinh Can Ban
137/290
Vng lp for (2)
Chng trnh in dy s nguyn t 1..10
output
Vng lp for (3)
-
8/14/2019 Lap Trinh Can Ban
138/290
Vng lp for (3)Nhp s nguyn n. Tnh tng cc s nguyn t 1..n.
output
Vng lp while (1)
-
8/14/2019 Lap Trinh Can Ban
139/290
Vng lp while (1)
:c th l 1 culnh hay 1 khi lnh.Cc bc thc hin:- Kim tra Biu thc iu
kin trc.- Nu iu kinsai (==0)th
thotkhi lnh while.- Nu iu kinng (!=0)th thc hin cng vicriquay li kim tra iu kintip.
while( Biu thc iu kin) ;
Vng lp while (2)
-
8/14/2019 Lap Trinh Can Ban
140/290
Vng lp while (2)
Chng trnh in dy s nguyn t 1..10
output
Vng lp while (3)
-
8/14/2019 Lap Trinh Can Ban
141/290
Vng lp while (3)Nhp s nguyn n. Tnh tng cc s nguyn t 1..n.
output
Vng lp do-while (1)
-
8/14/2019 Lap Trinh Can Ban
142/290
Vng lp do while (1)
:c th l 1 cu lnhhay 1 khi lnh.Cc bc thc hin:
Cng vicc thc hintrc, sau mi kim traiu kin. Nuiu kin sai th thotkhi lnh do-while. Nu iu kin cn ng th thc hincng vicri quay li kim tra iu kintip.
dowhile(< Biu thc iu kin>);
Vng lp do-while (2)
-
8/14/2019 Lap Trinh Can Ban
143/290
Vng lp do while (2)
Chng trnh in dy s nguyn t 1..10
output
Vng lp do-while (3)
-
8/14/2019 Lap Trinh Can Ban
144/290
Vng lp do while (3)Nhp s nguyn n.Tnh tng cc snguyn t 1..n.
output
So snh cc vng lp
-
8/14/2019 Lap Trinh Can Ban
145/290
So snh cc vng lp
Vng lp for/while:Kim tra iu kin trcthc hin cng vic sau.Cng vic c th khng c thc hin ln no.
Vng lp kt thc khi no iu kin sai.Vng lp do-while
Thc hin cng vic trckim tra iu kin sau.
Cng vic c thc hin t nht 1 ln.Vng lp kt thc khi no iu kin sai.
Cu lnh c bit
-
8/14/2019 Lap Trinh Can Ban
146/290
Cu lnh c bit
Lnh breakDng thot khivng lp hoc switch-case.Tip tc thc hin lnh lin sau .
Lnh continueTrong vng lp, khi gp lnhcontinue, chng trnhs b qua cc cu lnh sau continue
for : quay ln tnh tr cho biu thc 3, ri kim tra iukin coi c lp tip khng.while/do-while: kim tra iu kin coi c lp tip khng.
-
8/14/2019 Lap Trinh Can Ban
147/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
148/290
LP TRNH CN BN
Phn 2 - Chng 5CHNG TRNH CONP.D.Nghip
Ni dung chng ny
-
8/14/2019 Lap Trinh Can Ban
149/290
Ni dung chng ny
V dKhi nim v hm trong CXy dng mt hmTruyn tham s cho hmHm qui
V d(1)
-
8/14/2019 Lap Trinh Can Ban
150/290
V d(1)In ra 50 k t * v 50 k t +
V d(2)
-
8/14/2019 Lap Trinh Can Ban
151/290
V d(2)
u l u im ca vic dng hm?
Khi nim v hm trong C (1)
-
8/14/2019 Lap Trinh Can Ban
152/290
v t o g C ( )
trnh rm r v mt thi gian khi vit chng trnh,nhng on chng trnh lp i lp li nhiu ln c vittrong 1 module.Chia chng trnh thnh nhiu module, mi module gii quy1 cng vic no .Mi module nh trn c gi l 1 chng trnh con.Cc module d dng c kim tra tnh ng n trc khic rp ni vo chng trnh.
Khi nim v hm trong C (2)
-
8/14/2019 Lap Trinh Can Ban
153/290
g ( )
V d: Tm s ln nht trong 3 s a, b, v c.
Khi nim v hm trong C (3)
-
8/14/2019 Lap Trinh Can Ban
154/290
g ( )
C 2 loi hm:Hm chunHm t nh ngha
Hm chun (hm th vin)
-
8/14/2019 Lap Trinh Can Ban
155/290
( )c nh ngha sn bi ngn ng lp trnh v c cha vo cc thvin.Mun s dng phi khai bo#include Mt s th vin thng dng trong C:
stdio.h : Th vin cha cc hm vo/ ra chun (standardinput/output):
printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(),fread(), fwrite(), getchar(), putchar(), getw(), putw(), conio.h :Th vin cha cc hm vo ra trong ch DOS (DOS console):clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(), math.h: Th vin cha cc hm tnh ton:abs(), sqrt(), log(). log10(), sin(),cos(), tan(), acos(), asin(), atan(), pow(), exp(),
alloc.h: Th vin cha cc hm lin quan n vic qun l b nh:calloc(),realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), io.h: Th vin cha cc hm vo ra cp thp:open(), _open(), read(), _read(),close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(), graphics.h: Th vin cha cc hm lin quan n ha:initgraph(), line(),circle(), putpixel(), getpixel(), setcolor(),
Hm t nh ngha (hm ngidng) (1)
-
8/14/2019 Lap Trinh Can Ban
156/290
g) ( )
Do ngi lp trnh t to ra nhm p ng nhu cu x l camnh.
Cu trc ca mt hm t thit k:
Hm t nh ngha (hm ngidng) (2)
-
8/14/2019 Lap Trinh Can Ban
157/290
g) ( )
C php gi hm:([ Danh sch cc tham s ])V d:Tm UCLN ca 2 s t nhin:
Nguyn tc hot ng ca hm
-
8/14/2019 Lap Trinh Can Ban
158/290
g y g
Trong chng trnh, khi gp mt li gi hm thcc bc sau c thc hin: Nu hm c tham s, trc tin cc tham s s c gn gi tr thc tng ng .Chng trnh s thc hin tip cc cu lnh trong thhm bt u t lnh u tin n cu lnh cui cng.Khi gp lnhreturnhoc du} cui cngtrong thnhm, chng trnh s thot khi hm tr v chntrnh gi n.Thc hin tip tc nhng cu lnh ca chng trnh.
Truyn tham s cho hm (1)
-
8/14/2019 Lap Trinh Can Ban
159/290
y ( )
V d: Hon i ni dung ca 2 bin
Truyn tham s cho hm (2)
-
8/14/2019 Lap Trinh Can Ban
160/290
y ( )
Ta vn cha hon v c!Ti sao?
2 tham s a v b ca hoanvi ltham s hnh thcctruynbng gi tr (tham tr).
1 tham tr c coi nh 1 bin cc b ca hmcha d liu u vo cho hm.Cn 2 tham s a,b ca hoanvi trong li gi hm trong main() ltham s thc.
Khi chng trnh con c gi thi hnh,tham tr c cp nh v nhn gi tr l bn sao gi tr ca tham s thc.Do ,mi s thay i trn tham tr khng nh hng g ntham s thc tng ng.
Truyn tham s cho hm (3)
-
8/14/2019 Lap Trinh Can Ban
161/290
y ( )
Hy xem chng trnh sau
Truyn tham s cho hm (4)
-
8/14/2019 Lap Trinh Can Ban
162/290
y ( )
Ti sao ta hon v c?2 tham s a v b ca hoanvi ltham s hnh thc ctruyn bng a ch (tham bin) con tr.
Khi chng trnh con (ctc) c gi thi hnh,thambin cha a ch tham s thc, nh ca tham sthc c dng trc tip trong ctc qua bin con tr.Do ,mi s thay i trn tham bin u nh
hng n tham s thc tng ng.
Hm quy
-
8/14/2019 Lap Trinh Can Ban
163/290
q y
Mt hm c gi l quy nu bn trong thnhm c lnh gi n chnh n.V d:
1 nu n=0
n*(n-1)! nu n#0n!=
unsigned int giaithua_dequy(int n)
{
if (n==0)
return 1;
elsereturn n*giaithua_dequy(n-1);
}
c im cn lu khi vit hm quy
-
8/14/2019 Lap Trinh Can Ban
164/290
q y
Hm quy phi c 2 phn:
Phn dng: l trng hp nguyn t.
V d:n=0 trong tnh n!
Phn quy:l phn c gi li hm ang c nhngha.
V d:nu n>0 th n! = n * (n-1)!
u v khuyt im ca quy
-
8/14/2019 Lap Trinh Can Ban
165/290
y q y
Lm chng trnh d c, d hiu v vn c nu bt rrng hn. quy tn b nh nhiu hn v tc thc hin chng trchm hn khng quy.
Ty tng bi c th m ta quyt nh c nn dng quy hakhng.C nhng trng hp khng dng quy th khng gii quyc bi ton.
-
8/14/2019 Lap Trinh Can Ban
166/290
Ht chng
Ht chng
-
8/14/2019 Lap Trinh Can Ban
167/290
LP TRNH CN BN
Phn 2 - Chng 6KIU MNGP.D.Nghip
Ni dung chng ny
-
8/14/2019 Lap Trinh Can Ban
168/290
Gii thiu kiu mng trong CMng 1 chiuMng nhiu chiu
Gii thiu kiu mng trong C (1)
-
8/14/2019 Lap Trinh Can Ban
169/290
V d:int a[10];
=> Hnh nh ca a trong b nh nh sau:
Gii thiu kiu mng trong C (2)
-
8/14/2019 Lap Trinh Can Ban
170/290
Mng l mt tp hp cc phn t c nh c cng mt kiugi l kiu phn t.
Kiu phn tc th l c kiu bt k:k ts1 struct1 mng khc (=> mng ca mng hay mng nhiu chiu)
;
Gii thiu kiu mng trong C (3)
-
8/14/2019 Lap Trinh Can Ban
171/290
V d: Lu tr 1 a gic trong ha:typedef struct {
int x;
int y;} Point;
typedef struct {Point Points[100];int nPoints;
} Polygon;
Points[1]
Points[2]
Points[3]
Points[0]
Gii thiu kiu mng trong C (4)
-
8/14/2019 Lap Trinh Can Ban
172/290
Ta c th chia mng lm 2 loi:Mng 1 chiuMng nhiu chiu
Mng 1 chiu (1)
-
8/14/2019 Lap Trinh Can Ban
173/290
Xt di gc ton hc, mng 1 chiu ging nh mt vectMi phn t ca mng 1 chiu c gi trkhng phi l mt mng khc. Khai bo mng vi s phn t xc nh
V d: float a[100];C php: ;
Khai bo mng vi s phn t khng xc nhV d: float a[];C php: ;
-
8/14/2019 Lap Trinh Can Ban
174/290
Mng 1 chiu (3)
-
8/14/2019 Lap Trinh Can Ban
175/290
V d: Gn gi tr ngay lc khai bo int primes[] = {2,3,5,7,11,13};
S tng ng vi:int primes[6];primes[0] = 2;primes[1] = 3;primes[2] = 5;
primes[3] = 7;primes[4] = 11;primes[5] = 13;
=>sizeof(primes)/sizeof(int)=6
Truy xut tng phn t ca mng (1)
-
8/14/2019 Lap Trinh Can Ban
176/290
C php:Tn bin mng[Ch s]
Vd 1:int a[10];
a[0]=5; a[1]=5; a[2]=33; a[3]=33; a[4]=15;
printf(%d %d %d %d %d, a[0], a[1], a[2], a[3], a[4]);
Truy xut tng phn t ca mng (2)
-
8/14/2019 Lap Trinh Can Ban
177/290
V d 2:Va khai bo va gn tr cho 1 mng 1 chiu cc snguyn. In mng s nguyn ny ln mn hnh.
Truy xut tng phn t ca mng (3)
-
8/14/2019 Lap Trinh Can Ban
178/290
V d 3: i mt s nguyn dng thp phn thnh s nh phn.
Truy xut tng phn t ca mng (4)
-
8/14/2019 Lap Trinh Can Ban
179/290
V d 4: Nhp vo mt dy n s v sp xp cc s theo th t tng.
Truy xut tng phn t ca mng (5)
-
8/14/2019 Lap Trinh Can Ban
180/290
V d 5: Chng trnh sau s hin th kt qu g?
Cc phn t ca mng a[0], , a[11]. Vic truy cp a[12] svt rabn ngoi mng, nh ca bin b.
Sa li ny th no?
Mng nhiu chiu
-
8/14/2019 Lap Trinh Can Ban
181/290
Mng nhiu chiu l mng c t2 chiu tr ln.iu c ngha lmi phn t ca mng l mt mng khc. Ngi ta thng s dng mng nhiu chiu lu cc matrn, cc ta 2 chiu, 3 chiu
Khai bo mng 2 chiu tng minh
-
8/14/2019 Lap Trinh Can Ban
182/290
C php:
V d:
floatm[8][9]; // mng 2 chiu c 8*9 phn t l s thc
Khai bo mng 2 chiu khng tng minh
-
8/14/2019 Lap Trinh Can Ban
183/290
khai bo mng 2 chiu khng tng minh, ta vn phi chra s phn t ca chiu th hai (chiu cui cng).
C php:
;V d:floatm[][9];
Cch khai bo ny cng c p dng trong trng hp:va khai bo va gn trmng 2 chiu l tham s hnh thc ca 1 hm.
Truy xut tng phn t ca mng 2 chiu
-
8/14/2019 Lap Trinh Can Ban
184/290
Dng:Tn mng[Ch s 1][Ch s 2]
V d (1)
-
8/14/2019 Lap Trinh Can Ban
185/290
Vit chng trnh cho php nhp 2 ma trn a, b c m dng n ct, thc hi php ton cng hai ma trn a,b v in ma trn kt qu ln mn hnh.
V d (2)
-
8/14/2019 Lap Trinh Can Ban
186/290
-
8/14/2019 Lap Trinh Can Ban
187/290
Ht chng
Ht chng
-
8/14/2019 Lap Trinh Can Ban
188/290
LP TRNH CN BN
Phn 2 - Chng 7KIU CON TRP.D.Nghip
Ni dung chng ny
-
8/14/2019 Lap Trinh Can Ban
189/290
Gii thiu kiu d liu con trKhai bo v s dng bin con trCon tr v mngCon tr v tham s hnh thc ca hm
Gii thiu kiu d liu con tr(pointer) (1)
-
8/14/2019 Lap Trinh Can Ban
190/290
1 con tr l 1 bin c dng cha a ch ca nhtrong b nh.Kch thc ca bin con tr lun l 2 byte.
V d 1:float a=3.145;float*ptr; //ptr is a pointer ptr=&a;
FFF2 3.145pointer ptr variable a
FFF2 (address)
Gii thiu kiu d liu con tr (2)
-
8/14/2019 Lap Trinh Can Ban
191/290
V d 2: In Linux
Khai bo v s dng bin con tr
-
8/14/2019 Lap Trinh Can Ban
192/290
Khai bo bin con tr Cc thao tc trn con tr
Khai bo bin con tr
-
8/14/2019 Lap Trinh Can Ban
193/290
inta, b, *pa, *pb;//pa v pb s ch n bin intfloat f, *pf; //pa v pb s ch n bin floatvoid*ptr; //ptr s ch vo bt k bin kiu g
C php: *;
ngha: Khai bo mt bin c tn lTn con trdng
cha a ch ca cc bin c kiu Kiu.
Cc thao tc trn con tr
-
8/14/2019 Lap Trinh Can Ban
194/290
Gn a ch ca bin cho bin con tr Ni dung ca nh con tr ch tiCp pht vng nh cho bin con trCp pht li vng nh cho bin con trGii phng vng nh cho bin con trMt s php ton trn con tr
Gn a ch ca bin cho bin con tr + Ni dung ca nh con tr ch ti (1)
-
8/14/2019 Lap Trinh Can Ban
195/290
Dng & ly raa ch b nh (memory address)ca 1 bininta=6;int*c= &a; // &a l a ch b nh ca bin a
Dng * truy cp (access) nni dung (content)ca bin
m 1 con tr ang ch ninta=6;int*c= &a;*c=7; /*Thay i ni dung ca bin a bng cch
dng a ch ca n c cha trongcon tr c*/
tng ng via=7;
Gn a ch ca bin cho bin con tr + Ni dung ca nh con tr ch ti (2)
-
8/14/2019 Lap Trinh Can Ban
196/290
Gn a ch ca bin cho bin con tr + Ni dung ca nh con tr ch ti (3)
-
8/14/2019 Lap Trinh Can Ban
197/290
Lu :
=> Error!V cho 1 con tr ch n 1 bin khc kiu vi n
Cp pht vng nh cho bin con tr(1)
-
8/14/2019 Lap Trinh Can Ban
198/290
C 2 cch dng c bin con tr1. Cho n cha a ch ca 1 vng nh ang tn tiint a=6;int*c= &a; // &a l a ch b nh ca bin a
1. Cp pht 1 vng nh mi, ri cho con tr ch nint*ptr; ptr =(int*)malloc(sizeof(int));*ptr=6;
FFFA 6
pointer ptr
FFFA (address)
Cp pht vng nh cho bin con tr(2)
-
8/14/2019 Lap Trinh Can Ban
199/290
void *malloc(size_t size): Cp pht vng nh c kch thc lsize (byte)void *calloc(size_t nitems, size_t size): Cp pht vng nh ckch thc l nitems*size (byte)
V d: inta, *pa, *pb; pa =(int*)malloc(sizeof(int)); /* Cp pht vng nh c kch thc
bng vi kch thc ca mt s nguyn */ pb= (int*)calloc(10, sizeof(int)); /* Cp pht vng nh c th chac 10 s nguyn*/
Cp pht li vng nh cho bin con tr
-
8/14/2019 Lap Trinh Can Ban
200/290
int a, *pa; pa =(int*)malloc(sizeof(int)); /*Cp pht vng nh ckch thc 2 byte*/
pa = realloc(pa, 6); /*Cp pht li vng nh ckch thc mi l 6 byte*/
void *realloc(void *block, size_t size): ngha:
Cp pht li 1 vng nh do con trblock qun l, vng nh ny ckch thc mi l size; khi cp pht li th ni dung vng nh trc c copy n vng nh mi.Kt qu tr vca hm la ch u tin ca vng nh mi. a chny c th khc vi a ch c ch ra khi cp pht ban u. Kt ql NULL nu khng cp pht c.
Gii phng vng nh cho bin con tr
-
8/14/2019 Lap Trinh Can Ban
201/290
void free(void *block): Gii phng vng nh c qun l bi con tr block
V dfree(pa);free(pb);=> gii phng vng nh do
2 bin con tr pa & pb ang ch n
Mt s php ton trn con tr
-
8/14/2019 Lap Trinh Can Ban
202/290
Php gn =Php so snh == v !=Cng, tr con tr vi 1 s nguyn
Gn NULLcho 1 con tr
Php gn v php so snh
-
8/14/2019 Lap Trinh Can Ban
203/290
V d: Hin ti ta c:int a=10, b=15;int *p, *q;float*f;p=&a; q=&b;
By gi th php so snh:(p!=q) => true(1)
Thc hin tip lnh gn:p=q;
By gi th:(p==q) => true(1)
Lnh f=p;=>Error, do khc kiuNhng lnh f=(float*)p; =>No error
FFF2 10p
FFF2 (address)
a
FFFA 15q
FFFA (address)
b
FFFA 10p
FFF2 (address)
a
FFFA 15q
FFFA (address)
b
Cng, tr con tr vi 1 snguyn
-
8/14/2019 Lap Trinh Can Ban
204/290
Ta c th cng (+), tr (-) 1 con tr vi 1 s nguyn N no Kt qu tr v l 1 con tr. Con tr ny ch n vng nh cvng nh ca con tr hin ti N phn t.V d:Cho on chng trnh sau:
int*pa;int*pb, *pc; pa =(int*)malloc(20);/*Cp pht vng nh 20 byte=10 s nguyn*/ pb = pa + 7;
pc = pb - 3;Lc ny hnh nh ca pa, pb, pc nh sau:
Gn NULL cho 1 con tr
-
8/14/2019 Lap Trinh Can Ban
205/290
V d:int x=25;int *ptr;ptr=&x;ptr=NULL;
Lnh gn ptr=NULL=> cho con tr ptr khngtr vo (khng cha a ch) vng nh no c
Con tr v mng (1)
-
8/14/2019 Lap Trinh Can Ban
206/290
Mng v con tr c mi lin h vi nhauThay v truy cp 1 phn t mng bng ch s ca n, ta c th dng1 con tr
truy cp phn t th i, a[i]:y= *(pa+i);
Ch : pa+1 khng phi cng 1 vo pa. Thay vo , a ch lpa+sizeof(*pa)
Con tr v mng (2)
-
8/14/2019 Lap Trinh Can Ban
207/290
1 mng c th c xem nh mt con tr. Con tr nyang ch n phn t u tin ca mng. Do :
1 mng c th c dng lmtham s cho 1 hm
Con tr v mng (3)
-
8/14/2019 Lap Trinh Can Ban
208/290
x s c gi tr ca a[i] no, ti mi lnh gn sau?
Con tr v tham s hnh thc ca hm (1)
-
8/14/2019 Lap Trinh Can Ban
209/290
V d 1:Vit 1 hm tng gi tr ca bin ln 1
Con tr v tham s hnh thc ca hm (2)
-
8/14/2019 Lap Trinh Can Ban
210/290
u l s khc nhau gia tham s a v b?
Con tr v tham s hnh thc ca hm (3)
-
8/14/2019 Lap Trinh Can Ban
211/290
V d 2:Vit hm hon i ni dung 2 bin
Con tr v tham s hnh thc ca hm (4)
-
8/14/2019 Lap Trinh Can Ban
212/290
V d 3:Vit li hm hon v nh sau:
Con tr v tham s hnh thc ca hm (5)
-
8/14/2019 Lap Trinh Can Ban
213/290
Ti sao hm trn c th hon v c?
-
8/14/2019 Lap Trinh Can Ban
214/290
Ht chng
Ht chng
-
8/14/2019 Lap Trinh Can Ban
215/290
LP TRNH CN BNPhn 2 - Chng 8
CHUI K TP.D.Nghip
Ni dung chng ny
-
8/14/2019 Lap Trinh Can Ban
216/290
Khi nimKhai boCc thao tc trn chui k t
Khi nim
-
8/14/2019 Lap Trinh Can Ban
217/290
Chui k t l mt dy gm cc k t hoc mt mcc k t c kt thc bng k t \0 (k t NULLtrong bng m Ascii).Cc hng chui k t c t trong cp du nhkp .
Khai bo
-
8/14/2019 Lap Trinh Can Ban
218/290
Khai bo theo mngKhai bo theo con trVa khai bo va gn gi tr
Khai bo theo mng
-
8/14/2019 Lap Trinh Can Ban
219/290
C php: char [Chiu di ti a];V d: char Ten[12];
=> b nh s cung cp 12+1 bytes lu trni dung ca chui k t Ten; byte cui cng lu tr k t \0 chm dt chui
Ghi ch:Chiu di ti a ca bin chui: 1..255 bytes.Khng nn khai bo tha trnh lng ph b nh.
\0Ten:
Ten[0] Ten[12]
Khai bo theo con tr
-
8/14/2019 Lap Trinh Can Ban
220/290
C php: char *;V d: char *Ten;Trong khai bo ny, b nh s dnh 2 byte lu tr a chca bin con tr Ten ang ch n.Cha cung cp ni lu tr d liu.Mun c ch lu tr d liu, ta phi gi n hmmalloc()hoccalloc()c trong alloc.h, sau mi gn d liu cho bin.
Tieu Dong Tu
Va khai bo va gn gi tr
-
8/14/2019 Lap Trinh Can Ban
221/290
C php: char []=;V d:
Ghi ch: Chui c khai bo l mt mng cc k t nn cc thaotc trn mng c th p dng i vi chui k t.
Vua khai bao vua gan tr : Mau nang hay la mau mat em
Cc thao tc trn chui k t
-
8/14/2019 Lap Trinh Can Ban
222/290
Nhp xut chui Nhp chui t bn phm Xut chui ln mn hnh
Mt s hm x l chui (trong string.h)
Nhp chui t bn phm
-
8/14/2019 Lap Trinh Can Ban
223/290
Dng hmgets()C php:gets()
V d:
char Ten[20];gets(Ten);
Ta cng c th s dng hm scanf() nhp d liu cho bin
chui, tuy nhin lc ny ta ch c th nhp c mt chuikhng c du khong trng.Dng hm cgets() (trong conio.h)
Xut chui ln mn hnh
-
8/14/2019 Lap Trinh Can Ban
224/290
xut mt chui (biu thc chui) ln mn hnh, ta s dng hm puts(C php: puts()V d:Nhp vo mt chui v hin th trn mn hnh chui va nhp:
Ngoi ra, ta c th s dng hm printf(), cputs() (trong conio.h) hin chui ln mn hnh.
Mt s hm x l chui (trong string.h)
-
8/14/2019 Lap Trinh Can Ban
225/290
Cng chui - Hm strcat() Xc nh di chui - Hm strlen() i mt k t thng thnh k t hoa - Hmtoupper() i chui ch thng thnh chui ch hoa, hm strupr()
i chui ch hoa thnh chui ch thng, hm strlwr()Sao chp mt phn chui, hm strncpy() Trch mt phn chui, hm strchr()Tm kim ni dung chui, hm strstr()
So snh chui, hm strcmp()So snh chui, hm stricmp() Khi to chui, hmmemset() i t chui ra s, hmatoi(), atof(), atol()(trong stdlib.h)
Cng chui - strcat()(1)
-
8/14/2019 Lap Trinh Can Ban
226/290
C php:char *strcat(char *des, const char *source)
Hm ny c tc dng ghp chui ngun (source) vo chuich (des).Tr v con tr ch n chui kt qu.
Cng chui - strcat()(2)
-
8/14/2019 Lap Trinh Can Ban
227/290
V d: Nhp vo h lt v tn ca mt ngi, sau in c h v tn ca h ln mn hnh.
Xc nh di chui - strlen()
-
8/14/2019 Lap Trinh Can Ban
228/290
C php: int strlen( const char * s)V d: Xc nh di 1 chui nhp t bn phm
i mt k t thng thnh k t hoa - toupper()
-
8/14/2019 Lap Trinh Can Ban
229/290
C php:char toupper(char c)
Hm ny (trong ctype.h) c dng chuyni 1 k t thng thnh k t hoa.
i chui ch thng thnh chui ch hoa - strupr()(1)
-
8/14/2019 Lap Trinh Can Ban
230/290
C php:char *strupr(char *s)
Hm ny c dng chuyn i chui ch thng thnhchui ch hoa.Kt qu tr v l 1 con tr ch n chui kt qu.
i chui ch thng thnh chui ch hoa - strupr()(2)
-
8/14/2019 Lap Trinh Can Ban
231/290
V d: Nhp vo mt chui k t t bn phm. Sau s dnhm strupr() chuyn i chng thnh chui ch hoa.
i chui ch hoa thnh chui ch thng - strlwr()
-
8/14/2019 Lap Trinh Can Ban
232/290
C php:char *strlwr(char *s)
Hm ny c dng chuyn i chui ch hoa thnh chuch thng.Kt qu tr v l 1 con tr ch n chui kt qu.
Sao chp chui - strcpy()(1)
-
8/14/2019 Lap Trinh Can Ban
233/290
C php:char *strcpy(char *Des,const char*Source)
Hm ny c dng sao chp ton b ni dung ca chungun vo chui ch.
Sao chp chui - strcpy()(2)
-
8/14/2019 Lap Trinh Can Ban
234/290
V d: Vit chng trnh cho php chp ton b chui ngunvo chui ch
Sao chp mt phn chui - strncpy()v Trch mt phn chui - strchr()
-
8/14/2019 Lap Trinh Can Ban
235/290
Sao chp mt phn chuiC php: char *strncpy(char *Des, const char *Source, size_t n)Chp n k t u tin ca chui ngun sang chui ch.
Trch mt phn chui, hm strchr()C php : char *strchr(const char *str, int c)Trch ra chui con ca str bt u t k t c cho n ht chui.
Ghi ch: Nu k t c khng c trong chui, kt qu tr v l NULL.Kt qu tr v ca hm l mt con tr, con tr ny ch n k t cu tin trong chui str.
Tm kim ni dung chui - strstr() (1)
-
8/14/2019 Lap Trinh Can Ban
236/290
C php:char *strstr(const char *s1, const char *s2)
Hm ny c dng tm kim s xut hin utin ca chui s2 trong chui s1.Kt qu tr l 1 con tr ch n phn t u tin cachui s1 c cha chui s2 hoc gi tr NULL nuchui s2 khng c trong chui s1.
Tm kim ni dung chui - strstr() (2)
-
8/14/2019 Lap Trinh Can Ban
237/290
V d: Vit chng trnh s dng hm strstr() ly ra mt phn ca chui gc bt u t chui hoc.
So snh chui - strcmp()(1)
-
8/14/2019 Lap Trinh Can Ban
238/290
C php:int strcmp( const char *s1, const char *s2)
So snh 2 chui s1 v s2 vi nhau.
Kt qu tr v l 1 s int:0 nu s1 > s2
Tng t:int stricmp(const char *s1, const char *s2)So snh khng phn bit k t hoa/thng
So snh chui - strcmp()(2)
-
8/14/2019 Lap Trinh Can Ban
239/290
V d:#include
#include
#inlude
void main(){char s1[10]=Chao, s2[10]=chao;
printf(%d,strcmp(s1,s2));
getch();
}
-32
#include
#include
#inlude
voidmain(){char s1[10]=chao, s2[10]=chao;
printf(%d,strcmp(s1,s2));
getch();
}0
Khi to chui - memset()
-
8/14/2019 Lap Trinh Can Ban
240/290
C php: void*memset(char *Des, int c, size_t n) t n k t u tin ca chui Des l k t c.Gi tr tr v: chui Des. Nm trong th vin: string.h v mem.h
i t chui ra s - atoi(), atof(),atol() (trong stdlib.h)
-
8/14/2019 Lap Trinh Can Ban
241/290
C php :intatoi(const char *s) : chuyn chui thnh s nguynlongatol(const char *s) : chuyn chui thnh s nguyn difloatatof(const char *s) : chuyn chui thnh s thc Nu chuyn i khng thnh cng, kt qu tr vca cc hm l 0.V d:atoi(1234)=> 1234
-
8/14/2019 Lap Trinh Can Ban
242/290
Ht chng
-
8/14/2019 Lap Trinh Can Ban
243/290
LP TRNH CN BNPhn 2 - Chng 9KIU CU TRC
P.D.Nghip
Ni dung chng ny
-
8/14/2019 Lap Trinh Can Ban
244/290
Kiu cu trc trong CCc thao tc trn bin kiu cu trcCon tr v cu trc
Kiu cu trc trong C
-
8/14/2019 Lap Trinh Can Ban
245/290
Khi nim nh ngha kiu cu trcKhai bo bin cu trc
Khi nim
-
8/14/2019 Lap Trinh Can Ban
246/290
Kiu cu trc (struct) l kiu d liu baogm nhiu thnh phn c kiu khc nhau, mi thnh phn c gi l mttrng (field) N khc vi kiu mng (ni m cc phn t c cng kiu)
V d:
1 struct:
1 mng:
nh ngha kiu cu trc +Khai bo bin cu trc (1)
-
8/14/2019 Lap Trinh Can Ban
247/290
Cch 1:struc t SinhVien{
char MSSV[10];char HoTen[40];struct NgayThang
NgaySinh;int Phai;char DiaChi[40];
};
Khaibo bin:struct NgayThang NgaySinh;struct SinhVien SV;
struct {;;
..;} [bin 1, bin 2];
V d:struct NgayThang{unsigned char Ngay;
unsigned char Thang;unsigned int Nam;
};
struct tn_bin;
nh ngha kiu cu trc +Khai bo bin cu trc (2)
-
8/14/2019 Lap Trinh Can Ban
248/290
Ch :struct khng tn:
Tuy nhin
A v B l cc structc 2 thnhphn x v y.
struct ny khng c tn, nn ngoiA v B, ta khng th nh nghathm cc bin khc c.
A v B l cc bin c kiustruct point.
Sau ny ta c th khai bo thmcc bin khc c kiustruct point ny.
nh ngha kiu cu trc +Khai bo bin cu trc (3)
-
8/14/2019 Lap Trinh Can Ban
249/290
Cch 2:typedef struct {
char MSSV[10];char HoTen[40];NgayThang NgaySinh;
int Phai;char DiaChi[40];} SinhVien;
Khai bo bin:
NgayThang NgaySinh;SinhVien SV;
typedef struct{ ; ;
.. ;} ;
V d:typedef struct {unsigned char Ngay;
unsigned char Thang;unsigned int Nam;
} NgayThang; tn_bin;
Cc thao tc trn bin kiu cutrc
-
8/14/2019 Lap Trinh Can Ban
250/290
Truy xut n tng trng ca bin cu trcKhi to cu trc
Truy xut n tng trng (field)ca bin cu trc (1)
-
8/14/2019 Lap Trinh Can Ban
251/290
C php: .
V d 1:Chng trnh cho php c d liu t bn phm cho bin mu tin SinhVien v in bin mu tin ln mn hnh:
Truy xut n tng trng (field)ca bin cu trc (2)
-
8/14/2019 Lap Trinh Can Ban
252/290
Truy xut n tng trng (field)ca bin cu trc (3)
-
8/14/2019 Lap Trinh Can Ban
253/290
Kt qu ca 1 ln nhp:
Truy xut n tng trng (field)ca bin cu trc (4)
-
8/14/2019 Lap Trinh Can Ban
254/290
Lu :Cc bin cu trc c th gn cho nhauV d:
s=SV; // gn ly gi tr ton b cu trc
Ta khng th thc hin c cc thao tc sau y cho bincu trc:
S dng cc hm xut nhp trn bin cu trcCc php ton quan h, cc php ton s hc v logic
Khi to cu trc
h kh b
-
8/14/2019 Lap Trinh Can Ban
255/290
Bin cu trc c th c khi to gi tr banu lc khai bo
V d:struct NgayThang NgaySinh ={29, 8, 1986};
Con tr v cu trc
Kh i b
-
8/14/2019 Lap Trinh Can Ban
256/290
Khai boS dng cc con tr kiu cu trcTruy cp cc thnh phn ca cu trc ang c
qun l bi con tr
Khai bo (1)
C h
-
8/14/2019 Lap Trinh Can Ban
257/290
C php:struct * ;
V d 1:struct NgayThang *p;
hoc NgayThang *p; // Nu c dng typedef
Khai bo (2)
V d 2
-
8/14/2019 Lap Trinh Can Ban
258/290
V d 2:
Truy cp n cc trng:
Nu dng con tr th:
S dng cc con tr kiu cu trc
C 2 h
-
8/14/2019 Lap Trinh Can Ban
259/290
C 2 cch:Phi cp pht b nh cho nCho n ch vo (cha a ch) bin ang tn ti
V d:struct NgayThang *p;p=( struct NgayThang *) malloc (sizeof( struct NgayThang));p->Ngay=29; p->Thang=8; p->Nam=1986;
Hoc struct NgayThang Ngay = {29,8,1986};p = &Ngay;
Truy cp cc thnh phn ca cu trcang c qun l bi con tr (1)
Vi kh i b
-
8/14/2019 Lap Trinh Can Ban
260/290
Vi khai bo sau:struct NgayThang *p;
Ta c th truy cp n cc trng ca n nh sau:
p->Ngay p->Thanghoc
(*p).Ngay (*p).Thang
Truy cp cc thnh phn ca cu trcang c qun l bi con tr (3)
V d
-
8/14/2019 Lap Trinh Can Ban
261/290
V d
-
8/14/2019 Lap Trinh Can Ban
262/290
Ht chng
C
-
8/14/2019 Lap Trinh Can Ban
263/290
LP TRNH CN BNPhn 2 - Chng 10
KIU TP TINP.D.Nghip
Ni dung chng ny
Mt khi i t ti
-
8/14/2019 Lap Trinh Can Ban
264/290
Mt s khi nim v tp tinCc thao tc trn tp tinTruy cp tp tin vn bn
Truy cp tp tin nh phn
Mt s khi nim v tp tin (file) (1)
T i t ki t ti ?
-
8/14/2019 Lap Trinh Can Ban
265/290
Ti sao ta cn n kiu tp tin?Cho php lu tr d liu b nh ngoi (a).Khi kt thc chng trnh th d liu vn cn do
chng ta c th s dng nhiu ln.Kch thc ln d liu khng hn ch.
Mt s khi nim v tp tin (file) (2)C 3 loi d liu kiu tp tin:
T ti b (T t Fil )
-
8/14/2019 Lap Trinh Can Ban
266/290
Tp tin vn bn (Text File)Dng ghi cc k t ln a (di dng m Ascii)C cha:K hiu \n : xung dng
K t EOF (End Of File) c m Ascii l 26: nm cui tp tinTp tin nh kiu (Typed File)
Gm nhiu phn t c cng kiu: char, int, long, struct c lu tr trn a di dng mt chui cc byte lin tc.
Tp tin khng nh kiu (Untyped File)Gm cc cu trc d liu m ta khng quan tm n ni dunghoc kiu ca n.Ta ch lu n cc yu t vt l ca tp tin nh ln, ...
Mt s khi nim v tp tin (file)(3)
Bin tp tind d h
-
8/14/2019 Lap Trinh Can Ban
267/290
Bin tp tinc dng i din cho mt tp tinCc thao tc ln tp tin s c thc hin thng qua bin ny
Con tr tp tin
Ti mi thi im, s c mt v tr ca tp tin m ti vicc/ghi thng tin s xy raTa hnh dung c 1 con tr ang ch n v tr Sau khi c/ghi xong d liu, con tr s chuyn dch thm mt phn t v pha cui tp tin.Sau phn t d liu cui cng ca tp tin l du kt thc tp tinEOF
Cc thao tc trn tp tin
Khai bo bin tp tin
-
8/14/2019 Lap Trinh Can Ban
268/290
Khai bo bin tp tinM tp tinng tp tin
Kim tra n cui tp tin hay cha?Di chuyn con tr tp tin v u tp tin - Hmrewind()
Khai bo bin tp tin
C php :
-
8/14/2019 Lap Trinh Can Ban
269/290
C php :FILE ;Cc bin trong danh sch phi l cc con tr v
c phn cch bi du phy(,).V d: FILE*f1,*f2;
M tp tin (1)
C php :
-
8/14/2019 Lap Trinh Can Ban
270/290
C php :FILE*fopen(char *Path, const char *Mode) ngha:
Tr v con tr tp tin ca tp tin c mTr vNULLnu c li
M tp tin (2)Path: chui ch ng dn n tp tin trn aT h i h h h i C i
-
8/14/2019 Lap Trinh Can Ban
271/290
Type: chui xc nh cch thc m tp tin s m. Cc gi trc th caMode:
M tp tin (3)
V d: M mt tp tin tn TEST txt ghiFILE*f
-
8/14/2019 Lap Trinh Can Ban
272/290
V d: M mt tp tin tn TEST.txt ghi.FILE*f;f = fopen(TEST.txt, w);if (f!=NULL){
// Cc cu lnh thao tc vi tp tin// ng tp tin}
=> m tp tin ghi
=> nu tp tin tn ti ri th tp tin s b xa v mt tp tin mi c to ra
ng tp tin
C php : int fclose(FILE *f)Ghi d li l i i l i
-
8/14/2019 Lap Trinh Can Ban
273/290
C php : int fclose(FILE *f)Ghi d liu cn li trong vng m vo tp tin v ng li tp tf l con tr tp tin c m bi hmfopen()Gi tr tr v l 0 bo rng vic ng tp tin thnh cng
Gi tr tr v lEOFnu c xut hin li
C php : int fcloseall()ng tt c cc tp tin li
Tr v tng s cc tp tin c ng li Nu khng thnh cng, kt qu tr v l EOF
-
8/14/2019 Lap Trinh Can Ban
274/290
Di chuyn con tr tp tin v utp tin - Hm rewind()
C php: id i d(FILE *f)
-
8/14/2019 Lap Trinh Can Ban
275/290
C php: voidrewind(FILE *f)
ngha:Lm cho con tr quay v u tp tin nh khi m n
Truy cp tp tin vn bn
Ghi d liu ln tp tin vn bn
-
8/14/2019 Lap Trinh Can Ban
276/290
Ghi d liu ln tp tin vn bnc d liu t tp tin vn bn
Ghi d liu ln tp tin vn bn (1)
Hm putc()
-
8/14/2019 Lap Trinh Can Ban
277/290
Hm putc()int putc(int c, FILE *f)
c dng ghi mt k t ln mt tp tin vn bnang c m (lin kt vi con tr f) lm vicc cha mAsciica k tHm ny tr vEOFnu gp li
Ghi d liu ln tp tin vn bn (2)
Hm fputs()
-
8/14/2019 Lap Trinh Can Ban
278/290
Hm fputs()int fputs(const char *buffer,FILE*f)
c dng ghi mt chui k t cha trong vngm ln tp tin vn bnHm ny tr v gi tr0 nu buffer cha chui rng vtr vEOFnu gp li
Ghi d liu ln tp tin vn bn (3)V d:Vit chng trnh ghi chui k t ln tp tin vn bnD:\\Baihat txt
-
8/14/2019 Lap Trinh Can Ban
279/290
D:\\Baihat.txt
Ghi d liu ln tp tin vn bn (3)
Hm fprintf()
-
8/14/2019 Lap Trinh Can Ban
280/290
Hm fprintf()fprintf(FILE*f,const char *format, varexpr)
c dng ghi d liu c nh dng ln tp tin vn bnformat: chui nh dng (ging vi cc nh dng ca hm printf())varexpr: danh sch cc biu thc, mi biu thc cch nhaudu phy (,)
c d liu t tp tin vn bn(1)
Hm getc() f
-
8/14/2019 Lap Trinh Can Ban
281/290
Hm getc()int getc(FILE *f)
c dng c d liu t tp tin vn bn ang c m lm vic (lin kt vi f)Hm ny tr v m Ascii ca mt k t c c (k cEOF)
c d liu t tp tin vn bn(2)Hm fgets()
char*fgets(char*buffer intn FILE*f)
-
8/14/2019 Lap Trinh Can Ban
282/290
char fgets(char buffer,intn, FILE f)
c dng c 1 chui k t t tp tin vn bn ang c m(lin kt vi con tr f)c cho n khi n k t hoc gp k t xung dng \n (kt ny cng c a vo chui kt qu) hay gp k t kt thcEOF (k t ny khng c a vo chui kt qu) buffer: ch n cng nh ln cha cc k t nhn cK t NULL (\0) t ng c thm vo cui chui kt qu ltrong vng mHm tr v a ch u tin ca vng m khi khng gp li vcha gp k t kt thc EOF. Ngc li, hm tr v gi tr NUL
c d liu t tp tin vn bn(3)
Hm fscanf()f f( f h f li )
-
8/14/2019 Lap Trinh Can Ban
283/290
Hm fscanf()fscanf(FILE*f,const char *format, varlist)
c dng c d liu t tp tin vn bn vo danhsch cc bin theo nh dng.format: chui nh dng (ging hm scanf())varlist: danh sch cc bin mi bin cch nhau du phy (,).
c d liu t tp tin vn bn(4)V d:Vit chng trnh chp tp tinD:\Baihat.txt trn sangtp tinD:\Baica.txt.
-
8/14/2019 Lap Trinh Can Ban
284/290
tp tinD:\Baica.txt.
Truy cp tp tin nh phn
Ghi d liu ln tp tin nh phn d li i h h
-
8/14/2019 Lap Trinh Can Ban
285/290
Ghi d liu ln tp tin nh phnc d liu t tp tin nh phnDi chuyn con tr tp tin
V d
Ghi d liu ln tp tin nh phn
Hm fwrite()si e t f rite(const oid*ptr si e t si e si e t nFILE*f)
-
8/14/2019 Lap Trinh Can Ban
286/290
Hm fwrite() size_t fwrite(const void*ptr, size_t size, size_t n,FILE*f)
ptr : con tr ch n vng nh cha thng tin cn ghi ln ttin.n: s phn t s ghi ln tp tin.size: kch thc ca mi phn t.f : con tr tp tin c m.Gi tr tr v ca hm ny l s phn t c ghi ln tp tGi tr ny bng n tr khi xut hin li.
c d liu t tp tin nh phn
Hm fread()size t fread(const void*ptr size t size size t nFILE*f)
-
8/14/2019 Lap Trinh Can Ban
287/290
Hm fread()size_t fread(const void*ptr, size_t size, size_t n,FILE*f)
ptr: con tr ch n vng nh s nhn d liu t tp ti
n: s phn t c c t tp tinsize: kch thc ca mi phn tf: con tr tp tin c m Gi tr tr v ca hm ny l s phn t c c tp tin. Gi tr ny bng n hay nh hn n nu chn cui tp tin hoc c li xut hin
Di chuyn con tr tp tinHm fseek()
int fseek(FILE*f long offset int whence)
-
8/14/2019 Lap Trinh Can Ban
288/290
int fseek(FILE*f,long offset, int whence)c dng di chuyn con tr tp tin n v tr ch nhf: con tr tp tin ang thao tcoffset: s byte cn dch chuyn con tr tp tin k t v tr trc . Pht u tin l v tr 0.whence: v tr bt u tnh offset, ta c th chn im xut pht l
Kt qu tr v ca hm l 0 nu vic di chuyn thnh cng. Nu khthnh cng, 1 gi tr khc 0 ( l 1 m li) c tr v.
V dVit chng trnh ghi ln tp tin CacSo.Dat 3 gi tr s (thcnguyn, nguyn di). Sau c cc s t tp tin va ghi v
-
8/14/2019 Lap Trinh Can Ban
289/290
g y , g y ) p ghin th ln mn hnh
Ht chng
-
8/14/2019 Lap Trinh Can Ban
290/290
Ht chng