slide bai giang mon cac van de co so khoa hoc may tinh(1)

227
Lý thuyết: 60 tiết  Thc hành:  0 tiết CÁC VN ĐỀ CƠ SỞ  CA KHOA HC MÁY TÍNH  ĐẠI HC MTP .HCM KHOA CÔNG NGHTHÔNG TIN  

Upload: ditery90

Post on 11-Oct-2015

26 views

Category:

Documents


1 download

DESCRIPTION

tài liệu khoa học máy tính

TRANSCRIPT

  • L thuyt: 60 tit Thc hnh: 0 tit

    CC VN C S CA KHOA HC MY TNH

    I HC M TP.HCM KHOA CNG NGH THNG TIN

  • Mc Tiu Mn Hc Mn hc ny trnh by cc nguyn l tnh

    ton v mt l thuyt v thc tin: nhng c s l thuyt thng tin v tnh ton, l thuyt ngn ng, phn tch gii thut, thc hin cc h thng tnh ton, c s d liu, truyn d liu,

    Sau khi hc xong mn ny, sinh vin t c nhng kin thc c bn v gii thut, phn cng, phn mm, ngn ng lp trnh, k thut lp trnh, mng my tnh, c s d liu, Internet v nng cao k nng lp trnh thng qua cc bi tp.

    2 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ti Liu Ti liu chnh:

    - Carl Raynolds, Paul Tymann, Principles of Computer Science, Mc. Graw-Hill, 2008.

    Ti liu tham kho: - J. Glenn Bookshear, Computer Science

    An overview, 11th edition, Pearson-Addison Wesley, 2012 .

    3 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phng Php nh Gi Thi l thuyt gia k: 30%. Thi l thuyt cui k: 70%.

    4 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chng 1: GII THIU V

    KHOA HC MY TNH

  • Ni Dung 1. Khoa hc My tnh l g? 2. Gii thut . 3. Phn cng. 4. Ngn ng my (ngn ng cp thp) . 5. Ngn ng cp cao. 6. Lp trnh. 7. Phn mm: phn mm h thng, phn mm

    ng dng. 8. Mng my tnh. 9. Cng ngh c s d liu. 10. Internet, World Wide Web.

    6 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Khoa Hc My Tnh L G? Khoa hc my tnh l g? Khoa hc my tnh

    (computer science) c nh ngha theo nhiu cch khc nhau. Sau y l vi nh ngha:

    Khoa hc my tnh l tp ca cc phng thc c lin quan n tnh ton, gm c l thuyt v thc tin: l thuyt v thng tin v tnh ton, l thuyt ngn ng, phn tch gii thut, s thc thi ca cc h thng tnh ton, ho my tnh, c s d liu, truyn thng,

    S nghin cu v my tnh v x l gii thut, bao gm nhng nguyn l, thit k

    7 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Khoa Hc My Tnh L G? Phn cng v phn mm, ng dng v nh hng ca n i vi x hi.

    nh ngha sau cng nhn mnh s pht trin v phn tch gii thut l trng tm ca khoa hc my tnh.

    Mc d cc nh ngha trn c khc nhau, nhng tt c u nhm nhn mnh n s nghin cu gii thut. Khoa hc my tnh kt hp cc khi nim l thuyt ca thit k v phn tch gii thut vi thc tin l xem xt th no hin thc gii thut trn my tnh v gii quyt vn thc tin.

    8 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Gii Thut Gii thut l g? Gii thut (algorithm) nh

    ngha chi tit v r rng mt chui cc hnh ng ni tip nhau gii quyt mt vn c th hoc thc thi mt tc v no .

    Cho v d, cn xc nh c s chung ln nht (greatest common divisor GCD) ca 2 s nguyn.

    Theo nh ngha, th GCD ca 2 s nguyn dng l s nguyn ln nht m n l c s ca c 2 s . V d: GCD(42, 30) = 6. Chng ta c th s dng gii thut sau tm GCD ca 2 s nguyn a v b: - Nu b = 0 th GCD(a, b) = a.

    9 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Gii Thut- Gn r l phn d ca a v b. - Lp li cc bc trn v dng b v r.

    Gii thut l nn tng my tnh x l thng tin. Bi v chng trnh my tnh th hin gii thut v ra lnh cho my tnh thc hin cc bc c th c ch nh trong gii thut.

    Gii thut c biu din bng lu hay m gi chng ta c th d dng c. Trong v d trn, gii thut c th hin bng m gi.

    thc hin cc bc ca gii thut bng my tnh, chng ta cng cn hiu v thut ng phn cng.

    10 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Cng Bn cht ca gii thut l cch m my tnh

    x l thng tin, bi v thc cht th chng trnh my tnh l mt hnh thi khc ca gii thut. N bo cho my tnh bit cc bc c th thc thi tc v c ch nh trong gii thut. nguyn cu v gii thut, nh khoa hc my tnh cng phi hiu v my tnh v n l cng c c s dng thc hin gii thut.

    Thut ng phn cng (hardware) dng m t nhng thnh phn vt l, hu hnh ca my tnh. Bn phm, chut, bo mch ch, card ho, b vi x l l tt c nhng v d

    11 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Cngv phn cng my tnh.

    Cng cn lu rng, mt gii thut th c cho l tt i vi mt nn phn cng no v c th s l khng i vi nn phn cng khc.

    12 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chng Trnh - Ngn Ng My Con ngi c th d dng c v hiu c

    gii thut. Cho v d, gii thut GCD ca hai s nguyn trc y c vit bng ngn ng Anh. Nhng ch c ngn ng m my tnh hiu c l ngn ng my (machine language).

    Ngn ng my l mt h thng cc m lnh dng nh phn m my tnh c thit k thc thi chng. Mi t trong ngn ng my th hin cho mt hnh ng n v c th c my tnh thc hin.

    Mt tp cc ch th/lnh m t tng bc ca mt gii thut c gi l chng trnh (program). 13

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Cp Cao Ngi lp trnh kh c th lm vic trc tip

    vi ngn ng my. Cc t lnh ca ngn ng my gm mt dy cc s 0 v 1, chiu di tiu biu l 8, 16, 32, hay 64 bit v i khi cng thay i.

    V l do ny, nhiu ngn ng lp trnh ra i ngi lp trnh d dng chuyn gii thut thnh chng trnh v thc thi trn my tnh. Chng ta xem cc ngn ng ny nh l ngn ng cp cao hn (higher-level language), bi v chng c thit k ngi lp trnh lm vic mc cao hn hn l mc ngn ng my.

    14 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Cp Cao Ngn ng my c xem l ngn ng cp

    thp (low-level language). Cc ngn ng nh Java, FORTRAN, Basic, ADA, l cc ngn ng cp cao (high-level language). Chng c nhng nh khoa hc my tnh dng biu din gii thut.

    15 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Phn Mm Hnh ng biu din gii thut s dng

    ngn ng cp thp hay cp cao c gi l lp trnh (programming).

    Thut ng phn mm (software) dng m t mt tp cc lnh hay chng trnh m my tnh dng thc hin mt gii thut. Phn mm cha cc lnh trc tip thao tc vi phn cng.

    Phn mm lm cho cc chc nng c bn ca my tnh c th s dng c th c gi l phn mm h thng (system software). Phn mm h thng chu trch nhim iu khin v qun l phn cng ca h thng

    16 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Mmmy tnh. N cn lm cho my tnh d s dng i vi cc nh pht trin chng trnh cng nh l nhng ngi s dng ni chung.

    Cho v d, phn mm h thng gm h iu hnh, qun l mn hnh, chng trnh chng virus, chng trnh x l ngn ng (trnh bin dch compiler hay trnh thng dch interpreter) v cc chng trnh iu khin thit b.

    Nhng chng trnh nh x l vn bn, bng tnh c gi l phn mm ng dng (application software). Phn mm ng dng

    17 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Mmdng thc hin cc tc v c th. Phn mm ng dng c th l mt chng trnh n hay mt tp cc chng trnh lm vic vi nhau thc hin cc yu cu ca ngi s dng my tnh.

    H iu hnh (operating system) l phn mm h thng c bit quan trng v phc tp. Quan trng bi v h iu hnh tc ng n ton b h thng my tnh.

    H iu hnh lm cho ngi s dng d dng truy cp cc thit b ngoi vi; lu tr thng tin nh d liu, vn bn, chng trnh; to giao din ngi dng d thc

    18 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Mmthi chng trnh ng dng; xem ngy gi h thng; kt ni Internet; qun l v cp pht b nh; chia s ti nguyn cho chng trnh; cho php truy cp ng thi.

    Cc h iu hnh thng dng hin nay nh Microsoft Windows, Mac OS, Unix, Linux v MVS ca IBM.

    19 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Mng My Tnh C khi vo thp nin 1980, hu ht cc my

    tnh khng kt ni mng. Trong khong t nm 1970 n 1980 cc nh khoa hc my tnh khm ph ra nhng u im ca mng my tnh v a ra mt s kt ni vt l khc nhau gia cc my tnh, nh l cc giao thc mng (networking protocol).

    Vo thi im ny, mi nh cung cp my tnh a ra mt chun giao thc khc nhau vi hy vng l s bn c cho khch hng. IBM a ra giao thc System Networking Architecture (SNA), Hewlett Packard a ra Distributed Systems (DS) v Xerox a ra

    20 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Mng My TnhXerox Networking Systems (XNS). Cc giao thc ny khng tng thch nhau. Tuy nhin, chng l cu ni n gia cc h thng vi nhau.

    Ngy nay, vn mng th khc. Hu ht trn th gii chp nhn cc chun IEEE 801 v cc giao thc TCP/IP cho Internet.

    Vn by gi cn quan tm l: - M rng s lng a ch Internet. - Tng tc kt ni vt l nh dng cp

    quang. - Tng tc kt ni khng dy, cho php

    truyn ti d liu ln hn nh phim nh. - Nng lng tiu th v gi thnh thp.

    21 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cng Ngh C S D Liu H tr cho hu ht cc ng dng ngy nay l

    cng ngh CSDL (database technology). M hnh CSDL vt tri l CSDL quan h, n ra i vo thp nin 1980. Cc nh khoa hc my tnh pht trin cc gii thut lu tr v truy cp thng tin nhanh chng t kho d liu khng l. Cho v d, Google c th tm kim ngay tc khc hn 400.000 bc nh t hn 1.5 t bc nh trong CSDL ca n.

    C nhiu iu cn bit v vic to mt CSDL tt, truy xut CSDL t chng trnh, pht trin v qun l CSDL. Nhng ngi lp trnh ng dng v qun tr CSDL cn hiu

    22 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cng Ngh C S D LiuCSDL mc ny s dng chng mt cch hiu qu.

    Mt s h iu hnh mi s dng cng ngh CSDL trong cc h thng tp tin ca n lu tr tt c thng tin. iu ny lm cho h iu hnh ci thin v tc , khng gian lu tr v bo mt d liu.

    23 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Internet World Wide Web Chng ta c th d dng nhn thy rng my

    tnh thay i t ngt i sng ca con ngi.

    Nhng cng ngh nh Internet, World Wide Web t khi lng thng tin khng l trn u ngn tay ca chng ta. V d, nhng phn mm nh Messenger, th in t, in thoi di ng cch mng ho cch thc m con ngi trao i thng tin.

    24 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chng 2: GII THUT

  • Ni Dung 1. nh ngha gii thut . 2. V d v gii thut. 3. c t gii thut. 4. Phn tch gii thut. 5. Gii thut l cng ngh. 6. M hnh hnh thc tnh ton.

    2 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Ngha Gii Thut nh ngha gii thut: Gii thut l cch thc

    gii quyt mt tp cc vn . Thut ng gii thut cng p dng cho bt

    k cch thc no gii quyt mt vn c th. Cho v d, cc bc thay phanh xe cng c gi l gii thut.

    V d: Tm c s chung ln nht. Trong ton hc, mt gii thut ni ting v

    hu dng l gii thut Euclid tm c s chung ln nht (GCD) ca hai s nguyn. ng a ra gii thut ny vo khong 300 nm trc cng nguyn.

    Khng c gii thut Euclid, chng ta tm

    3 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • V D V Gii Thut GCD(372, 84) nh th no? Phi phn tch hai s nguyn thnh cc tha s nguyn t v tm tha s chung ln nht.

    Nu cc s nguyn ny ln, vic phn tch thnh cc tha s tr nn kh khn v tn nhiu thi gian. Euclid tm ra gii thut mt cch c h thng v nhanh chng gim kch thc ca vn , bng cch thay gi tr ban u ca hai s nguyn vi gi tr nh hn cho n khi mt trong hai s bng 0. Lc ny, GCD ca hai s chnh l gi tr ca s cn li.

    Sau y l gii thut Euclid tm GCD ca

    4 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • V D V Gii Thut hai s nguyn A v B: Repeat:

    Nu B = 0, GCD(A, B) = A Ngc li:

    Thay R bng A modulo B Thay A bng B Thay B bng R

    Cho v d, tm GCD ca 372 v 84: - Tm GCD(84, 36) v 372 % 84 = 36 - Tm GCD(36, 12) v 84 % 36 = 12 - Tm GCD(12, 0) v 36 % 12 = 0 - Vy GCD(372, 84) = 12 5

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • V D V Gii Thut Nh vy, gii thut l mt chui cc php

    ton thao tc trn tp gi tr nhp v sinh ra kt qu trong khong thi gian hu hn. Trong v d trn, tp gi tr nhp l 2 s nguyn. Kt qu l c s chung ln nht ca hai s .

    C nhiu cch gii quyt mt lp cc vn . Cu hi t ra l gii thut no tt nht? Thng thng, cc nh khoa hc my tnh s dng cc k thut phn tch, nh gi v so snh hiu qu gia cc gii thut.

    6 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • c T Gii Thut c t gii thut (representing algorithm):

    Trong ngnh khoa hc my tnh, gii thut thng c c t bng m gi (pseudocode). M gi cho mt ngn ng lp trnh c th th hin cc tc v m my tnh phi thc hin trong gii thut.

    M gi cng c lp vi bt k ngn ng lp trnh no. N th hin chi tit c php v lm cho ngi lp trnh d dng c t cc thao tc ct li ca mt gii thut.

    Khng c mt mu chun no cho m gi. Cc nh khoa hc my tnh s dng m gi ca ring mnh c t mt gii thut. V d sau l mt kiu m gi c t gii thut GCD:

    7 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • c T Gii ThutGCD(a, b) While b != 0 { r a mod b a b b r }

    return a

    - Tn hm v i s - Trong khi b khc 0 - Bt u thn vng lp - Gn r = a modulo b - Gn a = gi tr ban u ca b - Gn b = r - Kt thc thn vng lp - Khi b = 0, kt qu tr v l a

    minh ho th no l hiu qu khc nhau gia cc gii thut, chng ta s tho lun v s a dng ca cc gii thut m cc nh khoa hc my tnh a ra gii quyt cc vn ph bin trong tnh ton.

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng 8

  • c T Gii Thut Tm kim tun t (sequential search): Gi s

    chng ta c danh sch ca cc sinh vin trong mt lp hc, yu cu l hy tm tn ca sinh vin Debbie Drawe. Gii thut tm kim tun t ch n gin l so snh mi tn trong danh sch vi tn cn tm. Qu trnh tm kim kt thc khi tn c tm thy hoc khi gii thut tm ht tt c cc tn trong danh sch.

    Sau y l m gi ca gii thut tm kim tun t:

    9 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • c T Gii Thut Sequential_Search(listNames, name) length length of listNames matchFound false index 1 while matchFound = false AND index
  • Phn Tch Gii Thut Phn tch gii thut (analyzing algorithm):

    Nu chng ta bit chiu di ca mi cu lnh v c bao nhiu tn trong danh sch, chng ta c th tnh c thi gian thc thi gii thut.

    Tuy nhin, thng th chng ta khng bit gii thut gii quyt vn trong bao lu v thi gian cn gii quyt vn s thay i theo ln ca vn .

    Gii thut tm kim tun t s cn thi gian lu hn nu s ln so snh nhiu hn. Nhng lnh khc ca gii thut ch thc thi 1 ln, nhng nhng lnh trong vng lp s

    11 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Tch Gii Thut thc thi nhiu ln min l iu kin lp cn ng.

    Nu tn cn tm cn tm nm gia danh sch th gii thut s ch tm mt na danh sch. Nhng nu tn cn tm cui hoc khng c trong danh sch th gii thut s phi tm tt c cc tn trong danh sch.

    Thi gian thc thi ca gii thut tm kim tun t s tng t l theo kch thc ca danh sch.

    Chng ta ni rng bc tng ca gii thut tm kim tun t l n, k hiu l T(n). Chng ta cng ni rng mt gii thut m bc tng ca n gii hn trong mt yu t khng i

    12 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Tch Gii Thut no c theta ca n, k hiu (n).

    Lu : T(n) l hm theta ca g(n): T(n) = (g(n)) nu cc hng s dng c1, c2, n0 sao cho vi mi n >= n0: c1g(n)

  • Phn Tch Gii Thut Insertion_Sort(numList) length length of numList numIndex 2 while(numIndex 0 { numList[sortedIndex + 1] numList[sortedIndex] sortedIndex sortedIndex - 1 } numList[sortedIndex + 1] = newNum

    numIndex numIndex + 1 } end 14 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Phn Tch Gii Thut phn tch thi gian thc thi ca gii thut

    sp xp bng phng php chn trc tip, u tin chng ta lu l thi gian thc thi t l vi s phn t cn sp xp n. Ngoi ra, mi phn t ang xt phi c so snh mt hay nhiu ln vi cc phn t c sp. Trong trng hp tt nht, danh sch cn sp xp c th t ri, khi ny mi phn t ch so snh mt ln, v th trng hp tt nht ca gii thut l (n).

    Trong trng hp xu nht, danh sch cn sp xp c th t ngc, khi ny mi phn t ang xt s so snh vi tt c phn t

    15 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut c sp. Phn t th 2 so snh vi phn t u, phn t th 3 so snh vi phn t th 2 v phn t u, V d danh sch c 4 phn t c th t ngc, s ln so snh s l 6. Ni chung, s ln so snh trong trng hp xu nht ca gii thut ny l

    + 12 = 2 2 Khi n ln th n2 ln hn rt nhiu so vi n, v

    vy thi gian thc thi ca gii thut trong trng hp ny l T(n) = (n2).

    Trong trng hp trung bnh, mi phn t ang xt s so snh vi mt na phn t

    16 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut c sp. V vy, thi gian thc thi ca gii thut trong trng hp ny cng l T(n) = (n2).

    3. Sp xp bng phng php trn (merge sort) - thi gian thc thi T(n) = (n log2n): merge(listA, listB) index 1 while listA is not empty AND listB is not empty if listA[1] < listB[1] sortedList[index] listA[1] discard listA[1]

    17 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut else sortedList[index] listB[1] discard listB[1]

    index index + 1 while listA is not empty sortedList[index] listA[1] discard listA[1] index index + 1

    while listB is not empty sortedList[index] listB[1] discard listB[1] index index + 1

    return sortedList 18

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut Trong hm merge(), cc phn t c di

    chuyn t mt trong hai danh sch ban u l listA v listB vo danh sch kt qu sortedList. Trong , tng s phn t di chuyn bng vi tng s phn t ca hai danh sch ban u. V vy, thi gian thc thi ca hm merge() l (nA + nB), vi nA + nB l tng s phn t ca hai danh sch.

    Gii thut sp xp bng phng php trn s s dng hm merge() trn trn hai danh sch c th t thnh danh sch mi cng c th t:

    19 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut merge_sort(numList) length length of numList if length > 1 listA first half of numList listB second half of numList resultA merge_sort(listA) resultB merge_sort(listB) sortedList merge(resultA, resultB) return sortedList

    else return numList

    end 20 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut Bi tp ti lp: Hy ly v d thc thi gii

    thut sp xp trn bng li gi hm merge_sort() vi danh sch sau: numList = {1, 6, 4, 2}.

    Tng thi gian thc thi T(n) ca gii thut sp xp trn gm thi gian gi qui ca hai na danh sch v thi gian kt hp (trn) cc kt qu:

    T(n) = 2T(n/2) + merge Nh chng ta bit, thi gian thc thi hm merge() l nA + nB = n, nn: T(n) = 2T(n/2) + n

    21 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut T cng thc trn, chng ta xy dng h

    thc truy hi sau: Gii h thc truy hi trn, vit li: T(n) = n + 2T(n/2) = n + 2[n/2 + 2T(n/4)] = n + n + 4T(n/4) = n + n + 4[n/4 + 2T(n/8)] = n + n + n + 8T(n/8) = 3n + 23T(n/23) = 22 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut bc th i, ta c: T(n) = in + 2iT(n/2i)

    Qu trnh tip tc cho n khi gp T(1). Tc l n/2i = 1 n = 2i i = log2n. Khi ny: T(n) = nlog2n + T(1) = nlog2n + nT(1) = nlog2n + n(1) = nlog2n + (n) = (nlog2n + n) = (max(nlog2n + n)) = (nlog2n)

    23 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut 4. Tm kim nh phn (binary search) - thi gian

    thc thi T(n) = (log2n): Trc y, chng ta xt gii thut tm

    kim tun t, phc tp ca n l (n). Nu danh sch tm kim c th t, s dng gii thut tm kim nh phn s hiu qu hn.

    Thi gian tm kim ca gii thut tm kim nh phn l log2n. Nu danh sch c 1.000.000 phn t th s ln tm kim khng qu 20 ln, trong khi gii thut tm kim tun t c s ln tm kim trung bnh l 500.000 ln.

    24 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Phn Tch Gii Thut Sau y l m gi ca gii thut tm kim nh

    phn: BinarySearch(list, searchItem) begin 1 end length of list matchFound false while matchFound = false AND begin

  • Phn Tch Gii Thut end midpoint - 1

    else begin midpoint + 1

    return matchFound Trong mi vng lp, gii thut tm kim nh

    phn gim mt na kch thc danh sch. V vy, nu tm thy hay khng tm thy phn t trong danh sch th s ln lp ti a l log2n. Do , thi gian thc thi ca gii thut ny l T(n) = (log2n).

    26 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Gii Thut L Cng Ngh Nhiu ngi cho rng tc phn cng my

    tnh nh l s o lng v k thut. Nhng cc gii thut xt trc y v hiu qu thc thi ca n, cho thy rng mt gii thut tt trn my tnh chm hn l mt gii thut chm trn my tnh nhanh.

    Gi s chng ta cn sp th t 1.000.000 (106) phn t. Hoc l chng ta chn my tnh ang s dng vi gii thut sp xp trn hoc l mua my tnh mi nhanh hn 10 ln nhng s dng gii thut sp xp chn.

    Gii thut chn trn my tnh mi s cn 27

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Gii Thut L Cng Ngh (106)2 chu k, trong khi gii thut trn cn 106(log2106) = 106(20) = 20.000.000 chu k. Nu cn 20 giy thc thi gii thut trn trn my tnh c th s cn n 27 gi thc thi gii thut chn trn my tnh mi.

    28 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton L thuyt my tnh c ci tin bi m hnh

    hnh thc tnh ton bng ton hc. M hnh c tnh thuyt phc nht c a

    ra vo nm 1936 bi nh ton hc ngi Anh - Alan Turing.

    Khi nim ton hc ca m hnh tnh ton Turing c gi l my Turing (Turing machine) hay TM.

    Mt my Turing thng c m t nh l mt my c di bng (tape): - Di bng c chia thnh cc cha cc

    k hiu (symbol) v cc khong trng (blank) v c th di v hn.

    29 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton - My s c mt k hiu mi thi im,

    k hiu c t pha di u c/ghi ca my.

    - My cng c th xo k hiu, ghi k hiu mi v c th di chuyn u c/ghi mt sang tri hay sang phi trn di bng (hoc di bng di chuyn).

    - Ti mi thi im, my lun mt trong mt s trng thi hu hn, khi c mt k hiu c th lm cho trng thi ca my thay i.

    - Mt trng thi c bit l trng thi dng (halting state), y l trng thi kt thc.

    30 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton - Khi my bt u, trng thi ca n l 1, lc

    ny my s bn cc tri ca di bng v di bng s c m rng v hn v bn phi.

    Mt my Turing c th s c mt tp cc lnh. Mi lnh gm mt b 5 gi tr: 1. Trng thi hin ti. 2. K hiu hin ti ang c. 3. K hiu thay th k hiu hin ti. 4. Trng thi k tip. 5. Hng di chuyn u c (Right

    (phi), Left (tri), Stationary (ng yn)) 31

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton V d 1: Gi s my Turing gm 3 lnh (

    ngha l trng): 1.(1, 0, 1, 1, Right) 2.(1, 1, 0, 1, Right) 3.(1, , , halt, Stationary)

    Lnh th nht: nu k hiu ang c l 0, thay n bng 1 v chuyn sang phi di bng.

    Lnh th hai: nu k hiu ang c l 1, thay n bng 0 v chuyn sang phi di bng.

    Lnh th ba: nu k hiu ang c l trng, dng my khng di chuyn.

    32 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton Gi s di bng dng cho my Turing trn

    cha cc k hiu sau: 1 1 0 1 0 1 0 0 ...

    Bt u trng thi 1, my cc tri ca di bng, my c k hiu 1. Lnh 2 c s dng, lm cho 1 c thay bng 0, my vn trng thi 1 v di chuyn 1 sang phi di bng.

    K n, my c k hiu 1 k tip. Lnh 2 c s dng ln na, v th k hiu 1 th hai c thay bng 0, my vn trng thi 1 v di chuyn sang phi.

    Khi my c k hiu 0, lnh 1 c s dng, 33

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton lnh ny lm cho 0 c thay bng 1, my vn trng thi 1 v di chuyn sang phi..

    Cui cng, my c k hiu trng, lnh 3 c s dng v my s dng.

    Bi tp ti lp: a) Cho bit cng dng ca my Turing trn. b) Kt qu c ghi trn di bng. V d 2: Mt v d phc tp hn mt cht l

    ly b 2 (two's complement) ca s nh phn. Php ton ny thng c my tnh s dng thc hin tr nh phn.

    Trc y, trn nhng my cng c hc, 34

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton ngi ta thc hin php tr tng t nhng trn c s 10, s dng phng php ly b 10 (10s complement b 9 + 1).

    V d tnh 17 14, ngi ta tm b 9 ca 14 l 85, sau cng thm 1 l 86. Ly 86 + 17 = 103, b gi tr nh 1 bn tri nht cn li l 3.

    thc hin tr nh phn, ly b 2 s tr v cng vi s b tr. Cho v d tnh 5 2, ly b hai s 2 v cng vi s 5. Gi s dng 3 bit biu din gi tr nh phn ca 5 v 2:

    35 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton Nh phn ngha 010 2 110 b 2 (= b 1 + 1) ca 2 +101 cng vi 5 1011 3 (b bit nh 1 bn tri nht)

    Sau y l cc lnh ca my Turing ly b 2 mt s nh phn:

    1 (1, 0, 1, 1, Right) 2 (1, 1, 0, 1, Right) 3 (1, , , 2, Left) 4 (2, 0, 1, 3, Right) 5 (2, 1, 0, 2, Left)

    36

    Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton 6 (3, 1, 1, 3, Right) 7 (3, 0, 0, 3, Right) 8 (3, , , halt, Stationary)

    Lnh 1 v 2 thc hin ly b 1 cc bit trn di bng.

    Lnh 3 thc thi khi my Turing ly b 1 tt c cc bit v gp k t trng bn cui phi ca di bng. Khi lnh ny thc thi, my s n trng thi 2 v di chuyn sang tri.

    Trong trng thi 2, nu my gp bit 0, lnh 4 s lm cho 0 c thay bng 1, my s n trng thi 3 v di chuyn sang phi. 37 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton Khi my trng thi 3, lnh 6 v lnh 7 lm

    cho my di chuyn sang phi m khng thay i ni dung di bng. Khi my gp k t trng bn phi ln na, lnh 8 s lm cho my dng.

    Trong trng thi 2, nu my gp bit 1, lnh 5 s lm cho 1 c thay bng 0, my vn trng thi 2 v di chuyn tip sang tri cho n khi gp bit 0, khi ny lnh 4 c thc thi nh m t trn.

    V d s nh phn l 010, my Turing s to cc ni dung nh sau trn di bng khi n thc thi:

    38 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton 0 1 0 ni dung ban u 1 0 1 ly b 1 hon tt 1 0 0 sau khi thc thi lnh 5 1 1 0 sau khi thc thi lnh 4 1 1 0 dng sau khi thc thi lnh 8

    My Turing thc hin trn nhiu gi tr nhp nhng khng phi tt c. Gi s ni dung ca di bng ban u u l 0: 0 0 0 ni dung ban u

    Sau khi thc hin ly b 1, tt c cc bit 0 thnh 1: 1 1 1

    39 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • M Hnh Hnh Thc Tnh Ton Khi ny lnh 5 c thc thi tm cc bit 1

    v thay bng 0. Trong trng hp ny, khng bao gi my gp bit 0 lm cho lnh 4 thc thi v a my vo trng thi 3 my di chuyn vo cui di bng v kt thc thch hp.

    40 Cc vn CSKH Ca My Tnh Th.S GVC T Oai Hng

  • Chng 3: T CHC MY TNH

  • Ni Dung 1. Kin trc von Neumann. 2. Biu din d liu. 3. Chiu di t ca my tnh. 4. Dng d liu nguyn. 5. Dng d liu thc. 6. Dng k t. 7. CPU / ALU. 8. Tp lnh. 9. B nh. 10. Nhp / Xut .

    2 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Kin Trc Von Neumann Hu ht cc my tnh ngy nay hot ng

    da vo kin trc von Neumann. tng chnh ca kin trc ny l chng trnh v d liu c lu tr trong b nh my tnh. John von Neumann a ra tng ny vo nm 1945.

    Kin trc von Neumann cng c gi l my tnh c chng trnh c lu tr - stored program computer. Cc bc (lnh) ca chng trnh c lu tr trong b nh my tnh v chu k thao tc ca my s ly bc k tip (lnh thc thi) t b nh, hon thnh thao tc ny v ly bc k tip.

    3 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Kin Trc Von Neumann Qu trnh ny c lp li cho n khi my tnh gp lnh dng - halt.

    C 3 thnh phn ch yu trong my tnh von Neumann. B nh l ni cha chng trnh v d liu. n v x l trung tm (central processing unit - CPU) truy xut chng trnh v d liu trong b nh v thc thi chng. n v nhp/xut truy xut cc thit b nhp v xut d liu.

    4 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Biu Din D Liu Chng ta thng s dng cc s c biu

    din trong c s 10 - base 10 h thp phn. C l c s ny da trn tng l chng ta c 10 ngn tay.

    V d: 427 = 4 * 102 + 2 * 101 + 7 * 100

    Chng ta ni rng s c biu din trong c s 10 bi v cc k s ca s c nhn vi lu tha ca 10.

    My tnh s dng c s 2, bi v iu ny s lm cho d dng trong vic xy dng phn cng khi my tnh ch da trn hai trng thi on v off (1 v 0).

    5 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Biu Din D Liu C s 2 cng c gi l h nh phn -

    binary number system. Cc k s (bit) ca mt s trong h nh phn c nhn vi lu tha ca 2. V d, tnh gi tr thp phn (c s 10) ca s nh phn 10011010: 10011010 = 27 + 24 + 23 + 21 = 154

    Php cng trn h nh phn: 0 + 0 = 0 0 + 1 = 1 1 + 1 = 10 (nh 1 - bit bn tri nht)

    V d, cng hai s nh phn 1100 v 0110: 1100 0110 10010

    6 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chiu Di T Ca My Tnh Mi my tnh khc nhau c th truy xut

    cng lc s bit khc nhau. V d, mt my tnh c th truy xut 8 bit cng lc c gi l my tnh 8 bit. Ni cch khc, my tnh c chiu di t - word size l 8 bit.

    My tnh PC u tin ca IBM s dng b x l 8088 ca Intel c bus d liu l 8 bit, ngha l n c th c/ghi 8 bit d liu cng lc vi thit b ngoi vi.

    Ngy nay, hu ht cc my tnh c chiu di t l 32 hay 64 bit.

    7 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Nguyn Cho n by gi, chng ta ch tho lun cc

    s nguyn dng. My tnh cng cn thao tc vi cc s nguyn c du v c s thc.

    lu tr s c du, bit bn tri nht (msb) c s dng lm bit du. Bit ny c gi tr 0 nu l s dng v 1 nu l s m.

    S nguyn m c biu din bng cch ly b 2 (twos complement) ca s dng tng ng. tnh b 2 ca mt s, o ngc cc bit ca s v cng thm 1. V d, b 2 ca 6 (00000110) trn my tnh 8 bit:

    8 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Nguyn 11111001 +00000001 11111010 (6)

    Chng ta c th kim tra li gi tr trn bng cch cng vi 6, kt qu s l 0: 11111010 (6) +00000110 (+6) 100000000 (0, b bit bn tri nht)

    9 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Thc Biu din s thc kh hn s nguyn. S

    thc gm phn nh tr (mantissa) v phn s m (exponent).

    Phn nh tr v phn s m c th dng hoc m. Phn nh tr ln s cho chnh xc ln, phn s m ln s cho min tr ln.

    Trc y vo thp nin 1980, cc nh sn xut my tnh khc nhau s dng cch biu din d liu khc nhau. V vy, chng trnh v d liu khng tng thch trn cc my tnh khc nhau.

    Vin IEEE (Institute of Electrical and Electronic Engineers) a ra chun

    10 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Thc biu din s du chm ng dng nh phn s dng 32 v 64 bit.

    S du chm ng 32 bit c dng nh sau: du s m nh tr SEEEEEEEEmmmmmmmmmmmmmmmmmmmmmmm

    Bit msb l bit du, 8 bit k tip l s m ca c s 2 v 23 bit cn li l phn nh tr.

    Du ca s m c kt hp vo gi tr biu din ca n. V l do k thut, chun IEEE khng s dng b 2 biu din s m m m s dng phng php khc.

    V d biu din 8.5, u tin l chuyn 11

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Thc 8.5 v dng nh phn: 1000.1

    Theo chun IEEE, ch c mt k s (bit) nm bn tri du chm. Do vy, gi tr trn c vit li: 1.0001 * 23

    T y, chng ta nhn ra s m ca c s 2 l 3 v phn nh tr l 0001.

    S c t chun IEEE 32 bit s dng lch bias 127 phn s m (cch lm ny khng cn bit du ring cho s m v lm cho vic so snh cc s m d dng hn l s dng b 2, cng lm cho d dng thy

    12 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Thc c gi tr tht ca n). Trong v d ca chng ta, phn s m c gi tr nh phn ca 127 + 3 = 130 (10000010).

    T cc kt qu trn, biu din nh phn ca 8.5 s l: 01000001000010000000000000000000

    Tnh ton vi s thc i hi my tnh phi lm vic nhiu hn l vi s nguyn. V vy, mt s my tnh c tch hp b x l du chm ng (floating-point processor) tng tc tnh ton.

    Bi tp ti lp: a) Hy cho bit v sao gi tr 13

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng S Thc ca lch l 127 m khng phi l gi tr khc? b) Nu gi tr ca lch l 127 th min tr ca s m l bao nhiu?

    14 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng K T D liu dng cho chng trnh dng k t

    nhiu hn dng s. Tn, a ch, ta , c biu din bng chui k t.

    Cc k t c nh x hay m ho thnh cc s nguyn. C nhiu kiu m ho nh BCD (binary coded decimal), EBCDIC (extended BCD interchange coded).

    B m ASCII (American Standard Code for Information Interchange) c a ra vo thp nin 1960 v tr thnh b m c a chung nht. Ngy nay, Unicode c s dng ph bin hn bi v n tng thch vi b m ASCII v cho php m ho nhiu ch

    15 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng K T ci phc tp hn ting Nga, Trung Quc v nhng ngn ng khc. Chng ta s s dng b m ASCII minh ho cho tng m ho k t, khi n vn cn c s dng rng ri v m t n gin hn l dng Unicode.

    Trong b m ASCII, mi k t c gn mt gi tr nguyn 7 bit. Cho v d, A = 65 (1000001), B = 66 (1000010), C = 67 (1000011), Bit th 8 trong byte k t c dng nh bit chn-l (parity) kim tra li khi truyn thng tin hoc m ho thnh cc k t dng trong cc php ton, cc k t c

    16 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng K T du hoc cc k t trang tr.

    Mt s k t iu khin cng c nh ngha trong b m ASCII. Cc k t iu khin khng hin th ra mn hnh nhng c s dng iu khin thit b. Cho v d, line feed - LF = 10 (0001010), tab = 11 (0001011), backspace = 8 (0001000),

    xut chui Dog v xung dng, mt dy cc byte sau c gi i: 01000100 01101111 01100111 00001010 D o g LF

    Tng t, khi nhp d liu t bn phm, bn 17

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • nh Dng K T phm s gi mt dy cc gi tr nguyn tng ng vi cc k t nhp.

    Lm th no mt chng trnh bit dy bit no l ca s nguyn, k t hay du chm ng. Cu tr li l chng trnh s da vo kiu d liu ca cc i tng phn mm trong chng trnh.

    18 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • CPU/ALU CPU (Central Processing Unit) l thnh phn

    m ngi ta ngh n u tin khi m t v my tnh. Mt chu k trong my tnh von Neumann l: - Np mt lnh t b nh vo CPU. - Gii m v thc thi lnh .

    Thc thi lnh bao gm thc hin cc php tnh s hc hay lun l v cng l np hay lu tr d liu trong b nh.

    Khi thc thi lnh xong, my tnh s ly lnh tip theo t b nh v thc thi lnh . Qu trnh trn tip tc cho n khi CPU gp lnh dng.

    19 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • CPU/ALU CPU gm n v iu khin (control unit -

    CU), n v s hc v lun l (arithmetic and logic unit - ALU) v cc thanh ghi.

    n v iu khin chu trch nhim duy tr u n chu k ly v thc thi lnh, ALU thc thi cc php ton s hc, so snh (>,

  • CPU/ALU m chng trnh (program counter - PC) v thanh ghi lnh (instruction register IR).

    Thanh ghi PC lu gi a ch ca lnh thc thi k tip. Khi n v iu khin bt u chu k ly v thc thi lnh, n v iu khin chuyn lnh c a ch c lu trong PC n thanh ghi IR. Khi ny, n v iu khin t ng tng thanh ghi PC n tr n lnh k tip.

    n v iu khin gii m lnh trong IR v thc thi. Khi thc thi xong, n v iu khin ly lnh m PC ang tr n v tip tc chu k mi.

    21 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • CPU/ALU Cc thanh ghi c cng dng chung c s

    dng lu gi d liu cho CPU truy xut. Truy xut d liu trong thanh ghi nhanh hn truy xut trong b nh.

    Nhng my tnh khc nhau c s thanh ghi khc nhau, kch thc thanh ghi bng vi chiu di t ca my tnh (16, 32, 64 bit, )

    Trong kin trc Intel x86, c 4 thanh ghi 32 bit c cng dng chung (EAX, EBX, ECX v EDX) v 4 thanh ghi 32 bit dng lu a ch stack v chui (ESP, EBP, ESI v EDI).

    22 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh nh ngha ct li ca mt kin trc my tnh

    l l tp lnh my. l danh sch cc ch th m phn cng my tnh c th thc thi.

    Cc lnh ca my tnh bao gm: - Np d liu t b nh vo thanh ghi. - Lu d liu t thanh ghi vo b nh. - Nhy n v tr no trong chng trnh. - Dch cc bit ca mt gi tr sang tri hay

    sang phi. - So snh 2 gi tr. - Cng gi tr ca hai thanh ghi. - Thc hin cc php ton lun l,

    23 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh Phn ln, cc lnh ca my ch thc hin

    cc thao tc c bn. Hp ng (assembly language) l ngn ng

    lp trnh cp thp dng gi nh (mnemonic) vit chng trnh thay v bng ngn ng my.

    Cc tp lnh khc nhau cho chng ta thy ti sao mt chng trnh ch thc thi c trn mt s my tnh.

    Ngy nay, hu ht cc chng trnh c vit bng ngn ng cp cao hn hp ng.

    Khi mt chng trnh vit bng ngn ng 24

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh lp trnh cp cao (Java, C, Python, ), b x l ngn ng (language processor - trnh bin dch hay thng dch) s chuyn cc lnh ca chng trnh thnh cc lnh m my thc thi.

    Nu chng ta mun thc thi chng trnh trn my tnh khc vi tp lnh khc, thng th ch cn thay i b x l ngn ng thch hp vi my tnh mi, m ngun ca chng trnh khng thay i.

    Lnh my gm mt dy cc bit 0 v 1. Mt s bit c dng lm m lnh (op-code). V d, mt s m lnh nh ADD, Jump, Compare v

    25 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh AND. Mt s bit khc dng lm ton hng (operand). Ton hng c th l thanh ghi, bin b nh hay hng.

    V d lnh my ca Intel x86 sau y l lnh ADD (cng) thc hin thao tc Cng 40 vo thanh ghi DX: 00000001 11000010 00000000 00101000 ADD DX 40

    Byte u tin l m lnh ca lnh ADD. Byte th 2 cho bit ton hng ch l thanh ghi DX, hai byte cn li l ton hng ngun c tr l 40.

    26 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh Mt v d khc l lnh JMP (Jump nhy)

    thc hin thao tc Thit lp b m chng trnh tr/nhy n a ch 20.476: 11101001 11111100 01001111

    JMP byte thp byte cao Byte u tin l m lnh ca lnh JMP. Byte

    th 2 v 3 ln lt l byte thp v byte cao ca a ch mun nhy n.

    Sau y l mt s lnh my tiu biu ca tp lnh my Intel x86:

    27 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh MOV Gn ton hng ngun cho ch. ADD Cng hai ton hng. SUB Tr hai ton hng. DIV Chia thanh ghi cho ton hng ch. IMUL Nhn s c du. DEC Gim ton hng ch 1 n v. INC Tng ton hng ch 1 n v. AND Ly V hai ton hng. OR Ly HOC hai ton hng. XOR Ly XOR hai ton hng. NOT Ly NOT ton hng ch. IN c d liu t cng. 28 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh OUT Xut d liu ra cng. JMP Nhy khng iu kin. JG Nhy nu ln hn. JZ Nhy nu bng 0. CALL Gi chng trnh con. RET Tr v ca chng trnh con. CLC Xo c nh. CMP So snh hai ton hng. HLT Dng CPU. INT Thc hin ngt. LOOP Lp vng. NEG Chuyn thnh s m (b 2).

    29 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh OUT Xut d liu ra cng. JMP Nhy khng iu kin. JG Nhy nu ln hn. JZ Nhy nu bng 0. CALL Gi chng trnh con. RET Tr v ca chng trnh con. CLC Xo c nh. CMP So snh hai ton hng. HLT Dng CPU. INT Thc hin ngt. LOOP Lp vng. NEG Chuyn thnh s m.

    30 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh POP Ly d liu t stack. PUSH Np d liu vo stack. ROL Quay cc bit sang tri. ROR Quay cc bit sang phi. SHL Dch cc bit sang tri. SHR Dch cc bit sang phi. XCHG Hon i ni dung hai ton hng.

    31 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Tp Lnh POP Ly d liu t stack. PUSH Np d liu vo stack. ROL Quay cc bit sang tri. ROR Quay cc bit sang phi. SHL Dch cc bit sang tri. SHR Dch cc bit sang phi. XCHG Hon i ni dung hai ton hng.

    32 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • B Nh B nh (memory) my tnh c t chc

    thnh cc (cell), mi c nh a ch ring bit.

    Trc y, cc nh sn xut my tnh khng thng nht vi nhau v kch thc ca mt n v b nh. Cc my tnh khc nhau s dng kch thc nh khc nhau.

    Ngy nay, byte c dng lm n v ca b nh my tnh. Hu ht cc my tnh, bt chp chiu di t ca n l bao nhiu, mi byte b nh c a ch duy nht v c th c/ghi gi tr ti .

    33 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • B Nh Nh chng ta bit, n v o lng b nh

    nh sau: - 1 kilobyte (KB) = 1.024 byte (210). - 1 megabyte (MB) = 1.048.576 byte (220). - 1 gigabyte (GB) = 1.037.741.824 byte (230). - 1 terabyte (TB) = 1.099.511.627.776 byte (240) - 1 petabyte (PB) = 1.125.899.906.842.624 (250)

    B nh c s dng lu gi cc lnh ca chng trnh v d liu. Cc thao tc c bn vi b nh l lu/ghi v ly/c/np.

    C t nht hai thanh ghi kt hp vi mch iu khin b nh lm cho d dng c v ghi

    34 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • B Nh d liu. l thanh ghi MAR (thanh ghi a ch - memory address register) v MDR (thanh ghi d liu - memory data register).

    Khi ghi d liu, u tin CPU chuyn gi tr c ghi n MDR v a ch ghi n MAR. chu k truy xut b nh tip theo, gi tr trong MDR s c chp vo a ch trong MAR.

    Khi c d liu, u tin CPU cha a ch c vo MAR. chu k truy xut b nh tip theo, gi tr ti a ch trong MAR c chp vo MDR. T thanh ghi MDR, gi tr c th c chuyn n cc thanh ghi khc

    35 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • B Nh hoc ni no .

    B nh chnh ca my tnh c bit n l b nh RAM (b nh truy cp ngu nhin - random access memory). Chng ta c th truy xut bt k a ch no ca b nh th thi gian truy xut l nh nhau.

    Ngoi b nh chnh, cc nh thit k my tnh cng tch hp vo CPU mt b nh c dung lng nh, tc truy cp nhanh c gi l b nh cache (b nh m).

    B nh cache lu gi ni dung ca d liu c truy cp sau ny c th dng li, nhm lm tng tc ca my tnh.

    36 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut Hu ht d liu s dng cho chng trnh

    khng nm trn my tnh. Khi d liu c x l xong, chng ta thng mun chng hin th ra mn hnh hay xut ra my in.

    C nhiu thit b nhp/xut khc nhau: - Giao tip vi ngi: bn phm, chut, mn

    hnh. - My tnh trc tip s dng: a, thit b kt

    ni mng. Cc thit b nhp/xut c tc rt khc

    nhau, nhng tt c u chm hn CPU v b nh chnh.

    37

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut Trong nhng my tnh trc y, CPU s i

    nhp k t. Mt lnh my giao tip vi bn phm sn sng nhn k t v lnh my k tip s kim tra xem k t nhp cha. Nu k t cha nhp, chng trnh s lp vng kim tra (polling). Phng php ny c gi l programmed I/O with polling hay busy waiting.

    Cc my tnh ngy nay s dng h thng ngt (interrupt system) trnh trng hp phi ch v h iu hnh qun l tt c nhp/xut.

    Mi thit b nhp/xut c kt ni vi my 38

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut tnh thng qua b iu khin nhp/xut - I/O controller. B iu khin nhp/xut c gn b nh vi dung lng nh lm b m (buffer) cha d liu tm thi trong qu trnh nhn hay gi.

    Khi chng trnh yu cu xut, h iu hnh s chuyn d liu n b nh m ca b iu khin nhp/xut, b iu khin nhp/xut s chuyn d liu n thit b xut. Khi d liu c chuyn xong, b iu khin nhp/xut to mt ngt (interrupt) bo cho h iu hnh bit l chuyn xong. H iu hnh s p li ngt bng cch bt u thc thi thao tc xut khc. 39

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut Khi chng trnh yu cu nhp, h iu

    hnh s tm dng thc thi n v ra lnh cho b iu khin nhp/xut ca thit b bt u c d liu. Sau , h iu hnh chuyn iu khin ca CPU n chng trnh th hai thc thi, trong khi chng trnh u ang i nhp. Khi d liu c nhp xong, b iu khin nhp/xut s sinh ra mt ngt. H iu hnh s p li bng cch tm dng chng trnh th hai, ri chuyn d liu t b nh m ca b iu khin nhp/xut n chng trnh u v tip tc thc thi chng trnh u.

    40 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut Cc thit b nhp/xut c phn lm 2 loi

    l thit b k t (character device) v thit b khi (block device): 1. Thit b k t: giao tip vi bn ngoi tng

    byte, cc byte ny khng c a ch. Ngha l ch c th truy xut d liu theo dng tun t. a s cc thit b nhp/xut dng vi my tnh thuc loi ny nh bn phm, chut, card mng, my qut, my in,

    2. Thit b khi: giao tip vi bn ngoi tng khi d liu, mi khi c a ch c nh v c lp. Cc thit b loi ny nh CD-ROM, m thanh, cc thit b hin th,

    41 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Nhp/Xut Cc thit b k t s sinh ra ngt cho mi k

    t c truyn i, cc thit b khi s sinh ra ngt ch khi ton b khi c truyn i.

    Hu ht cc my tnh ngy nay u c b iu khin truy xut b nh trc tip (direct memory access - DMA) dng vi thit b khi.

    B iu khin DMA dng truy xut trc tip b nh v chia s cng vic truy xut b nh vi CPU. DMA truyn d liu trc tip gia b m ca b iu khin nhp/xut vi b nh chnh, n khng yu cu bt c phc v no t CPU.

    42 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chng 4: PHN MM

  • Ni Dung 1. Cc th h ca ngn ng lp trnh. 2. Trnh bin dch v trnh thng dch. 3. My o. 4. Lp trnh th tc. 5. Lp trnh hng i tng. 6. Ngn ng kch bn. 7. Ngn ng lp trnh hm. 8. C php ngn ng v ng ngha.

    2 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh Cc nh khoa hc my tnh gi chung cc

    ngn ng lp trnh, cc chng trnh v cc sn phm l phn mm (software).

    Mt lnh my l mt dy cc bit 0 v 1 c cha trong b nh my tnh.

    Khi my tnh c b nh, n xc nh xem dy bit c c phi l lnh my khng. Nu ng, my tnh thc thi lnh , ngc li my tnh s dng v lnh khng hp l.

    Mi my tnh (mt h CPU) c mt tp lnh my hu hn. Hu ht cc my tnh ngy nay c t 75 n 150 lnh my trong tp lnh.

    Mi kin trc my tnh c th hin trong 3

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh tp lnh. Cc tp lnh ca cc kin trc khc nhau s khc nhau. V d, tp lnh ca Intel Pentium khc vi ca Sun SPARC. C khi thc hin cng mt tc v, mt lnh ca kin trc ny cng s khc vi kin trc khc.

    Trong cc my tnh trc y, vic lp trnh c thc hin trc tip bng lnh my. Ngi lp trnh lm vic vi cc bit 0 v 1 vit m cho mi lnh. V d sau l ba lnh ca my tnh 16 bit cng hai gi tr c cha trong b nh ti a ch 64 v 65 v lu kt qu vo a ch 66:

    4 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh 0110000001000000 Np gi tr ti 64 vo AX 0100000001000001 Cng vi gi tr ti 65. 0111000001000010 Cha gi tr AX vo 66.

    Khi tt c lnh my c to, ngi lp trnh lu chng vo b nh. Sau , thit lp thanh ghi PC tr n lnh u tin ca chng trnh v thc thi.

    Cc thao tc c bn ca my tnh l c lnh trong b nh c tr bi thanh ghi PC, tng thanh ghi PC, thc thi lnh v lp li.

    Mt s ci tin trc y lp trnh hiu qu hn l s dng hp ng (assembly language). Trong hp ng, chng ta c th

    5 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh c m lnh bng t gi nh (ch v s - mnemonic) thay v m my v mi t gi nh ng vi mt lnh my.

    Hp ng c gi l ngn ng th h th hai (second-generation language). Trong hp ng, ngi lp trnh vit m lnh gi nh v n s c bin dch (bng trnh hp dch assembler) trc tip thnh m my. Mt s t gi nh tiu biu nh sau: - LDA m: Np gi tr ti a ch m vo thanh

    ghi AX. - ADA m: Cng gi tr ca AX vi gi tr ti a

    ch m, kt qu cha trong AX. 6 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh - ALS: Dch cc bit trong AX sang tri 1 n

    v. - SSA: Nu bit msb ca AX l 1, b qua lnh

    k tip. Ngc li, thc thi lnh k tip. - JMP m: Nhy n a ch m.

    Sau y l m hp ng vit li 3 lnh my trn: LDA 100 // 100 octal = 64 ADA 101 // 101 octal = 65 STA 102 // 102 octal = 66

    Ngi lp trnh thng s dng hp ng vit chng trnh v n gn gi vi phn

    7 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh cng my tnh hoc nhng chng trnh ti u tc hay b nh.

    Nh l mt cng c gio dc, lp trnh hp ng rt quan trng, bi v n l cch tt nht bit c my tnh lm g v lm nh th no.

    Vo nm 1954, ngn ng th h th ba ra i. Ngn ng l FORTRAN, do John Backus ca IBM pht minh.

    FORTRAN l ch vit tt ca FORmula TRANslation. Ngn ng ny gip ngi lp trnh lm vic mc tru tng cao hn.

    Thay v b hn ch bi tp lnh my, ngi 8

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh lp trnh by gi s dng cc cu lnh ging nh ting Anh v cc biu thc ton hc. Ngn ng cng bao gm cc lnh r nhnh, lp v nhp/xut.

    Sau y l cu lnh ca FORTRAN. Cc tn bin X, Y v Z tr thnh tn i din cho cc v tr nh. Cu lnh s cng ni dung ca Y vi Z v cha tng vo X: X = Y + Z

    So snh vi hp ng, cu lnh ca FORTRAN d c, d vit v ngn gn hn.

    FORTRAN l ngn ng th tc (procedural language). Ngha l, ngi lp trnh phi t

    9 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh chc hp l mt dy cc bc cn thit thc thi tc v no .

    Cc ngn ng th tc cn c gi l cc ngn ng mnh lnh (imperative language), bi v cc cu lnh ca ngn ng l nhng mnh lnh cho my tnh cc bc ca chng trnh ch nh mi hnh ng ca my tnh.

    Khc vi cc ngn ng mnh lnh l cc ngn ng hng i tng (object-oriented). Hu ht, nhng khng phi l tt c cc chng trnh ngy nay c vit bng cc ngn ng mnh lnh.

    10 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Th H ca Ngn Ng Lp Trnh Cho n nay, cc ngn ng th h th ba

    gm: LISP (for LISt Processing), Cobol, PL/1, BASIC, ADA, C, Smalltalk, C++, Java. Trong , Smalltalk, C++ v Java l cc ngn ng lp trnh hng i tng.

    11 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch Vi s ra i ca FORTRAN, chng trnh

    tr nn phc tp hn to ra m my. Mt chng trnh khc c gi l trnh bin dch (compiler) dng dch ngn ng lp trnh cp cao thnh m my.

    u vo ca trnh bin dch l m ngun c vit bng ngn ng cp cao. u ra ca trnh bin dch l m my.

    V d sau l on m ca ngn ng FORTRAN: DIMENSION X(1000) READ(*, 1) N, M FORMAT(2I5) WRITE(*, 2) M, N 12 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch FORMAT('AVERAGES ON ', I6, ' TESTS FOR EACH OF ', I6, 1 SUBJECTS) EM=M DO 5 J=1, N READ(*, 3) ID, (X(K), K=1, M) FORMAT(I5, 25F3.0/ (5X, 25F3.0)) SUM = 0.0 DO 4 K=1, M SUM = SUM + X(K) AV = SUM / EM WRITE(*, 6 ) J, ID, AV FORMAT(I6, 3X, 'SUBJECT ', I6, 3X, 'AV= ', F9.2) STOP END 13

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch Trnh bin dch x l m ngun qua hng lot

    cc bc: 1. Bc u tin gi l qut (scanning) hay

    phn tch t vng (lexical analysis) v xut ra mt chui cc token (t t/th t). Token l t ca ngn ng, v d READ, FORMAT, AV, 4 v 3X l cc token trong chng trnh v d.

    2. K n, trnh bin dch phn tch t loi (parse) chui token . Bc ny c gi l phn tch c php (syntax analysis). Xem xt vn phm hay cc qui tc ca ngn ng. Trnh bin dch s dng cy

    14 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch phn tch c php (parse tree) thm tra cc lnh trong m ngun l nhng lnh hp l ca ngn ng. Ti bc ny, trnh bin dch tr v thng bo li, v d thiu du phy hay sai t kho.

    3. Nu tt c cu lnh u hp l, trnh bin dch tip tc phn tch ng ngha (semantic analysis). Trong giai on ny, ngha (meaning) ca cc lnh c to, cc lnh s c chuyn thnh cc m thc thi (executable code).

    Cc trnh bin dch ngy nay thng bin dch chng trnh ngun thnh ngn ng

    15 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch trung gian (intermediate language) v sau s chuyn thnh m my. Trong khi cc trnh bin dch trc y hoc l to m hp ng v sau s hp dch (assemble) bng trnh hp dch (assembler) hoc l to trc tip thnh m my.

    u im ca trnh bin dch ngy nay l c th bin dch nhiu ngn ng khc nhau thnh m trung gian dng tng qut, khng ph thuc vo mi trng/nn (platform) v sau c th sinh ra m my ti u cho tng loi my.

    Kt qu ca s bin dch chng trnh l tp 16

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch tin m i tng (object code). N l tp tin nh phn ca cc lnh my v s thc thi khi chng trnh chy.

    Trnh bin dch thc hin dch m ngun thnh m thc thi ch 1 ln, khi chng trnh chy, cc m ny s thc thi ngay lp tc.

    i vi trnh thng dch (interpreter) th khc. Trnh thng dch thc hin dch tng dng m ngun thnh m my mi thi im khi chng trnh thc thi. V d, BASIC l ngn ng s dng trnh thng dch.

    Ni chung, mt chng trnh c thc thi bng trnh thng dch s chy chm hn

    17 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Trnh Bin Dch v Trnh Thng Dch chng trnh c bin dch thnh m my. Bi v, mi thi im trnh thng dch phi phn tch tng dng lnh v chuyn n thnh m my khi chng trnh chy.

    Trnh thng dch thng cung cp thng bo chun on tt hn v n lm vic trc tip vi tng dng lnh.

    S khc bit gia ngn ng s dng trnh bin dch v thng dch i khi cng khng r rng. C mt s ngn ng s dng c trnh thng dch v bin dch nh BASIC, PERL, LISP, Java,

    18 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • My o My o (virtual machine) l my tnh c

    nh ngha bi phn mm hn l phn cng. My o chy cc chng trnh ging nh my tnh tht, nhng my o thc s c iu khin bi chng trnh khc, mt s to dng bi phn mm l ly, gii m v thc thi cc lnh ca chng trnh.

    Thut ng my o m t mt lp tru tng c thm vo gia ngi dng v phn cng, v th cc nh khoa hc my tnh cng s dng thut ng ny m t phn mm to nn s th hin cc dng khc nhau ca my tnh.

    19 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc Theo nhiu ngi, lp trnh th tc

    (procedural programming) l m hnh t nhin. Mt chng trnh c m t n gin ch l mt danh sch cc lnh c thc thi theo trnh t, tc l mt th tc.

    Cc ngn ng lp trnh th tc cng c gi l cc ngn ng mnh lnh (imperative language).

    Trong lp trnh th tc, m lnh cho mt cng vic c th c cha trong mt th tc c tn. Th tc cng cn c gi l subroutine. Cho v d, hy to mt th tc tm lch chun ca mt dy s.

    20 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc lch chun c nh ngha nh sau. Gi

    l lch chun v l trung bnh ca cc phn t trong dy s:

    = ( )=

    / Sau y l th tc c vit bng m gi

    tnh lch chun:

    21 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc SUM = 0.0, SUMSQUARES = 0.0 n = size of the array of scores Start with the first score and continue until all the scores have been processed SUM = SUM + score SUMSQUARES = SUMSQUARES + score2 End of loop MEAN = SUM / n Return SquareRoot((SUMSQUARES n * MEAN2) / n)

    Sau y l on m lnh c vit bng Java vi lp Sd cha phng thc stdDev():

    22 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc import java.lang.Math; class Sd { public static void main(String args[]) { float[] numbers = {3, 5, 7, 9}; System.out.println("Std. dev. = " + stdDev(numbers)); } public static float stdDev(float scores[]) { float sum = 0; float sumSquares = 0; int n = scores.length; 23

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc for(int i = 0; i < n; i++) { sum = sum + scores[i]; sumSquares = sumSquares + scores[i]*scores[i]; } float mean = sum / n; float variance = (sumSquares - n * mean * mean) / n; return (float)Math.sqrt(variance); } }

    24 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc Trong lp trnh th tc, cc m lnh c th

    c vit trong mt khi gi l th tc (procedure)/hm (function). Khi ny c truy xut thng qua tn ca n v c th ti s dng.

    Th tc nhn tp gi tr nhp v tr v tp kt qu. Lu l cc bin bn trong th tc nh sum v sumSquares c tm vc (scope) ch bn trong th tc . iu ny gip trnh ln ln cc bin ang s dng vi cc bin cng tn tm vc/khi bao.

    Mt th tc c th c truy xut bi chng trnh khc. Ch n gin l chng ta thm th tc vo th vin.

    25 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc Khi nim lp trnh cu trc (structured

    programming) c hiu nh l tp con ca lp trnh th tc. Phng php lp trnh cu trc thng i i vi phng php phn tch trn xung (top-down). Tc v ca chng trnh c chia thnh nhiu th tc/hm. iu ny rt quan trng trong thit k chng trnh, bi v chng trnh c cc b ha nn d c, d bo tr, tin cy cao, ti s dng v to th vin .

    Lp trnh cu trc s dng cc lnh c cu trc nh cc lnh r nhnh, lp gi cc th tc/hm c nh ngha. Cc ngn ng

    26 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Th Tc h tr lp trnh cu trc nh ALGOL, ADA, Pascal, C,

    Nhc im: Trong lp trnh cu trc, gii thut lun ph thuc cht ch vo cu trc d liu, do khi thay i cu trc d liu, phi thay i gii thut. Ngha l phi vit li chng trnh.

    Khi nim lp trnh khng cu trc (unstructured/non-structured programming) c hiu l chng trnh c s dng cc lnh GOTO hay JUMP. Kt qu s lm cho chng trnh kh c, kh tm li, kh ti s dng.

    Cc ngn ng h tr lp trnh khng cu trc nh Assembly, BASIC,

    27 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Hng i Tng Lp trnh hng i tng (Object-oriented

    programming OOP) c pht trin sau ny, n cung cp tin cy v ti s dng phn mm xa hn na.

    Thay v lp trnh th tc, lp trnh hng i tng da vo cc i tng phn mm nh l cc n v ca chng trnh.

    Mt i tng l mt th hin (instance) ca mt lp (class). to ra mt th hin, ngi ta s dng cc c t ca lp . V d MyCar l mt th hin ca lp Automobile: c 4 bnh, c ng c, c gh ngi,

    28 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Hng i Tng Mt th hin ca mt lp c trng thi hay

    cc nt c trng (characteristic) ca ring n. V d, mu ca th hin MyCar l v ca YourCar l xanh. Hoc MyCar c 170 hp (m lc) v YourCar c 200 hp, Tt c cc c trng mu sc, dung tch ng c (v cc c trng khc) c gi l thuc tnh (attribute) hay cc bin th hin (instance variable).

    Cc i tng cng c hnh vi (behavior). Hnh vi c xc nh bi cc th tc ca lp , cc th tc nh th c gi l cc phng thc (method). V d, lp

    29 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Hng i Tng Automobile c phng thc nh changeSpeed() thay i tc xe nhanh hay chm hn, park() xc nh kch thc ca ch u xe. Phng thc cn c gi l phng thc th hin (instance method)

    Lp trnh hng i tng ng gi (encapsulate) trng thi v hnh vi ca i tng. Chng trnh ch c th truy xut cc thuc tnh public v phng thc public ca i tng.

    Mt tng quan trng trong lp trnh hng i tng l s tha k (inheritance). Ngha l chng ta c th to mt lp mi mnh

    30 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Lp Trnh Hng i Tng hn bng cch tha k t lp trc v thm nhng tnh nng mi ca n. V d, lp Limousine tha k t lp Automobile.

    C lin quan n tha k l khi nim v tnh a hnh (polymorphism) - tnh cht th hin nhiu hnh thi ca i tng. Tnh a hnh l s thc thi ca mt phng thc c th cho kt qu khc nhau ph thuc vo lp ca i tng m phng thc c gi.

    V d, lp Automobile v Limousine (xe t hng sang) u c phng thc park(). Tuy nhin, phng thc park() ca Limousine yu cu ch u xe ln hn trong phng thc park() ca Automobile. 31

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Kch Bn Ngy nay, c mt s ngn ng lp trnh l

    ngn ng kch bn (scripting language). tng ban u ca script (kch bn) l mt tp cc lnh ca h iu hnh c t trong tp tin. Khi ngi s dng thc thi tp tin kch bn (script file), tp lnh trong c thc thi. Cc kch bn rt hu dng trong vic t ng ho cng vic thng ngy.

    Do tnh hu dng ca ngn ng kch bn khi dy nhiu nh pht minh pht trin ngn ng mi vi nhiu tnh nng v tin li hn. Cc ngn ng nh Perl, PHP, Python, JaVaScript, l nhng ngn ng kch bn. Tuy nhin, ngn ng kch bn c thng dch, v th tc thc thi khng phi l u im chnh ca n. 32

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Lp Trnh Hm Cc ngn ng lp trnh hm (functional

    programming language) c pht minh t rt sm trong lch s my tnh. Nm 1958, John McCarthy cho ra i ngn ng LISP (LISt Processing).

    Ngn ng lp trnh hm thng dng x l cc hm ton hc. Mt hm cn mt hay nhiu i s v tr v mt tr. Cho v d, phng trnh ca ng parabol l: f(x) = 2x2 + 5

    Khi chng ta cung cp gi tr cho x (v d x = 3), th hm trn s tr v kt qu nh sau: f(3) = 2(3)2 + 5 = 23

    33 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Lp Trnh Hm Vi ngn ng lp trnh hm, vic tnh ton

    c thc hin bng cch truyn cc i s n mt hm v nhn kt qu tr v ca hm .

    Trong cc v d, chng ta s s dng ngn ng Scheme. Ngn ng Scheme c gi l ngn ng thao tc k hiu (symbolic manipulation), ra i nm 1975 v thuc h LISP.

    Mt biu thc trong Scheme l mt atom (nguyn t) hay mt list (danh sch). Mt atom l mt s, k t, tn hay hm. Mt list l mt tp cc biu thc c cha trong du

    34 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Lp Trnh Hm ngoc (). Cc phn t trong list c th l atom hay l mt list khc.

    Trong bt k ngn ng lp trnh hm no, mt s hm c bn s c to sn. Ngoi ra, ngi lp trnh c th t nh ngha hm. Sau y l mt s v d v Scheme: 1.(+ 3 5) 8 2.(+ 3 5 7 4 2) 21 3.(/ (+ 3 5) (- 7 5)) 4 4.(list 1 5 6) (1 5 6) 5.(car (list 1 5 6)) 1 6. (cdr (list 1 5 6)) (5 6)

    35 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

    Scheme/LISP

  • Ngn Ng Lp Trnh Hm 7.(define sum (lambda (n m) (+ n m))) > (sum 4 3) 7 Trong v d trn, nh ngha hm sum s dng k php lambda (lambda notation). u im l khng phn bit nh ngha hm vi nh ngha gi tr. 8.(define factorial (lambda (n) (if (
  • Ngn Ng Lp Trnh Hm > (factorial 5) 120

    Lu : Thay v s dng cc lnh if lng nhau, Scheme cho php s dng lnh cond. V d: cond((>= grade 8) Gioi) ((>= grade 7) Kha) ((>= grade 6) TB kha) ((>= grade 5) Trung binh) (else Kem)))

    37 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Lp Trnh Hm 9.(define listSum (lambda (n) (cond ((null? n) 0) ((null? (cdr n)) (car n)) (else (+ (car n) (listSum( cdr n)))) ))) > (listSum (list 2 4 5)) 11

    Lp trnh hm thng c s dng trong tr tu nhn to (artificial intelligence) v h chuyn gia (expert system). 38 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha Trc khi bin dch chng trnh ngn ng

    cp cao thnh m my, b x l ngn ng (chng trnh dch) phi thc hin nhiu tc v nh phn tch t vng (lexical analysis), phn tch c php (syntax analysis) v sinh m (phn tch ng ngha - semantic analysis).

    Trong bc phn tch t vng, chng trnh dch c dy k t t tp tin m ngun v to cc token ca ngn ng . Token l t ca ngn ng v c nhiu dng, c th l t kho (key word) nh String, mt k hiu nh +, mt danh hiu nh myCount, mt hng nh 3.14 hay mt chui k t nh Please enter your name:. 39

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha Sau khi cc token c to, b phn tch c

    php (parser) xy dng cy phn tch c php (parse tree) theo cc qui tc vn phm ca ngn ng v tm li nu c.

    C php ca ngn ng m t cc lnh hp l ca ngn ng . C php ng, khng m bo l kt qu ca chng trnh ng, nhng mt chng trnh ng phi c c php ng.

    Ngy nay, cc qui tc c php thng biu din dng Backus-Naur form (BNF) hay BNF m rng (EBNF). T Backus-Naur c

    40 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha ghp t tn John Backus l nh pht minh ra ngn ng FORTRAN v Peter Naur.

    BNF s dng mt tp cc qui tc hay lut sinh (production rule) m t vn phm hay c php.

    Bn tri ca lut sinh, BNF cho thy mt khi nim ngn ng hc c bit nh l cc k hiu khng kt thc (non-terminal). V d, k hiu khng kt thc trong ting Anh l cu (sentence) v ng ng t (verb phrase). Trong ngn ng lp trnh, k hiu khng kt thc c th l expression hay term.

    41 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha Bn phi ca lut sinh, BNF cho thy s kt

    hp ca k hiu khng kt thc v/hoc k hiu kt thc thay th cho k hiu khng kt thc bn tri.

    V d sau l vn phm ca cc biu thc ton hc: 1.expression term | expression addop

    term 2.term factor | term multop factor 3.factor identifier | number | -factor

    | (expression) 4.addop + | - 5.multop * | /

    42

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha Cc vch ng | ngha l hoc. Cc lut

    sinh 3, 4, v 5 to cc k hiu kt thc. Trong lut sinh 1, mt biu thc c th l term hoc l mt biu thc khc addop (+ | -) vi term.

    Trong lut sinh 2, term c th l factor hoc l mt term khc multop(* | /) vi factor.

    Cho v d, phn tch c php biu thc sau da vo vn phm trn: X * 3 + 4

    p dng lut sinh 1: X * 3 + 4 (X * 3) addop term expr + 4

    43 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha p dng lut sinh 2 v 3 cho term:

    term factor number 4

    p dng lut sinh 1 v 2 cho (X * 3): (X * 3) term term multop factor (X * 3) X * 3

    p dng lut sinh 3 cho factor: factor number 4

    p dng lut sinh 2 v 3 cho term: term factor identifier X X X

    44 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha S phn tch mt biu thc thnh cc k hiu

    kt thc da vo cc qui tc vn phm c gi l dn xut (derivation). Kt qu ca s dn xut thnh cng l cy phn tch c php hay cy c php (syntax tree). Sau y l cy phn tch c php ca dn xut m chng ta va thc hin:

    45 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha

    46 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • C Php Ngn Ng v Ng Ngha tnh ngha ca biu thc, cy phn tch

    c php c duyt (traverse) t di ln. Tnh php nhn trc ri n php cng. Lc ny, trnh bin dch s to cc lnh my tng ng thc thi biu thc. y l giai on cui cng c gi l sinh m (code generation).

    47 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chng 6: C S D LIU

  • Ni Dung 1. Gii thiu. 2. Cc loi c s d liu. 3. Cc u im khi s dng CSDL. 4. M hnh ha min d liu. 5. Xy dng CSDL quan h t m hnh d liu 6. Chun ha d liu. 7. Ngn ng SQL. 8. Ngn ng nh ngha d liu (DDL). 9. Ngn ng thao tc d liu (DML).

    2 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Gii Thiu Ngy nay, CSDL c mt khp ni. Hu ht

    trong cc ng dng, chng ta u gp CSDL. CSDL to hiu qu, an ton v linh ng trong vic lu tr d liu.

    Ngay sau khi my tnh th h th hai ra i (sau thp nin 1950), s c mt ca cc ngn ng lp trnh cp cao i hi dung lng lu tr ln. D liu c cha trong cc tp tin (tp cc mu tin) trn bng t. Cch lu tr ny sm bc l nhng tr ngi nht nh.

    u tin l nhng tp tin ln, cn thi gian tm kim lu hn. Chng ta hy xem li cc gii thut tho lun trc y, thi gian

    3 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Gii Thiu ca gii thut tm kim tun t l O(n). V th, nhng tp tin ln, cn nhiu thi gian hn tm phn t no . Chng hn, chng ta cn tm mt khch hng trong hng triu khch hng l iu khng th.

    Mt vn khc trong vic t chc d liu khng hp l, chng hn cng mt thng tin ca khch hng nhng c lu li nhiu ln s dn n vic s dng b nh lu tr khng hiu qu.

    4 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Loi C S D Liu Bt u t sau thp nin 1960, cc h CSDL

    (database system) c pht trin. Hai loi CSDL u tin l loi phn cp (hierarchy) v mng (network). IBM a ra DL/1 l m hnh CSDL phn cp v hng lot phn cng v phn mm khc cng vi m hnh CSDL mng.

    Cc cu trc CSDL phn cp v mng c t chc thnh nhiu tp tin quan h vi nhau truy cp thng tin nhanh hn, bo mt tt hn v d dng cp nht hn. Tuy nhin, cc cu trc ny kh phc tp v khng linh ng.

    5 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Loi C S D Liu Vo nm 1970, E. F. Codd ca IBM a ra m

    hnh CSDL quan h (relational database). M hnh quan h da nhiu vo l thuyt ton.

    Theo m hnh ny, d liu c cha trong cc bng, gi l cc quan h. Mi quan h/bng lu gi thng tin v mt kiu thc th (entity type) v cc thc th quan h nhau bi thng tin lu trong cc bng .

    Codd cng a ra mt ngn ng truy vn d liu da vo l thuyt tp hp. Vo thp nin 1980, ngn ng truy vn c cu trc (Structured Query Language - SQL) c th gii bit n. Sau , IBM bt u bn CSDL

    6 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc Loi C S D Liu quan h c tn l DB2.

    Ngy nay, m hnh d liu quan h c s dng rng ri v l m hnh m chng ta s tho lun.

    7 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc u im Khi S Dng CSDL ng c chnh ca vic s dng CSDL l tc

    truy xut. Mt CSDL c thit k ng cch, s truy xut cc phn thng tin ring bit c th thc hin ngay tc thi, bt k s mu tin hay kch thc ca CSDL. Tc truy xut c th biu din l O(k), trong k l hng s c gi tr b.

    Vic s dng CSDL lm cho cc chng trnh truy xut d liu m khng cn bit n nh th no. Nu mt chng trnh c tp tin thng thng, n phi bit kiu d liu, cc nh dng v th t cc trng (field) ca tp tin .

    8 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc u im Khi S Dng CSDL Tuy nhin, khi chng trnh c t tp tin

    CSDL, n thng ch cn xc nh r thng tin g m n mun.

    CSDL cng cho php tn dng hiu qu khng gian lu tr, gim d tha d liu n mc ti tiu.

    Cc h qun tr CSDL (Database management system - DBMS) cng tng tnh bo mt CSDL thng qua mt s cch. Cho v d, cc tin ch sao lu v khi phc d lun c sn trong cc DBMS v d liu c th c sao lu c khi n ang c s dng.

    Cc h CSDL cng h tr cho khi nim v 9

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc u im Khi S Dng CSDL giao tc (transaction). Mt giao tc l mt nhm cc thay i c quan h nhau tc ng n CSDL. Ngha l, tt c thay i phi xy ra hoc l khng xy ra.

    V d, chng ta ang chuyn tin t ti khon tin gi tit kim (savings account) v gi tin ny vo ti khon tin gi thanh ton (checking account).

    Chng ta mun c hai thao tc rt v gi thc hin thnh cng, nhng nu rt tin thnh cng v gi tin b li th sao? Do vy, chng ta phi khi phc li tin rt t ti khon tin gi tit kim.

    10 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc u im Khi S Dng CSDL Cc h CSDL cho php nhng thay i d

    liu c nhm vo trong cc giao tc thc hin thnh cng trn vn hoc l khng thc hin iu g.

    Cc DBMS cng tng tnh bo mt d liu v n cho php nhiu ngi dng. V d nh doanh nghip Amazon.com cho php nhiu ngi dng t khp th gii truy cp CSDL xem v t hng cng lc. Nhng thay i ca ngi dng ny s khng gy tr ngi cho ngi dng khc.

    DBMS qun l nhng kh nng xung t c th xy ra bng cch kha d liu tm thi khi cn thit. 11

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Cc u im Khi S Dng CSDL Vi tt c l do trn, cc h CSDL c s

    dng ph bin. Nh chng ta thy, vic s dng cc h CSDL cng tr nn thun tin hn khi dng ngn ng SQL. Do vy, hu ht cc ng dng ngy nay u s dng CSDL.

    12 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Trc khi to CSDL quan h, ngi thit k

    phi qua mt qu trnh gi l m hnh ha d liu (data modeling).

    Giai on m hnh ha nhn dng cc thc th (entity), cc thuc tnh (attribute) ca mi kiu thc th (entity type) v cc mi quan h (relationship) gia cc kiu thc th khc nhau.

    Cho v d, trong vic xy dng CSDL cho mt trng i hc, cc kiu thc th gm cc sinh vin, cc ging vin, cc k tc x, cc phng hc, cc chuyn ngnh, cc kha hc,

    13 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Hnh sau cho thy m hnh d liu ca cc

    thc th v cc mi quan h m chng ta ang tho lun c th hin trong lc thc th - mi quan h (entity-relationship: E-R).

    14 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu

    15 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Cc thuc tnh ca mt sinh vin gm tn, a

    ch, k tc x ang , s phng, chuyn ngnh, c vn,

    Mt mi quan h gia kiu thc th ging vin vi sinh vin l mi quan h advisor/advisee.

    Thc th l th g m CSDL s lu tr. Khi nim kiu thc th thng tng ng vi lp ca cc i tng th gii thc, chng hn cc ging vin, cc xe, cc ta nh. i lc kiu thc th c hiu theo ngha tru tng hn. Vn chnh ca m hnh ha d liu l xc nh cc kiu thc th ca m hnh. 16

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Vi cc khi nim quen thuc trong lp trnh

    hng i tng, mt kiu thc th tng t nh mt lp. Mi thc th ring bit ca mt kiu thc th (mt th hin ca mt lp i tng) s c biu trng bi mt tp cc gi tr thuc tnh.

    Thc th nh l danh t, trong khi thuc tnh nh l tnh t hay t ng m t ca thc th m CSDL s lu tr. Cho v d, thc th sinh vin c th c cc thuc tnh l Bill Smith, Akron, OH, Fisher Dorm, 323, Computer Science, Professor Findley,

    17 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Cu trc ca mt CSDL c m t bi lc

    (schema) ca n. Nh chng ta s thy sau ny, chuyn m hnh d liu thnh lc CSDL quan h , mi thc th ca mt kiu thc th phi duy nht.

    Tp gi tr cc thuc tnh ca mi thc th phi khc vi tt c thc th khc trong cng kiu. V d, chng ta c th gn thuc tnh kha cho mi thc th ca kiu thc th sinh vin phn bit cc sinh vin vi nhau.

    Gi s mi quan h gia kiu thc th ging vin vi sinh vin l mi quan h advisor/advisee. iu quan trng l chng

    18 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu ta phi quyt nh xem mi quan h ny l 1:1 (mt-mt), 1:N (mt-nhiu) hay N:M (nhiu-nhiu). Cc t s ny c gi l t s lc lng (cardinality ratio). Chng ta c th hiu lc lng l s lng th hin ca mt kiu thc th.

    Trong v d trn, chng ta c th chn mi quan h 1:N (mt c vn cho nhiu sinh vin). Ngc li, nu nh trng yu cu nhiu c vn cho mi sinh vin (v d, mt c vn hc tp v mt c vn i sng) th mi quan h s c chn l N:M (nhiu c vn cho mi sinh vin v nhiu sinh vin cho mi c vn).

    19 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • M Hnh Ha Min D Liu Mt vn na l chng ta cn xc nh s

    th hin ti thiu ca kiu thc th. V d, nu yu cu l mi sinh vin phi c c vn th s th hin ti thiu pha ging vin ca mi quan h advisor/advisee phi l 1. Ngc li l 0 (ngha l c thc th sinh vin nhng khng c kt hp vi c vn no).

    Tng t, nu yu cu l mi ging vin u l c vn th s th hin ti thiu pha sinh vin ca mi quan h advisor/advisee phi l 1. Ngc li l 0 (ngha l c thc th ging vin nhng khng c vn cho sinh vin no).

    20 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    M hnh d liu gm c lc khi nim (conceptual schema) hoc s m t cu trc ca CSDL.

    Sau khi lc khi nim c to, cng vic k n l chuyn i m hnh d liu thnh cc bng, cc mi quan h v cc qui tc ton vn d liu (data integrity).

    Mt kiu thc th l mt bng, mi hng trong bng l mt th hin ca kiu thc th. Trong thut ng CSDL quan h, mt bng c gi l mt quan h (relation). Lu l quan h khc vi mi quan h (relationship). 21

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    Mt quan h gm cc hng, mi hng l mt th hin ca kiu thc th v mi ct l mt thuc tnh ca kiu thc th.

    Mi hng ca quan h c gi l mt b (tuple). Ngi ta thng dng t hng nhiu hn t b. B l mt hng ca bng, mt th hin ca quan h, mt th hin ca kiu thc th. Mi b gm gi tr cc thuc tnh ca th hin ca kiu thc th. Thuc tnh cng cn c gi l trng (field).

    Tm li, cc t ng ngha: quan h/bng, b/hng, thuc tnh/trng/ct .

    22 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    Bc u tin l to mt quan h cho mi thc th trong m hnh d liu. Mi thuc tnh ca kiu thc th trong m hnh tr thnh tn ct trong quan h. Khi ny, chng ta phi chn mt thuc tnh hay mt tp thuc tnh c gi l kha chnh (primary key), dng nhn dng duy nht mi hng ca quan h.

    Mt kha chnh l tng th ngn, dng s v khng bao gi thay i. t c iu l tng th khng phi lc no cng c c, nhng n gip chng ta khi chn kha.

    23 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    Cho v d, nu bng Student gm cc thuc tnh name, address, social security number (SSN) v mt s thuc tnh khc, chng ta c th chn hai thuc tnh nameaddress hoc mt thuc tnh SSN lm kha. Chn SSN th tt hn, bi v SSN lm cho hiu qu hn khi x l, do n l kiu s v t thay i hn l tn hay a ch.

    i khi khng c thuc tnh r rng chn lm kha tt trong cc thuc tnh ca bng. Thay v chn nhiu trng lm kha, cch tt hn l chng ta s dng kha i din (surrogate key).

    24 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    Kha i din ch n gin l mt s, c sinh ra bi h qun tr CSDL v gn cho mi b. Trong v d trn, nu thuc tnh SSN khng tn ti trong bng Student, chng ta s to ra kha i din cho bng Student v gi n l StudentID.

    Khi cc quan h c to cho tt c thc th trong m hnh d liu, tip theo l to cc mi quan h cho m hnh.

    Vi mi quan h 1:1, chn mt quan h l cha v quan h cn li l con, to ct kha ngoi trong quan h con m n dng kt hp mi b trong quan h con vi mt b 25

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    tng ng trong quan h cha. Nu s th hin ti thiu trn c hai pha ca

    mi quan h 1:1 l 1 th vic chn quan h no lm cha s khng c vn g. Tuy nhin, nu s th hin ca mt pha l 0, th chn quan h cn li lm quan h cha.

    Vi mi quan h 1:N, quan h trn pha 1 s l cha v quan h trn pha N s l con. Chng ta to ct kha ngoi trong quan h con nhiu con s c kt hp vi mt cha. Cho v d, vi mi quan h advisor/ advisee, ch n gin l chng ta thm ct

    26 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    kha ngoi vo quan h Student, tn ca ct kha ngoi l AdvisorID v kt hp vi ct kha chnh trong quan h Professor.

    Vi mi quan h N:M th phc tp hn. Chng ta phi to mt bng mi, mt quan h mi. Quan h nh th i khi c gi l bng giao (intersection table) hay quan h mi quan h (relationship relation).

    Bng giao gm cc ct kha ngoi l cc kha chnh ca c hai thc th trong mi quan h. Kha chnh ca bng giao thng c ghp t hai kha ngoi .

    27 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Xy Dng CSDL Quan H T M Hnh D Liu

    Cho v d, to mi quan h M:N gia cc bng Student v Course, chng ta s to quan h StudentCourseIntersection. StudentCourseIntersection s c cc ct kha ngoi cho Student (v d StudentID) v cho Course (v d CourseID). Mi hng trong StudentCourseIntersection s cha thng tin v mt sinh vin hc kha hc c th. Bt k sinh vin no cng c th hc nhiu kha v nhiu sinh vin c th hc chung mt kha.

    28 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu Mt s m hnh d liu th tt hn mt s

    khc. Khi thit k CSDL khng ng, s lm tng kh nng d tha d liu (data redundancy) dn n nhng d thng (anomaly) trong CSDL. Chng hn, khi xa thng tin ca kiu thc th ny th li mt thm thng tin ca kiu thc th khc.

    S chun ha (normalization) l qu trnh kim tra cc quan h. Sau khi chun ha, cc quan h c cu trc tt hn.

    Mc tiu ca chun ha l m bo rng mi quan h ch th hin cho mt ch (theme). Cho v d, quan h cha thng tin v cc sinh

    29 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu vin, quan h cha thng tin v cc k tc x, nhng khng c quan h cha thng tin cho c hai.

    C nhiu dng chun ha. Dng chun (normal form) mc cao hn s gim d tha d liu v trnh c nhng d thng. Bt k dng chun no mc cao hn cng thch hp vi cc dng thp hn. Do vy, mt quan h dng chun 3 (3NF) th cng dng chun 2 (2NF) v dng chun 1 (1NF).

    Cc dng chun da vo khi nim ph thuc hm (functional dependency). Ph thuc hm ngha l gi tr ca mt thuc tnh hoc tp

    30 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu cc thuc tnh xc nh gi tr ca thuc tnh khc.

    Gi s chng ta to quan h vi cc thuc tnh sau. Cng gi s rng khng c sinh vin cng tn trong cng k tc x v khng c ging vin cng tn trong trng:

    Kha ca quan h Student gm hai thuc tnh Sname v DormID. Theo nh ngha, thuc

    31 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu tnh kha xc nh duy nht mt b trong quan h. Vi gi tr c th ca Sname v DormID, gi tr ca tt c thuc tnh khc c xc nh.

    Tuy nhin, khng phi tt c cc ph thuc hm u l kha. Trong quan h Student, c mt ph thuc hm gia thuc tnh MajorAdvisorName v AdvisorDept. V d, vi tn ca c vn c th th tn khoa ca c vn s c xc nh.

    Dng chun u tin (1NF) c nh ngha n gin. Mi thuc tnh trong quan h phi l thuc tnh nguyn t (atomic attribute), thuc tnh n tr (single-valued attribute). 32

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu Cho v d, nu thuc tnh trong quan h Student l TelephoneNumber, th mt b bt k trong quan h ch c mt gi tr cho TelephoneNumber. Nu chng mun mt sinh vin c th c nhiu s in thoi, th chng ta phi to mt quan h ring cho vn ny. Mi b trong quan h PhoneNumber mi ch c mt s in thoi v nhiu b trong quan h ny c kt hp thng qua mi quan h 1:N vi mt sinh vin c th.

    Dng chun th 2 (2NF) yu cu quan h l dng chun 1 v mi thuc tnh khng kha ph thuc hm y vo kha chnh (khng

    33 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu ph thuc hm vo bt k tp con no ca kha - cn gi l ph thuc hm b phn).

    Nu quan h c kho chnh ch gm mt thuc tnh hoc quan h c kha i din (surrogate key) th lun dng chun 2.

    Cu hi t ra l c phi mi thuc tnh khng kho trong m hnh quan h trn ph thuc hm y vo kho ca n khng. Ngha l cc quan h c dng chun 2 khng?

    Trong trng hp ny, cu tr li l Khng. Gi s l c mt RA cho mi k tc x Dorm, th gi tr RA ph thuc vo DormID ch khng ph thuc vo Sname. a quan h

    34 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu Student v Dorm v dng chun 2, chng ta phi to mt quan h mi v b thuc tnh RA khi quan h Dorm :

    Dng chun 3 (3NF) yu cu quan h dng

    chun 2 v khng c thuc tnh khng kho no ph thuc bc cu (transitive dependency) vo kha chnh (hoc ph thuc hm gia cc thuc tnh khng kho).

    Trong v d trn, quan h va to khng phi dng chun 3 v thuc tnh MajorAdvisor-

    35 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu Name v AdvisorDept u ph thuc vo kha chnh, nhng thuc tnh AdvisorDept cng ph thuc bc cu vo MajorAdvisor-Name.

    Ngha l, vi mt sinh vin c th, chng ta c th xc nh c tn c vn (MajorAdvisorName) ca sinh vin v khi bit c tn c vn, chng ta c th xc nh c khoa (AdvisorDept) ca c vn . y l ph thuc bc cu.

    a quan h mi to tr thnh dng chun 3NF, chng ta phi b ph thuc bc cu trong quan h: 36

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu

    By gi cc quan h ban u c chia thnh 3 quan h: quan h v sinh vin, k tc x v cc ging vin lm c vn.

    Trong thc t, chng ta nn chn gi tr kho tt hn cho quan h sinh vin v ging vin.

    37 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Chun Ha D Liu Chng hn, thuc tnh kho l ID c kiu d liu dng s nguyn thay v l kiu chui. Ngoi ra, trong quan h ging vin nn thm cc thuc tnh nh a ch, lng,

    38 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng SQL Cng ty IBM u tin a ra ngn ng SQL

    (structured query language - ngn ng truy vn c cu trc) x l CSDL. N l ngn ng cp cao to CSDL, thao tc d liu v truy lc/ly cc tp d liu.

    SQL l ngn ng phi th tc (nonprocedural language), ngha l cc cu lnh SQL m t d liu v cc thao tc cn phi lm g nhng n khng ch r tng bc tin hnh l lm th no h CSDL thc hin.

    Cc chun ANSI (American National Standards Institute - Vin Tiu chun Quc gia Hoa K) cho SQL c cng b vo nm

    39 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng SQL 1986, 1989, 1992, 1999 v 2003.

    Trong thc t, cc nh cung cp khc nhau a ra mt s thay i nh v c php v ng ngha vi mi ngn ng SQL ca h. Tuy nhin, phn ln cc lnh SQL u tng thch vi SQL chun.

    Mt s h qun tr CSDL ph bin c nhiu ngi bit n l DB2 (IBM), MySQL (ngun m), Oracle v SQL Server (Microsoft).

    Cc cu lnh SQL thng c phn bit thnh hai phn l ngn ng nh ngha d liu (data definition language - DDL) v ngn

    40 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng SQL ng thao tc d liu (data manipulation language - DML).

    Cc lnh ca DDL to cc cu trc CSDL nh bng (table), khung nhn (view), th tc kch khi (trigger) v th tc lu (stored procedure).

    Cc lnh ca DML nh chn, cp nht, chn hay xa d liu trong CSDL.

    SQL khng phn bit dng ch. Cc lnh v tn c th nhp dng ch hoa hay thng. Tuy nhin, mt s ngi thch s dng ch hoa v ch thng phn bit t kha vi tn.

    41 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu Cu lnh u tin ca ngn ng nh ngha

    d liu (DDL) hc l CREATE. Lnh CREATE TABLE dng to mt quan h. Trong SQL, quan h c gi l bng, b c gi l hng v thuc tnh c gi l ct.

    Sau y l c php ca lnh CREATE TABLE: CREATE TABLE ( [, ] [CONSTRAINT [,CONSTRAINT ]] );

    S c t c php ny ni rng cu lnh phi 42

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu bt u bng t kha CREATE TABLE, sau l tn bng v du ngoc m. K tip l mt hay nhiu c t cho tn ct, kiu d liu mi ct v cc thuc tnh mi ct (v d, cho php null hay khng). Sau danh sch cc tn ct l phn ty chn cc rng buc bt u bng t kha CONSTRAINT, n tn rng buc v kiu rng buc (v d, PRIMARY KEY hay UNIQUE). Cui cng l du ngoc ng v du chm phy.

    Ngi thit k CSDL t do ch nh tn bng, tn ct hay tn rng buc. SQL chun c cc qui tc t tn, nhng mi nh cung cp h

    43 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu qun tr CSDL c cc qui tc ring ca h v c mt t thay i so vi SQL chun.

    Cho v d, SQL2003 chun cho php tn c th di n 128 k t, nhng MySQL th ch gii hn 64 k t v Oracle th ch 30 k t.

    Cc kiu d liu ca SQL cng c thay i. Ni chung, cc kiu c th s dng l: - Integer. - Number/Numeric (s du chm ng). - Varchar (chui k t c chiu di thay i). - Date/DateTime. - Char (chui k t c chiu di c nh).

    44 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu Chng ta phi tham kho ti liu ca h qun

    tr CSDL ang s dng chn kiu d liu thch hp.

    Cc thuc tnh ph bin nht m chng ta ch nh cho cc ct l NULL, NOT NULL v DEFAULT.

    Thuc tnh NOT NULL khng cho php gi tr rng trn ct tng ng ca hng c thm vo. Theo mc nh th ct cha gi tr null.

    Thuc tnh DEFAULT cho php chng ta s dng mt biu thc to gi tr mc nh cho ct nu khng c gi tr no ca ct c cung cp khi chn mt hng mi.

    45 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu Cho v d, s khai bo sau y ch nh gi tr

    mc nh cho ct State l NY: State Char(2) DEFAULT 'NY',

    C 4 rng buc m chng ta c th ch nh l PRIMARY KEY, FOREIGN KEY, UNIQUE v CHECK. Rng buc PRIMARY KEY ch nh mt hay nhiu ct dng lm kha chnh.

    Rng buc FOREIGN KEY ch nh ct dng cha kha chnh ca bng khc. y l mi quan h gia cc bng vi nhau.

    Rng buc UNIQUE yu cu tt c cc hng trong bng c gi tr duy nht cho mt hay nhiu ct c ch nh trong rng buc.

    46 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu Rng buc UNIQUE i khi c gi l kha ph hay kha d tuyn (candidate key) .

    V d sau s to nhiu bng: CREATE TABLE Student ( Sname VarChar(25) NOT NULL, Dorm VarChar(20) NOT NULL, Room Integer, Phone Char(12), Major VarChar(20), MajorAdvisorName VarChar(25), CONSTRAINT StPK PRIMARY KEY( Sname, Dorm), CONSTRAINT StDormFK FOREIGN KEY( Dorm) REFERENCES Dorm(DormName), 47

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu CONSTRAINT StFacultyFK FOREIGN KEY(MajorAdvisorName) REFERENCES Faculty(Fname) ); CREATE TABLE Dorm ( DormName VarChar(20) NOT NULL, RA VarChar(25), CONSTRAINT DormPK PRIMARY KEY( DormName) ); CREATE TABLE Faculty ( Fname VarChar(25) NOT NULL, Dept VarChar(20), CONSTRAINT FacultyPK PRIMARY KEY( Fname) );

    48 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu Mt kiu rng buc khc l CHECK. Rng buc CHECK cho php chng ta ch nh iu kin hp l cho ct. Cho v d: CONSTRAINT FoundedCheck CHECK ( FoundedDate > 1900), CONSTRAINT ZipCheck CHECK (zip LIKE '[0-9][0-9][0-9][0-9][0-9]'),

    Rng buc u tin cho bit gi tr ca ct FoundedDate phi ln hn 1900. Rng buc th hai cho bit gi tr ca ct zip phi gm 5 k s t 0 n 9.

    Ngc li vi vic to cc bng l xa chng. 49

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu xa bng, lnh DROP c s dng. Sau y l c php ca lnh DROP: DROP ;

    Pha sau t kha DROP l kiu v tn ca i tng. Cc kiu i tng gm TABLE, VIEW, PROCEDURE (th tc lu), TRIGGER, xa bng Student, chng ta c th vit nh sau: DROP TABLE Student;

    Khi cn sa mt i tng CSDL nh bng chng hn, lnh ALTER c s dng. V d, thm ct Birthdate c kiu d liu l Date vo bng Student:

    50 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng nh Ngha D Liu ALTER TABLE Student ADD COLUMN Birthdate Date;

    Ngoi vic thm cc ct, chng ta c th s dng lnh ALTER TABLE xa cc ct, thm hay xa cc rng buc v thit lp hay xa cc gi tr mc nh.

    Bi tp ti lp: gii thch cc v d sau: a)ALTER TABLE Student

    ALTER COLUMN Phone Char(12) NOT NULL; b) ALTER TABLE Student

    DROP COLUMN Room;

    51 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu Cu lnh u tin ca ngn ng thao tc d

    liu hc l SELECT. Lnh SELECT dng truy lc/ly thng tin t CSDL. N l lnh rt linh ng v nhiu ngi bit s dng n.

    Trong trng hp n gin nht, s dng lnh SELECT truy tm gi tr ca cc ct no trong bng, chng hn gi tr ca Sname v Major trong bng Student: SELECT Sname, Major FROM Student;

    Gii thch lnh trn? Chng ta cng c th ch chn mt hay mt

    s hng bng cch thm mnh WHERE: 52

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu SELECT Sname FROM Student WHERE Major = 'Computer Science';

    Gii thch lnh/truy vn trn? Nu chng ta mun ly tt c cc ct cho

    nhng hng tha iu kin, chng ta c th s dng du hoa th (*): SELECT * FROM Student WHERE Major = 'Computer Science';

    Mnh WHERE cng rt linh ng, chng ta c th s dng cc ton t quan h v lun l

    53 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu xy dng biu thc iu kin cho n (xem bng cc ton t). V d: SELECT * FROM Student WHERE Sname LIKE '%Jones' AND Major NOT IN ('Math','Computer Science') AND (Dorm = 'Williams' OR Dorm = 'Schoelkopf');

    Gii thch truy vn trn? Cc kt qu ca s truy vn cng c th

    c sp th t, bng cch thm mnh ORDER BY. Cho v d:

    54 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu SELECT Sname FROM Student WHERE Major = 'Computer Science' ORDER BY Sname; (hoc ORDER BY Sname DESC sp gim dn)

    Mt s ton t: = bng > ln hn < nh hn >= ln hn hay bng

  • Ngn Ng Thao Tc D Liu !< khng nh hn !> khng ln hn AND V lun l OR HOC lun l NOT NOT lun l IN l True nu ton hng l mt trong cc gi tr c lit k (hoc cc gi tr tr v ca truy vn con) LIKE l True nu ton hng so trng vi mu cho trc. K t % i din cho chui gm khng hoc nhiu k t bt k. K t gch ni (_) i din cho k t n bt k. 56

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu BETWEEN l True nu ton hng nm trong min c ch nh.

    Mt s lng t: EXISTS l True nu truy vn con tr v t nht l mt hng. ALL l True nu s so snh vi tt c gi tr tr v ca truy vn con l True. ANY/SOME l True nu tn ti mt s so snh bt k l True.

    57 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu Hy cho bit kt qu ca truy vn sau nu

    bng Student c 300 sinh vin hc chuyn ngnh Computer Science? SELECT Major FROM Student;

    Nhng truy vn nh th thng khng s dng. iu m chng ta quan tm l danh sch cc chuyn ngnh khc nhau ca cc sinh vin. thc hin iu , t kho DISTINCT c thm vo truy vn SELECT: SELECT DISTINCT Major FROM Student;

    Khi chng ta mun truy vn thng tin nhiu bng, chng hn truy vn yu cu JOIN (ni)

    58 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu cc bng li vi nhau. C nhiu cch thc hin iu ny v c nhiu kiu JOIN cho tng trng hp c th.

    Gi s chng ta cn mt danh sch tn sinh vin v tn c vn (resident advisor) trong cc k tc x ca h. Sau y l mt cch JOIN hai bng Student v Dorm c c thng tin yu cu: SELECT Sname, RA FROM Student, Dorm WHERE Student.Dorm = Dorm.DormName;

    Cng vic ca JOIN l kt ni cc hng ca hai quan h khi iu kin ch nh l True.

    59 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu Mt cch khc cho cng kt qu c vit

    nh sau: SELECT Sname, RA FROM Student JOIN Dorm ON Student.Dorm = Dorm.DormName;

    Sau khi to cc bng trong CSDL, bc k tip l nhp d liu. Lnh SQL thm hng mi vo bng l INSERT. C php nh sau: INSERT INTO ( , , , ) VALUES(, , , );

    Theo c php trn, sau t kho INSERT INTO 60

    Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu l tn bng. K n l du ngoc m, danh sch mt hay nhiu tn ct v du ngoc ng. Tip theo l t kho VALUES, du ngoc m, danh cc gi tr tng ng vi cc tn ct, du ngoc ng v du chm phy.

    V d: INSERT INTO Student(Sname, Dorm, Room, Phone) VALUES ('Mary Poppins', 'Higgins', 142, '585 223 2112');

    Trong v d trn, c nhng ct khng c ch nh th gi tr ca chng l null.

    61 Cc Vn C S ca KHMT ThS. GVC T Oai Hng

  • Ngn Ng Thao Tc D Liu Th t cc tn ct trong lnh INSERT khng