Bai Giang Lap Trinh C - Smith.N Studio

Embed Size (px)

Citation preview

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    1/117

    NGN NG LP C Gio vin

    V Vn nh

    1Ngn ng lp trnh C - Smith.N Studio!

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    2/117

    2Ngn ng lp trnh C - Smith.N Studio!

    Bi 1: Tng quan v ngn ng lptrnh C

    Ngn ng C c mt s cc c im ni btsau :

    B lnh ph h p v i ph ng php lp trnh cutrc.Kiu d liu phong ph.Mt ch ng trnh C bao gi cng g m mt hocnhiu hm v cc hm r i nhau.L ngn ng linh ng v c php, chp nhnnhiu cch thhin ch ng trnh .

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    3/117

    3Ngn ng lp trnh C - Smith.N Studio!

    I. Hng dn s dng mi trng kt hp Turbo C 1. Khi ng

    C1: T DOS [ ng dn ] \ TC.EXEC2: T Win C-> TC -> BIN -> TC.EXEC3: Start -> Run -> C:\TC\BIN\TC.EXE

    2. M File M file mi : File-> NewM file c: File-> Open

    3. Ghi FileSave (F2) : Ghi tp mi ang son tho vo a Save as : Ghi tp ang son tho vo a theo tn

    mi hoc e ln tp c

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    4/117

    4Ngn ng lp trnh C - Smith.N Studio!

    Chy mt chng trnh F9 : Bin dch

    Ctrl F9 : Thc thi chng trnh Alt F5 : Xem kt qu

    Thot khi C Thot tm thi v DOS : Dos Shell Thot hn khi C: File \ Quit ( Alt + X)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    5/117

    5Ngn ng lp trnh C - Smith.N Studio!

    II. Gii thiu ngn ng lp trnh C 1. Cc thnh phn ca NNLT C

    Tp cc k t Ch ci: A .. Z, a .. z Ch s : 0..9

    K hiu ton hc : + - * / = ( )K t gch ni: _ Cc k hiu c bit khc nh : . , ; : [ ] { } ? ! \ & | % # $,

    T kho L nhng t c mt ngha hon ton xc nh

    Asm, char, do, int, float, for, do, While, TnDng xc nh cc i lng khc nhau trong mt chng trnh Bt u bng ch ci hoc gch ni di cc i mc nh l 32

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    6/117

    6Ngn ng lp trnh C - Smith.N Studio!

    2. Cc kiu d liu c s trong C Kiu s k t (char) Kiu s nguyn (int) Kiu du phy ng (chnh xc n (float),chnh xc kp (double)) Kiu void

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    7/117

    7Ngn ng lp trnh C - Smith.N Studio!

    2.1 Kiu k t (char)Mt gi tr kiu k t (char) chim 1 byte trong bnh

    v biu din mt k t thng qua bng m ASCII.V d

    K t M ASCII

    0 48

    1 49

    2 50 A 65

    a 97

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    8/117

    8Ngn ng lp trnh C - Smith.N Studio!

    Trong ngn ng C cung cp hai kiu k t (char) lsigned char v unsigned char

    Phm vi Sk t Kch th csigned char -128..127 1 byteunsigned char 0..255 1 byte

    V d : char ch, ch1;

    ch= a ; ch1= 97;

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    9/117

    9Ngn ng lp trnh C - Smith.N Studio!

    2.2 Kiu snguyn (int)Kiu snguyn trong C g m cc kiu sau:

    Kiu Phm vi biu din Kch th c

    int -32768 -> 32767 2 byte

    Unsigned int 0 -> 65535 2 byte

    -2147483648 - 4 byte

    4 byte

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    10/117

    10Ngn ng lp trnh C - Smith.N Studio!

    2.3 Kiu s thc hay cn gi l kiu du phy ng

    Kiu Phm vi biu din S ch sc ngha

    Kchthc

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

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

    laongdouble 3.4E-4932 -> 1.1E+4932 17-18 10 byte

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    11/117

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    12/117

    12Ngn ng lp trnh C - Smith.N Studio!

    H ng s : l cc gi tr s xc nh, c th l kiunguyn hay kiu thc

    Hng nguyn: Gi tr ch bao g m cc ch s, du +, - c lu tr theo kiu int. V d: 12,-12Nu gi tr v t qu min gi tr ca int hoc c k t l (hay L ) theo sau gi tr th lu theo kiu long int. Vd: 43L hoc 43l l hng nguyn lu theo kiu long int.Hng thc: Trong gi tr c du chm thp phn, hocghi d i dng s c m, v c lu theo kiu float,

    double, long double. V d: 1.2 , 2.1E -3 (2.1E-3=0.0021) hoc 3.1e-2 (3.1e-2=0.031).

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    13/117

    13Ngn ng lp trnh C - Smith.N Studio!

    H ng k t Mt hng kiu k t c vit trong du ngoc n (' )nh 'A' hoc 'z'.Hng k t 'A' thc s ng ngha v i gi tr nguyn 65,l gi tr trong bng m ASCII ca ch hoa 'A' (Nh v y gi tr ca hng chnh l m ASCII ca n). i v i mt

    vi hng k t c bit, ta cn s dng cch vit thmdu \ , nh '\t' t ng ng v i phm tab:Hng k t c th tham gia vo php ton nh mi s

    nguyn khc: VD: '8' - '1'= 56-49=7.

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    14/117

    14Ngn ng lp trnh C - Smith.N Studio!

    Cch vit K t \ n Xung hng \ t Tab \ o nul tng ng vi gi tr

    nguyn 0 trong bng m

    ASCII \ b Backspacse \ r V u dng

    \ f Sang tri \\ \ \

    \

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    15/117

    15Ngn ng lp trnh C - Smith.N Studio!

    H ng chu i L chui k t nm trong cp du nhy kp " ". Cc k

    t

    ny cng c th

    l cc k t

    c biu di

    n b

    ng chui thot.

    V d : "Turbo C", "Ngn ng C++ \n\r" M t h ng chu i c l u tr t n cng b ng m t k t Nul (\0), v d chu i "Turbo C" c l u tr trong b nh nh sau:

    T u r b o C \0

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    16/117

    16Ngn ng lp trnh C - Smith.N Studio!

    Cch nh ngha hng s dng trong chng tr nhVi cc gi tr hng thng c dng trong mt

    chng trnh ta nn nh ngha u chng tr nh(sau cc dng khai bo nhng th vin chun) theo cphp:

    #define V d: #define PI 3.1415

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    17/117

    17Ngn ng lp trnh C - Smith.N Studio!

    3.2 Bin- Cch khai bo:Mi bin trong ch ng trnh u phi

    c khai bo tr c khi s dng v i c php khai:Kiu d liu ;

    L u : n u c nhi u tn bi n th gi a cc tn bi n ph i c d u , ngn cch V d : int a,b; float x;

    - Kh i u cho cc binNgay trn dng khai bo ta c th gn cho bi n m t gi tr . Vi c lm ny g i l kh i u cho bi n.V d : int a,b=6,d=1;

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    18/117

    18Ngn ng lp trnh C - Smith.N Studio!

    Cch truy xut n a ch ca binMt shm ca C dng n a ch ca bin v d

    nh hm scanf . nhn a ch ca bin dng tont: &V d : &tn_bi n - &a : a ch c a bi n a

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    19/117

    19Ngn ng lp trnh C - Smith.N Studio!

    3.3 Cu trc tng qut ca ch ng trnh C

    Mt ch ng trnh C chun g m c cc thnh ph n sau:1. Cc ch th tin bin d ch2. Khai bo cc kiu d liu m i

    3. Khai bo hng, khai bo bin4. Khai bo hm5. Ch ng trnh chnh

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    20/117

    20Ngn ng lp trnh C - Smith.N Studio!

    1. Ch th tin bin d ch: gip trnh bin dch thc hin mtscng vic tr c khi thc hin mt scng vic tr ckhi thc hin bin d ch chnh thc

    VD: #include ;#include ;2. Khai bo kiu d liu m i: dung t kho typedef.

    VD: typedef int songuyen;typedef float mang[10];

    3. Khai bo hng v bin: khai bo cc hng sv bin dng trong ch ng trnh

    4. Khai bo hm: khai bo cc hm t vit5. Ch ng trnh chnh: hm main l hm b t buc trong

    ch ng trnh. Hm main c th tr v gi tr kiu nguyn(int) hoc khng tr v gi tr no (void)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    21/117

    21Ngn ng lp trnh C - Smith.N Studio!

    /* Chng trnh in ra dng ch Trung tm o to Tr c trn mn hnh */ # include void main () /* Ham chinh */ {

    printf(" \ n Trung tm o to Tr c ");

    /*xuong dong in chu Trung tm o to Tr c */ }

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    22/117

    22Ngn ng lp trnh C - Smith.N Studio!

    * Chng trnh tnh chu vi v din tch hnh trn, bit bn kl mt hng s c gi tr =3.1 */ # include /* khai bo th vin hm nhp xut chun # include /* khai bo th vin hm ton hc */ #define r 3.1void main (){

    float cv,dt; /* khai bao bien chu vi va dien tich kieu so thuc */ cv=2*r*M_PI; /* tinh chu vi */ dt=M_PI*r*r; /* Tinh dien tich */ printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt);

    /* In ket qua len man hinh */ getch(); /* Tam dung chuong trinh */ }

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    23/117

    23Ngn ng lp trnh C - Smith.N Studio!

    *Chng trnh ny minh ha cch va khai bo, va khu mt bin trong C */

    #include void main(){

    char ki_tu = 'a'; /* Khai bo/khi u k t. */ int so_nguyen = 15; /* Khai bo khi u s nguyn */ float so_thuc = 27.62; /* Khai bo/khi u s thc / printf("%c la mot ki tu.\n",ki_tu);printf("%d la mot so nguyen.\n",so_nguyen);printf("%f la mot so thuc.\n",so_thuc);}

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    24/117

    24Ngn ng lp trnh C - Smith.N Studio!

    Bi 2:Biu thc v cc php ton

    I. Biu thcL s k t h p cc php ton v cc ton h ng din t mt cng thc ton hc no . Biu thc trong C g m c biu thc ton hc vbiu thc logic

    Biu thc ton hc bao g m cc php ton s hc v cchng, cc bin, cc hmBiu thc logic bao g m cc bin, hng, hm v phpton logic (!: php ph nh, &&: php v, || : phphoc)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    25/117

    25Ngn ng lp trnh C - Smith.N Studio!

    II. Cc php tonPhp ton shcPhp ton ngha + Cng - Tr * Nhn/ Chia% Ly phn d Ch :

    -Php ton chia 2 snguyn scht ct phn thpphn.-Php ton ly phn d khng p dng cho cc gitr float v double

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    26/117

    26Ngn ng lp trnh C - Smith.N Studio!

    II. Cc php tonPhp ton quan h Php ton ngha V d

    > C ln hn khng? a>b

    >= C ln hn hay bng khng?a>=b< C nh hn khng?a

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    27/117

    27Ngn ng lp trnh C - Smith.N Studio!

    II. Cc php ton

    Php ton logicPhp ph nh ! Php v (AND) &&Php hoc (OR) ||

    Cc php ton quan h c u tin nh hnso vi ! nhng ln hn so vi php && v ||

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    28/117

    28Ngn ng lp trnh C - Smith.N Studio!

    Cu lnhgn v biu thc C php ca lnh gn: = ; VD: x = -10;

    m = y + 2 m;Trong C cho php ngi s dng c gp lnh gntheo c php :

    a = b = c = 7;

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    29/117

    29Ngn ng lp trnh C - Smith.N Studio!

    Php ton tng gi m Ton t + + : dng tng gi tr ca cc bin nguyn hay bin thc

    Ton t - - dng gim gi tr ca bin nguyn hay binthc

    Ton t + + v -- u c th ng tr c hoc sau tonhng

    VD: + + n ; n+ +; --m ; m--;Khi cc ton t + +, -- ng tr c ton hng th gi tr

    ca ton hng c tng hoc gim tr c khi s dng vng c li nu ton t ++, -- ng sau ton hng th tonhng c tng hay gim sau khi thc hin

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    30/117

    30Ngn ng lp trnh C - Smith.N Studio!

    Chuyn i kiu gi tr Vic chuy n i kiu gi tr trong C th ng din ra t ng trong tr ng h p sau:

    Trong biu thc c cc ton hng khc kiuKhi gn mt gi tr kiu ny cho mt gi tr kiu khcNgoi ra ta c thdng php chuy n kiu p kiu d

    liu sang kiu khc (type) biu_th cCh :- Khi chuy n i kiu tng biu thc th i v i ton hng

    c kiu thp h n s c nng thnh kiu cao h n tr ckhi htc hin php ton v k t qu thu c sc k t qu theo kiu cao h n

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    31/117

    31Ngn ng lp trnh C - Smith.N Studio!

    Kiu int v kiu long th int ----> long int v float th int ---> float

    Float v double th float -----> doubleKiu int c thchuy n thnh float v ng c li

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    32/117

    32Ngn ng lp trnh C - Smith.N Studio!

    I. Hm xut nhp chun trong th vin Hm a kt qu ra mn hnh

    C php: printf(, bt1, bt2,...btk); ngha: bt1,...btk : l k biu thc cn in kt qu ra mn hnh l mt hng xu k t bao gm 3 - K t diu khin vic xung dng tip theo \ n - K t hin th: l k t c in ra mn hnh - K t m t cch a ra mn hnh ca cc bin(

    ca kiu). Mi biu thc c c t tng ng

    Bi 3Cc hm vo ra d liu

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    33/117

    33Ngn ng lp trnh C - Smith.N Studio!

    c t kiu nguyn i v i biu thc c gi tr kiu s nguyn %[n]d . Trong

    n l s nguyn xc nh rng ti thiu dnh cho gitr biu thc in ra mn hnhc t kiu s thc %[n][.m]f. Trong

    m l sch s sau du phy, n l mt snguyn xc

    nh rng ti thiu trn mn hnh cho gi tr ca biuthc:

    VD:

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    34/117

    34Ngn ng lp trnh C - Smith.N Studio!

    %c : in mt k t c m ASCII tng ng

    %[n]d : in mt s nguyn vi chiu di ti thiu l n %[n]ld: in mt s nguyn (long int) %[n.m]f : in mt s thc vi chiu di n v ly m s

    phn

    %s : in ra chui k t

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    35/117

    35Ngn ng lp trnh C - Smith.N Studio!

    Hm hin th mt xu k t ra mn hnhC php: int puts(char *s);

    ngha:Hin th mt xu k t s ln mn hnh, sau khi inxong th con tr s c chuy n xung dng. Trong s lcon trkiu char tr t i vng cha xu k t Hm a mt k t ra mn hnhC php: int putchar(int ch); ngha: Hm sk t ch ra mn hnh v i ch l m ca l t cn in

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    36/117

    36Ngn ng lp trnh C - Smith.N Studio!

    Hm nhn d liu t bn phmC php: scanf(dt1dt2..dtk, &bi n1,

    ...&bink); ngha: dt1,...dtk l mt hng xu k t c t ca k bin&bin1, ..&bink: l a chca bin trong bnh

    Hm nhn t bn phm mt xu k t C php: int *getchar(char *s); ngha:

    Hm nhn dy k t t bn phm vo cho n khi g pk t \ n th dng lis l con tr tr t i vng nh scha xu v a nhn

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    37/117

    37Ngn ng lp trnh C - Smith.N Studio!

    Hm nhn mt k t t bn phmC php: getchar(void);

    ngha:nhn k t c nhp t bn phm

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    38/117

    38Ngn ng lp trnh C - Smith.N Studio!

    II. Hm xut nhp chun trong th vin Hm getch() v getche

    C php : int getch( void ) int getche( void ) - Hai hm trn ch nhn mt k t trc tip t b m bn

    phm. Nu b m rng th ch . Khi mt phm c nth nhn ngay k t m khng cn phi enter nh cchm nhp t stdio.h

    - Hm getche() cho hin k t ln mn hnh cn getch() th

    khng - K t qu tr v ca hm l k t c n trn bn phm.

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    39/117

    39Ngn ng lp trnh C - Smith.N Studio!

    Xut k t c muC php : cprintf

    ngha: in ra k t c mu c n nh b i hmtextcolor.Nhp k t c mu

    C php: cscanf ngha: + N i dung nhp c mu c n nh b i hm

    textcolor+ Nh n ni dung trc tip t b m bn phm. V

    v y v i hm cscanf ta cng phi kh k t \n trong b m bng %*c hoc bng hm getch()

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    40/117

    40Ngn ng lp trnh C - Smith.N Studio!

    III.Mt shm thao tc trn mn hnhHm xa mn hnh: clrscr();

    C tc dng xa ton bm n hnh v sau khi xa contr s v tr gc pha bn tri.Hm t t a con tr : gotoxy(int x, int y);

    t con tr ti v tr x, y Hm t m u n n textbackground

    void textbackground(int color);t mu nn Color l mt biu thc nguyn c gi

    tr t 0 n 7 t ng ng v i mt trong 8 hng smu u tin ca bng mu v n bn.

    h l

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    41/117

    41Ngn ng lp trnh C - Smith.N Studio!

    Hm t m u ch textcolor void textcolor(int newColor);

    La chn mu k tm i newColor.Trong newColor lmt biu thc nguyn c gi tr t 0 n 15 t ng ng v imt trong cc hng smu ca bng mu v n bn.

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    42/117

    42Ngn ng lp trnh C - Smith.N Studio!

    Bi 4: Cu trc iu khin Cu lnh, khi lnh

    Cu lnh: mi cu lnh thc hin mt cng vic vc kt thc bi du ; Khi lnh: l tp hp cc cu lnh bt u bng du{ v kt thc bng du }

    I C i khi if

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    43/117

    43Ngn ng lp trnh C - Smith.N Studio!

    I. Cu trc i u khin if 1. Cu trc if dng 1

    C php: if (bt) s ; ngha: bt l biu thc lgic, s l lnh n hoc lnhphc. nu bt nhn gi tr true th thc hin s, ng c li s c bqua

    2. Cu trc if dng 2C php: if(bt) s;else s1 ;

    ngha: bt l biu thc lgic, nu bt nhn gi tr true ththc hin s bqua s1, ng c li nu bt nhn gi tr flaseth thc hin s1 bqua s(s v s1 c th l lnh n hoclnh phc)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    44/117

    44Ngn ng lp trnh C - Smith.N Studio!

    Ch : trong C cho php s dng cc cu trc if lng nhau gii quy t bi ton

    3. Bi tp- Nhp 2 s thc a, b t bn phm. Tm v in ra mn hnh

    s l n nht v sb nht- Gii hph ng trnh bc nht hai n s

    ax + by = cdx + ey = f

    II Cu trc rnhnh switch

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    45/117

    45Ngn ng lp trnh C - Smith.N Studio!

    II. Cu trc rnhnh switch1. Cu trc tng qut

    C php: switch (bt) { case n1 : s1

    case n2 : s2 ....

    case nk : sk [default : s(k+1 )]

    }

    h

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    46/117

    46Ngn ng lp trnh C - Smith.N Studio!

    ngha: Bt: l biu thc ton hc c gi tr kiu nguyn

    Ni(i=1..k): l cc skiu nguyn, kiu hng k t, hocbiu thcSi(i=1..k): l cc lnh n hoc lnh phc[default : s(k+1 )] : l phn tu chn c thc hockhng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    47/117

    47Ngn ng lp trnh C - Smith.N Studio!

    Hot ng: lnh switch ph thuc vo gi tr ca biuthc bt vit sau switch, nu:

    Gi tr bt = ni th th c hin cu lnh sau case ni;Khi gi tr biu thc khc tt c cc ni th thc hin culnh sau default nu c, hoc thot khi cu lnh switch.Khi ch ng trnh thc hin xong cu lnh ca case nino th n s thc hin lun cc lnh thuc case bnd i n m khng xt li iu kin ( do cc ni cn cxem nh cc nhn). V v y, ch ng trnh thot khilnh switch sau khi thc hin xong mt tr ng h p, tadng lnh break.

    3 Bi

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    48/117

    48Ngn ng lp trnh C - Smith.N Studio!

    3. Bi tp- Vit ch ng trnh nhp vo t bn phm mt m s

    nguyn v a ra nh ga trnh theo yu cu:1: trnh s cp2 : trnh trung cp3: trnh i hc

    4: trnh Cao hc5: trnh Tin s Cc s khc: Khng xc nh

    - Cho mt s t nhin, in ra mn hnh tn g i ca s ln mn hnh(Bi s12)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    49/117

    H t

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    50/117

    50Ngn ng lp trnh C - Smith.N Studio!

    Hot ng: Bc 1: Thc hin bt1

    Bc 2: Tnh ton, xc nh gi tr ca bt2 Bc 3: Nu bt2 c gi tr false th thot khi vng lp Ngc li bt2 c gi tr true th s c thc hin Bc 4: sau khi thc hin s thc hin bt3 v quay li bc 2

    Nhn xt: ch c thc hin duy nht mt ln khi bt u

    vng lp , v S c th c tnh ton v thc hin nhiu ln

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    51/117

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    52/117

    52Ngn ng lp trnh C - Smith.N Studio!

    2. Bi tp Vit ch ng trnh tnh tng ca n s u tin ca dy s

    sau: S = 1+1/2+1/3+1/4+...+1/n. Vit ch ng trnh tm tt c cc snguyn c ba ch s sao cho tng tam tha ca ba ch shng trm, hng chc, hng n v sbng snguyn . V d:13+5 3+3 3=153

    IV Cu lnh while

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    53/117

    53Ngn ng lp trnh C - Smith.N Studio!

    IV. Cu lnh while1. C php :

    While (bt)S; ngha : bt l biu thc lgic, S l mt lnh hoc mt dy lnh

    Hot ng - Xc nh gi tr ca bt. Nu gi tr ca bt= true(0) th

    chuy n sang b c 2, ng c li th thot khi vng lp- Thc hin S sau quay v b c 1(Lnh S c th c

    thc hin nhiu ln hoc khng c thc hin ln nonu bt =false ngay t u)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    54/117

    54Ngn ng lp trnh C - Smith.N Studio!

    Ch : trong cu lnh lp while ta c thdng cu lnhbreak thot khi vng lp theo mun

    2. Bi tp :

    - Nhp hai snguyn t bn phm, tm v in ra mn hnh c schung l n nht ca hai s

    - Tm hnh ch nht c din tch l n nht khi bit chu vica n(bi s25)

    V Cu lnh do while

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    55/117

    55Ngn ng lp trnh C - Smith.N Studio!

    V. Cu lnh do.. while1. C php

    do S while (bt); ngha: S l mt cu lnh n hoc phc, bt l biuthc lgic

    Hot ng:- (1) Thc hin lnh S- (2) Xc nh gi tr ca bt. Nu gi tr ca bt = true th

    chuy n sang b c (1), ng c li th thot khi vng lp- Lnh S lun c thc hin t nht 1 ln trong cu lnh

    Bi 5: D liu kiu mng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    56/117

    56Ngn ng lp trnh C - Smith.N Studio!

    Bi 5: D liu kiu mng 1. Khi nim:

    Mng c hiu l mt tp hp cc gi tr ccng kiu d liu nm lin tip nhau trong bnh my tnh

    Mng c coi nh mt bin mng v tnmng c t theo quy tc t tn binMng c nhng thnh phn sau:

    Kiu d liu ca cc phn t trong mng Tn mng S chiu v kch thc ca mi chiu

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    57/117

    57Ngn ng lp trnh C - Smith.N Studio!

    2. Cch khai bo bin mng

    VD: int A[10];//m ng 1 chiu A g m 10 phn t kiu snguyn

    float B[2] [3];// M ng 2 chiu B g m 2 hng v 3 ct, cc phn t c kius thc

    3 C h t h t t h t g

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    58/117

    58Ngn ng lp trnh C - Smith.N Studio!

    3. Cch tchc v truy xut n phn tmng Phn t ca mng c xc nh thng qua ch s. Ch sca phn t trong mng lun l mt snguynkhng v t qua kch th c ca mng Cc phn t ca mng c sp xp lin nhau trong b nh ca my tnh v ch cho php truy cp n a ch

    trc tip ca phn t i v i mng mt chiu. Cchtruy cp theo a ch &tn_bin[i]

    trong i l ch sca phn t VD: a= &a[0]

    //Tn m ng ch t i a ch phn t u tin ca mng

    4 Cch xut nhp d liu trn mng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    59/117

    59Ngn ng lp trnh C - Smith.N Studio!

    4. Cch xut nhp d liu trn mng - Nhp xut trc tip ng dng cho mng mt chiu v

    mng hai chiu c phn t kiu int thng qua a ch - Nhp d liu cho mng

    for( i=0;i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    60/117

    60Ngn ng lp trnh C - Smith.N Studio!

    - Nhp xut d liu gin tip thng qua mt bin trung gian i v i mng mt chiu v mng a chiufor(i=0;i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    61/117

    61Ngn ng lp trnh C - Smith.N Studio!

    Bi 6: Con tr 1. Khi nim con tr v a ch -

    a ch: Da vo kiu d liu khi khai bo bin my s cp pht cho bin mt a ch lu tr bin trn vng nh . Mi bin c kiu khc nhau th c lu vocc a ch khc nhau

    - Con tr l mt bin dng cha a ch. Mi loi ach th c loi con tr t ng ng. Tr c khi s dng bincon tr ta phi khai bo tr c khi s dng

    - Khai bo: * ;- VD1: int x, y, *p, *c;

    x, y l hai bin kiu nguyn, p, c l hai bin con trkiunguyn

    VD2: float *t, *d ;

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    62/117

    62Ngn ng lp trnh C - Smith.N Studio!

    , ;//Khai bo bi n con tr t v d c kiu thc

    Bin con tr c dng theo hai tr ng h p sau: Tn con trch n a ch ca bin c lu trong contr:

    float a,*p,*q;

    p=&a; /* l u a ch c a bi n a vo con tr p */q= p; /* l u a ch trong p vo con tr q*/

    Dng khai bo ca con trch n gi tr lu ti vng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    63/117

    63Ngn ng lp trnh C - Smith.N Studio!

    Dng khai bo ca con trch n gi tr lu ti vng nh m con tr tr t i.VD: float x=5, y , z=20, *px, *pz;,*py;

    px=& x; /* khi *px = x =5*/ pz=&z; /* *pz=z=20*/

    khi ba bi u th c sau l t ng ng: y=3*x+z; *py=3*x+z; *py=3*(*px)+*pz;

    2. Con trv mng mt chiu

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    64/117

    64Ngn ng lp trnh C - Smith.N Studio!

    2. Con tr v m ng mt chi uCc phn t ca mng c th c xc nh thng qua con tr. Ta c khai bo : float a[10];

    //Khai bo m ng g m 10 phn t kiu thc Ta c tn m ng chnh l mt hng a ch tr t i

    a ch

    phn t

    u tin c

    a m

    ng va t ng ng v i &a[0]

    a+i t ng ng v i &a[i]

    *(a+i) t ng ng v i a[i] V y

    a[k] a[k+1]a[k-1]

    pa pa +ipa - i

    Cc cch vit a[i] *(a+i) *(p+i) p[i] l tng ng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    65/117

    65Ngn ng lp trnh C - Smith.N Studio!

    Cc cch vit a[i], *(a+i), *(p+i), p[i] l t ng ng nhau

    VD: Nhp t bn phm cc phn t ca mng v tnhtng cc phn t

    #include

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    66/117

    66Ngn ng lp trnh C - Smith.N Studio!

    #include#includevoid main(){ float a[5], s ; int i;

    for(i=0;i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    67/117

    67Ngn ng lp trnh C - Smith.N Studio!

    3. Con tr vi mng nhiu chiu Php ton ly a ch ni chung khng dng c ivi cc thnh phn ca mng nhiu chiu (tr trnghp mng hai chiu cc s nguyn). tnh ton a ch ca thnh phn a[i][j] chng ta sdng cng thc sau :

    (float *)a+i*n+j.a l mt hng con tr tr n cc dng ca mt ma trhai chiu, v vy

    a tr n dng th nht a+1 tr n dng th hai a+2 tr n dng th ba

    tnh ton c a ch ca phn t dng i ct j

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    68/117

    68Ngn ng lp trnh C - Smith.N Studio!

    tnh ton c a ch ca phn t dng i ct jchng ta phi dng php chuyn i kiu bt buc vi a: (float * )aa l con tr tr n thnh phn a[0][0] ca ma trn. a[i][j] s c a ch l (float *a) +i*n+j Xt VD nhp gi tr ca ma trn hai chiu:Tro2

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    69/117

    4. Php ton trn con tr

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    70/117

    70Ngn ng lp trnh C - Smith.N Studio!

    4. Php ton trn con tr - Php gn: ch nn thc hin trn cc con tr c cng

    kiu, khi thc hin trn con tr phi thc hin php pkiu: Vd: int x;

    char *p;p=(char*)(&x);

    - Php tng gim a ch VD: float x[30], *px; px=&x[10];// p l con tr thc tr ti phn t x[10]

    px+i tr ti phn t x[10+i] px i tr ti phn t x[10-i]

    - Php so snh: dng so snh cc con tr cng kiu, gi

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    71/117

    71Ngn ng lp trnh C - Smith.N Studio!

    - Php so snh: dng so snh cc con tr cng kiu, gis p1 v p2 l hai con tr kiu float th tn ti php sosnh

    p1 < p2 // a ch p1 tr ti thp hn a ch p2 tr ti p1==p2

    5. Con tr kiu void

    L con tr c bit khng c kiu, n c th nhn bta ch no. Con tr kiu void thng dng lm i nhn bt k a ch no thng qua php p kiu trongthn hmCc php ton tng gim a ch, so snh khng dngc con tr kiu void

    6 Mng con tr

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    72/117

    72Ngn ng lp trnh C - Smith.N Studio!

    6. Mng con tr Mng con tr l mt mng m mi phn t ca n ccha mt a ch no . Mng con tr c nhiu kiu,mi phn t ca mng kiu no th s cha a ch kitng ng vi n. Mng con tr c khai bo theo msau:

    *[N] Khi gp khai bo mng con tr th my s cp pht Nkhong nh lin tip cho N phn t tng ng trongmng Ch : Mng con tr khng dng lu s liu, trckhi s dng mng con tr cn gn cho mi phn t mgi tr l a ch ca mt bin hoc ca mt phn ttrong mng

    Bi 7: Hm v chng trnh

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    73/117

    73Ngn ng lp trnh C - Smith.N Studio!

    Bi 7: Hm v chng trnh 1. Khi nim

    Chng trnh: Mt chng trnh C bao gm mt hocnhiu hm. Hm main() l thnh phn bt buc cachng trnh. Chng trnh bt u thc hin t culnh u tin ca hm main( ) cho n khi gp du }cui cng ca hm ny. Hm : L mt on chng tr nh c lp thc hin trnvn mt cng vic ri tr v mt gi tr cho chngtrnh gi n. c im ca hm:

    L mt n v c lp ca chng tr nh.Khng cho php xy dng mt hm bn trong mthm khc .

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    74/117

    74Ngn ng lp trnh C - Smith.N Studio!

    2 Quy tc xy dng hm: Mt hm gm c cc thnh

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    75/117

    75Ngn ng lp trnh C - Smith.N Studio!

    2. Quy tc xy dng hm: Mt hm gm c cc thnh phn sau

    - Nguyn mu ca hm:Bao gm < tn hm (ds cc tham s)>; C th c hoc khng khai bo nguyn mu ca hm,khi khng khai bo nguyn mu th b bin dch skim tra vic truyn tham s, gi tr tr v c ph hphay khng ri mi cho thc hin hm. Tt c nguyn mu ca cc hm c trong chng trnhnn t trc hm main().

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    76/117

    Cu trc ca mt hm

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    77/117

    77Ngn ng lp trnh C - Smith.N Studio!

    (){ ;

    ;[return];

    };

    Ch :- i v i cc hm khng c kiu tr v ta c hm kiu void- Hm khng c i th dng kiu void khai bo i. VD

    void bell(void){ int i;

    for(i=0;i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    78/117

    78Ngn ng lp trnh C - Smith.N Studio!

    hm. ([ds tham s thc])

    - Tham s thc phi bng tham s hnh thc - Kiu ca tham s thc phi ph hp vi kiu ca tham

    s hnh thc

    Hot ng ca hm khi c li gi hm Cp pht b nh cho tham s hnh thc v bin cc b Gn gi tr ca tham s thc cho tham s hnh thc

    Thc hin cc lnh trong thn hm Khi gp cu lnh return hoc du hiu kt thc hm th b nh s xo cc tham s hnh thc v bin cc b sa thot khi hm quay v chng trnh gi hm

    3. Cc tham s trong hm

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    79/117

    79Ngn ng lp trnh C - Smith.N Studio!

    3. Cc tham s trong hm3.1 Phn loi tham s theo cch s dng o Tham shnh thc: Cc tham sm ta ghi trong nguyn

    mu hay ghi lc khai bo hm g i l tham shnh thc.o Tham s thc:Cc gi tr, bin m ta ghi sau tn hm khi g i

    hm thc hin g i l tham s thc. Trong C, cc thams thc li chia ra lm hai loi:

    Tham chiu: L cc tham s thc m ta truy n cho Hmd i dng con tr (dng a ch ). Tham chiu m i ghi nhnli c nhng k t qu v a tnh ton trong Hm khi Hmk t thc.

    Tham tr : L cc tham s thc m ta truy n cho Hm d idng bin. Tham tr khng bo lu li nhng k t qu thay i ca n c tnh ton trong Hm khi Hm k t thc.

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    80/117

    4 Hm c i con tr

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    81/117

    81Ngn ng lp trnh C - Smith.N Studio!

    4. Hm c i con tr i s ca hm l con trkiu int (float,double,. )th tham

    s thc t ng ng phi l a ch ca bin kiu int (float,double,.). Khi a ch ca bin c truy n cho icon tr t ng ng.Khi mun bo lu li k t qu tnh ton c ca cc is trong hm s dng cho ch ng trnh g i hm c i s th chng ta phi khai bo i sca hm l thamchiu (con trhay dng a ch ).

    VD:

    Bi 8: Chui k t

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    82/117

    82Ngn ng lp trnh C - Smith.N Studio!

    Bi 8: Chui k t 1. Khi nim

    Chui k t l mt dy cc k t t trong cp dunhy kp. Chui rng c k hiu bng hai du nhkp i lin nhau. Mt chui k t c cp pht mkhong nh cho mt mng kiu char cha cc k t

    chui v cha thm k t ' \ 0' l k t kt thc chui. Mi k t ca chui c cha trong mt phn tmng. Chui k t l mt trng hp ring ca mnmt chiu khi mi thnh phn ca mng l k t Chui k t thng c khai bo theo khaibo theo haimu:

    char ten_chuoi[] ; hoc char *ten_chuoi;

    2. Cc thao tc trn chui

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    83/117

    83Ngn ng lp trnh C - Smith.N Studio!

    Trong C khng tn ti cc php ton so snh, gn nidung ca chui ny cho chui khc.

    thc hin cc thao tc ny ta s dng mt th vicc hm chun l .Hm strlen: int strlen(char s[])Tr v di ca chui s, chnh l ch s ca k t NULL trong chui. Hm strcpy: strcpy(char dest[], char source[])Sao chp ni dung chui source vo chui dest.

    Hm strchr: char *strchr(char s[], char c)Tm ln xut hin u tin ca k t c trong chui s, tv a ch ca k t ny.

    Hm strncpy: strncpy(char dest[], char source[], int n)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    84/117

    84Ngn ng lp trnh C - Smith.N Studio!

    Hm strncpy: strncpy(char dest[], char source[], int n)Sao chp n k t trong chui source vo chui dest.Trong trng hp khng c n k t trong source th hm s in thm cc k t trng vo chui dest. Hm strcat : strcat(char ch1[], char ch2[]) Ni chui ch2 vo cui chui ch1. Sau li gi hm n di chui ch1 bng tng di ca c hai chui chv ch2 trc li gi hm. Hm strncat : strncat(char ch1[], char ch2[],int n)

    Ni n k t u tin ca ch2 vo ch1

    Hm strstr : char *strstr(char s1[], char s2[])

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    85/117

    85Ngn ng lp trnh C - Smith.N Studio!

    ( )Tm kim chui s2 trong chui s1, Tr v a cca ln xut hin u tin ca s2 trong s1 hoc NULL khi khng tm thy. Hm strcmp : int strcmp(char ch1[], char ch2[])So snh hai chui ch1 v ch2. Nguyn tc sosnh theo kiu t in. Gi tr tr v:

    = 0 nu chui ch1 bng chui ch2 > 0 nu chui ch1 ln hn chui ch2 < 0 nu chui ch1 nh hn chui ch2

    VD: m s ln xut hin ca k t a trongmt xu k t cho trc

    #include

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    86/117

    86Ngn ng lp trnh C - Smith.N Studio!

    #include#define HANG 128 void main(){ char xau[HANG]; int i,na;

    clrscr();printf("\nNhap mot xau ky tu:");gets(xau);na=i=0; while(xau[i])

    if (xau[i++]=='a') na++;printf("\nXau co %d chu a",na);getch();

    return;}

    3. Mng v chui k t

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    87/117

    87Ngn ng lp trnh C - Smith.N Studio!

    Mt dng s dng con tr c bit l vic s dng mmng cc bin con tr. Khai bo theo mu

    type *pointer_array[size];VD: khai bo char *temp[10];s khai bo mt mng 10 con trchar c th c dng

    khai bo mt mng lu tr a ch ca mi chuk t no . Bi tp:vit chng trnh nhp nhiu tn ngi vo t bn phm, sp xp li theo th t v in kt qu spxp ra.

    + Sp xp licc tn ny theo th t alphabet + In cc tn ra theo th t .

    VD: xt mt mng cc con tr ptr array c

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    88/117

    88Ngn ng lp trnh C - Smith.N Studio!

    VD: xt mt mng cc con tr ptr_array cgn cc a ch ca cc bin int c gi tr v v t

    bt k. Dng mt hm sp xp li cc a chny trong mng sao cho cc a ch ca cc b c xp trc a ch ca cc s ln hn. L d chng ta khng lm thay i v tr hocthay i cc gi tr ca cc bin nhng mng vging nh mt mng ch n cc gi tr spxp c th t.

    Bi tp:

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    89/117

    89Ngn ng lp trnh C - Smith.N Studio!

    Bi tp:Vit chng trnh m s ln xut hin ca mt k ttrong mt xu k t Vit chng trnh nhp mt ch, xut ra ch nhiuln dng con tr

    Bi 9: Cp pht v gii phng b nh ng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    90/117

    90Ngn ng lp trnh C - Smith.N Studio!

    9: Cp p t v g p g b g

    1. Khi nim Bin ng:L cc binc to ra lc chy chng trnh, ty theo nhu cu. S bin ny hon ton khngc xc nh t trc. Cc bin ng khng c tn(vic t tn thc cht l gn cho n mt a ch xcnh).Cch to ra bin ng v truy nhp n bin ngc tin hnh nh sau

    Vic to ra bin ng v xa n i ( thu hi li bnh) c thc hin nh cc hm nh malloc() vfree() c sn trong th vin stdlib.h

    Vic truy nhp n bin ng c tin hnh nh ccbi t C bi t h h h

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    91/117

    91Ngn ng lp trnh C - Smith.N Studio!

    bin con tr. Cc bin con tr c nh ngha nh c bin tnh ( c khai bo ngay t u trong phn khai

    bo bin) v c dng cha a ch cc bin ng VD1: int *p; /* Khai bo bin con tr p*/ p= (int *) malloc(100);/* To bin ng*/

    on chng trnh trn s cp pht 100 bytes trong bnh v gn a ch khi b nh ny cho p VD2: cp pht b nh chnh xc cho 70 k t: /* Khai bo bin con tr kiu char */

    char *cp; /* To bin ng */ cp=(char *) malloc(70);

    2. Cp pht v gii phng b nh ng (cc hm thuc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    92/117

    92Ngn ng lp trnh C - Smith.N Studio!

    stdlib.h v alloc.h) 2.1 Cp pht b nh ng bng hm malloc( )

    C php void *malloc(kiu _dl size) Chc nng: Hm malloc cp pht mt vng nh c kcthc l size.

    size l mt gi tr kiu_dl (l mt kiu d liu nh sntrong th vin stdlib.h). Hm malloc tr v con tr kiu void cha a ch nhu ca vng nh c cp pht. Nu khng vng cp pht hm tr v gi trNULL , v vy phi kim tragi tr tr v khi s dng hm malloc.

    2.2 Cp pht b nh ng bng hm calloc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    93/117

    93Ngn ng lp trnh C - Smith.N Studio!

    p p g gC php

    (datatype *) calloc(n, sizeof(object));Hm calloc cp pht b nh ng cho cc kiu d liuTrong :(datatype *) l kiu con tr tr ti kiu d liu datatyp n l s lng object thuc kiu datatype cn cp pht bnh. datatype c th l kiu d liu c s hoc kiu d liu

    2.3 Cp pht b nh ng bng hm relloc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    94/117

    94Ngn ng lp trnh C - Smith.N Studio!

    C php

    (datatype *) realloc(buf _p, newsize);Hm c chc nng cp pht li b nh Trong : buf_p l con tr ang tr n vng nh c cp pht t trc. newsize l kch thc mi cn cp pht, c th ln honh hn.

    2.4 Gii phng bnh bng hm free

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    95/117

    95Ngn ng lp trnh C - Smith.N Studio!

    C php

    void free( void *prt)Hm free gii phng vng nh c tr n b i con tr ptr.Nu con trptr = NULL th hm free khng lm g c .

    3. B nh HEAP v c ch to bin ng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    96/117

    96Ngn ng lp trnh C - Smith.N Studio!

    Cc bin ng do malloc to ra c C xp vo mtvng nh t do theo kiu xp chng v c gi lHEAP ( b nh cp pht ng). Ngn ng C qun lHEAP thng qua mt con tr ca HEAP l HEAPPTR. N lun tr vo byte t do u tin ca vng nh c

    t do ca HEAP. Mi ln gi malloc(), con tr caHEAP c dch chuyn v pha nh ca vng nh do mt s byte tng ng vi kch thc ca bin mi to ra. Ngc li, mi khi gii phng b nh bin ng, b bin ng c thu hi

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    97/117

    97Ngn ng lp trnh C - Smith.N Studio!

    Bi 10: Kiu cu trc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    98/117

    98Ngn ng lp trnh C - Smith.N Studio!

    1. Kiu enum

    Cu lnh khai bo kiu enum c thvit theobn cchenum tk {pt1,pt2,...} tb1,tb2,...;enum tk {pt1,pt2,...};enum {pt1,pt2,...} tb1,tb2,...;enum {pt1,pt2,...};

    Trong : Tk l tn kiu enum (mt kiu d liu m i),pt1,pt2,... l tn cc phn t,tb1,tb2,... l tn bin kiu enum.

    V d: khai bo kiu d liu lm vic vi cc ngyt t t th d ki kd bi d

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    99/117

    99Ngn ng lp trnh C - Smith.N Studio!

    trong tun ta c th dng kiu weekday v bin day nsau:

    enum weekday{SUNDAY,MONDAY,TUESDAY,WEDSDAY,THURSDAY, FRIDAY, SATURDAY} day;Ch bin kiu enum thc cht l bin nguyn, n

    c cp pht 2 byte b nh v n c th nhn mt gtr nguyn bt k.

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    100/117

    trong :

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    101/117

    101Ngn ng lp trnh C - Smith.N Studio!

    struct l t kha ng tr c mt khai bo cu trc,tn _ c u _ trc l mt tn h p l c dng lm tn cu trc;[danh sch cc bi n c u trc] lit k cc bin c kiu cu trc

    v a khai boVD:

    struct hoc_sinh {char ho_ten[20];

    float diem;

    } hs, dshs[100];

    2.3 C php nh ngha ki u d liu m i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    102/117

    102Ngn ng lp trnh C - Smith.N Studio!

    Ngn ng C cho php ta t li tn kiu d liu m i bng cu lnh:

    typedef kiu_ _c tn_kiu_m i;trong :

    ki u_ _c l ki u d li u m ta mu n i tn.tn_ki u_m i l tn m i m ta mu n t.

    2.4 Nguyn tc truy cp n thnh ph n ca cu trc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    103/117

    103Ngn ng lp trnh C - Smith.N Studio!

    Cc thnh phn ca cu trc c truy nhp thng qua tn bin cu trc v tn thnh ph n.

    tn_bi n_c u_trc.tn_thnh_ph n truy nhp n cc thnh ph n ca bin hs chng ta

    vit nh sau:

    hs.ho_ten hs.diem

    Ch :Khng nn s d ng ton t & i v i cc thnh ph n

    c u trc ( c bi t i v i cc thnh ph n khng nguyn) trong khi nh p d li u

    2.5 Con tr cu trc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    104/117

    104Ngn ng lp trnh C - Smith.N Studio!

    Cch khai boMt bin cu trc cng l mt bin trong b nh, c tly a ch ca mt bin cu trc bng ton t ly a &. Gi tr tr li l a ch n trng u ca cu trc. C th khai bo mt bin con tr ch n mt cu trc

    c th lu a ch ca mt bin cu trc no . C phpkhai bo mt bin con tr cu trc nh sau: struct tn_cu_trc *tn_con_tr;

    VD: struct hoc_sinh *ptrhs;Vic truy xut n mt thnh phn ca cu trc thngqua mt con tr c thc hin bng php ton kp->

    VD:

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    105/117

    105Ngn ng lp trnh C - Smith.N Studio!

    printf("\nHo va ten hoc sinh %s",ptrhs->ho_ten);

    printf("\nDiem %6.3f",ptrhs->diem);kt qu thc hin hai cu lnh ny tng ng vi hcu lnh sau:

    printf("\nHo va ten hoc sinh %s",hs.ho_ten);

    printf("\nDiem %6.3f",hs.diem);Vic s dng con tr ch n cu trc thng c sdng truyn cu trc n cho mt hm

    Mt ng dng khc ca con tr cu trc l dng xdng cc cu trc t tr nh: danh sch lin kt (cn gl danh sch mc ni).

    2.6 Mng c cu trc

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    106/117

    106Ngn ng lp trnh C - Smith.N Studio!

    Mng m g m cc thnh ph n c kiu cu trc c g il mng cu trc. Khai bo mt mng cc cu trc honton t ng t nh i v i khai bo mt mng bnhth ng, ch c mt im khc l thay cho tn cc kiu d liu bnh th ng l mt tn kiu d liu cu trc.

    V d v khai bo mt mng c cu trc:struct hoc_sinh dshs[100]; //hoc_sinh l ki u c u trc Vic s dng cc mng cu trc s lm cho vic x l mttp h p cc bin cu trc tr nn dnhn h n. Cc quy nh v mng cng c p dng i v i mng cc cutrc.

    3. Cu trc t tr C t t ht t th h h l t h b

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    107/117

    107Ngn ng lp trnh C - Smith.N Studio!

    Cu trc c t nht mt thnh ph n l con trch n bnthn cu trc c g i l cu trc t tr.

    V d struct h_sinh{char ho_ten[20];

    float diem; }struct h_sinh *next ;/*con tr ch n h c sinh ti p theo trong danh sch*/

    khai bo ny nh ngha mt cu trc t trc thdng qun l danh sch h tn hc sinh v im shc sinh.Danh sch ny ch truy cp c theo mt chiu

    3.1 Danh sch lin k t: danh sch lin k t g m ccphn t mi phn t c hai vng chnh: vng

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    108/117

    108Ngn ng lp trnh C - Smith.N Studio!

    phn t, mi phn t c hai vng chnh: vng d liu danh sch v vng lin k t. Vng link t l mt hoc nhiu con trch n cc phnt tr c hoc sau phn t ang c xem xtty thuc vo yu cu ca cng vic c th

    C php chung cho khai bo danh sch lin k ts dng kiu d liu con trnh sau:

    typedef struct kiu_d _liu{}t_kiu_d _liu

    Bi 11: Kiu tp tin(File)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    109/117

    109Ngn ng lp trnh C - Smith.N Studio!

    File l loi d liu c th ghi ln a dng nhiuln.Trong C ch c mt loi File, nhng cu trc ca miFile c thkhc nhau. Cu trc ny c hnh thnh khita ghi d liu ln File, n ph thuc vo hm m ta dng ghi d liu ln a.

    Trong C c hai loi hm thao tc trn file:Dng nhng hm cp thp lm vic v i tp tin thng quamt shiu tp tin (file handle).Dng nhng hm c xy dng t nhng hm cp thp,d s dng h n. C cc hm phc v cho vic c ghitrn tng loi d liu (s, chui, k t, cu trc...). Cchm ny lm vic v i tp tin thng qua mt con tr tptin. Con tr ny c xc nh khi ta m tp tin.

    1. Cc kiu xut nhp d liu trong tp tin1 1 X h ki h h

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    110/117

    110Ngn ng lp trnh C - Smith.N Studio!

    1.1 Xut nhp kiu nh phnD liu ghi ln tp tin khng b thay i v khi ng tptin th m k t thc tp tin s c ghi ln a l-1.

    1.2 Xut nhp kiu vn bnCh khc kiu nhp xut nh phn khi x l k t xung

    dng v khi ta ng tp tin th m k t thc tp tin s c ghi ln a l 26.Khi ghi mt k t chuy n dng ln a (m 10) sghi

    thnh 2 k t

    m 13 v m 10. Khi c nu g p hai k t lin tip l m 10 v m 13sgom li thnh mt k t l m 10.

    Ch :T ti khi hi l di d h hi di

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    111/117

    111Ngn ng lp trnh C - Smith.N Studio!

    Tp tin khi ghi ln a d i dng no th phi c d idng . Nu khng vic x l skhng chnh xc. Trong C c hm dng nhp xut cho c hai kiu, chm ch dng nhp xut cho mt kiu no .

    2. Cc hm thao tc trn tp tin

    Cc hm sau y dng chung cho c hai kiu nh phn v vn bn.2.1 M file

    FILE *fopen(const char *tn_tp_tin,const char*kiu);

    M mt tp tin. Nu thnh cng tr v k t qu l con tr FILE i fil li i

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    112/117

    112Ngn ng lp trnh C - Smith.N Studio!

    FILE t ng ng v i file v a m , ng c li tr v gi tr NULL.Sau khi m file phi kim tra xem thao tc m tptin thnh cng hay khng.* tn tp tin: L mt hng chui, hoc mt con trch n vng nh cha tn tp tin.

    * kiu: l hng chui cho bit kiu truy nhp:

    2.2 ng file int fclose(FILE *f)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    113/117

    113Ngn ng lp trnh C - Smith.N Studio!

    int fclose(FILE f)ng tp tin c ch n b i con tr f. Nu thnh cng

    th gi tr ca hm = 0 ng c li c gi tr EOF. Sau khing con tr f skhng cn tr n file tr c na2.3 Lm sch vng m

    int fflush(FILE *f)Lm sch vng m ca tp tin c ch n b i con tr f.Nu thnh cng cho gi tr 0, ng c li cho gi tr EOF.

    int flushalll(void)Lm sch vng m ca tt c cc tp tin ang m . Nuthnh cng gi tr ca hm bng s tp tin ang m ,ng c li cho gi tr EOF

    2.4 Xo tp tini li k( h * i )

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    114/117

    114Ngn ng lp trnh C

    - Smith.N Studio!

    int unlink(const char *tn_tp_tin)Xa mt tp tin trn a. Nu thnh cng gi tr ca hmbng 0 , ng c li cho gi tr EOF

    2.5 i tn tp tinint rename(const char *tn_c,const char *tn_m i)

    i mt tp tin trn a. Nu thnh cng gi tr ca hmbng 0 , ng c li cho gi tr EOF

    2.6 Kim tra k t thc tp tin

    int feof(FILE *f)Cho gi tr khc khng nu cui tp tin, ng c li =0

    3. Xut nhp d liu cho file3 1 Nhp xut k t : (file kiu nh phn v vn bn)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    115/117

    115Ngn ng lp trnh C

    - Smith.N Studio!

    3.1 Nhp xut k t : (file kiu nh phn v vn bn) Ghi k t ln tp tin:

    int putc(int ch, FILE *f)int fputc(int ch, FILE *f)Ghi ln file f k t c m = ch % 256 N u thnh cng k t qu = m ca k t ghi, ng c li =EOF (-1)

    Trong tr ng h p ghi theo vn bn th khi g p m 10 s ghi thnh 13 v 10c k t t tp tin:

    int getc( FILE *f)int fgetc( FILE *f)c mt k t t file f . Nu thnh cng k t qu = mca k t c c, ng c li = -1

    3.2 Nhp xut chui: (Dng cho kiu vn b n)Ghi mt chui:

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    116/117

    116Ngn ng lp trnh C

    - Smith.N Studio!

    Ghi mt chui: int fputs(const char *s, FILE *f)

    Ghi mt chui c ch t i b i con tr s vo file f.K t qu= k t cui c ghi nu thnh cng, ng cli =EOFc mt chui: char *fgets(const char *s, int n, FILE *f)c mt chui t File f v a vo vng nh do s tr n.

    Vic c k t thc khi c c n-1 k t , hoc g pk t xung dng , hoc g p k t k t thc File.Nu vic c c li k t qu ca hm =NULL.

    3.3 c ghi d liu theo khun dng: (Dng cho kiu b n)

  • 8/3/2019 Bai Giang Lap Trinh C - Smith.N Studio

    117/117

    vn b n)Ghi d liu theo khun dng: int fprintf(FILE *f , const char * c t,....)... l danh sch cc i s t ng ng v i cc c t.S dng ging nh hm printf, d liu s c ghi ln file.c d liu theo khun dng: fscanf(FILE *f , const char * c t,....)... l danh sch cc i s t ng ng v i cc c t.S dng ging nh hm scanf, d liu s c c t Filef ri a vo cc i s t ng ng.