intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình bằng Turbo Pascal part 6

Chia sẻ: Ashfjshd Askfaj | Ngày: | Loại File: PDF | Số trang:28

115
lượt xem
37
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Các mô đun chương trình là các chương trình con trong một chương trình lớn hơn. Thực hiện thiết kế theo mô đun cũng là sử dụng hàm và thủ tục để xây dựng chương trình hay thủ tục hoá khi xây dựng chương trình. Phương pháp để làm việc này là - Xác định rõ chức năng của từng mô đun như một chương trình con, nó sẽ làm gì, chưa quan tâm làm như thế nào, không đi ngay vào chi tiết. Đây là viêc phân chia biên giới giữa các chương trình con, đảm bảo tính độc...

Chủ đề:
Lưu

Nội dung Text: Lập trình bằng Turbo Pascal part 6

  1. LËp tr×nh b»ng Turbo Pascal 1.5 Thñ tôc ho¸ - Procedural abstraction C¸c m« ®un ch−¬ng tr×nh lμ c¸c ch−¬ng tr×nh con trong mét ch−¬ng tr×nh lín h¬n. Thùc hiÖn thiÕt kÕ theo m« ®un còng lμ sö dông hμm vμ thñ tôc ®Ó x©y dùng ch−¬ng tr×nh hay thñ tôc ho¸ khi x©y dùng ch−¬ng tr×nh. Ph−¬ng ph¸p ®Ó lμm viÖc nμy lμ - X¸c ®Þnh râ chøc n¨ng cña tõng m« ®un nh− mét ch−¬ng tr×nh con, nã sÏ lμm g×, ch−a quan t©m lμm nh− thÕ nμo, kh«ng ®i ngay vμo chi tiÕt. §©y lμ viªc ph©n chia biªn giíi gi÷a c¸c ch−¬ng tr×nh con, ®¶m b¶o tÝnh ®éc lËp t−¬ng ®èi cña chóng víi nhau. - X©y dùng khung l¾p ghÐp c¸c ch−¬ng tr×nh con thμnh ch−¬ng tr×nh chÝnh. Mçi ch−¬ng tr×nh con lμ mét m« ®un riªng rÏ, gièng nh− tõng tÊm bª t«ng ®Ó x©y thμnh mét toμ nhμ l¾p ghÐp. §Ó kiÕn tróc nªn toμ nhμ cÇn bè trÝ c¸c tÊm bª t«ng ®óng vÞ trÝ ®· ®Þnh. §Ó x©y dùng thμnh ch−¬ng tr×nh chÝnh cÇn x¸c ®Þnh ®óng quan hÖ cña c¸c m« ®un ch−¬ng tr×nh con víi nhau. - X¸c ®Þnh chÊt kÕt dÝnh ®Ó liªn kÕt c¸c m« ®un víi nhau. Nã gièng nh− v«i v÷a xi m¨ng trong x©y dùng nhμ cöa. C¸i kÕt dÝnh c¸c ch−¬ng tr×nh con víi nhau lμ viÖc truyÒn tham sè. §Çu vμo cña ch−¬ng tr×nh con nμy lμ ®Çu ra cña mét ch−¬ng tr×nh con kh¸c. CÇn ho¹ch ®Þnh c¸ch thøc truyÒn d÷ liÖu gi÷a c¸c ch−¬ng tr×nh. TruyÒn th«ng qua danh s¸ch tham sè hay gi¸n tiÕp qua biÕn toμn côc, theo c¸ch tham trÞ hay tham biÕn. - Sau khi ®· tiÕn hμnh thñ tôc ho¸ nh− trªn, cã thÓ viÕt ngay ®−îc ch−¬ng tr×nh chÝnh tr−íc khi thùc hiÖn chi tiÕt c¸c ch−¬ng tr×nh con. 2. ThiÕt kÕ chi tiÕt dÇn tõng b−íc. 2.1 S¬ ®å cÊu tróc ch−¬ng tr×nh - structure chart Theo ph−¬ng ph¸p thiÕt kÕ top-down chi tiÕt dÇn tõng b−íc ta cÇn lËp mét s¬ ®å cÊu tróc cña ch−¬ng tr×nh. S¬ ®å cÊu tróc cña ch−¬ng tr×nh gåm nhiÒu møc, gièng h×nh c©y lËt ng−îc mμ gèc c©y lμ bμi to¸n ban ®Çu. S¬ ®å cÊu tróc sÏ ph¸t triÓn dÇn xuèng d−íi, chia ra nhiÒu nh¸nh con, øng víi viÖc chi tiÕt dÇn mçi bμi to¸n thμnh c¸c bμi to¸n con nhá h¬n. Qu¸ tr×nh ph©n nh¸nh tiÕp tôc cho ®Õn khi c¸c bμi to¸n con ®· ®ñ ®¬n gi¶n. Trªn h×nh vÏ, mçi bμi to¸n con thùc hiÖn mét chøc n¨ng c«ng viÖc x¸c ®Þnh, ®−îc thÓ hiÖn b»ng mét h×nh ch÷ nhËt, cã nh·n m« t¶ râ chøc n¨ng lμm c«ng viÖc g×. C¸c ®−êng nèi xuèng c¸c h×nh ch÷ nhËt møc d−íi thÓ hiÖn quan hÖ “chøa”, nghÜa lμ bμi to¸n con ®ã, chøc n¨ng c«ng viÖc ®ã, ®−îc ph©n r· thμnh c¸c bμi to¸n nhá h¬n thÓ hiÖn bëi c¸c h×nh ch÷ nhËt møc d−íi. ChiÒu ng−îc l¹i, ®−êng nèi tõ h×nh ch÷ nhËt ë møc d−íi lªn møc trªn, thÓ hiÖn quan hÖ “®−îc chøa trong”. Trªn c¸c ®−êng nèi cã thÓ cã nh·n ghi râ luång d÷ liÖu trao ®æi gi÷a hai chøc n¨ng c«ng viÖc. S¬ ®å cÊu tróc ph¶n ¸nh quan hÖ gi÷a c¸c bμi to¸n bé phËn víi nhau. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 133
  2. LËp tr×nh b»ng Turbo Pascal Møc 0 Bμi to¸n ban ®Çu Møc 1 Bμi to¸n 1 Bμi to¸n 2 Bμi to¸n 3 Bμi to¸n Bμi to¸n Bμi to¸n Møc 2 .. .. .. .. 1.1 1.2 2.1 Møc 3 ... H×nh 11.1: s¬ ®å cÊu tróc cña mét ch−¬ng tr×nh Ph−¬ng ch©m hμnh ®éng khi thiÕt kÕ ch−¬ng tr×nh theo kiÓu top-down chi tiÕt dÇn tõng b−íc lμ: - §i tõ tæng thÓ ®Õn bé phËn, tõ kh¸i qu¸t ®Õn chi tiÕt - ë mçi b−íc chØ tr¶ lêi c©u hái lμm g×, ch−a véi ®i vμo chi tiÕt lμm nh− thÕ nμo. ViÖc lμm nh− thÕ nμo sÏ râ dÇn qua tõng b−íc ph©n chia c«ng viÖc, tõng viÖc lμm g×. 2.2 VÝ dô. 2.2.1 VÝ dô. ThiÕt kÕ ch−¬ng tr×nh nh©n hai ma trËn ®· ph©n tÝch trong tiÕt tr−íc. Chi tiÕt møc 1. C¸c bμi to¸n nhá ph¶i gi¶i quyÕt lμ. 1. NhËp ma trËn. §Çu vμo: sè hμng cña ma trËn, sè cét cña ma trËn, c¸c phÇn tö cña ma trËn gâ tõ bμn phÝm. §Çu ra: m¶ng 2 chiÒu biÓu diÔn ma trËn trong bé nhí ®−îc g¸n trÞ. 2. KiÓm tra ®iÒu kiÖn nh©n ®−îc. §Çu vμo: sè hμng cña A, sè cét cña B. §Çu ra: kÕt luËn cã thùc hiÖn ®−îc phÐp nh©n AB kh«ng. 3. Nh©n 2 ma trËn. §Çu vμo: hai m¶ng 2 chiÒu biÓu diÔn hai ma trËn A,B tho¶ m·n ®iÒu kiÖn nh©n ®−îc, ®· cã trong bé nhí. §Çu ra: ma trËn tÝch C = A.B. 4. In ma trËn ra mμn h×nh. §Çu vμo: mét m¶ng 2 chiÒu thÓ hiÖn ma trËn trong bé nhí. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 134
  3. LËp tr×nh b»ng Turbo Pascal §Çu ra: HiÓn thÞ c¸c phÇn tö cña ma trËn thμnh b¶ng ch÷ nhËt, dãng th¼ng hμng cét trªn mμn h×nh. Ch−¬ng tr×nh nh©n hai ma trËn 2.KiÓm tra 3. Nh©n hai 4. In ma 1. NhËp nh©n ®−îc ma trËn trËn ma trËn H×nh 11.2: s¬ ®å cÊu tróc ch−¬ng tr×nh nh©n ma trËn sau khi chi tiÕt møc 1. Gi¶ sö ®· cã 4 m« ®un ch−¬ng tr×nh con thùc hiÖn c¸c chøc n¨ng trªn, víi tªn gäi t−¬mg øng lμ NhapMaTran, KiemTraNhanDuoc, NhanMaTran vμ InMaTran. Ch−¬ng tr×nh chÝnh sÏ chØ gåm c¸c lÖnh gäi ch−¬ng tr×nh con thùc hiÖn tuÇn tù c¸c c«ng viÖc sau: nhËp ma trËn A; nhËp ma trËn B; kiÓm tra ®iÒu kiÖn nh©n ®−îc; nÕu tho¶ m·n tÝnh ma trËn tÝch C = A.B vμ in ma trËn C ra mμn h×nh. Ta cã thÓ viÕt ngay phÇn m· lÖnh cña ch−¬ng tr×nh chÝnh BEGIN Writeln(' nhap ma tran thu nhat:'); NhapMaTran(rA,cA,A); Writeln(' nhap ma tran thu hai:'); NhapMaTran(rB,cB,B); If not KiemTraNhanDuoc Then exit Else begin NhanMaTran(rA,cA,rB,cB,rC,cC,A,B,C); Writeln(' ma tran tich la: '); InMaTran(rC,cC,C); End; END. Chi tiÕt møc 2. 1. NhËp ma tr©n. 1.1 NhËp kÝch th−íc (sè hμng, sè cét) cña ma trËn. 1.2 NhËp c¸c phÇn tö cña ma trËn. - NhËp tõ hμng thø nhÊt cho ®Õn hμng cuèi. 2. KiÓm tra nh©n ®−îc: nÕu sai th«ng b¸o lçi, tr¶ kÕt qu¶ lμ False; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 135
  4. LËp tr×nh b»ng Turbo Pascal nÕu ®óng tr¶ kÕt qu¶ lμ True. 3. Nh©n hai ma trËn A*B ®Æt vμo ma trËn C 3.1 G¸n sè hμng cña C b»ng sè hμng cña A, sè cét cña C b»ng sè cét cña B 3.2 TÝnh c¸c phÇn tö cña ma trËn tÝch C theo c«ng thøc ®· biÕt. - TÝnh c¸c phÇn tö theo tõng hμng, tõ hμng thø nhÊt cho ®Õn hμng cuèi. 4. In ma trËn ra mμn h×nh. 4.1 LÊy kÝch th−íc cña ma trËn. 4.2 In ra lÇn l−ît tõng hμng cña ma trËn thμnh b¶ng dãng th¼ng cét: - In hμng thø nhÊt. - xuãng dßng. - In hμng tiÕp theo vμ lÆp l¹i cho ®Õn khi hÕt mäi hμng. S¬ ®å cÊu tróc cña ch−¬ng tr×nh nh− sau. Ch−¬ng tr×nh nh©n hai ma trËn KiÓm tra Nh©n hai ma In ma NhËp ma nh©n ®−îc trËn trËn trËn §äc sè hμng, §äc lÇn LÊy sè In ra lÇn sè cét l−ît tõng hμng , sè l−ît tõng hμng cét hμng TÝnh sè TÝnh lÇn l−ît tõng C ij hμng, cét cña C H×nh 11.3: S¬ ®å cÊu tróc ch−¬ng tr×nh nh©n ma trËn sau khi chi tiÕt møc 2. Ch−¬ng tr×nh chi tiÕt nh− sau. program TichMaTran; uses crt; const max_size = 50; type matrix = array[1..max_size,1..max_size] of integer; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 136
  5. LËp tr×nh b»ng Turbo Pascal var A,B,C: matrix; rA,cA,rB,cB,rC,cC: word; Procedure NhapMaTran(Var SoHang,SoCot: word; Var M: matrix); var i,j: byte; begin write(' cho so hang, so cot cua ma tran: '); readln(SoHang,SoCot); Writeln(' Cho cac phan tu cua ma tran:'); for i:=1 to SoHang do for j:=1 to SoCot do begin Write('pt[',i,',',j,']= ');Readln(M[i,j]); end; end; Function NhanDuoc(SoCotA, SoHangB: word): Boolean; begin if SoCotA SoHangB then begin writeln('kich thuoc ma tran khong hop le !!'); NhanDuoc:= false; End Else NhanDuoc:= true; end; Procedure InMaTran(Var M: matrix); var i,j: byte; begin for i:=1 to SoHang do begin for j:=1 to SoCot do Write(M[i,j]:4); writeln; end; end; Procedure NhanMaTran(rA,cA,rB,cB: word; Var rC,cC: word; Var A,B,C: matrix); var i,j,k: byte; begin rC:=rA; cC:=cB; for i:=1 to rC do for j:=1 to cC do begin C[i,j]:=0; for k:=1 to cA do C[i,j]:= C[i,j]+A[i,k]*B[k,j]; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 137
  6. LËp tr×nh b»ng Turbo Pascal end; end; BEGIN Writeln(' nhap ma tran thu nhat:'); NhapMaTran(rA,cA,A); Writeln(' nhap ma tran thu hai:'); NhapMaTran(rB,cB,B); If not NhanDuoc Then exit Else begin NhanMaTran(rA,cA,rB,cB,rC,cC,A,B,C); Writeln(' ma tran tich la: '); InMaTran(rC,cC,C); End; END. 3. TÝnh ®Ö quy vµ thuËt gi¶i ®Ö quy. 3.1 TÝnh ®Ö quy NhiÒu sù vËt, hiÖn t−îng cã tÝnh chÊt ®Æc biÖt lμ nã ®ång d¹ng víi mét bé phËn cña chÝnh nã. Mét h×nh ¶nh th−êng thÊy lμ khi TV ph¸t h×nh mét ph¸t thanh viªn bªn c¹nh mét mμn h×nh TV còng ®ang cã h×nh trùc tiÕp cña chÝnh buæi ph¸t h×nh ®ã, ta sÏ cã mét chuçi v« tËn c¸c mμn h×nh TV lång nhau, chiÕu cïng mét khung h×nh. Kh¸i niÖm "cμnh c©y" lμ mét vÝ dô kh¸c. Mét cμnh con bÎ ra tõ mét cμnh c©y còng lμ mét cμnh c©y. Trong to¸n häc cã kh¸i niÖm giai thõa cã thÓ ®−îc ®Þnh nghÜa qua chÝnh nã nh− sau 1 nÕu n = 0 n! = n*(n-1)! nÕu n > 0. Trong phÇn tin häc c¬ së ta ®· lμm quen víi kh¸i niÖm ®−êng dÉn. Mét phÇn cña ®−êng dÉn sau khi bít ®i mét vμi tªn th− môc ë cuèi còng lμ mét ®−êng dÉn. NhiÒu kiÓu d÷ liÖu cã cÊu tróc mμ sau nμy ta sÏ nghiªn cøu còng cã tÝnh chÊt t−¬ng tù. Nh÷ng sù vËt hiÖn t−îng nh− trªn ®−îc gäi lμ cã tÝnh ®Ö quy. Nãi mét c¸ch kh¸i qu¸t tÝnh ®Ö quy lμ tÝnh chÊt "mét bé phËn con bÊt k× ®ång d¹ng víi toμn thÓ", "cã thÓ x©y dùng nã tõ mét phÇn cña chÝnh nã". NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 138
  7. LËp tr×nh b»ng Turbo Pascal §Ö quy lμ mét kh¸i niÖm m¹nh. Nã cho phÐp diÔn ®¹t ng¾n gän chÝnh x¸c c¸i v« h¹n qua c¸c "c«ng thøc" h÷u h¹n. 3.2 ThuËt gi¶i ®Ö quy. 3.2.1 §Þnh nghÜa. Mét thñ tôc lμ ®Ö quy nÕu trong thñ tôc cã lêi gäi ®Õn chÝnh nã. NÕu viÖc gi¶i bμi to¸n T thùc hiÖn b»ng viÖc gi¶i bμi to¸n T’ cã d¹ng hoμn toμn gièng T th× ®©y lμ mét thuËt gi¶i ®Ö quy. NÕu ta viÕt thñ tôc thùc hiÖn thuËt gi¶i nμy th× bªn trong nã l¹i chøa chÝnh mét thñ tôc t−¬ng tù, nghÜa lμ cã mét lêi gäi ®Õn chÝnh nã hay mét lêi gäi ®Ö quy. LiÖu mét thñ tôc nh− thÕ cã luÈn quÈn kh«ng, cã kÕt thóc ®−îc kh«ng? C©u tr¶ lêi lμ kh«ng, v× T’ kh«ng ph¶i gièng hÖt T mμ T’ ®ång d¹ng víi T, nh−ng cã “quy m«” bÐ h¬n. Do ®ã hy väng r»ng sau khi lÆp l¹i nhiÒu lÇn gäi ®Ö quy th× "quy m«" cña bμi to¸n cÇn gi¶i sÏ gi¶m ®Õn møc thñ tôc cã thÓ chÊm døt. VÝ dô: 1 nÕu n = 0 n! = n*(n-1)! nÕu n > 0. Thñ tôc tù nhiªn nhÊt ®Ó tÝnh giai thõa, gÇn nh− chÐp l¹i ®Þnh nghÜa trªn lμ: Function Factorial(n: integer):integer; begin if n=0 then Factorial:=1 else Factorial:= n* Factorial(n-1); end; VËy thuËt gi¶i ®Ö quy lμ thuËt gi¶i tù nhiªn nhÊt ®Ó gi¶i bμi to¸n cã tÝnh ®Ö quy. 3.2.2 VÝ dô Ta xÐt mét vÝ dô gÇn víi thùc tÕ ®êi sèng h¬n. §ã lμ viÖc t×m kiÕm sè ®iÖn tho¹i cña mét ng−¬× trong sæ ®iÖn tho¹i hay tra cøu gi¶i nghÜa cña mét tõ trong tù ®iÓn. Tr×nh tù tiÕn hμnh c«ng viÖc nμy th−êng lμ nh− sau. - Më −íc chõng ë gi÷a , chia tù ®iÓn lμm 2 phÇn. - NÕu tõ thuéc phÇn ®Çu, lÆp l¹i viÖc lμm víi phÇn ®Çu. - NÕu tõ thuéc phÇn sau, lÆp l¹i viÖc lμm víi phÇn sau. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 139
  8. LËp tr×nh b»ng Turbo Pascal - LÆp l¹i viÖc lμm trªn cho ®Õn khi t×m thÊy tõ cÇn tra hoÆc kÕt luËn ®−îc lμ kh«ng cã tõ ®ã trong tõ ®iÓn. M« h×nh hãa thao t¸c t×m kiÕm trªn thμnh thuËt gi¶i sau Procedure TimKiem (D: TuDien; w: MotTu); begin If Tõ ®iÓn D lμ mét tõ then cho kÕt qu¶ else begin - Chia ®«i D = D1 ∪ D2 if w ∈ D1 then TimKiem (D1, w) else TimKiem (D2, w) end end; §©y lμ thñ tôc t×m kiÕm nhÞ ph©n d¹ng ®Ö quy. 3.3 ThiÕt kÕ gi¶i thuËt ®Ö quy. 3.3.1 Hai ®Æc ®iÓm cña thuËt gi¶i ®Ö quy. 1- Sau mçi lÇn gäi ®Ö quy th× kÝch th−íc cña bμi to¸n gi¶m ®i. 2- Cã mét tr−êng hîp suy biÕn: khi bμi to¸n ®· ®ñ ®¬n gi¶n th× cã ngay lêi gi¶i trùc tiÕp, kh«ng ph¶i gäi ®Ö quy n÷a. Dùa vμo hai ®Æc ®iÓm trªn, ®Ó thiÕt kÕ mét thuËt gi¶i ®Ö quy cÇn ph©n tÝch bμi to¸n vμ thùc hiÖn c¸c b−íc sau. - X¸c ®Þnh râ kÝch th−íc cña bμi to¸n phô thuéc vμo c¸i g× ? - Ph©n tÝch ®−a bμi to¸n vÒ mét hoÆc mét vμi bμi to¸n ®ång d¹ng nh−ng cã kÝch th−íc nhá h¬n. - Khi nμo th× cã tr−êng hîp suy biÕn. Lêi gi¶i trùc tiÕp cho tr−êng hîp nμy. VÝ dô, nÕu bμi to¸n xuÊt ph¸t cã kÝch th−íc lμ n: - Gi¶ sö bμi to¸n víi kÝch th−íc nhá h¬n hay b»ng n-1 ®· gi¶i ®−îc th× lêi gi¶i bμi to¸n víi kÝch th−íc n cã t×m ®−îc hay kh«ng ? - khi n=0 hay n=1 ... th× lêi gi¶i trùc tiÕp lμ g× ? NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 140
  9. LËp tr×nh b»ng Turbo Pascal 3.3.2 Khu«n mÉu viÕt thuËt gi¶i ®Ö quy Khu«n mÉu chung cña mét thñ tôc ®Ö quy lμ If tr−êng hîp suy biÕn Then cho lêi gi¶i trùc tiÕp Else Begin - dÉn vÒ bμi to¸n cã kÝch th−íc nhá h¬n; - gäi ®Ö quy; End; 4. Mét sè vÝ dô vÒ thuËt gi¶i ®Ö quy. 4.1 Bµi to¸n th¸p Hµ néi. 4.1.1 Ph¸t biÓu bμi to¸n. TruyÒn thuyÕt kÓ r»ng t¹i mét ng«i chïa ë Hμ néi cã 3 cäc b»ng kim c−¬ng vμ 64 chiÕc ®Üa b»ng vμng, ®−êng kÝnh kh¸c nhau, cã lç trßn ë gi÷a. §Çu tiªn 64 ®Üa nμy xÕp n»m trªn mét cäc, to n»m d−íi, bÐ n»m trªn. §Ó tu t©m, rÌn luyÖn tÝnh nhÉn n¹i, hμng ngμy c¸c nhμ s− niÖm kinh PhËt vμ di chuyÓn c¸c ®Üa tõ cäc nμy sang cäc kh¸c. Quy t¾c di chuyÓn lμ mçi lÇn chØ chuyÓn ®−îc mét ®Üa ë trªn cïng vμ kh«ng ®−îc ®Æt ®Üa to h¬n lªn trªn ®Üa bÐ h¬n. Bμi to¸n: chuyÓn toμn bé 64 ®Üa tõ cäc x (= xuÊt ph¸t) ban ®Çu sang mét cäc míi lμ d (=®Ých). Trong qu¸ tr×nh di chuyÓn cã thÓ xÕp t¹m lªn mét cäc cßn l¹i tg lμm trung gian. 4.1.2 Ph©n tÝch. KÝch th−íc cña bμi to¸n lμ sè ®Üa n = 64. Gi¶ sö ®· biÕt c¸ch gi¶i bμi to¸n víi n nhá h¬n: chuyÓn n-1 ®Üa theo ®óng c¸c quy t¾c nªu trªn, tõ mét cäc ban ®Çu sang mét cäc kh¸c, dïng cäc cßn l¹i lμm trung gian. ThÕ th× cã thÓ gi¶i bμi to¸n víi n ®Üa nh− sau: - ChuyÓn n-1 ®Üa tõ x sang tg lÊy d lμm trung gian. - ChuyÓn nèt 1 ®Üa tõ x sang d. - ChuyÓn n-1 ®Üa tõ tg sang d lÊy x lμm trung gian. - Tr−êng hîp suy biÕn: n = 1. Lóc nμy cã ngay lêi gi¶i trùc tiÕp. ChuyÓn mét ®Üa tõ x sang d. 4.1.3 ViÕt thñ tôc ®Ö quy. Tham sè ®Çu vμo: NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 141
  10. LËp tr×nh b»ng Turbo Pascal - Tham sè 1: sè ®Üa. - Tham sè 2: cäc ®Üa xuÊt ph¸t. - Tham sè 3: cäc ®Ých. - Tham sè 4: cäc lμm trung gian. Tham sè ®Çu ra: kh«ng cã. Theo ®óng khu«n mÉu viÕt thñ tôc ®Ö quy, thñ tôc Hanoi b¾t ®Çu víi tr−êng hîp suy biÕn, khi chØ cã 1 ®Üa. Tr−êng hîp sè ®Üa nhiÒu h¬n 1, bμi to¸n ®−îc ph©n r· ra nh− ®· tr×nh bμy ë trªn. Hai lêi gäi ®Ö quy ®−îc thùc hiÖn ®Ó gi¶i 2 bμi to¸n nhá h¬n víi n-1 ®Üa. L−u ý thø tù cña c¸c tham sè ®Çu vμo thø 2, thø 3, thø 4 lμ rÊt quan träng v× nã t−¬ng øng víi vai trß lμ cäc ®Üa xuÊt ph¸t, cäc ®Ých, cäc trung gian trong thao t¸c chuyÓn ®Üa. procedure hanoi(n: integer ; x,d,tg: char); begin if n=1 then writeln(' chuyen dia: ',x,' -> ',d) else begin hanoi(n-1,x,tg,d); hanoi(1,x,d,tg); hanoi(n-1,tg,d,x); end end; 4.2 Bµi to¸n vÕt mùc. 4.2.1 Ph¸t biÓu bμi to¸n. Cã mét tê giÊy kÎ « l−íi vu«ng. Mét sè vÕt mùc loang trªn tê giÊy. CÇn tÝnh diÖn tÝch cña tõng vÕt loang. Coi diÖn tÝch lμ sè « dÝnh mùc. NÕu gäi nh÷ng « dÝnh mùc gäi lμ « ®en, nh÷ng « kh«ng dÝnh mùc lμ « tr¾ng th× bμi to¸n trë thμnh ®Õm côm sè « ®en liªn th«ng chøa mét « ®· chän. Bμi to¸n nμy cã nhiÒu øng dông trong xö lÝ ¶nh. 4.2.2 Ph©n tÝch. Cã thÓ ®Ò xuÊt mét thuËt gi¶i ®Ö quy nh− sau. DiÖn tÝch cña vÕt mùc gi¶ sö lμ n «. NÕu ta ®· biÕt c¸ch ®Õm sè « ®en cña mäi vÕt cã diÖn tÝch nhá h¬n hay b»ng n -1 th× hoμn toμn gi¶i quyÕt ®−îc bμi to¸n b»ng c¸ch: xuÊt ph¸t tõ mét « ®en trong vïng; ®Õm 1; ®¸nh dÊu « ®· chän thμnh « tr¾ng; chän mét « kÒ nã; ®Õm côm « ®en liªn th«ng víi « nμy. ViÖc nμy lμm ®−îc theo gi¶ thiÕt v× vÕt ®en nμy cã diÖn tÝch b»ng n-1. L−u ý r»ng mét « bÊt k× cã 8 « kÒ nã nªn trong hμm Dem_O_Den ph¶i cã 8 lêi gäi ®Ö quy. Kh«ng cã « ®en nμo bÞ ®Õm qu¸ mét lÇn, v× sau khi ®Õm th× ta ®¸nh dÊu nã thμnh « tr¾ng. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 142
  11. LËp tr×nh b»ng Turbo Pascal Tr−êng hîp suy biÕn: kh«ng cßn « kÒ nμo lμ « ®en n÷a. ¤ ®ang xÐt lμ « tr¾ng th× kÕt thóc vμ tr¶ vÒ sè ®Õm b»ng 0. x x x x xx xx x xx xxx xx xx xxx xxx xx xx xxx H×nh 11.4: Minh ho¹ bμi to¸n vÕt mùc 4.2.3 ViÕt hμm ®Ö quy. Hμm ®Ö quy Dem_O_Den triÓn khai thuËt gi¶i ®Ö quy nh− tr×nh bμy trªn. Tham sè ®Çu vμo: - Tham sè 1: Luoi lμ mét m¶ng hai chiÒu mμ mçi phÇn tö cña nã chØ nhËn hai gi¸ trÞ Den hoÆc Trang. - Tham sè 2: x to¹ ®é x cña « xuÊt ph¸t. - Tham sè 3: y to¹ ®é y cña « xuÊt ph¸t. Tham sè ®Çu ra: tªn hμm chøa kÕt qu¶ ®Õm. const MaxX = 10; MaxY = 10; type MangBit = array[1..MaxX,1..MaxY] of (Den,Trang); var A: MangBit; i,j: integer; Dau: byte; function Dem_O_Den(Var Luoi: MangBit; x,y: integer): word; begin if (xMaxX) or (yMaxY) then Dem_O_Den:=0 else if Luoi[x,y] = Trang then Dem_O_Den:= 0 else {¤ §en} begin Luoi[x,y]:= Trang; Dem_O_Den:= 1+ Dem_O_Den(Luoi,x-1,y-1) +Dem_O_Den(Luoi,x-1,y) +Dem_O_Den(Luoi,x-1,y+1) +Dem_O_Den(Luoi,x,y-1) +Dem_O_Den(Luoi,x,y+1) +Dem_O_Den(Luoi,x+1,y-1) +Dem_O_Den( Luoi,x+1,y) +Dem_O_Den(Luoi,x+1,y+1) NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 143
  12. LËp tr×nh b»ng Turbo Pascal end; end; BEGIN Writeln(' Cho mang 10 x 10 so 0/1 theo tung hang '); for i:=1 to MaxX do begin write('cho hang ',i,': '); for j:=1 to MaxY do begin read(Dau); if Dau = 1 then A[i,j]:= Den else A[i,j]:=Trang; end; readln; end; Writeln('So o Den la ', Dem_O_Den(A,1,2)); END. §Ó kiÓm tra ho¹t ®éng cña hμm võa x©y dùng ta dïng m¶ng 10 x 10 sè 0/1 nhËp tõ bμn phÝm theo tõng hμng, mçi lÇn mét hμng 10 sè 0 hoÆc 1. Sè 0 øng víi « tr¾ng, sè 1 øng víi « ®en. Cã thÓ chän « xuÊt ph¸t lμ bÊt cø « nμo, miÔn lμ thuéc vÕt mùc cÇn tÝnh diÖn tÝch. NÕu nhËp ®óng d÷ liÖu vμo nh− h×nh vÏ trªn th× ch−¬ng tr×nh ph¶i cho kÐt qu¶ tÝnh ®óng diÖn tÝch lμ 16 cña vÕt mùc chøa « (1,2) . 4.3 T×m kiÕm nhÞ ph©n 4.3.1 Ph©n tÝch. Gi¶ sö cã d·y kho¸ ®· s¾p theo thø tù t¨ng dÇn. Cho mét gi¸ trÞ kho¸ x. H·y viÕt thñ tôc t×m kiÕm xem d·y cã chøa gi¸ trÞ kho¸ x kh«ng. §©y lμ kh¸i qu¸t ho¸ cña c¸c bμi to¸n kiÓu nh− t×m mét tõ trong tù ®iÓn, t×m mét tªn ng−êi trong mét danh s¸ch ®· xÕp thø tù... Thñ tôc t×m kiÕm nhÞ ph©n lμ thÝch hîp nhÊt cho tr−êng hîp nμy. Mét thñ tôc t×m kiÕm nhÞ ph©n sö dông vßng lÆp ®· ®−îc tr×nh bμy khi nãi vÒ t×m kiÕm trong m¶ng. D−íi ®©y lμ triÓn khai d−íi d¹ng mét thñ tôc ®Ö quy. Thñ tôc t×m kiÕm ®Ö quy sÏ tiÕn hμnh chia ®«i d·y kho¸ vμ gäi ®Ö quy ®Ó xö lÝ mét trong hai d·y con cã chøa kho¸ x. Tr−êng hîp suy biÕn lμ d·y chØ cßn mét phÇn tö, cã ngay kÕt qu¶ trùc tiÕp. 4.3.2 ViÕt hμm ®Ö quy. Tham sè ®Çu vμo : - Tham sè 1: chØ sè ®Çu mót tr¸i l cña d·y con ®ang xÐt . - Tham sè 2: chØ sè ®Çu mót ph¶i r cña d·y con ®ang xÐt . NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 144
  13. LËp tr×nh b»ng Turbo Pascal - Tham sè 3: gi¸ trÞ kho¸ x cÇn t×m . - Tham sè 4: m¶ng a chøa c¸c kho¸. Tham sè ®Çu ra: tªn hμm, chøa kÕt qu¶ t×m thÊy hay kh«ng. Theo ®óng khu«n mÉu chung cña mét tñ tôc ®Ö quy, hμm TimKiemNhiPhan b¾t ®Çu b»ng tr−êng hîp suy biÕn, khi d·y kho¸ chØ gåm mét phÇn tö. function TimKiemNhiPhan(l,r: integer; x: real; var a: mang): boolean; var m: integer; TimThay: boolean; begin if l=r then begin TimKiemNhiPhan:= (a[r]=x); exit; end; TimThay:= False; m:=(l+r) div 2; if x=a[m] then begin TimThay:= True; exit; end else begin if x x; - TiÕn dÇn tõ ph¶i sang tr¸i cho ®Õn khi gÆp a[j] < x; - §æi chç a[i] cho a[j]. - §i tiÕp tõ c¶ hai phÝa cho ®Õn khi gÆp nhau th× kÕt thóc mét b−íc. Mét b−íc tiÕn hμnh nh− trªn gäi lμ mét lÇn ph©n ®o¹n. Sau mét b−íc - mét lÇn ph©n ®o¹n - th× phÇn tö chèt x sÏ ë ®óng vÞ trÝ cña nã. M¶ng ®−îc NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 145
  14. LËp tr×nh b»ng Turbo Pascal chia lμm hai phÇn, nöa tr¸i gåm toμn c¸c phÇn tö < x, nöa ph¶i gåm toμn c¸c phÇn tö > x. §iÒu nμy gi¶i thÝch t¹i sao l¹i gäi phÇn tö x lμ chèt. Nh− vËy d·y ban ®Çu ®· ®−îc ph©n r· thμnh hai d·y con, bμi to¸n ban ®Çu ®−îc phan r· thμnh hai bμi to¸n con ®ång d¹ng. Sö dông thñ tôc ®Ö quy ë ®©y lμ mét ®iÒu tù nhiªn. Tr−êng hîp suy biÕn lμ d·y con chØ cßn mét phÇn tö. 4.4.2 ViÕt thñ tôc ®Ö quy. Tham sè ®Çu vμo. - Tham sè 1: chØ sè ®Çu mót tr¸i l cña d·y con ®ang xÐt . - Tham sè 2: chØ sè ®Çu mót ph¶i r cña d·y con ®ang xÐt . Tham sè ®Çu ra: kh«ng cã. KÕt qu¶ thñ tôc ph©n ®o¹n lμm thay ®æi vÞ trÝ cña c¸c phÇn tö cña mét m¶ng lμ biÕn toμn côc nªn kh«ng cÇn ®−a vμo danh s¸ch tham sè. procedure PhanDoan (l,r: integer); var x,w:...; begin i:=l; j:=r; { l=left; r=right } “chon mot phan tu x lam chot” repeat while a[i] < x do i:=i+1; while x < a[j] do j:=j-1; if ij; if lj lu«n sÏ x¶y ra, cßn ®iÒu kiÖn i=j cã thÓ kh«ng x¶y ra trong qu¸ tr×nh trªn. Thñ tôc s¾p xÕp nhanh chØ bao gåm duy nhÊt mét lêi gäi ®Õn thñ tôc ph©n ®o¹n ¸p dông cho d·y xuÊt ph¸t ban ®Çu. procedure Quicksort; begin PhanDoan(1,n); end; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 146
  15. LËp tr×nh b»ng Turbo Pascal 5. Tù x©y dùng th− viÖn ch−¬ng tr×nh con - Units 5.1 Sö dông l¹i c¸c ch−¬ng tr×nh con C¸c ch−¬ng tr×nh con th−êng dïng, cÇn lμm s½n ®Ó sö dông l¹i nhiÒu lÇn trong ch−¬ng tr×nh chÝnh còng nh− trong t−¬ng lai vÒ sau nμy. Cã hai c¸ch ®Ó sö dông l¹i c¸c ch−¬ng tr×nh con: 1- ChØ thÞ cho tr×nh biªn dÞch chÌn trùc tiÕp tÖp m· nguån cña ch−¬ng tr×nh con vμo chç cÇn thiÕt khi tiÕn hμnh biªn dÞch ch−¬ng tr×nh. Theo c¸ch nμy ta thªm chØ thÞ biªn dÞch (compiler directive) sau ®©y vμo vÞ trÝ muèn chÌn thªm tÖp m· nguån cña ch−¬ng tr×nh con. {$I tªn tÖp m· nguån } C«ng dông cña chØ thÞ trªn hoμn toμn gièng nh− ta sao l¹i vμ chÌn thªm mét c¸ch thñ c«ng ®o¹n m· nguån cña ch−¬ng tr×nh con vμo vÞ trÝ ®ã. 2- Tæ chøc thμnh c¸c th− viÖn ch−¬ng tr×nh con - c¸c Unit C¸c hμm, thñ tôc mÉu hay dïng trong ch−¬ng tr×nh cã thÓ tæ chøc riªng thμnh mét th− viÖn ch−¬ng tr×nh con. NÕu cã nhiÒu ch−¬ng tr×nh con th× ng−êi ta chia lμm nhiÒu th− viÖn, nhãm theo chøc n¨ng, mçi phÇn lμ mét Unit. Khi x©y dùng mét ch−¬ng tr×nh rÊt lín, cã thÓ cÇn ®Õn nhiÒu Unit ch−¬ng tr×nh con. TurboPascal ®· lμm s½n mét th− viÖn c¸c ch−¬ng tr×nh con th−êng sö dông nhÊt. §©y lμ c¸c Unit chuÈn. C¸c hμm thñ tôc cã s½n trong c¸c Unit chuÈn mÆc dï rÊt phong phó nh−ng vÉn ch−a thÓ ®¸p øng tr−íc tÊt c¶ c¸c nhu cÇu v« cïng ®a d¹ng cña khi viÕt c¸c ch−¬ng tr×nh øng dông. Ng−êi lËp tr×nh hoμn toμn cã thÓ lμm thªm c¸c th− viÖn bæ xung c¸c ch−¬ng tr×nh con cÇn thiÕt cho lÜnh vùc chuyªn ngμnh cña m×nh, cho bμi to¸n thùc tiÔn cña m×nh, theo ý muèn cña m×nh. 5.2 CÊu tróc cña mét unit. §Ó x©y dùng mét Unit vμ sö dông nã trong ch−¬ng tr×nh ta ph¶i theo nh÷ng quy ®Þnh chÝnh x¸c trong tõng c«ng ®o¹n. D−íi ®©y sÏ tr×nh bμy lÇn l−ît tõng b−íc. 5.2.1 Khung cÊu tróc . Khung cÊu tróc ®Ó viÕt mét Unit nh− sau: Unit tªn Unit ; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 147
  16. LËp tr×nh b»ng Turbo Pascal Uses .... ; Giao diÖn víi bªn ngoμi: INTERFACE PhÇn khai b¸o c¸c h»ng, biÕn, Const tªn h»ng = gi¸ trÞ; kiÓu vμ nguyªn mÉu cña c¸c Type tªn kiÓu = m« t¶ kiÓu; hμm, thñ tôc ®Ó cho bªn ngoμi Var tªn biÕn: kiÓu d÷ liÖu ; sö dông. TriÓn khai m· lÖnh Procedure tªn thñ tôc (ds c¸c tham sè); chi tiÕt sÏ ®−îc thùc hiÖn Function tªn hμm (ds c¸c tham sè): kiÓu trong ®o¹n Implementation d÷ liÖutr¶ vÒ; d−íi ®©y. IMPLEMENTATION Khai b¸o c¸c h»ng, biÕn, kiÓu Uses .....; néi bé ®Ó dïng ë bªn d−íi, Const ....; trong c¸c hμm, thñ tôc Type ... ; Var ...; TriÓn khai m· lÖnh chi tiÕt Procedure ....; c¸c hμm, thñ tôc néi bé vμ Begin c¸c hμm thñ tôc lμm giao diÖn .... End; ®· khai b¸o trong phÇn Function .... ; Interface. Begin .... End; L−u ý kh«ng cã BEGIN END. {cña Unit} t−¬ng øng 5.2.2 C¸c thμnh phÇn. Nh− vËy, c¸c thμnh phÇn trong Unit gåm hai lo¹i. Lo¹i néi bé nghÜa lμ chØ sö dông bªn trong Unit, sÏ dïng ®Õn khi triÓn khai c¸c m· lÖnh bªn trong th©n Unit, chØ ng−êi x©y dùng Unit biÕt. Nh÷ng thμnh phÇn nμy kh«ng khai b¸o trong phÇn Interface. Lo¹i lμm giao diÖn lμ nh÷ng c¸i dμnh cho bªn ngoμi sö dông, ph¶i khai b¸o trong phÇn Interface. Nh÷ng ®iÓm kh¸c víi khung cÊu tróc cña mét ch−¬ng tr×nh b×nh th−êng lμ: - B¾t ®Çu b»ng tõ kho¸ Unit chø kh«ng ph¶i lμ Program. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 148
  17. LËp tr×nh b»ng Turbo Pascal - Cã thªm phÇn giao diÖn b¾t ®Çu b»ng tõ kho¸ Interface ®Ó khai b¸o tÊt c¶ c¸c h»ng, kiÓu, biÕn vμ c¸c ch−¬ng tr×nh con dμnh cho bªn ngoμi sö dông. L−u ý r»ng trong phÇn nμy c¸c hμm, thñ tôc chØ ®−îc khai b¸o nguyªn mÉu gåm tªn, danh s¸ch tham sè h×nh thøc vμ kiÓu d÷ liÖu tr¶ vÒ, cßn phÇn triÓn khai m· lÖnh, tøc lμ phÇn th©n l¹i n»m trong phÇn Implementation. - PhÇn triÓn khai – Implementation - lμ néi dung chÝnh cña unit, sÏ chøa th©n cña tÊt c¶ c¸c hμm, thñ tôc ®· khai b¸o trong phÇn giao diÖn ë trªn cïng víi c¸c ch−¬ng tr×nh con kh¸c n÷a phôc vô cho viÖc thùc hiÖn c¸c hμm, thñ tôc lμm giao diÖn nÕu cã. 5.3 Biªn dÞch vµ sö dông. 5.3.1 Biªn dÞch TiÕn hμnh biªn dÞch tÖp m· nguån cña c¸c unit còng hoμn toμn nh− biªn dÞch mét ch−¬ng tr×nh th«ng th−êng. Chän Compile hoÆc gâ phÝm t¾t Alt+F9. Tuy nhiªn, tÖp kÕt qu¶ nhËn ®−îc sÏ cã phÇn më réng lμ TPU (Turbo Pascal Units) chø kh«ng ph¶i lμ mét tÖp cã phÇn më réng exe. Ph¶i thiÕt lËp môc chän Compile / Destination ... Disk ®Ó ghi tÖp kÕt qu¶ ra ®Üa chø kh«ng chØ ®Ó trong bé nhí (Destination ... Memory). L−u ý x¸c ®Þnh n¬i ®Æt tÖp kÕt qu¶ th«ng qua môc chän Options / Directories / TPU & EXE Directory. Cã thÓ ®Æt chung trong th− môc c¸c Unit chuÈn cña Turbo Pascal b»ng c¸ch ®iÒn ®−êng dÉn ®Çy ®ñ "C:\tp\Units" vμo trong « " TPU & EXE Directory ". Còng cã thÓ ®Æt trong mét th− viÖn c¸c unit cña riªng m×nh, vÝ dô "C:\tp\MyUnits". 5.3.2 Sö dông Muèn sö dông mét Unit trong mét ch−¬ng tr×nh th× ph¶i khai b¸o t¹i ®Çu ch−¬ng tr×nh gièng nh− ®èi víi c¸c Unit chuÈn cña Turbo Pascal. Uses danh s¸ch c¸c Unit ; §Ó tr×nh biªn dÞch cã thÓ t×m ®−îc tÖp TPU t−¬ng øng, cÇn chØ râ n¬i ®Æt nã. Më môc chän Options / Directories vμ bæ xung thªm ®−êng dÉn, vÝ dô "C:\tp\MyUnits" trong « "Units Directories". 5.4 VÝ dô minh ho¹. D−íi ®©y lμ mét vÝ dô ®¬n gi¶n. Unit cã tªn "Tools" chØ chøa mét h»ng EscKey lμ m· cña phÝm ESC vμ mét thñ tôc Say(x,y,St) ®Ó hiÓn thÞ x©u kÝ tù St b¾t ®Çu tõ vÞ trÝ (x,y) trªn mμn h×nh. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 149
  18. LËp tr×nh b»ng Turbo Pascal unit tools; interface const EscKey = #27; procedure Say(x,y: byte; St: string); implementation uses Crt; procedure Say; begin gotoXY(x,y); write(St); end; END. {unit tools} So¹n th¶o mét tÖp Tools.pas cã néi dung nh− trªn. Biªn dÞch thμnh tÖp Tools.tpu, ®Æt trong th− môc nμo ®ã, vÝ dô C:\tp\MyUnits. Ta ®· cã Unit Tools s½n sμng ®Ó sö dông. Ch−¬ng tr×nh d−íi ®©y sö dông Unit Tools. program ViDu1Unit; Uses Crt, Tools; BEGIN Clrscr; Say(10,10,' Day la thu tuc Say trong Tools unit !'); repeat until Readkey = EscKey; END. 5.5 So s¸nh viÖc dïng Unit víi chÌn trùc tiÕp tÖp m∙ nguån Nh− ®· tr×nh bμy trªn, ®Ó sö dông l¹i c¸c ch−¬ng tr×nh con ®¨ ®−îc x©y dùng hoμn chØnh cã thÓ chÌn trùc tiÕp m· nguån cña chóng vμo ch−¬ng tr×nh hoÆc tæ chøc thμnh c¸c Unit. Tæ chøc thμnh Unit th× mçi khi dÞch ch¹y thö ch−¬ng tr×nh chÝnh, c¸c Unit kh«ng cÇn ph¶i dÞch l¹i. NÕu chÌn trùc tiÕp m· nguån vμo tÖp ch−¬ng tr×nh chÝnh b»ng chØ thÞ cho tr×nh biªn dÞch {$I tªn tÖp m· nguån } th× tÊt c¶ nh÷ng ®o¹n m· chÌn thªm nμy ®Òu ®−îc dÞch l¹i toμn bé mçi khi ch¹y thö. Do ®ã kh«ng nªn theo c¸ch nμy khi cã nhiÒu ch−¬ng tr×nh con dμi vμ phøc t¹p. 5.6 C¸c unit chuÈn cña Turbo Pascal NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 150
  19. LËp tr×nh b»ng Turbo Pascal TurboPascal cung cÊp c¸c th− viÖn lμm s½n, ®ã lμ c¸c Unit chuÈn. C¸c Unit chuÈn chøa c¸c h»ng, c¸c kiÓu d÷ liÖu, c¸c biÕn, c¸c hμm thñ tôc mÉu ®Ó ng−êi lËp tr×nh Pascal sö dông. C¸c Unit chuÈn ®−îc chøa trong tÖp Turbo.tpl. Chóng ®−îc tæ chøc theo tõng nhãm chøc n¨ng. Danh s¸ch c¸c Unit chuÈn nh− sau. Tªn Néi dung HiÓn thÞ mμn h×nh, ®äc m· bμn phÝm... Crt Khai th¸c c¸c chøc n¨ng cña DOS Dos C¸c hμm, thñ tôc ®å ho¹ Graph C¸c hμm, thñ tôc ®å ho¹ t−¬ng thÝch víi phiªn b¶n 3.0 Graph3 Cho chÕ ®é overlay Overlay Phôc vô sö dông m¸y in Printer C¸c hμm, thñ tôc chuÈn hay dïng. Unit System lu«n tù System ®éng ®−îc gäi, kh«ng cÇn khai b¸o trong danh s¸ch sau tõ kho¸ Uses §Ó t−¬ng thÝch lïi víi phiªn b¶n 3.0 Turbo3 §Ó lËp tr×nh cho m«i tr−êng window WinDos CÇn tham kh¶o tμi liÖu ®Ó biÕt ®−îc néi dung chi tiÕt vÒ tªn gäi, gi¸ trÞ vμ ý nghÜa cña c¸c h»ng, kiÓu, biÕn còng nh− chøc n¨ng vμ c¸ch sö dông c¸c ch−¬ng tr×nh mÉu ®· ®−îc lμm s½n trong tõng unit. 6. Gií i thiÖu Unit CRT. Unit CRT (Catot Ray Tube) lμ Unit chøa c¸c h»ng, biÕn, hμm, thñ tôc ®iÒu khiÓn viÖc hiÓn thÞ lªn mμn h×nh ë chÕ ®é v¨n b¶n, xö lÝ m· bμn phÝm vμ ©m thanh cña loa trong m¸y tÝnh. 6.1 C¸c biÕn C¸c biÕn ®· ®−îc ®Þnh nghÜa trong Crt: Tªn biÕn KiÓu CheckBreak Boolean CheckEOF Boolean DirectVideo Boolean CheckSnow Boolean (Xem thñ tôc TextMode) LastMode Word NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 151
  20. LËp tr×nh b»ng Turbo Pascal TextAttr Byte (Xem c¸c thñ tôc TextColor, TextBackGround, Highvideo, LowVideo) WindMin Word (Xem thñ tôc Window) WindMax Word (Xem thñ tôc Window) Y nghÜa cña chóng sÏ ®−îc gi¶i thÝch kÜ h¬n khi nãi ®Õn c¸c hμm, thñ tôc cã liªn quan. 6.2 C¸c hµm, thñ tôc PhÇn nμy sÏ kh¶o s¸t tãm t¾t c¸c hμm, thñ tôc cã trong Unit Crt. Nguyªn mÉu cña tõng hμm thñ tôc sÏ d−îc tr×nh bμy ®Ó cung cÊp giao diÖn cho ng−êi sö dông. C«ng dông hay chøc n¨ng sÏ ®−îc nªu v¾n t¾t. ClrEol; Xo¸ tõ vÞ trÝ con ch¹y ®Õn cuèi dßng. ClrScr; Xo¸ s¹ch mμn h×nh b»ng mμu nÒn hiÖn t¹i, ®−a con ch¹y mμn h×nh vÒ vÞ trÝ (1,1) DelLine; Xo¸ dßng cã con ch¹y mμn h×nh, c¸c dßng d−íi dån lªn. InsLine; ChÌn thªm mét dßng tr¾ng t¹i vÞ trÝ con ch¹y. GotoXY(x,y: byte); §−a con ch¹y mμn h×nh vÒ vÞ trÝ (x,y) WhereX: byte; Hμm tr¶ l¹i to¹ ®é X cña con ch¹y mμn h×nh hiÖn t¹i WhereY: byte; Hμm tr¶ l¹i to¹ ®é Y cña con ch¹y mμn h×nh hiÖn t¹i VÞ trÝ to¹ ®é trªn mμn h×nh nãi ®Õn trong c¸c hμm, thñ tôc trªn ®Òu lμ gi¸ trÞ t−¬ng ®èi trong cöa sæ mμn h×nh hiÖn t¹i, thiÕt lËp bíi thñ tôc Window tr×nh bμy d−íi ®©y. Window(x1,y1,x2,y2: byte) ; ThiÕt lËp mét cöa sæ hiÓn thÞ trªn mμn h×nh v¨n b¶n. To¹ ®é cña gãc trªn-tr¸i lμ (x1,y1), cña gãc d−íi-ph¶i lμ (x2,y2). C¸c to¹ ®é nμy ®−îc NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 152
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2