Baigiang C++

Embed Size (px)

Citation preview

  • 8/14/2019 Baigiang C++

    1/50

    MC LC

    BI 1. CU TRC MT CHNG TRNH TRONG C++ .................................31.1. Gii thiu v C++ .........................................................................................31.2. V d v mt chng trnh trong C++ ..........................................................3

    BI 2. CC BIN, KIU V HNG S ..............................................................52.1. T kho .........................................................................................................52.2. Cc kiu d liu ............................................................................................62.3. Khai bo mt bin .........................................................................................62.3. Khi to cc bin ..........................................................................................82.4. Phm vi hot ng ca cc bin ....................................................................82.5. Cc hng s ...................................................................................................92.6. nh ngha cc hng (#define) ....................................................................112.7. Khai bo cc hng (const) ...........................................................................11

    BI 3. CC TON T .........................................................................................123.1. Ton t gn (=). ..........................................................................................123.2. Cc ton t s hc ......................................................................................123.3. Cc ton t gn phc hp ..........................................................................133.4. Cc ton t quan h ....................................................................................143.5. Cc ton t logic ........................................................................................143.6. Ton t iu kin ........................................................................................153.7. Th t u tin ca cc ton t ....................................................................16

    BI 4. NHP XUT D LIU TRONG C++ .....................................................174.1. Xut d liu (cout) ......................................................................................18

    4.2. Nhp d liu (cin).......................................................................................19BI 5. CC CU TRC IU KHIN ..............................................................20

    5.1. Cu trc iu kin: if v else ......................................................................205.2. Cc cu trc lp ...........................................................................................215.3. Cc lnh r nhnh v lnh nhy ..................................................................245.4. Cu trc la chn: switch. ..........................................................................25

    BI 6. HM ..........................................................................................................276.1. Gii thiu ....................................................................................................276.2. Cc hm khng kiu. Cch s dng void...................................................30

    BI 7. TRUYN THAM S CHO HM .............................................................317.1. Truyn tham s theo tham s gi tr hay tham s bin............................... 317.2. Gi tr mc nh ca tham s......................................................................337.3. Qu ti cc hm...........................................................................................347.4. Cc hm inline............................................................................................35 qui.................................................................................................................357.5. Khai bo mu cho hm...............................................................................36

    BI 8. MNG .......................................................................................................378.1. Khi nim mng ..........................................................................................37

    8.2. Khi to mt mng.....................................................................................388.3. Truy xut n cc phn t ca mng..........................................................398.4. Mng nhiu chiu........................................................................................40

    1

  • 8/14/2019 Baigiang C++

    2/50

    8.5. Dng mng lm tham s.............................................................................42BI 9. XU K T ...............................................................................................43

    9.1. Khi to cc xu k t. ................................................................................449.2. Gn gi tr cho xu k t .............................................................................459.3. Chuyn i xu k t sang cc kiu khc....................................................48

    9.4. Cc hm thao tc trn chui ...................................................................49TI LIU THAM KHO .....................................................................................50

    2

  • 8/14/2019 Baigiang C++

    3/50

    BI 1. CU TRC MT CHNG TRNH TRONG C++

    1.1. Gii thiu v C++

    C++ l ngn ng lp trnh bc cao pht trin bi hng Borland. y l mt ngnng lp trnh hng i tng rt c a chung pht trin cc ng dng hin nay.

    1.2. V d v mt chng trnh trong C++

    C l mt trong nhng cch tt nht bt u hc mt ngn ng lp trnh l bng mtchng trnh. Vy y l chng trnh u tin ca chng ta :

    // my first program in C++

    #include int main (){

    cout

  • 8/14/2019 Baigiang C++

    4/50

    Theo sau main l mt cp ngoc n bi v n l mt hm. Trong C++, tt c cc hmm sau l mt cp ngoc n () th c ngha l n c th c hoc khng c tham s(khng bt buc). Ni dung ca hm main tip ngay sau phn khai bo chnh thc c

    bao trong cc ngoc nhn ( { } ) nh trong v d ca chng ta

    cout

  • 8/14/2019 Baigiang C++

    5/50

    #include int main (){

    cout

  • 8/14/2019 Baigiang C++

    6/50

    Trnh dch ca bn c th thm mt t dnh ring c trng khc. V d, rt nhiu trnhdch 16 bit (nh cc trnh dch cho DOS) cn c th cc t kho far, huge v near.

    Ch : Ngn ng C++ l "case sensitive" c ngha l phn bit ch hoa ch thng. Dovy bin RESULT khc vi result cng nh Result.

    2.2. Cc kiu d liu

    Khi lp trnh, chng ta lu tr cc bin trong b nh ca my tnh nhng my tnh phibit chng ta mun lu tr g trong chng v cc kiu d liu khc nhau s cn lng bnh khc nhau.

    B nh ca my tnh chng ta c t chc thnh cc byte. Mt byte l lng b nhnh nht m chng ta c th qun l. Mt byte c th dng lu tr mt loi d liunh nh l kiu s nguyn t 0 n 255 hay mt k t. Nhng my tnh c th x l cckiu d liu phc tp hn bng cch gp nhiu byte li vi nhau, nh s nguyn di hay

    s thp phn. Tip theo bn s c mt danh sch cc kiu d liu c bn trong C++ cngnh min gi tr m chng c th biu din

    TnS

    byteM t Min gi tr

    char 1 K t hay kiu s nguyn 8-bitc du: -128 to 127khng du: 0 to 255

    short 2 kiu s nguyn 16-bitc du: -32763 to 32762khng du: 0 to 65535

    long 4 kiu s nguyn 32-bitc du:-2147483648 to2147483647khng du: 0 to 4294967295

    int *S nguyn. di ca n ph thuc voh thng, nh trong MS-DOS n l 16-

    bit, trn Windows 9x/2000/NT l 32 bit...Xem short, long

    float 4 Dng du phy ng 3.4e + / - 38 (7 digits)

    double 8Dng du phy ng vi chnh xcgp i

    1.7e + / - 308 (15 digits)

    longdouble

    10 Dng du phy ng vi chnh xchn na

    1.2e + / - 4932 (19 digits)

    bool 1Gi tr logic. N mi c thm vochun ANSI-C++. Bi vy khng phitt c cc trnh dch u h tr n.

    true hoc false

    Ngoi cc kiu d liu c bn ni trn cn tn ti cc con tr v cc tham s khng kiu(void) m chng ta s xem xt sau.

    2.3. Khai bo mt bin

    6

  • 8/14/2019 Baigiang C++

    7/50

    c th s dng mt bin trong C++, u tin chng ta phi khai bo n, ghi r n lkiu d liu no. Chng ta ch cn vit tn kiu (nh int, short, float...) tip theo sau l mt tn bin hp l. V d

    int a;float mynumber;

    Dng u tin khai bo mt bin kiu int vi tn l a. Dng th hai khai bo mt binkiu float vi tn mynumber. Sau khi c khai bo, cc bin trn c th c dngtrong phm vi ca chng trong chng trnh.

    Nu bn mun khai bo mt vi bin c cng mt kiu v bn mun tit kim cng scvit bn c th khai bo chng trn mt dng, ngn cch cc tn bng du phy. V d

    int a, b, c;

    khai bo ba bin kiu int (a,b v c) v hon ton tng ng vi :

    int a;int b;int c;

    Cc kiu s nguyn (char, short, long and int) c th l s c du hay khng dutu theo min gi tr m chng ta cn biu din. V vy khi xc nh mt kiu s nguynchng ta t t kho signedhoc unsignedtrc tn kiu d liu. V d:

    unsigned short NumberOfSons;signed int MyAccountBalance;

    Nu ta khng ch r signedorunsignedn s c coi l c du, v vy trong khaibo th hai chng ta c th vit :

    int MyAccountBalance

    cng hon ton tng ng vi dng khai bo trn. Trong thc t, rt t khi ngi tadng n t kho signed. Ngoi l duy nht ca lut ny kiu char. Trong chun ANSI-

    C++ n l kiu d liu khc vi signed char v unsigned char. c th thy r hn vic khai bo trong chng trnh, chng ta s xem xt mt onm C++ v d nh sau:

    // operating with variables#include int main ()

    { // declaring variables:

    4

    7

  • 8/14/2019 Baigiang C++

    8/50

  • 8/14/2019 Baigiang C++

    9/50

  • 8/14/2019 Baigiang C++

    10/50

  • 8/14/2019 Baigiang C++

    11/50

  • 8/14/2019 Baigiang C++

    12/50

    const int width = 100;const to char tab = '\t';const zip = 12440;

    BI 3. CC TON T

    Qua bi trc chng ta bit n s tn ti ca cc bin v cc hng. Trong C++, thao tc vi chng ta s dng cc ton t, l cc t kho v cc du khng c trong

    bng ch ci nhng li c trn hu ht cc bn phm trn th gii. Hiu bit v chng lrt quan trng v y l mt trong nhng thnh phn c bn ca ngn ng C++.

    3.1. Ton t gn (=).

    Ton t gn dng gn mt gi tr no cho mt bin

    a = 5;

    gn gi tr nguyn 5 cho bin a. V tri bt buc phi l mt bin cn v phi cth l bt k hng, bin hay kt qu ca mt biu thc.

    Cn phi nhn mnh rng ton t gn lun c thc hin t tri sang phiv khng bao gi o ngc

    a = b;

    gn gi tr ca bin a bng gi tr ang cha trong bin b. Ch rngchng ta ch gngi trca b cho a v s thay i ca b sau s khngnh hng n gi tr ca a.

    Mt thuc tnh ca ton t gn trong C++ gp phn gip n vt ln ccngn ng lp trnh khc l vic cho php v phi c th cha cc php gnkhc. V d:

    a = 2 + (b = 5);

    tng ng vi

    b = 5;a = 2 + b;

    V vy biu thc sau cng hp l trong C++

    a = b = c = 5;

    gn gi tr 5 cho c ba bin a, b v c

    3.2. Cc ton t s hc

    Nm ton t s hc c h tr bi ngn ng l:

    12

  • 8/14/2019 Baigiang C++

    13/50

    + cng- tr* nhn/ chia

    % ly phn d (trong php chia)

    Th t thc hin cc ton t ny cng ging nh chng c thc hin trongton hc. iu duy nht c v hi l i vi bn l php ly phn d, k hiu

    bng du phn trm (%). y chnh l php ton ly phn d trong php chia hais nguyn vi nhau. V d, nu a = 11 % 3;, bin a s mang gi tr 2 v 11 =3*3 +2.

    3.3. Cc ton t gn phc hp

    Mt c tnh ca ngn ng C++ lm cho n ni ting l mt ngn ng sc tchchnh l cc ton t gn phc hp cho php chnh sa gi tr ca mt bin vimt trong nhng ton t c bn sau:

    value += increase; tng ng vivalue = value +increase;a -= 5; tng ng vi a = a - 5;a /= b; tng ng vi a = a / b;

    price *= units + 1; tng ng viprice = price

    * (units + 1);

    v tng t cho tt c cc ton t khc.Tng v gim.

    Mt v d khc ca vic tit kim khi vit m lnh l ton t tng (++) v gim(--). Chng tng hoc gim gi tr cha trong mt bin i 1. Chng tng ngvi +=1 hoc -=1. V vy, cc dng sau l tng ng:

    a++;a+=1;a=a+1;

    Mt tnh cht ca ton t ny l n c th l tin thoc hu t, c ngha l cth vit trc tn bin (++a) hoc sau (a++) v mc d trong hai biu thc rtn gin n c cng ngha nhng trong cc thao tc khc khi m kt qu cavic tng hay gim c s dng trong mt biu thc th chng c th c mtkhc bit quan trng v ngha: Trong trng hp ton t c s dng nh lmt tin t (++a) gi tr c tng trc khi biu thc c tnh v gi tr tngc s dng trong biu thc; trong trng hp ngc li (a++) gi tr trong bin

    a c tng sau khi tnh ton. Hy ch s khc bit :

    V d 1 V d 2

    13

  • 8/14/2019 Baigiang C++

    14/50

  • 8/14/2019 Baigiang C++

    15/50

    !true tr v false.!false tr v true.

    Ton t logic && v || c s dng khi tnh ton hai biu thc ly ra mtkt qu duy nht. Chng tng ng vi cc ton t logic AND v OR. Kt quca chng ph thuc vo mi quan h ca hai i s:

    i s th nhta

    i s th haib

    Kt qua && b

    Kt qua || b

    true true true true

    true false false true

    false true false true

    false false false falseV d:

    ( (5 == 5) && (3 > 6) ) tr v false( true && false ).( (5 == 5) || (3 > 6)) tr v true( true ||false ).

    3.6. Ton t iu kin .

    Ton t iu kin tnh ton mt biu thc v tr v mt gi tr khc tu thuc vobiu thc l ng hay sai. Cu trc ca n nh sau:

    condition ? result1 : result2

    Nu condition l true th gi tr tr v s l result1, nu khng gi tr trv l result2.

    7==5 ? 4 : 3 tr v 3 v 7 khng bng 5.

    7==5+2 ? 4 : 3 tr v 4 v 7 bng 5+2.

    5>3 ? a : b tr v a, v 5 ln hn 3.a>b ? a : b tr v gi tr ln hn, a hocb.

    Cc ton t chuyn i kiuCc ton t chuyn i kiu cho php bn chuyn i d liu t kiu ny sangkiu khc. C vi cch lm vic ny trong C++, cch c bn nht c tha kt ngn ng C l t trc biu thc cn chuyn i tn kiu d liu c bctrong cp ngoc n (), v d:

    int i;float f = 3.14;i = (int) f;

    on m trn chuyn s thp phn 3.14 sang mt s nguyn (3). y, ton tchuyn i kiu l (int). Mt cch khc lm iu ny trong C++ l s dng ccconstructors ( mt s sch thut ng ny c dch l cu tnhng ti thy n

    15

  • 8/14/2019 Baigiang C++

    16/50

    c v khng xui tai lm) thay v dng cc ton t : t trc biu thc cnchuyn i kiu tn kiu mi v bao bc biu thc gia mt cp ngoc n.

    i = int ( f );

    C hai cch chuyn i kiu u hp l trong C++. Thm vo ANSI-C++ cn

    c nhng ton t chuyn i kiu mi c trng cho lp trnh hng i tng.

    sizeof()Ton t ny c mt tham s, c th l mt kiu d liu hay l mt bin v trv kch c bng byte ca kiu hay i tng .

    a = sizeof (char);

    a s mang gi tr 1 v kiu char lun c kch c 1 byte trn mi h thng. Gi trtr v ca sizeof l mt hng s v vy n lun lun c tnh trc khi chng

    trnh thc hin.

    Cc ton t khcTrong C++ cn c mt s cc ton t khc, nh cc ton t lin quan n con trhay lp trnh hng i tng. Chng s c ni n c th trong cc phntng ng.

    3.7. Th t u tin ca cc ton t

    Khi vit cc biu thc phc tp vi nhiu ton hng cc bn c th t hi ton hng no

    c tnh trc, ton hng no c tnh sau. V d nh trong biu thc sau:

    a = 5 + 7 % 2

    c th c hai cch hiu sau:

    a = 5 + (7 % 2) vi kt qu l 6, hoca = (5 + 7) % 2 vi kt qu l 0

    Cu tr li ng l biu thc u tin. V nguyn nhn ni trn, ngn ng C++ thit

    lp mt th t u tin gia cc ton t, khng ch ring cc ton t s hc m tt c ccton t c th xut hin trong C++. Th t u tin ca chng c lit k trong bng sautheo th t t cao xung thp.

    Tht

    Ton t M t Associativity

    1 :: scope Tri

    2 () [ ] -> . sizeof Tri

    16

  • 8/14/2019 Baigiang C++

    17/50

    3

    ++ -- tng/gim

    ~ o ngc bit

    ! NOT

    & * Ton t con tr

    (type) Chuyn i kiu+ - Dng hoc m

    Phi

    4 * / % Ton t s hc Tri

    5 + - Ton t s hc Tri

    6 > Dch bit Tri

    7 < >= Ton t quan h Tri

    8 == != Ton t quan h Tri

    9 & ^ |Ton t thao tc

    bit

    Tri

    10 && || Ton t logic Tri

    11 ?: Ton t iu kin Phi

    12

    = += -= *= /=%=>>=

  • 8/14/2019 Baigiang C++

    18/50

    4.1. Xut d liu (cout)

    Dng cout c s dng vi ton t qu ti

  • 8/14/2019 Baigiang C++

    19/50

    s in ra mn hnh:

    First sentence.Second sentence.

    Tham s endl c mt tc dng c bit khi n c dng vi cc dng d liu s

    dng b m: cc b m s cflushed( chuyn ton b thng tin t b m ra dngd liu). Tuy nhin, theo mc nh cout khng s dng b m.

    4.2. Nhp d liu (cin).

    Thao tc vo chun trong C++ c thc hin bng cch s dng ton t qu ti >>vi dng cin. Theo sau ton t ny l bin s lu tr d liu c c vo. V d:

    int age;cin >> age;

    khai bo bin age c kiu int v i nhp d liu t cin (bn phm) lu tr ntrong bin kiu nguyn ny.

    cin ch bt u s l d liu nhp t bn phm sau khi phm Enter c g. V vy dbn ch nhp mt k t th cin vn s kin nhn ch cho n khi bn g phm Enter.

    // i/o example#include int main (){

    int i;cout > i;cout

  • 8/14/2019 Baigiang C++

    20/50

  • 8/14/2019 Baigiang C++

    21/50

    Nu chng ta mun c hn mt lnh c thc hin trong trng hp condition ltrue chng ta c th ch nh mt khi lnhbng cch s dng mt cp ngoc nhn{ }:

    if (x == 100){cout

  • 8/14/2019 Baigiang C++

    22/50

    #include int main (){int n;

    cout > n;while (n>0) {cout n;cout

  • 8/14/2019 Baigiang C++

    23/50

    return 0;}

    Vng lp do-while thng c dng khi iu kin kt thc vng lp nmtrong vng lp, nh trong v d trn, s m ngi dng nhp vo l iu kin

    kim tra kt thc vng lp. Nu bn khng nhp s 0 trong v d trn th vnglp s khng bao gi chm dt.

    Vng lpfor.Dng thc:

    for (initialization; condition; increase)statement;

    v chc nng chnh ca n l lp li statement chng no condition cnmang gi tr ng, nh trong vng lp while. Nhng thm vo , for cung cpch dnh cho lnh khi to v lnh tng. V vy vng lp ny c thit k c

    bit lp li mt hnh ng vi mt s ln xc nh.

    Cch thc hot ng ca n nh sau:

    1, initialization c thc hin. Ni chung n t mt gi kh banu cho bin iu khin. Lnh ny c thc hin ch mt ln.2, condition c kim tra, nu n l ng vng lp tip tc cn nu

    khng vng lp kt thc v statement c b qua.3, statement c thc hin. N c th l mt lnh n hoc l mtkhi lnh c bao trong mt cp ngoc nhn.4, Cui cng, increase c thc hin tng bin iu khin v vnglp quay tr li bc 2.

    Sau y l mt v d m ngc s dng vngfor.// countdown using a forloop#include

    int main (){

    for (int n=10; n>0; n--){

    cout

  • 8/14/2019 Baigiang C++

    24/50

    Phn khi to v lnh tng khng bt buc phi c. Chng c th c b quanhng vn phi c du chm phy ngn cch gia cc phn. V vy, chng ta cth vit for (;n

  • 8/14/2019 Baigiang C++

    25/50

    int main (){

    for (int n=10; n>0; n--){

    if (n==5) continue;cout

  • 8/14/2019 Baigiang C++

    26/50

    break;...default:default block of instructions

    }

    N hot ng theo cch sau: switch tnh biu thc v kim tra xem n c bngconstant1 hay khng, nu ng th n thc hin block of instructions 1cho n khi tm thy t kho break, sau nhy n phn cui ca cu trc la chn

    switch.Cn nu khng, switch s kim tra xem biu thc c bng constant2 hay khng. Nung n s thc hin block of instructions 2 cho n khi tm thy t khobreak.Cui cng, nu gi tr biu thc khng bng bt k hng no c ch nh trn (bnc th ch nh bao nhiu cu lnh case tu thch), chng trnh s thc hin cc lnhtrong phn default: nu n tn ti v phn ny khng bt buc phi c.

    Hai on m sau l tng ng:

    v d switch if-else tng ng

    switch (x) {case 1:cout

  • 8/14/2019 Baigiang C++

    27/50

    break;default:cout

  • 8/14/2019 Baigiang C++

    28/50

  • 8/14/2019 Baigiang C++

    29/50

    y l mt v d khc v hm:

    // function example#include int subtraction (int a, intb){

    int r;r=a-b;return (r);

    }int main (){

    int x=5, y=3, z;z = subtraction (7,2);cout

  • 8/14/2019 Baigiang C++

    30/50

    Tng t nh vy

    cout

  • 8/14/2019 Baigiang C++

    31/50

    void dummyfunction (void){

    cout

  • 8/14/2019 Baigiang C++

    32/50

    // passing parameters byreference#include void duplicate (int& a, int&b, int& c){

    a*=2;b*=2;c*=2;

    }int main (){

    int x=1, y=3, z=7;duplicate (x, y, z);cout

  • 8/14/2019 Baigiang C++

    33/50

    void prevnext (int x, int&prev, int& next){

    prev = x-1;next = x+1;

    }int main (){

    int x=100, y, z;prevnext (x, y, z);cout

  • 8/14/2019 Baigiang C++

    34/50

    chng ta ch dng mt tham s nhng hm divide cho php n hai. Bi vy hmdivide s t cho tham s th hai gi tr bng 2 v l gi tr mc nh ca n (ch

    phn khai bo hm c kt thc bi int b=2). V vy kt qu s l 6 (12/2).

    Trong lnh th hai:

    divide (20,4)

    c hai tham s, bi vy gi tr mc nh s c b qua. Kt qu ca hm s l 5(20/4).

    7.3. Qu ti cc hm.

    Hai hm c th c cng tn nu khai bo tham s ca chng khc nhau, iu ny cngha l bn c th t cng mt tn cho nhiu hm nu chng c s tham s khc nhauhay kiu d liu ca cc tham s khc nhau (hay thm ch l kiu d liu tr v khcnhau). V d:// overloaded function#include int divide (int a, int b){

    return (a/b);}float divide (float a, floatb){

    return (a/b);}int main (){

    int x=5,y=2;float n=5.0,m=2.0;cout

  • 8/14/2019 Baigiang C++

    35/50

    7.4. Cc hm inline.

    Ch th inline c th c t trc khao bo ca mt hm ch r rng li gi hm sc thay th bng m lnh ca hm khi chng trnh c dch. Vic ny tng ngvi vic khai bo mt macro, li ch ca n ch th hin vi cc hm rt ngn, tc chy chng trnh s c ci thin v n khng phi gi mt th tc con.

    Cu trc ca n nh sau:

    inline type name ( arguments ... ) { instructions ... }li gi hm cng nh bt k mt hm no khc. Khng cn thit phi t t khoinline trong lnh gi, ch cn trong li khai bo hm l .

    qui.

    Cc hm c th gi chnh n. iu ny c th c ch vi mt s tc v nh l mt s

    phng php sp xp hay tnh giai tha ca mt s. V d, tnh giai tha ca mt s(n), cng thc ton hc ca n nh sau:

    n! = n * (n-1) * (n-2) * (n-3) ... * 1

    v mt hm qui tnh ton s nh sau:// factorial calculator#include long factorial (long a)

    {if (a > 1)return (a * factorial (a-

    1));elsereturn (1);

    }int main (){

    long l;cout > l;cout

  • 8/14/2019 Baigiang C++

    36/50

  • 8/14/2019 Baigiang C++

    37/50

    void odd (int a){

    if ((a%2)!=0) cout

  • 8/14/2019 Baigiang C++

    38/50

    trong mi mt trng biu din mt phn t ca mng, trong trng hp ny l ccgi tr nguyn kiu int. Chng c nh s t 0 n 4 v phn t u tin ca mnglun l 0 bt k di ca n l bao nhiu.

    Nh bt k bin no khc, mt mng phi c khai bo trc khi c th s dng. Mtkhai bo in hnh cho mt mng trong C++ nh sau:

    type name [elements];

    trong type l mt kiu d liu hp l (int, float...), name l mt tn bin hp l vtrng elements ch nh mng s cha bao nhiu phn t

    V vy, khai bo billy nh trnh by trn chng ta ch cn mt dng n gin nhsau:

    int billy [5];

    Ch : Trng elements bn trong cp ngoc [] phi l mt gi tr hng khi khai bo

    mt mng, v mng l mt khi nh tnh c kch c xc nh v trnh bin dch phi ckh nng xc nh xem cn bao nhiu b nh cp pht cho mng trc khi cc lnh cth c thc hin.

    8.2. Khi to mt mng.

    Khi khai bo mt mng vi tm hot ng a phng (trong mt hm), theo mc nhn s khng c khi to, v vy ni dung ca n l khng xc nh cho n khi chngra lu cc gi tr ln .

    Nu chng ta khai bo mt mng ton cc (bn ngoi tt c cc hm) n s c khito v tt c cc phn t c t bng 0. V vy nu chng ta khai bo mng ton cc:

    int billy [5];

    mi phn t ca billy s c khi to l 0:

    38

  • 8/14/2019 Baigiang C++

    39/50

    Nhng thm vo , khi chng ta khai bo mt mng, chng ta c th gn cc gi trkhi to cho tng phn t ca n. V d:

    int billy [5] = { 16, 2, 77, 40, 12071 };

    lnh trn s khai bo mt mng nh sau:

    S phn t trong mng m chng ta khi to vi cp ngoc nhn { } phi bng s phnt ca mng c khai bo vi cp ngoc vung [ ]. Bi v iu ny c th ccoi l mt s lp li khng cn thit nn C++ cho php trng gia cp ngoc vung,kch thc ca mng c xc nh bng s gi tr gia cp ngoc nhn.

    8.3. Truy xut n cc phn t ca mng.

    bt k im no ca chng trnh trong tm hot ng ca mng, chng ta c th truyxut tng phn t ca mng c hay chnh sa nh l i vi mt bin bnh thng.Cu trc ca n nh sau:

    name[index]

    Nh trong v d trc ta c mng billy gm 5 phn t c kiu int, chng ta c thtruy xut n tng phn t ca mng nh sau:

    V d, lu gi tr 75 vo phn t th ba ca billy ta vit nh sau:

    billy[2] = 75;

    v, v d, gn gi tr ca phn t th 3 ca billy cho bin a, chng ta vit:

    a = billy[2];

    V vy, xt v mi phng din, biu thcbilly[2] ging nh bt k mt bin kiuint.

    Ch rng phn t th ba cabilly lbilly[2], v mng bt u t ch s 0. Vvy, phn t cui cng s lbilly[4]. V vy nu chng ta vitbilly[5], chng tas truy xut n phn t th 6 ca mng v vt qu gii hn ca mng.

    39

  • 8/14/2019 Baigiang C++

    40/50

    Trong C++, vic vt qu gii hn ch s ca mng l hon ton hp l, tuy nhin n cth gy ra nhng vn thc s kh pht hin bi v chng khng to ra nhng li trongqu trnh dch nhng chng c th to ra nhng kt qu khng mong mun trong qutrnh thc hin. Nguyn nhn ca vic ny s c ni n k hn khi chng ta bt us dng con tr.

    Cn phi nhn mnh rng chng ta s dng cp ngoc vung cho hai tc v: u tin lt kch thc cho mng khi khai bo chng v th hai, ch nh ch s cho mt phnt c th ca mng khi xem xt n n.

    int billy[5]; // khai bo mt mng mi.billy[2] = 75; // truy xut n mt phnt ca mng.

    Mt vi thao tc hp l khc vi mng:

    billy[0] = a;billy[a] = 75;b = billy [a+2];billy[billy[a]] = billy[2] + 5;

    // v d v mng#include int billy [] = {16, 2, 77,40, 12071};

    int n, result=0;int main (){

    for ( n=0 ; n

  • 8/14/2019 Baigiang C++

    41/50

  • 8/14/2019 Baigiang C++

    42/50

    jimmy[n][m]=(n+1)*(m+1);

    }return 0;

    }

    {jimmy[n * WIDTH +

    m]=(n+1)*(m+1);}

    return 0;}

    khng mt chng trnh no vit g ra mn hnh nhng c hai u gn gi tr vo khinh c tn jimmy theo cch sau:

    Chng ta nh ngha hng (#define) n gin ha nhng chnh sa sau ny cachng trnh, v d, trong trng hp chng ta quyt nh tng kch thc ca mng vichiu cao l 4 thay v l 3, chng ta ch cn thay i dng:

    #define HEIGHT 3

    thnh

    #define HEIGHT 4

    v khng phi c thm s thay i no na i vi chng trnh.

    8.5. Dng mng lm tham s.

    Vo mt lc no c th chng ta cn phi truyn mt mng ti mt hm nh l mttham s. Trong C++, vic truyn theo tham s gi tr mt khi nh l khng hp l, ngayc khi n c t chc thnh mt mng. Tuy nhin chng ta li c php truyn a chca n, vic ny cng to ra kt qu thc t ging thao tc trn nhng li nhanh hnnhiu v hiu qu hn.

    c th nhn mng l tham s th iu duy nht chng ta phi lm khi khai bo hm lch nh trong phn tham s kiu d liu c bn ca mng, tn mng v cp ngocvung trng. V d, hm sau:

    void procedure (int arg[])

    nhn vo mt tham s c kiu "mng ca char" v c tn arg. truyn tham s chohm ny mt mng c khai bo:

    int myarray [40];

    ch cn gi hm nh sau:

    42

  • 8/14/2019 Baigiang C++

    43/50

    procedure (myarray);

    Di y l mt v d c th

    // arrays as parameters#include void printarray (int arg[],int length) {

    for (int n=0; n

  • 8/14/2019 Baigiang C++

    44/50

    Trong tt c cc chng trnh chng ta thy cho n gi, chng ta ch s dng ccbin kiu s, ch dng biu din cc s. Nhng bn cnh cc bin kiu s cn c ccxu k t, chng cho php chng ta biu din cc chui k t nh l cc t, cu, onvn bn... Cho n gi chng ta mi ch dng chng di dng hng ch cha quan tmn cc bin c th cha chng.

    Trong C++ khng c kiu d liu c bn lu cc xu k t. c th tha mn nhucu ny, ngi ta s dng mng c kiu char. Hy nh rng kiu d liu ny (char)ch c th lu tr mt k t n, bi vy n c dng to ra xu ca cc k t n.

    V d, mng sau (hay l xu k t):

    char jenny [20];

    c th lu mt xu k t vi di cc i l 20 k t. Bn c th tng tng n nhsau:

    Kch thc cc i ny khng cn phi lun lun dng n. V d, jenny c th luxu "Hello" hay "Merry christmas". V cc mng k t c th lu cc xu kt ngn hn di ca n, trong C++ c mt quy c kt thc mt ni dung camt xu k t bng mt k t null, c th c vit l '\0'.

    Chng ta c th biu din jenny (mt mng c 20 phn t kiu char) khi lu tr xuk t "Hello" v "Merry Christmas" theo cch sau:

    Ch rng sau ni dung ca xu, mt k t null ('\0') c dng bo hiu kt thcxu. Nhng mu xm biu din nhng gi tr khng xc nh.

    9.1. Khi to cc xu k t.

    V nhng xu k t l nhng mng bnh thng nn chng cng nh cc mng khc. Vd, nu chng ta mun khi to mt xu k t vi nhng gi tr xc nh chng ta c thlm iu tng t nh vi cc mng khc:

    char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0'};

    Tuy nhin, chng ta c th khi to gi tr cho mt xu k t bng cch khc: s dngcc hng xu k t.

    44

  • 8/14/2019 Baigiang C++

    45/50

    Trong cc biu thc chng ta s dng trong cc v d trong cc chng trc cchng xu k t xut hin vi ln. Chng c biu din trong cp ngoc kp ("), vd:

    "the result is: "

    l mt hng xu k t chng ta s dng mt s ch.

    Khng ging nh du nhy n (') cho php biu din hng k t, cp ngoc kp (") lhng biu din mt chui k t lin tip, v cui chui mt k t null ('\0') lunc t ng thm vo.

    V vy chng ta c th khi to xumystring theo mt trong hai cch sau y:

    char mystring [] = { 'H', 'e', 'l', 'l', 'o','\0' };

    char mystring [] = "Hello";

    Trong c hai trng hp mng (hay xu k t)mystring c khai bo vi kch thc6 k t: 5 k t biu din Hello cng vi mt k t null.

    Trc khi tip tc, ti cn phi nhc nh bn rng vic gn nhiu hng nh vic s dngdu ngoc kp (") ch hp l khi khi to mng, tc l lc khai bo mng. Cc biu thctrong chng trnh nh:

    mystring = "Hello";mystring[] = "Hello";

    l khng hp l, c cu lnh di y cng vy:

    mystring = { 'H', 'e', 'l', 'l', 'o', '\0' };

    Vy hy nh: Chng ta ch c th "gn" nhiu hng cho mt mng vo lc khi to n.Nguyn nhn l mt thao tc gn (=) khng th nhn v tri l c mt mng m ch cth nhn mt trong nhng phn t ca n. Vo thi im khi to mng l mt trnghp c bit, v n khng thc s l mt lnh gn mc d n s dng du bng (=).

    9.2. Gn gi tr cho xu k t

    V v tri ca mt lnh gn ch c th l mt phn t ca mng ch khng th l cmng, chng ta c th gn mt xu k t cho mt mng kiu char s dng mt phng

    php nh sau:

    mystring[0] = 'H';mystring[1] = 'e';mystring[2] = 'l';mystring[3] = 'l';mystring[4] = 'o';mystring[5] = '\0';

    45

  • 8/14/2019 Baigiang C++

    46/50

    Nhng r rng y khng phi l mt phng php thc t. gn gi tr cho mt xuk t, chng ta c th s dng lot hm kiu strcpy (string copy), hm ny c nhngha trong string.h v c th c gi nh sau:

    strcpy (string1, string2);

    Lnh ny copy ni dung ca string2 sang string1. string2 c th l mt mng,con tr hay mt hng xu k t, bi vy lnh sau y l mt cch ng gn xu hng"Hello" chomystring:

    strcpy (mystring, "Hello");

    V d:

    // setting value to string#include #include

    int main (){

    char szMyName [20];strcpy (szMyName,"J.

    Soulie");cout

  • 8/14/2019 Baigiang C++

    47/50

    setstring (szMyName,"J.Soulie");

    cout

  • 8/14/2019 Baigiang C++

    48/50

    Nu bn cn nh phn ni v giao tip vi, bn s nh rng chng ta s dng ton t>> nhn d liu trc tip t u vo chun. Phng thc ny c th c dng vicc xu k t thay cho cin.getline. V d, trong chn trnh ca chng ta, khichng ta mun nhn d liu t ngi dng chng ta c th vit:

    cin >> mybuffer;

    lnh ny s lm vic nh n c nhng hn ch sau m cin.getline khng c:

    N ch c th nhn nhng t n (khng nhn c c cu) v phng thc nys dng k t trng(bao gm c du cch, du tab v du xung dng) lm duhiu kt thc..

    N khng cho php ch nh kch thc cho b m. Chng trnh ca bn c thchy khng n nh nu d liu vo ln hn kch c ca mng cha n.

    V nhng nguyn nhn trn, khi mun nhp vo cc xu k t bn nn s dngcin.getline thay v cin >>.

    9.3. Chuyn i xu k t sang cc kiu khc.

    V mt xu k t c th biu din nhiu kiu d liu khc nh dng s nn vic chuyni ni dung nh vy sang dng s l rt hu ch. V d, mt xu c th mang gi tr"1977"nhng l mt chui gm 5 k t (k c k t null) v khng d g chuynthnh mt s nguyn. V vy th vin cstdlib (stdlib.h) cung cp 3macro/hm hu ch sau:

    atoi: chuyn xu thnh kiu int. atol: chuyn xu thnh kiu long. atof: chuyn xu thnh kiu float.

    Tt c cc hm ny nhn mt tham s v tr v gi tr s (int, long hoc float).Cc hm ny khi kt hp vi phng thc getline ca cin l mt cch ng tin cyhn phng thc cin>>c in khi yu cu ngi s dng nhp vo mt s:

    // cin and ato* functions#include

    #include

    int main (){

    char mybuffer [100];float price;int quantity;cout

  • 8/14/2019 Baigiang C++

    49/50

    cout

  • 8/14/2019 Baigiang C++

    50/50

    TI LIU THAM KHO

    [1]. L ng Hng, T Tun Anh, Nguyn Hu c, Nguyn Thanh Thu,

    Lp trnh hng i tng vi C++, NXB Khoa hc v K thut 1999.[2]. GS. Phm Vn t, Lp trnh hng i tng C++, NXB Khoa hc v

    K thut 2000

    [3]. TS Trn Vn T, 450 bi tp v lp trnh C++, NXB Thng k 2000.