lap trinh can ban

Upload: spy004

Post on 30-May-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 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