Ky Thuat Lap Trinh - Smith.N Studio

Embed Size (px)

Citation preview

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    1/134

    K thut lp tr nh 1

    CHNG i I CNG V LP TRNH

    I. Khi nim thut ton:I.1.Khi nim:

    Thu t ton l tp hp c c quy tc c logic nhm gii mt lp b i ton no -c mt k t qu x c nh.

    I.2. Cc t nh cht c tr-ng ca thut ton :

    I.2.1. T nh tng qut :

    Thut ton -c l p khng ph i ch gi i mt b i ton c th m thi mcn ph i gi i -c mt lp cc b i ton c d ng t-ng t.

    I.2.2. T nh gii hn :

    Thu t ton gi i mt b i ton phi -c thc hi n qua mt s gii h n c cthao t c t n k t qu .

    I.2.3. T nh duy nht :

    To n b qu tr nh bi n i, cng nh- tr t t thc hin phi -c xc nhv l duy nh t. Nh- vy khi dng thu t ton cng mt d li u ban u ph i chocng mt k t qu .

    I.3.Phn loi:Theo c u trc, ta c th ph n th nh ba lo i thut ton c b n sau :

    - Thut ton khng ph n nhnh.- Thu t ton c phn nhnh.- Thut ton theo chu tr nh c b-c lp x c nh v c b-c lp khngxc nh.

    II. M t thut ton bng l-u :

    II.1. L-u :L-u l mt dng th dng m t qu tr nh t nh ton mt cch c

    h thng. Ng-i ta th-ng th hi n thu t ton b ng l-u .

    II.2. Cc k hi u trn l-u :

    Tn khi K hi u ngh aKhi m u ho c k tthc

    Dng m u ho c k tthc ch-ng tr nh

    Khi vo ra -a s li u v o hoc in

    k t qu

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    2/134

    K thut lp tr nh 2

    Khi t nh to n Bi u di n cc cng thct nh to n v thay i gitr ca c c bin

    Khi i u ki n Dng ph n nh nhch-ng tr nh

    Ch-ng tr nh con Dng gi ch-ng tr nhcon

    Mi t n Ch h-ng truyn thngtin, li n h cc khi

    II.3.Mt s v d biu din thut ton bng l-u

    II.3.1. Thut ton khng phn nhnh:

    V d 1: T nh A = x2 + y2

    Begin

    Nhap (x,y)

    A = x2 + y2

    Xuat (A)

    End

    V d 2 : T nhyx

    CByAxS

    22 +

    ++= ; bi t A,B,C,x,y

    Begin

    Nhap (A, B, C, x,y)

    S = (Ax + By + C) / SQRT (x* x + y*y)

    Xuat S

    End

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    3/134

    K thut lp tr nh 3

    II.3.2. Thut ton c phn nhnh:V d 1: T m gi tr max ca ba s thc a,b,c

    Begin

    Nhap (a, b, c)

    Max = a

    Xuat (Max)

    End

    a > b

    Max < c

    Max = c

    S

    SMax = b

    V d 2: Gi i ph-ng tr nh bc nh t Ax+B =0 vi c c nghi m thc.

    Begin

    Nhap (a, b)

    Xuat (PTV )

    End

    a = 0

    S

    SXuat (-b/a)

    b = 0 Xuat (PTVN)

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    4/134

    K thut lp tr nh 4

    V d 3 : Gi i ph-ng tr nh bc hai Ax2+Bx+C =0 vi cc nghim thc.

    Begin

    Nhap (a, b, c)

    Xuat (X1= ,(-b + SQRT(Delta)) / (2*a))Xuat (X2= ,(-b - SQRT(Delta)) / (2*a))

    End

    a = 0

    PTB1 (b, c)

    Delta < 0 Xuat ( PTVN )

    S

    S

    Delta = b*b - 4*a*c

    Delta = 0 Xuat (-b / (2* a))

    S

    II.3.3. Thut ton c chu tr nh:

    Thu t ton c chu tr nh vi c c b-c lp xc nh th-ng -c th hi nbng l-u sau :

    i = giatrban au

    Lenh S;Tang i

    i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    5/134

    K thut lp tr nh 5

    V d 4: T nhS= ii

    n

    x=

    1

    , vi c c xi do ta nh p vo.

    Begin

    Nhap (n)

    i = 1S = 0

    Nhap (xi)

    End

    i = i+1S = S+xi

    i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    6/134

    K thut lp tr nh 6

    - Hp ng (assembly language)

    - Ngn ng c p cao (higher-level language)

    Do my t nh ch hi u -c ngn ng my, cho n n mt ch-ng tr nh vi t

    trong ngn ng c p cao ph i -c bi n dch sang ngn ng m y. Cng c thchi n vic bin dch -c gi l ch-ng tr nh dch.

    III.2. Ch-ng tr nh dch:

    Ch-ng tr nh dch -c chia ra l m 2 lo i : tr nh bin dch (compiler) v tr nhthng dch (interpreter)

    III.2.1. Tr nh bi n dch:l vi c chuyn mt ch-ng tr nh trong ngn ngcp cao no (ch-ng tr nh ngun) sang ngn ng my (ch-ng tr nh ch).

    - Thi gian chuyn mt ch-

    ng tr nh ngun sang ch-

    ng tr nh ch -

    cgi l thi gian dch.

    - Thi gian m ch-ng tr nh ch thc thi -c gi l thi gian thc thi.

    Nh-vy, ch-ng tr nh ngun v d li u ch-ng tr nh thc thi -c xl trong c c thi i m khc nhau, -c gi l thi gian dch (compile time) vthi gian thc thi (run-time)

    Chng trnhnguon

    Trnh biendch

    Chng trnhch

    May tnhthc hien Ket qua

    Dlieu

    H nh I.1. Ch-ng tr nh thc thi theo c ch dch ca tr nh bin dch

    III.2.2. Tr nh thng dch: qu tr nh dch v thc thi xy ra cng 1 thigian, dch n u thi hnh lnh n .

    Chng trnhnguon Chng trnhthong dch Ket qua

    Dlieu

    H nh I.2. Ch-ng tr nh thc thi theo c ch dch ca tr nh thng dch

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    7/134

    K thut lp tr nh 7

    CH-NG 2 LM QUEN VI NGN NG C

    * Gii thiu ngn ng CNgn ng C do Dennis Ritchie l ng-i u ti n xut, thit k v c i

    t C trong mi tr-ng UNIX. N c ngun gc t ngn ng BCPL do MartinRichards -a ra v o n m 1967 v ngn ng B do Ken Thompson ph t tri n tngn ng BCPL nm 1970 khi vi t h iu hnh Unix.

    C l ngn ng l p tr nh a dng, c p cao nh-ng l i c kh nng thc hincc thao tc nh- ca ngn ng Assembly. V th ngn ng C nhanh chng -cci t, s dng tr n my vi t nh v tr th nh mt cng c lp tr nh kh mnh,hin nay ang c khuynh h-ng tr th nh mt ngn ng lp tr nh ch nh cho myvi t nh tr n th gii.

    * c i m ngn ng C

    Ngn ng C c nhng c i m c bn sau :

    - T nh c ng (compact) : Ngn ng C ch c 32 t kho chun, 40 to nt chun m hu h t -c biu din bi cc dy k t ng n gn.

    - T nh c u trc (structured) : Ngn ng C c mt t p hp cc ph t bi u l ptr nh cu trc nh- ph t bi u quy t nh ho c l p. Do , n cho php chng ta

    vi t ch-ng tr nh c t chc v d hi u.- T nh t-ng th ch (compactable) : Ngn ng C c b l nh ti n x l v

    cc th-vi n chu n l m cho cc ch-ng tr nh vi t b ng ngn ng C c th t-ngth ch khi chuyn t my t nh ny sang m y t nh ki u hon to n khc.

    - T nh linh ng (flexible) : Ngn ng C l mt ngn ng r t linh ng vng ph p, n c th ch p nhn r t nhi u c ch th hi n m khng c ngn ngkh c nh-Pascal, n gip cho k ch th-c m lnh c th thu gn li ch-ngtr nh thc thi nhanh chng hn.

    - Bi n dch : Ngn ng C -c bi n dch b ng nhi u b-c v cho phpbi n dch nhiu tp tin ch-ng tr nh ring r th nh cc t p tin i t-ng (object)v ni c c i t-ng l i vi nhau (link) thnh mt ch-ng tr nh thc thi thngnht.

    I. CC KHI NIM C BNI.1. Cu trc c bn ca mt ch-ng tr nh C

    [tin x l][Cc h m]

    main()

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    8/134

    K thut lp tr nh 8

    { [khai bo bi n;][nhp d li u ;][x l ;]

    [xu t ;]}

    V d : Ch-ng tr nh hi n trn m n h nh cu Chao cac ban

    void main()

    { printf(Chao cac ban\n);

    }

    Mt v i nh n xt quan trng :

    - Ch-ng tr nh C bao gi cng c mt hay nhi u h m, trong c mth m ch nh b t buc phi c l hm main(). y ch nh l hm -c thc hi n u ti n trong ch-ng tr nh.

    - C p d u { } xc nh mt khi l nh.

    - H m printf( Chao cac ban \n) l h m chu n ca C dng xu t c uthng bo Chao cac ban ra m n h nh. K t \n l k t c bi t dng xung dng.

    - D u ; ch m dt mt l nh.

    - Ch-ng tr nh C c ph n bi t ch th-ng vi ch hoa. a s c c t khoca C -c vi t b ng ch th-ng, cn mt s t -c vi t b ng ch hoa m taph i tun th ch t ch , n u khng th ch-ng tr nh dch s khng hi u.

    * Mt vi v d

    V d 1: In bng ly tha 2 ca c c s nguy n t10 n 50

    /* Ch-ng tr nh in b nh ph-ng cc s t10 n 50*/

    #include

    void main()

    {int n; /*Khai b o bin n kiu nguyn */

    n=10; /*G n n=10 */

    while (n

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    9/134

    K thut lp tr nh 9

    V d 2 : T-ng t nh- v d 1 nh-ng vi t c ch kh c :#include #define max 50 /*Ti n x l, nh ngh a max =50*/

    void main(){ int n; /*Khai b o bin n kiu nguyn*/

    for (n=10; n0;m--) /*L p gim d n t m ti 1*/s=s*n;return s; /*Tr k t qu v */

    }void main(){ int n,n2,n3,n4,n5; /*Khai b o bin ki u nguy n*/

    for (n=10;n

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    10/134

    K thut lp tr nh 10

    - Nhng k t c bi t :

    K t Tc dng M ASCII

    \n Xung h ng mi 10 \t Tab

    \b Xa k t b n tr i 8

    \r Con tr tr v u h ng 13

    \f Sang trang 12

    \a Pht ting ci 7

    \\ Xut d u cho ng-c 92

    \ Xu t du nh y n 39

    \ Xu t d u nhy kp 34

    \xdd Xu t k t c m ASCII dng Hex l dd

    \ddd Xu t k t c m ASCII d ng Dec lddd

    \0 K t NULL 0

    - Chui nh dng :

    % [ flag][width][.prec][FNhl] type

    Type : nh ki u ca tham s theo sau chui-nhd ng l y gi tr raType ngh a

    d,i S nguy n c s10

    u S nguy n c s10 khng d u

    o S nguy n c s 8

    x S nguy n c s16, ch th-ng(a,b,...,f)

    X S nguy n c s16, ch in (A,B,...,F)

    f S thc d ng [-]dddd.ddd...e S thc d ng [-]d.ddd e[+/-]ddd

    E S thc d ng [-]d.ddd E[+/-]ddd

    g,G S thc d ng e(E) hay f ty theo ch nh xc

    c K t

    s Chui k t tn cng b ng \0

    % Du % cn in

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    11/134

    K thut lp tr nh 11

    Flag : Dng i u ch nh

    Flag ngh a

    n u khng c in d li u ra vi canh phi- in d li u ra vi canh tr i

    + Lun b t u s bng + hay -

    # in ra ty theo type, n u:

    0 : Ch n th m 0 ng tr-c gi tr >0

    x,X : Chn thm 0x hay 0X ng tr-c s n y

    e,E,f : Lun lun c du chm th p ph n

    G,g : Nh- tr n nh-ng khng c s 0 i sau

    Width : nh k ch th-c in ra

    Width ngh a

    n Dnh t nh t n k t , in khong tr ng cc k t cn trng

    0n Dnh t nh t n k t , in s 0 cc k t cn trng

    * S k t t nh t cn in nm tham s t-ng ng

    Prec : nh k ch th-c ph n l in ra

    Prec ngh a

    khng c ch nh x c nh- b nh th-ng

    0 d,i,o,u,x ch nh xc nh- c

    e,E,f Khng c d u chm th p ph n

    n nhiu nh t l n k t (s)

    * S k t t nh t cn in nm tham s t-ng ng

    Cc ch b sung :

    F Tham s l con tr xa XXXX:YYYY

    N Tham s l con tr g n YYYY

    h Tham s l short int

    l Tham s l long int (d,i,o,u,x,X)

    double (e,E,f,g,G)

    V d 1: char c=A;

    char s[]=Blue moon! ;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    12/134

    K thut lp tr nh 12

    Dng Thng st-ng ng

    Xut Nhn xt

    %c c A rng 1

    %2c c A rng 2, canh ph i

    %-3c c A rng 3, canh tri

    %d c 65 M ASCII ca A

    %s s Blue moon! rng 10

    %3s s Blue moon! Nhi u k t hn cn thit

    %.6s s Blue m Ch nh xc 6 k t

    %-11.8s s Blue moo Ch nh x c 8, canh tri

    V d 2: int i = 123;

    float x = 0.123456789;

    Dng Thng st-ng ng

    Xut Nhn xt

    %d i 123 rng 3

    %05d i 00123 Th m 2 s 0

    %7o i 123 H 8, canh ph i

    %-9x i 7b H 16, canh tr i%c i { K t c m ASCII 123

    %-#9x i 0x7b H 16, canh tr i

    %10.5f x 0.12346 rng 10, c 5 ch s thpphn

    %-12.5e x 1.23457e-01 Canh tr i, in ra d-i dngkhoa hc

    V d 3: Vi t ch-ng tr nh in h nh ch nh t kp bng cc k t ASCII

    C9 CD BB

    C8 CD BC

    void main()

    { printf(\n\xC9\xCD\xBB);

    printf(\n\xC8\xCD\xBC\n);

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    13/134

    K thut lp tr nh 13

    I.2.Kiu d li u c bn

    I.2.1.nh ngh a:

    Ki u d li u c b n l ki u d li u c gi tr n, khng ph n chia -cna nh- s, k t

    I.2.2.Phn loi:

    T n ki u ngh a K chth-c

    Phm vi

    char K t 1 byte -128127unsigned char K t khng d u 1 byte 0255

    unsigned short S nguyn ngn khng du 2 bytes 065535enum S nguy n c d u 2 bytes -3276832767short int S nguyn c d u 2 bytes -3276832767int S nguy n c d u 2 bytes -3276832767unsigned int S nguy n khng d u 2 bytes 0 65535long S nguy n d i c d u 4 bytes -2147483648

    2147483647

    unsigned long S nguy n d i khng d u 4 bytes 04294967295float S thc ch nh xc n 4 bytes 3.4 E-383.4 E+38double S thc ch nh xc kp 8 bytes 1.7 E-308 1.7

    E+308

    long double S thc ch nh xc hndouble

    10 bytes 3.4 E-4932 1.1E+4932

    Ch :

    1. Ngn ng C khng c kiu logic (boolean nh- Pascal) m quan nim

    0 l false ; Kh c 0 l true2. Ngn ng C khng c ki u chui nh- ki u string trong Pascal

    3. Cc kiu ng nh t:

    int = short int = short = signed int = signed short intlong int = longsigned long int = longunsigned int = unsigned = unsigned short = unsigned short intunsigned long int = unsigned long

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    14/134

    K thut lp tr nh 14

    I.3.Bin

    I.3.1. T n bi n : T n bin l mt chui k t b t u b ng k t ch, k tk ti p l k t ch (du g ch d-i _ -c xem l k t ch) hoc s v khng

    -c trng vi c c t kha ca C.Ch : - Ngn ng C phn bit ch th-ng vi ch hoa nn bin ch

    th-ng vi ch hoa l khc nhau.

    V d : Bien_1 _bien2 l hp lbi&en 2a a b l khng hp l

    - Ngn ng C ch ph n bi t hai tn hp l vi nhau b ng n k t u tinca chng. Thng th-ng n=8, nh-ng hin nay nhiu ch-ng tr nh dch cho phpn=32, nh- Turbo C cho php thay i s k t phn bi t t 8-32)

    V d :Hai bi n sau b xem l cng t nbien_ten_dai_hon_32_ky_tu_dau_tien_1bien_ten_dai_hon_32_ky_tu_dau_tien_2

    I.3.2. Khai bo bin

    C c bin ph i -c khai b o tr-c khi s dng nh m gip cho ch-ngtr nh dch c th x l chng.

    Khai bo bin c d ng :

    Kiudliu tnbin1 [,tenbi n2 ...] ;

    V d: int a,b,c;float x,y,delta;char c;

    * Khai b o v khi t o bin:

    Ki u d li u tnbin = gi tr ;

    I.3.3. Hm nhp d li u chun

    a) Hm scanf()

    C php: scanf(chui-nhd ng,i ch thams1, ich thams2,...)

    - Chui-nhd ng ca scanf() gm c ba lo i k t :

    + Chui i u khi n

    + K t tr ng

    + K t khc trng

    ! Chui i u khi n c d ng :

    %[width][h/l] type

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    15/134

    K thut lp tr nh 15

    Vi type: xc nh ki u ca bin a ch tham s s nh n gi tr nh p vo

    Type ngh a

    d,i S nguy n c s10 (int)o S nguy n c s 8 (int)

    u S nguy n c s10 khng du (unsigned)

    x S nguy n c s16 (int)

    f,e S thc (float)

    c K t (char)

    s Chui k t

    p Con tr (pointer)

    lf S thc (double)

    Lf S thc (long double)

    Width : x c nh s k t ti a s nh n v o cho vng .

    H m scanf() ch nhn cho width k t hoc cho n khi gp k t tr ng u tin. Nu chui nh p v o nhi u hn th ph n cn li s dnh l i cho l n giscanf() k ti p.

    V d 1: scanf(%3s,str);

    N u nh p chui ABCDEFGth scanf() s nh n ti a 3 k t c t v o m ng str, cn DEFG s -c l y

    n u sau c l n gi sanf(%s,str) khc.

    V d 2: unsigned long money;

    scanf(%lu,&money);

    L-u : Nu scanf(%ul, &money) th gi tr nh p v o s khng -c l-utr trong bin money, nh-ng ch-ng tr nh dch khng bo li.

    V d 3: Nh p v o t n v b gii h n trong khong [A-Z,a-z]char name[20];printf(Name : ) ;scanf(%[A-Za-z],&name);

    Trong tr-ng hp n y, n u ta g sai d ng th name =

    !K t tr ng: n u c trong chui-d ng s y u cu scanf() b qua mt haynhi u k t tr ng trong chui nh p v o. K t tr ng l k t kho ng tr ng ( ),tab (\t), xung h ng (\n). Mt k t tr ng trong chui-nhdng s -c hi u

    l ch nh p n k t kh c trng ti p theo.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    16/134

    K thut lp tr nh 16

    V d 4: scanf(%d ,&num);

    Hm scanf() cho ta nh p mt k t kh c trng na th mi thot ra. K t s n m trong vng m v s -c ly bi h m scanf() hoc gets() tip theo.

    !K t kh c tr ng: nu c trong chui-nhdng s khi n cho scanf() nhnvo ng k t nh- th.

    V d 5: scanf(%d/%d/%d,&d,&m,&y);

    Hm scanf() ch nh n mt s nguy n, c t v o d, k n l du /, b d uny i v ch nh n s nguy n k ti p c t v o m. N u khng gp d u / kti p s nguy n th scanf() ch m dt.

    Ch : H m scanf() i hi cc tham s ph i l cc a ch ca c c binho c l mt con tr.

    * To n t a ch & : L y a ch ca mt bi n

    V d 6: int n; bi n n&n; a ch ca nprintf(tr = %d, a ch = %d,n,&n);

    b) Hm getch():

    Hm getch() dng nh n mt k t do ta nh p trn b n ph m m khngc n g Enter vi c ph p :

    ch = getch(); Khng hi n k t nh p tr n mn h nhch = getche(); Hi n k t nh p tr n mn h nh

    Vi ch l bi n kiu char.

    V d 7:

    void main(){ char ch;

    printf(Go vao ky tu bat ky : );

    ch = getche();printf(\n Ban vua go %c,ch);getch();

    }

    V d 8: B n nhp v o 1 ch ci. Nu ch c i nhp v o l 'd' th ch-ngtr nh s k t thc, ng-c l i ch-ng tr nh s bo li v b t nhp l i.

    #include #include void main()

    { char ch;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    17/134

    K thut lp tr nh 17

    printf("\nBan nhap vao 1 chu cai tu a den e: ");while ((ch=getche()) != 'd'){ printf("\nXin loi, %c la sai roi",ch);

    printf("\n Thu lai lan nua. \n");}}L-u : Hm getch() cn cho php ta nh p vo 1 k t m rng nh- c c

    ph m F1, F2,.., cc ph m di chuy n cursor. C c ph m n y lun c 2 bytes: byteth nht bng 0, cn byte 2 l m scancode ca ph m . nh n bi t ta gph m k t hay ph m m rng, ta c ch-ng tr nh sau:

    void main()

    {

    int c;int extended = 0;

    c = getch();

    if (!c)

    extended = getch();

    if (extended)

    printf("The character is extended\n");

    else

    printf("The character isn't extended\n");}

    Ph m M scancodeF1 59F2 60F3 61F4 62F5 63

    F6 64F7 65F8 66F9 67F10 68

    Home 71" 72# 80

    $ 75

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    18/134

    K thut lp tr nh 18

    % 77PgUp 73PgDn 81

    End 79Ins 82Del 83

    Bng m scancode ca cc ph m m rngc. Hm kbhit(): H m int kbhit() s ki m tra xem c ph m n o -c g

    vo hay khng. Nu c, h m kbhit s tr v mt s nguyn kh c 0, v ng-c li.K t m ta nh p v o qua h m kbhit() c th ly -c qua h m getch()

    hoc getche().V d:

    void main()

    {

    printf("Press any key to continue:");

    while (!kbhit()) /* do nothing */ ;

    char kytu=getch();

    printf("\nKy tu vua an : %c",kytu);

    }

    I.4Hng: H ng l c c i l-ng m gi tr ca n khng thay i trong qutr nh ch-ng tr nh thc hin.

    I.4.1. Phn loi :

    a. Hng s: l cc gi tr s xc nh v khng i.

    int unsigned long h 8 h 16 float/double

    Dng nnnn

    -nnnn

    nnnnU/u nnnnL/l

    -nnnnl/L

    0nnnn 0xnnnn nnnn.nnnn

    nnnn.nnnE/ennnV d 4567

    -12

    123U

    12uL

    456789L

    -1234L

    0345 0x1AB 123.654

    123.234E-4

    Ch :

    - C c h ng s vi t khng d u hoc khng s m -c hiu l s nguy n,ng-c l i l double.

    - Cc h ng s nguyn ln hn int s -c l-u tr theo kiu long, cn lnhn long th -c l-u tr theo kiu double.

    - C c h ng s nguy n d-ng ln hn long s -c l-u tr theo kiu double

    - Mt h ng s -c l-u tr theo d ng long nu theo s c k t l (L),

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    19/134

    K thut lp tr nh 19

    d ng unsigned n u sau c ch u (U), d ng thp lc phn n u tr-c s c 0x v dng bt ph n n u tr-c s c 0

    V d: 50000; 10 L; Long

    5U, 100u unsigned0x10 h 16 = 16

    10

    010 h 8 = 810

    b. Hng k t: l k t ring bi t -c vi t trong hai d u nhy n : A

    Gi tr ca h ng k t l m ASCII ca n.

    V d : printf(%c c gi tr l %d,A,A);

    % A c gi tr l 65

    &H ng k t c th tham gia v o c c php to n nh- mi s nguy n khc.

    V d :9-0=57-48=9

    & H ng k t c th l cc k t c bi t dng \c1 m ta xt h mprintf() nh- \n,\a,\t ...

    c. Hng chui : L mt chui k t n m trong hai d u nh y kp .

    V d : Day la mot chuoiHang chuoi co ky tu c bi t nh- \ \n \248

    chui rng.Ch :

    - Ph n bi t A AHng: Chui K tDng l-u tr :

    A \0 A

    - Nhn xt: d ng l-u tr, ta th y tn cng ca chui c k t NULL \0m khng c d ng k t . Ch nh v vy m khng c k t rng .

    - Mt chui c th -c vi t trn nhi u h ng vi i u kin h ng tr n phic d u \.

    V d :Day la mot chuoi duoc viet tren \nhieu hang \n

    d. Hng biu thc : L mt bi u thc m trong cc ton h ng u lcc h ng. Khi ch-ng tr nh dch s t nh to n bi u thc tr-c, v kt qu -cl-u tr thng bng mt hng s t-ng -ng.

    V d : 8*20-1

    3 kt qu l-

    u tr l1

    73

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    20/134

    K thut lp tr nh 20

    a -A l 97-65 = 321

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    21/134

    K thut lp tr nh 21

    { char cv;int iv = 121;float fv1,fv2;

    printf( Chuy n ki u :\n\n);cv = iv;

    printf(int -c gn cho char : %d%d (%c)\n\n,iv,cv,cv);fv1 = iv/50;printf( int : %d / 50 = %f \n\n,iv,fv1);fv1 = iv/50.0;printf( float : %d / 50.0 = %f \n\n,iv,fv1);fv1 = 1028.75;fv2 = fv1 +iv ;printf( %f + %d = %f \n\n,fv1,iv,fv2);getch();}

    b. Php ton mt ton hng: php tng ++, php gim --

    a++ ho c ++a a = a+1a-- hoc --a a = a-1

    Ch : Tuy nhi n a++ s khc ++a khi chng ng trong bi u thc (cphp g n).

    a++ : Tng a sau khi gi tr ca n -c s dng.++a : T ng a tr-c khi gi tr ca n -c s dng.

    V d :

    main() a b n

    { int a=4 , b=6, n;n = a + b;n = a++ + b;

    n = ++a + b;n = --a + b;n = a-- + b;n = a+ b;

    }

    445

    6544

    666

    6666

    1010

    12111110

    I.5.3. Php gn phc hp:

    C php: bi n op= bi n = bi n op

    Vi op l php to n.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    22/134

    K thut lp tr nh 22

    C c php g n phc hp : += , -= , *= , /= , %= , =

    V d :n = n*(10+x) n *= (10 +x)n = n % 10 n %= 10I = I +3 I += 3

    > : l php dch chuyn bit qua ph i .

    I.5.4. Php ton quan h :

    < : nh hn

    > : ln hn

    >= : ln hn ho c b ng

    6)*(a-6) b = 4c= (a< 5)*(a-5) c = 0

    V d: T m s ln nh t trong 3 s nguyn a, b, c

    #include #include void main ()

    { int a, b, c, max;printf(Ch-ng tr nh t m s ln nh t trong 3 s);printf(Nhp a, b, c);scanf(%d %d %d , &a, &b, &c);

    max = a;if (max

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    23/134

    K thut lp tr nh 23

    I.5.5.Ton t logic:

    Ton t ngh a

    NOT ! Ph nhAND && Giao, v

    OR || Hi

    Th t t nh to n t tr n xung.B ng chn tr:

    x ! x x y x && y

    true false true true true

    false true true false falsefalse true false

    false false false

    x y x || y

    true true true

    false true true

    false true true

    false false falseV d 1: Xt k t c c phi l k s hay khng?

    char c;

    if (c >= 0 && c =a) and (ch< =z)) or ((ch> =A) and (ch< =Z))

    printf(%c l chu cai \n,ch);

    V d 3:int a=10, b=5, c=0;

    a && b 1a && c 0a | | c 1

    V d 4:

    int a=10, b=5;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    24/134

    K thut lp tr nh 24

    int i=2, j=0;(a>b) && (i= MAX ? 1: 0;printf ( max (a,b) = %d , (a>b) ? a:b);lower = (c > = A && c< = Z) ? c - A + a :c;

    I.5.8. Ton t trn bit (bit wise) :

    Dng K hi u ngh a

    NOT bit ~ l y b 1

    AND bit & giaoOR bit | hi

    XOR bit ^ hi lo i tr

    dch tr i > chia 2

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    25/134

    K thut lp tr nh 25

    B ng chn tr:

    Bit Bit Bit k t qu A B ~ A A & B A | B A ^ B0 0 1 0 0 00 1 1 0 1 11 0 0 0 1 11 1 0 1 1 0

    V d:

    a= 4564 0001 0001 1101 0100b= 13667 0011 0101 0110 0011a & b 0001 0001 0100 0000a | b 0011 0101 1111 0111a ^ b 0010 0100 1011 0111

    ngh a:1. Php AND bit th-ng -c dng ki m tra mt bit c th no trong

    th nh ph n d liu x c tr 0 hay 1. Vic n y thc hi n b ng cch s dng mtmt n (mask) vi bit c n quan t m b ng 1 cn cc bit kh c bng 0. Ta ly maskAND vi gi tr x. N u kt qu thu -c b ng mask th l bit c n quan t m l 1,ng-c l i l 0.

    V d 1:

    void main()

    { unsigned x1; x2;

    printf (\n cho 2 s hex(2 s) );

    scanf (%x %x , &x1, &x2);

    printf (% 02x & % 02x = % 02x\n, x1, x2, x1& x2);

    }

    V d 2: Ta mun bi t bit th 3 ca s hexa ch l 1 hay 0 :

    void main()

    { unsigned char ch, kq;

    printf ( \n cho 1 s hex 2 s :);

    scanf ( %x, &ch);

    kq= ch & 0x08;

    if (kq== 0x08) printf (bit 3 = 1);

    else printf (bit 3 = 0);

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    26/134

    K thut lp tr nh 26

    2. Php OR dng b t c c bit cn thi t l n cng nh vo mt m t n .Ch ng h n nh- ta mun b t bit th 7 ca bin ch (unsigned char ch) l n 1:

    ch = ch | 0x80;

    V d 3:

    void main()

    { unsigned char x1,x2;

    printf (\n cho 2 s hex (ff hay nh hn) :);

    scanf (%x %x, &x1, &x2);

    printf ( %02x | %02x %02x \n, x1, x2, x1| x2);

    }

    3. Php XOR dng l t bit ngh a l ho n chuyn 01

    V d 4: l t bit 3 ta c ch-ng tr nh:

    void main()

    { unsigned char ch;

    printf ( nh p 1 s hex < = ff :);

    scanf (%x, &ch);

    printf (%02x ^ 0x08 = %02x \n , ch, ch ^ 0x08);

    }

    4. Ton t >> dch sang ph i (chia 2)

    V d 5: num = 201 (0x00c9)

    num : 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1

    num > %d = %02x \n, x1, x2, x1>> x2);}

    Ch : Trong php dch ph i C l m theo 2 c ch kh c nhau ty thuc v o

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    27/134

    K thut lp tr nh 27

    ki u d liu ca ton h ng bn tri.

    - N u ton hng bn tri kiu unsigned th php dch s in 0 v o cc bitbn tri.

    - N u ton h ng bn tri kiu signed th php dch s in bit du v o c cbit b n tr i

    V d 7: unsigned int num;

    num = 39470; // 9A2E hexa

    num =

    num >> 2=

    0

    1 0 0 1

    9867 = 0x268B

    0 0 1 0

    1 0 1 0

    0 1 1 0

    0 0 1 0

    1 0 0 0

    1 1 1 0

    1 0 1 1

    V d 8 : int num; // 9A2E hexa

    num = -26066

    num =

    num >> 2=

    1

    1 0 0 1

    -6517 = 0xE68B

    1 1 1 0

    1 0 1 0

    0 1 1 0

    0 0 1 0

    1 0 0 0

    1 1 1 0

    1 0 1 1

    V d 8: Ch-ng tr nh i s hex ra s nh phn :

    #include #include void main(){ int num;unsigned int mask;clrscr();printf ("Chuong trinh doi so hexa sang nhi phan\n");printf ("Nhap vao so hexa :");

    scanf("%x",&num);mask = 0x8000;printf("\n Dang nhi phan cua so %x la ",num);for (int j=1; j>=1;

    }getch();

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    28/134

    K thut lp tr nh 28

    V d 9: Ch-ng tr nh my t nh bitwise

    y l ch-ng tr nh gi lp mt m y t nh thc hin c c ton t bitwise.#define TRUE 1

    main(){ char op[10];

    int x1, x2;while (TRUE){ printf (\n \n Cho biu thc ( vd ffoo & f11) : );

    printf (\n);switch ( op[0]){ case &:

    pbin (x1); printf (& (and) \n );

    pbin (x2);pline (); pbin (x1 & x2);break;

    case |:pbin (x1); printf (| \n );pbin (x2);pline (); pbin (x1 | x2);break;

    case ^:

    pbin (x1); printf (^ \n);pbin (x2);pline (); pbin (x1 ^ x2);break;

    case >:pbin (x1); printf ( >>); printf (%d \n ,x2);pline (); pbin (x1 >> x2);break;

    case

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    29/134

    K thut lp tr nh 29

    }pbin (num)int num;

    { unsigned int mask;int j, bit;mask = 0x8000;printf (%04x, num);for(j=0; j> = 1;

    } printf (- -);mask >> 1;

    }pline (){ printf (- - - - - - - - \n);

    }

    * S chuy n ki u bt buc:

    Trong C c 2 tr-ng hp chuy n kiu: chuy n kiu t ng v chuy n

    ki u b t buc.Chuy n ki u b t buc: -c p dng khi chuyn kiu t ng khng -c.

    C php: (Type) biu thc

    V d: d = (float) (f - 32)int a= 100, b=6;double f;f =a/b // k t qu f=16f= (double) a/ (double)b // k t qu f= 100.0 / 6.0= 16.666.

    * Mc -u ti n ca cc php ton:

    -u ti n Php ton Th t k t hp

    1 () [ ] 2 ! ~ ++ - - (type) * & size of 3 * / % 4 + -

    5 >

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    30/134

    K thut lp tr nh 30

    6 < >= 7 = = != 8 &

    9 ^ 10 | 11 && 12 | | 13 ? 14 = + = - = ..

    V d1

    : 3/4 * 6 # 3*6 /40 * 6 18 /40 4

    V d 2: (float) 2 /4 # (float) (2/4)2.0 /4 (float) 00.5 0.0

    I.6. Chui

    I.6.1. nh ngh a :Chui l mt m ng m cc phn t ca n c ki u k t.

    Khai b o mt chui k t cha ti a 49 k tchar chui[50];

    *L-u : Tt c c c chui u -c kt thc b ng k t NULL (\0). Do ,nu chui d i 50 th ta ch c th cha ti a 49 k t.

    I.6.2. Khi ng tr:

    char chui[ ] = {A, N, H, \0};

    char chui[ ] = "ANH";

    I.6.3.Nhp / xut chui:

    a. Nhp chui:gets (chui)

    b. Xut chui:puts (chui)

    Ch :

    - Khi nh p chui th khng -c dng h m scanf v hm scanf khng ch pnh n khong trng.

    V d: scanf(%s, chui);// ta nh p vo Nguy n V n i th

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    31/134

    K thut lp tr nh 31

    // chui = Nguyn v h m scanf c t kho ng tr ng

    - Khi dng h m gets trong ch-ng tr nh th khng nn dng h m scanf bt k u d r ng dng hm scanf nhp s m ta nn dng h m gets v hm

    atoi, atof nhp s.V :

    scanf(%d, &n); // ta nh p s 5 gets (chui); // lc n y chui = (chui rng)

    I.6.4. Hm chuy n i s sang chui v ng-c li

    sint = atoi (chuis) // chuy n chui s sang s nguynsf = atof (chuis) // chuy n chui s sang s thc

    * Hai h m n y n m trong < stdlib .h >

    I.6.5.Cc hm v chui: (# include < string. h> )- int strlen(S) : tr v chiu d i chui S.

    - int strcmp(S1, S2): so s nh chui S1 vi S2. N u chui S1 ging S2 k tqu bng 0. N u chui S1< S2 k t qu l m, nu chui S1> S2 k t qu > 0.

    - int stricmp(S1, S2): so s nh chui S1, S2 khng ph n bi t ch th-nghay ch hoa

    - int strncmp(S1, S2, n): ch so snh n k t u ca 2 chui S1, S2 vinhau.

    - int strnicmp(S1, S2, n): ch so snh n k t u ca 2 chui S1, S2 vinhau, khng phn bi t ch th-ng, ch hoa

    - strcpy(dest, source): chp chui t ngun source sang ch dest

    V d: char string[10];

    char *str1 = "abcdefghi";strcpy(string, str1);printf("%s\n", string); // "abcdefghi"

    - strncpy(dest, source, n): chp chui t ngun sang ch vi nhi u nh t

    l n k t.V d:

    char string[10];char *str1 = "abcdefghi";strncpy(string, str1, 3); // string = "abcx1zwe12"string[3] = '\0'; // t k t k t thc chui v o cui chui.printf("%s\n", string); // "abc"

    - strcat(dest, src): ni chui src v o sau chui dest. Chiu d i ca chui

    k t qu b ng strlen(dest) + strlen(src)

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    32/134

    K thut lp tr nh 32

    V d:

    char destination[25];char *blank = " ", *c = "C++", *turbo = "Turbo";

    strcpy(destination, turbo); // destination = "Turbo"strcat(destination, blank); // destination = "Turbo "strcat(destination, c); // destination = "Turbo C++"

    - strncat(dest, src, n): ni nhi u nh t l n k t ca src vo cui chuidest, sau th m k t null v o cui chui k t qu .

    V d:

    char destination[25];char *source = " States";

    strcpy(destination, "United");strncat(destination, source, 6);printf("%s\n", destination); // destination = "United State"

    - char* strchr(s, ch): tr v a ch ca k t ch u ti n c trong chuiS; nu khng c th tr v NULL (th-ng dng l y h)

    V d:

    char string[15];char *ptr, c = 'r';

    strcpy(string, "This is a string");ptr = strchr(string, c);if (ptr)

    printf("K t %c v tr : %d\n", c, ptr-string);else

    printf("Khng t m th y k t %c\n",c);

    - char * strstr(S1, S2): tr v v tr ca chui S2 trong chui S1; n u S2khng c trong S1 th h m strstr tr v tr NULL.

    I.6.6.Mng cc chui*Khai bo: Khai b o bin ds cha ti a 50 chui k t , mi chui k t c

    ti a 30 k t.

    char ds[50] [30];Ch :

    - Khng nn gn chui vi chui (s1= s2) m phi dng hmstrcpy(S1,S2)

    - Khng -c so s nh 2 chui b ng c c ton t quan h (S1== S2,

    S1

    >S2, S1

    >= S2), m phi dng hm strcmp(S1

    ,S2).

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    33/134

    K thut lp tr nh 33

    V d: Vi t ch-ng tr nh t m ki m 1 t trong 1 c u

    # include < string.h>

    # include < stdio.h>

    void main ()

    { char cau[80], t[7], *ptr;

    printf(Nh p c u :);

    gets(cu);

    printf(Nh p t :);

    gets(t);

    ptr = strstr(c u, t);

    if (ptr == NULL) printf(Khng c t);else printf(c t);}

    II. Cc cu trc iu khin trong C:

    Ngn ng C l ngn ng lp tr nh cp cao c cu trc, gm: cu trc tun t,chn, v lp.

    II.1 Cu trc tun t (Sequence) :

    Cc lnh trong ch-ng tr nh -c thc hi n tu n t t lnh ny n l nhkh c cho n khi h t ch-ng tr nh.

    V du : Vit ch-ng tr nh t nh v in ra di n t ch ca hai -ng trn bn k nhl n l-t l 3m v 4.5m cng vi hiu s ca 2 din t ch.

    #define PI 3.14159

    #include

    #include

    void main()

    {float r1, r2, hieuso;

    clrscr();

    printf("\nCHUONG TRINH TINH DIEN TICH 2 HINH TRON VA HIEU SO\n");

    printf("Ban kinh hinh tron thu nhat : ");

    scanf("%f",&r1);

    printf("Ban kinh hinh tron thu hai : ");

    scanf("%f",&r2);

    printf ("Dien tich hinh tron 1 = %.2f\n",PI*r1*r1);

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    34/134

    K thut lp tr nh 34

    printf ("Dien tich hinh tron 2 = %.2f\n",PI*r2*r2);

    hieuso = PI*r1*r1 - PI*r2*r2;

    printf ("Hieu so dien tich 2 hinh tron = %.2f\n",hieuso);

    getch();}

    II.2. Cu trc chn

    K hi u : k l bi u thc Logic

    S1, S2 l cc pht biu hay 1 nhm c c pht biu (lnh)

    II.2.1. L nh if else:

    C php:

    if (k) S1;

    KNO

    YES

    S1

    if (k) S1;else S2;

    K S1

    S2

    NO

    YES

    Ch : Cc lnh if else lng nhau

    if (k1) S1;

    else if (k2) S2;else if (k3) S3;

    else S4;

    V d 1: T m max(a,b,c)

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    35/134

    K thut lp tr nh 35

    if (a>b)if (a>c) max=a;else max=c;

    else if (b>c) max =b;else max= c;

    V d 2: T nh h m f(x) :

    f(x) = x2 , n u -2 < = x< 24 , x > = 2

    if (x>=-2 && x=2)

    fx= 4;else { printf("\n Khong xac dinh") ; exit(0) ;}

    II.2.2. L nh chn la: switch_case

    C php:

    switch (biu thc)

    { case h ng 1: S1;

    case h ng 2: S2; break;

    .

    .

    .

    case h ng 3: Sn; break;

    default: S0;

    }

    Cch hot ng:

    - (bi uthc) c k t qu nguy n

    - H ng: k t, s nguyn, bi u thc c s nguy n

    - N u k t qu bng h ng I no th n s l m l nh Si v tu n t thc hinh t cc l nh d-i cho n khi h t l nh switch.

    - Mun ng t s tu n t tr n th ph i dng lnh break.

    V d: Nh p 1 k t s dng hex i ra s th p phn

    #include #include

    void main()

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    36/134

    K thut lp tr nh 36

    {unsignedchar ch;int k;

    clrscr();printf("Nhap 1 ky tu so hex : ");ch=getche();switch (ch){case '0':case '1':case '2':case '3':

    case '4':case '5':case '6':case '7':case '8':case '9': k=ch-'0'; break;case 'A':case 'B':case 'C':

    case 'D':case 'E':case 'F':k=ch-'A'+10; break;case 'a':case 'b':case 'c':case 'd':case 'e':case 'f': k= ch-'a'+10; break;

    default: k=0;}printf ("\nSo thap phan cua ky tu hexa %c la %d ",ch,k);getch();}

    V d: Vi t ch-ng tr nh t o 1 my t nh c 4 php to n + , - , * , /

    #include #include void main()

    {

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    37/134

    K thut lp tr nh 37

    float num1, num2;char op;clrscr();

    printf ("Go vao so, toan tu, so \n");scanf("%f %c %f", &num1, &op, &num2);switch (op){case '+': printf("= %f",num1+num2);

    break;case '-': printf("= %f",num1-num2);

    break;case '*': printf("= %f",num1*num2);

    break;case '/': printf("= %f",num1/num2);

    break;default : printf("Ton t l , khng bi t");}

    }

    II.3. Cu trc lp

    II.3.1. L nh while:

    C php:

    While (bt)

    S;K

    NO

    YES

    S

    Ch : Trong ph n thn l nh ph i c bi n i u khi n vng lp.

    V d 1: Vi t ch-ng tr nh in ra bng m ASCII

    void main (){ int n=0;

    while (n

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    38/134

    K thut lp tr nh 38

    { printf(%c c m ASCII l %d, n, n);n ++

    }

    }V d 2: Nhp mt chui k t, v k t thc nh p b ng ESC

    #define ESC \ 0x1b#include #include

    void main(){ char c;

    while (1)

    if ((c = getche() ) = ESC ) break;}

    V d 3: Vi t ch-ng tr nh in bng cu ch-ng

    void main (){ int a, b;

    b = 1;while (b < = 9)

    { a = 2;while (a < = 9)

    { printf(%d * %d = %d \t, a, b, a*b);a++;}

    b ++;printf(\n);

    }}

    II.3.2. L nh do while:

    C php:

    do

    S

    while (bt);

    S

    k

    NoYes

    V d 1: Vi t ch-ng tr nh in bng m ASCII

    #include

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    39/134

    K thut lp tr nh 39

    main (){ int n=0;

    do

    { printf(%c c m ASCII %d\n, n, n);n ++;} while (n

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    40/134

    K thut lp tr nh 40

    void main (){ long gt = 1;

    for (int i =1; i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    41/134

    K thut lp tr nh 41

    }

    3. Lnh goto: dng chuy n iu khi n ch-ng tr nh v mt v tr n o .

    C php: Goto nh n;

    Lnh goto s chuy n i u khi n ch-ng tr nh ngay l p tc v v tr tnh n.

    V d:Again:;..goto Again;

    Bi tp:

    1. Vit ch-ng tr nh t nh di n t ch

    - H nh vung- H nh thang- Tam gic th-ng- Tam gi c vung- H nh trn

    2. T nh khong cch mt im (X0, Y0) ti mt -ng th ng Ax + By + C = 0

    BA

    CByAxS

    22

    00

    +

    ++= , nhp A, B, C, X0, Y0

    3. Cho 3 s thc x, y, z. T m

    a. Max(x+y+z, x*y*z)b. Min2 ((x+y+z) / 2, x*y*z) +1

    4. Vit ch-ng tr nh t m s ln nh t trong 3 s nguy n a,b, c

    5. Gii ph-ng tr nh bc 2 Ax2+Bx+C = 0 trn tr-ng s thc.

    6. Vi t ch-ng tr nh t nh di n t ch h nh trn, bit b n k nh r d-ng; Ch-ngtr nh c ki m tra s li u nhp v o, n u r

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    42/134

    K thut lp tr nh 42

    9. Vit ch-ng tr nh ki m tra 1 bit b t k ca s bng 0 hay 1

    10. Vit ch-ng tr nh t nh k t qu ca mt s sau khi dch phi hoc dch tri nln.

    11. m s l n xu t hi n ca t mt trong 1 c u

    12. Thay th 1 t trong 1 cu bng 1 t kh c.

    13.Nh p h tn, tch hoten ra l m 2 ph n h v tn ring.

    14.Vi t ch-ng tr nh i c c k t u ca c c t ra ch in, c c k t cn l i rach th-ng.

    15.Vi t ch-ng tr nh cho php ta kim tra mt password l ng hay sai (nhpti a password 3 l n).

    16.Cho chui s, vi t ch-ng tr nh di chuy n ch t b n tr i qua bn ph i camn h nh t i dng 5. Qu tr nh di chuy n dng l i khi ta n ph m ESC.

    17. Bn hy vi t ch-ng tr nh t nh gi tr tng cng ca mt s n ph m c k cthu , bi t r ng t sut thu l 13.6% t nh tr n gi gc. Gi gc ca s n phm-c c v o, v cn in ra:- Ti n thu

    - Gi c thu

    18. Trong mt k thi cui kha, c c hc vin ph i thi 4 mn : mn I h s 2,

    mn II h s 4, mn III h s1, mn IV h s 2, i m c c mn cho ti a l10 i m. Vi t ch-ng tr nh nh p im ca 4 mn v t nh i m trung b nh.

    19. Mt ng-i b n r-u bn N chai r-u c n gi l P. Nu tng s ti n v-tqu 5000000 th vi c chuyn ch l mi n ph , n u khng ph chuy n chth-ng -c t nh b ng 1% tng tr gi hng. Vi t ch-ng tr nh nhp v o N, P.In ra c c chi ti t Tng tr gi h ng, ti n chuyn ch, v tng s ti n ph i tr .

    20. Mt sinh vi n d tuy n c cc chi ti t sau : h tn, im L1 ca ln 1, imL2 ca l n 2, im thi cui k CK. Vi t ch-ng tr nh x c nh xem mt sinh

    vi n c -

    c tuy n hay b lo i, bi t r ng s -

    c tuy n n u im -

    c t nhtheo cng thc sau ln hn hay b ng 7 : Max( (L1+L2+CK)/3, CK).

    21. Vi t ch-ng tr nh cho bit tin l-ng hng ng y ca mt ng-i gi tr . C cht nh l 15000/gi cho mi gi tr-c 14 gi v 25000 /gi cho mi gi sau14 gi. Gi b t u v gi k t thc cng vic -c nhp t b n ph m.

    22. Cho 3 s thc x, y z

    a. Tn t i hay khng mt tam gic c 3 c nh c d i x, y, z ?

    b. Nu l tam gi c th n vung, cn, u hay th-ng

    23. Gi i h ph-ng tr nh bc nh t:

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    43/134

    K thut lp tr nh 43

    ax+by = cax+by = cH-ng d n:

    D = a b

    a b

    = ab - ab

    Dx= c b

    c b

    = cb - cb

    Dy= a c

    a c

    = ac - ac

    if D!= 0 x= Dx/D; y= Dy/ D

    else if (( Dx != 0) | | ( Dy != 0)) pt v nghi melse pt v nh

    24. Gi i h ph-ng tr nh 3 n s bc nh t

    a1x + b1y + c1z = d1

    a2 x + b2 y + c2 z = d2

    a3 x + b3 y + c3 z = d3

    25. Vi t ch-ng tr nh gi i ph-ng tr nh trng ph-ng ax4 + bx2 + c = 0

    26. Ng-

    i ta mun l p ha n cho kh ch hng ca Cng ty in lc. Ch s uv ch s cui k s -c cho bi t. Bi t r ng bi u gi -c t nh ty theo innng ti u th.

    - N u i n n ng ti u th nh hn 100Kwh, gi mi Kwh l 500.

    - N u in n ng ti u th t100Kwh tr ln, th mi Kwh di ra s -c t nhgi l 800

    - Ph khu vc l 5000 cho mi khch h ng. Vi t ch-ng tr nh t nh ti nph i tr tng cng gm tin i n, v ph khu vc

    27. Bi t 2 s X, Y biu din thi gian t nh theo giy. Ng-i ta mun vi t ch-ngtr nh :

    - c 2 s n y v in ra tng ca chng

    - Chuy n c c s ny v tng ra d ng gi, ph t, gi y ca chng ri in ra.Ki m xem k t qu ca 2 cch t nh c nh- nhau khng?

    28. Vi t ch-ng tr nh in bng cu ch-ng t 2 9 theo h ng ngang

    29. In tam gic *, h nh ch nh t *, rng - c

    30. V l-u v vi t ch-ng tr nh t nh :

    a. 1+2+...+n

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    44/134

    K thut lp tr nh 44

    b. 1+3+5+...+2n-1

    c. 2+4+6+...+2n

    d. 12+ 22+ 32+...+n2

    e. 1/1+ 1/2+ 1/3+...+ 1/nf. 2+4+8+...+2n

    g. 1+ 1/22 + 1/32 +....+ 1/n2

    31. Cho epsilon = 0.000001, x c nh c c tng sau y sao cho s hng cuicng ca tng l khng ng k (s h ng cui cng < epsilon )

    a. 1/1+ 1/2+ 1/3+1/4+.....

    b. 1+ 1/22 + 1/32 +....+...

    32. Vi t ch-

    ng tr nh in ra bng m

    ASCII,1

    6 k t trn1

    dng.33. V l-u v vi t ch-ng tr nh :

    a. Xt mt s c phi l s nguy n t hay khng ?

    b. In tr n m n h nh 100 s nguy n t u tin

    34. Vi t ch-ng tr nh cho php mt k t ng u nhi n ri trn m n h nh. N ung-i s dng khng kp n ph m t-ng ng v ch m y m n h nh ththua cuc.

    35. Cho hm Fibonacci:

    Fn = { 1 ; n=0,1Fn-1 + Fn-2 ; n>=2a. T m Fn, vi n do ta nhp

    b. In ra N ph n t u tin ca dy Fibonacci

    36. Vi t ch-ng tr nh c vo s nguy n N v in ra 1*2*3*..*N cho n khi N

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    45/134

    K thut lp tr nh 45

    III. Hm - quy:

    III.1.Hm:

    III.1.1.Mc ch : H m l mt ch-ng tr nh con ca ch-ng tr nh ch nh,vi cc mc ch sau:

    * Tr nh vi c l p i l p l i c c on ch-ng tr nh ging nhau, nh , ta sti t kim lc l p tr nh.

    * T chc ch-ng tr nh: Dng hm ta s ph n m nh ch-ng tr nh thnhnhng khi nh c l p, mi khi l mt hm thc hin mt cng vic n o .Tng hm s -c lp tr nh, kim tra ho n ch nh; Sau , ta k t l i to ch-ngtr nh ho n ch nh. Nh vy, ch-ng tr nh v sau d hi u v d sa.

    * T nh c lp: cho php h m c l p vi ch-ng tr nh ch nh. V d hmc nhng bi n cc b m ch-ng tr nh ch nh v c c h m khc khng th ngti. Do , n u ta c khai bo c c bin trng t n vi c c h m khc th cngkhng s nh h-ng ti c c bin trng tn .

    Ch :

    - C khng cho php cc h m lng nhau ngh a l cc h m u ngang cpnhau (c th gi l n nhau).

    - C khng ph n bi t th tc hay h m, m ch quan tm n k t qu tr vca hm. N u h m khng tr v k t qu g c th c th xem l th tc.

    V d: V h nh ch nh t c b ng d u *:#include #include void ve_hcn(int d,int r) // khai b o void cho bi t h m khng tr v trn o c{ int i,j ; // i, j l 2 bin cc b trong h m ve_hcnfor (i=1;i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    46/134

    K thut lp tr nh 46

    III.1.2. C php nh ngh a hm

    C php:

    Kiu tnh m (ds i s){ Khai bo bi n cc b;

    lnh;[ return (expr);]

    }

    - Kiu: L k t qu tr v ca h m. Nu khng ghi ki u, C s t hi u l ki uint. Nu khng mun c k t qu tr v th ghi kiu void.

    - Danh sch i s: Li t k cc i s v ki u ca i s gi n hm, cchnhau bi d u ','. N u khng c i s ta ch cn ghi()

    - L nh return: c c c d ng sau:

    return;

    return (expr);

    return expr;

    V d: H m chuyn ch th-ng sang ch hoa

    #include #include

    Get_upper(char ch){ return (ch >='a' && ch

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    47/134

    K thut lp tr nh 47

    #include #include int max (int a,int b)

    { int m= a>b?a:b;a=a*100;b=b*100;return m;

    }void main(){ int a,b,c;clrscr();printf("\nChuong trinh tim Max(a,b)\n");

    printf("Nhap a b : ");scanf("%d %d",&a,&b);c=max(a,b);printf("\nGia tri lon nhat =%d",c);printf("\nGia tri a =%d",a);printf("\nGia tri b =%d",b);getch();

    }

    Gi s ta chy ch-ng tr nh tr n:Nhap a b : 12 24Gia tri lon nhat =24Gia tri a =12Gia tri b=24

    Nhn xt:

    - Ta nhn th y rng gi tr hai bi n a, b tr-c v sau khi v o h m max lkhng thay i (mc d trong h m max, c hai bin a v b u thay i); l

    c ch ca s truy n i s theo tr.Li gi hm: tnhm (ds isthc);

    - N u truyn i s theo tr th i s thc c th l bi n, ho c c th l bi uthc.

    V d: c = max(1000,b);

    b.Truy n theo a ch: i s thc l a ch ca bi n

    #include

    #include

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    48/134

    K thut lp tr nh 48

    max (int &a,int b){ int m= a>b? a : b;

    a=a *100;

    b=b*100;return m;

    }void main(){ int a,b,c;clrscr();printf("\nChuong trinh tim Max(a,b)\n");printf("Nhap a b : ");scanf("%d %d",&a,&b);c=max(a,b); // a l tham s thc binprintf("\nGia tri lon nhat =%d",c);printf("\nGia tri a =%d",a);printf("\nGia tri b =%d",b);getch();

    }

    Gi s ta chy ch-ng tr nh tr n:

    Nhap a b : 12 24Gia tri lon nhat =24Gia tri a =1200Gia tri b=24

    Nhn xt:

    - Ta nhn thy r ng gi tr bin a tr-c v sau khi vo h m max thay i; l c ch ca s truyn i s theo a ch .

    Li gi hm: tnhm (t nbin);

    - N u truyn i s theo a ch th tham s thc bt buc ph i l mt tn bi n.V d: c = max(1000,b); l sai

    V d: Vi t h m giaohon ho n i gi tr ca 2 bi n nguy n a,b.

    void giaohoan (int &a, int &b){ int tam;

    tam = a;a = b;b = tam;

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    49/134

    K thut lp tr nh 49

    void main(){ int a,b;

    printf ("a, b = ");

    scanf ("%d %d", &a, &b);giaohoan(a, b);}

    * Truy n i s l mng gihm (mang)

    h m (kiu mang[]) ho c hm(ki u *mang)

    V d: Cng th m mt h ng s vo m ng t n l dayso.

    #define SIZE 5 // dy s c 5 s#include

    #include void add_const(int *a, int n, int con) // int *a int a[]{ for (int i=0; i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    50/134

    K thut lp tr nh 50

    { float a ,b, a1, b1;printf(Nhap a,b,a1,b1:);scanf(%f %f %f %f,&a,&b,&a1,&b1);

    printf(Dinh thuc = %f,dinhthuc(a,b,a1,b1);getch();}

    III.1.5. Phm vi tn ti ca bin:

    a.Bin ton cc : l bi n -c khai b o ngo i c c h m ( k c hm main).N -c php truy nhp n t t t c cc hm trong sut thi gian ch-ng tr nhho t ng.

    V d: Khai b o ngo i h m main

    Ki u tn bi n; // bi n to n ccvoid main(){}

    b.Bin cc b: l bi n -c khai b o trong cc hm, k c trong hmmain. N khng cho php cc hm khc truy nh p n n. N tn t itrong thi gian sng ca h m cha n.

    void main()

    { ki u tn bi n; bi n cc b trong h m main()}c.Bi n ngoi : l bi n m cc h m c th truy xu t ti m khng ph iph n phi b nh. N -c dng cc h m trn c c t p tin kh c nhauli n k t l i.

    External Ki u tn bin;void main(){

    }d.Bi n t nh : l mt bi n cc b ca mt hm nh-ng v n gi gi tr caln gi hm cui cng

    void main(){ static Ki u tnbi n;}

    e.Bin thanh ghi : l mt bi n s dng cc thanh ghi ca CPU tngtc truy xu t

    register Ki u t nbi n ;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    51/134

    K thut lp tr nh 51

    III.1.6. Cc dn h-ng ti n x l

    III.1.6.1. #define

    a.nh ngh a hng:#define t n h ng gi tr

    V d: #define PI 3.14#define MAX 100#define THONGBAO H t Gi "#define khoangtrang

    b. nh ngh a Macro:

    #define t nmacro (i s ) thao tc

    V d: #define sqr (x) x*x#define sum (x,y) x+y

    a = b * sum (x,y); // a = b * x+y;#define sum (x,y) (x+y)

    a = b * sum (x,y); // a = b * (x+y);*Ch : Trong cc thao t c Macro nn s dng cc d u ngo c tr nh d n

    ra mt k t qu sai

    V d : #define max (a,b) ((a) > (b) ? (a) : (b))#define ho nv (a,b) { int t m =a; a= b; b= t m;}#define error (n) printf ( error %d, n)

    D-i y mt s Macro ph n t ch k t, t t c u trong . Ccmacro n y tr v tr kh c 0 nu th nh cng. i vi mi macro, th nh cng -cnh ngh a nh- sau:

    Macro K t

    isalpha (c) c l k t a z, A Z

    isupper (c) c l k t A Zislower (c) c l k t a zisdigit (c) c l k s 0 9isxdigit (c) 0 9, A F, a ziscntrl(c) c l k t xa ho c k t iu khin

    (0x7F hoc 0x00 n 0x1F)ispace (c) c l k t space, tab, carriage return,

    new line (0x09 n 0x0D, 0x20)

    Khai bo: char c;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    52/134

    K thut lp tr nh 52

    * Phn bit Macro vi hm:

    - Dng Macro: truy xu t nhanh, tn b nh.

    - Dng h m: ng-c l i

    III.1.6.2. #include

    L ti n x l dng k t ni t p trung khai b o trong include vi t p tinang l m vic.

    # include < tn tp tin.h># include tn t p tin.h

    D ng < > : i t m t p tin.h trong th-mc -c ch nh trong IncludeDirectories.

    D ng : t m t p tin.h trong th- mc Source Directories, nu khng c,n i t m trong th- mc -c ch nh trong Include Directories.

    III.2. qui (Recursion):

    III.2.1.Khi ni m: qui l 1 cng c r t th-ng dng trong khoa hcmy t nh v trong to n hc gi i quy t c c v n . Tr-c h t, chng ta hykho s t th no l mt v n c qui qua v d sau:

    T nh S(n) = 1 +2 +3 +4+ ...+n

    Ta nh n thy r ng, cng thc tr n c th di n t l i nh- sau:

    S(n) = S(n-1) + n, vS(n-1) = S(n-2) + (n-1).....S(2) = S(1) + 2S(1) = 1

    Nh-vy, mt vn c qui l vn -c nh ngh a li bng ch nh n.

    t nh S(n): ta c k t qu ca S(1), thay n v o S(2), c S(2) ta thay n v oS(3) ...., c nh- vy c S(n-1) ta s t nh -c S(n)

    *Mt s v d

    1. Hm giai tha:

    n! = { 1*2*3*......*(n-1)*n , n>01 , n=0

    = { n*(n-1)! , n>01 , n=0

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    53/134

    K thut lp tr nh 53

    Nhn xt:

    - Theo cng thc tr n, ta nh n th y trong nh ngh a ca n giai tha (n!)c nh ngh a l i ch nh n n n h m giai tha c qui.

    - Vi n >=0 , iu kin dng t nh hm giai tha l n=1

    2. Hm FIBONACCI:

    Fn = 1 ; n =0,1

    Fn-1 + Fn-2 ; n>1

    - Theo nh ngh a tr n, h m Fibonacci c l i gi qui.

    - Qu tr nh t nh dng l i khi n= 1

    III.2.2. Hm qui trong ngn ng C:

    Ngn ng C c trang b c ch gi h m qui. Hm qui l hm gi nch nh hm mt c ch trc tip hay gi n tip.

    V d 1: Vit h m qui t nh S(n) = 1 + 2 + 3 +...+n

    #include #include int S(int n){ if (n==1) // iu ki n dng

    return 1;

    else // b-c quireturn (S(n-1) + n);

    }void main(){ int n;printf("\n Nhap n = ");scanf("%d",&n);printf("Tong S = 1 + 2 + ...+ %d = %d",n, S(n));getch();

    }V d 2 : Vi t h m qui t nh hm giai tha n.

    long giaithua(int n){ return ((n==0) ? 1 : n*giaithua(n-1));}

    III.2.3. Hm qui v Stack:Mt ch-ng tr nh C th-ng gm c h m main() v cc h m khc. Khi chy

    ch-ng tr nh C th hm main() s -c gi chy tr-c, sau h m main() gi

    cc hm khc, cc h m n y trong khi chy c th gi c c h m khc na. Khi

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    54/134

    K thut lp tr nh 54

    mt h m -c gi, th mt khung k ch ho t ca n -c to ra trong b nhstack. Khung k ch ho t n y cha cc bin cc b ca hm v mu tin ho t ngca hm. Mu tin ho t ng cha a ch tr v ca h m gi n v cc tham skhc.

    Bi n cc b

    a ch tr vMu tin

    ho t ng Thng s khcKhung k ch hot

    Sau khi hm -c gi thi hnh xong th ch-ng tr nh s thc hin tipdng lnh a ch tr v ca hm gi n, ng thi xa khung k ch ho t ca

    hm khi b nh.Gi s ta c c ch gi hm trong mt ch-ng tr nh C nh- sau:

    main()

    { ......

    A();

    .....;

    B();

    ....;}

    A()

    {.....;

    C();

    ....;

    D();

    }

    B()

    {.....;

    D();

    }

    C()

    {......;

    D();

    .....;

    }

    D()

    {........;

    ........;

    }

    H nh sau y cho ta thy s chim dng b nh stack khi chy ch-ng tr nhC nh- m t tr n.

    b nh

    Stack

    D

    C C C D D

    A A A A A A A B B BM M M M M M M M M M M M M

    thi gian

    T-ng t vi tr-ng hp h m qui, khi gi qui l n nhau th mt lo tcc khung k ch ho t s -c t o ra v np v o b nh Stack. Cp qui c ng caoth s khung k ch ho t trong Stack c ng nhiu, do , c kh nng dn n tr nStack (Stack overflow). Trong nhi u tr-ng hp khi lp tr nh, n u c th -c tann g qui cho cc b i ton.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    55/134

    K thut lp tr nh 55

    IV. Structure:C c ki u n gi n t i mt thi i m ch l-u gi -c mt gi tr duy nht.

    Cn mt bin kiu m ng dng l-u tr cc gi tr cng kiu d liu vi nhau,

    ch ng hn nh-mt dy s, mt d y cc k t ,...Nh-ng trong thc t , i u nyvn ch-a v c c th nh phn m ta l-u gi th-ng l kh c kiu d li u vinhau.

    V d : Ta mun l-u gi cc thng tin v mt sinh vi n nh- sau : MASO,HO, TEN, NGAYSINH, NOISINH, PHAI, DIACHI, LOP . Vi c c th nh ph nnh-vy, th r r ng cc th nh phn ca 1 sinh vi n khng th cng kiu m ph ithuc cc kiu khc nhau, c th l :

    - MASO, HO, TEN : m ng ch

    - NGAYSINH : int ng y , thng , n m ;

    - NOISINH : m ng ch

    - PHAI : unsigned int;

    - LOP : m ng ch;

    Do , l-u tr -c c c thnh ph n khc nhau ca mt i t-ng ta ph is dng mt kiu d liu trong C l Structure. (t-ng t nh- record trongPascal)

    IV.1.nh ngh a:

    Mt bi n c ki u structure -c dng l-u tr mt i t-ng c nhi uth nh ph n. Cc thnh ph n c th thuc c c kiu d liu khc nhau.

    IV.2.Khai bo : Mun khai bo ki u hocvien dng l-u tr h, tn, immn TOAN,LY,HOA, TB, X p lo i ca mt hc vi n, ta c :

    struct hocvien{ char ho[30];

    char ten[7];float toan, ly, hoa , dtb;

    char xeploai[10];} ;

    - khai bo bi n hv c ki u hocvien :

    struct hocvien hv;

    - truy xu t ti mt thnh ph n, ta dng d u ch m, v d nh-: hv.ho truy xu t ti h ca hc vin.

    * Khai b o k t hp: va khai b o kiu structure va khai bo bin c kiu .

    struct hocvien

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    56/134

    K thut lp tr nh 56

    { char ho[30];char ten[7];float toan, ly, hoa , dtb;

    char xeploai[10];} hv1, hv2; // khai b o 2 bin hv1, hv2 cng kiu hocvien

    - Khai b o structure lng nhau:

    V d:

    void main(){ struct ngaysinh{ unsigned int ngay, thang, nam;};

    struct hocvien{ char ho[30];char ten[7];struct ngaysinh ngsinh;float toan, ly, hoa, dtb;char xeploai[10];} ;struct hocvien hv;

    }

    Trong tr-ng hp n y, truy xu t ti thng sinh ca hc vi n hv, ta vi tnh- sau: hv.ngsinh.thang.

    V. FILE:

    V.1. File vn bn:

    - File vn bn l file -c l-u tr d-i d ng ki u k t

    C 2 cch truy xu t theo kiu k t.

    - Truy xu t theo tng k t- Truy xu t theo tng dng

    V.1.1. Khai bo tp tin:

    Khai b o bi n ki u file:FILE *fptr

    V.1.2. M tp tin:

    fptr = fopen (t n file, kiu);

    - Trong "t nfile" , ta c th ch nh mt -

    ng dn y nh-

    sau

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    57/134

    K thut lp tr nh 57

    "C:\THU\KTLT\VIDU.TXT". H m fopen n u m file th nh cng s tr v mtcon tr file cho tp tin "t n file", v con tr n y -c ct gi trong bin fptr (binkiu FILE).

    Nu khng c file "t n file" tr n d a th hm fopen s tr v tr NULL( n u fptr == NULL ngh a l khng c file )

    - Kiu: gm c:

    r : c ( file phi c s n, n u khng c file, h m fopen tr v trNULL)

    w : ghi ( n u c file s xa file c )a : ni v o cui tp tinr +: c / ghi, tp tin ph i c sn trn d a

    a+: c, ghi v o cui tp tin, n u trn d a ch-a c tp tin th n s -cto ra.

    V d: m s k t trong file VB.TXT.

    #include #include #include void main(){ FILE *fptr;

    int dem=0;char ch;if ((fptr = fopen("VB.txt", "r")) == NULL) // m file c{

    printf("File nay khong the mo\n");exit(0); //k t thc ch-ng tr nh, hm exit thuc v stdlib.h

    }while (!feof(fptr)){ ch=fgetc(fptr); // c 1 k t trong file fptr radem++;

    }fclose(fptr);printf("\nSo ky tu trong file VB.TXT =%d",dem);

    getch();}

    V.1.3. ng file:

    fclose (fptr)

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    58/134

    K thut lp tr nh 58

    V.1.4. c / ghi k t: Cho bi n k t charch;

    - c k t t t p tin

    ch = getc (fptr)

    - Ghi k t l n t p tinputc (ch, fptr)

    V d 1: T o 1 file trc tip t bn ph m. Qu tr nh to s dng li khi ta nph m Enter.

    #include #include #include void main()

    { FILE *fptr;char tenfile[67];char ch;clrscr();printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"w"))==NULL) // m file mi ghi{ printf("Viec tao file co loi\n");

    exit(0);}while ((ch=getche()) !='\r')putc(ch,fptr);

    fclose(fptr);}

    V d 2: In ni dung t p tin ra mn h nh

    #include

    #include #include void main(){ FILE *fptr;char tenfile[67];char ch;clrscr();printf("Cho biet ten file :");gets(tenfile);

    if ((fptr=fopen(tenfile,"r"))==NULL)

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    59/134

    K thut lp tr nh 59

    { printf("Viec mo file co loi\n");exit(0);

    }

    while ((ch=getc(fptr)) !=EOF)printf("%c",ch);fclose(fptr);

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    60/134

    K thut lp tr nh 60

    V d 3: Ch-ng tr nh m s t trong file

    #include

    #include #include void main(){ FILE *fptr;char tenfile[67];int ch;int dem=0, tu=0;clrscr();printf("Cho biet ten file :");

    gets(tenfile);if ((fptr=fopen(tenfile,"r"))==NULL) // m file c{ printf("Viec mo file co loi\n");exit(0);

    }while ((ch=getc(fptr)) !=EOF){ if ((ch>='a' && ch ='A' && ch

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    61/134

    K thut lp tr nh 61

    #include #include #include

    #include void main(){ FILE *fptr;char tenfile[67];char chuoi[80];clrscr();printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"w"))==NULL) // t o file mi

    { printf("Viec tao file co loi\n");exit(0);}while (strlen(gets(chuoi)) > 0) // h m strlen() trong { fputs(chuoi,fptr);fputs("\n",fptr);

    }fclose(fptr);

    }

    V d 2: c c c chui k t t tp tin, v in n tr n m n h nh.#include #include #include void main(){ FILE *fptr;char tenfile[67];char chuoi[81];clrscr();

    printf("Cho biet ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"r"))==NULL){ printf("Viec tao file co loi\n");exit(0);

    }while (fgets(chuoi,80,fptr)!= NULL)

    printf("%s",chuoi);fclose(fptr); getch();

    }

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    62/134

    K thut lp tr nh 62

    V.1.6. Xa file: L nh remove xo file -c ch nh qua

    C php: remove (tn file)

    Hm remove tr v 0 : xa th nh cngtr v -1 : c li khi xa file, v lc ny bin errno c 1 trong

    2 gi tr sau:ENOENT : khng t m th y file mun xaEACCES : khng cho php xa file m b n ch nh

    L-u : File nn ng tr-c khi xa.

    V d: Xa file do ta ch nh.

    #include

    void main(){ char filename[80];/* prompt for file name to delete */printf("File muon xoa: ");gets(filename);

    /* delete the file */if (remove(filename) == 0)

    printf("Removed %s.\n",filename);else

    perror("remove"); // in thng b o li m hm remove g y ra}

    V.2.File nh phn (file c cu trc)

    File nh phn l file dng l-u tr c c c u trc d-i dng struct ho cunion

    V.2.1. Khai bo:

    FILE * fptr;

    V.2.2. M file:fptr = fopen (tnfile, ki u);

    . rb ( b: binary): m ch c

    . wb : ghi. N u file c th xa tr-c khi m.

    . ab : ni thm; m ghi th m vo cui file, nu file ch-a cth t o mi

    . rb+ : m file c cp nht (c/ghi)

    . wb+ : t o file mi cho php c/ghi

    . ab+ : m ni thm v cui file, cho php c/ghi

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    63/134

    K thut lp tr nh 63

    V.2.3. ng file:

    fclose (fptr)

    V.2.4. c/ghi file: H m fread : c s m u tin(c u trc) trong file fptrvo .

    fread (& bi n cu trc, sizeof (bin cu trc) , s cu trc, fptr);

    Hm fread tr v s c u trc c -c

    H m fwrite ghi d liu trong vo file fptr.

    fwrite (&bi n cu trc, sizeof (bin cu trc) , s cu trc, fptr);

    Hm fwrite tr v s c u trc ghi -c l n file

    Ch :

    - ki m tra vi c c file ta ki m tra s c u trc -c c. Nu s c u trctr v bng 0 m ta cn c l 1 c u trc th i u chng t h t file.

    * Ghi mt mng cu trc ln file

    fwrite(tnmng, sizeof (tnmng), 1, fptr);

    for (i= 0; i< n; i++)fwrite (&tnm ng[i], sizeof (t nmng[i] , 1, fptr);

    V d 1: Ch-ng tr nh ghi l n file nh phn

    #include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;

    } hv;FILE *fptr;

    char tenfile[67];char tuoi[3];printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"wb")) == NULL) // m file nh ph n ghi{ printf ("Khong the tao file\n"); exit(0);}do

    { printf("Nhap ho ten hoc vien :");

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    64/134

    K thut lp tr nh 64

    gets(hv.hoten);if (strlen(hv.hoten) !=0){ printf("Nhap tuoi :");

    gets(tuoi);hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyenfwrite(&hv, sizeof(hv), 1, fptr) ; // ghi noi dung 1 mau tin trong bien hv

    // vao file fptr}

    }while (strlen(hv.hoten)!=0);

    fclose (fptr);}

    V d 2: Ghi d liu m ng vo file nh ph n#include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;

    } hv;struct hocvien table[3];FILE *fptr;char tenfile[67];char tuoi[3];int i=0;printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"wb")) == NULL){ printf ("Khong the tao file\n"); exit(0);}do{ printf("Nhap ho ten hoc vien :");gets(hv.hoten);printf("Nhap tuoi :");gets(tuoi);hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyen

    table[i++]=hv;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    65/134

    K thut lp tr nh 65

    }while (i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    66/134

    K thut lp tr nh 66

    * Con tr file: Mi tp tin u c con tr file sau khi -c m. Con tr filel con tr ch n tng byte trn file. Khi c hay ghi d li u tr n t p tin, ta lm dch chuyn con tr file mt s byte, y ch nh l s byte m ki u d li u chi m. Khi ng ri m t p tin, con tr file lun u t p tin ; ngo i tr tr-nghp ta m b ng ty chn 'a' th con tr file s cui t p tin ghi thm d li uvo cui tp tin. H m fseek cho php ta di chuyn con tr file n v tr mongmun.

    C php:

    int fseek (FILE * fptr, long nbytes, ki u)

    + nbytes : s bytes t nh t v tr ki u cho n v tr cn ti

    + kiu l s nguyn :

    ki u = 0 (t nh t u t p tin)ki u = 1 (t nh t v tr hi n t i)

    ki u = 2 (t nh t cui tp tin)

    Nu fseek tr v 0 ngh a l n di chuy n ti v tr .

    L-u : s th t tr n t p tin t nh t 0.

    V d: Vi t ch-ng tr nh truy xu t ng u nhi n mt mu tin theo s th tca n trong file nh ph n

    #include #include #include void main(){ struct hocvien{ char hoten[30];int tuoi;

    } hv;FILE *fptr;char tenfile[67];int stt, sobytes;

    printf("Nhap ten file :");gets(tenfile);if ((fptr=fopen(tenfile,"rb")) == NULL){ printf ("Khong the mo file\n"); exit(0);}

    clrscr();

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    67/134

    K thut lp tr nh 67

    printf("Cho biet so thu tu mau tin can di chuyen den :");scanf("%d",&stt);sobytes = stt * sizeof(hv);

    if (fseek(fptr,sobytes,0)!=0){ printf ("Khong the di chuyen con tro file toi vi tri ban chi dinh duoc");exit(0);

    }fread(&hv,sizeof(hv),1,fptr) ;printf("\n%-20s",hv.hoten);printf("%3d",hv.tuoi);fclose (fptr);getch();

    }V.3.Pht hi n li khi truy xut tp tin

    Ph n ln nhng h m xu t, nh p t p tin chun khng thng bo r ni dungca li. Chng h n nh-:

    - putc () s tr v EOF khi c li hoc cui t p tin

    - fgets () s tr v l NULL khi c h t file ho c khi c l i

    Do , pht hi n li khi truy xu t tp tin, ta dng macro ferror (FILE *fptr)

    int ferror (file * ptr)Macro ferror tr v mt tr khc 0 n u ph t hi n ra li tr n file fptr.

    * xu t cu thng b o li ta dng hm perror ()

    void perror (const char * str)

    vi str : chui k t cha c u thng bo

    * Hai h m ny th-ng -c s dng ngay sau khi s dng cc h m c /ghi file

    V d: fwrite (&table, sizeof (table), 1, fptr);if (ferror (fptr) != 0)

    { perror (Loi ghi du lieu);exit (0);

    }V d :#include void main(){

    FILE *fp;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    68/134

    K thut lp tr nh 68

    fp = fopen("perror.dat", "r");if (!fp)

    perror("Khng th m file c");

    }Khi chy ch-ng tr nh ny, nu tr n d a ch-a c tp tin perror.dat th s hi nthng bo li: Khng th m file c: No such file or directory.

    Bi tp

    1. To tp tin di n t ch.h

    #define Pi 3.14

    #define dthv (x) x*x

    #define dtht (x) (Pi*x*x)

    2. Vi t ch-ng tr nh t nh di n t ch da v o file dientich.h trn

    3. Vi t hm qui t nh t ch P(n) = 1 * 2 * 3* ....* n , n>0

    4. Vi t hm qui t nh hm m xn, vi n nguyn.

    5. Vi t h m qui t nh ph n t th n ca h m Fibonacci.

    6. Vi t h m qui gi i quy t b i to n Th p H ni.C 3 ct A, B, C. Ct A hi n ang c n d a k ch th-c khc nhau, d a nh

    tr n d a ln d-i. H y di n d a t ct A sang ct C (xem ct B l ct trunggian) vi iu kin mi l n ch -c di 1 d a v d a t tr n bao gi cngnh hn d a t d-i.

    7. Vi t ch-ng tr nh m ha v gi i m mt file vn bn sao cho nu ta m ha ri th ch-ng tr nh khng m ha na, v nu file ch-a m ha thkhng -c gi i m .

    8. Cho bi t trong mt file v n bn do ta nh p v o c bao nhi u k t, bao nhiut, v bao nhi u dng; bi t rng c c t c ch nhau kho ng tr ng, d u tab, d uchm.

    9. Vi t ch-ng tr nh t o mt menu thc hi n cc chc n ng sau trn file v nbn:

    - To file mi- c file- Xa file- Ghi ni ui file- Copy file- Di chuyn file t th- mc n y sang th- mc khc

    - T m mt t xut hi n bao nhiu ln trong file (khng phn bit ch in, ch

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    69/134

    K thut lp tr nh 69

    th-ng)- Thay th t n y b ng t khc

    10. T o menu thc hi n cc cng vi c sau:

    - Nh p danh s ch c ki u hc vin vo mt file tn 'HOSO.TXT', mi hcvin c cc thng tin sau: maso (int), hoten (chui ti a 30 k t), phi(NAM/NU), tui (int).

    - Li t k danh s ch hc vi n ra m n h nh theo d ng sau:

    M s H v tn Ph i Tui

    - Truy xu t ng u nhin theo th t m u tin

    - T m kim mt ng-i trong file theo m s

    - C p nh t sa i c c m u tin theo m s (Nh p m s, sau hiu ch nh

    l i hoten, phai, v tui).- Xa mt ng-i trong file theo m s.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    70/134

    K thut lp tr nh 70

    CH-NG 3 CC THUT TON TRN CU TRC D LIU MNG

    I. Mng khng sp xp v thut ton tm kim trnmng ch-a c th t

    I.1.Mt s khi nim v mng:

    I.1.1.nh ngh a:

    Mng l 1 d y c c phn t c cng kiu d li u -c sp xp li n tipnhau trong b nh

    0100

    01

    021

    int0104 2 Mng n ph n t

    n-1

    B nh

    !!!!Khai bo:

    C php: Khai b o mng 1 chiu

    Ki u_DL Tnm ng [k ch th-

    c]; Kiu_DL : l 1 trong c c kiu d li u c bn, l ki u ca phn t

    ca m ng

    Tnm ng: l tn ca m ng -c t 1 cch hp l

    K ch th-c: l 1 hng nguy n cho bi t s ph n t ti a ca m ng

    V d 1: Khai bo 1 mng s nguy n

    int n ;int M[n] ; SAI

    int M[10] ; ng v k ch th-c m ng ph i l hng khng ph i lbin

    #define max 100int M[max] ;

    V d 2: Khai bo 1 danh sch h t n hc vin ca 1 lp hc

    char dshv[50][30]; // dshv c th cha ti a h t n 50 hc vin,// chiu d i h tn mi hc vi n ti a l 30 k t

    C php: Khai b o m ng 2 chi u

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    71/134

    K thut lp tr nh 71

    Ki u_DL Tnm ng [k ch th-c 1][k ch th-c 2]

    Ch : Mt m ng trong C, cc ph n t -c nh s t 0 ti n-1V d: Vi M[10]

    th th nh ph n th1 l M[0]thnh ph n cui cng M[9]

    * C khng b t b , khng ki m tra xem bin m c v-t ra khi gii h ncho php ca mng ch-a. Do , chng ta ph i ki m tra bi n m trong ch-ngtr nh (ph i nh hn n)

    I.1.2. Khi ng tr cho mng:

    Ta khi ng -c tr cho mng trong 2 tr-ng hp sau:

    Mng -c khai b o l bi n ngo i (main) ngh a l bi n ton cc

    Mng -c khai b o cc bV d 1 : int M[3] = {10,11,12}

    main(){}

    V d 2:main(){ static int M[ ]={10,22,30};

    ............}

    Ta c th gn 1 h ng cho c mng nh- sau:memset (M,0,sizeof(int) *3) ; // g n 0 cho m ng M vi M c 3 phn t

    T kha static dng khai b o 1 bi n cc b th-ng trc cho php duytr gi tr ring ca n nhng ln gi h m sau ny.

    Khi t o m ng 2 chiu:

    int M[2][3]= {{1,2,3},

    {0,1,0}};I.1.3.Truy xut thnh phn ca mng: M[ch s]

    Truy xut th nh phn th 2 ca m ng 1 chi u: M[1] Truy xu t th nh phn th i ca mng 1 chiu: M[i-1] Truy xu t th nh ph n dng 2, ct 3 ca mng 2 chi u M[1][2]

    I.1.4.c (nhp) d li u cho mng:

    - nh p d li u cho m ng ta ph i nhp d li u cho tng th nh ph n camng.

    V d 1:

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    72/134

    K thut lp tr nh 72

    int n,i;float M[10];printf("\nCho biet so phan tu cua mang:")

    scanf (%d,&n);for ( i=0; i< n; i++){ printf(a[%d]= ,i+1);

    scanf (%f,&M[i]);}

    V d 2: Nh p v o m ng 2 chi u.int m, n, i, j;float M[10] [10];printf("So dong ="); scanf("%d",&n);

    printf("So cot ="); scanf("%d",&m);for(i= 0; i< n; i++)for(j= 0; j

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    73/134

    K thut lp tr nh 73

    { char maso[6];char hoten[30];

    };

    typedef struct danhsach_sv // nh ngh a kiu danhsach_sv{ int tssv;sinhvien sv[MAX_SOSV];

    } ;

    void Nhap_ds (struct danhsach_sv *psv){ char sosv[4];printf("So sinh vien muon nhap :");gets(sosv);psv->tssv=atoi(sosv);for (int i=0; itssv; i++){ printf("Ma so :");gets(psv->sv[i].maso);printf("Ho ten :");gets(psv->sv[i].hoten);

    }

    }

    void Lietke_ds (struct danhsach_sv *psv){ int i=0;

    clrscr();printf (" Ma so Ho & ten \n");while (i < psv->tssv){ printf ("%8s %-s\n", psv->sv[i].maso,psv->sv[i].hoten);i++;

    }getch();

    } /* Hm Timkiem t m maso trong danhsach *psv */int Timkiem(danhsach_sv *psv, char maso[]){ int i=0;while ((itssv) && (strcmp(psv->sv[i].maso, maso)!=0))i++;

    return (i==psv->tssv ? -1 : i) ;

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    74/134

    K thut lp tr nh 74

    }void main()

    { struct danhsach_sv ds;

    char maso[6];int vitri;

    Nhap_ds(&ds); // Gi h m Nhap_ds vi tham s l ds

    Lietke_ds(&ds);

    printf("Ma so sinh vien ban can tim :");

    gets(maso);

    vitri = Timkiem(&ds, maso);

    if (vitri !=-1)

    printf("Ho ten cua sinh vien la %s",ds.sv[vitri].hoten);else printf(" Khong co sinh vien voi ma ban nhap vao");

    getch();

    }

    II. Cc thut ton sp xp:

    Trong thc t cuc sng cng nh- trong l nh vc l p tr nh, vic qun l d li uth-ng i hi s t m kim c c d li u c n thi t; thun tin cho vic t mki m, d liu th-ng -c s p x p theo mt th t n o .

    C r t nhi u ph-ng php s p th t, trong b i gi ng n y ta ch kh o s t haiph-ng php sp xp l Bubble_Sort v Quick_Sort.

    thun tin ta gi s m ng l dy s c ti a 100 s, v cc thu t ton d-i y dng s p x p dy s theo th t t ng d n.

    II.1. Sp x p theo ph-ng php Bubble_Sort(ph-ng php ni bt)

    - Ni dung : Ta cho i duy t dy a[0], .. ,a[n-1]; n u a[i-1] ln hn a[i] th taho n i (a[i-1],a[i]). Lp l i qu tr nh duy t dy ny cho n khi khng c x y

    ra vi c i ch ca hai ph n t.V d: Ta s p th t d y s sau : 26 33 35 29 19 12 32

    B-c 0 1 2 3 4 5 6

    26 12 12 12 12 12 1233 26 19 19 19 19 1935 33 26 26 26 26 2629 35 33 29 29 29 291

    9 29 35 33 32 32 32

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    75/134

    K thut lp tr nh 75

    12 19 29 35 33 33 3332 32 32 32 35 35 35

    - Ch-ng tr nh:

    #include #include int mang[100]; // bi n to n ccint size ;void Bubble_Sort(int A[100], int n){ int i,j,temp;for (i=1; i=i; j--)

    if (A[j-1] > A[j]){ temp = A[j-1];A[j-1] = A[j];A[j] = temp;

    }}int Nhap_day_so (int A[]){ int i,n;printf("\nSo phan tu cua mang :"); scanf("%d",&n);for (i=0; i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    76/134

    K thut lp tr nh 76

    Bubble_Sort(mang,size);Liet_ke(mang,size);

    }

    Ta nhn th y ph-ng ph p n y c th -c ci ti n d d ng. N u lnduy t dy n o m khng c c s i ch gia hai ph n t th dy c tht v gii thut k t thc. Trong tr-ng hp ny, ta dng mt c hi u flag ghinhn i u n y, v gi i thut Bubble Sort -c c i tin nh- sau:

    #define FALSE 0#define TRUE 1

    void Bubble_Sort_Ad(int A[], int n){ int i,temp;

    unsigned char flag=TRUE;while (flag){ flag = FALSE ;for (i=0; i A[i+1]){ temp = A[i];

    A[i] = A[i+1];A[i+1] = temp;

    flag=TRUE;}

    }}

    II.2. Sp x p theo ph-ng php Quick_Sort

    II.2.1.Ni dung: Chn mt ph n t b t k trong danh s ch lm i m chtx, so snh v i ch nhng ph n t trong danh sch ny to ra 3 ph n: ph nc gi tr nh hn x, ph n c gi tr b ng x, v ph n c gi tr ln hn x. L i tip

    tc chia 2 ph n c gi tr nh hn v ln hn x theo nguy n t c nh-

    tr n; qutr nh chia ph n s kt thc khi mi phn ch cn l i mt phn t, lc n y ta cmt danh s ch c th t .

    V d: Xt d y 26 33 35 29 19 12 32

    ' Ln chia phn th nh t : Chn phn t cht c kha l 29, t l x

    26 33 35 29 19 12 32

    i% $ j

    Dng hai bi n ch s i v j duy t t hai u danh s ch n x. Nu i gp

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    77/134

    K thut lp tr nh 77

    ph n t ln hn hay b ng x s dng l i, j g p phn t nh hn hay b ng x sdng l i, ri i ch hai ph n t n y; sau ti p tc duy t cho n khi i>j thngng l i.

    Lc n y d y s c 3 phn kh c nhau nh- h nh v sau :26 33 35 29 19 12 32

    i j26 12 35 29 19 33 32

    i j26 12 19 29 35 33 32

    ij26 12 19 29 35 33 32

    j i' L n chia phn th hai cho dy con 26 12 19, chn cht x=12

    26 12 19 % 12 26 19i j j i

    Kt thc ta s c hai ph n : 12 ; 26 19

    ' L n chia ph n th 3 cho d y con 26 19, chn cht x=26

    26 19 % 19 26 Kt thc qu tr nh chia nh d y con 26 12 19i j j i

    - Ln chia ph n th 4 cho d y con 35 33 32, chn cht x= 33

    35 33 32 % 32 33 35 % 32 33 35i j ij j i

    K t thc ta s c ba ph n : 32 ; 33 ; 35

    n y qu tr nh chia ph n k t thc v t t c cc phn ch c mt ph n t,lc ny ta s c mt danh sch c th t l :

    12 19 26 29 32 33 35

    II.2.2. Gii thut:

    a. Gii thut khng quy:

    - Ta t o mt Stack , mi phn t ca Stack c 2 th nh phn l q, r cha chs u v ch s cui ca dy c n s p. Ban u, Stack[0].q = 0 v Stack[0].r =n-1

    - Tin h nh ph n hoch dy s gm c c s b t u t ch s q n ch s r

    - Sau mi l n chia ph n, ta ki m tra xem ph n c gi tr nh hn cht vphn c gi tr ln hn cht n u c t 2 phn t tr ln th -a v o Stack. Sau

    mi ln ph n hoch, ta l i l y d y s mi t Stack ra ph n ho ch ti p.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    78/134

    K thut lp tr nh 78

    - Qu tr nh c nh- th cho ti khi Stack rng th k t thc.

    * Ch-ng tr nh:

    #include #include #include #include int mang[100];int size ;void Quick_Sort(int A[100], int n){ struct Element_Stack // ki u ph n t trong Stack{

    int q, r;} ;Element_Stack Stack[50]; // Stack c ti a 50 ph n tint sp=0; // con tr Stack, khi t o sp=0int i,j,x,q,r,temp;Stack[0].q =0 ; // ch s u ca mng cn spStack[0].r =n-1; // ch s cui ca mng cn sp

    do{ // L y mt ph n ho ch ra t Stackq = Stack[sp].q ; r =Stack[sp].r ;sp--; // Xa 1 phn t khi Stackdo{ // Ph n on dy con a[q] ,..., a[r]i = q; j =r;x = A[(q+r) / 2] ; // L y phn t gia ca d y c n s p th t l m chtdo

    { while (A[i] < x) i++; //T m phn t u tin c tr ln hn hay bng xwhile (A[j] > x) j--; //T m phn t u tin c tr nh hn hay b ng xif (i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    79/134

    K thut lp tr nh 79

    if (i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    80/134

    K thut lp tr nh 80

    gi i thu t khng qui, nh-ng ta khng ki m sot Stack m cho qu tr nh gi qui t t o ra Stack.

    * Ch-ng tr nh:

    void Sort(int A[], int q,int r){ int temp;int i=q;int j=r;int x = A[(q+r) / 2] ; // L y phn t gia ca d y c n s p th t l m chtdo{ // Ph n on dy con a[q] ,..., a[r]while (A[i] < x) i++; //T m phn t u ti n c tr ln hn hay bng x

    while (A[j] > x) j--; //T m phn t u ti n c tr nh hn hay b ng xif (i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    81/134

    K thut lp tr nh 81

    - Gi i thut:

    int Search(int A[], int n, int x)

    { int i=0;while (i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    82/134

    K thut lp tr nh 82

    int k=0;int m=n-1;int j;

    while (kA[j]) k=j+1; // Ph m vi t m mi l (j+1, m)

    else m=j-1; // Ph m vi t m mi l (k, j-1)}return (found ? j : -1) ;

    }

    III.3.Php t m kim nh phn qui:

    - Ni dung: t-ng t nh- trn

    ! B-c 1: Phm vi t m kim ban u l to n b danh sch (k=0%m=n-1).

    ! B-c 2: L y phn t ch nh gia ca phm vi t m kim (gi l y) so snhvi x.

    Nu x=y th ta t m th y, tr v ch s. Gi i thut k t thcNu x < y th ph m vi t m ki m mi l cc phn t n m ph a tr-c

    ca y, n n ta gi qui vi phm vi mi l (k,j-1

    )Nu x > y th ph m vi t m kim mi l cc ph n t n m ph a sau ca y,nn ta gi qui vi phm vi mi l (j+1,m )

    ! i u ki n dng: x=y hoc k > m.

    - Gi i thut:

    int Binary_Search2(int A[], int k,int m, int x){ int j=(k+m) /2;if (k>m) return -1 ;

    else if (A[j]==x) return j ;else Binary_Search2(A, (A[j] x ?j-1:m),x);}

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    83/134

    K thut lp tr nh 83

    Bi tp:

    1. Cho mt dy n s thc A :

    a) T m phn t nh nh t ca d

    y s Ab) T m phn t ln nht ca d y s A

    c) T nh gi tr trung b nh ca dy s A.

    2. Hi n ang l-u hnh c c t giy bc 50000, 20000, 10000, 5000, 2000,1000, 500, 200,100. N u c x ng, hi r ng nn chn cc t giy b c n o s l-ng cc t gi y b c l t nh t.

    3. Vi t ch-ng tr nh nh p mt ma trn s nguy n c k ch th-c M x N. In ra:

    - Tng cc phn t ca ma trn

    - S cc phn t d-ng, phn t m, ph n t 0 ca ma trn- Phn t ln nh t, nh nh t ca ma trn

    - C c phn t tr n -ng cho ch nh ca ma tr n (vi M = N )

    - Tng cc phn t tr n -ng cho ch nh ca ma tr n (vi M = N )

    4. Cho 2 ma trn vung A(n,n) v B (n,n) :

    - T nh ma tr n tng C = A+ B,

    bi t C[i,j] = A[i,j] + B[i,j] , i,j [1,m]- T nh ma tr n t ch D = A * B,

    bi t D [i,j] = A i k B k jk

    n[ , ]* [ , ]

    1; i, j = 1..n

    5. T o mt menu thc hi n cc cng vi c sau:

    a. Nh p danh sch c ki u hc vin vo mt m ng, mi hc vi n c ccthng tin sau: maso (int), hoten (chui ti a 30 k t), phi(NAM/NU), i m(float), h ng (unsigned char). Qu tr nh nhp s dng l i khi m s nh p v ol 0.

    b. Li t k danh sch hc vin ra mn h nh theo d ng sau:M s H v tn Ph i im Hng

    c. T m ki m mt hc vi n trong danh sch theo m s, v in ra cc thng tincn l i ca hc vin .

    d. Sp xp danh sch hc vin theo im tng dn.

    e. Xp hng danh sch hc vin theo qui tc cng im th cng hng, hngca hc vi n sau bng hng ca nhm hc vi n tr-c cng s ng-i ca nhmhc vi n tr-c cng im.

    f. Gi s danh sch hc vi n c th t tng dn theo im; Nh p th m 1hc vin sao cho sau khi nhp th danh s ch v n cn c th t.

    g. Cp nht sa i cc mu tin theo m s (Nh p m s, sau hiu ch nh

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    84/134

    K thut lp tr nh 84

    l i hoten, phai, i m).

    h. Loi b 1 hc vin ra khi danh s ch da v o m s.

    6. a) Vit ch-ng tr nh to ngu nhi n mt dy s 20000 s nguy n c gi tr t

    0 n 9999.b) m s ln so s nh ca 2 gi i thu t t m kim tun t (tr n dy s ch-a c

    th t) v t m kim nh ph n (tr n d y s -c sp th t).

    c) Trong tr-ng hp d y s trn l 200000 s nguy n ph n bi t kh c nhautrong mi n gi tr [1..300000] th ta ti -u gii thu t s p x p v mt khnggian v thi gian nh- th n o? Cho bi t thi gian thc thi ca gi i thutQuick Sort v gi i thu t b n c i t.

    7. Cho bi t thi gian thc thi ca 2 gi i thu t Bubble Sort v Quick Sort tr n dys c s ph n t kh ln.

    8. Gi s ta c 1 dy s thc A tng dn. Vi t gi i thu t thm 1 s thc x vod y A sao cho sau khi th m x th d y v n t ng dn ?

    9. Vi t h m xa t t c cc phn t c tr b ng x trong d y s A.

    10. Vit ch-ng tr nh t nh i m ca mt lp:

    - Nhp c c thng tin sau cho mi hc vin : hoten, namsinh, trung b nhHK1, trung b nh HK2

    - In ra danh sch cc hc vi n ca lp theo th t gi m d n ca TB to nn m

    TB to n nm = (TB HK1 + TB HK2)/2theo m u sau:

    DANH SCH iM LP ......

    STT H & T n TB HK1 TB HK2 TB tonnm

    Hng

    1

    2

    3

    L-u :- Cc hc vi n cng TB th cng h ng

    - In 17 hc vin trn mt trang mn h nh

    11. Cho 2 d y s A c n phn t v B c m phn t vi th t t ng dn. Hy trn2 d y s tr n thnh 1 d y mi C sao cho sau khi trn th C cng t ng d n.

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    85/134

    K thut lp tr nh 85

    CHNG 4 CON TR (POINTER)

    I. NH NGHACon tr l mt kiu d li u dng cha a ch . Bin con tr l mt bincha a ch ca mt thc th no , thc th l bi n hoc l hm.

    Con tr th-ng -c dng :

    - Tr v nhi u tr t h m qua c ch truyn theo tham s theo a ch tronghm (tham s h nh thc bin).

    - T o c c c u trc d li u phc t p nh-danh sch li n k t v cy nh ph n.

    - Truy n m ng v chui gia c c h m kh thun li.

    I.1.Khai bo: Khai bo bin pi l con tr tr n mt s nguy n.int *pi;

    Lc n y, pi chi m 2 bytes cha a ch ca s nguy n m n ang ch n, ng thi tr nh bi n dch ca C cng bi t pi ang ch n mt s nguy n(do khai b o). -a mt gi tr nguyn v o vng nh m pi ang tr n, tadng l nh: *pi = 1;

    V d:void main()

    { int x=4, y=1

    0;int *px, *py ; // px, py l c c bi n con trpx = &x ; // -a a ch ca x,y vo px v pypy = &y;*px = *px + *py; // tng gi tr ca vng nh m px ang tr t i

    // th m y , t-ng -ng vi x = x+y}

    Minh ha ch-ng tr nh tr n trong b nh:

    Bi n int x=4, y=10;

    int *px, *py;

    px=&x;

    py=&y;

    *px = *px + *py;

    x 950 4 4 14951

    y 952 10 10 10953

    px 950 950

    py 952 952

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    86/134

    K thut lp tr nh 86

    H nh 7.1. C ch truy xu t gi tr qua bi n con tr .

    Tng qu t: Ki u *bin;

    I.2. Truy n a ch cho hm: Trong 1 s tr-ng hp ta mun gi a ch ca1 bi n x cho h m. Nh vo c ch truy n theo a ch ny m hm c th tr vnhiu gi tr cho ch-ng tr nh gi.

    V d: Hm hon i gi tr ca 2 bi n x, yvoid hoandoi (int *a, int *b){ int tam;

    tam = *a;*a = *b;*b = tam;

    }void main(){ int x,y;

    printf ("x, y = ");scanf ("%d %d", &x, &y);giaohoan(&x, &y); // Truy n a ch ca 2 bin x,y cho h m hoandoi

    }

    II Cc php ton trn bin con tr:

    II.1. Ton t a ch &:

    Nu x l bi n thng th-ng, &x s l a ch ca bin xV d: float x, *pf;

    x = 50;pf = x; // sai v pf l bi n con tr n n ta vi t pf = & x;x = pf; // sai ; ta vi t x = *pf; { l y ni dung ca pf }

    II.2. Ton t ni dung * :

    Nu p l pointer th *p l ni dung ca n.

    V d : int x,y, *p;x = 50;p = &x; // p cha a ch ca vng nh xy = *p; // y= *p = 50 v p cha a ch ca vng nh x

    V d: a =2;p = & a;b = (*p) + + + 3; // b =5, *p = 3, a= 3.

    ( v p tr ti a ch a n n *p t ng th a t ng)

    Tm li: *x l bi n m x gi a ch

    &x l a ch ca x n u x l bi n thng th-ng

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    87/134

    K thut lp tr nh 87

    II.3. Php cng tr bin con tr vi mt s nguyn:

    Nu p l bi n pointer th p+n l a ch ca mt bin mi c ch n n bi ntheo chi u tng, cn p-n th ng-c li.

    Ch :

    - Php cng con tr vi mt s nguy n ch -c p dng tr n mt dy bincng ki u

    - Khng -c cng 2 pointer vi nhau

    - Khng -c nh n, chia, l y d- bi n con tr vi bt k s n o

    V d: Gi s ta c mng nums[]= {10,20,30,40,50}. Vic tham kh o tinums[i] thc ch t l dng dng k hi u con tr, v khi bin dch, tr nh bi n dchs chuy n i k hi u m ng th nh k hiu con tr.

    void main(){ static int nums [] = {10,20,30,40,50};for (int i =0; i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    88/134

    K thut lp tr nh 88

    *p = 97; // num =97n = *p; // n=97c = (char) *p; // c = a

    Ch : a ch ca mt bi n -c xem nh- mt con tr h ng, do nkhng -c php gn, tng hoc gi m.V d: int num, *p, n;

    p = & num;p ++; // ng( & num) ++; // saicon tr h ng

    II.6. Khai bo mt con tr hng v con tr ch n i t-ng hng:

    a. Con tr hng:Kiu * const p = gi tr;

    b. Con tr ch n i t-ng hng:

    Kiu const *p = gi tr h ng;

    ho c Const ki u *p = gi tr h ng;

    V d: char *const p2 = ABCDconst char *p1= ABCDp2 + + ; // sai

    p1 + + ; // ng; *p1= B ; p1 = "BCD"

    III. S t-ng quan gia con tr v mngV d: Ta c mng A nh- sau:

    int A[10] , *p;th A = &A[0]Nu p = A th truy xu t ti phn t th i ca m ng A, ta c c c c ch sau:

    A[i] *(A + i) *( p + i)

    & A[i] (A + i) (p +i )V d: Nh p mng A:int A[10] , *p, i;p = A;for (i = 0; i< 9; i++)

    scanf (%d, p+i );Xu t m ng A:

    for (i = 0; i< 9;i++)printf (%d, *(p+i));

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    89/134

    K thut lp tr nh 89

    V d: Sp x p m ng bng cch tham kh o con tr .

    const n =10 ;int a[n], *p;

    void main(){ int j,temp;clrscr();p=a;printf("\Nhap day so A :\n");for (int i=0; i *(p+j)){ temp = *(p+j);

    *(p+j) = *(p+j-1);*(p+j-1) = temp;

    }

    printf("\n Mang A sau khi sap xep :\n");for ( i=0; i

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    90/134

    K thut lp tr nh 90

    a[i][j] ni dung ca i.jVi p = a th truy xu tti a[i][j] :

    a[i][j] = *(*(p+i) +j)

    & a[i][j] = (*(p+i) +j)V d:N u ta c int a[4][5] ={ {1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7} , {4,5,6,7,8}} ;

    th :- a l a ch ca to n b mng (gi s l 1000)

    - Do a l mng nguy n nn mi ph n t chi m 2 bytes, v mi dng camng s chim 10 bytes.

    - Tr nh bi n dch ca C bi t s ct (do khai bo) n n n s hi u a+1 lem 1000 + 10 bytes, k t qu l 1010 l a ch ca dng th 2 trong a.

    T-ng t, 1020 l l a ch ca dng th 3 trong a.

    a 0 1 2 3 41000 1 2 3 4 51010 2 3 4 5 61020 3 4 5 6 71030 4 5 6 7 8

    Lc n y: a[1] hay a+1 l a ch ca dng th 2 trong m ng 2 chiu a.Ta c : *(a+1) == 1010 // a ch ca ph n t u ti n tr n dng 1

    *(a+1)+3 == 1016 // a ch ca ph n t c ch s 3 tr n dng1*(*(a+1)+3)==5 // ni dung ca phn t a[1][3]

    Tm li: a[i][j] = *(*(a+i)+j)

    Ta cn c mt c ch khc truy xu t ti a[i][j] :

    N u : Kiu a[n0 ] [n1] ... [nm] , *p;p = a;

    th a [i0] [i1]... [im] = *(*(*(p+i0) + i1) + ...im)

    Ch :1. S khc nhau gia con tr v mng:

    - Bin con tr th c th tng, gim hoc g n cn bi n m ng l mt con trhng do khng th tng, gi m hoc g n.

    - Ta c th ly a ch ca con tr nh-ng khng th ly a ch ca m ng vbn thn m ng l a ch .

    - Khi ta khai b o mt m ng th ch-ng tr nh dch s cp ph t mt vng nhcho n.

    V d1

    : Kiu a[50]

    Smith Nguyen Studio.

  • 8/3/2019 Ky Thuat Lap Trinh - Smith.N Studio

    91/134

    K thut lp tr nh 91

    Trong b nh :

    0 1 2 49

    a- Bi n con tr khi -c khai b o th ch -c c p mt nh m ni dung

    ca n ch ng bi t ch n u

    V d 2: a[1] xc nh thnh ph n th 2

    p+1 : ni dung khng xc nh

    phi c p = a p ch ti a

    - N u ta mun to mt m ng b ng con tr th ta ph i xin cp pht mt vngnh b ng h m malloc ()

    V d: int *p;

    p = (int) maloc ( 10* sizeof(int));

    Trong b nh:

    0 1 2 9

    p

    V d: int *p