BÀI GIẢNG - expressmagazine.netexpressmagazine.net/sites/default/files/fileDevelopment/17206... · CÁC KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ LẬP TRÌNH C ... Các câu lệnh

  • Upload
    vuquynh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

  • B GIAO THNG VN TI

    TRNG I HC HNG HI

    B MN: KHOA HOC MAY TINH

    KHOA: CNG NGH THNG TIN

    BI GING

    K THUT LP TRNH C

    TN HC PHN : K THUT LP TRNH C

    M HC PHN : 17206

    TRNH O TO : I HC CHNH QUY

    DNG CHO SV NGNH : CNG NGH THNG TIN

    HI PHNG - 2008

  • 2

    MC LC MC LC .................................................................................................................................. 2

    CHNG 1. GII THIU ........................................................................................................ 6

    1.1. Gii thiu ngn ng lp trnh C. ...................................................................................... 6

    1.2. Thut ton v s khi ................................................................................................. 8

    CHNG 2. CC KHI NIM C BN V NGN NG LP TRNH C ......................... 9

    2.1. Cc phn t c bn ca ngn ng lp trnh C. ............................................................... 9

    2.2. Cu trc chung ca chng trnh C ............................................................................... 10

    2.3. Cc bc c bn khi lp chng trnh ........................................................................... 11

    2.4. Cc kiu d liu c s ................................................................................................... 12

    2.5. Cc khai bo trong chng trnh C................................................................................ 17

    2.6. Biu thc ........................................................................................................................ 21

    2.7. Cc hm ton hc .......................................................................................................... 22

    CHNG 3. CC CU LNH C BN .............................................................................. 23

    3.1. Lnh gn gi tr, lnh gp .............................................................................................. 23

    3.2. Hm vit d liu ra mn hnh ........................................................................................ 25

    3.3. Hm nhp d liu vo t bn phm ............................................................................... 27

    3.4. Cu lnh iu kin ......................................................................................................... 31

    3.5. Cu lnh la chn-lnh switch ...................................................................................... 34

    3.6. Cu lnh lp for ............................................................................................................. 36

    3.7. Cu lnh while ............................................................................................................... 37

    3.8. Cu lnh do while ..................................................................................................... 37

    3.9. Cu lnh break ............................................................................................................... 38

    3.10. Lnh continue .............................................................................................................. 38

    3.11. Ton t goto v nhn ( label ) ...................................................................................... 38

    CHNG 4. HM CHNG TRNH V CU TRC CHNG TRNH. ...................... 39

    4.1. Khi nim v chng trnh con ..................................................................................... 39

    4.2. Hm trong C .................................................................................................................. 39

    4.3. Chuyn tham s cho hm............................................................................................... 41

    4.4. Bin ton cc v bin a phng ................................................................................. 41

    4.5.Tnh quy ca hm ...................................................................................................... 42

    4.6. B tin x l C ............................................................................................................... 46

    CHNG 5. MNG V CC KIU D LIU C CU TRC ........................................ 50

    5.1.D liu kiu mng/con tr .............................................................................................. 50

    5.3. D liu kiu cu trc ..................................................................................................... 61

    CHNG 6. D LIU KIU TP ......................................................................................... 67

    6.1. Khi nim v tp tin ...................................................................................................... 67

    6.2. Cu trc v phn loi tp ............................................................................................... 67

  • 3

    6.3. To tp mi c/ghi d liu ...................................................................................... 68

    6.4. Mt s hm x l tp ca C ........................................................................................... 70

    6.5. Bi tp p dng .............................................................................................................. 77

    CHNG 7. HO ............................................................................................................ 78

    7.1. Gii thiu chung ............................................................................................................ 78

    7.2. Cc hm t mu, v im, t mu................................................................................ 80

    7.3. Cc hm v hnh c bn................................................................................................. 88

    TI LIU THAM KHO ........................................................................................................ 96

  • 4

    11.6. Tn hc phn: K thut lp trnh (C) Loi hc phn: 2

    B mn ph trch ging dy: Khoa hc My tnh Khoa ph trch: CNTT

    M hc phn: 17206 Tng s TC: 4

    TS tit L thuyt Thc hnh/Xemina T hc Bi tp ln n mn hc

    75 45 30 0 0 0

    iu kin tin quyt:

    Sinh vin phi hc xong cc hc phn sau mi c ng k hc phn ny:

    Tin i cng, Ton ri rc, i s, Gii tch 1.

    Mc tiu ca hc phn:

    Cung cp cho sinh vin kin thc v rn luyn k nng lp trnh da trn ngn ng lp

    trnh C

    Ni dung ch yu

    - Nhng vn c bn v ngn ng lp trnh C.

    - Cch thc xy dng mt chng trnh da trn ngn ng lp trnh C.

    - Cc vn v con tr, file v ha trong C

    Ni dung chi tit ca hc phn:

    TN CHNG MC

    PHN PHI S TIT

    TS LT TH/Xemina BT KT

    Chng 1: Gii thiu 2 2 0

    1.1. Gii thiu ngn ng lp trnh C.

    1.1.1. Xut x ca ngn ng lp trnh C.

    1.1.2. Trnh bin dch C v cch s dng.

    1.2. Thut ton v s khi

    Chng 2. Cc khi nim c bn v ngn ng C 8 4 4

    2.1. Cc phn t c bn ca ngn ng lp trnh C.

    2.2. Cu trc chung ca chng trnh C

    2.3. Cc bc c bn khi lp chng trnh

    2.4. Cc kiu d liu c s

    2.5. Cc khai bo trong chng trnh C

    2.6. Biu thc

    2.7. Cc hm ton hc

    Chng 3. Cc cu lnh iu khin ca C 13 7 5 1

    3.1. Lnh gn gi tr, lnh gp

    3.2. Hm vit d liu ra mn hnh

    3.3. Hm nhp d liu vo t bn phm

    3.4. Cu lnh iu kin

    3.5. Cu lnh la chn

    3.6. Cu lnh lp for

    3.7. Cu lnh lp while

    3.8. Cu lnh dowhile.

    3.9. Cu lnh break.

    3.10. Lnh continue

    3.11. Ton t goto v nhn (label)

    Chng 4. Hm 14 8 6

    4.1. Khi nim v chng trnh con

    4.2. Hm trong C

  • 5

    TN CHNG MC

    PHN PHI S TIT

    TS LT TH/Xemina BT KT

    4.3. Chuyn tham s cho hm

    4.4. Bin ton cc v bin a phng

    4.5. Tnh quy ca hm

    4.6. i dng lnh ca hm

    4.7. Mt s hm c bit

    Chng 5. Mng v kiu d liu c cu trc 21 12 8 1

    5.1. D liu kiu mng/con tr

    5.1.1. Mng 1 chiu v nhiu chiu

    5.1.2. Con tr v a ch

    5.1.3. Lin h gia mng v con tr

    5.1.4. Con tr v hm

    5.2. D liu kiu xu k t. Lin h gia con tr v

    xu k t

    5.3. D liu kiu bn ghi

    5.4. Mt s v d tng hp

    Chng 6. File 10 5 4 1

    6.1. Khi nim.

    6.2. Cu trc v phn loi tp.

    6.3. To tp mi c / ghi d liu.

    6.4. Mt s hm x l tp ca C.

    6.5. Bi tp p dng

    Chng 7. ho trong C 7 4 3

    7.1. Gii thiu chung

    7.2. Cc hm t mu, v im, t mu

    7.3. Cc hm v hnh c bn

    Nhim v ca sinh vin :

    Tham d cc bui thuyt trnh ca gio vin, t hc, t lm bi tp do gio vin giao,

    tham d cc bi kim tra nh k v cui k.

    Ti liu tham kho:

    1. Phm Vn t, K thut lp trnh C - C s v nng cao, NXB KHKT, 1998.

    2. Quch Tun Ngc, Ngn ng lp trnh C, NXB GD, 1998.

    3. Mt s website lin quan: http://www.codeproject.com,

    http://www.cprogramming.com,

    Hnh thc v tiu chun nh gi sinh vin:

    Hnh thc thi cui k : Thi vn p trn my tnh, thi gian lm bi 45 pht

    Sinh vin phi m bo cc iu kin theo Quy ch ca Nh trng v ca B

    Thang im: Thang im ch A, B, C, D, F

    im nh gi hc phn: Z = 0,3X + 0,7Y.

    Bi ging ny l ti liu chnh thc v thng nht ca B mn Khoa hc my tnh,

    Khoa Cng ngh thng tin v c dng ging dy cho sinh vin.

    Ngy ph duyt: / /20

    Trng B mn: ThS. Nguyn Hu Tun (k v ghi r h tn)

    http://www.codeproject.com/http://www.cprogramming.com/

  • 6

    CHNG 1. GII THIU

    1.1. Gii thiu ngn ng lp trnh C.

    1.1.1. Xut x ca ngn ng lp trnh C.

    Khong cui nhng nm 1960 u 1970 xut hin nhu cu cn c cc ngn ng bc cao h

    tr cho nhng nh tin hc trong vic xy dng cc phn mm h thng, h iu hnh. Ngn

    ng C ra i t , n c pht trin ti phng th nghim Bell. n nm 1978, gio trnh

    " Ngn ng lp trnh C " do chnh cc tc gi ca ngn ng l Dennish Ritchie v B.W.

    Kernighan vit, c xut bn v ph bin rng ri.

    C l ngn ng lp trnh vn nng. Ngoi vic C c dng vit h iu hnh UNIX,

    ngi ta nhanh chng nhn ra sc mnh ca C trong vic x l cho cc vn hin i ca tin

    hc. C khng gn vi bt k mt h iu hnh hay my no, v mc du n c gi l "

    ngn ng lp trnh h thng" v n c dng cho vic vit h iu hnh, n cng tin li cho

    c vic vit cc chng trnh x l s, x l vn bn v c s d liu.

    1.1.2. Trnh bin dch C v cch s dng..

    A. Turbo C (TC)

    1. Gii thiu chung TC Khi ng C cng nh mi chng trnh khc bng cch nhp p chut ln biu tng ca

    chng trnh. Khi chng trnh c khi ng s hin ra giao din gm c menu cng vic

    v mt khung ca s bn di phc v cho son tho. Mt con tr nhp nhy trong khung ca

    s v chng ta bt u nhp ni dung (vn bn) chng trnh vo trong khung ca s son

    tho ny. Mc ch ca gio trnh ny l trang b nhng kin thc c bn ca lp trnh thng

    qua NNLT C cho cc sinh vin mi bt u nn chng ti vn chn trnh by giao din ca

    cc trnh bin dch quen thuc l Turbo C hoc Borland C. V cc trnh bin dch khc c

    gi c th t tham kho trong cc ti liu lin quan.

    kt thc lm vic vi C (son tho, chy chng trnh ...) v quay v mi trng Windows

    chng ta n Alt-X.

    2. Giao din v ca s son tho ca TC

    a. M t chung Khi gi chy C trn mn hnh s xut hin mt menu x xung v mt ca s son tho. Trn

    menu gm c cc nhm chc nng: File, Edit, Search, Run, Compile, Debug, Project,

    Options, Window, Help. kch hot cc nhm chc nng, c th n Alt+ch ci biu th

    cho menu ca chc nng (l ch ci c gch di). V d m nhm chc nng File n

    Alt+F, sau dch chuyn hp sng n mc cn chn ri n Enter. thun tin cho NSD,

    mt s cc chc nng hay dng cn c gn vi mt t hp cc phm cho php ngi dng

    c th chn nhanh chc nng ny m khng cn thng qua vic m menu nh m t trn.

    Mt s t hp phm c th s c trnh by vo cui phn ny. Cc b chng trnh dch

    h tr ngi lp trnh mt mi trng tch hp tc ngoi chc nng son tho, n cn cung

    cp nhiu chc nng, tin ch khc gip ngi lp trnh va c th son tho vn bn chng

    trnh va gi chy chng trnh va g li Cc chc nng lin quan n son tho phn

    ln ging vi cc b son tho khc (nh WinWord) do vy chng ti ch trnh by tm tt

    m khng trnh by chi tit y.

    b. Cc chc nng son tho Ging hu ht cc b son tho vn bn, b son tho ca Turbo C hoc Borland C cng s

    dng cc phm sau cho qu trnh son tho:

    Dch chuyn con tr: cc phm mi tn cho php dch chuyn con tr sang tri, phi mt k

    t hoc ln trn, xung di 1 dng. dch chuyn nhanh c cc phm nh Home (v u

  • 7

    dng), End (v cui dng), PgUp, PgDn (ln, xung mt trang mn hnh). dch chuyn xa

    hn c th kt hp cc phm ny cng phm Control (Ctrl, ^) nh ^PgUp: v u tp, ^PgDn:

    v cui tp.

    Chn, xo, sa: Phm Insert cho php chuyn ch son tho gia chn v . Cc phm

    Delete, Backspace cho php xo mt k t ti v tr con tr v trc v tr con tr (xo li).

    Cc thao tc vi khi dng: nh du khi dng (thc cht l khi k t lin nhau bt

    k) ta a con tr n v tr u n Ctrl-KB v Ctrl-KK ti v tr cui. Cng c th thao tc

    nhanh hn bng cch gi phm Shift v dng ccphm dch chuyn con tr qut t v tr u

    n v tr cui, khi khi k t uc nh du s chuyn mu nn. Mt khi c nh du

    c th dng ct, dn vo mt ni khc trong vn bn hoc xo khi vn bn. thc hin

    thao tc ct dn, u tin phi a khi nh du vo b nh m bng nhm phm Shift-

    Delete (ct), sau dch chuyn con tr n v tr mi cn hin ni dung va ct v n t hp

    phm Shift-Insert. Mt on vn bn c ghi vo b nh m c th c dn nhiu ln vo

    nhiu v tr khc nhau bngcch lp li t hp phm Shift-Insert ti cc v tr khc nhau trong

    vn bn. xo mt khi dng nh du m khng ghi vo b nh m, dng t hp phm

    Ctrl-Delete. Khi mt ni dung mi ghi vo b nh m th n s xo (ghi ) ni dung c

    c, do vy cn cn nhc s dng phm Ctrl-Delete (xo v khng lu li ni dung va xo

    vo b m) v Shift-Delete (xo v lu li ni dung va xo) mt cch ph hp.

    T hp phm Ctrl-A rt thun li khi cn nh du nhanh ton b vn bn.

    c. Chc nng tm kim v thay th Chc nng ny dng dch chuyn nhanh con tr vn bn n t cn tm. thc hin tm

    kim bm Ctrl-QF, tm kim v thay th bm Ctrl-QA. Vo t hoc nhm t cn tm vo ca

    s Find, nhm thay th (nu dng Ctrl-QA) vo ca s Replace v nh du vo cc tu chn

    trong ca s bn di sau n Enter. Cc tu chn gm: khng phn bit ch hoa/thng,

    tm t c lp hay ng trong t khc, tm trong ton vn bn hay ch trong phn c nh

    du, chiu tm i n cui hay ngc v u vn bn, thay th c hi li hay khng hi li

    dch chuyn con tr n cc vng khc nhau trong mt menu hay ca s cha cc tu

    chn ta s dng phm Tab.

    d. Cc chc nng lin quan n tp Ghi tp ln a: Chn menu File\Save hoc phm F2. Nu tn tp cha c (cn mang tn

    Noname.cpp) my s yu cu cho tn tp. Phn m rng ca tn tp c mc nh l CPP.

    Son tho tp mi: Chn menu File\New. Hin ra ca s son tho trng v tn file tm thi

    ly l Noname.cpp.

    Son tho tp c: Chn menu File\Open hoc n phm F3, nhp tn tp hoc dch chuyn

    con tr trong vng danh sch tp bn di n tn tp cn son ri n Enter. Cng c th p

    dng cch ny son tp mi khi khng nhp vo tn tp c th.

    Ghi tp ang son tho ln a vi tn mi: Chn menu File\Save As v nhp tn tp mi

    vo ri n Enter.

    e. Chc nng dch v chy chng trnh Ctrl-F9: Khi ng chc nng dch v chy ton b chng trnh.

    F4: Chy chng trnh t u n dng lnh hin ti (ang cha con tr)

    F7: Chy tng lnh mt ca hm main(), k c cc lnh con trong hm.

    F8: Chy tng lnh mt ca hm main(). Khi mi li gi hm c xem l mt lnh

    (khng chy tng lnh trong cc hm c gi). Cc chc nng lin quan n dch chng

    trnh c th c chn thng qua menuCompile (Alt-C).

    f. Tm tt mt s phm nng hay dng Cc phm kch hot menu: Alt+ch ci i din cho nhm menu . V d Alt-F m menu

    File chn cc chc nng c th trong n nh Open (m file), Save (ghi file ln a), Print

    (in ni dung vn bn chng trnh ra my in), Alt-C m menu Compile chn cc chc

    nng dch chng trnh.

    Cc phm dch chuyn con tr khi son tho.

    F1: m ca s tr gip. y l chc nng quan trng gip ngi lp trnh nh tn lnh, c

  • 8

    php v cch s dng.

    F2: ghi tp ln a.

    F3: m tp c ra sa cha hoc son tho tp mi.

    F4: chy chng trnh n v tr con tr.

    F5: Thu hp/m rng ca s son tho.

    F6: Chuyn i gia cc ca s son tho.

    F7: Chy chng trnh theo tng lnh, k c cc lnh trong hm con.

    F8: Chy chng trnh theo tng lnh trong hm chnh.

    F9: Dch v lin kt chng trnh. Thng dng chc nng ny tm li c php ca

    chng trnh ngun trc khi chy.

    Alt-F7: Chuyn con tr v ni gy li trc .

    Alt-F8: Chuyn con tr n li tip theo.

    Ctrl-F9: Chy chng trnh.

    Ctrl-Insert: Lu khi vn bn c nh du vo b nh m.

    Shift-Insert: Dn khi vn bn trong b nh m vo vn bn ti v tr con tr.

    Shift-Delete: Xo khi vn bn c nh du, lu n vo b nh m.

    Ctrl-Delete: Xo khi vn bn c nh du (khng lu vo b nh m).

    Alt-F5: Chuyn sang ca s xem kt qu ca chng trnh va chy xong.

    Alt-X: thot C v li Windows.

    B. Dev C

    C. Visual C++

    1.2. Thut ton v s khi

    Khi nim: thut ton hay gii thut dng ch phng php hay cch thc

    (method) gii quyt vn .

    S d khi: s dng cc khi biu din thut ton

    Bi tp:

    1. V s khi gii thut gii phng trnh bc nht ax+b=0 2. V s khi gii thut gii bt phng trnh bc nht ax+b>0 3. V s khi gii thut gii phng trnh bc hai ax2+bx+c=0 4. V s khi gii thut tm c s chung ln nht ca 2 s nguyn dng 5. V s khi gii thut tm s nh nht ca 2 s

  • 9

    CHNG 2. CC KHI NIM C BN V NGN NG LP TRNH C

    2.1. Cc phn t c bn ca ngn ng lp trnh C.

    2.1.1. Tp k t dng trong ngn ng C

    Mi ngn ng lp trnh u c xy dng t mt b k t no . Cc k t c

    nhm li theo nhiu cch khc nhau to nn cc t. Cc t li c lin kt vi nhau theo

    mt qui tc no to nn cc cu lnh. Mt chng trnh bao gm nhiu cu lnh v th

    hin mt thut ton gii mt bi ton no . Ngn ng C c xy dng trn b k t sau

    :

    - 26 ch ci hoa : A B C .. Z

    - 26 ch ci thng : a b c .. z

    - 10 ch s : 0 1 2 .. 9

    - Cc k hiu ton hc : + - * / = ( )

    - K t gch ni : _

    - Cc k t khc : . , : ; [ ] {} ! \ & % # $ ...

    Du cch (space) dng tch cc t. V d ch VIET NAM c 8 k t, cn

    VIETNAM ch c 7 k t.

    Ch : Khi vit chng trnh, ta khng c s dng bt k k t no khc ngoi cc k t

    trn. V d nh khi lp chng trnh gii phng trnh bc hai ax2

    +bx+c=0 , ta cn tnh bit

    thc Delta = b2 - 4ac, trong ngn ng C khng cho php dng k t , v vy ta phi dng

    k hiu khc thay th.

    2.1.2. T kho: T kho l nhng t c s dng khai bo cc kiu d liu, vit

    cc ton t v cc cu lnh. Bng di y lit k cc t kho ca TURBO C :

    asm break case cdecl

    char const continue default

    do double else enum

    extern far float for

    goto huge if int

    interrupt long near pascal

    register return short signed

    sizeof static struct switch

    tipedef union unsigned void

    volatile while

    ngha v cch s dng ca mi t kho s c cp sau ny, y ta cn ch :

    - Khng c dng cc t kho t tn cho cc hng, bin, mng, hm ...

  • 10

    - T kho phi c vit bng ch thng, v d : vit t kho khai bo kiu nguyn

    l int ch khng phi l INT.

    2.1.3. Tn: Tn l mt khi nim rt quan trng, n dng xc nh cc i lng khc nhau

    trong mt chng trnh. Chng ta c tn hng, tn bin, tn mng, tn hm, tn con tr, tn

    tp, tn cu trc, tn nhn,...

    Tn c t theo qui tc sau: Tn l mt dy cc k t bao gm ch ci, s v gch ni. K

    t u tin ca tn phi l ch hoc gch ni. Tn khng c trng vi kho. di cc i

    ca tn theo mc nh l 32 v c th c t li l mt trong cc gi tr t 1 ti 32 nh chc

    nng : Option-Compiler-Source-Identifier length khi dng TURBO C.

    V d : Cc tn ng : a_1 delta x1 _step GAMA

    Cc tn sai: 3MN K t u tin l s

    m#2 S dng k t #

    f(x) S dng cc du ( )

    do Trng vi t kho

    te ta S dng du trng

    Y-3 S dng du -

    Ch : Trong TURBO C, tn bng ch thng v ch hoa l khc nhau v d tn AB khc

    vi ab. Trong C, ta thng dng ch hoa t tn cho cc hng v dng ch thng t

    tn cho hu ht cho cc i lng khc nh bin, bin mng, hm, cu trc. Tuy nhin y

    khng phi l iu bt buc.

    2.2. Cu trc chung ca chng trnh C

    Mt chng trnh C c th c t trong mt hoc nhiu file vn bn khc nhau. Mi file

    vn bn cha mt s phn no ca chng trnh. Vi nhng chng trnh n gin v

    ngn thng ch cn t chng trn mt file.

    Mt chng trnh gm nhiu hm, mi hm ph trch mt cng vic khc nhau ca chng

    trnh. c bit trong cc hm ny c mt hm duy nht c tn hm l main(). Khi chy

    chng trnh, cc cu lnh trong hm main() s c thc hin u tin. Trong hm main() c

    th c cc cu lnh gi n cc hm khc khi cn thit, v cc hm ny khi chy li c th gi

    n cc hm khc na c vit trong chng trnh (tr vic gi quay li hm main()). Sau

    khi chy n lnh cui cng ca hm main() chng trnh s kt thc.

    C th, thng thng mt chng trnh gm c cc ni dung sau:

    Phn khai bo cc tp nguyn mu: khai bo tn cc tp cha nhng thnh phn c sn (nh

    cc hng chun, kiu chun v cc hm chun) m NSD s dng trong chng trnh.

    Phn khai bo cc kiu d liu, cc bin, hng ... do NSD nh ngha v c dng chung

    trong ton b chng trnh.

    Danh sch cc hm ca chng trnh (do NSD vit, bao gm c hm main()). Cu trc chi

    tit ca mi hm s c cp n trong chng 4.

    Di y l mt on chng trnh n gin ch gm 1 hm chnh l hm main().

    Ni dung ca chng trnh dng in ra mn hnh dng ch: Cho cc bn, by gi l 2gi.

    #include // khai bo tp nguyn mu c s dng hm printf, scanf

    void main()

  • 11

    {

    int h = 2; // Khai bo v khi to bin h = 2

    printf( Cho cc bn, by gi l %d gi,h) ;// in ra mn hnh

    }

    Dng u tin ca chng trnh l khai bo tp nguyn mu stdio.h. y l khai bo bt buc

    v trong chng trnh c s dng hm chun printf() (in ra mn hnh), hm ny c khai bo

    v nh ngha sn trong stdio.h.

    Khng ring hm main(), mi hm khc u phi bt u tp hp cc cu lnh ca mnh bi

    du { v kt thc bi du }. Tp cc lnh bt k bn trong cp du ny c gi l khi lnh.

    Khi lnh l mt c php cn thit trong cc cu lnh c cu trc nh ta s thy trong cc

    chng tip theo.

    Vy ni tm li cu trc c bn ca chng trnh nh sau :

    Cc #include

    Cc #define

    Khai bo cc i tng d liu ngoi ( bin, mng, cu trc vv..).

    Khai bo nguyn mu cc hm.

    Hm main().

    nh ngha cc hm ( hm main c th t sau hoc xen vo gia cc hm khc

    ).

    2.3. Cc bc c bn khi lp chng trnh

    2.3.1. Qui trnh vit v thc hin chng trnh Trc khi vit v chy mt chng trnh thng thng chng ta cn:

    1. Xc nh yu cu ca chng trnh. Ngha l xc nh d liu u vo (input) cung cp cho

    chng trnh v tp cc d liu cn t c tc u ra (output).Cc tp hp d liu ny ngoi

    cc tn gi cn cn xc nh kiu ca n.V d gii mt phng trnh bc 2 dng: ax2 + bx

    + c = 0, cn bo cho chng trnh bit d liu u vo l a, b, c v u ra l nghim x1 v x2

    ca phng trnh. Kiu ca a, b, c, x1, x2 l cc s thc.

    2. Xc nh thut ton gii.

    3. C th ho cc khai bo kiu v thut ton thnh dy cc lnh, tc vit thnh chng trnh

    thng thng l trn giy, sau bt u son tho vo trong my. Qu trnh ny c gi l

    son tho chng trnh ngun.

    4. Dch chng trnh ngun tm v sa cc li gi l li c php.

    5. Chy chng trnh, kim tra kt qu in ra trn mn hnh. Nu sai, sa li chng trnh, dch

    v chy li kim tra. Qu trnh ny c thc hin lp i lp li cho n khi chng trnh

    chy tt theo yu cu ra ca NSD.

    2.3.2. Son tho tp chng trnh ngun Son tho chng trnh ngun l mt cng vic n gin: g ni dung ca chng trnh (

    vit ra giy) vo trong my v lu li n ln a. Thng thng khi lu li chng trnh ln

    a ln sau s khng cn phi g li. C th son chng trnh ngun trn cc b son tho

    (editor) khc nhng phi chy trong mi trng tch hp C++ (Borland C, Turbo C). Mc

    ch ca son tho l to ra mt vn bn chng trnh v a vo b nh ca my. Vn bn

    chng trnh cn c trnh by sng sa, r rng. Cc cu lnh cn ging thng ct theo cu

    trc ca lnh (cc lnh cha trong mt lnh cu trc c trnh by tht vo trong so vi im

    bt u ca lnh). Cc ch thch nn ghi ngn gn, r ngha v ph hp.

    2.3.3. Dch chng trnh Sau khi son tho xong chng trnh ngun, bc tip theo thng l dch (n t hp phm

  • 12

    Alt-F9) tm v sa cc li gi l li c php. Trong khi dch C++ s t con tr vo ni gy

    li (vit sai c php) trong vn bn. Sau khi sa xong mt li NSD c th dng Alt-F8

    chuyn con tr n li tip theo hoc dch li. chuyn con tr v ngc li li trc c

    th dng Alt-F7. Qu trnh sa li dch c lp li cho n khi vn bn c sa ht

    li c php.

    Sn phm sau khi dch l mt tp mi gi l chng trnh ch c ui EXE tc l tp m

    my thc hin.Tp ny c th lu tm thi trong b nh phc v cho qu trnh chy

    chng trnh hoc lu li trn a tu theo tu chn khi dch ca NSD. Trong v sau khi dch,

    C++ s hin mt ca s cha thng bo v cc li (nu c), hoc thng bo chng trnh

    c dch thnh cng (khng cn li). Cc li ny c gi l li c php.

    dch chng trnh ta chn menu \Compile\Compile hoc \Compile\Make hoc nhanh

    chng hn bng cch n t hp phm Alt-F6.

    2.3.4. Chy chng trnh n Ctrl-F9 chy chng trnh, nu chng trnh cha dch sang m my, my s t ng

    dch li trc khi chy. Kt qu ca chng trnh s hin ra trong mt ca s kt qu NSD

    kim tra. Nu kt qu cha c nh mong mun, quay li vn bn sa v li chy li

    chng trnh. Qu trnh ny c lp li cho n khi chng trnh chy ng nh yu cu

    ra. Khi chng trnh chy, ca s kt qu s hin ra tm thi che khut ca s son tho.

    Sau khi kt thc chy chng trnh ca s son tho s t ng hin ra tr li v che khut

    ca s kt qu. xem li kt qu hin n Alt-F5 (hoc thm lnh getch() vo cui hm

    main()). Sau khi xem xong quay li ca s son tho n phm bt k.

    2.4. Cc kiu d liu c s

    Trong C s dng cc cc kiu d liu c s sau :

    2.4.1. Kiu k t (char):

    Mt gi tr kiu char chim 1 byte ( 8 bit ) v biu din c mt k t thng qua bng

    m ASCII. V d:

    K t M ASCII

    0 048

    1 049

    2 050

    A 065

    B 066

    a 097

    b 098

    C hai kiu d liu char : kiu signed char v unsigned char.

    Kiu Phm vi biu din S k t Kch thc

    char (signed char ) -128 n 127 256 1 byte

    unsigned char 0 n 255 256 1 byte

    V d sau minh ho s khc nhau gia hai kiu d liu trn. Xt on chng trnh

    sau:

    char ch1;

  • 13

    unsigned char ch2;

    ......

    ch1=200; ch2=200;

    Khi thc cht :

    ch1=-56;

    ch2=200;

    Nhng c ch1 v ch2 u biu din cng mt k t c m 200.

    Phn loi k t :

    C th chia 256 k t lm ba nhm :

    Nhm 1: Nhm cc k t iu khin c m t 0 n 31. Chng hn k t m 13 dng

    chuyn con tr v u dng, k t 10 chuyn con tr xung dng di ( trn cng mt ct

    ). Cc k t nhm ny ni chung khng hin th ra mn hnh.

    Nhm 2 : Nhm cc k t vn bn c m t 32 n 126. Cc k t ny c th c

    a ra mn hnh hoc my in.

    Nhm 3 : Nhm cc k t ho c m s t 127 n 255. Cc k t ny c th a

    ra mn hnh nhng khng in ra c ( bng cc lnh DOS ).

    2.4.2. Kiu s nguyn :

    Trong C cho php s dng s nguyn kiu int, s nguyn di kiu long v s nguyn

    khng du kiu unsigned. Kch c v phm vi biu din ca chng c ch ra trong bng

    di y :

    Kiu Phm vi biu din Kch thc

    int -32768 n 32767 2 byte

    unsigned int 0 n 65535 2 byte

    long -2147483648 n 2147483647 4 byte

    unsigned long 0 n 4294967295 4 byte

    Ch : Kiu k t cng c th xem l mt dng ca kiu nguyn.

    2.4.3. Kiu du phy ng (s thc):

    Trong C cho php s dng ba loi d liu du phy ng, l float, double v long

    double. Kch c v phm vi biu din ca chng c ch ra trong bng di y :

    Kiu Phm vi biu din S ch s

    c ngha

    Kch

    thc

    float 3.4E-38 n 3.4E+38 7 n 8 4 byte

    double 1.7E-308 n 1.7E+308 15 n 16 8 byte

    long double 3.4E-4932 n 1.1E4932 17 n 18 10 byte

  • 14

    Gii thch:

    My tnh c th lu tr c cc s kiu float c gi tr tuyt i t 3.4E-38 n

    3.4E+38. Cc s c gi tr tuyt i nh hn3.4E-38 c xem bng 0. Phm vi biu din ca

    s double c hiu theo ngha tng t.

    Ch : Trong C khng c kiu logic Boolean (th hin gi tr True, False). C s dng kiu s

    nguyn xy dng kiu logic, 0 ng vi False, 0 ng vi tr True. V d: biu thc 6>8

    nhn gi tr 0, 6>3 nhn gi tr 1.

    2.4.4. nh ngha kiu bng typedef :

    Cng dng: T kho typedef dng t tn cho mt kiu d liu. Tn kiu s c dng

    khai bo d liu sau ny. Nn chn tn kiu ngn v gn d nh. Ch cn thm t kho

    typedef vo trc mt khai bo ta s nhn c mt tn kiu d liu v c th dng tn ny

    khai bo cc bin, mng, cu trc, vv...

    Cch vit: Vit t kho typedef, sau kiu d liu ( mt trong cc kiu trn ), ri n tn

    ca kiu. V d cu lnh:

    typedef int nguyen;

    s t tn mt kiu int l nguyen. Sau ny ta c th dng kiu nguyen khai bo cc bin,

    cc mng int nh v d sau ;

    nguyen x, y;

    2.4.5. Cc php ton s hc, quan h v logic

    Cc php ton s hc.

    Cc php ton hai ngi s hc l

    Php ton nghi V d

    + Php cng a+b

    - Php tr a-b

    * Php nhn a*b

    / Php chia a/b

    ( Chia s nguyn s cht phn thp phn )

    % Php ly phn d a%b

    ( Cho phn d ca php chia a cho b )

    C php ton mt ngi - v du -(a+b) s o gi tr ca php cng (a+b).

    V d :11/3=3

    11%3=2

    -(2+6)=-8

    Cc php ton + v - c cng th t u tin, c th t u tin nh hn cc php * , / ,

    % v c ba php ny li c th t u tin nh hn php tr mt ngi.

  • 15

    Cc php ton s hc c thc hin t tri sang phi. S u tin v kh nng kt hp

    ca php ton c ch ra trong mt mc sau ny

    Cc php ton quan h v logic :

    Php ton quan h v logic cho ta gi tr ng ( 1 ) hoc gi tr sai ( 0 ). Ni cch khc,

    khi cc iu kin nu ra l ng th ta nhn c gi tr 1, tri li ta nhn gi tr 0.

    Cc php ton quan h l :

    Php ton ngha V d

    > So snh ln hn a>b

    4>5 c gi tr 0

    >= So snh ln hn hoc bng a>=b

    6>=2 c gi tr 1

    < So snh nh hn a

  • 16

    0 0 0 0

    Cc php quan h c s u tin nh hn so vi ! nhng ln hn so vi && v ||, v vy

    biu thc nh: (ad) c th vit li thnh: ad

    Ch : C a v b c th l nguyn hoc thc.

    Php ton tng gim :

    C a ra hai php ton mt ngi tng v gim cc bin ( nguyn v thc ). Ton t

    tng l ++ s cng 1 vo ton hng ca n, ton t gim -- th s tr ton hng i 1.

    V d: n=5

    ++n Cho ta n=6

    --n Cho ta n=4

    Ta c th vit php ton ++ v -- trc hoc sau ton hng nh sau : ++n, n++, --n, n--.

    S khc nhau ca ++n v n++ ch: trong php n++ th tng sau khi gi tr ca n c s

    dng, cn trong php ++n th n c tng trc khi s dng. S khc nhau gia n-- v --n

    cng nh vy.

    V d: n=5

    x=++n Cho ta x=6 v n=6

    x=n++ Cho ta x=5 v n=6

    Th t u tin cc php ton :

    Cc php ton c u tin khc nhau, iu ny c ngha trong cng mt biu thc

    s c mt s php ton ny c thc hin trc mt s php ton khc.

    Th t u tin ca cc php ton c trnh by trong bng sau :

    TT Php ton Trnh t kt hp

    1 () [] -> Tri qua phi

    2 ! ~ & * - ++ -- (type ) sizeof Phi qua tri

    3 * ( php nhn ) / % Tri qua phi

    4 + - Tri qua phi

    5 > Tri qua phi

    6 < >= Tri qua phi

    7 == != Tri qua phi

    8 & Tri qua phi

    9 ^ Tri qua phi

    10 | Tri qua phi

    11 && Tri qua phi

    12 || Tri qua phi

  • 17

    13 ?: Phi qua tri

    14 = += -= *= /= %= = &= ^= |= Phi qua tri

    15 , Tri qua phi

    Ch thch: Cc php ton tn mt dng c cng th t u tin, cc php ton hng trn c

    s u tin cao hn cc s hng di. i vi cc php ton cng mc u tin th trnh t

    tnh ton c th t tri qua phi hay ngc li c ch ra trong ct trnh t kt hp.

    V d: *--px=*(--px) ( Phi qua tri )

    8/4*6=(8/4)*6 ( Tri qua phi )

    Nn dng cc du ngoc trn vit biu thc mt cch chnh xc.

    Cc php ton l :

    Dng 1

    [ ] Dng biu din phn t mng, v d : a[i][j]

    . Dng biu din thnh phn cu trc, v d : ht.ten

    -> Dng biu din thnh phn cu trc thng qua con tr

    Dng 2

    * Dng khai bo con tr, v d : int *a

    & Php ton ly a ch, v d : &x

    ( type) l php chuyn i kiu, v d : (float)(x+y)

    Dng 15

    Ton t , thng dng vit mt dy biu thc trong ton t for.

    2.5. Cc khai bo trong chng trnh C

    2.5.1. Hng: Hng l cc i lng m gi tr ca n khng thay i trong qu trnh tnh

    ton.

    Tn hng: Nguyn tc t tn hng ta xem xt trong mc t tn phn trc.

    t tn mt hng, ta dng dng lnh sau:

    khai bo hng ta dng cc cu khai bo sau:

    #define tn_hng gi_tr_hng hoc:

    const tn_hng = gi_tr_hng ; V d:

    #define sosv 50

    #define MAX 100

    const sosv = 50 ;

    Lc ny, tt c cc tn MAX trong chng trnh xut hin sau ny u c thay bng

    100. V vy, ta thng gi MAX l tn hng, n biu din s 100.

    Mt v d khc : #define pi 3.141593

    t tn cho mt hng float l pi c gi tr l 3.141593.

  • 18

    Cc loi hng :

    Hng int: Hng int l s nguyn c gi tr trong khong t -32768 n 32767.

    V d : #define number1 -50 nh nghi hng int number1 c gi tr l -50

    #define sodem 2732 nh nghi hng int sodem c gi tr l 2732

    Ch : Cn phn bit hai hng 5056 v 5056.0 : y 5056 l s nguyn cn 5056.0 l hng

    thc.

    Hng long: Hng long l s nguyn c gi tr trong khong t -2147483648 n 2147483647.

    Hng long c vit theo cch : 1234L hoc 1234l ( thm L hoc l vo ui )

    Mt s nguyn vt ra ngoi min xc nh ca int cng c xem l long.

    V d : #define sl 8865056L nh nghi hng long sl c gi tr l 8865056

    #define sl 8865056 nh nghi hng long sl c gi tr l 8865056

    Hng int h 8: Hng int h 8 c vit theo cch 0c1c2c3.... y ci l mt s nguyn dng

    trong khong t 1 n 7. Hng int h 8 lun lun nhn gi tr dng.

    V d: #define h8 0345 nh nghi hng int h 8 c gi tr l

    3*8*8+4*8+5=229

    Hng int h 16: Trong h ny ta s dng 16 k t : 0,1..,9,A,B,C,D,E,F.

    Cch vit Gi tr

    a hoc A 10

    b hoc B 11

    c hoc C 12

    d hoc D 13

    e hoc E 14

    f hoc F 15

    Hng s h 16 c dng 0xc1c2c3... hc 0Xc1c2c3... y ci l mt s trong h 16.

    V d : #define h16 0xa5

    #define h16 0xA5

    #define h16 0Xa5

    #define h16 0XA5

    Cho ta cc hng s h16 trong h 16 c gi tr nh nhau. Gi tr ca chng trong h 10 l:

    10*16+5=165.

    Hng k t: Hng k t l mt k t ring bit c vit trong hai du nhy n, v d 'a'.

    Gi tr ca 'a' chnh l m ASCII ca ch a. Nh vy gi tr ca 'a' l 97. Hng k t c th

    tham gia vo cc php ton nh mi s nguyn khc. V d : '9'-'0'=57-48=9

  • 19

    V d : #define kt 'a' nh nghi hng k t kt c gi tr l 97

    Hng k t cn c th c vit theo cch sau: ' \c1c2c3' .Trong c1c2c3 l mt s

    h 8 m gi tr ca n bng m ASCII ca k t cn biu din.

    V d : ch a c m h 10 l 97, i ra h 8 l 0141. Vy hng k t 'a' c th vit di dng

    '\141'. i vi mt vi hng k t c bit ta cn s dng cch vit sau ( thm du \ ) :

    Cch vit K t

    '\'' '

    '\"' "

    '\\' \

    '\n' \n (chuyn dng )

    '\0' \0 ( null )

    '\t' Tab

    '\b' Backspace

    '\r' CR ( v u dng )

    '\f' LF ( sang trang )

    Ch : Cn phn bit hng k t '0' v '\0'. Hng '0' ng vi ch s 0 c m ASCII l 48,

    cn hng '\0' ng vi kt \0 ( thng gi l k t null ) c m ASCII l 0.

    Hng k t thc s l mt s nguyn, v vy c th dng cc s nguyn h 10 biu

    din cc k t, v d lnh printf("%c%c",65,66) s in ra AB.

    Hng xu k t: Hng xu k t l mt dy k t bt k t trong hai du nhy kp.

    V d : #define xau1 "Ha noi"

    #define xau2 "My name is Giang"

    Xu k t c lu tr trong my di dng mt bng c cc phn t l cc k t

    ring bit. Trnh bin dch t ng thm k t null \0 vo cui mi xu ( k t \0 c xem l

    du hiu kt thc ca mt xu k t ).

    Ch : Cn phn bit hai hng 'a' v "a". 'a' l hng k t c lu tr trong 1 byte, cn "a" l

    hng xu k t c lu tr trong 1 mng hai phn t : phn t th nht cha ch a cn phn

    t th hai cha \0.

    2.5.2. Bin. L i lng m gi tr c th thay i c trong chng trnh. Mi bin cn

    phi c khai bo trc khi a vo s dng, gi tr ca bin c th thay i c trong

    chng trnh. Vic khai bo bin c thc hin theo mu sau:

    Kiu_d_liu_ca_bin tn bin ;

    V d : int a,b,c; Khai bo ba bin int l a,b,c

    long dai,mn; Khai bo hai bin long l dai v mn

  • 20

    char kt1,kt2; Khai bo hai bin k t l kt1 v kt2

    float x,y Khai bo hai bin float l x v y

    double canh1, canh2; Khai bo hai bin double l canh1 v canh2

    Bin kiu int ch nhn c cc gi tr kiu int. Cc bin khc cng c ngha tng

    t. Cc bin kiu char ch cha c mt k t. lu tr c mt xu k t cn s dng

    mt mng kiu char.

    V tr ca khai bo bin: Cc khai bo cn phi c t ngay sau du { u tin ca thn

    hm v cn ng trc mi cu lnh khc. Sau y l mt v d v khai bo bin sai :

    ( Khi nim v hm v cu trc chng trnh s nghin cu sau ny)

    main()

    {

    int a,b,c;

    a=2;

    int d; /* V tr ca khai bo sai */

    .....

    }

    Khi u cho bin: Nu trong khai bo ngay sau tn bin ta t du = v mt gi tr no

    th y chnh l cch va khai bo va khi u cho bin.

    V d : int a, b=20, c, d=40;

    float e=-55.2, x=27.23, y, z, t=18.98;

    Vic khi u v vic khai bo bin ri gn gi tr cho n sau ny l hon ton tng ng.

    Ly a ch ca bin: Mi bin c cp pht mt vng nh gm mt s byte lin tip. S

    hiu ca byte u chnh l a ch ca bin. a ch ca bin s c s dng trong mt s

    hm ta s nghin cu sau ny ( v d nh hm scanf ). ly a ch ca mt bin ta s dng

    php ton: &tn_bin

    2.5.3. Chuyn i kiu gi tr:

    Vic chuyn i kiu gi tr thng din ra mt cch t ng trong hai trng hp sau :

    + Khi gn biu thc gm cc ton hng khc kiu.

    + Khi gn mt gi tr kiu ny cho mt bin ( hoc phn t mng ) kiu khc. iu

    ny xy ra trong ton t gn, trong vic truyn gi tr cc tham s thc s cho cc i.

    Ngoi ra, ta c th chuyn t mt kiu gi tr sang mt kiu bt k m ta mun bng

    php chuyn sau: ( type ) biu thc

    V d : (float) (a+b)

    Chuyn i kiu trong biu thc :

  • 21

    Khi hai ton hng trong mt php ton c kiu khc nhau th kiu thp hn s c

    nng thnh kiu cao hn trc khi thc hin php ton. Kt qu thu c l mt gi tr kiu

    cao hn. Chng hn : Gia int v long th int chuyn thnh long. Gia int v float th int

    chuyn thnh float. Gia float v double th float chuyn thnh double.

    V d: 1.5*(11/3)=4.5

    1.5*11/3=5.5

    (11/3)*1.5=4.5

    Chuyn i kiu thng qua php gn :

    Gi tr ca v phi c chuyn sang kiu v tri l kiu ca kt qu. Kiu int c

    th c c chuyn thnh float. Kiu float c th chuyn thnh int do cht i phn thp

    phn. Kiu double chuyn thnh float bng cch lm trn. Kiu long c chuyn thnh int

    bng cch ct b mt vi ch s.

    V d :int n;

    n=15.6 gi tr ca n l 15

    i kiu dng (type)biu thc :

    Theo cch ny, kiu ca biu thc c i thnh kiu type theo nguyn tc trn.

    V d : Php ton : (int)a

    cho mt gi tr kiu int. Nu a l float th y c s chuyn i t float sang int. Ch

    rng bn thn kiu ca a vn khng b thay i. Ni cch khc, a vn c kiu float nhng

    (int)a c kiu int.

    i vi hm ton hc ca th vin chun, th gi tr ca i v gi tr ca hm u c

    kiu double, v vy tnh cn bc hai ca mt bin nguyn n ta phi dng php p kiu

    chuyn kiu int sang double nh sau : sqrt((double)n)

    Php p kiu c cng s u tin nh cc ton t mt ngi.

    Ch :Mun c gi tr chnh xc trong php chia hai s nguyn cn dng php p kiu :

    (float)a/b

    i gi tr thc r sang nguyn, ta dng: (int)(r+0.5)

    Ch th t u tin:

    (int)1.4*10=1*10=10

    (int)(1.4*10)=(int)14.0=14

    2.6. Biu thc

    Biu thc l dy k hiu kt hp gia cc ton hng, php ton v cp du () theo mt qui tc

    nht nh. Cc ton hng l hng, bin, hm. Biu thc cung cp mt cch thc tnh gi tr

    mi da trn cc ton hng v ton t trong biu thc. Nh vy hng, bin, phn t mng v

    hm cng c xem l biu thc.

    V d:

  • 22

    (x + y) * 2 - 4 ;

    3 - x + sqrt(y) ;

    (-b + sqrt(delta)) / (2*a) ;

    Trong C, ta c hai khi nim v biu thc :

    Biu thc gn.

    Biu thc iu kin.

    Biu thc c phn loi theo kiu gi tr: nguyn v thc. Trong cc mnh logic,

    biu thc c phn thnh ng ( gi tr khc 0 ) v sai ( gi tr bng 0, chng ta thng quy

    c l 1 ).

    Biu thc thng c dng trong:

    + V phi ca cu lnh gn.

    + Lm tham s thc s ca hm.

    + Lm ch s.

    + Trong cc ton t ca cc cu trc iu khin.

    Ti y, ta c hai khi nim chnh to nn biu thc l ton hng v php ton.

    Ton hng gm: hng, bin, phn t mng v hm trc y ta xt. Di y ta s ni n

    cc php ton. Hm s c cp trong chng sau.

    2.7. Cc hm ton hc

    2.7.1. Cc hm s hc abs(x), labs(x), fabs(x) : tr li gi tr tuyt i ca mt s nguyn, s nguyn di v s thc.

    pow(x, y) : hm m, tr li gi tr x ly tha y (xy).

    exp(x) : hm m, tr li gi tr e m x (ex).

    log(x), log10(x) : tr li lgarit c s e v lgarit thp phn ca x (lnx, logx) .

    sqrt(x) : tr li cn bc 2 ca x.

    atof(s_number) : tr li s thc ng vi s vit di dng xu k t s_number.

    2.7.2. Cc hm lng gic sin(x), cos(x), tan(x) : tr li cc gi tr sinx, cosx, tgx.

    Bi tp:

    1. Vit chng trnh s dng cc hm ton hc tnh ton gi tr mt s biu thc 2. Tm hiu cch thc dch mt chng trnh bng mt trong cc chng trnh dch TC,

    C-Free, Dev C,

  • 23

    CHNG 3. CC CU LNH C BN

    3.1. Lnh gn gi tr, lnh gp

    Lnh gn gi tr:

    Biu thc gn (lnh gn) l biu thc c dng: v = e

    Trong v l mt bin ( hay phn t mng ), e l mt biu thc. Gi tr ca biu thc

    gn l gi tr ca e, kiu ca n l kiu ca v. Nu t du ; vo sau biu thc gn ta s thu

    c php ton gn c dng: v = e;

    Biu thc gn c th s dng trong cc php ton v cc cu lnh nh cc biu thc

    khc. V d nh khi ta vit a=b=5;

    th iu c ngha l gn gi tr ca biu thc b=5 cho bin a. Kt qa l b=5 v a=5.

    Hon ton tng t nh: a=b=c=d=6; gn 6 cho c a, b, c v d

    V d: z=(y=2)*(x=6); { y * l php ton nhn } gn 2 cho y, 6 cho x v nhn hai

    biu thc li cho ta z=12.

    Lnh gp (khi lnh):

    Mt cu lnh trong C c thit lp t cc t kho v cc biu thc v lun lun c kt

    thc bng du chm phy. Cc v d vo/ra hoc cc php gn to thnh nhng cu lnh n

    gin nh:

    x = 3 + x ;

    y = (x = sqrt(x)) + 1 ;

    printf(x = %4d, y=%4.2f, x, y );

    Cc cu lnh c php vit trn cng mt hoc nhiu dng. Mt s cu lnh c gi l lnh

    c cu trc, tc bn trong n li cha dy lnh khc. Dy lnh ny phi c bao gia cp du

    ngoc {} v c gi l khi lnh. V d tt c cc lnh trong mt hm (nh hm main()) lun

    lun l mt khi lnh. Mt c im ca khi lnh l cc bin c khai bo trong khi lnh

    no th ch c tc dng trong khi lnh .

    Mt dy cc cu lnh c bao bi cc du { } gi l mt khi lnh. V d :

    {

    a=2;

    b=3;

    printf("\n%6d%6d",a,b);

    }

    TURBO C xem khi lnh cng nh mt cu lnh ring l. Ni cch khc, ch no vit c

    mt cu lnh th cng c quyn t mt khi lnh.

    Khai bo u khi lnh :

    Cc khai bo bin v mng chng nhng c th t u ca mt hm m cn c th

    vit u khi lnh :

    {

    int a, b;

  • 24

    float x, y, z;

    a=b=3;

    x=5.5; y=a*x;

    z=b*x;

    printf("\n y= %8.2f\n z=%8.2f",y,z);

    }

    S lng nhau ca cc khi lnh v phm vi hot ng ca cc bin v mng :

    Bn trong mt khi lnh li c th vit lng khi lnh khc. S lng nhau theo cch

    nh vy l khng hn ch. Khi my bt u lm vic vi mt khi lnh th cc bin v mng

    khai bo bn trong n mi c hnh thnh v c hnh thnh v c cp pht b nh. Cc

    bin ny ch tn ti trong thi gian my lm vic bn trong khi lnh v chng lp tc bin

    mt ngay sau khi my ra khi khi lnh. Vy: Gi tr ca mt bin hay mt mng khai

    bo bn trong mt khi lnh khng th a ra s dng bt k ch no bn ngoi khi lnh

    .

    bt k ch no bn ngoi mt khi lnh ta khng th can thip n cc bin v cc

    mng c khai bo bn trong khi lnh. Nu bn trong mt khi ta dng mt bin hay mt

    mng c tn l a th iu ny khng lm thay i gi tr ca mt bin khc cng c tn l a (

    nu c ) c dng u bn ngoi khi lnh ny. Nu c mt bin c khai bo

    ngoi mt khi lnh v khng trng tn vi cc bin khai bo bn trong khi lnh ny th bin

    cng c th s dng c bn trong cng nh bn ngoi khi lnh.

    V d : Xt on chng trnh sau :

    {

    int a=5,b=2;

    {

    int a=4;

    b=a+b;

    printf("\n a trong =%3d b=%3d",a,b);

    }

    printf("\n a ngoai =%3d b=%3d",a,b);

    }

    Khi on chng trnh s in kt qu nh sau :

    a trong =4 b=6

    a ngoi =5 b=6

    Do tnh cht bin a trong v ngoi khi lnh.

  • 25

    3.2. Hm vit d liu ra mn hnh

    3.2.1. Hm putchar ():

    a mt k t ra thit b ra chun, ni chung l mn hnh, ta s dng hm putchar()

    Cch dng: Dng cu lnh sau: putchar(ch);

    Cng dng: a k t ch ln mn hnh ti v tr hin ti ca con tr. K t s c hin th

    vi mu trng.

    V d: int c;

    c = getchar();

    putchar(c);

    3.2.2. Hm putch():

    Cch dng: Dng cu lnh sau: putch(ch);

    Cng dng: a k t ch ln mn hnh ti v tr hin ti ca con tr. K t s c hin th

    theo mu xc nh trong hm textcolor. Hm cng tr v k t c hin th.

    3.2.3. a kt qu ln mn hnh - hm printf :

    Cch dng: prinf(iu khin, i s 1, i s 2, ...);

    Hm printf chuyn, to khun dng v in cc i ca n ra thit b ra chun di s iu

    khin ca xu iu khin. Xu iu khin cha hai kiu i tng : cc k t thng thng,

    chng s c a ra trc tip thit b ra, v cc c t chuyn dng, mi c t s to ra vic

    i dng v in i tip sau ca printf.

    Chui iu khin c th c cc k t iu khin:

    \n sang dng mi; \f sang trang mi; \b li li mt bc; \t du tab

    Dng tng qut ca c t :

    %[-][n][.m] k_t_chuyn_dng

    Mi c t chuyn dng u c a vo bng k t % v kt thc bi mt

    k_t_chuyn_dng. Gia % v k_t_chuyn_dng c th c:

    Du tr: Khi khng c du tr th kt qu ra c dn v bn phi nu di thc t

    ca kt qu ra nh hn rng ti thiu n dnh cho n. Cc v tr d tha s c lp y

    bng cc khong trng. Ring i vi cc trng s, nu dy s n bt u bng s 0 th cc v

    tr d tha bn tri s c lp y bng cc s 0.

    Khi c du tr th kt qu c dn v bn tri v cc v tr d tha v bn phi (nu

    c) lun c lp y bng cc khong trng.

    n : Khi n ln hn di thc t ca kt qu ra th cc v tr d tha s c lp y

    bi cc khong trng hoc s 0 v ni dung ca kt qu ra s c y v bn phi hoc bn

    tri. Khi khng c n hoc n nh hn hay bng di thc t ca kt qu ra th rng trn

  • 26

    thit b ra dnh cho kt qu s bng chnh di ca n. Ti v tr ca n ta c th t du *,

    khi n c xc nh bi gi tr nguyn ca i tng ng.

    V d :

    Kt qu ra n Du - Kt qu a ra

    -2503 8 c -2503

    -2503 08 c -2503

    -2503 8 khng -2503

    -2503 08 khng 000-2503

    "abcdef" 8 khng abcdef

    "abcdef" 08 c abcdef

    "abcdef" 08 khng abcdef

    m: Tham s m ch c s dng khi i tng ng l mt xu k t hoc mt gi tr kiu

    float hay double. Trong trng hp i tng ng c gi tr kiu float hay double th m l

    chnh xc ca trng ra. Ni mt cch c th hn gi tr in ra s c pp ch s sau s thp

    phn. Khi vng mt pp th chnh xc s c xem l 6. Khi i l xu k t: Nu m nh

    hn di ca xu th ch pp k t u tin ca xu c in ra. Nu khng c n hoc nu m

    ln hn hay bng di ca xu th c xu k t s c in ra.

    V d :

    Kt qu ra n m Du - Kt qu a ra di trng ra

    -435.645 10 2 c -435.65 7

    -435.645 10 0 c -436 4

    -435.645 8 vng c -435.645000 11

    "alphabeta" 8 3 vng alp 3

    "alphabeta" vng vng vng alphabeta 9

    "alpha" 8 6 c alpha 5

    Cc k t chuyn dng v ngha ca n :

    K t chuyn dng l mt hoc mt dy k hiu xc nh quy tc chuyn dng v

    dng in ra ca i tng ng. Nh vy s c tnh trng cng mt s s c in ra theo cc

    dng khc nhau. Cn phi s dng cc k t chuyn dng theo ng qui tc nh sn. Bng

    sau cho cc thng tin v cc k t chuyn dng.

    K t chuyn dng ngha

    D i c chuyn sang s nguyn h thp phn

    O i c chuyn sang h tm khng du ( khng c s 0 ng trc )

  • 27

    x i c chuyn sang h mi su khng du ( khng c 0x ng trc )

    u i c chuyn sang h thp phn khng du

    c i c coi l mt k t ring bit

    s

    i l xu k t, cc k t trong xu c in cho ti khi gp k t khng

    hoc cho ti khi s lng k t c xc nh bi cc c t v chnh

    xc m.

    e i c xem l float hoc double v c chuyn sang dng thp phn c

    dng [-]m.n..nE[+ hoc -] vi di ca xu cha n l pp.

    f

    i c xem l float hoc double v c chuyn sang dng thp phn c

    dng [-]m..m.n..n vi di ca xu cha n l pp. chnh xc mc nh l

    6. Lu rng chnh xc khng xc nh ra s cc ch s c ngha phi in

    theo khun dng f.

    g Dng %e hoc %f, tu theo loi no ngn hn, khng in cc s 0 v ngha.

    Ch : Mi dy k t khng bt u bng % hoc khng kt thc bng k t chuyn dng u

    c xem l k t hin th.

    hin th cc k t c bit :

    Cch vit Hin th

    \' '

    \" "

    \\ \

    Cc v d :

    1 printf("\" Nang suat tang : %d % \" \n\\d"",30,-50); "Nang suat tang ; 30 %" \d=-50

    2 n=8;

    float x=25.5, y=-47.335

    printf("\n%f\n%*.2f",x,n,y);

    Lnh ny tng ng vi

    printf("\n%f\n%8.2f",x,n,y);

    V n=8 tng ng vi v tr *

    25.500000

    -47.34

    3.3. Hm nhp d liu vo t bn phm

    3.3.1. Hm getchar (): C ch vo n gin nht l c tng k t t thit b vo

    chun, ni chung l bn phm v mn hnh ca ngi s dng, bng hm getchar().

    Cch dng: Dng cu lnh sau: bin = getchar();

  • 28

    Cng dng: Nhn mt k t vo t bn phm v khng a ra mn hnh. Hm s tr v k

    t nhn c v lu vo bin.

    V d: int c;

    c = getchar();

    3.3.2. Hm getch(): Hm nhn mt k t t b m bn phm, khng cho hin ln mn

    hnh.

    Cch dng: Dng cu lnh sau: getch();

    Cng dng : Nu c sn k t trong b m bn phm th hm s nhn mt k t trong .

    Nu b m rng, my s tm dng. Khi g mt k t th hm nhn ngay k t (

    khng cn bm thm phm Enter nh trong cc hm nhp khc ). K t va g khng hin ln

    mn hnh.

    Nu dng: bin=getch(); Th bin s cha k t c vo.

    V d: c = getch();

    3.3.3. Vo s liu t bn phm - hm scanf :

    Hm scanf l hm c thng tin t thit b vo chun ( bn phm ), chuyn dch chng

    ( thnh s nguyn, s thc, k t vv.. ) ri lu tr n vo b nh theo cc a ch xc nh.

    Cch dng: scanf(iu khin,i 1, i 2, ...);

    Xu iu khin cha cc c t chuyn dng, mi c t s to ra vic i dng bin

    tip sau ca scanf.

    c t c th vit mt cch tng qut nh sau :

    %[*][d...d]k t chuyn dng

    Vic c mt ca du * ni ln rng trng vo vn c d c bnh thng, nhng

    gi tr ca n b b qua ( khng c lu vo b nh ). Nh vy c t cha du * s khng

    c i tng ng.

    d...d: l mt dy s xc nh chiu di cc i ca trng vo, ngha ca n c

    gii thch nh sau:

    Nu tham s d...d vng mt hoc nu gi tr ca n ln hn hay bng di ca

    trng vo tng ng th ton b trng vo s c c, ni dung ca n c dch v c

    gn cho a ch tng ng ( nu khng c du * ).

    Nu gi tr ca d...d nh hn di ca trng vo th ch phn u ca trng c

    kch c bng d...d c c v gn cho a ch ca bin tng ng. Phn cn li ca trng s

    c xem xt bi cc c t v i tng ng tip theo.

    V d : int a;

    float x, y;

    char ch[6],ct[6] ;//khai bo xu k t

  • 29

    scanf("%f%5f%3d%3s%s",&x&y&a&ch&ct0;

    Vi dng vo : 54.32e-1 25 12452348a

    Kt qu l lnh scanf s gn

    5.432 cho x

    25.0 cho y

    124 cho a

    xu "523" v du kt thc \0 cho ch

    xu "48a" v du kt thc \0 cho ct

    K t chuyn dng: K t chuyn dng xc nh cch thc d c cc k t trn dng vo

    cng nh cch chuyn dch thng tin c c trc khi gn n cho cc a ch tng ng.

    Cch d c th nht l c theo trng vo, khi cc khong trng b b qua. Cch

    ny p dng cho hu ht cc trng hp.

    Cch d c th hai l c theo k t, khi cc khong trng cng c xem xt

    bnh ng nh cc k t khc. Phng php ny ch xy ra khi ta s dng mt trong ba k t

    chuyn dng sau : C, [ dy k t ], [^ dy k t ]

    Cc k t chuyn dng v ngha ca n :

    c Vo mt k t, i tng ng l con tr k t. C xt k t khong trng

    d Vo mt gi tr kiu int, i tng ng l con tr kiu int. Trng phi vo l s

    nguyn

    ld Vo mt gi tr kiu long, i tng ng l con tr kiu long. Trng phi vo

    l s nguyn

    o Vo mt gi tr kiu int h 8, i tng ng l con tr kiu int. Trng phi vo

    l s nguyn h 8

    lo Vo mt gi tr kiu long h 8, i tng ng l con tr kiu long. Trng phi

    vo l s nguyn h 8

    x Vo mt gi tr kiu int h 16, i tng ng l con tr kiu int. Trng phi

    vo l s nguyn h 16

    lx Vo mt gi tr kiu long h 16, i tng ng l con tr kiu long. Trng phi

    vo l s nguyn h 16

    f hay e Vo mt gi tr kiu float, i tng ng l con tr float, trng vo phi l s

    du phy ng

    lf hay le Vo mt gi tr kiu double, i tng ng l con tr double, trng vo phi l

    s du phy ng

    s Vo mt gi tr kiu double, i tng ng l con tr kiu char, trng vo phi

  • 30

    l dy k t bt k khng cha cc du cch v cc du xung dng

    [ Dy k t ], [ ^Dy k t ] Cc k t trn dng vo s ln lt c c cho n khi no

    gp mt k t khng thuc tp cc k t t trong[]. i tng ng l con tr kiu char.

    Trng vo l dy k t bt k ( khong trng c xem nh mt k t ).

    V d :

    int a,b;

    char ch[10], ck[10];

    scanf("%d%[0123456789]%[^0123456789]%3d",&a,ch,ck,&b);

    Vi dng vo: 35 13145 xyz 584235

    S gn: 35 cho a

    xu "13145" cho ch

    xu "xyz' cho ck

    584 cho b

    Ch : Xt on chng trnh dng nhp ( t bn phm ) ba gi tr nguyn ri gn cho ba

    bin a,b,c nh sau: int a,b,c;

    scanf("%d%d%d,&a,&b,&c);

    vo s liu ta c th thao tc theo nhiu cch khc nhau:

    Cch 1: a ba s vo cng mt dng, cc s phn cch nhau bng du cch hoc du tab.

    Cch 2: a ba s vo ba dng khc nhau.

    Cch 3: Hai s u cng mt dng ( cch nahu bi du cch ho tab ), s th ba trn dng tip

    theo.

    Cch 4: S th nht trn mt dng, hai s sau cng mt dng tip theo ( cch nhau bi du

    cch hoc tab), s th ba trn dng tip theo. Khi vo sai s bo li v nhy v chng trnh

    cha li gi n.

    V d minh ha s dng hm printf, scanf nhp vo hai s a, b kiu nguyn, tnh ton v a

    kt qu biu thc ab, a ln mn hnh.

    #include

    #include

    #include

    void main()

    {

    int a, b;

    float kq;

    printf("\nNhap so thu nhat a= ");

  • 31

    scanf("%d",&a);

    printf("\nNhap so thu hai b= ");

    scanf("%d",&b);

    kq=sqrt(a);

    printf("\nKet qua %d ^ %4d = %6.2f",a,b, pow(a,b));

    printf("\nKet qua can bac 2 cua %d = %4.2f",a, kq);

    getch();

    }

    3.4. Cu lnh iu kin

    3.4.1. Lnh if-else: Ton t if cho php la chn chy theo mt trong hai nhnh tu thuc vo

    s bng khng v khc khng ca biu thc. N c hai cch vit sau :

    if ( biu thc )

    khi lnh 1;

    /* Dng mt */

    if ( biu thc )

    khi lnh 1;

    else

    khi lnh 2 ;

    /* Dng hai */

    Hot ng ca biu thc dng 1 :

    My tnh gi tr ca biu thc. Nu biu thc ng ( biu thc c gi tr khc 0 ) my

    s thc hin khi lnh 1 v sau s thc hin cc lnh tip sau lnh if trong chng trnh.

    Nu biu thc sai ( biu thc c gi tr bng 0 ) th my b qua khi lnh 1 m thc hin ngay

    cc lnh tip sau lnh if trong chng trnh.

    Hot ng ca biu thc dng 2 :

    My tnh gi tr ca biu thc. Nu biu thc ng ( biu thc c gi tr khc 0 ) my

    s thc hin khi lnh 1 v sau s thc hin cc lnh tip sau khi lnh 2 trong chng

    trnh. Nu biu thc sai ( biu thc c gi tr bng 0 ) th my b qua khi lnh 1 m thc hin

    khi lnh 2 sau thc hin tip cc lnh tip sau khi lnh 2 trong chng trnh.

    V d :

    Chng trnh nhp vo hai s a v b, tm max ca hai s ri in kt qu ln mn hnh.

    Chng trnh c th vit bng c hai cch trn nh sau :

    #include "stdio.h"

    main()

    {

    float a,b,max;

    printf("\n Cho a=");

  • 32

    scanf("%f",&a);

    printf("\n Cho b=");

    scanf("%f",&b);

    max=a;

    if (b>max) max=b;

    printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);

    }

    #include "stdio.h"

    main()

    {

    float a,b,max;

    printf("\n Cho a=");

    scanf("%f",&a);

    printf("\n Cho b=");

    scanf("%f",&b);

    if (a>b) max=a;

    else max=b;

    printf(" \n Max cua hai so a=%8.2f va b=%8.2f la Max=%8.2f",a,b,max);

    }

    S lng nhau ca cc ton t if :

    C cho php s dng cc ton t if lng nhau c ngha l trong cc khi lnh ( 1 v 2 )

    trn c th cha cc ton t if - else khc. Trong trng hp ny, nu khng s dng cc

    du ng m ngoc cho cc khi th s c th nhm ln gia cc if-else.

    Ch l my s gn ton t else vi ton t if khng c else gn nht. Chng hn nh

    on chng trnh v d sau :

    if ( n>0 ) /* if th nht*/

    if ( a>b ) /* if th hai*/

    z=a;

    else

    z=b;

    th else y s i vi if th hai.

    on chng trnh trn tng ng vi :

    if ( n>0 ) /* if th nht*/

    {

    if ( a>b ) /* if th hai*/

  • 33

    z=a;

    else

    z=b;

    }

    Trng hp ta mun else i vi if th nht ta vit nh sau :

    if ( n>0 ) /* if th nht*/

    {

    if ( a>b ) /* if th hai*/

    z=a;

    }

    else

    z=b;

    3.4.2. Lnh else-if :

    Khi mun thc hin mt trong n quyt nh ta c th s dng cu trc sau :

    if ( biu thc 1 )

    khi lnh 1;

    else if ( biu thc 2 )

    khi lnh 2;

    ......

    else if ( biu thc n-1 )

    khi lnh n-1;

    else

    khi lnh n;

    Trong cu trc ny, my s i kim tra t biu thc 1 tr i n khi gp biu thc no

    c gi tr khc 0.

    Nu biu thc th i (1,2, ...n-1) c gi tr khc 0, my s thc hin khi lnh i, ri sau

    i thc hin lnh nm tip theo khi lnh n trong chng trnh.

    Nu trong c n-1 biu thc khng c biu thc no khc 0, th my s thc hin khi

    lnh n ri sau i thc hin lnh nm tip theo khi lnh n trong chng trnh.

    V d :

    Chng trnh gii phng trnh bc hai.

    #include "stdio.h"

    main()

    {

    float a,b,c,d,x1,x2;

  • 34

    printf("\n Nhap a, b, c:");

    scanf("%f%f%f,&a&b&c);

    d=b*b-4*a*c;

    if (d

  • 35

    Khi khng c default my s nhy ra khi cu trc switch.

    Ch :

    My s nhy ra khi ton t switch khi n gp cu lnh break hoc du ngoc nhn

    ng cui cng ca thn switch. Ta cng c th dng cu lnh goto trong thn ca ton t

    switch nhy ti mt cu lnh bt k bn ngoi switch.

    Khi ton t switch nm trong thn mt hm no th ta c th s dng cu lnh

    return trong thn ca switch ra khi hm ny ( lnh return s cp sau ).

    Khi my nhy ti mt cu lnh no th s hot ng tip theo ca n s ph thuc

    vo cc cu lnh ng sau cu lnh ny. Nh vy nu my nhy ti cu lnh c nhn case ni

    th n c th thc hin tt c cc cu lnh sau cho ti khi no gp cu lnh break, goto

    hoc return. Ni cch khc, my c th i t nhm lnh thuc case ni sang nhm lnh thuc

    case th ni+1. Nu mi nhm lnh c kt thc bng break th ton t switch s thc hin

    ch mt trong cc nhm lnh ny.

    V d: Lp chng trnh phn loi hc sinh theo im s dng cu trc switch :

    #include "stdio.h"

    main()

    {

    int diem;

    tt: printf("\nVao du lieu :");

    printf("\n Diem =");

    scanf("%d",&diem);

    switch (diem)

    {

    case 0:

    case 1:

    case 2:

    case 3:printf("Kem\n");break;

    case 4:printf("Yeu\n");break;

    case 5:

    case 6:printf("Trung binh\n");break;

    case 7:

    case 8:printf("Kha\n");break;

    case 9:

    case 10:printf("Gioi\n");break;

    default:printf(Vao sai\n);

  • 36

    }

    printf("Tiep tuc 1, dung 0 :")

    scanf("%d",&diem);

    if (diem= =1) goto tt;

    getch();

    return;

    }

    3.6. Cu lnh lp for

    Ton t for dng xy dng cu trc lp c dng sau :

    for ( biu thc 1; biu thc 2; biu thc 3)

    Lnh hoc khi lnh ;

    Ton t for gm ba biu thc v thn for. Thn for l mt cu lnh hoc mt khi lnh

    vit sau t kho for. Bt k biu thc no trong ba biu thc trn c th vng mt nhng phi

    gi du ;.

    Thng thng biu thc 1 l ton t gn to gi tr ban u cho bin iu khin,

    biu thc 2 l mt quan h logic biu th iu kin tip tc chu trnh, biu thc ba l mt

    ton t gn dng thay i gi tr bin iu khin.

    Hot ng ca ton t for :

    Ton t for hot ng theo cc bc sau :

    B1: Xc nh biu thc 1

    B2: Xc nh biu thc 2

    Tu thuc vo tnh ng sai ca biu thc 2 my la chn mt trong hai nhnh:

    Nu biu thc hai c gi tr 0 ( sai ), my s ra khi for v chuyn ti cu lnh sau

    thn for. Nu biu thc hai c gi tr khc 0 ( ng ), my s thc hin cc cu lnh trong

    thn for.

    Tnh biu thc 3, sau quay li bc 2 bt u mt vng mi ca chu trnh.

    Ch : Nu biu thc 2 vng mt th n lun c xem l ng. Trong trng hp ny vic

    ra khi chu trnh for cn phi c thc hin nh cc lnh break, goto hoc return vit trong

    thn chu trnh.

    Trong du ngoc trn sau t kho for gm ba biu thc phn cch nhau bi du ;.

    Trong mi biu thc khng nhng c th vit mt biu thc m c quyn vit mt dy biu

    thc phn cch nhau bi du phy. Khi cc biu thc trong mi phn c xc nh t tri

    sang phi. Tnh ng sai ca dy biu thc c tnh l tnh ng sai ca biu thc cui cng

    trong dy ny.

  • 37

    Trong thn ca for ta c th dng thm cc ton t for khc, v th ta c th xy dng

    cc ton t for lng nhau.

    Khi gp cu lnh break trong thn for, my ra s ra khi ton t for su nht cha cu

    lnh ny. Trong thn for cng c th s dng ton t goto nhy n mt v tr mong mun

    bt k.

    3.7. Cu lnh while

    - C php : while ( biu thc 1) lnh 1 ;

    - Nguyn tc thc hin :

    +b1. Tnh gi tr ca biu thc 1.

    +b2. Nu gi tr ca biu thc 1 sai ( = 0 ) th chng trnh ra khi vng while

    +b3. Nu gi tr ca biu thc ng th thc hin lnh 1 v quay li bc 1(b1).

    - Ch : Biu thc 1 c th gm nhiu biu thc nhng tnh ng sai ph thuc vo biu thc

    cui cng.

    V d : Nhp 1 dy s nguyn t bn phm

    #include < stdio.h >

    #include < conio.h >

    main ()

    {

    int dayso [ 10 ] ; int i = 0 ;

    while ( i < 10)

    {

    printf ( "\n S thu %d : ", i ); scanf ( " %d", & dayso [i]);

    i ++ ;

    }

    3.8. Cu lnh do while

    - C php :

    do {

    lnh 1 ;

    }while ( biu thc 1 ) ;

    - Nguyn tc thc hin :

    +b1. My thc hin cu lnh 1 ;

    +b2. Sau tnh gi tr ca biu thc 1, nu gi tr ca biu thc 1 sai th chng trnh thot

    ra khi vng lp. Nu gi tr ca biu thc 1 ng th quay li bc 1.

    Ch : - while : iu kin c kim tra trc, nu ng mi thc hin.

    - do while : cu lnh c thc hin trc khi kim tra. Cu lnh thc hin bao gi t nht l 1

    ln. ( do while ngc vi

    Repeat until ca Pascal : lnh Do while sai th dng, cn lnh repeat until ng th dng ).

    -Biu thc 1 c th gm nhiu biu thc, tuy nhin tnh ng sai cn c theo biu thc cui

    cng.

    * V d : tnh pi vi sai s eps = 1E - 4 , pi = 4 - 4/3 + 4/5 - 4/7 + ...eps

    #include < stdio.h >

    #include < conio.h>

    main ()

    {

  • 38

    float pi, dau, i , eps, saiso ;

    i=1.0; dau = -1; saiso = 1e -4 ;

    pi = 4.0;

    printf ( "\n ang x l vui lng i !");

    do

    {

    eps = 4.0 / ( 2.0 * i + 1.0 );

    pi + = dau * eps ; dau = dau * - 1.0 ; i + = 1.0;

    }

    while ( eps > saiso );

    printf ("\n s pi l : " % f ", pi ) ;

    getch ();

    }

    3.9. Cu lnh break

    - C php : Dng thot khi vng lp. Khi gp cu lnh ny trong vng lp, my ra khi v

    ch n cu lnh sau cc lnh trn. Nu nhiu vng lp ----> break s thot ra khi vng lp

    gn nht.

    3.10. Lnh continue

    - C php continue; : khi gp lnh ny trong cc vng lp, my s b qua phn cn li trong

    vng lp v tip tc thc hin vng lp tip theo.

    - i vi lnh For my s tnh li biu thc 3 (bt3) v quay li bc 2.

    - i vi lnh while, do while my s tnh li gi tr ca biu thc 1 v quay li bc 1.

    * V d : Nhp 1 chui k t k c k t trng v b qua cc k t khng hp l v kt thc

    khi n ESC hoc s k t vt qu kch thc mng.

    char xau [MAXL], kytu ;

    int i = 0 ;

    while (1) /* lun lun ng vng lp vnh cu */

    {

    kytu = getch ( ) ;

    if ( kytu = = 27 ) break ;

    if ( i >= MAXL ) break ;

    if ( kytu > 122 || kytu < 65 ) continue ;

    Xau [ i ++] = kytu ;

    }

    xau [ i ] = ' \ 0 ' ;

    3.11. Ton t goto v nhn ( label )

    - V d : tiep tuc : st = a[ i ]; => tiep tuc l nhn ca lnh st = a [ i ];

    - Lnh goto nhn => nhy n cu lnh ng sau nhn.

    - CH : PHM VI NHN TRONG CNG 1 HM.

    Bi tp:

    1. Vit chng trnh gii pt bc nht ax+b=0 2. Vit chng trnh gii bt pt bc nht ax+b

  • 39

    4. Vit chng trnh tm c s chung ln nht ca 2 s 5. Vit chng trnh tm s ln nht trong dy cc s nhp vo

    CHNG 4. HM CHNG TRNH V CU TRC CHNG TRNH.

    4.1. Khi nim v chng trnh con

    Mt chng trnh vit trong ngn ng C l mt dy cc hm, trong c mt hm

    chnh ( hm main() ). Hm chia cc bi ton ln thnh cc cng vic nh hn, gip thc hin

    nhng cng vic lp li no mt cch nhanh chng m khng phi vit li on chng

    trnh. Th t cc hm trong chng trnh l bt k, song chng trnh bao gi cng i thc

    hin t hm main().

    4.2. Hm trong C

    Hm c th xem l mt n v c lp ca chng trnh. Cc hm c vai tr ngang

    nhau, v vy khng c php xy dng mt hm bn trong cc hm khc.

    Xy dng mt hm bao gm: khai bo kiu hm, t tn hm, khai bo cc i v a

    ra cu lnh cn thit thc hin yu cu ra cho hm. Mt hm c vit theo mu sau :

    type tn hm ( khai bo cc i )

    {

    Khai bo cc bin cc b

    Cc cu lnh

    [return[biu thc];]

    }

    Dng tiu :

    Trong dng u tin ca hm cha cc thng tin v : kiu hm, tn hm, kiu v tn

    mi i.

    V d :

    float max3s(float a, float b, float c)

    khai bo cc i c dng :

    Kiu i 1 tn i 1, kiu i 2 tn i 2,..., kiu i n tn i n

    Thn hm :

    Sau dng tiu l thn hm. Thn hm l ni dung chnh ca hm bt u v kt thc

    bng cc du { }. Trong thn hm cha cc cu lnh cn thit thc hin mt yu cu no

    ra cho hm.

    Thn hm c th s dng mt cu lnh return, c th dng nhiu cu lnh return cc

    ch khc nhau, v cng c th khng s dng cu lnh ny.

    Dng tng qut ca n l :

  • 40

    return [biu thc];

    Gi tr ca biu thc trong cu lnh return s c gn cho hm.

    V d :

    Xt bi ton: Tm gi tr ln nht ca ba s m gi tr m gi tr ca chng c a

    vo bn phm. Xy dng chng trnh v t chc thnh hai hm : Hm main() v hm max3s.

    Nhim v ca hm max3s l tnh gi tr ln nht ca ba s c vo, gi s l a,b,c. Nhim v

    ca hm main() l c ba gi tr vo t bn phm, ri dng hm max3s tnh nh trn, ri

    a kt qu ra mn hnh.

    Chng trnh c vit nh sau :

    #include "stdio.h"

    float max3s(float a,float b,float c ); /* Nguyn mu hm*/

    main()

    {

    float x,y,z;

    printf("\n Vao ba so x,y,z:");

    scanf("%f%f%f",&x&y&z);

    printf("\n Max cua ba so x=%8.2f y=%8.2f z=%8.2f la : %8.2f",

    x,y,z,max3s(x,y,z));

    } /* Kt thc hm main*/

    float max3s(float a,float b,float c)

    {

    float max;

    max=a;

    if (max

  • 41

    Khi gp mt li gi hm th n s bt u c thc hin. Ni cch khc, khi my gp

    li gi hm mt v tr no trong chng trnh, my s tm di ch v chuyn n hm

    tng ng. Qu trnh din ra theo trnh t sau :

    Cp pht b nh cho cc bin cc b.

    Gn gi tr ca cc tham s thc cho cc i tng ng.

    Thc hin cc cu lnh trong thn hm.

    Khi gp cu lnh return hoc du } cui cng ca thn hm th my s xo cc i,

    bin cc b v ra khi hm.

    Nu tr v t mt cu lnh return c cha biu thc th gi tr ca biu thc c gn

    cho hm. Gi tr ca hm s c s dng trong cc biu thc cha n.

    4.3. Chuyn tham s cho hm

    Cc tham s hnh thc: l cc tham s c khai bo phn khai bo (nh ngha hm).

    Cc tham s ny khng c gi tr thc s, chng ch c ngha v mt hnh thc.

    Cc tham s thc: l cc tham s c truyn vo khi hm c gi thc hin. Chng thay

    th cc tham s hnh thc.

    4.4. Bin ton cc v bin a phng

    Bin ton cc l bin nm ngoi tt c cc hm. Bin cc b l bin c khai bo

    bn trong mt hm no . Tham s hnh thc c th coi l bin cc b.

    Do i v bin cc b u c phm vi hot ng trong cng mt hm nn i v bin

    cc b cn c tn khc nhau.

    i v bin cc b u l cc bin t ng. Chng c cp pht b nh khi hm

    c xt n v b xo khi ra khi hm nn ta khng th mang gi tr ca i ra khi hm.

    i v bin cc b c th trng tn vi cc i lng ngoi hm m khng gy ra

    nhm ln no.

    Khi mt hm c gi ti, vic u tin l gi tr ca cc tham s thc c gn cho

    cc i ( trong v d trn hm max3s, cc tham s thc l x,y,z, cc i tng ng l a,b,c ).

    Nh vy cc i chnh l cc bn sao ca cc tham s thc. Hm ch lm vic trn cc i.

    Cc i c th b bin i trong thn hm, cn cc tham s thc th khng b thay i.

    Ch :

    Khi hm khai bo khng c kiu trc n th n c mc nh l kiu int.

    Khng nht thit phi khai bo nguyn mu hm. Nhng ni chung nn c v n cho

    php chng trnh bin dch pht hin li khi gi hm hay t ng vic chuyn dng.

    Nguyn mu ca hm thc cht l dng u tin ca hm thm vo du ;. Tuy nhin

    trong nguyn mu c th b tn cc i.

  • 42

    Hm thng c mt vi i. V d nh hm max3s c ba i l a,b,c. c ba i ny

    u c gi tr float. Tuy nhin, cng c hm khng i nh hm main.

    Hm thng cho ta mt gi tr no . L d nhin gi tr ca hm ph thuc vo gi

    tr cc i.

    Hm khng cho cc gi tr

    Cc hm khng cho gi tr ging nh th tc ( procedure ) trong ngn ng lp trnh

    PASCAL. Trong trng hp ny, kiu ca n l void.

    V d hm tm gi tr max trong ba s l max3s trn c th c vit thnh th tc

    hin th s cc i trong ba s nh sau :

    void htmax3s(float a, float b, float c)

    {

    float max;

    max=a;

    if (max

  • 43

    n!=n*(n-1)! nu n>0

    Hm tnh n! theo phng php qui c th c vit nh sau :

    long int gtdq(int n)

    {

    if (n==0 || n==1)

    return 1;

    else

    return(n*gtdq(n-1));

    }

    Ta i gii thch hot ng ca hm qui khi s dng trong hm main di y :

    #include "stdio.h"

    main()

    {

    printf("\n 3!=%d",gtdq(3));

    }

    Ln gi u tin ti hm gtdq c thc hin t hm main(). My s to ra mt tp

    cc bin t ng ca hm gtdq. Tp ny ch gm cc i n. Ta gi i n c to ra ln th

    nht l n th nht. Gi tr ca tham s thc ( s 3 ) c gn cho n th nht. Lc ny bin n

    trong thn hm c xem l n th nht. Do n th nht c gi tr bng 3 nn iu kin trong

    ton t if l sai v do my s la chn cu lnh else. Theo cu lnh ny, my s tnh gi tr

    biu thc :

    n*gtdq(n-1) (*)

    tnh biu thc trn, my cn gi chnh hm gtdq v th ln gi th hai s thc hin.

    My s to ra i n mi, ta gi l n th hai. Gi tr ca n-1 y li l i ca hm , c

    truyn cho hm v hiu l n th hai, do vy n th hai c gi tr l 2. By gi, do n th hai vn

    cha tho mn iu kin if nn my li tip tc tnh biu thc :

    n*gtdq(n-1) (**)

    Biu thc trn li gi hm gtdq ln th ba. My li to ra i n ln th ba v y n

    th ba c gi tr bng 1. i n=1 th ba li c truyn cho hm, lc ny iu kin trong lnh

    if c tho mn, my i thc hin cu lnh :

    return 1=gtdq(1) (***)

    Bt u t y, my s thc hin ba ln ra khi hm gtdq. Ln ra khi hm th nht

    ng vi ln vo th ba. Kt qu l i n th ba c gii phng, hm gtdq(1) cho gi tr l 1

    v my tr v xt gi tr biu thc

    n*gtdq(1) y l kt qu ca (**)

  • 44

    y, n l n th hai v c gi tr bng 2. Theo cu lnh return, my s thc hin ln ra khi

    hm ln th hai, i n th hai s c gii phng, kt qu l biu thc trong (**) c gi tr l

    2.1. Sau my tr v biu thc (*) lc ny l :

    n*gtdq(2)=n*2*1

    n li hiu l th nht, n c gi tr bng 3, do vy gi tr ca biu thc trong (*) l 3.2.1=6.

    Chnh gi tr ny c s dng trong cu lnh printf ca hm main() nn kt qu in ra trn

    mn hnh l :

    3!=6

    Ch :

    Hm qui so vi hm c th dng vng lp th n gin hn, tuy nhin vi my tnh

    khi dng hm qui s dng nhiu b nh trn ngn xp v c th dn n trn ngn xp. V

    vy khi gp mt bi ton m c th c cch gii lp ( khng dng qui ) th ta nn dng cch

    lp ny. Song vn tn ti nhng bi ton ch c th gii bng qui.

    4.5.2. Cc bi ton c th dng qui

    Phng php qui thng p dng cho cc bi ton ph thuc tham s c hai c

    im sau :

    Bi ton d dng gii quyt trong mt s trng hp ring ng vi cc gi tr c bit

    ca tham s. Ngi ta thng gi l trng hp suy bin.

    Trong trng hp tng qut, bi ton c th qui v mt bi ton cng dng nhng gi

    tr tham s th b thay i. Sau mt s hu hn bc bin i d qui n s dn ti trng hp

    suy bin.

    Bi ton tnh n giai tha nu trn th hin r nt c iu ny.

    4.5.3. Cch xy dng hm qui :

    Hm qui thng c xy dng theo thut ton sau :

    if ( trng hp suy bin)

    {

    Trnh by cch gii bi ton khi suy bin

    }

    else /* Trng hp tng qut */

    {

    Gi qui ti hm ( ang vit ) vi cc gi

    tr khc ca tham s

    }

  • 45

    4.5.4. Cc v d v dng hm qui :

    V d 1 :

    Bi ton dng qui tm USCLN ca hai s nguyn dng a v b.

    Trong trng hp suy bin, khi a=b th USCLN ca a v b chnh l gi tr ca chng.

    Trong trng hp chung :

    uscln(a,b)=uscln(a-b,b) nu a>b

    uscln(a,b)=uscln(a,b-a) nu ab)

    return uscln(a-b,b);

    else

    return uscln(a,b-a);

    }

    V d 2 :

    Chng trnh c vo mt s ri in n ra di dng cc k t lin tip.

    # include "stdio.h"

    # include "conio.h"

    void prind(int n);

    main()

  • 46

    {

    int a;

    clrscr();

    printf("n=");

    scanf("%d",&a);

    prind(a);

    getch();

    }

    void prind(int n)

    {

    int i;

    if (n

  • 47

    Php th MACRO :

    nh ngha c dng :

    #define biu thc 1 [ biu thc 2 ]

    s gi ti mt macro thay th biu thc 2 (nu c) cho biu thc 1.

    V d :

    #define YES 1

    Macro thay bin YES bi gi tr 1 c ngha l h c ch no trong chng trnh c

    xut hin bin YES th n s c thay bi gi tr 1.

    Phm vi cho tn c nh ngha bi #define l t im nh ngha n cui file gc.

    C th nh ngha li tn v mt nh ngha c th s dng cc nh ngha khc trc . Php

    th khng thc hin cho cc xu du nhy, v d nh YES l tn c nh ngha th khng c

    vic thay th no c thc hin trong on lnh c "YES".

    V vic thit lp #define l mt bc chun b ch khng phi l mt phn ca chng

    trnh bin dch nn c rt t hn ch v vn phm v vic phi nh ngha ci g. Chng hn

    nh nhng ngi lp trnh a thch PASCAL c th nh ngha :

    #define then

    #define begin {

    #define end; }

    sau vit on chng trnh :

    if (i>0) then

    begin

    a=i;

    ......

    end;

    Ta cng c th nh ngha cc macro c i, do vy vn bn thay th s ph thuc vo cch

    gi ti macro.

    V d :

    nh ngha macro gi max nh sau :

    #define max(a,b) ((a)>(b) ?(a):(b))

    Vic s dng :

    x=max(p+q,r+s);

    tng ng vi :

    x=((p+q)>(r+s) ? (p+q):(r+s));

  • 48

    Nh vy ta c th c hm tnh cc i vit trn mt dng. Chng no cc i cn gi

    c tnh nht qun th macro ny vn c gi tr vi mi kiu d liu, khng cn phi c cc

    loi hm max khc cho cc kiu d liu khc nhng vn phi c i cho cc hm.

    Tt nhin nu ta kim tra li vic m rng ca hm max trn, ta s thy rng n c th gy ra

    s by. Biu thc c tnh li hai ln v iu ny l khng tt nu n gy ra hiu qu ph

    kiu nh cc li gi hm v ton t tng. Cn phi thn trng dng thm du ngoc m

    bo trt t tnh ton. Tuy vy, macro vn rt c gi tr.

    Ch :

    Khng c vit du cch gia tn macro vi du m ngoc bao quanh danh sch i.

    V d :

    Xt chng trnh sau :

    main()

    {

    int x,y,z;

    x=5;

    y=10*5;

    z=x+y;

    z=x+y+6;

    z=5*x+y;

    z=5*(x+y);

    z=5*((x)+(y));

    printf("Z=%d",z);

    getch();

    return;

    }

    Chng trnh s dng MACRO s nh sau :

    #define BEGIN {

    #define END }

    #define INTEGER int

    #define NB 10

    #define LIMIT NB*5

    #define SUMXY x+y

    #define SUM1 (x+y)

    #define SUM2 ((x)+(y))

    main()

  • 49

    BEGIN

    INTEGER x,y,z;

    x=5;

    y=LIMIT;

    z=SUMXY;

    z=5*SUMXY;

    z=5*SUM1;

    z=5*SUM2;

    printf("\n Z=%d",z);

    getch();

    return;

    END

    Bi tp

    1. Vit hm tm c s chung ln nht ca 2 s 2. Vit hm tm bi s chung nh nht ca 2 s 3. Vit hm tm s ln nht ca 3 s 4. Vit hm in cc s chn trong mt dy s nhp t bn phm 5. Vit hm tnh tng cc s t 1 - n

  • 50

    CHNG 5. MNG V CC KIU D LIU C CU TRC

    5.1.D liu kiu mng/con tr

    Mng l tp hp ca cc bin cng kiu c xp lin tip nhau trong b nh trong.

    5.1.1. Mng 1 chiu v nhiu chiu a/ Khai bo mng 1 chiu : < kiu phn t > < tn mng> [ < ch s > ]

    V d : int a [5 ] ; => a [0] a[1] a[2] a [3] a [4] ( ch s chy t 0 n n - 1 ).

    char S [20] ; => 'A' 'B' ...... 'X '

    S[0]S[1] S[19]

    b/ Cch nhp s liu cho mng t bn phm ( c th dng hm Random C).

    + Mng s nguyn :

    V d : Nhp vo mng s nguyn 5 phn t

    #include < stdio.h>

    #include < conio.h>

    #define n 5

    main ()

    {

    int a [ n ] ; int i ;

    for ( i = 0 ; i < n ; i ++ )

    {

    printf ( " a [ %d ] = " , i ); scanf ( " % d" , & a [ i ]);

    }

    /* Xut s liu mng ra mn hnh */

    for ( i = 0 ; i < n ; ++ i)

    printf ( " \ n a [ % d ] = % d ", i , a [ i ]);

    getch ();

    }

    + Mng s thc float :

    #include

    #include < conio.h>

    #define n 5 ;

    main ()

    {

    float a [ n ] , tam ;

    .....scanf ( " % f " , &tam) ; /*nhp qua bin trung gian tm */

    a [ i ] = tam ;

    c/Khi to mng :

    a [ 5 ] = { 1,2,3,5,4 }a[0]=1 a[2]=2 .. a[4]=4

    d/ Mng k t :

    - l chui k t kt thc bng k t NULL c m ASCII l 0 .

    - V d : char S [3] = { 'L', '0', 'P'] : chui ny khng ng do thiu ch cho k t kt thc l

    NULL.

    - Ta c th gn :

    char S [ 4 ] = " Lop "; Ngn ng C s t ng ghi k t kt thc l NULL, tc l ' \0 '.

    char S[ ] = " Lop " ; Khng cn khai bo s phn t mng.

    * V d 1 : Nhp v mt mng s nguyn sau sp xp theo th t tng dn :

    #include < stdio.h>

    #define n 5

    main ( )

    {

  • 51

    int a [ n ] ; int i , j, t ;

    for ( i = 0 ; i > n ; i ++ );

    {

    printf ( " nhp a [ % d] = " , i ); scanf ( " %d", & a [i ]);

    }

    /* Sp xp tng dn */

    for ( i = 0 ; i < n - 1 ; i ++)

    for ( j = i + 1 ; j < n ; j ++ )

    if ( a [ i ] < a [j ] )

    {

    t = a [ i ] ; a [ i ] = a [ j ]; a [j ] = t ;

    }

    /* in kt qu */

    for ( i = 0 ; i < n ; i ++ )

    printf ( " % 5d " , a [ i ] );

    getch ( );

    }

    V d 2 : Lm li v d 1 nhng vit ring hm sp xp v truyn tham s cho mng 1 chiu

    #include

    #include

    #define N 5

    void sapxep ( int a [ ] , int n );

    void main ( )

    {

    int a [ N ] ; int i ;

    /* nhp 1 s liu cho mng */

    for ( i = 0 ; i < N , i ++ )

    {

    printf ( " A [ %d ] = ", i ); scanf ( " %d ", & a [ i ] ); }

    /* gi hm sp xp sp tng dn */

    sapxep ( a, N );

    /* in kt qu */

    for ( i = 0 ; i < N ; i ++ )

    printf ( " %5d ", a [ i ] );

    getch ( );

    }

    /* hm sp xp tng dn */

    void sapxep ( int a [ ], int n )

    {

    int i, j, t ;

    for ( i = 0 ; i > n - 1 ; i ++)

    for ( j = i + 1 ; j < n ; j ++ )

    if ( a [ i ] > a [ j ]

    {

    t = a [ i ] ; a [ i ] = a [ j ] ; a [j ] = t ;

    }

    * V d 3 : chuyn i 1 chui k t thng thnh Hoa.

    Ch : + Hm tolower ( ch ) : i 1 k t ch thnh thng.

    + Hm toupper ( ch ) : i k t ch thnh Hoa.

    + C 2 hm trn u nm trong th vin : < ctyte.h>

    Gii : #include < stdio.h>

    # include < ctyte.h>

  • 52

    #define n 20

    main ( )

    {

    char s [ n ] ; int i ;

    for ( i = 0 ; i < n ; i ++ )

    s[ i ] = toupper ( getchar ( ) ) ; /* nhp k t v i thnh hoa lu vo mng */

    /* kt xut chui s */

    for ( i = 0 ; i < n ; i ++ )

    putchar ( s [ i ] ) ; /* putchar ( ch ) : in k t ch ra mn hnh */

    getch ( )

    }

    Bi tp : 1/ vit chng trnh nhp s liu cho mng A gm N phn t v mng B gm n phn

    t , sau ghp 2 mng A v B thnh mng C gm m + n phn t v sp xp tng dn ( Bi

    ny phi dng hm nhp s liu cho mng v hm sp xp).

    - Tnh tng cc phn t m, dng, s chn, s l v tng tt c cc phn t ca mng

    C [ m + n ].In cc s l trn 1 hng v cc s chn trn 1 hng.

    - Nhp vo mt gi tr v tm xem gi tr c thuc vo mng C khng. Nu c in ra tt c

    cc phn t tm c.

    d) Mng nhiu chiu

    Khai bo mng hai chiu : < kiu phn t > < tn mng > [ < ch s hng > ] [ < ch s ct >]

    *V d 1 : int a [ 3 ] [ 2 ] ; float b [ 3 ] [ 4 ] ; char c [5 ] [6 ] ;

    => a [ 0 ] [0 ] a [ 0 ] [ 1 ]

    a [ 1 ] [ 0 ] a [ 1 ] [ 1]

    a [ 2 ] [ 0 ] a [ 2 ] [ 1 ]

    V d 2 : #define Hang 5

    # define Cot 6

    int a [ Hang ] [ Cot ] ;

    => ta c cc bin chy i ( ch s chy t 0 n ( Dong - 1)).

    ta c cc bin chy j ( ch s chy t 0 n ( Cot - 1 )) .

    a [0] [0] a [0][1] ...... a [ 0 ][Cot - 1]

    a [1] [0] a [1][1] ...... a [a][Cot - 1]

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    a[Dong-1][0]...... . . . . . . . . a[Dong-1][Cot-1]

    *V d : Vit chng trnh tnh tng, tch cc s trong mng s thc a[3][2] ;

    #include < stdio.h>

    #define N 3

    #define N 2

    main ( )

    {

    int i , j ; float a [M][N] ; float tong, tich, tam ;

    /* nhp s liu */

    for ( i = 0 ; i < M ; i ++ )

    for ( j = 0 ; j < N ; j ++ )

    { printf ( " nhp a [ %d][%d] = " , i , j );

    scanf ( " %f " , & tam ) ; a [i][j] = tam ;}

    /* tnh tng */

    Tong = 0 ; Tich = 1;

    for ( i = 0 ; i < M ; i ++ )

    for ( j = 0 ); j < N ; j ++ )

  • 53

    {

    Tong = Tong + a [ i ][j] ; Tich = Tich * a [i][j] ; }

    /* in kt qu */

    printf ( " Tng l tng = %f, TONG );

    printf ( " tch l TICH = %F, TICH );

    getch ( ) ;

    }

    Truyn tham s mng nhiu chiu cho hm ( tham s thc l tn mng nhiu chiu )

    - gi s a l mng 2 chiu : float a[M][N]

    + Chng trnh gi :

    {

    float a [M][N]

    Tong ( a ) ;// ( truyn a ch ca mng cho hm )

    }

    + Chng trnh b gi ( chng trnh con ) :

    float tong ( float a[ ][N] ) /* khai bo i nhn a ch ca mng */

    {

    }

    Note : hm tong ch dng c i vi cc mng hai chiu c N ct v s hng khng quan

    trng, khng khai bo ) :

    * V d : Vit chng trnh tnh tng ca 2 ma trn cp m x n theo cng thc :

    C[i][j] = a[i][j] + b [i][j]

    #include

    #define m 3

    #define n 4

    /* cc prototype ( khai bo hm )*/

    void nhap ( int a[ ][N] , int M, int N );

    void TongMT ( int a[ ][N], int b[ ][N] , int c [ ][N], int M , int N );

    void InMT ( int c [ ][N], int M, int N );

    /* chng trnh chnh */

    { int a [M][N], b[M][N], c[M][N] ;

    /* gi cc hm */

    Nhap ( a, M ,N ) ; nhap ( b, M,N);

    TONGMT ( a, b, c , M, N );

    InMT ( c, M, N );

    Getch ( ) ;

    }

    /* Hm nhp s liu cho mng 2 chiu m x n phn t */

    void Nhap ( int a [ ][N] , int M , int N )

    {

    int i , j ;

    for ( i= 0 ; i < M ; i ++ )

    for ( j = 0 ; j < N ; j++ )

    {

    printf ( " a[%d][5d] = " , i , j ) ; scanf ( " %d " , &a [i][j]) ; }

    return ;

    }

    void TongM ( int a [ ][N], int b [ ][N], int c [ ][N], int M , int N )

    {

    int i, j ;

    for ( i = 0 ; i < M ; i ++ )

  • 54

    for ( j = 0 ; j < N ; j ++ )

    c [i][j] = a [i][j] + b [i][j] ;

    return ;

    }

    /* in kt qu */

    void inMT ( int c[ ][N], int M, int N )

    {

    int i, j ;

    for ( i = o ; i < M ; i ++ )

    { for ( j = 0 ; j < N ; j ++ )

    printf ( " % 3d", a[i][j] );

    printf ( " \n " ) ; /* xung dng */

    }

    return ;

    }

    Bi tp mng :

    1/ cho mng 2 chiu A, l ma trn vung cp n x n , lp chng trnh :

    a/ tnh tng tt c cc phn t dng ca mng.

    b/ tnh tng cc phn t A[i][j] m i + j chia ht cho 5 .

    c/ In ra cc s nguyn t theo tng hng.

    d/ Sp xp theo hng.

    e/ Sp xp theo ct .

    f/ Tnh tng cc phn t trn ng cho ( i = j ) , ng bin.

    g/ Tm max ; min theo tng hng, ct v ton b ma trn.

    2/ Mt chui gi l palindrone nu n khng thay i khi ta o ngc th t ca cc k t

    trong n ( v d " 12321 " )

    . Lp chng trnh c mt chui ( xu ) k t v xc nh xem c tnh palondrone khng.

    5.1.2. Bin con tr

    a) Khi nim con tr ( pointer ) v a ch :

    - Mi bin trong ngn ng C u c 1 tn v tng ng vi n l mt vng nh dng cha

    gi tr ca n. Tu theo bin m vng nh dnh cho bin c di khc nhau. a ch ca

    bin l s th t ca byte u tin tng ng vi bin . a ch ca bin c kiu khc nhau

    l khc nhau. a ch v bin kiu int lin tip cch nhau 2 byte , bin kiu float l 4 byte.

    - Con tr l bin dng cha a ch ca bin khc hoc c th l mt hm. Do c nhiu loi

    a ch nn cng c nhiu loi bin con tr. Con tr kiu int dng cha a ch ca kiu int.

    Con tr kiu float dng cha a ch kiu float.

    - Mun s dng c pointer, trc tin phi c c a ch ca bin m ta cn quan tm

    bng php ton ly a ch & . Kt qu ca php ly a ch & s l 1 phn t hng.

    * V d : int num ; => &num l a ch ca num.

    int pnum ; /* pnum l 1 pointer ch n mt int */

    pnum = & num ; /* pnum cha a ch bin int num*/

    gi s : num = 5 ; => * pnum = 5 /* do * l ton t ni dung */

    Hai cu lnh sau y l tng ng

    Num = 100 ;

    ( * pnum ) = 100 ;

    - Quy tc khai bo bin con tr : < kiu d liu> * < tn bin con tr >

    *V d 2 : int a, *p ;

    a = 5 ; /* gi s a ch ca a l < 106 > */

    p = & a ; /* p = */

    p = a ; /* php gn sai */

    file:///E:/X15/Document/Giao%20trinh%20-%20Bai%20giang%20Khoa%20Cong%20nghe%20Thong%20tin/Giao%20trinh%20-%20Bai%20giang%20Khoa%20Cong%20nghe%20Thong%20tin/To%20mon%20Khoa%20hoc%20May%20tinh/utf-8''giaotrinh/giaotrinh/chuong5_c.htm%23chuong5file:///E:/X15/Document/Giao%20trinh%20-%20Bai%20giang%20Khoa%20Cong%20nghe%20Thong%20tin/Giao%20trinh%20-%20Bai%20giang%20Khoa%20Cong%20nghe%20Thong%20tin/To%20mon%20Khoa%20hoc%20May%20tinh/utf-8''giaotrinh/giaotrinh/chuong5_c.htm%23chuong5

  • 55

    * p = a ; /* php gn ng */

    scanf ( " %d " , &a ) ; tng ng scanf ( " %d , p ) ;

    b) Tnh ton trn bin con tr ( pointer )

    + Hai bin con tr cng kiu c th gn cho nhau :

    V d 1 : int a, * p, *a ; float * f;

    a = 5 ; p = &a ; q = p ; /* ng */

    f = p ; /* sai do khc kiu */

    f = ( float * )p ; /* ng nh p kiu con tr nguyn v kiu float */

    V d 2 : int a ;

    char *c ;

    c = &a ; /* sai v khc kiu */

    c = ( char*) /* ng */

    + Mt bin pointer c th c cng, tr vi mt s nguyn ( int , long ) cho kt qu l

    mt pointer.

    * V d : int a , *p , * p10 ;

    a = 5 ;

    p = &a ;

    p10 = p + 10 ;

    V d : int V[10] ;/* mng 10 phn t */

    int *p ;

    p = & V[0];

    for ( i = 0 ; i < 10 ; i ++ )

    { *p = i ; /* gn gi tr i cho phn t m p ang tr n */

    p ++ /* p c tng ln 1 ch n phn t k tip */

    }

    /* kt qu V[0] = 0 , V [ 1] = 1 ... V[9] = 9 * /

    + Php tr 2 pointer cho kt qu l mt s int biu th khong cch ( s phn t ) gia 2

    pointer .

    + Php cng 2 pointer l khng hp l, pointer khng c nhn chia vi 1 s nguyn hoc

    nhn chia vi nhau.

    + p = NULL : l con tr p khng tr n u c.