44432602 Giao Trinh Turbo Pascal 70 Full

download 44432602 Giao Trinh Turbo Pascal 70 Full

of 296

Transcript of 44432602 Giao Trinh Turbo Pascal 70 Full

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    1/296

    MC LC

    1. THUT TON

    2. CC PHNG PHP BIU DIN THUT TON

    3. PHC TP CA THUT TON4.PHN LOI VN - BI TON

    5. THUT TON QUY

    6.THUT GII

    5.1.GII THIU NGN NG PASCAL

    5.2. CC PHN T C BN CA NGN NG PASCAL

    5.3. CU TRC CHUNG CA CHNG TRNH PASCAL

    5.4. S DNG PHN MM TURBO PASCAL

    5.5 CU HI TRC NGHIM

    5.6. BI TP

    6.1. KHI NIM V KIU D LIU

    6.2. KIU S NGUYN

    6.3. KIU S THC

    6.4. KIU K T (CHAR)

    6.5. KIU LGIC (BOOLEAN)

    6.6. CHUI K T (STRING)

    6.7. CU HI TRC NGHIM7.1. HNG, BIN v BIU THC

    7.2. CU LNH v LI CH GII

    7.3.1. NHP D LIU, TH TC READLN

    7.3.2. XUT D LIU, TH TC WRITE v WRITELN

    7.4. KIU LIT K v KIU ON CON

    7.5. CU HI TRC NGHIM

    7.6. BI TP

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    2/296

    8.1. CU LNH IF

    8.2. CU LNH CASE

    8.3. CU HI TRC NGHIM

    8.4. BI TP

    9.1. CU LNH LP FOR

    9.2. CU LNH LP WHILE

    9.3. CU LNH LP REPEAT

    9.4. CU HI TRC NGHIM

    9.5. BI TP

    10.1. MNG MT CHIU

    10.2. MNG HAI CHIU (MA TRN)

    10.3. CU HI TRC NGHIM

    10.4. BI TP

    11.1. CC V D NNG CAO V CU LNH LP

    11.2. CC V D NNG CAO V MNG

    11.3. KIU CHUI K T

    11.4. CU HI TRC NGHIM

    11.5. BI TP

    12.1. KHI NIM V CHNG TRNH CON

    12.2. HM (FUNCTION)

    12.3. TH TC (PROCED URE )

    12.4. CU HI TRC NGHIM

    12.5. BI TP

    13.1. THAM S TR V THAM S BIN

    13.2. PHM VI TC DNG CA CC KHAI BO

    13.3. S THAM KHO TRC v S QUI

    13.4. CU HI TRC NGHIM

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    3/296

    13.5. BI TP

    14.1 KIU BN GHI

    14.2. CC V D V BN GHI

    14.3. CU HI TRC NGHIM

    14.4 .BI TP

    15.1. KIU TP HP

    15.2. D LIU KIU TP TIN

    15.3. CU HI TRC NGHIM

    15.4. BI TP

    1. THUT TON

    Thut ton l mt khi nim c s ca Ton hc v Tin hc. Hiu mt cch n gin, thut tonl mt tp cc hng dn nhm thc hin mt cng vic no . i vi vic gii quyt mt vn - bi ton th thut ton c th hiu l mt tp hu hn cc hng dn r rng ngi gii ton cth theo m gii quyt c vn . Nh vy, thut ton l mt phng php th hin li gii cavn - bi ton.

    Ti sao li l "Thut ton" ?

    T thut ton (Algorithm) xut pht t tn mt nh ton hc ngi Trung l Abu Abd - Allahibn Musa alKhwarizmi, thng gi l alKhwarizmi. ng l tc gi mt cun sch v s hc,trong ng dng phng php m t rt r rng, mch lc cch gii nhng bi ton. Sau ny,

    phng php m t cch gii ton ca ng c xem l mt chun mc v c nhiu nh tonhc khc tun theo. T algorithm ra i da theo cch phin m tn ca ng.

    Vic nghin cu v thut ton c vai tr rt quan trng trong khoa hc my tnh v my tnh chgii quyt c vn khi c hng dn gii r rng v ng. Nu hng dn gii sai hoc

    khng r rng th my tnh khng th gii ng c bi ton. Trong khoa hc my tnh, thut tonc nh ngha l mt dy hu hn cc bc khng mp mv c th thc thi c, qu trnhhnh ng theo cc bc ny phi dngv cho c kt qu nh mong mun.

    S bc hu hn ca thut ton v tnh cht dng ca n c gi chung l tnh hu hn. Sbc hu hn ca thut ton l mt tnh cht kh hin nhin. Ta c th tm u mt li gii vn - bi ton c v s bc gii ? Tnh "khng mp m"v "c th thc thi c"gi chung l tnh xcnh.

    Gi s khi nhn mt lp hc mi, Ban Gim hiu yu cu gio vin ch nhim chn lp trng mi

    theo cc bc sau :

    1. Lp danh sch tt cc hc sinh trong lp.

    2. Sp th t danh sch hc sinh.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    4/296

    3. Chn hc sinh ng u danh sch lm lp trng.

    Khi nhn c thng bo ny, gio vin chc chn s rt bi ri v khng hiu l trong danh schhc sinh cn c nhng thng tin g? Danh sch ch cn h tn, hay cn thm ngy thng nm sinh?C cn thm im trung bnh khng? Yu cu 2 li cng gy nhiu thc mc. Cn phi sp xp danhsch theo chiu tng dn hoc gim dn ? Sp theo ch tiu g ? Theo tn, theo ngy thng nm sinhhay theo im trung bnh chung, ...Gi s sp theo im trung bnh th nu c hai hc sinh cng

    im trung bnh th hc sinh no s sp trc, hc sinh no s sp sau ? ...

    Hng dn trn vi phm tnh cht "khng mp m"ca thut ton. Ngha l, c qu nhiu thngtin cn thiu lm cho cc bc 1,2 c hiu ng v hiu theo mt ngha duy nht. Nu sali mt cht t th hng dn trn s tr nn r rng hn rt nhiu v c th gi l mt thut tonchn lp trng !

    1. Lp danh sch tt cc hc sinh trong lp theo hai thng tin: H v Tn; im trung bnh cuinm.

    2. Sp hng hc sinh theo im trung bnh theo th t gim dn (t im cao n im thp). Haihc sinh c cng im trung bnh s c cng hng.

    3. Nu ch c mt hc sinh c hng nht th chn hc sinh lm lp trng. Trng hp cnhiu hc sinh ng hng nht th chn hc sinh c im mn Ton cao nht lm lp trng.

    Nu vn cn nhiu hn mt hc sinh ng hng nht v c cng im mn Ton cao nht th tinhnh bc thm.

    y chng ta cn phn bit mp mvs chn la c quyt nh. Mp m l thiu thng tin hoc

    c nhiu chn la nhng khng iu kin quyt nh. Cn chn la c quyt nh l hon tonxc nh duy nht trong iu kin c th ca vn . Chng hn trong vn chn lp trng trn,bc 3 th hin mt s la chn c quyt nh. Tt nhin, khi cha lp danh sch, cha xp hngtheo im trung bnh th gio vin khng th bit c s chn lp trng theo cch no. Nhng khi sp xong danh sch th ch c mt phng n chn duy nht.

    Tnh "thc thi c"cng l mt tnh cht kh hin nhin. R rng nu trong "thut ton" tn timt bc khng th thc thi c th lm sao ta c c kt qu ng nh mun? Tuy nhin, cn

    phi hiu l "thc thi c"xt trong iu kin hin ti ca bi ton. Chng hn, khi ni "ly cnbc hai ca mt s m" l khng th thc thi c nu min xc nh ca bi ton l s thc, nhng

    trong min s phc th thao tc "ly cn bc hai ca mt s m"l hon ton thc thi c. Tngt, nu ta ch ng cho mt ngi i xe my n mt bu in nhng con ng ta ch l ngct, ng cm hoc ng ngc chiu th ngi i khng th i n bu in c.

    Tnh "dng"l tnh cht d b vi phm nht, thng l do sai st khi trnh by thut ton. D nhin,mi thut ton u nhm thc hin mt cng vic no nn sau mt thi gian thi hnh hu hn ththut ton phi cho chng ta kt qu mong mun. Khi khng tha tnh cht ny, ta ni rng "thutton" b lp v tn hoc b qun. tnh tng cc s nguyn dng l trong khong t 1 n n ta cthut ton sau :

    B1. Hi gi tr ca n.B2. S = 0

    B3. i = 1

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    5/296

    B4. Nu i = n+1 th sang bc B8, ngc li sang bc B5

    B5. Cng thm i vo S

    B6. Cng thm 2 vo i

    B7. Quay li bc B4.

    B8. Tng cn tm chnh l S.

    Ta ch n bc B4. y ta mun kt thc thut ton khi gi tr ca i vt qu n. Thay v vit l"nu i ln hn n" th ta thay bng iu kin "nu i bng n+1" v theo ton hc "i = n+1" th suy ra "iln hn n". Nhng iu kin "i=n+1" khng phi lc no cng t c. V ban u i = 1 l s l,sau mi bc, i c tng thm 2 nn i lun l s l. Nu n l s chn th n+1 l mt s l nn saumt s bc nht nh, i s bng n+1. Tuy nhin, nu n l mt s l th n+1 l mt s chn, do i ls l nn d c qua bao nhiu bc i chng na, i vn khc n+1. Trong trng hp , thut tontrn s b qun.

    Tnh "ng"l mt tnh cht kh hin nhin nhng l tnh cht kh t ti nht. Thc vy, khi giiquyt mt vn -bi ton, ta lun lun mong mun li gii ca mnh s cho kt qu ng nhngkhng phi lc no cng t c. Mi hc sinh khi lm bi kim tra u mun bi lm ca mnh cp s ng nhng trn thc t, trong lp hc ch c mt s hc sinh nht nh l c kh nng ara li gii ng!

    Thut ton th cng nhc !

    Cc tnh cht ca thut ton rt cht ch v cng nhc. Nhng iu cng c ngha l kh nng

    gii quyt vn theo kiu thut ton cng b gii hn. Sau ny, ngi ta "lm mm" i hai tnhcht quan trng ca thut ton l tnh xc nh vtnh ng gii quyt nhng vn phc tphn m vi cc tnh cht cht ch ca thut ton th khng th gii quyt c. l cc thut ton quy v thut gii. Ta s tm hiu v iu ny ngay trong cc mc 4 v 5 ca chng ny.

    Cc c trng khc ca thut ton

    Bn cnh 3 c trng chnh l xc nh, hu hn v ng, thut ton cn c thm 3 c trng phkhc.

    1. u vo v u ra (input/output) : mi thut ton, d c n gin n my cng phi nhn dliu u vo, x l n v cho ra kt qu cui cng.

    2. Tnh hiu qu (effectiveness) :tnh hiu qu ca thut ton c nh gi da trn mt s tiuchun nh khi lng tnh ton, khng gian v thi gian khi thut ton c thi hnh. Tnh hiu quca thut ton l mt yu t quyt nh nh gi, chn la cch gii quyt vn -bi ton trnthc t. C rt nhiu phng php nh gi tnh hiu qu ca thut ton. Trong mc 3 cachng , ta s tm hiu mt tiu chun c dng rng ri l phc tp ca thut ton.

    3. Tnh tng qut (generalliness) :thut ton c tnh tng qut l thut ton phi p dng ccho mi trng hp ca bi ton ch khng phi ch p dng c cho mt s trng hp ring lno . Chng hn gii phng trnh bc hai sau y bng Delta m bo c tnh cht ny v nlun gii c vi mi gi tr s thc a,b,c bt k. Tuy nhin, khng phi thut ton no cng m

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    6/296

    bo c tnh tng qut. Trong thc t, c lc ngi ta ch xy dng thut ton cho mt dng ctrng ca bi ton m thi.

    Thut ton gii phng trnh bc hai ax2+bx+c=0 (a?0)

    1. Yu cu cho bit gi tr ca 3 h s a, b, c

    2. Nu a=0 th

    2.1. Yu cu u vo khng m bo.

    2.2. Kt thc thut ton.

    3. Trng hp a khc 0 th

    3.1. Tnh gi tr D = b2-4ac

    3.2. Nu D > 0 th3.2.1. Phng trnh c hai nghim phn bit x1 v x2

    3.2.2. Gi tr ca hai nghim c tnh theo cng thc sau

    3.2.3. Kt thc thut ton.

    3.3. Nu D = 0 th

    3.3.1. Phng trnh c nghim kp x0

    3.3.2. Gi tr ca nghim kp l

    3.3.3. Kt thc thut ton

    3.4. Nu D < 0 th

    3.4.1. Phng trnh v nghim.

    3.4.2. Kt thc thut ton.

    Thut ton tm hp c trng lng nng nht

    Vn : C n hp c khi lng khc nhau v mt ci cn da. Hy ch ra cch cn tm

    c hp c trng lng nng nht. Vn ny l th hin ca mt bi ton tng qut : Cho mt tphp A hu hn v mt th t ton phn trn A. Hy xy dng thut ton tm phn t ln nht caA. Bi ton trong ton hc c v rt phc tp nhng mt th hin trn thc t li rt d hiu, v cchgii quyt cng n gin. T ta c th d dng suy ra cch gii bi ton tng qut.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    7/296

    1.Nu ch c 1 hp (n=1) th

    1.1. Hp chnh l hp nng nht.

    1.2. Kt thc thut ton.

    2.Ngc li nu c t hai hp tr ln (n>1)

    2.1. Chn hai hp bt k v t ln bn cn.

    2.2. Gi li hp nng hn, ct hp nh hn sang ch khc.

    3.Nu cn hp cha c cn thc hin cc bc sau, nu khng cn hp no na, sang bc 5.

    3.1. Chn mt hp bt k v ln da cn cn trng.

    3.2. Gi li hp nng hn, ct hp nh hn sang ch khc.

    4. Tr li bc 3.

    5. Hp cn li trn cn chnh l hp nng nht. Kt thc.

    Thut ton Euclid tm c s chung ln nht

    Bi ton : Cho hai s nguyn dng a v b. Tm c s chung ln nht ca a v b.

    1. Yu cu cho bit gi tr ca a, b.

    2. a0 = a

    3. b0 = b

    4. i = 0

    5. Nu ai khc bi th thc hin cc thao tc sau, ngc li qua bc 7.

    5.1 Tng i ln 1.

    5.2. Nu ai-1 > bi-1 th

    ai = ai-1 - bi-1

    bi = bi-1

    5.3. Ngc li

    bi = bi-1 - ai-1

    ai = ai-1

    6. Tr li bc 5.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    8/296

    7. c s chung ln nht ca a, b l ai .

    2. CC PHNG PHP BIU DIN THUT TON

    Khi chng minh hoc gii mt bi ton trong ton hc, ta thng dng nhng ngn t ton hc

    nh : "ta c", "iu phi chng minh", "gi thuyt", ... v s dng nhng php suy lun ton hcnh php suy ra, tng ng, ...Thut ton l mt phng php th hin li gii bi ton nn cng

    phi tun theo mt s quy tc nht nh. c th truyn t thut ton cho ngi khc hay chuynthut ton thnh chng trnh my tnh, ta phi c phng php biu din thut ton. C 3 phng

    php biu din thut ton :

    1. Dng ngn ng t nhin.

    2. Dng lu -s khi (flowchart).

    3. Dng m gi (pseudocode).

    2.1. Ngn ng t nhin

    Trong cch biu din thut ton theo ngn ng t nhin, ngi ta s dng ngn ng thng ngy lit k cc bc ca thut ton (Cc v d v thut ton trong mc 1 ca chng s dng ngnng t nhin). Phng php biu din ny khngyu cu ngi vit thut ton cng nh ngi cthut ton phi nm cc quy tc. Tuy vy, cch biu din ny thng di dng, khng th hin rcu trc ca thut ton, i lc gy hiu lm hoc kh hiu cho ngi c. Gn nh khng c mtquy tc c nh no trong vic th hin thut ton bng ngn ng t nhin. Tuy vy, d c, ta

    nn vit cc bc con li vo bn phi v nh s bc theo quy tc phn cp nh 1, 1.1, 1.1.1, ...Bn c th tham kho li ba v d trong mc 1 ca chng hiu cch biu din thut ton theongn ng t nhin.

    2.2. Lu - s khi

    Lu hay s khi l mt cng c trc quan din t cc thut ton. Biu din thut tonbng lu s gip ngi c theo di c s phn cp cc trng hp v qu trnh x l cathut ton. Phng php lu thng c dng trong nhng thut ton c tnh rc ri, kh theodi c qu trnh x l.

    biu din thut ton theo s khi, ta phi phn bit hai loi thao tc. Mt thao tc l thao tcchn la da theo mt iu kin no . Chng hn : thao tc "nu a = b th thc hin thao tc B2,ngc li thc hin B4"l thao tc chn la. Cc thao tc cn li khng thuc loi chn la cxp vo loi hnh ng. Chng hn, "Chn mt hp bt k v ln da cn cn trng." l mt thaotc thuc loi hnh ng.

    2.2.1. Thao tc chn la (decision)

    Thao tc chn la c biu din bng mt hnh thoi, bn trong cha biu thc iu kin.

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#nntunhienhttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#luudohttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#magiahttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#luudohttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#magiahttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/Bai03_2.htm#nntunhien
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    9/296

    2.2.2. Thao tc x l (process)

    Thao tc x l c biu din bng mt hnh ch nht, bn trong cha ni dung x l.

    2.2.3.ng i (route)

    Khi dng ngn ng t nhin, ta mc nh hiu rng qu trnh thc hin s ln lt i t bc trcn bc sau (tr khi c yu cu nhy sang bc khc). Trong ngn ng lu , do th hin cc

    bc bng hnh v v c th t cc hnh v ny v tr bt k nn ta phi c phng php thhin trnh t thc hin cc thao tc.

    Hai bc k tip nhau c ni bng mt cung, trn cung c mi tn ch hng thc hin. Chnghn trong hnh di, trnh t thc hin s l B1, B2, B3.

    T thao tc chn la c th c n hai hng i, mt hng ng vi iu kin tha v mt hngng vi iu kin khng tha. Do vy, ta dng hai cung xut pht t cc nh hnh thoi, trn micung c k hiu /ng/Y/Yes ch hng i ng vi iu kin tha v k hiu S/Sai/N/No ch hng i ng vi iu kin khng tha.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    10/296

    2.2.4. im cui (terminator)

    im cui l im khi u v kt thc ca thut ton, c biu din bng hnh ovan, bn trong cghi ch bt u/start/begin hoc kt thc/end. im cui ch c cung i ra (im khi u) hoccung i vo (im kt thc). Xem lu thut ton gii phng trnh bc hai trn thy cch sdng ca im cui.

    2.2.5. im ni (connector)

    im ni c dng ni cc phn khc nhau ca mt lu li vi nhau. Bn trong im ni, tat mt k hiu bit s lin h gia cc im ni.

    2.2.6. im ni sang trang (off-page connector)

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    11/296

    Tng t nh im ni, nhng im ni sang trang c dng khi lu qu ln, phi v trnnhiu trang. Bn trong im ni sang trang ta cng t mt k hiu bit c s lin h giaim ni ca cc trang.

    trn ch l cc k hiu c bn v thng c dng nht. Trong thc t, lu cn c nhiu khiu khc nhng thng ch dng trong nhng lu ln v phc tp. i vi cc thut ton trongcun sch ny, ta ch cn s dng cc k hiu trn l .

    2.3. M gi

    Tuy s khi th hin r qu trnh x l v s phn cp cc trng hp ca thut ton nhng licng knh. m t mt thut ton nh ta phi dng mt khng gian rt ln. Hn na, lu ch

    phn bit hai thao tc l r nhnh (chn la c iu kin) v x l m trong thc t, cc thut toncn c thm cc thao tc lp (Chng ta s tm hiu v thao tc lp trong cc bi sau).

    Khi th hin thut ton bng m gi, ta s vay mn cc c php ca mt ngn ng lp trnh no th hin thut ton. Tt nhin, mi ngn ng lp trnh u c nhng thao tc c bn l x l, r

    nhnh v lp. Dng m gi va tn dng c cc khi nim trong ngn ng lp trnh, va gipngi ci t d dng nm bt ni dung thut ton. Tt nhin l trong m gi ta vn dng mt phnngn ng t nhin. Mt khi vay mn c php v khi nim ca ngn ng lp trnh th chc chnm gi s b ph thuc vo ngn ng lp trnh . Chnh v l do ny, chng ta cha vi tm hiu vm gi trong bi ny (v chng ta cha bit g v ngn ng lp trnh!). Sau khi tm hiu xong bi vth tc - hm bn s hiu m gi l g !

    Mt on m gi ca thut ton gii phng trnh bc hai

    ifDelta > 0 then begin

    x1=(-b-sqrt(delta))/(2*a)

    x2=(-b+sqrt(delta))/(2*a)

    xut kt qu : phng trnh c hai nghim l x1 v x2

    end

    else

    ifdelta = 0 then

    xut kt qu : phng trnh c nghim kp l -b/(2*a)

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    12/296

    else {trng hp delta < 0 }

    xut kt qu : phng trnh v nghim

    * Cc t in m l cc t kha ca ngn ng Pascal

    3. PHC TP CA THUT TON

    Mt chng trnh my tnh thng c ci t da trn mt thut ton ng gii quyt biton hay vn . Tuy nhin, ngay c khi thut ton ng, chng trnh vn c th khng s dngc i vi mt d liu u vo no v thi gian cho ra kt qu l qu lu hoc s dng qunhiu b nh (vt qu kh nng p ng ca my tnh).

    Khi tin hnhphn tch thut ton ngha l chng ta tm ra mt nh gi v thi gian v "khnggian" cn thit thc hin thut ton. Khng gian y c hiu l cc yu cu v b nh, thit

    b lu tr, ... ca my tnh thut ton c th lm vic. Vic xem xt v khng gian ca thut tonph thuc phn ln vo cch t chc d liu ca thut ton. Trong phn ny, khi ni n phc

    tp ca thut ton, chng ta ch cp n nhng nh gi v mt thi gian m thi.

    Phn tch thut ton l mt cng vic rt kh khn, i hi phi c nhng hiu bit su sc vthut ton v nhiu kin thc ton hc khc. y l cng vic m khng phi bt c ngi no cnglm c. Rt may mn l cc nh ton hc phn tch cho chng ta phc tp ca hu ht ccthut ton c s (sp xp, tm kim, cc thut ton s hc, ...). Chnh v vy, nhim v cn li cachng ta l hiu c cc khi nim lin quan n phc tp ca thut ton.

    nh gi v thi gian ca thut ton khng phi l xc nh thi gian tuyt i (chy thut tonmt bao nhiu giy, bao nhiu pht,...) thc hin thut ton m l xc nh mi lin quan gia d

    liu u vo (input) ca thut ton v chi ph (s thao tc, s php tnh cng,tr, nhn, chia, rtcn,...) thc hin thut ton. S d ngi ta khng quan tm n thi gian tuyt i ca thut tonv yu t ny ph thuc vo tc ca my tnh, m cc my tnh khc nhau th c tc rt khcnhau. Mt cch tng qut, chi ph thc hin thut ton l mt hm s ph thuc vo d liu u vo:

    T = f(input)

    Tuy vy, khi phn tch thut ton, ngi ta thng ch ch n mi lin quan gia ln cad liu u vo v chi ph. Trong cc thut ton, ln ca d liu u vothng c th hin

    bng mt con s nguyn n. Chng hn :sp xp n con s nguyn, tm con s ln nht trong n s,tnh im trung bnh ca n hc sinh, ... Lc ny, ngi ta th hin chi ph thc hin thut ton bngmt hm s ph thuc vo n :

    T = f(n)

    Vic xy dng mt hm T tng qut nh trn trong mi trng hp ca thut ton l mt vic rtkh khn, nhiu lc khng th thc hin c. Chnh v vy m ngi ta ch xy dng hm T chomt s trng hp ng ch nht ca thut ton, thng l trng hp tt nhtv xu nht.

    Chng ta tr li v d v thut ton tm hp nng nht trong n hp cho trc, nhng ln ny talm vic trn mt th hin khc ca vn . y l mt thut ton tng i n gin nn chng tac th tin hnh phn tch c phc tp. Trc khi phn tch phc tp, ta nhc li i iu vthut ton ny.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    13/296

    Tm s ln nht trong mt dy s

    Bi ton : Cho mt dy s a c n phn t a1, a2, ...an. Hy xy dng thut ton tm con s lnnht trong dy a.

    Nhn xt

    1.Nu dy ch c 1 phn t th phn t l s ln nht.

    2. Gi s dy c n phn t v ta xc nh c phn t ln nht l amax . Nu b sung thm phnt th an+1 vo dy m an+1 > amax th an+1 chnh l phn t ln nht ca dy c n+1 phn t.Trng hp ngc li, ngha l an+1 amax th amax vn l phn t ln nht ca dy c n+1 phnt.

    Thut ton

    1. Ghi nh amax = a1.

    2. i = 2.

    3. Nu (i n) th thc hin cc bc sau, ngc li sang bc 5.

    3.1. Nu (ai > amax ) th

    3.1.1. Ghi nh amax = ai .

    3.2. Tng i ln 1.

    4. Tr li bc 3.

    5. Phn t ln nht dy a chnh l amax .Kt thc.

    Trong thut ton trn, n gin, ta ch xem chi ph l s ln so snh bc 3.1 v s ln "ghinh" trong bc 3.1.1. Trng hp tt nht ca thut ton ny xy ra khi con s ln nht nm udy (amax= a1); trng hp xu nht xy ra khi con s ln nht nm cui dy (amax=an) v dy csp xp theo th t tng dn.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    14/296

    Da theo s khi ca thut ton, ta nhn thy rng, trong mi trng hp ca bi ton, php"ghi nh" bc 3.1 lun c thc hin v s ln thc hin l n-1 (ng vi vic xt t phn t a2n an). Ta gi y l chi ph c nh hoc bt bin ca thut ton.

    Trng hp tt nht: do amax = a1 suy ra, vi mi i 2, ai< amax. Do , iu kin ai>amax bc3.1 lun khng tha nn bc 3.1.1 khng bao gi c thc hin. Nh vy, chi ph chung chotrng hp ny chnh l chi ph c nh ca bi ton.

    T = f(n) = n-1

    Trng hp xu nht:

    Ta c : vi mi i>1, ai-1< ai(do nh ngha dy c sp xp tng dn) nn iu kin a i>amax bc 3.1 lun tha, bc 3.1.1 lun c thc hin. Nh vy, ngoi chi ph chung l n-1 php sosnh, ta cn phi dng thm n-1 php "ghi nh" bc 3.1.1. Nh vy, tng chi ph ca trng hpny l

    T = f(n) = 2(n-1)=2n-2

    nh ngha

    Cho hai hm f v g c min xc nh trong tp s t nhin . Ta vit

    f(n) = O(g(n))

    v ni f(n) c cp cao nht l g(n) khi tn ti hng s C v k sao cho

    | f(n) | C.g(n) vi mi n > k

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    15/296

    Tuy chi ph ca thut ton trong trng hp tt nht v xu nht c th ni ln nhiu iu nhngvn cha a ra c mt hnh dung tt nht v phc tp ca thut ton. c th hnh dungchnh xc v phc tp ca thut ton, ta xt n mt yu t khc l tngca chi ph khi ln n ca d liu u vo tng.

    Theo nh ngha trn, ta nhn thy chi ph thp nht v ln nht ca thut ton tm s ln nhtu b chn bi O(n) (tn ti hng s C=10, k=1 2n-2 < 10n vi mi n>1).

    Mt cch tng qut, nu hm chi ph ca thut ton (xt trong mt trng hp no ) b chn biO(f(n)) th ta ni rng thut ton c phc tp l O(f(n)) trong trng hp .

    Nh vy, thut ton tm s ln nht c phc tp trong trng hp tt nht v xu nht u lO(n). Ngi ta gi cc thut ton c phc tp O(n) l cc thut ton c phc tp tuyn tnh.

    Sau y l mt s "thc o" phc tp ca thut ton c s dng rng ri. Cc phc tpc sp xp theo th t tng dn. Ngha l mt bi ton c phc tp O(nk) s phc tp hn biton c phc tp O(n) hoc O(logan).

    4. PHN LOI VN - BI TON

    phc tp ca thut ton chnh l yu t c s phn loi vn -bi ton. Mt cch tngqut, mi bi ton u c th chia lm 2 lp ln l : gii c v khng gii c. Lp gii cchia lm 2 lp con. Lp con u tin l cc bi ton c phc tp a thc : ngha l bi ton cth gii c bng thut ton c phc tp a thc (hay ni ngn gn : lp a thc) c xem lc li gii thc t. Lp con th hai l nhng bi ton c phc tp khng phi l a thc m li

    gii ca n c xem l thc t ch cho nhng s liu u vo c chn la cn thn v tng inh. Cui cng l nhng bi ton thuc loi NP cha th phn loi mt cch chnh xc l thuc lpbi ton c phc tp a thc hay c phc tp khng a thc.

    4.1. Lp bi ton c phc tp a thc

    Cc bi ton thuc lp ny c phc tp l O(nk) hoc nh hn O(nk). Chng hn nh ccbi ton c phc tp l O(nlog2n) c xem l cc bi ton thuc lp a thc v nlog2n b chnbi n2 ( nlog2n n2 vi mi n>0). Nh vy cc bi ton c phc tp hng O(1), phc tp tuyntnh O(n) v logarith O(nlogan) u l cc bi ton thuc lp a thc. Cn cc bi ton c phc

    tp ly tha O(an) hoc giai tha O(n!) l khng thuc lp a thc.

    Tuy phc tp ch l s o v tng ca chi ph ng vi tng ca d liu u vo nhng ncng cho chng ta c mt nh gi tng i v thi gian thi hnh thut ton. Cc thut ton thuc

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    16/296

    lp a thc c xem l cc bi ton c li gii thc t.Li gii thc tc hiu rng l chi ph vmt thi gian v khng gian cho vic gii bi ton l chp nhn c trong iu kin hin ti. Bt kmt bi ton no khng thuc lp ny th u c chi ph rt ln.

    C th gii c hay khng?

    Ngi ta c tnh thi gian cn thit gii mt mt m c m ha bng kha 128-bit l trn 1

    triu nm vi iu kin lm vic trn cc siu my tnh mnh nht hin nay!

    Chnh v l do ny, mt bi ton c xem l c th gii c trn thc t hay khng ph thuc vo phc tp ca bi ton c phi l a thc hay khng.

    4.2. Lp bi ton c phc tp khng a thc

    Tht khng may mn, nhiu bi ton thc s c li gii li khng thuc lp ca bi ton a thc.V d : cho mt tp hp c n phn t, hy lit k tt c cc tp con khc trng ca tp hp ny.Bng ton hc, ngi ta chng minh c rng s tp con ca mt tp hp c n phn t l 2 n-1.

    Li gii tuy c nhng khi th hin li gii ny bng bt k thut ton no th phi tn t nht 2n-1

    bc. D thy rng phc tp ca bi ton ny cng c O(2n). Nh vy bi ton ny khng thuclp ca bi ton a thc. Vi n vo khong 16, s bc cn thit ch khong vi chc ngn l honton gii c trn cc my tnh hin nay. Nhng khi s phn t ln n 32 th ta tn mt s

    bc ln n 4 t, ch thm mt phn t na thi, chng ta tn 8 t bc! Vi s lng bc nhvy, d chy trn mt siu my tnh cng phi tn mt thi gian ng k! Cc bi ton khng thuclp a thc ch gii c vi mt ln d liu u vo nht nh.

    4.3. Lp bi ton NP

    Chng ta u bit rng tnh xc nh l mt trong ba c tnh quan trng ca thut ton. Ngha lmi bc ca thut ton phi c xc nh duy nht v c th thc thi c. Nu c s phn chiatrng hp ti mt bc th thng tin ti bc phi y thut ton c th t quyt nhchn la trng hp no. Trong mc 4.3 ny, ta tm gi cc thut ton tha mn tnh xc nh l ccthut ton t quyt.

    Vy th iu g s xy ra nu ta a ra mt "thut ton" c tnh khng t quyt? Ngha l ti mtbc ca "thut ton", ta a ra mt s trng hp chn la nhng khng cung cp y thng tin "thut ton" t quyt nh? Tht ra, trong cuc sng, nhng "thut ton" thuc loi ny rt hayc p dng. Chng hn ta c mt li ch dn khi i du lch : "Khi i ht khu vn ny, bn hy

    chn mt con ng m bn cm thy thch. Tt c u dn n bo tng lch s.".Nu l khch dulch, bn s cm thy bnh thng. Nhng my tnh th khng! N khng th thc thi nhng hngdn khng r rng nh vy!

    n y, lp tc s c mt cu hi rng "Ti sao li cp n nhng thut ton c tnh khng tquyt d my tnh khng th thc hin mt thut ton nh vy?". Cu tr li l, khi nghin cu vthut ton khng t quyt, d khng dng gii bi ton no i na, chng ta s c nhng hiu

    bit v hn ch ca nhng thut ton t quyt thng thng.

    n y, ta hy xem s khc bit v phc tp ca mt thut ton t quyt v khng t quyt

    gii quyt cho cng mt vn .Bi ton ngi bn hng

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    17/296

    Mt nhn vin phn phi hng cho mt cng ty c giao nhim v phi giao hng cho cc i lca cng ty, sau tr v cng ty. Vn ca ngi nhn vin l lm sao i giao hng cho tt ci l m khng tiu qu s tin xng m cng ty cp cho mi ngy. Ni mt cch khc, lm saong i qu mt s lng cy s no .

    Mt li gii c in cho bi ton ny l lit k mt cch c h thng tng con ng c th i, sosnh chiu di mi con ng tm c vi chiu di gii hn cho n lc tm c mt con ng

    ph hp hoc xt ht tt c cc con ng c th i. Tuy nhin, cch gii quyt ny c phctp khng phi a thc. Bng ton hc, ngi ta chng minh c rng phc tp ca thutton ny l O(n!). Nh vy, vi s i l ln th thut ton trn c xem l khng thc t. By gi,chng ta xem qua mt thut ton khng t quyt.

    1. Chn mt con ng c th v tnh chiu di ca n.

    2.Nu chiu di ny khng ln hn gii hn th bo l thnh cng, ngc li bo chn la sai.

    Quan im ca ta trong cch gii quyt ny l nu chn sai th l do li ca ngi chn ch khng

    phi li ca thut ton !.

    Theo thut ton ny th chi ph tnh chiu di ca con ng c chn s t l vi s i l; chiph so snh chiu di qung ng vi gii hn cho php th khng lin quan n s thnh ph.Nh vy, chi ph ca thut ton ny l mt hm c dng T = an+b vi n l s i l v a,b l cchng s. Ta kt lun rng, phc tp ca thut ton ny l O(n) hay phc tp thuc lp a thc.

    Nh vy, nu dng thut ton t quyt th bi ton ngi bn hng s c phc tp khng thuclp a thc, cn nu dng thut ton khng t quyt th bi ton s c phc tp a thc.

    nh nghaMt bi ton khi c gii bng mt thut ton khng t quyt m c phc tp thuc lp a thcth c gi l mt bi ton a thc khng t quyt hay vit tt l bi ton NP.

    Theo nh ngha trn th bi ton ngi bn hng l bi ton thuc lp NP.

    Cho n nay ngi ta cha chng minh c rng tn ti hay khng mt thut ton t quyt c phc tp a thc cho bi ton ngi bn hng rong. V vy, bi ton ny (l mt bi ton NP) chath xp c vo lp a thc hay khng a thc. Do , lp bi ton NP cha th phn loi l thuc

    lp a thc hay khng.D nhin, lp bi ton NP cng cha nhng bi ton thuc lp a thc thc s, bi v nu mt biton c gii bng thut ton t quyt c phc tp a thc th chc chn khi dng thut tonkhng t quyt th cng s c phc tp a thc.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    18/296

    5. THUT TON QUY

    Thut ton quy l mt trong nhng s m rng c bn nht ca khi nim thut ton. Nh bit, mt thut ton cn phi tha mn 3 tnh cht :

    Tnh hu hn. Tnh xc nh

    Tnh ng n

    Tuy nhin, c nhng bi ton m vic xy dng mt thut ton vi y ba tnh cht trn rtkh khn. Trong khi , nu ta xy dng mt thut ton vi phm mt vi tnh cht trn th cch giili tr nn n gin hn nhiu v c th chp nhn c. Mt trong nhng trng hp l thutton quy.

    T tng gii bi ton bng thut ton quy l a bi ton hin ti v mt bi ton cng loi,cng tnh cht(hay ni mt cch nm na l ng dng) nhng cp thp hn (chng hn : ln d liu nhp nh hn, gi tr cn tnh ton nh hn, ....), v qu trnh ny tip tc cho n lc biton c a v mt cp m ti c th gii c. T kt qu cp ny, ta s ln ngc gii c bi ton cp cao hn cho n lc gii c bi ton cp ban u.

    Trong ton hc ta cng thng gp nhng nh ngha v nhng i tng, nhng khi nim datrn chnh nhng i tng, khi nim .

    nh ngha giai tha

    Giai tha ca mt s t nhin n, k hiu n! c nh ngha l :

    0! = 1

    n! = (n-1)!n vi mi n>0

    nh ngha dy s Fibonacci

    f0 = 1

    f1 = 1

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    19/296

    fn = fn-1 + fn-2 vi mi n>1

    Theo ton hc, nhng khi nim c nh ngha nh vy gi l nh ngha theo kiu quy np.Chnh v vy, quy c s lin h rt cht ch vi quy np ton hc.

    quy mnh im n c th nh ngha mt tp v hn cc i tng ch bng mt s hu hncc mnh . Tuy nhin, c tnh ny ca quy li vi phm tnh xc nh ca thut ton. V

    nguyn tc, mt bc trong thut ton phi c xc nh ngay ti thi im bc c thi hnh,nhng vi thut ton quy, bc th n khngc xc nh ngay trong ng cnh ca n m phixc nh thng qua mt bc thp hn. Chng hn, tnh c gi tr phn t th 5 ca dyFibonacci theo nh ngha trn, ta phi tnh f3+f4, nhng ta cha bit gi tr f3 v f4 ti thi imny. n y, ta phi li li tnh f3 v f4. tnh f3 ta li phi li v tnh f2,...Tt nhin, l qutrnh tnh li ny phi dng sau mt s hu hn bc. Trong trng hp ny, im dngchnh l gitr f1 v f0.

    u th ca thut ton quy l ta ch cn gii bi ton ti mt s trng hp c bit no , cngi l trng hp dng. Sau , cc trng hp khc ca bi ton s c xc nh thng quatrng hp c bit ny. i vi vic tnh dy Fibonacci, trng hp dng chnh l gi tr ca f0 vf1.

    Ni mt cch chnh xc, mi thut ton quy u gm hai phn:

    Phn c sL cc trng hp khng cn thc hin li thut ton (hay khng c yu cu gi quy). Nu thutton quy khng c phn ny th s dn n b lp v hn v sinh li khi thi hnh. V l do ny mngi ta i lc cn gi phn c s l trng hp dng.

    Phn quy

    L phn trong thut ton c yu cu gi quy, tc l yu cu thc hin li thut ton nhng vimt cp d liu thp hn.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    20/296

    6.THUT GII

    6.1. M rng khi nim thut ton : thut gii

    Trong qu trnh nghin cu gii quyt cc vn - bi ton, ngi ta a ra nhng nhn xt nhsau :

    C nhiu bi ton cho n nay vn cha tm ra mt cch gii theo kiu thut ton v cng khngbit l c tn ti thut ton hay khng.

    C nhiu bi ton c thut ton gii nhng khng chp nhn c v thi gian gii theo

    thut ton qu ln hoc cc iu kin cho thut ton kh p ng.

    C nhng bi ton c gii theo nhng cch gii vi phm thut ton nhng vn chp nhn c.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    21/296

    T nhng nhn nh trn, ngi ta thy rng cn phi c nhng i mi cho khi nim thut ton.Ngi ta m rng hai tiu chun ca thut ton : tnh xc nh v tnh ng n. Vic m rngtnh xc nh i vi thut ton c th hin qua cc gii thut quy v ngu nhin. Tnh ngca thut ton by gi khng cn bt buc i vi mt s cch gii bi ton, nht l cc cch giign ng. Trong thc tin, c nhiu trng hp ngi ta chp nhn cc cch gii thngcho ktqu tt (nhng khng phi lc no cng tt) nhng t phc tp v hiu qu. Chng hn nu gii mt

    bi ton bng thut ton ti u i hi my tnh thc hin nhiu nm th chng ta c th sn lng

    chp nhn mt gii php gn ti u m ch cn my tnh chy trong vi ngy hoc vi gi.

    Cc cch gii chp nhn c nhng khng hon ton p ng y cc tiu chun ca thutton thng c gi l cc thut gii. Khi nim m rng ny ca thut ton m rng ca chochng ta trong vic tm kim phng php gii quyt cc bi ton c t ra.

    Mt trong nhng thut gii thng c cp n v s dng trong khoa hc tr tu nhn to lcc cch gii theo kiuHeuristic.

    6.2. Thut gii Heuristic

    Thut gii Heuristic l mt s m rng khi nim thut ton. N th hin cch gii bi ton vicc c tnh sau :

    Thngtm c li gii tt (nhng khng chc l li gii tt nht)

    Gii bi ton theo thut gii Heuristic thng d dng v nhanh chng a ra kt qu hn so vigii thut ti u, v vy chi ph thp hn.

    Thut gii Heuristic thng th hin kh t nhin, gn gi vi cch suy ngh v hnh ng ca

    con ngi.C nhiu phng php xy dng mt thut gii Heuristic, trong ngi ta thng da vo

    mt s nguyn l c s nh sau:

    Nguyn l vt cn thng minh :

    Trong mt bi ton tm kim no , khi khng gian tm kim ln, ta thng tm cch gii hn likhng gian tm kim hoc thc hin mt kiu d tm c bit da vo c th ca bi ton nhanhchng tm ra mc tiu.

    Nguyn l tham lam (Greedy):

    Ly tiu chun ti u (trn phm vi ton cc) ca bi ton lm tiu chun chn la hnh ngcho phm vi cc b ca tng bc (hay tng giai on) trong qu trnh tm kim li gii.

    Nguyn l th t :

    Thc hin hnh ng da trn mt cu trc th t hp l ca khng gian kho st nhm nhanhchng t c mt li gii tt.

    Hm Heuristic:

    Trong vic xy dng cc thut gii Heuristic, ngi ta thng dng cc hm Heuristic. l cchm nh gi th, gi tr ca hm ph thuc vo trng thi hin ti ca bi ton ti mi bc gii.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    22/296

    Nh gi tr ny, ta c th chn c cch hnh ng tng i hp l trong tng bc ca thutgii.

    Bi ton hnh trnh ngn nht - ng dng nguyn l Greedy

    Bi ton :Chng ta tr li vi bi ton ngi bn hng. Nhng y, yu cu bi ton hi khc llm sao tm c hnh trnh ngn nhtc th c.

    Tt nhin ta c th gii bi ton ny bng cch lit k tt c con ng c th i, tnh chiu di cami con ng ri tm con ng c chiu di ngn nht. Tuy nhin, cch gii ny li c

    phc tp O(n!) (tng s hnh trnh c th c l n!). Do , khi s i l tng th s con ng phixt s tng ln rt nhanh.

    Mt cch gii n gin hn nhiu v thng cho kt qu tng i tt l dng mt thut giiHeuristic ng dng nguyn l Greedy. T tng ca thut gii nh sau :

    1. T im khi u, ta lit k tt c qung ng t im xut pht cho n n i l ri chn itheo con ng ngn nht.

    2. Khi i n mt i l, chn i n i l k tip cng theo nguyn tc trn. Ngha l lit k ttc con ng t i l ta ang ng n nhng i l cha i n. Chn con ng ngn nht. Lpli qu trnh ny cho n lc khng cn i l no i.

    Bn c th quan st hnh 2.14 thy c qu trnh chn la.

    Theo nguyn l Greedy, ta ly tiu chun hnh trnh ngn nht ca bi ton lm tiu chun chn lacc b. Ta hy vng rng, khi i trn n on ng ngn nht th cui cng ta s c mt hnh trnhngn nht. iu ny khng phi lc no cng ng. Vi iu kin trong hnh 2.14 th thut gii chochng ta mt hnh trnh c chiu di l 14 trong khi hnh trnh ti u l 13. Kt qu ca thut giiHeuristic trong trng hp ny ch lch 1 n v so vi kt qu ti u. Trong khi , phc tpca thut gii Heuristic ny ch l O(n2). Tt nhin, thut gii theo kiu Heuristic i lc li a rakt qu khng tt, thm ch rt t nh trng hp hnh 2.15.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    23/296

    Bi ton phn vic ng dng ca nguyn l th t

    Mt cng ty nhn c hp ng gia cng m chi tit my J1, J2,...,Jm. Cng ty c n my gia cng lnlt l P1, P2, ...Pn. Mi chi tit u c th c gia cng trn bt k my no. Mt khi gia cngmt chi tit trn mt my, cng vic s tip tc cho n lc hon thnh, khng th b ngt ngang. gia cng mt cng vic Ji trn mt my bt k ta cn dng mt thi gian tng ng l ti. Nhim vca cng ty l phi lm sao gia cng xong ton b n chi tit trong thi gian sm nht.

    Chng ta xt bi ton trong trng hp c 3 my P1, P2, P3 v 6 cng vic vi thi gian l t1=2, t2=5,t3=8, t4=1, t5=5, t6=1. Ta c mt phng n phn cng (L) nh hnh sau :

    Theo hnh ny, ti thi im t=0, ta tin hnh gia cng chi tit J2 trn my P1, J5 trn P2 v J1 tiP3. Ti thi im t=2, cng vic J1 c hon thnh, trn my P3 ta gia cng tip chi tit J4. Trong

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    24/296

    lc , hai my P1 v P2 vn ang thc hin cng vic u tin mnh...S phn vic theo hnh trn c gi l lc GANTT. Theo lc ny, ta thy thi gian hon thnh ton b 6 cngvic l 12. Nhn xt mt cch cm tnh ta thy rng phng n (L) va thc hin l mt phng nkhng tt. Cc my P1 v P2 c qu nhiu thi gian rnh.

    Xy dng mt thut ton tm mt phng n ti u L0 cho bi ton ny l mt bi ton kh, ihi cc k thut phc tp m chng ta s khng cp y. By gi ta xt n mt thut gii

    Heuristic rt n gin gii bi ton ny.

    1. Sp xp cc cng vic theo th t gim dn v thi gian gia cng.

    2. Ln lt sp xp cc vic theo th t vo my cn d nhiu thi gian nht.

    Vi t tng nh vy, ta s c mt phng n L* nh sau :

    R rng phng n L* va thc hin cng chnh l phng n ti u ca trng hp ny v thigian hon thnh l 8, ng bng thi gian ca cng vic J3. Ta hy vng rng mt thut giiHeuristic n gin nh vy s l mt thut gii ti u. Nhng tic thay, ta d dng a ra c mt

    trng hp m thut gii Heuristic khng a ra c kt qu ti u.

    Nu gi T* l thi gian gia cng xong n chi tit my do thut gii Heuristic a ra v To l thigian ti u th ngi ta chng minh c rng

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    25/296

    Vi kt qu ny, ta c th xc lp c sai s m chng ta phi gnh chu nu dng Heuristic thayv tm mt li gii ti u. Chng hn vi s my = 2 (n=2) ta c

    , v chnh l sai s cc i m trng hp trn gnh chu. Theo cng thc ny, s my cngln th sai s cng ln.

    Trong trng hp n ln th 1/(3n) xem nh bng 0. Nh vy, sai s ti a m ta phi chu l T* ?4/3To, ngha l sai s ti a l 33%. Tuy nhin, kh tm ra c nhng trng hp m sai s ng

    bng gi tr cc i, d trong trng hp xu nht. Thut gii Heuristic trong trng hp ny rrng cho chng ta nhng li gii tng i tt.

    Bi ton Ta-canh - ng dng ca hm Heuristic

    Bi ton Ta-canh tng l mt tr chi kh ph bin, i lc ngi ta cn gi y l bi ton 9-puzzle. Tr chi bao gm mt hnh vung kch thc 3x3 . C 8 c s, mi c mt s t 1 n8. Mt cn trng. Mi ln di chuyn ch c di chuyn mt nm cnh trng v pha trng.Vn l t mt trng thi ban u bt k, lm sao a c v trng thi cui l trng thi m cc c sp ln lt t 1 n 8 theo th t t tri sang phi, t trn xung di, cui dng l trng.

    Cho n nay, ngi ta vn cha tm c mt thut ton chnh xc, ti u gii bi ton ny. Tuynhin, cch gii theo kiu Heuristic li kh n gin. Nhn xt rng : ti mi thi im ta ch c ti

    a 4 c th di chuyn. Vn l ti thi im , ta s chn la di chuyn no? Chng hn hnh trn, ta nn di chuyn (1), (2), (6) hay (7)?

    Gi T0 l trng thi ch ca bi ton v TK l trng thi hin ti. Ta gi V(i,j) l con s nm (i,j), vi trng V(i,j)=0.

    Ta t d(i,j) l s cn di chuyn a con s (i,j) v ng v tr ca n trng thi TO .

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    26/296

    Hm FK ti trng thi TKbng tng ca cc d(i,j) sao cho v tr (i,j) khng phi l trng.

    Nh vy i vi trng thi hnh ban u, hm FK s c gi tr l

    FK = 2+1+3+1+0+1+2+2=12.

    Mt cch tng qut, gi tr hm FK ti trng thi TK s l

    T trng thi TK , ta c ti a 4 cch di chuyn.Ta k hiu cc trng thi mi ny ln lt lTKT ,TKD , TKTr ,TKP ng vi con s trn, di, tri, phi trng hin ti b di chuyn. Chnghn, ng vi hnh ban u, ta c th c 4 trng thi mi nh hnh bn.

    ng vi cc trng thi mi, ta cng s c cc hm FK tng ng l FKT ,FKD ,FKTr ,FKP.

    Da vo 4 con s ny, ta s chn hng i c hm FK tng ng l nh nht, trong trng hp bngnhau ta chn ngu nhin mt trong s cc ng . Vi v d, ta s chn di chuyn mang s (2)v FKD l nh nht. Sau khi di chuyn mt , bi ton chuyn v mt trng thi TKmi. Ta lithc hin qu trnh trn cho n lc t c trng thi ch.

    Hm FK trong v d ca chng ta l mt dng hm Heuristic. Tt nhin, gii c bi ton nytrong nhng tnh hung kh, hm FK cn c nhiu sa i.

    I.GII THIU NGN NG PASCAL

    PASCAL l ngn ng lp trnh cp cao c gio s Niklaus Wirth trng i hc Kthut Zurich (Thy s) thit k v cng b vo nm 1971. ng t tn cho ngn ng ca mnh lPascal tng nh nh ton hc ni ting ngi Php th k 17: Blaise Pascal, ngi sngch ra chic my tnh c kh u tin ca nhn loi. Qua thi gian s dng, Pascal ngy cng cng o ngi dng nh ga cao, v tr thnh mt trong cc ngn ng tho chng ph bin nhthin nay.

    Thnh cng ca ngn ng Pascal l ch: n l ngn ng u tin a ra v th hin ckhi nim lp trnh c cu trc. tng v mt chng trnh c cu trc xut pht t suy ngh chorng c th chia mt bi ton ln, phc tp thnh nhiu bi ton nh, n gin hn. Nu mi biton nh c gii quyt bng mt chng trnh con, th khi lin kt cc chng trnh con ny li sto nn mt chng trnh ln gii quyt c bi ton ban u?.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    27/296

    Bng cch chia mt chng trnh thnh cc chng trnh con nh vy, ngi tho chng cth lp trnh gii quyt ring l tng phn mt, tng khi mt, hoc c th t chc nhiungi cng tham gia, mi ngi ph trch mt vi khi. c bit khi phi thay i hay sa chatrong mt khi th iu s t nh hng n cc khi khc.

    Tnh cu trc ca ngn ng Pascal cn th hin trong vic t chc cc cu lnh v t chcd liu. T cc lnh c, ngi tho chng c th nhm chng li vi nhau v t gia hai t

    kha Begin v End to thnh mt cu lnh mi phc tp hn gi l cu lnh ghp. n lt mnh,hai hay nhiu lnh ghp li c th c nhm li to thnh mt cu lnh ghp phc tp hnna,.v.v. Tng t nh th, ngn ng Pascal cng cho php xy dng cc kiu d liu phc tp hnt cc kiu d liu c.

    Pascal l mt ngn ng khng ch cht ch v mt c php m cn cht ch v mt d liu.Mi bin, mi hng tham gia trong chng trnh lun c mt kiu d liu xc nh v ch nhnnhng ga tr c cng kiu d liu vi n. iu ny buc ngi lp trnh phi nm chc c php vlun ch n tnh tng thch ca cc biu thc v mt kiu d liu. Chnh v th, tho chng

    bng ngn ng Pascal l mt c hi tt khng ch rn luyn t duy m cn rn luyn tnh cn thn

    v chnh xc.

    Ngy nay, Ngn ng Pascal c dng vit cc chng trnh ng dng trong nhiu lnhvc. Vi vn phm sng sa, d hiu, vi kh nng mnh, Pascal c xem l ngn ng thchhp nht ging dy cc trng ph thng v i hc.

    II.CC PHN T C BN CA NGN NG PASCAL

    1.Tp k t c bn

    Mi ngn ng u c xy dng t mt tp k t no . Nhiu k t nhm li vi nhauto nn cc t. Nhiu t lin kt vi nhau theo mt qui tc ng php nht nh (gi l vn phm) thto nn cc mnh . Trong cc ngn ng tho chng, mnh ?cn c gi l cu lnh. Mt tphp cc cu lnh c sp xp theo mt trt t nht nh nhm ch th cho my cc thao tc phithc hin to thnh mt chng trnh. Cc chng trnh c son tho bi ngi tho chng vc lu tr trn a di dng cc tp tin.

    Ngn ng Pascal c xy dng trn b k t c bn, gm:

    cc ch ci la tinh: A, B, C,...,Z, a, b, c,..., z

    cc ch s :0, 1, 2, 3, 4, 5, 6, 7, 8, 9

    cc k hiu c bit: +, -, *, /, =,

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    28/296

    absolute, and, array, begin, case, const, div, do, downto, else, end, file, for, forward,function, goto, if, implementation, in, inline, interface, interrupt, label, mod, nil, not, of, or,packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until,uses, var, while, with, xor

    Cc t kha c th vit di dng ch hoa hay ch thng hay xen k ch hoa vi ch thngu c. V d vit begin hay Begin hay BEGIN l nh nhau.

    3. Tn (identifier):

    Cc bin, cc hng, cc hm, cc th tc, ... c s dng trong chng trnh u cn phit tn, cn gi l nh danh hay danh hiu. Cc tn ny do ngi tho chng t t v phi m

    bo ng quy tc: tn phi bt u bng ch ci, k c th l ch ci, ch s, hay du gch ni_. Tnkhng c t trng vi t kha. Chiu di ca tn ti a l 127 k t. Thng thng tnnn t ngn gn v c tnh gi nh.

    Di y l v d v cc tn c t ng:

    Delta, X1, X2, i, j , Chuc_vu, Luong, So_luong, Don_gia.

    Cn cc tn: 3ABC, In, Chu vi, Ma-so l sai v :

    3ABC: bt u bng s

    Chu vi: c cha k t trng

    Ma-so : k t - l du tr ch khng phi gch ni.

    In : trng vi t kha In

    Cng ging nh t kha, Tn khng phn bit vithoa hay vitthng. V d vit X1 hay x1cng ch l mt tn thi.

    Trong Pascal c mt s tn c t sn ri, gi l tn chun, chng hn :

    Abs, Arctan, Boolean, Byte, Char, Cos, Copy, Delete, Eof, False, Longint, Ord, Integer, Real,Readln, Writeln, True, Text, ...

    Mc d ngi tho chng c th t mt tn mi trng vi mt trong cc tn chun, song, nhm ln, chng ta nn trnh iu ny.

    III. CU TRC CHUNG CA CHNG TRNH PASCAL

    1. V d m u :

    c mt ci nhn tng quan trc khi i vo cc vn chi tit ca ngn ng Pascal, xin hy cngxem chng trnh sau:

    1.1. Bi ton v chng trnh :

    Vit chng trnh nhp vo di hai cnh ca mt hnh ch nht, tnh v in ln mn hnh dintch v chu vi ca hnh ch nht .

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    29/296

    Nu gi hai cnh ca hnh ch nht l a v b, gi din tch v chu vi ln lt l S v P th cng thctnh S v P l:

    S = a.b

    P = 2(a+b)

    Chng trnh c th nh sau :OGRAM VIDU51;

    { Tinh dien tich va chu vi hinh chu nhat }

    Uses CRT;

    Var

    a, b, S, P : Real ;

    BeginClrscr;

    Write( Nhap chieu dai : );

    Readln(a);

    Write( Nhap chieu rong : );

    Readln(b);

    S:=a*b;

    P:=2* (a+b);

    Writeln ( Dien tich = , S:8:2);

    Writeln ( Chu vi = , P:8:2);

    Readln;

    End.

    Chay

    Chp chng trnh ngun VD52.PAS

    1.2. Gii thch cc dng trong chng trnh :

    { Tinh dien tich va chu vi hinh chu nhat }

    y l li ch gii, nu ln mc ch ca chng trnh.

    Uses CRT ;

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd51.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/VD51.PAShttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd51.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/VD51.PAS
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    30/296

    Khai bo s dng th vin CRT ca Turbo Pascal.

    Var

    a, b, S, P : Real ;

    Khai bo 4 bin a, b, S, P c kiu d liu l s thc (Real).

    Begin

    Lnh bt u chng trnh

    Clrscr ;

    Lnh xa mn hnh.

    Write( Nhap chieu dai: );

    Lnh in ln mn hnh cu Nhap chieu dai: nhm nhc ngi dng nhp vo s o chiu di.

    Readln(a) ;

    Lnh nhp d liu cho bin a.

    Write( Nhap chieu rong : );

    Lnh in ln mn hnh cu Nhap chieu rong : nhm nhc ngi dng nhp vo s o chiu rng.

    Readln(b);

    Lnh nhp d liu cho bin b.

    S := a* b;

    Lnh tnh din tch S ca hnh ch nht.

    P := 2*(a+b);

    Tng t, lnh tnh chu vi P ca hnh ch nht.

    Writeln(Dien tich = , S:8:2);

    Lnh ny in ln mn hnh cu Dien tich= , k in ga tr ca bin S. Ch th S:8:2 n nh dnh8 ct trn mn hnh in ga tr ca S, trong c 2 ct in phn thp phn.

    Writeln( Chu vi = , P:8:2);

    Lnh ny in ln mn hnh cu Chu vi = , k in ga tr ca chu vi P c c thy 8 ch s, trong

    c 2 s phn l.

    Readln;

    Lnh dng mn hnh xem kt qa chy chng trnh.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    31/296

    End.

    Du hiu kt thc chng trnh.

    1.3. Chy minh ha chng trnh :

    chy chng trnh mu ni trn, hy nhp vo mc Chay cui chng trnh .

    Nhng trc ht xin xem phn hng dn sau y:

    Khi chng trnh bt u chy, trn mn hnh hin ln li nhc :

    Nhap chieu dai :

    Bn cn nhp s o chiu di t bn phm, chng hn g s 8 v Enter :

    Nhap chieu dai : 8

    Mn hnh hin tip li nhc :Nhap chieu rong :

    Bn nhp s o chiu rng, chng hn g s 6 v Enter :

    Nhap chieu rong : 6

    Chng trnh s tnh ton v in kt qa ln mn hnh nh sau :

    Dien tich = 48.00

    Chu vi = 28.00

    kt thc, hy g phm Enter .

    2. Cu trc chung ca chng trnh Pascal :

    Chng trnh l mt dy cc cu lnh ch th cho my cc cng vic phi thc hin. Mt chngtrnh Pasccal y gm ba phn chnh :

    Phn tiu

    Phn khai bo

    Phn thn chng chnh

    { Phn tiu }

    { Phn khai bo }

    Uses ... {khai bo s dng th vin chun}

    Label ... {khai bo nhn}

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    32/296

    Const ... {khai bo hng}

    Type ... {khai bo kiu d liu}

    Var ... { khai bo bin}

    Function ... { khai bo cc chng trnh con}

    Procedure ... {hm v th tc }

    { Phn thn chng trnh }

    Begin

    { Cc lnh }

    nd.

    Hnh 5.1: Cu trc ca chng trnh Pascal

    2.1. Phn tiu chng trnh :

    Phn ny bt u bng t kha Program, sau t nht l mt khong trng v mt tn do ngidng t t, cui cng kt thc bng du chm phy ;.

    V d : Program Btap1;

    hoc : Program Giai_pt_bac2;

    Phn tiu chim mt dng, cn gi l phn u ca chng trnh, n c th khng c cng c.

    2.2. Phn khai bo :

    Phn khai bo c nhim v gii thiu v m t cc i tng, cc i lng s tham gia trongchng trnh, ging nh ta gii thiu cc thnh vin trong mt cuc hp. N gm khai bo s dngth vin chun, khai bo nhn, khai bo hng, khai bo kiu d liu mi, khai bo bin, v khai bocc chng trnh con. Ty theo yu cu c th m mi khai bo ny c th c hoc khng.

    Khai bo nhn (Label) ch dng khi trong chng trnh c s dng lnh nhy v iu kin GOTO.Nhc im ca lnh GOTO l lm mt tnh cu trc ca chng trnh, trong khi c th thay th nbng cc cu lnh c cu trc ca Pascal. V th, rn luyn k nng lp trnh c cu trc, chng tas khng dng lnh GOTO trong gio trnh ny.

    Cc th tc v hm c dng khi c nhu cu thit k cc chng trnh ln, phc tp. i vi ccbi ton nh, n gin, vic s dng chng trnh con l cha cn thit. Chi tit v phn ny sc trnh by k trong bi 12.

    Sau y ta im qua vi nt v cc khai bo thng dng nht.

    a) Khai bo hng v khai bo bin :

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    33/296

    Bin l i lng c ga tr thay i c, cn Hng l i lng c ga tr khng i, chng cdng trong chng trnh lu tr cc d liu, tham gia vo cc biu thc tnh ton v cc qu trnhx l trong my. Vic khai bo c tc dng xc nh tn v kiu d liu ca bin hay hng. Bin vHng l nhng thnh phn kh c th thiu c trong mt chng trnh. khai bo bin ta dngt kha Var, khai bo hng ta dng t kha Const, v d:

    Const

    N=10 ;

    Var

    x, y : Real ;

    i, k : Integer ;

    b) Khai bo (nh ngha) mt kiu d liu mi:

    Ngoi cc kiu d liu m bn thn ngn ng c sn nh kiu thc, kiu nguyn, kiu k t, kiulgic,.v.v. ngi dng c th t xy dng cc kiu d liu mi phc v cho chng trnh ca mnh,nhng phi m t sau t kha TYPE. Khi nh ngha mt kiu d liu mi, ta c th khai bo cc

    bin thuc kiu d liu ny. V d, ta nh ngha mt kiu d liu mi c tn l Mang :

    Type

    Mang = Array[1..10] of Real;

    By gi c th khai bo hai bin A v B c kiu d liu l kiu Mang :

    Var

    A, B : Mang ;

    c) Khai bo s dng th vin chun:

    Turbo Pascal c sn mt s hm v th tc chun, chng c phn thnh tng nhm theo chcnng mang cc tn c trng, gi l cc th vin hay n v chng trnh ( Unit ), nh : Crt, Graph,Dos, Printer, .v.v. . Mun s dng cc hm hay th tc ca th vin no, ta phi khai bo c sdng th vin , li khai bo phi ngay sau phn tiu ca chng trnh theo c php :

    Uses danhschth vin ;

    V d: do th tc Clrscr nm trong th vin CRT, nn nu trong chng trnh m c dng lnhClrscr, th phi khai bo :

    Uses CRT ;

    Mun s dng c hai th vin CRT v GRAPH, ta khai bo :

    Uses CRT, GRAPH ;

    2.3. Phn thn chng trnh :

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    34/296

    y l phn ch yu nht ca mt chng trnh, bt buc phi c.

    Thn chng trnh bt u bng t kha BEGIN v kt thc bng END. (c du chm cui). Giakhi BEGIN v END l cc lnh. Mi lnh phi kt thc bng du chm phy ;. Mt lnh, nu di,th c th vit trn hai hay nhiu dng, v d :

    Writeln( Phuong trinh co hai nghiem la X1= , X1:8:2, va X2= , X2:8:2) ;

    Ngc li, mt dng c th vit nhiu lnh min l c du ; phn cch cc lnh , chng hn :

    Write( Nhap A, B, C: ) ; Readln(A,B,C) ;

    Thng thng mi dng ch nn vit mt lnh d c, d kim tra li.

    3. V d 2 :

    kt thc phn ny, xin gii thiu chng trnh cho php nhp vo h tn, m s, cc im Ton,

    L ca mt sinh vin, tnh im trung bnh theo cng thc :

    ri in H tn, m s, cc im Ton, L v im trung bnh ca sinh vin ln mn hnh.

    PROGRAM VIDU52;

    Uses CRT;

    Var

    Ho_ten, Maso : String[20];

    Toan, Ly, Dtb : Real;

    Begin

    Write( Nhap Ho va ten : ); Readln(Ho_ten);

    Write( Nhap ma so : ); Readln(Maso);

    Write( Nhap diem Toan : ); Readln(Toan);

    Write( Nhap diem Ly : ); Readln(Ly);

    Dtb:= (Toan+Ly) / 2;

    { In ln mn hnh cc d liu v sinh vin }

    TextMode(C40); { t mode C40 cho mn hnh }

    TextBackGround(Green); { t mu nn l Green }

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    35/296

    TextColor(Red); { t mu ch l Red}

    Clrscr ;

    Writeln( KET QUA THI CUA SINH VIEN:);

    Writeln(Ho va ten : , Ho_ten);

    Writeln(Ma so : , Maso);

    Writeln(Diem Toan : , Toan:3:1);

    Writeln(Diem Ly : , Ly:3:1);

    Writeln(Diem Tbinh : , Dtb:3:1);

    Readln;

    TextMode(C80); { t tr li mode C80 cho mn hnh}

    END.

    Chy

    Chp chng trnh ngun VD52.PAS

    Trong chng trnh ny c s dng bn th tc u thuc th vin CRT, l :

    Clrscr : xa mn hnh

    TextMode(C40) v TextMode(C80) : chuyn mn hnh sang ch b ngang 40 ct (ch to)hoc 80 ct (ch bnh thng).

    TextBackGround(tnmu) : t li mu nn ca mn hnh.

    TextColor(tnmu) : t li mu ch trn mn hnh.

    Tn mu c th l mt s t 0 n 15 hoc c th vit trc tip bng ting Anh nh : White, Black,

    Green, Red, Blue, ...

    Bn c th chy minh ha chng trnh ny bng cch nhp chn vo mc Chay cui chng trnh .

    Cch nhp d liu tng t nh v d trc. Chng hn ta nhp h tn l Nguyen Van An, m s l1990064, im ton l 6, im l l 7 nh di y :

    Nhap Ho va ten : Nguyen Van An

    Nhap ma so : 1990064

    Nhap diem Toan : 6

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd52.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/VD52.PAShttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd52.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/VD52.PAS
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    36/296

    Nhap diem Ly : 7

    Chng trnh s tnh im trung bnh v in kt qa nh sau:

    KET QUA THI CUA SINH VIEN:

    Ho va ten : Nguyen Van An

    Ma so : 1990064

    Diem Toan : 6.0

    Diem Ly : 7.0

    Diem Tbinh : 6.5

    Hy Enter kt thc v tr li mn hnh ban u .

    son v chy c mt chng trnh nh trn cn phi bit s dng phn mm Turbo Pascal( vit tt l TP ).

    IV. S DNG PHN MM TURBO PASCAL

    1. Gii thiu Turbo Pascal:

    Turbo Pascal l mt phn mm c nhim v gip ngi tho chng son tho v thc hin ccchng trnh vit bng ngn ng Pascal. Cc chc nng chnh ca Turbo Pascal l :

    Cung cp mt h son tho vn bn cho php ngi tho chng son v sa chng trnh ddng, tin li.

    Gip ngi tho chng tm cc li v vn phm trong chng trnh.

    Dch (compiler) chng trnh vit bng ngn ng Pascal thnh mt chng trnh vit di dngm my.

    Thc hin hay chy ( Run ) chng trnh vit bng ngn ng Pascal.

    Cung cp cc th vin c sn nhiu hm (function) v th tc (procedure) chun mang li chongi tho chng nhiu cng c hu ch, lm gim bt khi lng phi lp trnh.

    L sn phm ca hng Borland ni ting, Turbo Pascal (vit tt l TP) khng ngng c ci tin,n nay ra i version 7.0. Tuy nhin, mc tho chng cn bn, ngi ta vn thch dng

    phin bn 5.5 hoc 6.0 v n n gin m dng, tc nhanh hn, thch hp vi cc my c cuhnh cha mnh.

    2. Khi ng Turbo Pascal:

    Trong phn ny s trnh by cch s dng Turbo Pascal 6.0. Ngi c c th t mnh suy racch s dng Turbo Pascal 5.5 hay 7.0, v v c bn chng ging vi phin bn 6.0.

    2.1. Cc tp tin chnh ca Turbo Pascal:

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    37/296

    chy c Turbo Pascal 6.0, ch cn hai tp tin sau l :

    TURBO.EXE : tp tin chnh ca TP

    TURBO.TPL : tp tin cha cc th vin ca TP

    Nu mun v ha th phi c thm cc tp tin:

    GRAPH.TPU, tp tin cha th vin ha

    *.BGI : cc tp tin mn hnh ha

    *.CHR : cc tp tin to kiu ch

    Trong cc tp tin mn hnh ha th thng thng ch cn tp tin EGAVGA.BGI l , v ngynay phn ln mn hnh u c kiu EGA hay VGA.

    Nu mun xem hng dn s dng Turbo Pascal th cn c thm tp tin TURBO.HLPThng thng cc tp tin ny c trong mt th mc ring c tn l TP, hay TP6. Di y tagi thit th mc cha Turbo Pascal l TP nm ngay ti gc ca a cng C hay a mm A.

    2.2. Khi ng Turbo Pascal:

    a) Nu bn lm vic trn my c nhn hoc trong mt mng c h iu hnh l MSDOS th sau khikhi ng my xong:

    Trng hp d nht l my ca bn thit lp sn ng dn n th mc TP cha Turbo Pascalth bn ch cn g mt lnh :

    TURBO

    Trn mn hnh s hin ra ca s son tho nh hnh 5.2 .

    Nu g lnh trn m ca s Turbo Pascal khng hin ra, do my ca bn cha thit lp ng dnn th mc TP, trng hp ny bn phi di chuyn vo th mc TP bng lnh :

    CD \TP

    ri sau g tip :

    TURBO

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    38/296

    b) Nu bn lm vic trn my c nhn hoc trong mt mng c h iu hnh l WINDOWS 95 hocmi hn, th sau khi khi ng WINDOWS 95 :

    Trng hp c sn mt Shortcut cha Turbo Pascal trn Desktop : hy nhp left mouse hai lnlin tip vo biu tng Shortcut ca Turbo Pascal.

    Trng hp khng c sn mt Shortcut cha Turbo Pascal: hy chn lnh Start, chn tip lnhRun, ri g vo ng dn y ca tp tin TURBO.EXE, chng hn:

    C:\TP\TURBO.EXE

    , nu khi ng TP t a C.A:\TP\TURBO.EXE , nu khi ng TP t a A.

    2.3. Ca s Turbo Pascal v cch chn lnh :

    Trong ca s ny, dng trn cng l mt thc n ngang, lit k chn nhm lnh chnh ca TP.Mun chn mt lnh trong thc n ny, c th tin hnh theo mt trong hai cch:

    Cch mt:

    G phm F10. Lc ny, trn thc n xut hin mt khung sng (thng l mu xanh). Mun chnlnh no th g cc phm mi tn , di khung sng n lnh ri Enter. Mt thc n con calnh va chn hin ra, gi l thc n dc. V d, khi chn lnh File, ta c thc n con nh sau:

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    39/296

    chn mt lnh trong thc n dc, hy g cc phm mi tn , di khung sng n lnh riEnter. Khi khng mun chn lnh no th g phm ESC tr v vng son tho.

    Ngoi cch dng phm F10 ni trn, cng c th chn mt lnh trong thc n ngang bng cch gng thi phm Alt vi phm ch ci u tin ca tn lnh mun chn. V d, mun chn lnh Fileth g ng thi hai phm Alt v F (vit tt l Alt-F), tng t, mun chn lnh Compile th g Alt-C.

    Cch hai: dng phm "nng":

    C mt s lnh c gn cho nhng phm c bit gi l phm "nng", v d lnh Open: F3, lnhSave : F2, lnh Exit : Alt-X. thc hin nhng lnh ny, thay v phi chn n t trong thc n, tach cn g phm nng tng ng vi n. V d, thay v chn lnh Open th g phm F3, thay v chnlnh Save th g phm F2,...

    Di thc n ngang l vng son tho dng g chng trnh vo. u ca vng ny hin tnca tp tin ang son, v nu ngi tho chng cha t tn th TP s t gim mt tn mc nhinl NONAME00.PAS.

    Dng cui cng tm tt mt s phm " nng" hay dng, nh phm F1 xem hng dn, phm F2 lu tp tin ln a, phm F3 dng m xem mt tp tin, phm F10 khi ng thc n,.v.v.

    2.4. Thot khi Turbo Pascal:

    Chn lnh File trong thc n ngang, chn tip lnh Exit trong thc n dc (vit gn l chn lnhFile/ Exit). Nu lm vic trong TP 5.5 th chn lnh File/ Quit.

    Hoc g cp phm nng Alt-X

    3. Cc bc thc hin mt chng trnh Pascal:

    son v chy mt chng trnh Pascal trong Turbo Pascal, nn tin hnh cc bc nh sau:

    Bc 1: Khi ng Turbo Pascal

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    40/296

    Bc 2: t tn cho tp tin s son :

    Chn lnh File/ Open (nu lm vic trong TP 5.5 th chn lnh File/ Load) hoc g phm F3, sau g tn tp tin (khng cn g phn ui) vo trong khung va hin ra, v d :

    Khi tn BTAP1.PAS s hin ra u vng son tho. ui PAS c TP t ng gn thm vo.

    Tp tin BTAP1.PAS s c lu trong th mc hin thi. Nu mun tp tin BTAP1.PAS c luln a A th khi nhp tn tp tin ta nn g thm tn a ng trc, v d :

    Bc 3: Son tho ( g ) chng trnh .

    Bn hy g chng trnh mu sau vo vng son tho ca Turbo Pascal :

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    41/296

    Bc 4: Dch v sa li:

    Chn lnh Compile/ Compile (hoc g cp phm Alt-F9, hay n gin ch g phm F9 cng c).My s dch chng trnh sang m my, nu gp li th dng v hin thng bo li mu umn hnh, ng thi con tr t v tr c li. Ngi tho chng phi t mnh sa li, ri g Alt-F9 dch v sa li tip cho n khi ht li. Du hiu cho bit vic dch xong l mn hnh xuthin ca s thng bo c dng ch c trng l:

    Bc 5: Lu tr chng trnh ln a: chn lnh File/ Save hoc g phm F2.

    Bc 6: Chy th chng trnh:

    Chn lnh Run/ Run hoc g phm nng Ctrl-F9 (vit tt l ^F9). Mi ln chy th, ta cn nhp mtb d liu c th v kim tra xem kt qa in ln mn hnh c ng khng. Cn phi chy th mt sln ng vi cc b d liu khc nhau. Nu kt qa cc ln chy th u ng th chng trnh hon thnh. Ngc li, nu c mt ln chy th cho kt qa sai th chng trnh cha n, cn phisa li thut ton ca chng trnh.

    V d : chy th chng trnh mu trn, hy g ^F9 v nhp vo chiu di 10, chiu rng 7, nhsau :

    Nhap chieu dai : 10

    Nhap chieu rong : 7

    Chng trnh s in kt qa ln mn hnh :

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    42/296

    Dien tich = 70.00

    Chu vi = 34.00

    Hy Enter tr li mn hnh son tho.

    Vic chy th vi b d liu khc, xin dnh cho c gi.

    Bc 7:

    Nu chng trnh chy ng th g phm F2 lu n ln a ln cui. By gi c th lp li tbc 2 son mt chng trnh mi.

    4. M xem mt chng trnh c :

    Mun xem li mt chng trnh c trn a, hy chn lnh File/ Open hoc g phm F3, trongkhung c tiu u l Name, g vo *.PAS (hoc A:*.PAS nu tp tin nm trn a A), mt danh

    sch cc tp tin c ui PAS s hin ra trong khung pha di cho ta chn ( hnh 5.4) :

    Dng cc phm mi tn , ,, di chuyn v t thanh sng vo tn mun chn ri Enter. Nidung tp tin ny s c a ln mn hnh cho chng ta xem, sa, chy th, .v.v.

    Ch rng trong TP t 6.0 tr ln, a con tr t hp Name trn xung hp Files di, dngphm Tab, t hp File v li hp Name : g Shift_Tab .

    5. Lu tp tin sang a khc :

    Khi cn ghi tp tin ang son t a cng sang a A, c th lm nh sau:

    Chn lnh File/ Save as (nu lm vic trong TP 5.5 th chn lnh File/ Write to...).

    Trong khung hin ra , hy g tn tp tin vo, nh g thm tn a A: ng trc:

    Name:

    A:\BTAP.PAS

    T nay, mi khi g phm F2 hoc chn lnh File/ Save, tp tin BTAP1.PAS s c ghi ln a A.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    43/296

    6. Mt vi k thut trong son tho :

    6.1. Thao tc trn khi:

    Ta gi khi l mt on vn bn gm mt hay nhiu dng lin tip. K t u tin ca khi gi lu khi, k t cui cng ca khi gi l cui khi. Di y l mt khi gm hai dng lnh:

    Write( Nhap chieu dai va chieu rong hinh chu nhat:);

    Readln(a,b);

    a) nh du khi:

    a con tr v u khi

    Mt tay phm Shift, trong khi tay kia g cc phm mi tn , ,,ko vng sng ph n

    cui khi.

    Nu lm vic trong TP 5.5 th nh du khi bng cch: a con tr v u khi, g ^K_B, sau a con tr v cui khi, g ^K_K. (Cch g ^K_B: mt tay phm Ctrl trong khi tay kia g lintip hai phm K v B).

    b) Sao chp khi:

    nh du khi cn sao chp

    a con tr n ni cn chp ti

    G lnh ^K_C

    c) Di chuyn khi:

    nh du khi cn di chuyn

    a con tr n ni cn chuyn khi ti

    G lnh ^K_Vd) Xa khi:

    nh du khi cn xa

    G lnh ^K_Y

    e) Che hoc hin li khi nh du : lnh ^K_H

    6.2. Cc phm lnh son tho thng dng:

    Phm Home : a con tr v u dng hin thi

    Phm End : a con tr v cui dng hin thi

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    44/296

    Phm Delete : xa k t ngay ti v tr con tr. Nu con tr ang ng cui ca dng trn m gphm Delete th s ni dng di vo cui dng trn.

    Phm Back Space (l phm mi tn nm ngay pha trn phm Enter) : xa k t bn tri contr.

    Nu con tr ang ng u ca dng di m g phm Back Space th s ni dng di vo cui

    dng trn.

    Cp phm Ctrl_Y : xa ton b dng hin thi v n cc dng di ln.

    Nhm phm Ctrl_Q_Y : xa t v tr con tr n cui dng.

    Cc phm , ,,: di con tr theo hng mi tn.

    Phm Insert : m hoc tt ch vit chn. ch vit chn, con tr mn hnh c dng bnhthng, tt ch vit chn, con tr c kch thc ln gp 4 ln bnh thng. (Trong TP 5.5, ch

    vit chn hay tt vit chn c nhn bit bng vic ch Insert c hin ra hay khng hin ra uca ca s son tho).

    Phm Enter :

    Trong ch vit chn: g Enter c tc dng a con tr xung u dng di, do ton b ccch ng sau con tr (nu c) s b ct xung dng di. Khi con tr ang ng u mt dngm Enter th s to ra mt dng trng ngay ti v tr .

    Nu ch vit chn l tt th mi khi g phm Enter, con tr s v u ca dng hin thi (dng

    ang cha con tr), ch khng xung dng di na.Ch : Trong Turbo Pascal khng dng ch c du ting Vit. Tuy nhin trong cc chng trnhmu gio trnh ny thnh thong vn vit nhng ch c du l d c, d hiu. Khi son trongTurbo Pascal xin hy b du i.

    V. CU HI TRC NGHIM

    Trong cc cu hi di y, hy chn mt cu tr li thch hp nht:

    Cu 1: Tnh cu trc ca ngn ng Pascal c th hin :

    a) trong vic t chc cc d dtu;

    b) trong vic t chc cc cu lnh;

    c) trong vic t chc chng trnh;

    d) c ba mc a), b), c) ;

    Cu 2: iu g lm cho Pacal c nh ga cao v tr thnh mt trong nhng ngn ng thochng ph bin nht hin nay ?

    a) N l ngn ng u tin a ra v th hin c khi nim lp trnh c cu trc.;

    b) N l mt ngn ng cht ch c v mt c php v v mt d liu;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    45/296

    c) N l ngn ng c vn phm sng sa, d hiu, c kh nng mnh;

    d)C ba iu nu trong cc mc a), b), c) ;

    Cu 3: Khng nh no ng:

    a) VAR , BEGIN, end l cc t kha ca Pascal c khi nim lp trnh c cu trc.;

    b) Cc k hiu a , b , g , d u thuc b k t c bn ca Pascal;

    c) Var, begin, Integer, Real l cc t kha ca Pascal;

    d)VAR, Var, vaR, var l cc t kha khc nhau ca Pascal ;

    Cu 4: Tn no t Sai quy nh ca Pascal:

    a) Giai_Ptrinh_Bac_2;

    b) Ngaysinh;

    c) Noi sinh;

    d)Sv2000 ;

    Cu 5: Mc no c cc Tn u t ng quy nh ca Pascal:

    a) x1 , X-2 ;

    b) Xx1 , X2;

    c) CONST , X_234;

    d)X[1], x2 ;

    Cu 6: Chn cu Sai : trong mt chng trnh Pascal, c th khng c :

    a) phn thn chng trnh ;

    b) phn khai bo bin;

    c) phn u chng trnh;

    d)phn khai bo hng ;

    Cu 7: Du hiu kt thc chng trnh Pascal l :

    a) End;

    b) END;

    c) end.

    d) End ! ;

    Cu 8: Trong Pascal, lnh no c tc dng xa mn hnh :

    a) CLRSSR ;

    b) CLRSR;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    46/296

    c) Clrscl;

    d) Clrscr ;

    Cu 9: Trong Pascal, nu mun dng lnh xa mn hnh Clrscr th phi khai bo th no ngaysau phn tiu chng trnh :

    a) Uses CRT ;b) USES Graph;

    c) use CRT ;

    d) khng khai bo g ca ;

    Cu 10: Khng nh no Sai: trong Turbo Pascal,

    a) lu chng trnh ln a, g phm F2 hoc chn lnh File / Save ;

    b) m mt tp tin c, g phm F1;c) tm li c php ca chng trnh, g phm Alt_F9, hay F9 ;

    d) chy chng trnh, g phm ^F9 hoc chn lnh Run / Run ;

    VI. BI TP

    Cu 1. Son v chy th chng trnh trong v d m u mc 5.3.1

    Cu 2. Son v chy th chng trnh trong v d 2 mc 5.3.3

    Cu 3. Vit chng trnh nhp vo s o mt cnh v din tch ca hnh ch nht, tnh cnh kiav chu vi ca hnh ch nht.

    Cu 4. Vit chng trnh in ln mn hnh hai cu sau :

    " Chao cac ban ! "

    " Rat vui uoc lam quen voi cac ban ! "

    Cu 5. Vit chng trnh nhp hai s bt k x v y, tnh v in ln mn hnh tng x+y, hiu x-y vtch x*y ca hai s .

    6.1. KHI NIM V KIU D LIU

    6.1.1 Khi nim :

    Chc nng ca my in ton l x l cc thng tin. Cc thng tin c nhp v lu tr trongb nh ca my di cc dng khc nhau: c th l s, l ch, c th l hnh nh, m thanh,.v.v. mthut ng tin hc gi chung l d liu. Tnh a dng ca d liu i hi phi t chc v phn phi

    b nh thch hp lu tr v x l tt cc d liu. Ngn ng tho chng chia cc d liu thnhtng nhm ring trn xy dng mt s php ton to nn cc kiu d liu khc nhau, mi kiu dliu l mt tp hp cc ga tr m mt bin thuc kiu c th nhn. Khi mt bin c khai bo

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    47/296

    thuc kiu d liu no th my s dnh cho bin mt dung lng thch hp trong b nh cth lu tr cc ga tr thuc kiu d liu .

    6.1.2 Phn loi kiu d liu :

    Cc kiu d liu trong ngn ng Pascal c chia ra thnh hai loi chnh: loi n gin v loic cu trc.

    Mi kiu d liu n gin l mt tp cc gi tr c s c th t. V d kiu Integer gm cc snguyn nm trong phm vi t -32768 n 32767 v c th t t nhin : -32768< ... < -1 < 0 < 1 < ...< 32767 , kiu l gic ch c hai ga tr False, True vi quy c False < True.

    Cc kiu d liu c cu trc c xy dng t cc kiu d liu n gin. Mi kiu d liu ccu trc l mt tp cc phn t thuc kiu d liu n gin c t chc li theo mt quy tc nhtnh .

    Cc kiu d liu n gin gm c: kiu nguyn, kiu thc, kiu l gic, kiu k t, kiu lit

    k v kiu on con.Cc kiu d liu c cu trc gm c :kiu mng, kiu bn ghi, kiu tp hp v kiu tp

    tin .

    Ring chui k t (STRING) l mt kiu d liu c bit, va c tnh n gin li va c tnhcu trc. Mi chui c th xem l mt ga tr, nhng cng c th xem l mt mng cc ga tr kiuk t. V vy, vic s dng chui cng c hai mc khc nhau: mc n gin v mc c cu trc.

    Cc kiu d liu n gin cn c phn thnh hai loi: m c (Ordinal type) v khng

    m c. Kiu thc thuc loi khng m c, cc ga tr ca n dy c. Tt c cc kiu d liun gin cn li : nguyn, k t, l gic, lit k v on con u thuc loi m c (cn gi l rirc).

    Di y s ln lt trnh by k v 4 kiu d liu n gin chun v thng dng: kiunguyn, kiu thc, kiu logic, kiu k t . Kiu chui c gii thiu c th s dng ngay mcn gin.

    6.2. KIU S NGUYN

    6.2.1. Cc kiu s nguyn :

    Tn kiu Phm vi ga tr S byte

    ShortInt -128 .. 127 1

    Byte 0..255 1

    Integer -32768 .. 32767 2

    Word 0 .. 65535 2LongInt -2147483648 .. 2147483647 4

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    48/296

    Bng 6.1

    Ngoi kiu Integer l thng dng nht, cc s nguyn cn c chia ra thnh 4 kiu na l:Byte, Word, ShortInt v LongInt. Bng 6.1 lit k chi tit v tn gi, phm vi ga tr v di tnhtheo n v byte ca tng kiu nguyn.

    Cc bin nguyn ch c th nhn cc ga tr l cc s nguyn nm trong phm vi ga tr ca bin

    . Khi gn cho mt bin mt s nguyn nm ngoi phm vi ca bin th my s bo li: "Const outof range". V d, cho khai bo :

    Var

    i : Byte;

    N : Integer;

    th cc lnh i y l ng:

    i:= 200;

    N:= -1500;

    cn cc lnh di y l b li :

    i:= -5;

    N:= 50000;

    c bit khng th gn mt s thc cho mt bin nguyn. Cu lnh sau l sai :

    N:= 12.5 ;

    Khi gp tnh hung ny, my s bo li "Type mismatch".

    Ch :

    Cc s nguyn h thp lc phn (h 16) c biu din bng cch vit thm du $ trc s, v dba s di y :

    $A , $FF v $10

    l cc s nguyn vit trong h 16. Chng c ga tr tng ng trong h 10 l:

    10 , 255 v 16

    6.2.2. Cc php ton s hc trn s nguyn:

    Php cng v tr : k hiu + v - nh thng l.

    Php nhn : k hiu bng du *, v d 4*2 cho kt qa l 8.

    Php chia : k hiu bng du / , v d 6/4 cho kt qa l 1.5.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    49/296

    Php chia ly phn nguyn : k hiu bng t kha DIV.

    Php ly phn d nguyn ca php chia: k hiu bng t kha MOD.

    V d: 15 DIV 6 cho kt qa l 2.

    15 MOD 6 cho kt qa l 3.

    Cc php ton trn u cho kt qa l cc s nguyn, tr ra php chia ( / ) lun cho kt qa l mts thc. V th nu N l mt bin nguyn, m gn :

    N:= 20/5;

    th my s bo li, bi v phi c ga tr kiu thc (=4.0) mc d phn l bng khng.

    Nhn xt: s nguyn N l chn nu N mod 2 = 0 (tc N chia ht cho 2),

    ngc li, l l nu N mod 2 0. (du trong Pascal c ngha l khc nhau ).

    Th t thc hin cc php ton cng ging nh thng l:

    Cc biu thc trong (...) c tnh trc tin

    K n l *, /, div, mod

    Sau cng l +, -

    i vi cc php ton cng th t m ng lin nhau th php ton no ng trc c lmtrc.

    V d: tnh biu thc sau :

    15 mod (2 +4) * 20 div (10 div 4) + 40 mod ( 5* 3)

    =15 mod 6 * 20 div 2 + 40 mod 15

    = 3 * 20 div 2 + 10

    = 60 div 2 + 10

    = 30 + 10

    = 40

    V d sau y l mt ng dngca cc php ton div, mod :

    V d 6.1: Nhp mt s tin N ng, i ra xem c bao nhiu t 5 ng, bao nhiu t 2ng, bao nhiu t 1 ng sao cho tng s t l t nht. V d N=43 = 8 t 5 + 1 t 2 + 1 t 1. Cch tnh nh sau :

    S t 5 = 43 div 5 = 8

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    50/296

    S tin d = 43 mod 5 = 3

    S t 2 = S tin d div 2 = 3 div 2 =1

    S t 1 = S tin d mod 2 = 3 mod 2 = 1

    Di y l chng trnh c th :

    PROGRAM VIDU61;

    { i tin }

    Var

    N, st5, st2, st1, sodu : LongInt;

    Begin

    Write( Nhap so tien : ); Readln(N);

    st5 := N div 5;

    Sodu := N mod 5; { tnh phn d}

    st2 := Sodu div 2;

    st1 := Sodu mod 2;

    Writeln( KET QUA DOI TIEN LA: ) ;

    Writeln( So to 5= , st5);

    Writeln( So to 2= , st2);

    Writeln( So to 1=, st1);

    Readln;

    End.

    Chy

    Chp tp tin ngun

    6.2.3. Cc php ton so snh :

    Ngn ng Pascal c su php ton so snh c lit k trong bng 6.2 .

    K hiu ngha V d

    = bng nhau x=y

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd61.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd61.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd61.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd61.pas
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    51/296

    khc nhau xy

    < nh hn x= ln hn hoc bng x>=y

    Bng 6.2

    Kt qa ca cc biu thc so snh l mt ga tr lgic ng (TRUE) hoc Sai (FALSE). V d:

    Biu thc 5*2=10 cho kt qa l TRUE.

    Biu thc 5+2 7 cho kt qa l FALSE.

    Biu thc 6 div 2 > 10 div 3 cho kt qa l FALSE.

    6.2.4. Cc php ton lgic trn s nguyn :

    Cc php tnh NOT, AND, OR, XOR x l cc bt nh phn c xc nh nh sau ( bng 6.3 ):

    NOT 1 = 0 1 AND 1=1 1 OR1=1 1 XOR1=0

    NOT 0 = 1 1 AND 0=0 1 OR0=1 1 XOR0=10 AND 1=0 0 OR1=1 0 XOR1=1

    0 AND 0=0 0 OR0=0 0 XOR0=0

    Bng 6.3

    Mi s nguyn c biu din trong my di dng mt dy cc bt nh phn. S kiu Integerc biu din bng 16 bit. V d, s 1 v s 2 c biu din trong my ln lt l :

    0000 0000 0000 0001

    0000 0000 0000 0011

    Php ly NOT mt s nguyn s o tt c cc bt biu din s nguyn , tc l 0 thnh 1,cn 1 thnh 0. V d:

    NOT 1 = 1111 1111 1111 1110

    NOT 2 = 1111 1111 1111 1100Php ly AND, OR, XOR hai s nguyn c tin hnh bng cch AND, OR, XOR tng

    cp bt tng ng ca hai s , v d:

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    52/296

    1 OR 2 = 0000 0000 0000 0011= 2

    1 AND 2 = 0000 0000 0000 0001= 1

    6.2.5. Cc php dch chuyn s hc SHR v SHL :

    N SHR k : dch cc bt ca s nguyn N sang phi i k bt.

    N SHL k : dch cc bt ca s nguyn N sang tri i k bt.

    C th chng minh c :

    N SHR k = N div 2k

    N SHL k = N * 2k

    V d:

    120 shr 4 = 7, v :

    120 shr 4 = 120 div 24 = 120 div 16 = 7.

    120 shl 3 = 960, v :

    120 shl 3 = 120 * 23 = 120 * 8 = 960.

    Hai php ton SHR v SHL c dng khi mun tng tc tnh ton trn cc s nguyn.

    6.2.6. Cc hm c i s nguyn :

    Hm PRED(k) : i s k nguyn, tr v s nguyn ng ngay trc k, tc l k-1 .

    V d: Pred (5) = 4, Pred (-6) = -7.

    Hm SUCC(k) : i s k nguyn, tr v s nguyn ng ngay sau k, tc l k+1 .

    V d: Succ (5) = 6, Succ (-6) = -5.

    Nhn xt:

    Lnh k:=k+1; tng ng vi lnh k:=Succ(k);

    Lnh k:=k-1; tng ng vi lnh k:=Pred(k);

    Hm ODD(k) : i s k nguyn, tr v ga tr logic l TRUE nu k l, l FALSE nu k chn.

    V d:Odd(15) = True

    Odd(4) = False.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    53/296

    V d 6.2 : Nhp s nguyn N, nu N chn th in ra ch chn, nu N l th in ra ch le? Chngtrnh nh sau :

    PROGRAM VIDU62;

    Var

    N : Integer;

    Begin

    Write(Nhap so N :); Readln(N);

    If Odd(N) = TRUE then write(N, La so le)

    else

    write(N, La so chan);Readln;

    End.

    Chy

    Chp tp tin ngun

    6.2.7. Cc th tc c i s nguyn:

    C hai th tc kh thng dng l:

    Th tc INC(k) : tng k ln mt n v. V d, sau khi thc hin cc lnh :

    k:=5;

    Inc(k);

    th ga tr sau cng ca k l 6.

    Vy, lnh Inc(k); tng ng vi lnh k:=k+1; hay k:=Succ(k);

    Th tc DEC(k) : gim k i mt n v. V d, sau khi thc hin cc lnh :

    k:=5;

    Dec(k);

    th ga tr ca k s l 4.

    Vy, lnh Dec(k) ; tng ng vi lnh k:=k-1; hay k:=Pred(k);

    6.3. KIU S THC

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd62.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd62.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd62.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd62.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd62.pas
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    54/296

    6.3.1 Kiu Real v cc kiu m rng :

    Kiu Real l kiu s thc thng dng nht dng biu din cc s thc x c tr tuyt i ? x?nm trong khong t 2.9*10-39 n 1.7*10+38. Nu ? x? > 1.7*10+38 th khng biu din x trong myc, cn nu ?x? < 2.9*10-39 th x c coi l bng 0.

    C hai cch biu din cc s thc:

    Cch 1: Vit bnh thng, trong du phy thp phn c thay bng du chm thpphn.

    V d: 45.0 -256.45 +122.08

    Cch 2: Vit s di dng khoa hc :

    1.257E+01 (c ga tr = 1.257*101 = 12.57 )

    1257.0E-02 (c ga tr = 1257*10-2

    = 12.57 )

    Trong dng ny s gm c hai phn, phn ng trc E gi l phn nh tr, c vit theocch 1, phn ng sau E gi l phn bc, gm du cng hoc tr, tip n l mt s nguyn.

    S vit theo cch 1 cn gi l s c du chm thp phn c nh, s vit theo cch 2 cn gi ls c du chm thp phn di ng hay s dng khoa hc (Scientific).

    V d: Mun khai bo hai bin x, y kiu real, ta vit:

    Varx, y : Real;

    Ngoi kiu Real ra, cc s thc cn c 4 kiu m rng na l Single, Double, Extended va?Comp. Bng 6.4 nu chi tit v phm vi ga tr v s byte dng lu tr trong b nh ca tngkiu s thc.

    Tn kiu Phm vi ga tr S byte

    Real 2.9*10-39

    .. 1.7*1038

    6

    Single 1.5*10-45 .. 3.4*1038 4

    Double 5.0*10-324 .. 1.7*10308 8

    Extended 3.4*10-4932 .. 1.1*104932 10

    Comp -9.2*1018 .. 9.2*1018 8

    Bng 6.4

    Ch y? : Turbo Pascal thng ch lm vic vi mt kiu Real. Mun dng 4 kiu thc cnli, phi chuyn sang mode 8087 b?g cch vit ch th {$N+} ngay u chng trnh.

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    55/296

    6.3.2. Cc php ton trn s thc :

    C 4 php ton s hc l nhn (*), chia (/), cng (+) v tr (-). Khi mt trong cc s hng thamgia tnh ton l kiu thc th kt qa ca php ton cng l mt s thc.

    Php ton DIV, MOD khng dng cho cc s thc .

    V d: vi hai bin x, y kiu thc th lnh sau l b li v biu thc v phi khng hp l:

    y:= x mod 10 ;

    Cc php ton so snh (= , , < , , >= ) cng dng c cho cc s hng l thc haynguyn.

    6.3.3. Cc hm c i s nguyn hoc thc :

    Hm ABS(x): tnh tr tuyt i ca x :? x? . Kiu d liu ca kt qa cng kiu vi i s.Nu x nguyn th ABS(x) cng nguyn, nu x l s thc th ABS(x) cng l s thc.

    V d: Abs(5 - 8) = 3

    Hm SQR(x): tnh bnh phng ca x: x2 . Kiu d liu ca kt qa cng kiu vi i s. Vd:

    Sqr(4.0) = 16.0

    Sqr(7 div 3) = 4

    Trong cc hm di y, i s x c th l nguyn hay thc, nhng ga tr tr v?lun lun lkiu thc:

    Hm SQRT(x): tnh , (x ? 0)

    Hm EXP(x) : tnh ex

    Hm LN(x): tnh lnx, (x > 0)Cc hm SIN(x), COS(x), v ARCTAN(x): tnh sinx, cosx v arctgx.

    Hm INT(x) : cho s thc bng phn nguyn ca x. V d :

    Int(12.55) = 12.0

    Int(1+10/3)=4.0

    Hm FRAC(x) : cho s thc bng phn l ca x. V d :

    Frac(12.55) = 0.55

    Hai hm c bit di y cho kt qa l s nguyn:

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    56/296

    Hm TRUNC(x): cho s nguyn l phn nguyn ca x. V d :

    Trunc(12.55) = 12

    Trunc(-2.98) = -2

    Hm ROUND(x): cho s nguyn bng cch lm trn x. V d :

    Round(12.45) = 12

    Round(-2.98) = -3

    Ch rng hm Int(x) v hm Trunc(x) cng cho phn nguyn ca x, chng ch khc nhau vkiu d liu ca ga tr tr v. Int(4.5)= 4.0 cn Trunc(4.5) = 4 (vit 4 th hiu l s nguyn, cnvit 4.0 th hiu l s thc).

    V d 6.3: Vit chng trnh nhp s thc x bt k, tnh v in cc ga tr y v z ln mn hnh

    theo cng thc:

    Trong Pascal khng c hm tnh trc tip 2x v Log4(x), nn ta phi chuyn qua hm ex vLn(x) nh sau:

    , v

    Chng trnh c th nh sau:

    PROGRAM VIDU63;

    Var

    x, y, z : Real;Begin

    Write(Nhap x: ); Readln(x);

    y:= ( sqrt (x*x+1) + sin(x)*sin(x) ) / ( 3*exp(2*x) + 1 );

    z:= exp( x*Ln(2) ) + Ln(abs(x)+1) / Ln(4);

    Writeln(y= , y:10:3 );

    Writeln(z= , z:10:3 );

    Readln;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    57/296

    End.

    Chy.

    Chp tp tin ngun

    Khi chy chng trnh, nu nhp x =0 th kt qa y=0.250 v z=1.000.

    6.4. KIU K T (CHAR)

    6.4.1. K t v bin kiu k t:

    K

    t

    M

    ASCII

    K

    t

    M

    ASCII

    K

    t

    M

    ASCII

    32 A 65 a 97

    0 48 B 66 b 98

    1 49 C 67 c 99

    2 50 D 68 d 100

    3 51 E 69 f 101

    4 52 F 70 e 102

    5 53 G 71 g 103

    6 54 H 72 h 104

    7 55 I 73 i 105

    8 56 J 74 j 106

    9 57 K 75 k 107

    L 76 l 108

    M 77 m 109

    N 78 n 110

    O 79 o 111

    P 80 p 112

    Q 81 q 113

    R 82 r 114

    S 83 s 115

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd63.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd63.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd63.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd63.pas
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    58/296

    T 84 t 116

    U 85 u 117

    V 86 v 118

    W 87 w 119

    X 88 x 120

    Y 89 y 121

    Z 90 z 122

    Bng 6.5

    Cc k t dng trong my tnh in t c lit k y trong bng m ASCII gm 256 k t

    khc nhau v c nh s th t t 0 n 255. S th t ca mi k t cn gi l m ASCII ca kt . Biu 6.5 lit k mt phn ca bng m ASCII gm cc ch s v ch ci km theo m cachng.

    Trong bng 6.5, k t c m bng 32 l k t trng (space).

    Tuy c 256 k t khc nhau song ch c 128 k t u tin l hay dng, cn li l cc k t mrng. Cc k t c m t 0 n 31 gi l cc k t iu khin, khng in ra c, c dng iukhin cc thit b ngoi vi, chng hn k t c m l 7 dng to mt ting ku bip, k t c m l13 dng chuyn con tr mn hnh xung u dng di...

    Mi k t trong bng m ASCII gi l mt hng k t, chim di 1 byte, v khi vit trongPascal phi c t trong cp nhy n: 0, 1, A, B, $,...

    Gia cc k t, c mt th t mc nhin theo nguyn tc : k t c m nh hn th nh hn.Tc l:

    K t trng < 0< 1< ...< 9< A< B< ...Z< a< b< ...< z

    Bin nhn ga tr l cc hng k t gi l bin kiu k t, chng c khai bo nh t kha

    CHAR, chng hn nh khai bo hai bin ch v ch1 di y:

    Var

    ch, ch1: Char ;

    Khi c th gn:

    ch:=A;

    ch1:=$;K t A gi lga tr ca bin ch, cn $ l ga tr ca bin ch1.

    Nhn xt: T bng m ca cc ch ci ta suy ra:

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    59/296

    M ch thng = M ch hoa tng ng + 32. (1)

    6.4.2. Cc hm lin quan n k t :

    Hm PRED(ch): cho k t ng ngay trc k t ch trong bng m. V d: Pred(B)=A

    Hm SUCC(ch): cho k t ng ngay sau k t ch trong bng m. V d: Succ(A)=B.

    Hm UpCase(ch): i k t ch thnh ch hoa. V d:

    Upcase( a ) = A, Upcase( b ) = B, Upcase( A ) = A .

    Hm ORD(ch) : cho m ca k t ch. V d: Ord (A) = 65, Ord (a) = 97 .

    Hm CHR(k) : i s k nguyn, 0? k? 255, cho k t c m b?g k. V d:

    Chr (65)= A ,

    Chr (97)= a,

    Chr(32) l k t trng.

    C mt s k t khng c trn bn phm, vit chng ln mn hnh ta phi dng lnh Write vhm CHR. V d:

    Lnh Writeln(Chr(201)) ; in ra k t : +

    Lnh Writeln(Chr(187)) ; in ra k t : +

    K t c m l 7 gi l k t BEL (chung), v lnh:

    Write( Chr(7) ) ; hay Write(#7) ;c tc dng pht ra mt ting ku bip.

    Ch :

    Turbo Pascal ( TP ) cho php vit gn Chr(k) thnh #k nu k l hng s. V d, hai lnh sau cngin ln mn hnh ch A :

    Write(#65);

    Write(Chr(65));

    Trong TP khng c hm i ch hoa ra ch thng, nhng c th lm vic ny nh cng thc (1)v hai hm Ord v Chr :

    Ch thng := Chr ( Ord(ch hoa) + 32 )

    V d 6.4: Nhp vo mt s nguyn k, 0? k? 255, in ra k t c m l k. Chng trnh ktthc khi nhp vo s 0 :

    PROGRAM VIDU64 ;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    60/296

    Uses CRT;

    Var

    k : Byte;

    Begin

    CLRSCR;

    Writeln( Nhp s 0 kt thc :);

    Repeat

    Write( Nhp m ca k t : ); Readln(k);

    Writeln( K t c m , k, l , Chr(k) );

    Until k=0;

    End.

    Chy

    Chp tp tin ngun

    V d 6.5:Nhp mt k t, nu l ch hoa th i ra ch thng, nu l ch thng th i rach hoa.

    PROGRAM VIDU65;

    { i ch hoa ra thng v ngc li}

    Var

    ch, ch1 : Char;

    Begin

    Write( Nhp mt k t :); Readln(ch);

    If (ch>=A) and ( ch

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    61/296

    Chy

    Chp tp tin ngun

    6.5. KIU LGIC (BOOLEAN)

    Kiu boolean ch c hai ga tr l TRUE (ng) v FALSE (sai), khng phn bit ch hoa hay

    ch thng. V quan h th t th FALSE< TRUE. Mi ga tr boolean chim mt byte b nh.

    Cc php ton lgic gm c: NOT, AND, OR v XOR. Nu A v B l hai i lng lgic thNOT A, A and B, A or B v A xor B cng l nhng i lng lgic c kt qa c cho bng 6.6.

    A not A

    True False

    False True

    A B A and B A or B A xor B

    True True True True False

    True False False True True

    False True False True TrueFalse False False False False

    Bng 6.6

    Cng t bng ny ta rt ra cc nhn xt :

    A and B l ng khi v ch khi A v B ng thi ng. (Do ch cn mt trong hai bin A hoc Bsai th A and B s sai).

    A or B l sai khi v ch khi A v B ng thi sai . (Do ch cn mt trong hai bin A hoc B ngth A or B s ng).

    A xor B l ng khi v ch khi A khc B.

    Th t thc hin cc php ton lgic l nh sau: NOT tnh trc, k n AND, sau cng lOR, XOR.

    V d, sau khi thc hin lnh:

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd65.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd65.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd65.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd65.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd65.pas
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    62/296

    A:=Not (2*3=5) or (A1);th ga tr ca A= FALSE, tht vy :

    Not (2*3=5) or (A1)

    = TRUE or TRUE and FALSE xor TRUE

    = TRUE or FALSE xor TRUE

    = TRUE xor TRUE

    = FALSE

    Bin ch nhn ga tr l TRUE hoc FALSE gi l bin kiu lgic. Khi khai bo bin kiu lgicta dng t kha Boolean, v d :

    Var

    A, B : Boolean;

    Trong chng trnh ta c th gn :

    A:= true;

    B:=2*2 < 3;

    Ga tr ca bin B s l False v biu thc 2*2< 3 l sai.

    V th t tnh ton, cc php so snh th ngang cp nhau v c tnh sau tt c cc phpton khc. V d tnh biu thc :

    5+7 div 2 < -7 mod 3 + 5*2 =

    = 5 + 3 < -1 + 10

    = 8< 9

    = TRUE

    Do , khi trong mt biu thc m c cc php ton lgic xen k vi cc biu thc so snhth cc biu thc so snh phi trong ngoc n.

    Chng hn, biu thc sau l sai quy cch:

    N > 0 and N 0) and (N

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    63/296

    Nhp vo di ba cnh a,b,c ca mt tam gic, nu a, b, c khng phi l ba cnh ca tam gicth in ln mn hnh cu " khng phi ba cnh ca tam gac", ngc li, nu ng l ba cnh camt tam gic th tnh chu vi v din tch tam gic theo cng thc Hrng:

    , vi p l na chu vi:

    Ta bit, iu kin a,b,c l ba cnh ca mt tam gic l mi cnh phi dng v tng haicnh th ln hn cnh cn li.

    Di y l chng trnh c th :

    PROGRAM VIDU66;

    {Tnh din tch v chu vi tam gic theo 3 cnh}

    Var

    a, b, c, P, S : Real;

    Tgiac: Boolean;

    Begin

    Write( Nhap 3 canh cua tam giac : );

    Readln(a, b, c);

    Tgiac:= (a>0) and (b>0) and (c>0) and

    (a+b>c) and (a+c>b) and (b+c>a);

    If Tgiac= FALSE then

    Writeln( Khong phai ba canh cua tam giac !)

    else

    begin

    P:=(a+b+c)/2;

    S:= Sqrt( P*(P-a)*(P-b)*(P-c) );

    Writeln( chu vi = , 2*P:10:2);

    Writeln( dien tich S= , S:10:2);

    end;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    64/296

    Readln;

    End.

    Chy

    Chp tp tin ngun

    Khi chy chng trnh ny, nhp ba cnh ca tam gic, bn g ba s cch nhau khongtrng ri enter, chng hn :

    Nhap 3 canh cua tam giac : 3 4 5

    Kt qa chu vi= 12.00, dien tich= 6.00. Nu nhp ba cnh l : 2 3 6 th my hin cu: "Khngphi ba cnh ca tam gic ! " (v 2+3 < 6).

    6.6. CHUI K T (STRING)

    Mt dy k t t trong cp nhy n gi l mt hng chui. Di y l ba hng chui :

    NGON NGU PASCAL

    Tin hoc nam 2000

    123456

    Cc chui c th c ghp ni vi nhau nh php cng chui. Khi cng (+) hai chui ta c

    mt chui duy nht bng cch ghp chui sau vo cui ca chui u. V d php cng :Ngon ngu + Pascal cho kt qa l Ngon ngu Pascal.

    Cc chui cng so snh c vi nhau. Vic so snh hai chui c thc hin bng cch sosnh tng cp k t tng ng t tri qua phi. Khi pht hin c mt cp k t khc nhau th chuino cha k t nh hn s nh hn, v d:

    Biu thc Anh < an l ng v A < a

    Biu thc Thong > Tha l ng v o > a

    Nu ni dung?ca hai chui ging nhau t u n ht chiu di ca chui ngn hn th chuingn hn l nh hn, v d:

    Biu thc Tha < Thang l ng v Tha ngn hn Thang.

    Hai chui bng nhau nu chng di bng nhau v mi cp k t cc v tr tng ng uging nhau. V d:

    Biu thc Pascal = Pascal cho kt qa l ng

    Biu thc Pascal = PAscal cho kt qa l sai.

    http://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd66.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd66.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd66.pashttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/exefiles/vd66.exehttp://www.uit.edu.vn/data/gtrinh/TH010/Htm/pasfiles/vd66.pas
  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    65/296

    Bin nhn gi tr l cc hng chui gi l bin kiu chui. C th khai bo hai bin chuinh sau:

    Var

    Ho_ten : String[20];

    St : String;

    khi Ho_ten l bin chui c th cha ti a 20 k t, cn bin chui St c th cha ti a 255 kt, v ta c th gn :

    Ho_ten := Nguyen Van An;

    St :=Thao chuong bang ngon ngu Pascal;

    Chui Nguyen Van An gi l ga tr ca bin Ho_ten. Tng t, chui Thao chuong bang

    ngon ngu Pascal l gia tr ca bin St.6.7. CU HI TRC NGHIM

    Cu 1: Cho khai bo bin :

    Var m, n : integer;

    x, y : Real;

    Lnh no sai :

    a) m := -4;

    b) n := 3.5;

    c) x := 6;

    d) y := +10.5;

    Cu 2: tnh ga tr , chn cch vit no :

    a) x := -b/2a;

    b) x := -b/2*a;

    c) ;

    d) x := -b/2/a;

    Cu 3: Biu thc : 25 div 3 + 5/2*3 c gi tr l :

    a) 8.0;

    b) 15.5;

    c) 9.5;

  • 8/3/2019 44432602 Giao Trinh Turbo Pascal 70 Full

    66/296

    d) 15.0;

    Cu 4: Cho phng trnh : ax2 + bx + c = 0 .

    Gi s a? 0 v Delta:= b*b- 4*a*c > 0 . Mt nghim ca phng trnh l :

    a) X:= -b + SQRT(Delta) / (2*a);b) X:= (-b + SQRT(Delta) ) /2*a;

    c) X:= (-b + SQRT(Delta) ) / (2*a);

    d) X:= (-b -SQR(Delta) ) /2/a;

    Cu 5: Cho ch l bin c kiu Char. Lnh no ng :

    a) ch:="a"

    b) ch:=65;

    c) ch:=chr(65);

    d) ch:='abcd';

    Cu 6:Bin X c khai bo l kiu integer. Lnh no sai :

    a) X:= round(275/3);

    b) X:= 210 div 4;

    c) X:= SQRT(49);

    d) X:= ABS(-453);

    Cu 7: Biu thc no sau y c gi tr TRUE :

    a) (100 > 76) and ('B' < 'A');

    b) not (49.5 + 2 < 5) or (2 > 4 div 2);

    c) (49.5 + 2 < 5) and (2 < 4 div 2);

    d) 2*(3+5) < 18 div 4*4;

    Cu 8: Khi chy chng trnh :

    Var St, St1 : String;

    Begin

    St := '123';

    St1 := '456';