58
Cao Tun Dũng [email protected] Bài 02. Cú pháp Java/C++ cơ bản LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bộ môn Công nghệ phần mềm VIỆN CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Lap trinh huong doi tuong 2

Embed Size (px)

DESCRIPTION

Giao trinh Bach Khoa

Citation preview

  • Cao Tun Dng [email protected]

    Bi 02. C php Java/C++ c bn

    LP TRNH HNG I TNG

    B mn Cng ngh phn mm VIN CNG NGH THNG TIN TRUYN THNG

    TRNG I HC BCH KHOA H NI

  • Mc tiu bi hc

    Nu c cc quy c t tn trong cc chng trnh Java/C++

    To ra cc nh iu kin, cu trc lp v r nhnh hp l

    M t cc kiu d liu c bn trong Java v cch s dng

    Cc ton t S dng cc cu lnh Gii thch v phm vi ca bin Khai bo, khi to cc bin v mng trong Java

    2

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    3

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    4

  • 1. nh danh

    nh danh: Xu k t th hin tn cc bin, cc

    phng thc, cc lp v nhn

    Quy nh vi nh danh: Cc k t c th l ch s, ch ci, '$'

    hoc _ Tn khng c php:

    Bt u bi mt ch s Trng vi t kha

    Phn bit ch hoa ch thng Yourname, yourname, YourName v

    yourName l 4 nh danh khc nhau

    5

  • 1. nh danh (2)

    Quy c vi nh danh (naming convention): Bt u bng ch ci Gi (package): tt c s dng ch thng

    theexample

    Lp (Class): vit hoa ch ci u tin trong cc t ghp li TheExample

    Phng thc/thuc tnh (method/field): Bt u bng ch thng, vit hoa ch ci u tin trong cc t cn li theExample

    Hng (constants): Tt c vit hoa THE_EXAMPLE

    6

  • 1. nh danh (3)

    Literals null true false

    T kha (keyword) abstract assert boolean break byte case catch char class continue default do double else

    extends final finally float for if implements

    import instanceof int interface long native new

    package private protected public return short

    static strictfp super switch synchronized this

    throw throws transient try void volatile while

    T dnh ring (reserved for future use) byvalue cast const future generic goto inner operator outer rest var volatile

    7

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    8

  • 2. Cc kiu d liu

    Trong Java kiu d liu c chia thnh hai loi: Kiu d liu nguyn thy (primitive)

    S nguyn (integer) S thc (float) K t (char) Gi tr logic (boolean)

    Kiu d liu tham chiu (reference) Mng (array) i tng (object)

    9

  • 2.1. Kiu d liu nguyn thy

    Mi bin u phi khai bo mt kiu d liu

    Cc kiu d liu c bn cha mt gi tr n

    Kch thc v nh dng phi ph hp vi kiu ca n

    Java phn loi thnh 4 kiu d liu nguyn thy

    10

  • a. S nguyn

    S nguyn c du

    Khi to vi gi tr 0

    11

  • b. S thc

    Khi to vi gi tr 0.0

    12

  • c. K t

    K t Unicode khng du, c t gia hai du nhy n

    2 cch gn gi tr: S dng cc ch s trong h 16: char uni ='\u05D0';

    S dng k t: char a = A;

    Gi tr mc nh l gi tr zero (\u0000)

    13

  • d. Gi tr logic Gi tr boolean c xc nh r rng trong Java

    Mt gi tr int khng th s dng thay cho gi tr boolean

    C th lu tr gi tr hoc true hoc false

    Bin boolean c khi to l false

    14

  • 2.2. Gi tr hng (literal)

    Literal l mt gi tr ca cc kiu d liu nguyn thy v xu k t.

    Gm 5 loi: integer

    floating point

    boolean

    character

    string

    15

    Literals

    integer..7 floating point7.0f boolean.true character.'A' string.."A"

  • a. S nguyn

    H c s 8 (Octals) bt u vi ch s 0 032 = 011 010(2) = 16 + 8 + 2 = 26(10)

    H c s 16 (Hexadecimals) bt u vi 0 v k t x 0x1A = 0001 1010(2) = 16 + 8 + 2 = 26(10)

    Kt thc bi k t L th hin kiu d liu long 26L

    K t hoa, thng cho gi tr bng nhau 0x1a , 0x1A , 0X1a , 0X1A u c gi tr 26 trong h

    decimal

    16

  • b. S thc

    float kt thc bng k t f (hoc F) 7.1f

    double kt thc bng k t d (hoc D) 7.1D

    e (hoc E) c s dng trong dng biu din

    khoa hc: 7.1e2

    Mt gi tr thc m khng c k t kt thc i km s c kiu l double 7.1 ging nh 7.1d

    17

  • c. boolean, k t v xu k t

    boolean: true False

    K t: c t gia 2 du nhy n

    V d: a, A hoc '\uffff

    Xu k t: c t gia hai du nhy kp V d: Hello world, Xin chao ban,

    18

  • d. Escape sequence

    Cc k t iu khin nhn phm \b backspace \f form feed \n newline \r return (v u dng) \t tab

    Hin th cc k t c bit trong xu \" quotation mark \ apostrophe \\ backslash

    19

  • 2.3. Chuyn i kiu d liu (Casting)

    Java l ngn ng nh kiu cht Gn sai kiu gi tr cho mt bin c th dn n cc

    li bin dch hoc cc ngoi l ca JVM

    JVM c th ngm nh chuyn t mt kiu d liu hp sang mt kiu rng hn

    chuyn sang mt kiu d liu hp hn, cn phi nh kiu r rng.

    20

    int a, b;

    short c;

    a = b + c;

    int d;

    short e;

    e = (short)d;

    double f;

    long g;

    f = g;

    g = f; //error

  • 2.3. Chuyn i kiu d liu (2)

    Chuyn i kiu s c thc hin t ng nu khng xy ra mt mt thng tin byte short int

    long float double p kiu trc tip

    (explicit cast) c yu cu nu c nguy c gim chnh xc

    21

  • V d - chuyn i kiu

    long p = (long) 12345.56; // p == 12345

    int g = p; // khng hp l d kiu int

    //c th lu gi tr 12345

    char c = t;

    int j = c; // t ng chuyn i

    short k = c; // khng hp l

    short k = (short) c; // p kiu trc tip

    float f = 12.35; // khng hp l

    22

  • 2.4. Khai bo v khi to bin

    Cc bin n (bin khng phi l mng) cn phi c khi to trc khi s dng trong cc biu thc C th kt hp khai bo v khi to cng mt lc. S dng = gn (bao gm c khi to)

    V d: int i, j; // Khai bo bin i = 0; int k =i+1; float x=1.0f, y=2.0f; System.out.println(i); // In ra 0 System.out.println(k); // In ra 1 System.out.println(j); // Li bin dch

    24

  • Ch thch

    Java h tr ba kiu ch thch nh sau: // Ch thch trn mt dng

    // Khng xung dng

    /* Ch thch mt on */

    /** Javadoc * ch thch dng Javadoc */

    25

  • Cu lnh

    Cc cu lnh kt thc bi du;

    Nhiu lnh c th vit trn mt dng

    Mt cu lnh c th vit trn nhu dng V d:

    26

    System.out.println(

    This is part of the same line);

    a=0; b=1; c=2;

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    27

  • 3. Ton t (Operators)

    Kt hp cc gi tr n hoc cc biu thc con thnh nhng biu thc mi, phc tp hn v c th tr v gi tr.

    Java cung cp nhiu dng ton t sau:

    Ton t s hc

    Ton t bit, ton t quan h

    Ton t logic

    Ton t gn

    Ton t mt ngi

    28

  • 3. Ton t (2)

    Ton t s hc +, -, *, /, %

    Ton t bit AND: &, OR: |, XOR: ^, NOT: ~

    Dch bit:

    Ton t quan h ==, !=, >, =,

  • 3. Ton t (3)

    Ton t mt ngi o du: +, -

    Tng gim 1 n v: ++, --

    Ph nh mt biu thc logic: !

    Ton t gn =, +=, -=, %= tng t vi >>,

  • Th t u tin ca ton t

    Cho bit ton t no thc hin trc c xc nh bi cc du ngoc n hoc theo ngm nh nh sau: Postfix operators [] . (params) x++ x-- Unary operators ++x --x +x -x ~ ! Creation or cast new (type)x Multiplicative * / % Additive + - Shift > >>> (unsigned shift) Relational < > = instanceof Equality == != Bitwise AND & Bitwise exclusive OR ^ Bitwise inclusive OR | Logical AND && Logical OR || Conditional (ternary) ?: Assignment = *= /= %= += -= >>= >= &= ^= |=

    31

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    32

  • 4.1. Lnh if - else

    C php if (dieu_kien){

    cac_cau_lenh;

    }

    else {

    cac_cau_lenh;

    }

    Biu thc iu kin nhn gi tr boolean

    Mnh else l ty chn

    33

  • V d - Kim tra s chn l

    class CheckNumber

    {

    public static void main(String args[])

    {

    int num =10;

    if (num %2 == 0)

    System.out.println (num+ la so chan);

    else

    System.out.println (num + la so le);

    }

    }

    34

  • C++: Gii phng trnh bc nht #include

    int main(){

    float a, b;

    cout a;

    cout

  • 4.2. Lnh switch - case

    Kim tra mt bin n vi nhiu gi tr khc nhau v thc hin trng hp tng ng

    break: Thot khi lnh switch-case

    default kim sot cc gi tr nm ngoi cc gi tr case:

    36

    case a action(s)

    break

    default action(s)

    [true]

    case b action(s)

    break

    case z action(s)

    break

    .

    .

    .

    [false] case a

    [true]

    [true]

    case b

    case z

    [false]

    [false]

  • V d - Lnh switch - case

    37

    if (day == 0 || day == 1) {

    rule = weekend;

    } else if (day > 1 && day

  • 4.3. Vng lp while v do while

    Thc hin mt cu lnh hoc mt khi lnh khi iu kin vn nhn gi tr true while() thc hin 0 hoc nhiu ln

    do...while() thc hin t nht mt ln

    38

    int x = 2;

    while (x < 2) {

    x++;

    System.out.println(x);

    } int x = 2;

    do {

    x++;

    System.out.println(x);

    } while (x < 2);

    action state

    [true]

    [false]

    condition

  • V d - Vng lp while

    class WhileDemo{

    public static void main(String args[]){

    int a = 5,fact = 1;

    while (a >= 1){

    fact *=a;

    a--;

    }

    System.out.println(The Factorial of 5

    is +fact);

    }

    }

    39

  • 4.4. Vng lp for C php: for (start_expr; test_expr; increment_expr){

    // code to execute repeatedly

    }

    3 biu thc u c th vng mt

    C th khai bo bin trong cu lnh for Thng s dng khai bo mt bin m

    Thng khai bo trong biu thc start

    Phm vi ca bin gii hn trong vng lp

    V d: for (int index = 0; index < 10; index++) {

    System.out.println(index);

    }

    40

  • V d - vng lp for

    class ForDemo

    {

    public static void main(String args[])

    {

    int i=1, sum=0;

    for (i=1;i

  • 4.5. Cc lnh thay i cu trc iu khin

    break C th c s dng thot ra ngoi cu lnh

    switch

    Kt thc vng lp for, while hoc do...while

    C hai dng: Gn nhn: Tip tc thc hin cu lnh tip theo sau

    vng lp c gn nhn

    Khng gn nhn: Thc hin cu lnh tip theo bn ngoi vng lp

    43

  • 4.5. Cc lnh thay i cu trc iu khin (2)

    continue C th c s dng cho vng lp for, while hoc

    do...while

    B qua cc cu lnh cn li ca vng lp hin thi v chuyn sang thc hin vng lp tip theo.

    44

  • V d - break v continue

    public int myMethod(int x) {

    int sum = 0;

    outer: for (int i=0; i

  • 4.6. Phm vi bin

    Phm vi ca bin l vng chng trnh m trong bin c th c tham chiu n

    Cc bin c khai bo trong mt phng thc th ch c th truy cp trong phng thc

    Cc bin c khai bo trong vng lp hoc khi lnh th ch c th truy cp trong vng lp hoc khi lnh

    46

  • Phm vi hot ng ca cc bin

    Phm vi hot ng (scope) ca cc bin cho php xc nh cc nguyn l ca to bin, s dng bin v gii phng bin

    C++ cho php nh ngha cc bin ti mi im trong chng trnh (on the fly)

    Phn loi: bin ton cc (global), bin cc b, bin static

    Java: t kha static cho phm vi ton cc

  • Ton t phm vi :: (C++)

    Gip phn bit bin cc b v bin ton cc cng tn. #include

    int counter = 50; // global variable

    int main() {

    for (register int counter = 1; // this refers to the counter < 10; // local variable

    counter++){

    printf("%d\n", ::counter // global variable

    / // divided by

    counter); // local variable

    }

    return 0;

    }

    Trong Java khng tn ti khi nim ton t phm vi

  • Ni dung

    1. nh danh

    2. Cc kiu d liu

    3. Ton t

    4. Cu trc iu khin

    5. Mng

    49

  • 5. Mng (array)

    Tp hp hu hn cc phn t cng kiu

    Phi c khai bo trc khi s dng

    Khai bo: C php:

    kieu_dlieu[] ten_mang = new kieu_dlieu[KT_MANG];

    kieu_dlieu ten_mang[] = new kieu_dlieu[KT_MANG];

    V d: char c[] = new char[12];

    50

    reference

    Array or Object

    variableName

  • 5.1. Khai bo v khi to mng

    Khai bo, khi to gi tr ban u: C php:

    kieu_dl[] ten_mang = {ds_gia_tri_cac_ptu};

    V d: int[] number = {10, 9, 8, 7, 6};

    Nu khng khi to nhn gi tr mc nh ty thuc vo kiu d liu.

    Lun bt u t phn t c ch s 0

    51

  • 52

    Tn ca mng (tt c cc thnh phn trong mng c cng tn, c)

    Ch s (truy nhp n cc thnh phn ca mng thng qua ch s)

    c[ 0 ]

    c[ 1 ]

    c[ 2 ]

    c[ 3 ]

    c[ 4 ]

    c[ 5 ]

    c[ 6 ]

    c[ 7 ]

    c[ 8 ]

    c[ 9 ]

    c[ 10 ]

    c[ 11 ]

    -45

    6

    0

    72

    1543

    -89

    0

    62

    -3

    1

    6453

    78

    c.length: cho bit di ca mng c

    V d - mng

  • 5.1. Khai bo v khi to mng (2)

    V d: int MAX = 5;

    boolean bit[] = new boolean[MAX];

    float[] value = new float[2*3];

    int[] number = {10, 9, 8, 7, 6};

    System.out.println(bit[0]); // prints false

    System.out.println(value[3]); // prints 0.0

    System.out.println(number[1]); // prints 9

    53

  • 5.2. Mng nhiu chiu

    Bng vi cc dng v ct Thng s dng mng hai chiu

    V d khai bo mng hai chiu b[2][2]

    int b[][] = { { 1, 2 }, { 3, 4 } }; 1 v 2 c khi to cho b[0][0] v b[0][1]

    3 v 4 c khi to cho b[1][0] v b[1][1]

    int b[3][4];

    55

  • 5.2. Mng nhiu chiu (2)

    56

    b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]

    Row 0

    Row 1

    Row 2

    Column 0 Column 1 Column 2 Column 3

    Ch s hng

    Tn mng

    Ch s ct

    b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]

    b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]

  • C++: Cp pht b nh ng Ton t cp pht b nh ng new. C hai

    cch s dng new: Cp pht b nh cho mt bin

    new type;

    gi tr tr v l: mt con tr ch n v tr tng ng khi cp

    pht thnh cng v NULL trong trng hp tri li.

    Cp pht mt mng ng cc phn t new type[n]

    gi tr tr v l:

    Con tr ch n u vng nh cha n phn t thuc kiu type

    NULL khi khng cn b nh cp pht

  • C++: thu hi b nh ng

    Ton t gii phng vng nh ng (heap) delete

    delete con_tr;

    delete [] con_tr;

    Tr li vng nh tr bi con_tr

    Sau lnh delete gi tr ca con_tr

    khng xc nh

  • C++: new v delete

    V d: Vi khai bo int *adr;

    lnh adr=new int; s cp pht mt vng nh cn thit cho mt

    gi tr kiu int v gn a ch cho adr. lnh: delete adr; s gii phng vng nh tr bi adr;

    Lnh char *adc= new char[100];

    s cp pht mt vng nh cha 100 k t v t a ch u vng nh vo bin adc.

    Lnh delete adc; s gii phng vng nh ny.

  • R r b nh

    Vn : mt mi con tr n mt vng b nh c cp pht. Khi , vng b nh bmt du, khng th tr li cho heap c.

    int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2;

    8

    ptr

    -5

    ptr2

    8

    ptr

    -5

    ptr2

  • Con tr lc

    Khi delete ptr2, ta cn ch khng xo vng b nh m mt con tr ptr khc ang tr ti.

    int* ptr = new int; *ptr = 8; int* ptr2 = new int; *ptr2 = -5; ptr = ptr2; delete ptr2; // ptr is left

    dangling ptr2 = NULL;

    8

    ptr

    -5

    ptr2

    8

    ptr

    NULL

    ptr2