50
CHƯƠNG 1. CÁC ĐẶC ĐIỂM MỚI CỦA C++ ThS. Trần Anh Dũng

Chuong 01 - Cac dac diem moi cua C++

Embed Size (px)

DESCRIPTION

Các đặc điểm mới của C++

Citation preview

  • CHNG 1. CC C IM MI CA C++

    ThS. Trn Anh Dng

  • Ni dung

    14/09/2014 Lp trnh hng i tng 2

    Mt s lu 1

    Ngn ng C++ 2

    Tham s mc nhin 3

    Ti nh ngha hm 4

    Truyn tham s 5 5

    Hm ni tuyn 6

  • Phong cch lp trnh

    Nhng lu v phong cch lp trnh:

    t tn (bin, hm,)

    Tab

    Khai bo prototype

    {}

    14/09/2014 Lp trnh hng i tng 3

  • Bi tp C

    Nhp bn s nguyn v xut cc gi tr va

    nhp

    C bao nhiu cch gii quyt?

    14/09/2014 Lp trnh hng i tng 4

  • Bi tp C Gii

    1. Dng 4 bin cch di nht, c bn nht

    2. Dng mng khai bo bin gn hn, 1

    ln thay cho nhiu ln

    3. Dng mng v vng lp do while vit

    code nhp gn hn, vit 1 ln thay cho

    nhiu ln

    4. Dng mng v vng lp for vit code

    gn hn, for vit gn hn vng while 14/09/2014 Lp trnh hng i tng 5

  • Bi tp C Gii

    5. Dng mng, vng lp for gp vit code

    gn hn, nhng khng tch ring c 2

    phn nhp xut

    6. Dng hm tch ring phn nhp xut

    code c th ti s dng nhiu ln

    7. Dng file nhp xut t file thay cho vic

    nhp bng bn phm v xut ra mn hnh

    14/09/2014 Lp trnh hng i tng 6

  • Bi tp C Gii

    Cch 1: Dng 4 bin

    14/09/2014 Lp trnh hng i tng 7

    void main(){

    int a1, a2, a3, a4;

    printf("\nNhap a1 = ");

    scanf("%d", &a1);

    printf("\nNhap a2 = ");

    scanf("%d", &a2);

    printf("\nNhap a3 = ");

    scanf("%d", &a3);

    printf("\nNhap a4 = ");

    scanf("%d", &a4);

    printf("\nBan vua nhap 4 so: %d %d %d %d\n", a1, a2, a3, a4);

    }

  • Bi tp C Gii

    Cch 2: Dng mng

    14/09/2014 Lp trnh hng i tng 8

    void main(){

    int a[4];

    printf("\nNhap a1 = ");

    scanf("%d", &a[0]);

    printf("\nNhap a2 = ");

    scanf("%d", &a[1]);

    printf("\nNhap a3 = ");

    scanf("%d", &a[2]);

    printf("\nNhap a4 = ");

    scanf("%d", &a[3]);

    printf("\nBan nhap 4 so:%d %d %d %d\n", a[0], a[1], a[2], a[3]);

    }

  • Bi tp C Gii

    Cch 3: Dng

    mng v vng

    lp while

    14/09/2014 Lp trnh hng i tng 9

    void main(){

    int a[4], i;

    i = 0;

    do{

    printf("\nNhap a%d = ", i);

    scanf("%d", &a[i]);

    i++;

    }while(i

  • Bi tp C Gii

    Cch 4: Dng mng v vng lp for

    14/09/2014 Lp trnh hng i tng 10

    void main()

    {

    int a[4], i;

    for (i=0; i

  • Bi tp C Gii

    Cch 5: Dng mng v vng lp for gp

    14/09/2014 Lp trnh hng i tng 11

    void main()

    {

    int a[4], i;

    for (i=0; i

  • Bi tp C Gii

    Cch 6: Dng hm

    14/09/2014 Lp trnh hng i tng 12

  • Bi tp C Gii

    Cch 7: Dng file

    14/09/2014 Lp trnh hng i tng 13

  • Lch s ngn ng lp trnh

    14/09/2014 Lp trnh hng i tng 14

  • Lch s ca C++

    M rng ca C

    u thp nin 1980: Bjarne Stroustrup

    (Bell Laboratories)

    Cung cp kh nng lp trnh hng i

    tng

    Ngn ng lai

    14/09/2014 Lp trnh hng i tng 15

  • Mi trng ca C++

    Bin dch v thc thi chng trnh C++: Edit

    Preprocess

    Compile

    Link

    Load

    Execute

    14/09/2014 Lp trnh hng i tng 16

    Loader

    Primary

    Memory

    Program is created in

    the editor and stored

    on disk.

    Preprocessor program

    processes the code.

    Loader puts program

    in memory.

    CPU takes each

    instruction and

    executes it, possibly

    storing new data

    values as the program

    executes.

    Compiler

    Compiler creates

    object code and stores

    it on disk.

    Linker links the object

    code with the libraries,

    creates a.out and

    stores it on disk

    Editor

    Preprocessor

    Linker

    CPU

    Primary

    Memory

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Disk

    Disk

    Disk

    Disk

    Disk

  • Khc bit i vi C

    Ch thch

    Cc kiu d liu

    Kim tra kiu, i kiu

    Phm vi v khai bo

    Khng gian tn

    Hng

    Qun l b nh

    Tham chiu

    14/09/2014 Lp trnh hng i tng 17

    C++

    C

  • Khc bit i vi C

    Phm vi v khai bo:

    Khng ging nh C, chng ta c th khai bo mt

    bin ti mt v tr bt k trong chng trnh.

    Mt bin ch c tm tc dng trong khi lnh n

    c khai bo.

    Do , C++ cung cp ton t nh phm vi (::)

    xc nh r bin no c s dng khi xy ra tnh

    trng nh ngha chng mt tn bin trong mt

    khi lnh con.

    14/09/2014 Lp trnh hng i tng 18

  • Ton t phm vi

    Ton t phm vi (::)

    Thng c dng truy cp cc bin ton

    cc trong trng hp c bin cc b trng tn

    V d:

    y = ::x + 3;

    14/09/2014 Lp trnh hng i tng 19

  • Ton t phm vi

    14/09/2014 Lp trnh hng i tng 20

    1 // Using the unary scope resolution operator.

    2 #include

    3 #include

    4 using namespace std;

    5

    6 // define global constant PI

    7 const double PI = 3.14159265358979;

    8 int main()

    9 {

    10 //define local constant PI

    11 const float PI = static_cast< float >( ::PI );

    Access the global PI with

    ::PI.

    Cast the global PI to a

    float for the local PI.

    This example will show

    the difference between

    float and double.

  • Ton t phm vi

    14/09/2014 Lp trnh hng i tng 21

    12 // display values of local and global PI constants

    13 cout

  • Nhp xut vi C++

    cin

    Lung nhp chun

    cout

    Lung xut chun

    cerr

    Lung thng bo li chun

    14/09/2014 Lp trnh hng i tng 22

  • Nhp xut vi C++

    cin and cout (and #include ):

    cout > name;

    cout

  • V d 1

    14/09/2014 Lp trnh hng i tng 24

    1 // Fig. 1.2: fig01_02.cpp

    2 // A first program in C++.

    3 #include

    4 using namespace std;

    5 // function main begins program execution

    6 int main()

    7 {

    8 cout

  • V d 2

    14/09/2014 Lp trnh hng i tng 25

    1 #include

    2 using namespace std;

    3 // function main begins program execution

    4 int main(){

    5 int integer1; // first number to be input by user

    6 int integer2; // second number to be input by user

    7 int sum; // variable in which sum will be stored

    8 cout > integer1; // read an integer

    10 cout > integer2; // read an integer

    12 sum = integer1 + integer2; // assign result to sum

    13 cout

  • V d 3

    14/09/2014 Lp trnh hng i tng 26

    #include

    using namespace std;

    void main() {

    int n;

    double d;

    char s[100];

    cout > n >> d >> s;

    cout

  • Cc kiu d liu ca C++

    14/09/2014 Lp trnh hng i tng 27

    structured

    array struct union class

    address

    pointer reference

    simple

    integral enum floating

    float double long double

    char short int long bool

  • Tham s mc nhin

    V d 1: Hm th hin mt ca s thng bo

    trong Visual C++

    14/09/2014 Lp trnh hng i tng 28

  • Tham s mc nhin

    V d 2:

    14/09/2014 Lp trnh hng i tng 29

  • Tham s mc nhin

    Mc ch:

    Gn cc gi tr mc nhin cho cc tham s ca hm.

    Khai bo tham s mc nhin:

    Tt c cc tham s mc nhin u phi cui hm.

    Ch cn a vo khai bo, khng cn trong nh ngha.

    Gi hm c tham s mc nhin:

    Nu cung cp tham s dng tham s truyn vo.

    Nu khng tham s dng tham s mc nhin.

    14/09/2014 Lp trnh hng i tng 30

  • Ti nh ngha hm

    Funtions overloading

    C++ cho php nh ngha cc hm trng

    tn.

    14/09/2014 Lp trnh hng i tng 31

    int abs(int i);

    long labs(long l);

    double fabs(double d);

    int abs(int i);

    long abs(long l);

    double abs(double d);

  • Ti nh ngha hm

    Qui tc ti nh ngha:

    Cc hm trng tn phi khc nhau v tham s:

    S lng, th t, kiu

    Qui tc gi hm?

    Tm hm c kiu tham s ph hp

    Dng php p kiu t ng

    Tm hm gn ng (ph hp) nht

    14/09/2014 Lp trnh hng i tng 32

  • Ti nh ngha hm

    V d 1:

    14/09/2014 Lp trnh hng i tng 33

  • Ti nh ngha hm

    V d 2:

    14/09/2014 Lp trnh hng i tng 34

  • Ton t qun l b nh ng

    Ton t cp pht b nh ng new

    int *x;

    x = new int; //x = (int*)malloc(sizeof(int));

    char *y;

    y = new char[100]; //y = (char*)malloc(100);

    Ton t gii phng vng nh ng delete

    delete x; // free(x);

    delete y; // free(y);

    14/09/2014 Lp trnh hng i tng 35

  • Truyn tham s

    Truyn theo gi tr (tham tr)

    Gi tr tham s khi ra khi hm s khng thay

    i.

    Truyn theo a ch (tham chiu)

    Gi tr tham s khi ra khi hm c th thay i.

    14/09/2014 Lp trnh hng i tng 36

  • Tham chiu

    Tham chiu l a ch vng nh c cp

    pht cho mt bin.

    K hiu & t trc bin hoc hm xc

    nh tham chiu ca chng

    V d 1:

    int x = 10, *px = &x, &y = x;

    *px = 20;

    y = 30;

    14/09/2014 Lp trnh hng i tng 37

  • Tham chiu

    V d 2:

    int arrget(int *a, int i) { return a[i]; }

    arrget(a, 1) = 1; // a[1] = 1;

    cin >> arrget(a,1); // cin >> a[1];

    V d 3:

    void swap1(int x, int y) { int t = x; x = y; y = t; }

    void swap2(int *x, int *y) { int *t = x; x = y; y = t; }

    void swap3(int &x, int &y) { int t = x; x = y; y = t; }

    14/09/2014 Lp trnh hng i tng 38

  • Tham chiu

    14/09/2014 Lp trnh hng i tng 39

    1 // Comparing pass-by-value and pass-by-reference

    2 // with references.

    3 #include

    4 using namespace std;

    5

    6 int squareByValue( int ); // function prototype

    7 void squareByReference( int & ); // function prototype

    8 int main(){

    9 int x = 2, z = 4;

    10 // demonstrate squareByValue

    11 cout

  • Tham chiu

    14/09/2014 Lp trnh hng i tng 40

    15 // demonstrate squareByReference

    16 cout

  • Tham chiu

    14/09/2014 Lp trnh hng i tng 41

    1 // References must be initialized.

    2 #include

    3 using std::cout;

    4 using std::endl;

    5 int main(){

    6 int x = 3;

    7

    8 int &y = x;

    9 cout

  • Tham chiu

    14/09/2014 Lp trnh hng i tng 42

    1 #include

    2 using namespace std;

    3 int main(){

    4 int x = 3;

    5 int &y;

    6 cout

  • Hm Inline

    Hm inline hay cn gi l hm ni tuyn.

    S dng t kha inline

    Yu cu trnh bin dch copy code vo trong

    chng trnh thay v thc hin li gi hm:

    Gim thi gian thc thi chng trnh

    Tng kch thc ca m lnh thc thi

    Ch nn nh ngha inline khi hm c kch

    thc nh

    14/09/2014 Lp trnh hng i tng 43

  • Hm Inline

    V d:

    14/09/2014 Lp trnh hng i tng 44

  • Lp trnh Hng i tng 45

    Tm li sai cho cc khai bo prototype hm di y (cc hm ny trong cng mt chng trnh):

    int func1 (int);

    float func1 (int);

    int func1 (float);

    void func1 (int = 0, int);

    void func2 (int, int = 0);

    void func2 (int);

    void func2 (float);

    Bi tp 1

  • Lp trnh Hng i tng 46

    Cho bit kt xut ca chng trnh sau: void func (int i, int j = 0 ){ cout

  • Lp trnh Hng i tng 47

    a. Vit chng trnh nhp vo mt phn s,

    rt gn phn s v xut kt qu.

    b. Vit chng trnh nhp vo hai phn s,

    tm phn s ln nht v xut kt qu.

    c. Vit chng trnh nhp vo hai phn s.

    Tnh tng, hiu, tch, thng gia chng

    v xut kt qu.

    Bi tp 3

  • Lp trnh Hng i tng 48

    a. Vit chng trnh nhp vo mt ngy.

    Tm ngy k tip v xut kt qu.

    b. Vit chng trnh nhp h tn, im ton,

    im vn ca mt hc sinh. Tnh im

    trung bnh v xut kt qu.

    Bi tp 4

  • Bi tp 5

    Cho mt danh sch lu thng tin ca cc nhn vin trong mt cng ty, thng tin gm:

    - M nhn vin (chui, ti a l 8 k t)

    - H v tn (chui, ti a l 20 k t)

    - Phng ban (chui, ti a 10 k t)

    - Lng c bn (s nguyn)

    - Thng (s nguyn)

    - Thc lnh (s nguyn, trong thc lnh = lng c bn + thng )

    Hy thc hin cc cng vic sau:

    a.Tnh tng thc lnh thng ca tt c nhn vin trong cng ty.

    b.In danh sch nhng nhn vin c mc lng c bn thp nht.

    c.m s lng nhn vin c mc thng >= 1200000.

    d.In danh sch cc nhn vin tng dn theo phng ban, nu phng ban trng nhau th

    gim dn theo m nhn vin.

    14/09/2014 Lp trnh hng i tng 49

  • Q & A