giao trinh ngon ngu lap trinh th.s nguyen van linh - smith.n studio

Upload: smith-nguyen-studio

Post on 06-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    1/111

    Th.s. NGUYN VN LINH

    NGN NGLP TRNHc bin son trong khun kh dn ASVIET002CNTT

    Tng cng hiu quo to v nng lc to to ca sinh vinkhoa Cng ngh Thng tin - i hc Cn th

    I HC CN TH- 12/2003

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    2/111

    Ngn ng l p trnh c lc

    CH NG 0: TNG QUAN .................................................................................................i0.1 MC CH YU CU...............................................................................................i0.2 I TNG SDNG............................................................................................i0.3 NI DUNG CT LI.................................................................................................i0.4 KIN THC TIN QUYT......................................................................................ii

    0.5 DANH MC TI LIU THAM KHO ...................................................................iiCH NG 1: MU ........................................................................................................11.1 TNG QUAN ............................................................................................................11.2 KHI NIM V NGN NGLP TRNH ............................................................11.3 VAI TR CA NGN NGLP TRNH ..............................................................21.4 LI CH CA VIC NGHIN CU NNLT ............................................................31.5 CC TIU CHUN NH GI MT NGN NGLP TRNH TT ...............41.6 CU HI N TP ....................................................................................................7

    CH NG 2: KIU DLIU..............................................................................................82.1 TNG QUAN ............................................................................................................82.2 I TNG DLIU.............................................................................................8

    2.3 BIN V HNG .....................................................................................................102.4 KIU DLIU........................................................................................................102.5 SKHAI BO ........................................................................................................132.6 KIM TRA KIU V BIN I KIU.................................................................142.7 CHUYN I KIU...............................................................................................172.8 GN V KHI TO ..............................................................................................172.9 CU HI N TP..................................................................................................20

    CH NG 3: KIU DLIU S CP.............................................................................223.1 TNG QUAN ..........................................................................................................223.2 NH NGHA KIU DLIU S CP................................................................223.3 SC T CC KIU DLIU S CP.........................................................223.4 CI T CC KIU DLIU S CP..............................................................233.5 KIU DLIU S .................................................................................................243.6 KIU LIT K.........................................................................................................273.7 KIU LOGIC ...........................................................................................................283.8 KIU K T...........................................................................................................293.9 CU HI N TP..................................................................................................29

    CH NG 4: KIU DLIU C CU TRC................................................................304.1 TNG QUAN ..........................................................................................................304.2 NH NGHA KIU DLIU C CU TRC...................................................304.3 SC T KIU CU TRC DLIU............................................................304.4 SCI T CC CU TRC DLIU............................................................324.5 VCT .....................................................................................................................344.6 MNG NHIU CHIU...........................................................................................364.7 MU TIN.................................................................................................................394.8 MU TIN C CU TRC THAY I.................................................................414.9 CHUI K T:.......................................................................................................454.10 CU TRC DLIU C KCH THC THAY I ........................................474.11 CON TR.................................................................................................................484.12 TP HP..................................................................................................................504.13 TP TIN...................................................................................................................524.14 CU HI N TP..................................................................................................54

    CH NG 5: KIU DO NGI DNG NH NGHA..................................................585.1 TNG QUAN ..........................................................................................................585.2 SPHT TRIN CA KHI NIM KIU DLIU.........................................58

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    3/111

    Ngn ng l p trnh c lc

    5.3 TRU TNG HA ..............................................................................................585.4 NH NGHA KIU................................................................................................605.5 CU HI N TP..................................................................................................62

    CH NG 6: CHNG TRNH CON..............................................................................636.1 TNG QUAN ..........................................................................................................63

    6.2 NH NGHA CHNG TRNH CON .................................................................636.3 C CH GI CHNG TRNH CON ..................................................................656.4 CHNG TRNH CON CHUNG...........................................................................686.5 TRUYN THAM S CHO CHNG TRNH CON.............................................686.6 CU HI N TP.................................................................................................70

    CH NG 7: IU KHIN TUN T.............................................................................717.1 TNG QUAN ..........................................................................................................717.2 KHI NIM IU KHIN TUN T..................................................................717.3 IU KHIN TUN TTRONG BIU THC...................................................717.4 IU KHIN TUN TGIA CC LNH ........................................................757.5 SNGOI L V XL NGOI L .................................................................78

    7.6 CU HI N TP..................................................................................................80CH NG 8: LP TRNH HM.......................................................................................81

    8.1 TNG QUAN ..........................................................................................................818.2 NGN NGLP TRNH HM.............................................................................818.3 NGN NGLISP ...................................................................................................83

    CH NG 9: LP TRNH LOGIC ....................................................................................959.1 TNG QUAN ..........................................................................................................959.2 GII THIU V LP TRNH LOGIC ...................................................................959.3 NGN NGPROLOG............................................................................................96

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    4/111

    Ngn ng l p trnh ng quan

    i

    TNG QUAN

    MC CH YU CU

    Mc ch ca mn hc Ngn ng lp trnh l cung cp cho sinh vin mt khi lng

    kin thc tng i hon chnh v nguyn l ca ngn ng lp trnh. Cng vi mnhc Tin hc l thuyt, Ngn ng lp trnh s l mn hc tin quyt hc mn Trnhbin dch. Sau khi hc xong mn hc ny, sinh vin cn:

    - Nm c cc khi nim vi tng d liu v kiu d liu. Cc khacnh cn nghin cu khi c t v ci t mt kiu d liu. Vn kim trakiu v chuyn i kiu cng cn c quan tm.

    - Nm c cc kiu d liu scp v c cu trc. Vi mi kiu d liu cnnm nh ngha, c t v cch ci t kiu d liu.

    - Nm c khi nim tru tng ho trong lp trnh th hin trn hai khacnh l tru tng ho d liu bng cch s dng cc kiu d liu tnh

    ngha v tru tng ho chng trnh bng cch chia chng trnh thnhcc chng trnh con. Vn truyn tham s cho chng trnh con cng cnc lu tm.

    - Nm c khi nim iu khin tun t, nguyn tc iu khin tun t trongbiu thc v gia cc cu lnh.

    I TNG SDNG

    Mn hc ngn ng lp trnh c dng ging dy cho cc sinh vin nm th 4chuyn ngnh Tin hc.

    NI DUNG CT LITrong khun kh 45 tit, gio trnh c cu trc thnh 9 chng

    Chng 1: Mu. Chng ny trnh by khi nim v ngn ng lp trnh, li chca vic nghin cu ngn ng lp trnh v cc tiu chun nh gi mt ngn nglp trnh tt.

    Chng 2: Kiu d liu. Chng ny trnh by cc khi nim vi tng d liuv kiu d liu; cc phng php kim tra kiu v chuyn i kiu; Php gn tr cho

    bin v s khi to bin.

    Chng 3: Kiu d liu scp. Chng ny trnh by khi nim v kiu d liu scp, sc t v nguyn tc ci t mt kiu d liu scp ni chung. Phn ch yuca chng trnh by mt s kiu d liu scp ph bin nh cc kiu s, kiu mincon, kiu lit k, kiu k t v kiu logic.

    Chng 4: Kiu d liu c cu trc. Chng ny trnh by khi nim v kiu dliu c cu trc, sc t cc thuc tnh, c t php ton, c bit l php ton lachn mt phn t; cc phng php lu tr mt cu trc d liu trong b nh v

    phng php la chn phn t. Ni dung ch yu ca chng trnh by cc cu trcc th nh mng, mu tin, chui k t, tp hp

    Chng 5: Kiu d liu tnh ngha. Chng ny trnh by v s tru tng ho,

    nh ngha kiu d liu v s tng ng ca cc kiu d liu c nh ngh.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    5/111

    Ngn ng l p trnh ng quan

    ii

    Chng 6: Chng trnh con. Chng ny trn by v snh ngha v cch githc hin chng trnh con, cc phng php truyn tham s cho chng trnh con.

    Chng 7: iu khin tun t. Chng ny trnh by cc loi iu khin tun tv vn x l ngoi l.

    Chng 8: Lp trnh hm. Chng ny trnh by khi nim, bn cht ca lp trnhhm v gii thiu mt ngn ng lp trnh hm in hnh l LISP.

    Chng 9: Lp trnh logic. Chng ny trnh by khi nim, bn cht ca lp trnhlogic v gii thiu mt ngn ng lp trnh hm in hnh l PROLOG.

    KIN THC TIN QUYT

    hc tt mn hc ngn ng lp trnh cn phi c cc kin thc v knng lp trnhcn bn.

    DANH MC TI LIU THAM KHO[1] Terrence W. Pratt, Marvin V. Zelkowitz; Programming Languages: Designand Implementation; Prentice-Hall, 2000.

    [2] Doris Appleby, Julius J. VandeKopple; Programming Languages; McGraw-Hill; 1997.

    [3] Ryan Stensifer; The Study of Programming Languages; Prentice Hall, 1995.

    [4] Maryse CONDILLAC; Prolog fondements et applications; BORDAS, Paris1986.

    [5] Website v XLISPhttp://webmaker.web.cern.ch/WebMaker/examples/xlisp/www/cldoc_1.html

    [6] Website v Turbo Prolog

    http://www.csupomona.edu/%7Ejrfisher/www/prolog_tutorial/contents.html

    Smith Nguyen Studio.

    http://www.prenhall.com/http://webmaker.web.cern.ch/WebMaker/examples/xlisp/www/cldoc_1.htmlhttp://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.htmlhttp://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.htmlhttp://webmaker.web.cern.ch/WebMaker/examples/xlisp/www/cldoc_1.htmlhttp://www.prenhall.com/
  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    6/111

    Ngn ng l p trnh Chng I: Mu

    1

    CHNG 1: MU

    1.1 TNG QUAN

    1.1.1 Mc tiu

    Sau khi hc xong chng ny, sinh vin cn phi nm:- Khi nim v phn loi cc ngn ng lp trnh.- Vai tr ca ngn ng lp trnh trong cng ngh phn mm.- Li ch ca vic nghin cu ngn ng lp trnh.- Cc tiu chun nh gi ngn ng lp trnh.

    1.1.2 Ni dung ct li

    - Khi nim v ngn ng lp trnh.- Vai tr ca ngn ng lp trnh.- Li ch ca vic nghin cu ngn ng lp trnh.- Cc tiu chun nh gi mt ngn ng lp trnh tt.

    1.1.3 Kin thc cbn cn thit

    Kin thc v knng lp trnh cn bn

    1.2 KHI NIM V NGN NG LP TRNH

    Nh chng ta bit, my tnh bao gm phn cng l cc thit bin t trong thng tin c biu din di dng s nh phn v phn mm bao gm cc chngtrnh c to ra bng cch s dng cc ngn ng lp trnh.

    Nh vy ngn ng lp trnh (NNLT) l ngn ng dng vit cc chng trnh chomy tnh. Cng nh cc ngn ng thng thng, NNLT cng c t vng, c php vng ngha. Theo tin trnh lch s pht trin, ngn ng lp trnh c thc chia ralm ba loi ch yu nh sau:

    Ngn ngmy (machine language): L cc ch th di dng nh phn, can thip trctip vo trong cc mch in t. Chng trnh c vit bng ngn ng my th c th

    c thc hin ngay khng cn qua bc trung gian no. Tuy nhin chng trnh vitbng ngn ng my d sai st, cng knh v kh c, kh hiu v ton nhng con s 0v 1.

    Hp ng (assembly language):

    Hp ng l mt bc tin vt bc a ngn ng lp trnh thot ra khi ngn ng mykh hiu. Ngn ng ny xut hin vo nhng nm 1950, n c thit k my tnhtrnn thn thin hn vi ngi s dng. Hp nga ra khi nim bin (variable),nh m ta c th gn mt k hiu cho mt v tr no trong b nhm khng phivit li a ch ny di dng nh phn mi ln s dng. Hp ng cng cha vi "php

    ton gi", tc l ta c th biu bin m php ton di dng pht biu (hay cn gi lcu lnh) thay v di dng nh phn. Cc cu lnh bao gm hai phn: phn m lnh

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    7/111

    Ngn ng l p trnh Chng I: Mu

    2

    (vit ta ting Anh) ch php ton cn thc hin v phn tn bin cha ch cha tonhng ca php ton .

    my thc hin c mt chng trnh vit bng hp ng th chng trnh phic dch sang ngn ng my. Cng c thc hin vic dch c gi l Assembler.

    Ngn ng cp cao (High level language): L ngn ngc to ra v pht trinnhm phn nh cch thc ngi lp trnh nghv lm. Ngn ng cp cao rt gn vingn ng con ngi (Anh ng) nhng chnh xc nh ngn ng ton hc. Nhngnng cp cao m lnh vc lp trnh trnn ph bin, rt nhiu ngi c th vit cchng trnh, v nhth m cc phn mm pht trin nh v bo, phc v nhiu lnhvc ca cuc sng. Cng vi s pht trin ca cc th h my tnh, ngn ng lp trnhcp cao cng c pht trin rt a dng v phong ph, vic lp trnh cho my tnh vth m cng c nhiu khuynh hng khc nhau: lp trnh cu trc, lp trnh hng itng, lp trnh logic, lp trnh hm... Mt chng trnh vit bng ngn ng cp caoc gi l chng trnh ngun (source programs). my tnh "hiu" v thc hin

    c cc lnh trong chng trnh ngun th phi c mt chng trnh dch dchchng trnh ngun (vit bng ngn ng cp cao) thnh chng trnh ch.

    Trong khun kh ti liu ny, thut ng ngn ng lp trnh dng ch ngn ng lptrnh cp cao.

    1.3 VAI TR CA NGN NG LP TRNH

    thy r vai tr ca ngn ng lp trnh trong cng ngh phn mm chng ta hy xtcc giai on ch yu xy dng mt phn mm. Cc giai on bao gm:

    - Xc nh: Mc tiu ca giai an xc nh l hiu r cc yu cu ca khchhng. Kt qu ca giai an ny l m hnh th gii thc c phn nh thngqua mt ti liu c t yu cu.

    - Phn tch: Mc tiu ca giai on ny l xc nh chnh xc h thng s lmnhng g theo quan im ca ngi s dng. Kt qu ca giai on phn tch lmt ti liu c t chc nng m t h thng s c nhng chc nng g.

    - Thit k: Mc tiu ca giai an thit k l xc nh chnh xc h thng s lmvic nh th no. Kt qu ca giai an ny l mt ti liu c t thit k. yl mt ti liu k thut m nhng ngi thc hin s cn c vo m to ra

    phn mm.

    - Ci t: L vic thc hin cch gii quyt vn c xut bi ngithit k bng mt NNLT. Kt qu ca giai an ny l mt h chng trnhmy tnh.

    - Tch h p v kim th h thng: Do cc chuyn vin tin hc thc hin nhmghp ni cc b phn ca h thng v kim tra xem h thng c c thc hinng theo thit k khng.

    - Chp nhn: Do cc chuyn vin tin hc cng vi khch hng tin hnh nhmxc nhn h thng chng trnh bo m cc yu cu ca ngi s dng.

    -

    Vn hnh khai thc: H thng c trin khai s dng.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    8/111

    Ngn ng l p trnh Chng I: Mu

    3

    trn ch trnh by mt m hnh lm phn mm, gi l m hnh thc nc (water fall),ngoi ra cn c nhiu m hnh khc. Tuy nhin trong tt c cc m hnh y u phi cgiai on ci t. Trong NNLT ng vai tr l mt cng c gip con ngi thchin bc ci t ny. Cng c ngy cng c ci tin hon thin v c th nimi tin b trong tin hc u th hin ra trong NNLT. NNLT va l cng c gip cc

    nh tin hc gii quyt cc vn thc t nhng ng thi cng l ni m nhngnghin cu mi nht ca tin hc c a vo. Lnh vc ny va mang tnh truynthng va mang tnh hin i.

    1.4 LI CH CA VIC NGHIN CU NNLT

    Trc khi nghin cu v NNLT, chng ta cn tho lun xem v sao cc sinh vin tinhc v cc nh l p trnh chuyn nghip cn phi nm cc khi nim tng qut v

    NNLT. Vic nghin cu tt NNLT st c cc li ch nh sau:

    1.4.1 Cho php la chn mt NNLT ph hp vi dn thc t

    Hin nay c rt nhiu d n cng ngh thng tin ng dng vo nhiu lnh vc khcnhau ca cuc sng. Do tnh cht ca tng d n m phn mm c thc ci tbng cc NNLT khc nhau. Vi mt vn kin thc rng v NNLT, nhng ngi lmd n c th la chn nhanh chng mt NNLT ph hp vi n thc t. Chng hnc th la chn ngn ng l p trnh Java cho cc d n l p trnh truyn thng, hayhng lp trnh logic cho cc d n v tr tu nhn to.

    1.4.2 Sdng mt cch c hiu qu cc cng c ca ngn ng

    Cc ngn ng ni chung u cung cp nhng cng cc bit to ra cc tin ch

    cho lp trnh vin, nhng khi s dng chng khng ng n c th s gy ra nhngsai lm ln. Mt v din hnh l php quy (recursion) - mt cng c lp trnh cbit c hiu lc trong nhiu ngn ng. Khi s dng quy mt cch ng n th cth ci t mt gii thut p v c hiu qu. Nhng trong trng hp khc n cth gy ra mt s lng ph thi gian chy my rt ln cho mt gii thut n gin.iu ny c th trnh c nu nh lp trnh vin c mt s hiu bit su sc v ngnng lp trnh v cc ci t bn trong n.

    1.4.3 Lm tng vn kinh nghim khi xy dng cc chng trnh

    Nu ngi lp trnh c s nghin cu mt cch rng ri nhiu ngn ng m mt

    trong chng c ci t sn nhng cng c no th anh ta c th t thit lp nhngcng c tng t khi phi vit chng trnh bi mt ngn ng m trong cc cngc nh th cha c ci t.

    1.4.4 To sd dng hc mt ngn ngmi

    Mc d c nhiu NNLT khc nhau nhng chng u c nhng nguyn tc chung caNNLT. Rt nhiu ngn ng c chung c php (sai khc nhau cht t v cch vit), cchung cc kiu d liu (sai khc nhau cht t v tn gi). Vic nm vng cc nguyn lcbn ca NNLT s l mt iu kin thun li ln tip cn mt cch nhanh chngvi mt ngn ng lp trnh c th mi. Thc t cho thy rng vi nhng ngi nmvng NNLT, khi gp mt ngn ng lp trnh c th mi, h c th va nghin cungn ng mi ny va p dng lp trnh gii quyt mt bi ton theo yu cu.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    9/111

    Ngn ng l p trnh Chng I: Mu

    4

    1.4.5 To tin thit k mt ngn ngmi

    Vic thit k ngn ng mi l mt i hi ca khoa hc pht trin NNLT. Nu chngta khng nghin cu v NNLT th khng th no c kin thc xy dng mt ngnng mi.

    1.5 CC TIU CHUN NH GI MT NGN NG LP TRNH TT

    Nhng yu t sau to nn mt ngn ng tt, n cng l nhng tiu chun ngi lptrnh nh gi ngn ng ny tt hn ngn ng kia khi la chn mt ngn ng sdng. Ngoi ra khi thit k mt ngn ng lp trnh mi, ta cng phi quan tm n cctiu chun ny c c mt ngn ng tt.

    1.5.1 Tnh dc

    Tnh dc ca mt NNLT l s d dng c hiu mt chng trnh c vit bngngn ng. Tnh dc c c trng bi cc thuc tnh sau:

    1.- Sgin d. Mt ngn ngc gi l c tnh gin d nu ngn ng c t ccthnh phn cs, tc l t cc yu tc nh ngha trc. Cc ngn ng m chngta c tht c mt php ton bng nhiu cch khc nhau th khng phi l mtngn ng gin d. Chng hn trong ngn ng C tng thm mt n v cho bincount ta c th s dng nhiu cch nh count = count + 1, count += 1, count++ hoc++count. Cc php ton chng (overload) cng lm cho ngn ng trnn phc tp.Chng hn ton t + c th hiu l cng hai s nguyn, cng hai s thc, hp hai tphp hay ghp ni hai chui k t...

    2.- Cu trc iu khin. Cc lnh c cu trc cho php vit cc chng trnh sng

    sa, dc, d hiu. Chng ta c th nhn thy iu ny trong cc ngn ng thucthp nin 1960 nh BASIC, FORTRAN trong do thiu cc cu trc iu khin nnchng trnh phi s dng nhiu lnh GOTO, rt kh theo di hiu chng trnh.Ta hy so snh hai on chng trnh in ra mn hnh 10 s t nhin u tin c vit

    bng ngn ng BASIC (khng c lnh cu trc FOR) v ngn ng Pascal.

    3.- Kiu dliu v cu trc dliu. Xem xt kiu d liu v cu trc d liu ca mtngn ng cng gp phn nh gi mt ngn ng c dc hay khng. Chng hntrong cc ngn ng khng c kiu d liu logic th phi s dng kiu s thay th vdo m chng trnh trnn kh c. V d ta hay s dng bin found trong ccchng trnh tm kim mt phn t x trong mt mng a gm n phn t. Nu ngn ngs dng c kiu logic th ta c th gn cho found gi tr TRUE hoc FALSE biu

    din trng thi tm thy phn t cn tm hay khng, ngc li i vi cc ngn ngkhng c kiu logic th ta phi dng kiu s v gn cho found gi tr 1 hoc 0. Ta hyso snh hai on chng trnh sau xem on chng trnh no d hiu hn.

    Vit bng BASIC10 i=1;20 IF i>10 THEN GOTO 60;30 PRINT i ;

    40 i=i+1;50 GOTO 20;60 PRINT In xong;

    Vit bng Pascal

    FOR i:=1 TO 10 DOWriteln(i);

    Writeln(In xong);

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    10/111

    Ngn ng l p trnh Chng I: Mu

    5

    4.- C php. C php ca ngn ng c nh hng ln n s dc hiu ca chngtrnh. Chng ta xt mt s th d sau thy r vn ny.

    Mt s ngn ng quy nh di ti a ca danh biu qu ngn, chng hn trongFORTRAN 77 di ti a ca danh biu l 6, do tn bin nhiu khi phi vittt nn kh c hiu.

    Vic s dng t kha cng gp phn lm cho ngn ng trnn dc. Chng hntrong ngn ng Pascal ch s dng mt t kha end kt thc mt khi, kt thc

    mt lnh case hay kt thc mt lnh hp thnh do chng trnh trnn kh c,trong khi Ada dng cc t kha end if kt thc lnh if, end loop kt thc lnhvng lp th chng trnh dc hn.

    1.5.2 Tnh d vit

    Tnh d vit ca mt ngn ng l kh nng s dng ngn ng vit mt chngtrnh cho mt vn no mt cch d dng hay khng. Thng thng cc ngn ngdc th u d vit. Tnh d vit phi c xem xt trong ng cnh ca vn mngn ngc s dng gii quyt. Theo khng th so snh tnh d vit ca haingn ng cho cng mt bi ton m mt trong hai c thit k dnh ring giiquyt bi ton . V d gii quyt bi ton qun tr d liu, chng ta khng th sosnh Pascal vi mt h qun tr csd liu nh Foxpro, Access hay Oracle.

    Sau y l mt s yu t quan trng nht nh hng ti tnh d vit ca ngn ng.

    1.- Sgin d. Nu mt ngn ng c qu nhiu cu trc th mt s ngi lp trnh skhng quen s dng ht tt c chng. Tt nht l c mt s nh cc cu trc ban uv mt quy tc kt hp chng thnh cc cu trc phc tp hn.

    2.- H trcho tru tng. Mt cch ngn gn, tru tng (abstraction) l kh nngnh ngha v s dng cc cu trc hoc cc php ton phc tp theo cch thc m

    n cho php b qua cc chi tit. Mt v d v tru tng l chng trnh con, tchng trnh gi, chng ta gi chng trnh con thc hin mt tc v no mkhng cn bit cc ci t chi tit bn trong chng trnh con . Thc cht tru tngha chnh l lm cho chng trnh sng sa hn.

    3.- Kh nng din t. L nhng cng c ca ngn ng m ngi lp trnh c th sdng din t gii thut mt cch d dng. Ni cch khc, mt ngn ng c khnng din t l ngn ng cung cp cho ngi lp trnh nhng cng c sao cho ngilp trnh c th nghsao th vit chng trnh nh vy. Chng hn lnh lp FOR trongPascal d s dng cho cu trc lp vi s ln lp xc nh hn l lnh WHILE.

    found := 0;i := 1;While (i

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    11/111

    Ngn ng l p trnh Chng I: Mu

    6

    1.5.3 tin cy

    tin cy ca mt ngn ng l p trnh l kh nng ca ngn ng h trngi lptrnh to ra cc chng trnh ng n. tin cy c th hin bi cc c trng sau:

    1.- Kim tra kiu. L kim tra li v kiu ca chng trnh trong giai on dch hoc

    trong khi thc hin. Kim tra kiu l mt yu t quan trng m bo tin cy cangn ng. Kim tra kiu s bo cho ngi lp trnh bit cc li v kiu v yu cu hc cc sa cha cn thit c mt chng trnh ng.

    2.- Xl ngoi l (Exception Handing). L mt cng c cho php chng trnh phthin cc li trong thi gian thc hin, to kh nng sa cha chng v sau tiptc thc hin m khng phi dng chng trnh.

    3.- Slm tn (Aliasing): Khi c hai hay nhiu tn cng lin kt ti mt nhta gil s lm tn. Chng hn cc bin con tr trong ngn ng Pascal cng trn mt nh. S lm tn c th lm gim tin cy do ngi lp trnh khng kim sot c

    gi trc lu tr trong nh. Hy xt v d sau trong Pascal

    Kt qu thc hin on chng trnh ny l in ra hai dng:50 v 5020 v 20

    Trong khi nhiu ngi lm tng hai dng s in ra l:50 v 5050 v 20

    1.5.4 Chi ph

    Chi ph ca mt ngn ng cng thng c quan tm nh l mt tiu chun nhgi ngn ng. Chi ph y phi c hiu l c tin bc v thi gian. Chi ph ny baogm:

    - Chi ph o to lp trnh vin s dng ngn ng. Chi ph ny ph thuc vo s gind ca ngn ng.

    - Chi ph ci t chng trnh. Chi ph ny ph thuc vo tnh d vit ca ngn ng.- Chi ph dch chng trnh.- Chi ph thc hin chng trnh.- Chi ph bo tr chng trnh.

    Var p, q: ^integer;Begin

    New(p);p^ := 50;q:= p; {C q v p cng trn mt nh}writeln(p^, v , q^);q^ := 20;writeln(p^, v , q^);

    end;

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    12/111

    Ngn ng l p trnh Chng I: Mu

    7

    - Chi ph mua trnh bin dch1.6 CU HI N TP

    1. Vai tr ca ngn ng lp trnh trong cng ngh phn mm l g?2. Nu cc li ch ca vic nghin cu ngn ng lp trnh.3. Nu tn cc tiu chun nh gi mt ngn ng lp trnh tt.4. Nu tn cc yu tnh hng n tnh dc.5. Nu tn cc yu tnh hng n tnh d vit.6. Nu tn cc yu tnh hng n tin cy.7. Th no l s lm tn?8. Chi ph ca ngn ng lp trnh bao gm nhng chi ph no?

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    13/111

    Ngn ng l p trnh Chng II: Kiu dliu

    8

    CHNG 2: KIU D LIU

    2.1 TNG QUAN

    2.1.1 Mc tiu

    Sau khi hc xong chng ny, sinh vin cn phi nm:

    - Khi nim vi tng d liu, bin, hng.- Khi nim v kiu d liu.- Cc phng php kim tra kiu v bin i kiu.

    2.1.2 Ni dung ct li

    - Cc khi nim vi tng d liu, kiu d liu.- S khai bo cc i tng d liu trong chng trnh.- Kim tra kiu, bin i kiu d liu.- Vn gn gi tr v khi to bin.

    2.1.3 Kin thc cbn cn thit

    Kin thc v knng lp trnh cn bn

    2.2 I TNG D LIU

    2.2.1 Khi nim i tng dliu

    Trong my tnh thc d liu c lu trb nhtrong v b nhngoi. Trong dliu c t chc thnh cc bit, cc byte hoc word. Tuy nhin trong my tnh o camt NNLT no , d liu c t chc phc tp hn vi cc mng, ngn xp, s, chuik t ...

    Ngi ta sdng thut ngi tng dliu (TDL) chmt nhm ca mt hocnhiu mu dliu trong my tnh o.

    Khc vi tnh cht tnh tng i ca cc vng nh trong my tnh thc, cc TDLv cc mi lin h ni ti ca chng li thay i mt cch ng trong qu trnh thchin chng trnh.

    2.2.2 Cc loi TDL

    Xt v mt cu trc th ngi ta phn TDL lm hai loi l TDL scp v TDLc cu trc hay cu trc d liu.

    TDL scp l mt TDL chcha mt gi tr d liu n. Hng hn nh mt s,mt k t,

    TDL c cu trc hay cu trc d liu l mt tch hp ca cc TDL khc. MiTDL thnh phn ca TDL c cu trc c gi l mt phn t. Mi phn t cacu trc d liu c th l mt TDL scp hay cng c th l mt TDL c cu trc

    khc. V d mt chui k t, mt tp hp cc s, mt vct, mt ma trn,u l ccTDL c cu trc.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    14/111

    Ngn ng l p trnh Chng II: Kiu dliu

    9

    Xt v mt ngun gc th c th phn TDL lm hai loi: TDL tng minh vTDL n.

    TDL tng minh l mt TDL do ngi lp trnh to ra chng hn nh cc bin,cc hng, c ngi lp trnh vit ra trong chng trnh.

    TDL n l mtTDL c nh ngha bi h thngnh cc ngn xp lu tr ccgi tr trung gian, cc mu tin kch hot chng trnh con, cc nhm ca tp tin...Cc TDL ny c pht sinh mt cch tng khi cn thit trong qu trnh thchin chng trnh v ngi lp trnh khng th truy cp n chng c.

    2.2.3 Thuc tnh ca TDL

    Thuc tnh ca mtTDL l mt tnh chtc trng caTDL .

    Mi TDL c mt tp hp cc thuc tnh phn bit TDL ny vi TDL khc.

    Cc TDL scp ch c mt thuc tnh duy nht l kiu d liu ca i tng . Cc

    TDL c cu trc c thm cc thuc tnh nhm xc nh s lng, kiu d liu cacc phn t v cc thuc tnh khc.

    2.2.4 Gi tr dliu

    Gi tr dliu (GTDL) ca mtTDL scp c thl mt s, mt k thoc l mtgi tr logic ty thuc vo kiu caTDL .

    Mi GTDL thng c biu din bi mt dy cc bittrong b nhca my tnh.

    Cn phn bit hai khi nim TDL v GTDL. Mt TDL lun lun c biu dinbi mt khi nhtrong b nhca my tnh trong khi mt GTDL c biu din bi

    mt dy cc bit. Khi ni rng mt TDL A cha mt GTDL B c ngha l: khi nhbiu din cho A cha dy bitbiu din cho B.

    GTDL ca mtTDL c cu trc l mt tp h p cc GTDL ca cc phn t caTDL c cu trc .

    2.2.5 Thi gian tn ti

    Thi gian tn ti (lifetime) ca mt TDL l khong thi gian TDL chim gibnhca my tnh. Thi gian ny c tnh t khi TDL c to ra cho n khi n bhy b trong qu trnh thc hin chng trnh.

    2.2.6 Cc mi lin kt

    Mt TDL c th tham gia vo nhiu mi lin kt trong thi gian tn ti ca n. Cclin kt quan trng nht l:

    S lin kt ca TDL vi mt hoc nhiu gi tr. S lin kt ny c th b thayi bi php gn tr.

    S lin kt ca mt TDL vi mt hoc nhiu tn c tham chiu trong qutrnh thc hin chng trnh. Cc lin kt ny c thit lp bi s khai bo vthay i bi vic gi v tr chng trnh con.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    15/111

    Ngn ng l p trnh Chng II: Kiu dliu

    10

    S lin kt ca mt TDL vi mt s TDL khc gi l cc h p thnh(component). Cc lin kt ny thng c biu din bi gi tr con tr v nc th b thay i bi vic thay i con tr.

    S lin kt ca mt TDL vi nh trong b nh. S lin kt ny thngkhng th thay i mt cch trc tip bi ngi lp trnh m n c thit lpv c th b thay i bi cc thng trnh (routine) qun l b nhca my tnho.

    2.3 BIN V HNG

    2.3.1 Bin

    Bin l mt TDL c ngi lp trnh nh ngha v t tn mt cch tng minhtrong chng trnh. Gi tr ca bin c thb thay i trong thi gian tn ti ca n.

    Tn bin c dng xc nh v tham kho ti bin. Trong cc NNLT, tn bin

    thng c quy nh di dng mt dy cc ch ci, du gch di v cc ch s,bt u bng mt ch ci v c chiu di hu hn.

    2.3.2 Hng

    Hng l mt TDL c tn v gi tr ca hng khng thay i trong thi gian tn tica n.

    Hng trc kin (literal constant) l mt hng m tn ca n l s m t gi tr ca n(chng hn "27" l s m t s thp phn ca TDL gi tr 27). Ch s khc bitgia 2 gi tr 27. Mt ci l mt s nguyn c biu din thnh mt dy cc bittrong

    b nhtrong qu trnh thc hin chng trnh v ci tn "27" l mt chui 2 k t "2"v "7" m t mt s nguyn nh n c vit trong chng trnh.

    2.4 KIU D LIU

    2.4.1 nh ngha kiu dliu

    Kiu d liu l mt tp hp cc TDL v tp h p cc php ton thao tc trn ccTDL .

    Mi NNLT u xy dng cho mnh mt tp cc kiu d liu nguyn thu. Chng hnngn ng LISP, kiu d liu chnh l cc cy nh phn vi cc php ton CAR, CDRv CONS cn i vi cc ngn ng c p cao khc th cc kiu d liu nguyn thythng l: integer, real, characterv boolean. Hn na cc ngn ng cn cung cp

    phng tin cho php ngi lp trnh nh ngha cc kiu d liu mi.

    Kiu d liu trong ngn ngc nghin cu trn hai phng din khc nhau: Sct v sci t kiu d liu.

    2.4.2 Sc t kiu dliu

    Khi c t mt kiu d liu chng ta thng quan tm n cc thnh phn cbn sau:

    Cc thuc tnh nhm phn bit cc TDL ca kiu. Cc gi tr m cc TDL ca kiu c th c.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    16/111

    Ngn ng l p trnh Chng II: Kiu dliu

    11

    Cc php ton c th thao tc trn cc TDL ca kiu.V d, xt sc t kiu d liu mng ta thy:

    1.- Cc thuc tnh c th bao gm: s chiu, min xc nh ca ch si vi michiu v kiu d liu ca cc phn t.

    2.- Cc gi tr c th nhn ca cc phn t mng.

    3.- Cc php ton c th bao gm: php la chn mt phn t mng thng qua vics dng ch s ca phn t, php gn mt mng cho mt mng khc

    Php ton

    Cc php ton thao tc trn cc TDL l mt b phn khng th thiu ca kiu dliu. Khi ni n kiu d liu m chng ta khng quan tm n cc php ton l chahiu y v kiu d liu . M dng nh khim khuyt ny li hay xy ra. V dkhi ni n kiu integer trong ngn ng Pascal, chng ta ch ngh rng l kiu snguyn, c cc gi tr t -32768 n 32767, m t khi quan tm n cc php ton nh+, -, *, hay ni chnh xc hn chng ta c nghcc php ton ny l mc nhin phic. Trong tin hc khng c ci g t nhin m c c, mi ci hoc do chng ta t to rahoc s dng ci c sn do ngi khc to ra. Nhn mnh vic c mt cc phpton trong kiu d liu l lu chng ta khi nh ngha mt kiu d liu mi, phitrang b cho n cc php ton cn thit.

    C hai loi php ton l cc php ton nguyn thyc ngn ngnh ngha v ccphp ton do ngi lp trnh nh ngha nh l cc chng trnh con.

    Php ton trong NNLT v phng din lgic l mt hm ton hc: i vi mt i s

    (argument) cho n c mt kt qu duy nht v xc nh.Mi mt php ton c mt min xc nh (domain) l tp hp cc i s v mt mingi tr (range) l tp hp cc kt qu c th to ra. Hot ng ca php ton xc nhkt quc to ra i vi tp hp bt k cc i s cho. Gii thut ch r lm thno xc nh kt qui vi tp hp bt k cc i s cho l phng php ph

    bin xc nh hot ng ca php ton. Ngoi ra cn c nhng cch xc nh khcchng hn xc nh hot ng ca php ton nhn chng ta c th cho mt "bngnhn" thay v cho gii thut ca php nhn hai s.

    ch r min xc nh ca php ton, s lng, th t v kiu d liu ca cc i s,

    tng t min gi tr, s lng, th t v kiu d liu ca cc kt qu ngi ta thngs dng cc k hiu ton hc.

    Tn php ton: Min xc nh -> Min gi tr

    Trong Min xc nh = Kiu i s X Kiu i s X

    (Min xc nh l tp tch -cc ca cc kiu i s)

    Min gi tr = Kiu kt qu X Kiu kt qu X ...

    (Min gi tr l tp tch -cc ca cc kiu kt qu)

    Khi nghin cu cc php ton trn cc kiu d liu chng ta cn lu cc vn sau:1.- Cc php ton khng c xc nh u vo mt cch chc chn.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    17/111

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    18/111

    Ngn ng l p trnh Chng II: Kiu dliu

    13

    Mt php ton c th tr v mt kt qun, v cc kt qun nh vy s gy ra hiung l (side effect) lm thay i gi trc lu tr ca cc TDL khc m ngi lptrnh kh lng kim sot. Cc php ton c th gy nn hiu ng l l php gn (c trv mt gi tr) v cc chng trnh con m tham s c truyn bng quy chiu.Chng hn xt v d sau trong Pascal:var m,n: integer;function f(var a: integer): integer;

    begina := 2*a;f := 5;

    end;begin

    m := 10;n := m + f(m);writeln(n);readln;

    end.

    Vi mi sintegera hm f lun tr v mt kt qu tng minh l 5 v mt kt qunl 2a, chnh kt qun ny lm thay i gi tr ca TDL m do n s c gi tr l 25ch khng phi l 15 nh chng ta lm tng.

    2.4.3 Sci t kiu dliu

    Khi xt s ci t kiu d liu ta phi quan tm n hai yu t sau:

    T chc lu tr gi tr d liu ca kiu d liu trong b nhca my tnh haycn gi l s biu din trong b nh.

    Gii thut thc hin cc php ton thao tc trn cc gi tr d liu ca kiu.Hai yu t ny lin quan cht chn nhau, ni chnh xc hn l tu thuc vo cchthc t chc lu tr m c cc gii thut thao tc tng ng.

    2.5 S KHAI BO

    2.5.1 Khi nim khai bo

    Khai bo l mt lnh trong chng trnh dngchuyn ti b dch, thng tin vslng v kiu ca TDL cn thit trong qu trnh thc hin chng trnh.

    Nhv tr ca khai bo trong chng trnh, chng hn u chng trnh con, s khaibo c th ch r thi gian tn ti ca TDL.

    S khai bo cn xc nh s lin kt ca cc TDL vi cc tn ca n.

    C hai loi khai bo l khai bo tng minh v khai bo n. Khai bo tng minh l skhai bo do ngi l p trnh vit ra trong chng trnh, nh trong cc khai bo caPascal. Khai bo n nh trong trng hp cc TDL c dng mt cch mc nhinm khng cn mt s khai bo tng minh no. V d trong ngn ng FORTRAN

    bin INDEX c th dng m khng cn khai bo tng minh v n c trnh bindch FORTRAN hiu mt cch mc nhin l mt bin nguyn bi v tn ca n cbt u bi mt trong cc ch ci t I n N.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    19/111

    Ngn ng l p trnh Chng II: Kiu dliu

    14

    Ngn ng lp trnh c chia lm hai loi: ngn ngkhai bo, trong cc TDLphi c khai bo trc khi s dng v ngn ngkhng khai bo, trong TDLc th s dng m khng cn phi khai bo. Vi ngn ng khai bo, TDL sau khi khai bo phi s dng ng nh n c khai bo, trong khi i vi ngn ngkhng khai bo, mt TDL c th s dng mt cch tu thch. y l mt trongnhng l do lm cho ngn ng khng khai bo trnn mm do hn.

    2.5.2 Mc ch ca skhai bo

    Vic khai bo c cc mc ch quan trng sau:

    Chn mt t chc lu tr tt nht cho TDL. Chng hn trong ngn ng Pascal lu tr ngy trong thng ta c th khai bo bin ngay c kiu l integerclu tr trong b nh bi 2 byte. Tuy nhin trong mt thng ch c ti a 31ngy nn ta c th khai bo bin ngay c kiu min con 1..31 c lu tr trong

    b nhch vi 1 byte.

    Qun l b nh: S khai bo cho php xc nh thi gian tn ti ca TDL mcc chng trnh qun l b nhs dng cp pht v gii phng b nhchoTDL.

    Cc php ton chung. Hu ht cc ngn ngu dng cc k hiu c bit nh"+" ch mt php ton no ph thuc vo kiu d liu ca i s. V dtrong Pascal, "A+B" c ngha l "php cng cc s nguyn" nu A v B thuckiu Integer, "php cng cc s thc" nu A v B thuc kiu realv l "phph p" nu A v B thuc kiu tp hp. Cc php ton nh thc gi l cc

    php ton chung bi v n khng ch r mt php ton nht nh no. S khai

    bo cho php b dch xc nh mt php ton c thc chnh bi k hiuphp ton chung. V d trong Pascal, t s khai bo hai bin A v B, trnh bindch s xc nh c php ton c th trong ba php ton, theo nu A, B lcc bin integer th "A+B" l php cng hai s nguyn, nu A, B l hai binrealth "A+B" l php cng hai s thc Ngc li trong SNOBOL4 v khngc khai bo kiu cho bin nn s xc nh php "+" no thc hin phi clm ti thi im m mt php "+" b bt gp trong qu trnh thc hin chngtrnh.

    Kim tra kiu. Mc ch quan trng nht ca vic khai bo l chng cho phpkim tra kiu ca bin. V tnh cht quan trng ca vic kim tra kiu nnchng ta s xem xt n trong mc sau.

    2.6 KIM TRA KIU V BIN I KIU

    2.6.1 Khi nim kim tra kiu

    Kim tra kiu l kim tra xem kiu thc nhn c ca cc i strong mt php tonc ng vi kiu dliu m cc i s cn c hay khng.

    V d trc khi thc hin lnh gn X := A * B vic kim tra phi c xc nh ivi 2 php ton nhn v php gn. Trc ht php nhn phi nhn c 2 tham s A,

    B c kiu s, nu c A v B ng l c kiu s (chng hn s nguyn) th tip tc kimtra cho php ton gn. Tch A*B s l mt s nguyn nn X cng phi l mt binthuc kiu nguyn, nu khng ng nh vy th c s sai kiu.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    20/111

    Ngn ng l p trnh Chng II: Kiu dliu

    15

    Kim tra kiu c thc tin hnh trong lc chy chng trnh (kim tra kiu ng)hoc trong lc bin dch chng trnh (kim tra kiu tnh).

    2.6.2 Kim tra kiu ng

    Khi nim:Kim tra kiu ng l kim tra kiu c thc hin trong khi thc hin chng trnh.

    Thng thng kim tra kiu ng c thc hin mt cch tc th trc khi thc hinmt php ton.

    Phng php thc hin:

    kim tra kiu ng ngi ta phi lu tr thng tin v kiu ca mi mt TDL cngvi TDL . Trc khi thc hin mt php ton thng tin v kiu ca mi mt i sc kim tra. Nu kiu ca cc i s l ng th php ton sc thc hin v kiuca kt qu sc ghi li dng kim tra cho cc php ton sau, ngc li s c

    mt thng bo li v kiu .Ngn ngsdng:

    Kim tra kiu ng c s dng trong cc ngn ng khng khai bo nhSNOBOL4, LISP, APL. Trong cc ngn ng ny khng c s khai bo kiu cho bin.Kiu d liu ca cc bin A v B trong biu thc "A+B" c th thay i trong qutrnh thc hin chng trnh. Trong nhng trng hp nh vy, kiu ca A v B phic kim tra ng ti mi ln php cng c gi thc hin. Trong cc ngn ngkhng khai bo, cc bin i khi c gi l khng nh kiu v chng khng c kiucnh.

    u im:

    u im ch yu ca kim tra kiu ng l tnh mm do trong khi vit chng trnh:khng yu cu khai bo kiu v kiu ca TDL c th thay i trong qu trnh thchin chng trnh. Ngi lp trnh khng phi lo lng v kiu d liu.

    Nhc im:

    Tuy nhin kim tra kiu ng cng c mt s yu im nh sau:

    C kh nng b st li v kiu. Bi v vic kim tra ng ch kim tra ti thiim thc hin php ton do cc php ton nm trong nhnh chng trnh

    khng c thc hin th s khng c kim tra. Bt k mt nhnh cha ckim tra no u c th cha cc i s c li v kiu v do cc li ny cth xut hin ti thi im sau . V d ta c mt on chng trnh sau cvit trong mt ngn ng kim tra kiu ng:

    Nhp s a t bn phm;

    Nhp s b t bn phm;

    Nu a > b Th x := a + b

    Ngc li x := a + titi;

    Nu khi thc hin on chng trnh ny, ngi s dng lun lun nhp s aln hn s b th iu kin a>b lun lun ng nn khng bao gichng trnh

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    21/111

    Ngn ng l p trnh Chng II: Kiu dliu

    16

    thc hin lnh x := a + titi do khng bao gipht hin li v kiu: a l mts, khng th cng vi titi l mt chui.

    Kim tra kiu ng i hi thng tin v kiu phi c lu gi cho mi mtTDL trong qu trnh thc hin chng trnh do yu cu v b nhphi ln.

    Kim tra kiu phi c tin hnh tc th trc mi khi thc hin mt phpton nn tc thc hin chng trnh chm.

    2.6.3 Kim tra kiu tnh

    Khi nim:

    Kim tra kiu tnh l skim tra kiu c thc hin trong qu trnh dch chngtrnh.

    Phng php thc hin:

    Theo nguyn tc kim tra kiu tnh, thng tin v kiu ca TDL phi c cung cpcho b dch. Thng tin ny mt phn c cung cp bi php khai bo ca ngi lptrnh v mt phn bi ngn ng .

    Cc thng tin bao gm:

    i vi mi mt php ton th l s lng, th t v kiu d liu ca i sv kiu ca kt qu. i vi cc php ton nguyn thu th vic nh nghangn ng s cung cp cc thng tin ny cn i vi chng trnh con th ngilp trnh phi xc nh mt cch tng minh.

    i vi mi mt bin th l kiu ca bin. i vi mi mt hng, th l kiu ca i tng d liu hng. Ng ngha ca

    mt hng trc kin s ch ra kiu ca n, chng hn "2" l mt s nguyn, "2.3"l mt s thc.

    Kim tra kiu tnh c thc hin nh sau: Thng qua on u ca chng trnh, bbin dch tp hp thng tin t s khai bo trong chng trnh vo trong bng danh biu(symbol table) ni cha thng tin v kiu ca cc bin v chng trnh con. B bindch cng s c thng tin v cc php ton nguyn thuc nh ngha bi ngn ng,cc hng...Khi gp mt php ton th phi tra trong bng danh biu xc nh kiuca mi mt i s c hp l hay khng. Ch rng nu php ton l php ton chung

    nh ni trn th c th c nhiu kiu hp l cho mt i s. Nu kiu ca i s lhp l th kiu kt quc xc nh v b bin dch ghi li thng tin ny kim tracc php ton sau.

    Ngn ngsdng:

    Kim tra kiu tnh thng c s dng trong cc ngn ngkhai bo tc l khi vitchng trnh, cc bin phi c khai bo kiu trc khi s dng nh Pascal, C

    u im:

    Do php kim tra kiu tnh kim tra tt c cc php ton c th xut hin trongbt k mt lnh no ca chng trnh, tt c cc nhnh ca chng trnh uc kim tra nn khng th c s st li v kiu.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    22/111

    Ngn ng l p trnh Chng II: Kiu dliu

    17

    Mt khc thng tin v kiu khng gn vi TDL ti thi im thc hinchng trnh nn tit kim c b nhv tng tc thc hin chng trnh.

    Nhc im:

    Yu im ch yu ca kim tra kiu tnh l chng trnh khng mm do, ngi lp

    trnh lun phi lo lng v vic s dng bin khng ng kiu.

    2.7 CHUYN I KIU

    Trong qu trnh kim tra kiu, nu c s khng tng thch gia kiu thc ca i sv kiu ang c monng i ca php ton y th c hai la chn c th:

    S khng tng thch kiu b bo li hoc Mt s chuyn i kiu tng c thi hnh i kiu ca i s thc t

    thnh kiu ng vi yu cu.

    Chuyn i kiu l mt php ton c nh ngha nh sau:S chuyn i: Kiu1 -> Kiu2 ngha l s chuyn i ly TDL ca mt kiu v snsinh ra mt TDL "tng ng" ca mt kiu khc. Hu ht cc ngn ngu cungcp hai phng php chuyn i kiu:

    Trang b mt tp hp cc hm c xy dng m ngi lp trnh c th gitrong chng trnh to ra s chuyn i kiu. V d Pascal trang b hmROUND i mt TDL s thc thnh mt i tng d liu nguyn vi gitr bng phn nguyn ca s thc.

    Nh l mt s chuyn i tng (cn gi l p kiu) do ngn ng thc hintrong mt s trng hp khng tng thch kiu no . V d trong Pascal cci s ca php ton s hc "+" c ln s thc v s nguyn hoc khi gn mts nguyn cho mt bin s thc th s nguyn phi c i mt cch tngthnh kiu thc.

    i vi kim tra kiu ng th s chuyn i kiu tng c din ra ti im m skhng tng thch kiu c tm thy trong qu trnh thc hin chng trnh. i vis kim tra kiu tnh th mt m ph sc xen vo trong chng trnh ch dng gi ti hm bin i kiu ti im thch hp trong qu trnh thc hin.

    Chuyn i kiu tng gip ngi lp trnh khi mi lo lng v s sai kiu v trnh

    vic gi ti mt s lng ln cc php bin i kiu tng minh trong chng trnh.Tuy nhin chng ta nn trnh vic chuyn i kiu bng cch vit cc php ton ngkiu. Chng hn trong lp trnh thay v vit lnh x := 1 (vi x l bin s thc) ta nnvit x := 1.0, vi lnh trc th khi thc hin phi c mt s chuyn i kiu tngcn vi lnh sau th khng cn nn thi gian thc hin s nhanh hn.

    2.8 GN V KHI TO

    2.8.1 Php gn

    Gn tr cho bin l slu trgi tr dliu vo trong nhca bin .

    Gn tr l mt php ton cbn trong cc NNLT. N dng thay i s lin kt cagi tr vi TDL.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    23/111

    Ngn ng l p trnh Chng II: Kiu dliu

    18

    Ni chung cc ngn ng khc nhau th php gn cng khc nhau.

    Skhc nhau u tin l khc nhau v c php, chng hn ta c mt s c php lnhgn nh sau:

    A := B (Pascal hay Ada)

    A = B (C, C++, Fortran, PL/1 v SNOBOL4)MOVE B TO A (COBOL)A Void vi s hot ng:t gi trc cha trongi tng d liu Type1 thnh bn sao ca gi trc cha trong i tng d liuType2 v tr v mt kt qu c kiu void (c th hiu l khng c kt qu tr v).

    Trong mt s ngn ng nh C, C++ v LISP, php gn tr v trc tip mt kt qu lmt bn sao ca gi trc gn. Chng hn trong C, sc t php gn l

    Php gn (=)Type1 x Type2 -> Type3 vi s hot ng: t gi trc cha trongi tng d liu Type1 thnh bn sao ca gi trc cha trong i tng d liuType2 v to ra mt TDL mi Type3 cha bn sao gi tr ca Type2, tr v Type3nh l mt kt qu.

    V php gn trong Pascal khng tr v mt kt qu nn chng ta ch s dng chcnng gn tr ca n m thi. V khng c kt qu tr v nn mi mt lnh ta ch cth vit mt php gn, chng hn gn gi tr 10 cho hai bin A v B ta phi vit hailnh B := 10; A := B; hoc A := 10; B := 10;

    Ngc li khi lp trnh bng ngn ng C, v php gn c tr v mt kt qu nn ta cth vit: A = B = 10; Trong php gn B =10 va thc hin chc nng gn tr gitr 10 cho B va tr v 1 gi tr gn tip cho A. Gi trc tr v nh l mt ktqu ca php gn B cho A b b qua v lnh khng cha mt php ton no sau na.

    Php gn trong ngn ng C++ cng c cng cch nh trong C, v vy khi thit kton t gn cho mt i tng no (Overloading ton t = trong khi xy dng mtlp no ) ta phi vit: & operator= (const & Obj){

    // Thc hin vic gn d liu;return *this;

    }

    Trong tn lp l tn ca lp chng ta ang nh ngha. Phng thc ny nhn vomt i tng Obj, thc hin vic gn Obj cho i tng hin hnh v tri tnghin hnh ny v nh mt kt qu.

    V d ta to mt class c tn l point biu din cho mt im trong mt phng cc trng bi hai ta x v y. Trong chng trnh ta mun gn cc im cho nhau,

    nn trong khi nh ngha class point, ta phi nh ngha ton t gn. C th nh sau:class point {

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    24/111

    Ngn ng l p trnh Chng II: Kiu dliu

    19

    float x;float y;

    public:point() {x=0.0 ; y=0.0;} // Phng thc xy dng mc nhinpoint (float a, float b) {x=a; y=b;} // Phng thc xy dng bnh thngpoint & operator= (const point & p ) // nh ngha ton t gn{

    x = p.x; y = p.y; // Gn d liureturn * this;

    }}; // term

    Skhc nhau cui cng ca php gn l cch thc tin hnh gn tr. Xt lnh gnca Pascal "A := B", Pascal cng nh mt s ngn ng khc, iu ny c ngha l:"Gn bn sao ca gi tr ca bin B cho bin A". By gita li xt lnh gn "A = B"

    ca SNOBOL4. Trong SNOBOL4 th n c ngha l: "To mt bin tn A tham chiuti TDL m B tham chiu". Trong SNOBOL4 c A v B cng tr ti mt TDL.

    Pascal A := B (Sao chp TDL khi gn)

    Trc Sau

    SNOBOL4 A = B (Sao chp s trn TDL khi gn)

    Cch thc hin lnh gn ca SNOBOL4 r rng l to ra mt s lm tn.

    2.8.2

    Skhi to binKhi to mt bin l gn cho bin mt gi tru tin.

    Mt bin khi c to ra th sc cp pht nhnhng n vn cha c khi to.Khi n c gn mt gi tru tin th mi c khi to.

    Cc bin cha c khi to l ngun gc ca cc li lp trnh. Khi mt bin c cppht nhm cha c khi to th trong nh ca n cng c mt gi tr ngunhin no . Thng l mt gi tr rc (Khi mt TDL no trc b hy bnhng gi tr ca TDL ny trong nhvn cn, gi tr ny gi l gi tr rc). iunguy him l gi tr rc ny vn l mt gi tr hp l. V th chng trnh c th x l

    trn gi tr rc ny mt cch bnh thng v chng ta khng th kim sat c ktqu x l .

    17.2

    8.4

    8.4

    8.4

    A:A:

    B: B:

    17.2

    8.48.4

    A:A:

    B: B:

    Trc khi n Sau khi n

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    25/111

    Ngn ng l p trnh Chng II: Kiu dliu

    20

    V tnh cht nghim trng nh ni trn ca bin cha c khi to, cc ngn nglp trnh c th s dng cc gii php sau khc phc:

    1.- Nu bin cha c khto th s c gi tr NULL: Khi mt bin mi c tora, nhcp pht cho n phi cha mt dy cc bit biu din cho mt gi tr NULL.

    Ty thuc vo kiu ca bin m gi tr NULL ny s c mt gi tr c th, v d nu lbin s th NULL l 0, nu l bin chui k t th NULL l chui rng, nu bin llogic th NULL l FALSE...

    2.- Khi to bin ngay sau khi n va c to ra l mt cch lp trnh tt v trongmt s ngn ng mi u cung cp phng tin lm iu ny mt cch d dng.Trong ngn ng Pascal mt bin c khi to ng thi vi vickhai bo c gi lbin c gi tru hay cn gi l hng nh kiu.

    V d:const i:integer=10;

    a: ARRAY[1..3,1..2] Of Integer = ((11, 12), (21, 22), (31, 32));var j:integer;begin

    writeln(i); i:= i+1; writeln(i);for i:=1 to 3 do begin

    for j:=1 to 2 do write(a[i,j]:5);writeln;

    end; end.

    2.9 CU HI N TP

    1. Xt v mt cu trc th c cc loi i tng d liu no?2. Th no l mt i tng d liu scp?3. Th no l mt i tng d liu c cu trc?4. i tng d liu tng minh l g?5. i tng d liu n l g?6. K tn cc mi lin kt ca i tng d liu.7. Th no l mt bin?8.

    Th no l mt hng?

    9. Kiu d liu l g?10.Khi c t mt kiu d liu, chng ta phi c t nhng iu g?11.Cho v d v mt php ton gy ra hiu ng l.12.Khi ci t mt kiu d liu, chng ta phi ch r nhng iu g?13.Mc ch ca s khai bo l g?14.Th no l kim tra kiu?15.Khi c s khng tng thch v kiu th chng trnh dch phi lm g?16.K tn cc phng php kim tra kiu.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    26/111

    Ngn ng l p trnh Chng II: Kiu dliu

    21

    17.Kim tra kiu tnh c tin hnh trong lc no?18.Kim tra kiu ng c tin hnh trong lc no?19.Nu cc im mnh ca kim tra kiu tnh.20.

    Nu cc im yu ca kim tra kiu tnh.21.Nu cc im mnh ca kim tra kiu ng.

    22.Nu cc im yu ca kim tra kiu ng.23.Thng tin v kiu trong kim tra kiu tnh c lu tru?24.Thng tin v kiu trong kim tra kiu ng c lu tru?25.Kim tra kiu ng c thc hin trong ngn ng no?26.Kim tra kiu tnh c thc hin trong ngn ng no?27.Php gn tr c tr v mt kt qu khng?28.Th no l khi to mt bin?29.Nu trong mt biu thc c s dng mt bin cha c khi to th c th

    nh gi (nh tr) c biu thc khng?

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    27/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    22

    CHNG 3: KIU D LIU S CP

    3.1 TNG QUAN

    3.1.1 Mc tiu

    Sau khi hc xong chng ny, sinh vin cn phi nm:

    - Khi nim v kiu d liu scp.- c t v phng php ci t kiu d liu scp trong cc ngn ng lptrnh.

    - Mt s kiu d liu scp c th nh: kiu s, k t, logic3.1.2 Ni dung ct li

    - Kin thc tng quan v kiu d liu scp.- Mt vi kiu d liu scp: kiu s, lit k, logic, k t.

    3.1.3 Kin thc cbn cn thit

    Kin thc v knng lp trnh cn bn, kin thc chng 2.

    3.2 NH NGHA KIU D LIU S CP

    Kiu dliu scp l mt kiu dliu m cc TDL ca n l cc TDL scp.

    Ni chung cc ngn ng l p trnh u c cc kiu d liu s c p sau: s nguyn(integer, int), s thc (real, float, double), k t (char, character), logic (bool,

    boolean) v kiu lit k.

    3.3 S C T CC KIU D LIU S CP

    3.3.1 Thuc tnh ca kiu dliu scp

    Thuc tnh cbn nht ca bt k mt TDL scp no chnh l kiu d liu ca n.i vi mt s kiu d liu c th th c th c thm cc thuc tnh b sung ctrng cho kiu .

    3.3.2 Gi tr ca kiu dliu scp

    Tp hp cc gi tr ca mt kiu d liu scp lun l mt tp hp c thtv cmt gi tr nh nht v mt gi tr ln nht.

    Chnh nhtnh cht c th t ca tp gi tr scp nn trong thao tc sp xp d liu,kha sp xp thng thuc kiu d liu scp.

    V d kiu d liu integer l mt tp hp hu hn cc s nguyn (dnhin l c tht), t mt s nguyn nh nht n mt s nguyn ln nht. S nguyn nh nht v snguyn ln nht l cc s nguyn tng ng vi cc gi tr nguyn nh nht v lnnht c th biu din mt cch thun tin trong b nhca my tnh.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    28/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    23

    3.3.3 Php ton trn kiu dliu scp

    Do tp gi tr scp c th t, nn trong tt c cc kiu d liu scp u c cc phpton quan h. Ngoi ra cn c cc php ton nhn vo mt si s thuc kiu scpv tr v mt gi tr scp cng kiu. Tuy nhin cn ht sc lu rng tp cc gi tr

    scp c gi tr nh nht v gi tr ln nht, cho nn i khi gi tr tr v ca phpton khng nm trong gii hn ca t p gi tr s cp, iu ny s gy ra s sai sttrong chng trnh.

    3.4 CI T CC KIU D LIU S CP

    3.4.1 T chc dliu trong b nh

    Ngi ta thng s dng vic t chc d liu di phn cng ca my tnh biudin cho cc gi tr d liu ca kiu d liu scp.

    L do ca vic la chn ny rt n gin: Nu biu din b nhca phn cng c

    s dng th cc php ton cbn trn d liu ca kiu ny c thc thc hin bicc php ton do phn cng cung cp. M cc php ton c thit k bi phn cngs c tc thc hin nhanh. Ngc li, nu ta s dng s biu din bi phn mm th

    phi s dng cc php ton m phng bi phn mm m tc thc hin s chm hn.

    Tuy nhin, vic s dng biu din bi phn cng cng c yu im l tp cc gi tr sb hn ch.

    V d biu din mt s nguyn trong b nh, ta c th s dng hai phng php:

    1.- S dng cch biu din mt s nguyn ca phn cng, chng hn s dng 16 bit biu din cho mt s nguyn. Vi phng php ny th ta c th s dng lun ccphp tnh s hc trn s nguyn (+, -, *, DIV, MOD) c thit k cho phn cng.u im ca phng php ny l cc php tnh s hc c tc thc hin nhanh.

    Nhc im ca phng php l tp gi tr cc s nguyn ch c 65535 s (t -32768n 32767).

    2.- S dng mt cu trc d liu no biu din cho mt s nguyn, chng hn sdng mt chui k t, trong mi k t lu tr mt ch s. u im ca phng

    php l tp cc gi tr nguyn s rt ln (s cc ch s trong mt nguyn c th bngchiu di ca chui k t biu din cho n). Nhc im ca phng php l chng ta

    phi xy dng cc chng trnh con thc hin cc php tnh s hc v dnhin tc

    thc hin ca cc chng trnh con ny s chm hn cc php tnh c xy dngtrong phn cng.

    Cc thuc tnh (ch yu l kiu d liu) ca TDL s cp c x l bng 2 cchchnh nh sau:

    1.- Cc thuc tnh ca TDL c thc xc nh trong khi bin dch bi trnh bindch. Cc thuc tnh ny sc lu tr trong b dch ca ngn ng (chng hn bngdanh biu) v khi cn s tm li cc thuc tnh ny s dng. l phng phpthng dng trong cc ngn ng bin dch nh FORTRAN, C v Pascal, ni m tnhhiu qu ca vic s dng b nhv tc thc hin chng trnh l nhng mc tiu

    trn ht.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    29/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    24

    2.- Cc thuc tnh c thc lu tr trong b m t nh l mt phn ca TDL tithi gian thc hin. y l phng php thng dng trong cc ngn ng thng dchnh LISP v SNOBOL4, ni m tnh linh hot mm do l mc tiu trc ht chkhng phi l tnh hiu qu.

    3.4.2 Ci t php tonMi mt php ton thao tc trn cc TDL ca mt kiu d liu scp cho c thc ci t bng mt trong 3 cch nh sau:

    1.- Nh l mt php ton phn cng trc tip, nu s biu din b nhca TDL l sbiu din ca phn cng. V d nu cc s nguyn c lu tr bng cch dng biudin phn cng cho s nguyn th cc php ton nh php cng, tr v cc php tons hc khc ca s nguyn c thc thc hin bng cch dng cc php ton s hccho s nguyn c xy dng trong phn cng.

    2.- Nh l mt th tc hoc hm thc hin cc php ton. V d php ton ly cn bchai thng thng khng c cung cp mt cch trc tip nh l mt php ton trong

    phn cng ngay c khi cc sc biu din bng s biu din ca phn cng v vvy n c ci t nh l mt chng trnh con tnh cn bc hai. Nu cc TDLkhng c biu din bng s biu din xc nh bi phn cng th tt c cc phpton phi c m phng bi phn mm.

    3.- Nh l mt chui cc dng m lnh dng thc hin php ton nh l mt dycc php ton phn cng. V d hm ly tr tuyt i ca mt sc nh ngha l:

    ABS(x) =

    =0 th b qua ch th k tip

    3.- t x = -x

    4.- Lu x vo b nh

    Trong mi mt dng m lnh c thc hin bi mt php ton trong phn cng.

    3.5 KIU D LIU S

    Hu ht cc ngn ng lp trnh u c cc kiu d liu s, nhng cc chi tit ca sc t v php ci t cc kiu ny c nhiu im khc nhau. Kiu s nguyn v kius thc l ph bin nht bi v chng da mt cch trc tip vo phn cng ca mytnh.

    3.5.1 S nguyn

    Sc t

    c t cc thuc tnh: Mt TDL ca kiu s nguyn khng c thuc tnh no khcngoi kiu ca n.

    c t gi tr: Tp hp cc gi tr nguyn c xc nh theo dng l mt tp hp conc th t hu hn ca tp v hn cc s nguyn c nghin cu trong ton hc.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    30/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    25

    Gi tr nguyn ln nht i khi c biu din nh l mt hng xc nh. V d trongPascal l hng MaxInt. Min gi tr ca kiu s nguyn l t p cc s nguyn t -MaxInt n MaxInt. Gi tr MaxInt c la chn phn nh gi tr nguyn ln nht cth biu din c trong phn cng.

    c t cc php ton: Trn TDL nguyn thng c cc nhm php ton chnh nhsau:

    1.- Cc php tnh s hc

    Cc php tnh s hc hai ngi thng c nh ngha l:

    Bin_Op: Integer x Integer -> Integer.

    y Bin_Op c th l cng (+), tr (-), nhn (*), chia (/ hoc DIV), ly phn d(MOD) hoc mt s php ton tng t khc.

    Cc php tnh s hc mt ngi c nh ngha: Unary_Op : Integer -> Integer

    y Unary_Op c th l m (-), dng (+).Cc php ton s hc ph bin khc thng c cha trong th vin chng trnhcon.

    2.- Cc php ton quan h

    Cc php ton quan hc nh ngha l: Rel_Op : Integer x Integer -> Boolean

    y Rel_Op c th l bng, khc, nh hn, ln hn, nh hn hoc bng, ln hnhoc bng. Php ton quan h so snh hai gi tr d liu i s v tr v kt qu l mti tng d liu logic (ng hoc sai).

    3.- Gn trCng nh php gn tng qut, php gn ca s nguyn c th tr v (vi nh ngha:Assignment : Intger x Integer -> Integer) hoc khng tr v mt gi tr (vi inhngha: Assignment : Integer x Intger -> Void) .

    Sci t

    Kiu d liu nguyn hu ht c ci t mt cch trc tip bng cch dng s biudin b nhc xc nh bi phn cng v tp hp cc php tnh s hc, cc phpton quan h nguyn thu trong phn cng cho cc s nguyn. Thng thng s biu

    din ny s dng mt t trong b nh hoc mt dy cc bytes lu tr mt snguyn. Chng hn ngn ng Pascal s dng biu din s nguyn bi 1 t (word)trong phn cng ca my tnh biu din cho mt s integer.

    3.5.2 Min con ca s nguyn

    Sc t

    Kiu min con ca kiu dliu nguyn l mt kiu dliu m tp cc gi tr ca n lmt dy cc gi tr nguyn trong mt khong gii hn nh.

    Cc dng khai bo sau thng c s dng:A : 1..10 (Pascal)

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    31/111

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    32/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    27

    3.6 KIU LIT K

    3.6.1 t vn

    Trong lp trnh, c mt iu ph bin l mt bin c th ly mt hoc mt s nh ccgi tr. Chng hn bin NGAY_TRONG_TUAN ch ly 7 gi tr biu din cho chnht, th hai, th ba,...th by. Tng t bin GIOI_TINH ch c hai gi tr

    biu din l "nam" v "n". Trong cc ngn ng nh FORTRAN hay COBOL mtbin nh vy phi c kiu s nguyn v cc gi trc biu din bi cc s nguynchng hn "ch nht" c biu din bi s 1, "th hai" c biu din bi s 2,..."nam" c biu din bi s 0 v "n" c biu din bi s 1.

    Chng trnh s dng cc gi tr ny nh l cc s nguyn v ngi lp trnh phi nhs tng ng gia cc gi tr nguyn vi "ngha" ca chng trong ng dng. Qu thcy l mt iu bt tin v d gy ra sai st.

    Nhiu ngn ng mi nh Pascal hay Ada cho php ngi lp trnh tt ra mt kiud liu bng cch lit k ra mt danh sch cc gi tr ca kiu . Kiu ny gi l kiulit k.

    3.6.2 Sc t

    Ngi lp trnh nh ngha kiu lit k bng cch lit k ra mt danh sch cc tn trckin thng qua s khai bo. Cc tn trc kin trong danh sch l cc gi tr ca kiu vth t ca chng cng c xc nh nh th t chng xut hin trong danh sch.Chng hn, ta c khai bo bin trong Pascal:

    VAR

    NGAY_TRONG_TUAN : (Chu_nhat, Hai, Ba, Tu, Nam, Sau, Bay);

    V c nhiu bin c cng mt kiu lit k c dng trong mt chng trnh nnngi ta thng nh ngha mt lit k nh l mt kiu c tn, sau s dng n xc nh kiu cho nhiu bin nh trong Pascal:TYPE

    NGAY = (Chu_nhat, Hai, Ba, Tu, Nam, Sau, Bay);

    sau khai bo bin:VAR

    NGAY_TRONG_TUAN, NGAY_LAM_VIEC: NGAY;

    Trong s khai bo trn, cc tn trc kin nh Chu_nhat, Hai, Ba, chnh l cc gi trca kiu v cc gi tr ny c sp th t nh chng c ghi ra, tc l Chu_nhat< Hai < Ba < < Bay.

    Ch rng kiu NGAY c nh ngha th c thc dng nh mt tn kiunguyn thu (Integer chng hn) v cc hng trc kin nh Chu_nhat, Hai, Ba, Tu,..cng c s dng nh l cc hng trc kin nguyn thu (chng hn "27"). V th tac th vit:

    IF NGAY_TRONG_TUAN = Hai THEN ...

    Cc php ton cbn trong kiu lit k l cc php ton quan h (bng, nh hn, lnhn...), php gn tr, php ton cho gi trng sau v gi trng trc mt gi trtrong dy cc hng trc kin ca lit k.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    33/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    28

    3.6.3 Sci t

    Biu din b nhcho mt TDL kiu lit k thng l khng phc tp. Mi gi trtrong lit k c biu din bng mt s nguyn 0, 1, 2,... V d kiu NGAY trn chcn s dng 7 gi tr t 0 n 6, trong 0 biu din cho Chu_nhat, 1 biu din cho

    Hai, 2 biu din cho Ba,...S ci t cc php ton cbn cng khng phc tp. Cc php quan hc ci tbng cch s dng cc php ton quan h di phn cng cho s nguyn nh "=", "",... Php ton ly gi trng sau mt gi trc ci t bng cch ly s nguyn

    biu din cho gi tr cng thm 1 v c s kim tra thy c kt qu khngvt qu gii hn cho php. Chng hn xc nh gi tr sau Hai, ta ly 1 (biu dincho Hai) cng vi 1 c 2, m 2 biu din cho Ba, nn sau Hai l Ba, nhng sau Bayth khng c gi tr no v tng ca 6 (biu din cho Bay) vi 1 c 7, vt qu giihn cho php ca kiu. Tng t cho php ton ly gi trng trc ca mt gi tr.

    3.6.4 Li ch ca vic sdng kiu lit kKiu lit k c a vo trong ngn ng lp trnh nhm gii quyt vn cnu ra trong phn t vn . T ta c th thy r vic s dng kiu lit k lm chochng trnh sng sa, trc quan, ngi lp trnh khng cn phi nhngha ca gitr s v do vy chng trnh s c chnh xc cao hn. Ni cch khc, kiu lit klm tng tnh dc, tnh d vit v tin cy ca ngn ng.

    3.7 KIU LOGIC

    Kiu logic (bool, boolean hoc logical) l kiu d liu ph bin trong hu ht cc ngn

    ng.3.7.1 Sc t

    Kiu d liu logic gm cc TDL c mt trong hai gi trng hoc sai. Trong Pascalv Ada, kiu d liu logic c xem mt cch n gin nh l mt lit k c nhngha bi ngn ng. BOOLEAN = (FALSE, TRUE) trong xc nh cc tn"FALSE" v "TRUE" cho cc gi tr ca kiu v xc nh th t FALSE < TRUE. Cc

    php ton ph bin trn kiu logic gm c:

    AND: Boolean X Boolean -> Boolean

    OR: Boolean X Boolean -> Boolean NOT: Boolean -> Boolean

    3.7.2 Php ci t

    Ch cn mt bit ca b nh lu tr mt tng d liu logic. Tuy nhin v cc bitn c th khng c a ch ring trong b nhnn ta phi s dng mt n v nhca ch nh l byte hoc word do cc gi tr FALSE v TRUE c thc biu din

    bng hai cch khc nhau:

    1.- Bit c trng (thng thng l bit du ca s biu din s) vi 0 biu din cho

    FALSE v 1 biu din cho TRUE, cc bits cn li trong byte hoc word s b b qua.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    34/111

    Ngn ng l p trnh Chng III: Kiu dliu scp

    29

    2.- Sdng ton bn v nh ghi gi tr zero (tt c cc bit bng 0) biu dincho FALSE cn gi tr khc zero biu din cho TRUE.

    3.8 KIU K T

    Hu ht d liu xut v nhp u c dng k t v c s chuyn i sang dng d liukhc trong qu trnh nh p xut. Chng hn khi ta nhp mt ch s (hoc mt chuich s) t bn phm vo mt bin s trong chng trnh th c mt s chuyn ich s (chui ch s) thnh s. Hay khi ta ghi mt s ra my in hoc ra mt tp tin vn

    bn th c mt s chuyn i t s thnh ch s (chui ch s). Tuy nhin vic xl mt s d liu trc tip di dng k t cng cn thit trong mt sng dng no, chng hn trong x l vn bn. D liu chui k t c thc cung cp mt cchtrc tip thng qua kiu chui k t (nh trong SNOBOL4, PL/1 v cc ngn ng mikhc) hoc thng qua kiu k t v chui k tc xem nh l mt mng cc k t(nh trong APL, Pascal v Ada. Ch Turbo Pascal c kiu chui k t).

    3.8.1 Sc tKiu k t l mt lit k c nh ngha bi ngn ng tng ng vi mt tp hp kt chun c cho bi phn cng v hiu hnh nh tp cc k t ASCII chng hn.

    Cc php ton trn d liu k t bao gm: cc php ton quan h, php gn, v i khic php kim tra xem mt k t c thuc mt lp c bit "ch ci", "ch s" hoc lpk t xc nh no .

    3.8.2 Php ci t

    Cc gi tr d liu hu nh lun c ci t mt cch trc tip bi phn cng v hiu hnh. Do cc php ton quan h cng c biu din mt cch trc tip bi

    phn cng.

    3.9 CU HI N TP

    1. Nu nh ngha kiu d liu scp.2. Tp cc gi tr ca mt kiu scp c c im g?3. C phi cc ngn ng lp trnh thng s dng biu din trong phn cng

    biu din cho kiu s nguyn?

    4. ci t cc php ton s hc trn kiu d liu s nguyn, c phi ngi taphi thit lp cc chng trnh con trong ngn ng?5. Ti sao ngi ta li s dng kiu lit k?6. Ti sao ngi ta li s dng kiu min con?

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    35/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    30

    CHNG 4: KIU D LIU C CU TRC

    4.1 TNG QUAN

    4.1.1 Mc tiu

    Sau khi hc xong chng ny, sinh vin cn phi nm:

    - Khi nim v kiu d liu c cu trc.- c t v phng php ci t kiu d liu c cu trc.- Cc c t, phng php t chc lu tr, ci t cc php ton ca mt skiu d liu c cu trc nh: vecto, mng nhiu chiu, mu tin, chui k t

    4.1.2 Ni dung ct li

    - Kiu d liu c cu trc.- Cc c t, phng php lu tr, hnh thc truy xut, ci t cc php tonca mt s kiu d liu c cu trc.

    4.1.3 Kin thc cbn cn thit

    Kin thc v knng lp trnh cn bn, kin thc chng 2.

    4.2 NH NGHA KIU D LIU C CU TRC

    Kiu dliu c cu trc hay cn gi l cu trc dliu (CTDL) l mt kiu dliu mcc TDL ca n l cc TDL c cu trc.

    Nh vy CTDL l mt tp hp cc TDL c cu trc cng vi tp hp cc php tonthao tc trn cc TDL . Cc kiu d liu nh mng, mu tin, chui, ngn xp(stacks), danh sch, con tr, tp hp v tp tin l cc CTDL.

    4.3 S C T KIU CU TRC D LIU

    4.3.1 Sc t cc thuc tnh

    Cc thuc tnh ch yu ca CTDL bao gm:

    S lng phn t

    S lng cc phn t ca mt CTDL cho bit kch thc ca CTDL, s lng ny cth cnh hoc thay i tu loi CTDL.

    Mt CTDL c gi l c kch thc cnh nu s lng cc phn tkhng thayi trong thi gian tn ti ca n.

    V d cc kiu mng, mu tin l cc CTDL c kch thc cnh.

    Mt CTDL c gi l c kch thc thay inu slng cc phn tthay i mtcch ng trong thi gian tn ti ca n.

    V d ngn xp, danh sch, tp hp, chui k t v tp tin l cc CTDL c kch thc

    thay i. Cc php ton cho php thm hoc bt cc phn t ca cu trc lm thay ikch thc ca cu trc.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    36/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    31

    Kiu ca mi mt phn t

    Mi mt phn t ca CTDL c mt kiu d liu no , ta gi l kiu phn t. Kiuphn t c th l mt kiu d liu scp hoc mt CTDL. Cc phn t trong cng mtCTDL c th c kiu phn t ging nhau hoc khc nhau.

    Mt CTDL c gi l ng nhtnu tt c cc phn t ca n u c cng mtkiu.

    V d mng, chui k t, tp hp v tp tin l cc CTDL ng nht .

    Mt CTDL c gi l khngng nht nu cc phn tca n c kiu khc nhau.

    V d mu tin l CTDL khng ng nht.

    Tn dng cho cc phn tc la chn

    la chn mt phn t ca CTDL cho mt x l no ngi ta thng s dng

    mt tn. i vi cu trc mng, tn c th l mt ch s nguyn hoc mt dy ch s;i vi mu tin, tn l mt tn trng. Mt s kiu cu trc d liu nh ngn xp vtp tin cho php truy nhp n ch mt phn tc bit (phn tu tin hoc phn thin hnh).

    S lng ln nht cc phn t

    i vi CTDL c kch thc thay i nh chui k t hoc ngn xp, i khi ngi taquy nh thuc tnh kch thc ti a ca cu trc gii hn s lng cc phn t cacu trc.

    T chc cu trc

    T chc ph bin nht l mt dy tun t ca cc phn t. Vector (mng mt chiu),mu tin, chui k t, ngn xp, danh sch v tp tin l cc CTDL c t chc kiu ny.

    Mt s cu trc cn c mrng thnh dng "nhiu chiu" v d mng nhiu chiu,mu tin m cc phn t ca n l cc mu tin, danh sch m cc phn t ca n ldanh sch.

    4.3.2 Cc php ton trn cu trc dliu

    Mt s cc php ton c th ca CTDL:

    Php ton la chn phn tca cu trc

    Php ton la chn mt phn tl php ton truy nhp n mt phn tca CTDL vlm cho n c thc xl bi mt php ton khc.

    C hai loi la chn:

    La chn ngu nhin (hay cn gi l la chn trc tip) l sla chn mt phn tty ca cu trc dliu c truy nhp thng qua mt ci tn.

    V d la chn mt phn t no ca mng, ta ch ra ch s ca phn t, la

    chn mt phn t ca mu tin ta s dng tn ca phn t.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    37/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    32

    La chn tun tl sla chn trong phn tc la chn l mt phn tngsau cc phn tc la chn khc theo tun tca vic x l hoc l la chnmt phn tc bit no .

    V d la chn tun t cc phn t trong mt tp tin hay la chn mt phn t trn

    nh ca ngn xp.Cc php ton thao tc trn ton b cu trc dliu

    L cc php ton c th nhn cc CTDL lm cc i s v sn sinh ra kt qu l ccCTDL mi. Chng hn php gn mt mu tin cho mt mu tin khc hoc php hp haitp hp.

    Thm / bt cc phn t

    L cc php ton cho php thm vo CTDL hoc loi b khi CTDL mt s phn t.Cc php ton ny s lm thay i s lng cc phn t trong mt CTDL. Vic thmvo hay loi b mt phn t thng phi chnh mt v tr no .

    To / hy CTDL

    L cc php ton to ra hoc xa b mt CTDL.

    4.4 S CI T CC CU TRC D LIU

    4.4.1 Biu din b nh

    S biu din b nhcho mt CTDL bao gm:

    - B nhcho cc phn t ca cu trc.- B m t lu tr mt s hoc tt c cc thuc tnh ca cu trc.

    C hai phng php biu din b nhl:

    Biu din tun t

    Biu din tun tl sbiu din, trong CTDL c lu trnhmt khi cc nhlin tip nhau, btu bng b m t sau l cc phn t.

    y l phng php c dng cho cc CTDL c kch thc cnh hoc c kch

    thc thay i nhng ng nht. Chng hn c th dng biu din tun t biu dincho mng, mu tin,

    Biu din lin kt

    Biu din lin kt l sbiu din, trong CTDL c lu trtrong nhiu khi nhti cc v tr khc nhau trong b nh, mi khi lin kt vi khi khc thng qua mtcon tr gi l con tr lin kt.

    Phng php ny thng c s dng cho cc CTDL c kch thc thay i. Chnghn c th dng biu din lin kt biu din cho danh sch, ngn xp,

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    38/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    33

    B m t

    Phn t

    Phn t

    Phn t

    4.4.2 Ci t cc php ton trn cu trc dliuPhp ton la chn mt phn t l php ton c bn nht trong cc php ton trnCTDL. Nh trn trnh by, c hai cch la chn l la chn ngu nhin v la chntun t v hai cch biu din b nhl biu din tun t v biu din lin kt. V vy y chng ta s xt cch thc hin mi mt phng php la chn vi mi mt

    phng php biu din b nh.

    i vi biu din tun t

    Nh trn trnh by, trong cch biu din tun t, mt khi nh lin tc sccp pht lu tr tan b CTDL. Trong , v tr u tin ca khi nhc gi la ch cs. Khong cch ta ch csn v tr ca phn t cn la chn cgi l di ca phn t.

    Cch thc truy xut, c cho bi tn hoc ch s ca phn t (chng hn ch s camt phn t ca mng), s xc nh cch tnh di ca phn t nh th no.

    la chn ngu nhin mt phn t cn phi xc nh v tr thc ca phn t (tc la ch ca nhlu tr phn t) theo cng thc:

    V tr thc ca phn t= a ch cs+ di ca phn t.

    La chn tun tmt dy cc phn t ca cu trc c th theo cc bc:

    - chn phn tu tin ta dng cch tnh a ch cscng vi di nh nitrn.

    B m t

    Phn t

    Phn t

    Phn t

    Biu din tun t Biu din lin kt

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    39/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    34

    - i vi cc phn t tip theo trong dy, cng kch thc ca phn t hin hnh vi vtr ca phn t hin hnh c v tr ca phn t k tip.

    i vi biu din lin kt

    Nh trn trnh by, cc khi nhtrong biu din lin kt c b tr ri rc nhau,khi ny ni vi khi kia bng con tr v lc u ch nm c con tr ti khi utin. Do vic i n cc khi lun phi xut pht t khi u tin.

    la chn ngu nhin mt phn t trong cu trc lin kt cn phi duyt mt dycc khi, t khi u tin n khi cn la chn.

    La chn tun tmt dy cc phn tc thc hin bng cch la chn phn tutin nh ni trn v sau t phn t hin hnh, duyt theo con trn phnt k tip.

    4.5 VCT

    4.5.1 nh ngha vct

    Vct(cn gi l mng mt chiu) l mt CTDL bao gm mt scnh cc phn tc kiuging nhauc tchc thnh mt dy tun tcc phn t.

    Nh vy vctl mt CTDL c kch thc cnh v ng nht.

    4.5.2 Sc t v c php

    c t thuc tnh ca vct

    Cc thuc tnh ca mt vctl:- S lng cc phn t, lun c ch r bng cch cho tp ch s. Tp ch s nythng thng c cho bi mt min con cc s nguyn, trong trng hp , slng cc phn t bng s nguyn cui cng - s nguyn u tin + 1. Mt cchtng qut th tp ch s c th l kiu lit k no , trong trng hp ny, s lngphn t bng s gi tr trong kiu lit k. Cng c nhng ngn ng chnh r slng cc phn t nh ngn ng C chng hn.

    - Kiu dliu ca mi mt phn t, thng c vit r trong khai bo.

    - Ch sc sdng la chn mi mt phn t. Nu tp ch sc cho bimt min con ca tp cc s nguyn th s nguyn u tin chnh phn tu tins nguyn th 2 chnh phn t th 2 ...Nu tp ch s l mt lit k th gi trutin trong lit k l ch s ca phn tu tin. Nu ngn ng chnh r s lng cc

    phn t th 0 l ch s ca phn tu tin.

    Khai bo vcttrong Pascal l ARRAY [] OF .

    V d VAR a: ARRAY[1..10] OF real;

    Khai bo ny xc nh 1 vcta c 10 phn t l cc s real. Cc phn t ny c lachn bi cc ch s t 1 n 10.

    Min gi tr ca ch s khng nht thit bt u t 1, v d

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    40/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    35

    Var b: ARRAY [-5..10] OF integer; Vi khai bo ny th b l mt vctc 16 phn t(10 (-5) + 1 = 16). Cc phn tc la chn nhcc ch s t -5 n 10.

    Min gi tr ca ch s khng nht thit l min con ca s nguyn, n c th l mtlit k bt k (hoc 1 min con ca mt lit k). V d:

    Type Ngay = (Chu_nhat, Hai, Ba, Tu, Nam, Sau, Bay);var

    c : ARRAY [Ngay] OF Integer ;Khai bo ny xc inh vctc c 7 phn t l cc s integer, cc phn t ca c cla chn nhcc ch s t Chu_nhat n Bay.Khai bo vct trong ngn ng C l [].V d int d[10];Khai bo ny xc nh vctd c 10 phn t cc s int, cc phn t ny c la chn

    nhcc ch s t 0 n 9.c t cc php ton trn vct

    Cc php ton trn vctbao gm:

    Php ton la chn mt phn tca vctl php ly ch s, c vit bng tn cavcttheo sau l ch s ca phn tc la chn t trong cp du []. Nh vy phpla chn mt phn t ca vctl php la chn trc tip.

    V d, vi cc khai bo trong cc v d thuc phn c t thuc tnh ni trn,

    Cc phn t ca vcta c la chn bng cch vit a[1], a[2], , a[10].

    Cc phn t ca vctb c la chn bng cch vit b[-5], b[-4], , b[10].

    Cc phn t ca vctc c la chn bng cch vit c[Chu_nhat], c[Hai], , c[Bay].

    Cc phn t ca vctd c la chn bng cch vit d[0], d[1], , d[9].

    Ch s c th l mt hng hoc mt bin (ni chung l mt biu thc), v d a[i] haya[i+2]. Nhch s l mt biu thc nn vic lp trnh trnn n gin hn nhiu nhtnh khi qut ca ch s.

    V d in ra gi tr ca 10 phn t trong vcta, thay v ta phi vit 10 lnh in ccphn t c th theo kiu writeln(a[1]); writeln(a[2]); writeln(a[3]); ta ch cn vitmt lnh for i:=1 to 10 do writeln(a[i]);

    Cc php ton khc trn vctbao gm cc php ton to v hy b vct, gn haivctcho nhau v cc php ton thc hin nh cc php ton s hc trn tng cp 2vctc cng kch thc. Chng hn php cng 2 vct(cng cc phn t tng ng).Ty thuc vo ngn ng m cc php ton ny c hoc khng c.

    4.5.3 Ci t mt vct

    Biu din b nh

    Biu din b nhtun tc s dng biu din cho mt vct.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    41/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    36

    M hnh sau minh ha cho s biu din b nhca vctA : ARRAY[LB..UB] OF.

    a ch cs VctA Kiu d liu

    LB Cn di ca tp ch sB m t UB Cn trn ca tp ch sKiu phn t Kiu d liu ca phn t

    E Kch thc mi phn tA[LB]

    A[LB+1]B nhcho cc

    phn t ca vct...

    A[UB]

    Khi nh lu tr mt vctc hai phn: b m t v b nhdnh cho cc phntca vct. Trong b m t lu tr kiu d liu ca cu trc (vctA), cn di catp ch s (LB - Lower Bound), cn trn ca tp ch s (UB - Upper Bound), kiu dliu ca phn t v kch thc mi phn t (E). B nh dnh cho cc phn t cavct lu tr lin tip cc phn t, t phn tu tin (A[LB]) cho n phn t cuicng (A[UB]). Do cc phn t c cng mt kiu nn cc nhdnh cho cc phn tc kch thc bng nahu.

    a ch ca nhu tin trong khi gi l a ch cs.

    Gii thut thc hin cc php ton

    Php ton la chn mt phn tc thc hin bng cch tnh v tr ca phn tcn la chn theo cng thc:

    V tr ca phn tthi = + D + (i - LB) * E

    Trong i l ch s ca phn t cn la chn, l a ch csca khi nh(ach word hoc byte u tin ca khi nhdnh cho vct) D l kch thc ca b mt, LB l cn di ca tp ch s v E l kch thc ca mi mt i tng d liuthnh phn (s word hoc byte cn thit lu tr mt phn t).

    Nu ch s l mt gi tr ca kiu lit k ch khng phi s nguyn th hiu i-LB phi

    c tnh ton mt cch thch hp (chng hn s dng hiu ca hai s th t tngng ca i v LB trong lit k).

    Php gn mt vctcho mt vctkhc c cng thuc tnh c thc hin bng cchsao chp ni dung trong khi nhbiu din vctth nht sang khi nhbiu dinvctth hai.

    Cc php ton trn ton b vctc thc hin bng cch s dng cc vng lp x ltun t cc phn t ca vct.

    4.6 MNG NHIU CHIU

    Ma trn (mng hai chiu) c xem nh l mt vctca cc vct. Mt mng 3 chiuc xem nh l mt vctca cc ma trn...

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    42/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    37

    4.6.1 Sc t v c php

    c t thuc tnh

    Mng nhiu chiu tng t nh vctnhng ch c mt thuc tnh khc vctl mi

    mt chiu phi c mt tp ch s tng ng.Chng hn khai bo cho mt mng hai chiu c thc vit di dng

    ARRAY[LB1..UB1, LB2..UB2] OF

    Trong tp ch s 1 c cc gi tr t LB1 n UB1, tp ch s 2 c cc gi tr t LB2n UB2.

    Nh vy s lng cc phn t ca mng hai chiu s l (UB1-LB1+1)*(UB2-LB2+1)

    V d s khai bo ca Pascal:

    M= array [1..3, -1..2] of Integer;

    S khai bo ny cho ta thy mng M c hai chiu, chiu th nht c xc nh bitp ch s 1..3 v chiu th hai c xc nh bi tp ch s -1..2. C th xem y lmt ma trn c 3 dng v 4 ct, nh vy s c 12 phn t, mi phn t c th lu trmt s integer.

    i vi cc mng c s chiu nhiu hn hai th cch lm cng tng t nh mng haichiu.

    c t php ton

    Php la chn mt phn tc thc hin bng cch ch ra tn mng v ch s cami mt chiu.

    Chng hn la chn mt phn t ca ma trn ta vit tn ma trn, theo sau l cp chs dng, ct phn cch nhau bi du phy v t trong cp du [], v d M[2,0].

    Nh vy php la chn mt phn t ca mng nhiu chiu l php la chn trc tip.

    4.6.2 Sci t

    Sbiu din b nh

    S biu din b nhi vi mng nhiu chiu tng t nh s biu din b nhivi vct. Ngha l cng s dng sbiu din tun tv kh nhc chia lmhai phn: b m t v b nhcho cc phn t. B m t ca mng ging b m t cavctngoi tr mi mt chiu c mt cn di v cn trn ca tp ch s ca chiu .Trong b nhdnh cho cc phn t ta cng lu tr lin tip cc phn t theo mt trtt no .

    Vi ma trn, v mt logic th ma trn l mt bng gm m dng v n ct, mi mt lmt phn t, nhng b nhli ch gm cc lin tip nhau, v th ta phi lu tr matrn theo trt t dng hoc theo trt t ct.

    Lu tr theo trt tdng c ngha l trong b nhdnh cho cc phn t ta lu tr

    tun t cc phn t trong dng th nht, tip n l cc phn t trong dng th hai...cho n dng cui cng.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    43/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    38

    Lu tr theo trt tct ngha l trong b nhdnh cho cc phn t ta lu tr tun tcc phn t trong ct th nht, tip n l cc phn t trong ct th hai... cho n ctcui cng.

    Chng hn vi khai bo M: ARRAY [1..3,-1..2] OF Integer; ta c hnh nh biu din

    trong b nhnh cc hnh sau:Cu trc logic ca ma trn M Lu tr ma trn M theo trt tdng

    M[1,-1] M[1,0] M[1,1] M[1,2] Ma trn M Kiu d liu

    M[2,-1] M[2,0] M[2,1] M[2,2] LB1 (= 1) Cn di ca tp ch s th nht

    M[3,-1] M[3,0] M[3,1] M[3,2] B m t UB1 (= 3) Cn trn ca tp ch s th nht

    LB2 (= -1) Cn di ca tp ch s th hai

    UB2 (= 2) Cn trn ca tp ch s th hai

    M[1,-1]

    M[1,0] Dng th nhtB nhcho M[1,1]

    Cc phn t M[1,2]

    M[2,-1] Dng th hai

    M[2,0]

    ... ...........

    M[3,2]

    Cu trc logic ca ma trn M Lu tr ma trn M theo trt tct

    M[1,-1] M[1,0] M[1,1] M[1,2] Ma trn M Kiu d liu

    M[2,-1] M[2,0] M[2,1] M[2,2] LB1 (= 1) Cn di ca tp ch s th nht

    M[3,-1] M[3,0] M[3,1] M[3,2] B m t UB1 (= 3) Cn trn ca tp ch s th nht

    LB2 (= -1) Cn di ca tp ch s th hai

    UB2 (= 2) Cn trn ca tp ch s th hai

    M[1,-1]

    M[2,-1] Ct th nht

    B nhcho M[3,-1]

    Cc phn t M[1,0]

    M[2,0] Ct th hai

    M[3,0]

    ... ...........

    M[3,2]

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    44/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    39

    Gii thut thc hin php ton

    thc hin php ton la chn phn t, ta s dng cng thc tnh v tr ca phn ttrong b nh.

    Vi cch lu tr theo trt t dng ca ma trn M, tnh v tr ca M[i,j], u tin ta

    xc nh s dng cn nhy qua: (i-LB1) nhn vi di ca mi dng xc nh vtr bt u ca dng th i v sau tm v tr th J trong dng ny nhi vi 1 vct.

    Nh vy, v tr ca phn t M[i,j] c tnh bi:

    V tr ca M [i,j] = + D + (i-LB1) x S + (j-LB2) x E

    Trong : l a ch cs.D l ln ca b m t.S l ln ca mi dng = (UB2 - LB2 +1) x E.LB1 l cn di ca ch s th nht.LB2,UB2 tng ng l cn di v cn trn ca ch s th hai.

    Tng t ta c th thnh lp cng thc tnh v tr ca phn t M[i,j] trong trng hpma trn M c t chc lu tr theo trt t ct.

    Tng qut ha cng thc ny cho mng nhiu chiu hn l mt iu n gin.

    4.7 MU TIN

    4.7.1 nh ngha mu tin

    Mu tin l mt CTDL bao gm mt scnh cc phn tc kiu khc nhau.

    Nh vy, mu tin l mt CTDL c kch thc cnh v khng ng nht. Cc

    phn t ca mu tin c gi l cc trng.

    4.7.2 Sc t v c php

    c t thuc tnh

    Cc thuc tnh ca mt mu tin phi c ch r trong php khai bo, chng bao gm:

    1. S lng cc phn t.

    2. Kiu d liu ca cc phn t (Cc phn t c th c kiu khc nhau).

    3. Mi phn tc cho bi tn phn t (tn trng).

    C php khai bo mu tin ca Pascal:Nhan_vien: RECORD

    Ma: Integer; {M nhn vin}Ho_ten: String[25];Tuoi: Integer; {Tui}Luong: Real; {H s lng}

    END

    Vic khai bo ny c t mt mu tin c 4 phn t ca cc kiu Integer, Real v String.Mi phn t c mt tn: Ma, Ho_ten, Tuoi v Luong. chn mt phn t ca mutin ta s dng tn ca phn t (trng) , chng hn trong Pascal, Nhan_vien.Luongl truy xut ti phn t Luong ca mu tin Nhan_vien.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    45/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    40

    22901 Ma

    Nguyen Van A Ho_ten

    20 Tuoi

    2.18 Luong

    c t php ton

    La chn mt phn t l php ton cbn cu mu tin. Php ton ny c thc hinbng cch ch ra tn trc kin ca phn t.

    V d la chn phn t th 4 ca mu tin Nhan_vien ta vit: Nhan_vien.Luong.

    Php ton la chn mt phn t ca mu tin l sla chn trc tip.

    Mc d u l la chn trc tip, nhng c khc bit so vi cch la chn phn t cavct. im khc bit y l: i vi vct, ta c th s dng gi tr ca mt biuthc lm ch s, chng hn VECTO[i+1], cn i vi mu tin th bt buc phi ch rtn trc kin, ch khng th l biu thc.

    Ngoi php ton la chn phn t, php gn cc mu tin c cng cu trc l mt phpton ph bin c cc ngn nga vo. Chng hn Nhan_vien := InputRec trong InputRec c cc thuc tnh ging ht Nhan_vien.

    4.7.3 Sci t

    Biu din b nh

    Biu din b nhtun tc s dng lu tr mt mu tin. Mt khi lin tc cc nhc dng lu tr cho mt mu tin, trong khi , mi biu din cho mttrng. C th cng cn s dng b m t ring cho tng trng lu tr thuc tnhca cc trng . Do cc trng c kiu khc nhau nn nhdnh cho chng cngc kch thc khc nhau.

    Gii thut thc hin php ton

    Vic la chn phn tc thc hin mt cch d dng v tn trng c bit nthng qua vic dch ch khng phi c tnh ton thng qua vic thc hin nhivi vct. Vic khai bo mu tin cn cho php xc nh kch thc v v tr ca ntrong nhthng qua vic dch. Kt qu l di ca phn t bt k c thc tnhthng qua vic dch.

    Chng hn vi mu tin Nhan_vien, cc phn t ca n c lu tr trong b nhnhsau:

    V tr ca mt phn t bt kc tnh mt cch d

    dng. Chng hnV tr ca Tuoi = + Kch thc ca Ma + Kchthc ca Ho_ten.

    Trong l a ch csca khi nhbiu dincho Nhan_vien.

    Php ton gn ton b mt mu tin cho mt mu tinkhc c cng cu trc c thc hin mt cch ngin l copy ni dung khi nhbiu din cho mu

    tin th nht sang khi nhbiu din cho mu tin th 2.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    46/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    41

    4.8 MU TIN C CU TRC THAY I

    4.8.1 c t v khai bo

    Trc ht ta xt v d sau:

    Gi s trong mt x nghip c hai loi cng nhn l cng nhn trong bin ch v cngnhn hp ng. i vi cng nhn trong bin ch th lng sc tnh bng s ngycng * mc lng ti thiu * h s /20, nhng ngy ngh bo him x hi, hc trlng bo him x hi. Ngc li cng nhn hp ng chc tr lng bng sngy cng * n gi cng nht v h khng c tr lng bo him x hi.

    Ta thy, hai loi cng nhn ny c nhng thng tin chung l h tn, s ngy cng, tinlng v loi cng nhn (bin ch hay hp ng). Mi loi cng nhn li c cc thngtin ring. i vi cng nhn trong bin ch, ta cn thm cc thng tin: h s lng vs ngy ngh bo him x hi. i vi cng nhn hp ng, ta cn thm thng tin vn gi cng nht.

    Nu s dng mu tin bnh thng lu tr thng tin v hai loi cng nhn ny, ta cntt c 7 trng lu tr 4 thng tin chung v 3 thng tin ring. Khi nhcn cp

    pht phi lu tr c 7 trng nhng vic s dng khi nhli b d, do i vicng nhn bin ch ta ch cn 6 trng, i vi cng nhn hp ng ta ch cn 5trng!

    c t thuc tnh

    gii quyt vn lng ph b nh, trong mt s ngn ng l p trnh c mt loiCTDL gi l mu tin c cu trc thay i.

    Mi mt cu trc s c mt s trng ging nhau cho mi loi mu tin v mt strng khc nhau cho tng loi mu tin. Cc trng ging nhau gi l phn chung hay

    phn tnh, cc trng khc nhau ny gi l phn ng hay phn thay i ca mu tin.

    Chng hn i vi bi ton nu trn th mi cng nhn c lu trong mt mu tin, ccc trng thuc phn chung l Ho_Ten, Ngay_Cong, Tien_Luong. Ngoi ra tythuc vo loi cng nhn l bin ch hay hp ng m c cc trng ring. i vicng nhn trong bin ch ta cn thm cc trng He_So v Nghi_Bhxh lu tr hs lng v s ngy ngh bo him x hi. i vi cng nhn hp ng ta ch cnthm mt trng l Gia_Cong_Nhat lu tr gi cng nht cho mi ngi.

    Khai bo trong Pascal nh sau:TYPE

    loai_cong_nhan = (bien_che,hop_dong);VAR

    Cong_Nhan : RECORDho_ten: String[20];ngay_cong: Real;luong: Real;CASE loai: loai_cong_nhan OF

    bien_che:

    (he_so: Real;nghi_bhxh:Real);hop_dong:

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    47/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    42

    (gia_cong_nhat: Real);END;

    Khai bo trn nh ngha mt mu tin c cu trc thay i. Mu tin lun lun c cctrng Ho_Ten, Ngay_Cong, Luong v Loai. Khi gi tr ca Loai = "bien_che" th

    mu tin cn c cc trng He_So v Nghi_Bhxh, trong khi nu gi tr ca Loai ="hop_dong" th n li c trng Gia_Cong_Nhat.

    c t php ton

    Php ton la chn cc phn t ca mu tin c cu trc thay i cng ging nh mutin bnh thng. Chng hn ta c th s dng Cong_Nhan.Luong, Cong_Nhan.He_Sohay Cong_Nhan.Gia_Cong_Nhat. Tuy nhin cc trng thuc phn ng ch tn titrong mt thi im nht nh do khi chng ta truy xut ti mt tn trng m nkhng tn ti th s b li. Trng Loai trong v d trn l rt quan trng v n ch ra

    phn ng no ca mu tin c s dng trong qu trnh thc hin chng trnh.

    Ngi c c th tham kho v d tng i hon chnh vit bng Pascal.uses crt;

    Const luong_toi_thieu = 290000;

    Type

    Loai_cong_nhan = (bien_che, hop_dong);

    Cong_nhan = Record

    ho_ten : String[20];

    Ngay_cong : real;

    luong : real;

    Case loai: Loai_cong_nhan of

    bien_che: (He_so, so_ngay_nghi_BHXH : real);

    hop_dong: (don_gia: real);

    end;

    danh_sach_cong_nhan = Array[1..10] of cong_nhan;

    Var

    n : integer; ho_so : danh_sach_cong_nhan;

    {Nhp danh sch cng nhn, v cc thng tin lin quan n lao ng}Procedure Nhap (var ho_so: danh_sach_cong_nhan; var n: integer);

    Var

    i: integer;

    loaicn : char;

    Begin

    write('So cong nhan: '); readln(n);

    For i:=1 to n do with ho_so[i] do begin

    Writeln('Cong nhan ',i);

    Write('Ho va Ten: '); readln(ho_ten);

    Write('Loai cong nhan: A la bien che, B la hop dong ');

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Ngon Ngu Lap Trinh Th.s Nguyen Van Linh - Smith.N Studio

    48/111

    Ngn ng l p trnh Chng IV: Kiu dliu c cu trc

    43

    readln(loaicn);

    If Upcase(loaicn) ='A' then loai := bien_che else loai := hop_dong;

    write('So ngay cong: '); readln(ngay_cong);

    if loai = bien_che then begin

    write('He so: '); readln(he_so);write('So ngay nghi bao hiem: '); readln(so_ngay_nghi_BHXH);

    end else begin

    write('Don gia hop dong: '); readln(don_gia);

    end;

    end; { with Ho_so[i] }

    end; {nhap}

    {Tnh lng cho tng cng nhn, theo cng thc ca tng loi cng nhn}

    Procedure Tinh_luong (var ho_so: danh_sach_cong_nhan; n: integer);

    Var

    i : integer; luong_binh_quan: real;

    begin

    for i:=1 to n do with ho_so[i] do begin

    if loai = bien_che then begin {tnh lng ca cng nhn bin ch}

    luong_binh_quan := he_so * luong_toi_thieu/20;

    luong := ngay_cong * luong_binh_quan +

    so_ngay_nghi_BHXH * luong_binh_quan*0.80;

    end else {tnh lng c

    a cng nhn h

    p

    ng}

    luong := ngay_cong * don_gia;

    end; { with Ho_so[i] }

    end; {Tinh_luong }

    Procedure In_luong (ho_so: danh_sach_cong_nhan; n: integer);

    Var

    i : int