25
9/6/2011 1 CU TRÚC DLIU VÀ THUT TOÁN DATA STRUCTURE AND ALGORITHMS 1 Chương 1: Ôn tp C/C++ Chương 1: Ôn tp C/C++ Tài liệu học tập Giáo trình: Giáo trình CTDL Khoa KHKTMT ĐHCN TpHCM. C & Data Structures, P. S. Deshpande, O. G. Kakde - CHARLES RIVER MEDIA, INC. Hingham, Massachusetts. Tham khảo: Giáo trình Cấu trúc dữ liệu 1, Trần Hạnh Nhi – Dương Anh Đức, Trường ĐHKHTN – ĐHQG TP.HCM. Phần mềm lập trình: C-Free Borland C++ 2 Chương 1: Ôn tp C/C++ Chương 1: Ôn tp C/C++ Đánh giá kết quả 1. Kiểm tra giữa kỳ: thực hành Điểm Kiểm tra giữa kỳ < 5 không được thi kết thúc môn học lại 2. Kiểm tra cuối kỳ: thực hành Điểm Kiểm tra cuối kỳ < 5 không được thi kết thúc môn học lại 3. Bài tập lớn: làm bài tập trong module Điểm Đề tài < 5 không được thi kết thúc môn học lại 4. Thi kết thúc môn: trắc nghiệm 5. Kiểm tra thường kỳ 3

c1_ontap.pdf

  • Upload
    kal-el

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

  • 9/6/2011

    1

    CU TRC D LIU V THUT TON

    DATA STRUCTURE AND ALGORITHMS

    1

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Ti liu hc tp

    Gio trnh:

    Gio trnh CTDL Khoa KHKTMT HCN TpHCM.

    C & Data Structures, P. S. Deshpande, O. G. Kakde - CHARLES RIVER MEDIA, INC. Hingham, Massachusetts.

    Tham kho:

    Gio trnh Cu trc d liu 1, Trn Hnh Nhi Dng Anh c, Trng HKHTN HQG TP.HCM.

    Phn mm lp trnh:

    C-Free

    Borland C++

    2

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    nh gi kt qu

    1. Kim tra gia k: thc hnh

    im Kim tra gia k < 5 khng c thi kt thc mn

    hc li

    2. Kim tra cui k: thc hnh

    im Kim tra cui k < 5 khng c thi kt thc mn

    hc li

    3. Bi tp ln: lm bi tp trong module

    im ti < 5 khng c thi kt thc mn hc li

    4. Thi kt thc mn: trc nghim

    5. Kim tra thng k

    3

  • 9/6/2011

    2

    (Tham kho ti liu mn Phng Php Lp Trnh)

    Chng 1: n tp C/C++ 28

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    29

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++

    #include stdio.h

    #include conio.h

    void main() /*ham chinh*/

    {

    int a=7;

    printf( %d, a );

    getch();

    }

    Cu trc chng trnh C

    30

    Chng 1: n tp C/C++

  • 9/6/2011

    3

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++

    #include iostream.h

    #include conio.h

    void main() /*ham chinh*/

    {

    int a=7;

    cout

  • 9/6/2011

    4

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    Khai bo bin:

    Khai bo v khi to bin:

    Khai bo hng s:

    34

    Kiu_d_liu tn_bin;

    const Kiu_d_liu tn_bin = gi tr;

    Kiu_d_liu tn_bin = gi tr;

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    35

    Kiu Phm vi biu din Kch thc (byte)

    char -27 27-1 1

    int -215 215-1 2

    long -231231-1 4

    float 3.4E-38 3.4E+38 4

    double 1.7E-308 1.7E+308 6

    35

    Cc kiu d liu c s

    2. Cc c php c bn

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    36

    Php ton Tn

    + cng

    - tr

    * nhn

    / chia

    % chia ly phn d

    ++, -- Php tng, gim 1

    36

    Cc php ton s hc

    2. Cc c php c bn

    Chng 1: n tp C/C++

  • 9/6/2011

    5

    Chng 1: n tp C/C++

    37

    Php ton Tn

    > ln hn

    >= ln hn hoc bng

    < nh hn

  • 9/6/2011

    6

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    Chuyn i kiu:

    Trong php gn: Gi tr ca biu thc v phi c chuyn

    sang kiu ca bin v tri

    V d:

    int a=5/2; //a=?

    float b=5/2; //b=?

    40

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    p kiu:

    C php:

    (Kiu) biu_thc

    V d:

    (float) 23

    (int) x

    float(23)

    x*1.0

    41

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    if

    if else

    switch case

    for

    while

    do while

    42

    Cc ton t iu khin:

    Chng 1: n tp C/C++

  • 9/6/2011

    7

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    if ( bt_iu_kin ) khi_lnh;

    if ( bt_iu_kin )

    khi_lnh_1

    else

    khi_lnh_2

    if ( bt_iu_kin_1 )

    khi_lnh_1

    else if ( bt_iu_kin_2 )

    khi_lnh_2

    else

    khi_lnh_n

    43

    Ton t iu kin

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    switch (biu_thc_nguyn) { case hng_1: cc_cu_lnh_1 [break;]

    case hng_2: cc_cu_lnh_2 [break;]

    ...

    [default:

    cc_cu_lnh] }

    44

    Cu lnh switch

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    for (bt_khi_to; bt_kim_tra; bt_tng)

    khi_lnh

    while ( bt_iu_khin )

    {

    cu_lnh_1; cu_lnh_2;

    }

    do

    {

    khi_lnh

    }while (bt_iu_khin);

    45

    Cc ton t iu khin lp

    2. Cc c php c bn

    Chng 1: n tp C/C++

  • 9/6/2011

    8

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    Cp pht b nh tnh:

    V d: int a,b;

    Cp pht b nh ng:

    B nh cng c th c cp pht ti thi gian chy, gi l

    Cp pht ng (dynamic allocation)

    Dng ton t new cp pht b nh ng

    V d:

    46

    int *P;

    P = new int;

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    47

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    Cp pht b nh ng:

    heap: vng b nh c bit dnh ring cho cc bin ng.

    to mt bin ng mi, h thng cp pht khng gian

    t heap. Nu khng cn b nh, new khng th cp pht

    b nh th n tr v gi tr NULL

    Trong lp trnh, ta nn lun kim tra li ny:

    int *p;

    p = new int;

    if (p == NULL) {

    cout

  • 9/6/2011

    9

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    2. Cc c php c bn

    Hy b nh ng:

    Tr li vng b nh tr bi P, nhng khng sa gi tr ca P

    Dng ton t delete hy b nh ng

    Sau khi thc thi delete, gi tr ca con tr khng xc nh

    V d:

    delete P;

    49

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Bi tp

    Vit chng trnh tnh din tch, chu vi hnh ch nht

    Vit chng trnh tnh din tch, chu vi hnh trn

    50

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    51

  • 9/6/2011

    10

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    3. a ch (Address)

    Mi bin u c 2 thuc tnh: a ch (address) v gi tr (value)

    Trong b nh:

    + Ti a ch 3: gi tr l 45

    + Ti a ch 2: gi tr l Dave

    Ly a ch ca bin: dng &

    int y=90;

    cout

  • 9/6/2011

    11

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Cc php ton s hc trn con tr:

    Php gn

    Php cng, tr mt con tr vi mt s nguyn

    Tng, gim

    V d:

    int x, *p, *q;

    p = &x;

    p = p+2; // tng 2 kch thc b nh int

    q = p;

    55

    4. Con tr (Pointer)

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    4. Con tr (Pointer)

    #include

    #include

    void main ()

    {

    int i;

    int *ia;

    i = 10;

    ia = &i;

    cout

  • 9/6/2011

    12

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    59

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    5. Mng (Array)

    Mng:

    L mt cu trc d liu

    L danh sch cc phn t c cng kiu

    Cho php truy xut ngu nhin n cc phn t ca n

    thng qua ch s mng

    Khai bo:

    V d: int a[100];

    60

    Kiu_d_liu tn_mng[s_phn_t];

    12 2 8 5 1

    [0] [1] [2] [3] [4]

    A

    Chng 1: n tp C/C++

  • 9/6/2011

    13

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    5. Mng (Array)

    a ch ca mi phn t trong mng:

    Mi phn t trong mng c mt a ch trong b nh

    (Each element of the array has a memory address)

    V d:

    void printdetail (int a[])

    {

    for(int i = 0; i

  • 9/6/2011

    14

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    5. Mng (Array)

    64

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    5. Mng (Array)

    65

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    66

  • 9/6/2011

    15

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    6. Mng con tr (Pointer array)

    C th khai bo mng con tr (tng t nh mng s)

    Trong mng con tr, cc phn t mng lu con tr

    67

    void main()

    {

    int *a[5];

    int i1=4, i2=3, i3=2, i4=1, i5=0;

    a[0] = &i1;

    a[1] = &i2;

    a[2] = &i3;

    a[3] = &i4;

    a[4] = &i5;

    printarr(a);

    }

    void printarr(int *a[])

    {

    for(int j=0; j

  • 9/6/2011

    16

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    7. Mng hai chiu (Two-dimensional array)

    Duyt mng hai chiu s dng con tr:

    V d:

    float *pa, a[2][3];

    pa = (float*)a; // neu khong ep kieu thi C se canh bao

    // nhung chuong trinh van chay tot

    Khi pa tr ti a[0][0]

    pa+1 tr ti a[0][1]

    pa+2 tr ti a[0][2]

    pa+3 tr ti a[1][0]

    pa+4 tr ti a[1][1]

    pa+5 tr ti a[1][2]

    70

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Bi tp

    Vit chng trnh cho nhp 1 mng hnh ch nht v tnh din tch, chu vi ca chng

    Vit chng trnh cho nhp 1 mng hnh trn v tnh din tch, chu vi ca chng

    71

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    72

  • 9/6/2011

    17

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    8. Cu trc (Structure)

    c s dng khi cn thao tc trn d liu c nhiu

    thuc tnh

    C php:

    V d:

    struct Ngay { int thang;

    int ngay;

    int nam;

    };

    73

    Chng 1: n tp C/C++

    struct Tn_kiu_cu_trc {

    cc_thnh_phn;

    };

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    8. Cu trc (Structure)

    Khai bo bin kiu cu trc (2 cch):

    V d:

    Ngay n;

    hoc: struct Ngay ng;

    Khi to cho mt cu trc:

    V d: struct Ngay d={10,15,2004};

    struct Ngay a[]={ {10,15,2004}, {10,16,2004}, {10,17,2004}, {10,18,2004}};

    74

    Tn_cu_trc tn_bin;

    struct Tn_cu_trc tn_bin;

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    8. Cu trc (Structure)

    Truy cp thnh phn ca cu trc:

    Dng ton t .: Tn_bin_cu_trc.Tn_thnh _phn

    V d:

    Ngay d;

    d.ngay = 10;

    d.thang = 10;

    d.nam = 1910;

    75

    Chng 1: n tp C/C++

  • 9/6/2011

    18

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    8. Cu trc (Structure)

    V d

    76

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Bi tp

    Vit chng trnh tnh din tch, chu vi hnh ch nht (yu cu khai bo cu trc hnh ch nht)

    Vit chng trnh tnh din tch, chu vi hnh trn (yu cu khai bo cu trc hnh trn)

    77

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    78

  • 9/6/2011

    19

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    9. Con tr cu trc (Structure pointer)

    Ging nh cc kiu d liu khc, ta c th khai bo con

    tr cu trc

    V d

    struct Ngay *p, a[10], *p1, b;

    p = a; p1 = &b;

    Truy nhp thnh phn ca cu trc:

    tn_con_tr->tn_thnh_phn

    hoc :

    (*tn_con_tr).tn_thnh_phn

    79

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    9. Con tr cu trc (Structure pointer)

    80

    Chng 1: n tp C/C++

    #include

    struct student

    {

    char name[30];

    float marks;

    };

    void main ( )

    {

    student *sv;

    char s[30];

    float f;

    cin>>s;

    cin>>f;

    sv->name = s;

    sv->marks = f;

    cout

  • 9/6/2011

    20

    10. Chui (String)

    L mng cc k t (array of char)

    Kt thc bi k t null \0 (ending with null char \0)

    Chui hng c t ng thm \0

    V d: char str[]=Hello;

    82

    10. Chui (String)

    Khai bo chui:

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

    char str[] = Hello;

    char *str = Hello;

    83

    10. Chui (String)

    Hm nhp chui:

    char *gets(char *s);

    Nhn k t cho n khi nhn du Enter

    T ng thm k t \0

    So snh vi cin>>s; //????

    So snh vi cin.getline(s,length)//???

    Hm xut chui:

    int puts(const char *s);

    cout

  • 9/6/2011

    21

    10. Chui (String)

    Mt s hm v chui: (cn #include )

    strcpy(s1, s2)

    strcat(s1, s2)

    strlen(s1)

    strcmp(s1, s2) -> (-1,0,1)

    strchr(s1, ch)

    strstr(s1, s2)

    85

    10. Chui (String)

    V d: char s1[80], s2[80];

    cout

  • 9/6/2011

    22

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    11. Tp tin trong C(File)

    Cn #include

    To file mi:

    FILE *fp;

    fp=fopen(d:\\test.txt", "wb"))

    Ghi ni dung vo file:

    fwrite(&Address, sizeof(TYPE), count, fp);

    ng file (Lu file):

    fclose(fp);

    88

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    11. Tp tin trong C (File)

    c file:

    FILE *fp;

    fp = fopen(d:\\test.txt", rb"))

    while (fwrite(&Address, sizeof(TYPE), count, fp))

    {

    // x l ni dung c c

    }

    fclose(fp);

    89

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    11. Lung trong C++

    C++ cung cp cc lp sau thi hnh cc tc v vo ra trn file dng k t:

    ofstream: Stream class to write on files

    ifstream: Stream class to read from files

    fstream: Stream class to both read and write from/to files.

    90

  • 9/6/2011

    23

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Thao tc vi text-file trong C++

    91

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Thao tc vi Binary file trong C++

    92

    write ( memory_block, size );

    read ( memory_block, size );

    Chng 1: n tp C/C++

    1. Cu trc chng trnh C/C++ 2. Cc c php c bn 3. a ch (Address) 4. Con tr (Pointer) 5. Mng (Array) 6. Mng con tr (Pointer array) 7. Mng hai chiu (Two-dimensional array) 8. Cu trc (Structure) 9. Con tr cu trc (Structure pointer) 10. Chui (String) 11. Tp tin (File) 12. Hm (Function)

    93

  • 9/6/2011

    24

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    12. Hm (Function)

    Cc c php nh ngha hm:

    94

    Kiu_d_liu Tn_Hm (kiu_d_liu tn_bin,) {

    // cc khai bo bin, // cc lnh return value;

    }

    void Tn_Hm (kiu_d_liu tn_bin,) {

    // cc khai bo bin, // cc lnh

    }

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    Cch gi hm:

    1. Chun b cc tham s gi cho hm nu c:

    Khai bo bin tng ng v cho nhp d liu cho bin (nu cn)

    2. Hm khng tr v gi tr (void):

    Tn_Hm (tham_s_1, tham_s_2,);

    2. Hm c tr v gi tr:

    Khai bo mt bin c kiu trng vi kiu tr v ca hm

    Vit lnh gn: bin = Tn_Hm (tham_s_1, tham_s_2,);

    S dng bin xut, tnh ton, gi hm khc

    95

    12. Hm (Function)

    Chng 1: n tp C/C++

    Chng 1: n tp C/C++ Chng 1: n tp C/C++

    12. Hm (Function)

    Nguyn mu hm (Prototype)

    Nguyn mu hm c s dng khai bo mt hm nh

    n c th c s dng trong chng trnh trc khi

    hm c nh ngha thc s

    Cng dng:

    Gip chng trnh mch lc

    Gip t chc chng trnh

    Cho php s dng hm trc khi nh ngha

    96

    Chng 1: n tp C/C++

  • 9/6/2011

    25

    #include

    int compute_sum (int n); /* Function Prototype*/

    void main() {

    int lim = 8, sum;

    cout