Lập trình bằng Turbo Pascal-Nguyền Đình Hóa

Là một ngôn ngữ lập trình có cú pháp chặt chẽ, đơn giản và dễ hiểu, Pascal được giảng dạy cho sinh viên tin học ngay năm học đầu tiên. Nó là ngôn ngữ cơ sở để giới thiệu cho sinh viên làm quen với kĩ thuật xây dựng chương trình. Ngoài ra, nó còn được dùng để trình bày nhiều chuyên đề khác nữa của tin học trong những năm học tiếp theo. Nắm vững các thành phần cơ bản, hiểu rõ các yếu tố cú pháp của ngôn ngữ lập trình Pascal, là rất quan trọng. Những vận dụng nó để xây dựng được các chương trình mới là điều quan trọng nhất. Qua kinh nghiệm nhiều lần giảng dạy ngôn ngữ Pascal cho các đối tượng sinh viên khác nhau, có thể nhận thấy rằng sinh viên lúng túng nhất ở khâu vận dụng xây dựng chương trình cụ thể, không biết làm thế nào, bắt đầu từ đâu. Giáo trình này đặt trọng tâm vào trình bày kĩ thuật xây dựng chương trình song song với việc giới thiệu ngôn ngữ lập trình Pascal. Các ví dụ ứng dụng tổng hợp ở cuối chương được chọn lọc để minh hoạ những vấn đề lí thuyết trình bày trong chương đó. Những ví dụ ứng dụng này có liên quan chặt chẽ với nhau, được phát triển hoμn thiện dần một cách có hệ thống để sinh viên hiểu rõ các bước xây dựng chương trình, từ thô sơ, đơn giản đến hoμn thiện, hiệu qủa hơn. Vì đây là hệ thống lại các bμi giảng lần đầu tiên nên chắc chắn còn nhiều thiếu sót. Rất mong sự đóng góp ý kiến của các thầy, cô đồng nghiệp cũng như của các bạn sinh viên là đối tượng phục vụ của giáo trình này.

pdf274 trang | Chia sẻ: diunt88 | Lượt xem: 2824 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Lập trình bằng Turbo Pascal-Nguyền Đình Hóa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LËp tr×nh b»ng Turbo Pascal L¬I NOI ®ÇU Lμ mét ng«n ng÷ lËp tr×nh cã có ph¸p chÆt chÏ, ®¬n gi¶n vμ dÔ hiÓu, Pascal ®−îc gi¶ng d¹y cho sinh viªn tin häc ngay n¨m häc ®Çu tiªn. Nã lμ ng«n ng÷ c¬ së ®Ó giíi thiÖu cho sinh viªn lμm quen víi kÜ thuËt x©y dùng ch−¬ng tr×nh. Ngoμi ra, nã cßn ®−îc dïng ®Ó tr×nh bμy nhiÒu chuyªn ®Ò kh¸c n÷a cña tin häc trong nh÷ng n¨m häc tiÕp theo. N¾m v÷ng c¸c thμnh phÇn c¬ b¶n, hiÓu râ c¸c yÕu tè có ph¸p cña ng«n ng÷ lËp tr×nh Pascal, lμ rÊt quan träng. Nh−ng vËn dông nã ®Ó x©y dùng ®−îc c¸c ch−¬ng tr×nh míi lμ ®iÒu quan träng nhÊt. Qua kinh nghiÖm nhiÒu lÇn gi¶ng d¹y ng«n ng÷ Pascal cho c¸c ®èi t−îng sinh viªn kh¸c nhau, cã thÓ nhËn thÊy r»ng sinh viªn lóng tóng nhÊt ë kh©u vËn dông x©y dùng ch−¬ng tr×nh cô thÓ, kh«ng biÕt lμm thÕ nμo, b¾t ®Çu tõ ®©u. Gi¸o tr×nh nμy ®Æt träng t©m vμo tr×nh bμy kÜ thuËt x©y dùng ch−¬ng tr×nh song song víi viÖc giíi thiÖu ng«n ng÷ lËp tr×nh Pascal. C¸c vÝ dô øng dông tæng hîp ë cuèi ch−¬ng ®−îc chän läc ®Ó minh ho¹ nh÷ng vÊn ®Ò lÝ thuyÕt tr×nh bμy trong ch−¬ng ®ã. Nh÷ng vÝ dô øng dông nμy cã liªn quan chÆt chÏ víi nhau, ®−îc ph¸t triÓn hoμn thiÖn dÇn mét c¸ch cã hÖ thèng ®Ó sinh viªn hiÓu râ c¸c b−íc x©y dùng ch−¬ng tr×nh, tõ th« s¬, ®¬n gi¶n ®Õn hoμn thiÖn, hiÖu qña h¬n. V× ®©y lμ hÖ thèng l¹i c¸c bμi gi¶ng lÇn ®Çu tiªn nªn ch¾c ch¾n cßn nhiÒu thiÕu sãt. RÊt mong sù ®ãng gãp ý kiÕn cña c¸c thÇy, c« ®ång nghiÖp còng nh− cña c¸c b¹n sinh viªn lμ ®èi t−îng phôc vô cña gi¸o tr×nh nμy. T¸c gi¶ NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi i LËp tr×nh b»ng Turbo Pascal N¤I DUNG L¬I NOI ®ÇU i Ch−¬ng 1 - Giíi thiÖu chung 1 1. C¸c kh¸i niÖm c¬ b¶n 1 1.1 Më ®Çu. 1 1.2 C¸c kÝ tù. 2 1.3 C¸c tõ kho¸. 3 1.4 Tªn - Identifier 3 1.5 Tªn chuÈn 4 1.6 C©u lÖnh 4 2. Ph¸t triÓn mét ch−¬ng tr×nh Pascal 5 2.1 CÊu tróc mét ch−¬ng tr×nh Turbo Pascal. 5 2.2 C¸c b−íc x©y dùng ch−¬ng tr×nh. 6 3. M«i tr−êng ph¸t triÓn tÝch hîp Turbo Pascal. 7 3.1 C¸c c«ng cô ph¸t triÓn. 7 3.2 C¸c chøc n¨ng vμ c¸ch dïng. 8 3.3 C¸c b−íc x©y dùng mét ch−¬ng tr×nh trong m«i tr−êng Turbo Pascal 11 C©u hái vμ bμI tËp 12 Ch−¬ng 2 - C¸c kiÓu d÷ liÖu chuÈn, c¸c hμm chuÈn 14 1. C¸c kiÓu d÷ liÖu chuÈn. 14 1.1 Kh¸i niÖm kiÓu d÷ liÖu 14 1.2 Ph©n lo¹i c¸c kiÓu d÷ liÖu trong TurboPascal. 14 1.3 C¸c kiÓu ®¬n gi¶n chuÈn 16 2. C¸c hμm chuÈn. 18 2.1 B¶ng c¸c hμm chuÈn. 19 2.2 Sö dông. 20 C©u hái vμ bμi tËp 20 Ch−¬ng 3 - C¸c khai b¸o vμ c©u lÖnh ®¬n gi¶n 21 1. Khai b¸o h»ng vμ biÕn 21 1.1 Khai b¸o h»ng 21 1.2 Khai b¸o biÕn 22 2. BiÓu thøc trong ng«n ng÷ Pascal. 23 2.1 Biªñ thøc lμ g×. 23 2.2 B¶ng thø tù −u tiªn 24 2.3 ViÕt ®óng biÓu thøc 25 3. C¸c c©u lÖnh ®¬n gi¶n 25 3.1 LÖnh g¸n 26 3.2 LÖnh in ra mμn h×nh kh«ng kÌm ®Þnh d¹ng. 26 3.3 Quy c¸ch mÆc ®Þnh in ra c¸c kiÓu d÷ liÖu. 27 3.4 LÖnh in ra cã kÌm quy c¸ch 28 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi ii LËp tr×nh b»ng Turbo Pascal 3.5 LÖnh in ra m¸y in 29 3.6 LÖnh nhËp d÷ liÖu tõ bμn phÝm. 30 4. Mét sè hμm, thñ tôc tr×nh bμy mμn h×nh. 32 C©u hái vμ bμi tËp 32 Ch−¬ng 4- C¸c cÊu tróc ®iÒu khiÓn 35 1. C©u lÖnh ghÐp 35 2. C©u lÖnh IF. 35 2.1 Có ph¸p vμ c«ng dông. 36 2.2 C¸c vÝ dô minh ho¹. 37 2.3 If lång nhau hay d·y if 38 2.4 AND hay IF lång nhau 39 3. C©u lÖnh CASE. 40 3.1 Có ph¸p vμ t¸c dông. 40 3.2 VÝ dô minh ho¹ 41 3.3 Chó ý 42 3.4 C¸c lçi th−êng gÆp. 42 4. C©u lÖnh FOR. 43 4.1 Có ph¸p vμ t¸c dông 43 4.2 VÝ dô minh ho¹ 44 5. C©u lÖnh Repeat. 45 5.1 Có ph¸p vμ t¸c dông 45 5.2 VÝ dô minh ho¹ 46 6. C©u lÖnh While. 48 6.1 Có ph¸p vμ c«ng dông. 48 6.2 VÝ dô minh ho¹ 49 7. X©y dùng cÊu tróc lÆp. 50 7.1 §iÒu khiÓn vßng lÆp b»ng gi¸ trÞ canh chõng. 50 7.2 §iÒu khiÓn vßng lÆp b»ng cê b¸o 51 8. C¸c lÖnh kÕt thóc sím vßng lÆp hoÆc ch−¬ng tr×nh. 51 8.1 LÖnh nh¶y kh«ng ®iÒu kiÖn - goto 51 8.2 LÖnh chÊm døt sím vßng lÆp. 52 8.3 LÖnh tho¸t khái ch−¬ng tr×nh con. 53 8.4 LÖnh dõng ch−¬ng tr×nh bÊt th−êng. 53 C©u hái vμ bμi tËp 53 Ch−¬ng 5 - §Þnh nghÜa C¸c kiÓu d÷ liÖu ®¬n gi¶n 56 1. Khai b¸o kiÓu d÷ liÖu míi. 56 1.1 Có ph¸p chung. 56 1.2 VÝ dô 56 2. KiÓu liÖt kª. 57 2.1 §Þnh nghÜa vμ có ph¸p 57 2.2 TÝnh chÊt vμ c¸c phÐp to¸n. 58 2.3 VÝ dô minh ho¹ 60 3. KiÓu ®o¹n con. 60 3.1 §Þnh nghÜa vμ có ph¸p. 60 3.2 VÝ dô minh ho¹. 62 4. KiÓu tËp hîp. 62 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi iii LËp tr×nh b»ng Turbo Pascal 4.1 §Þnh nghÜa vμ có ph¸p. 62 4.2 C¸c phÐp to¸n trªn tËp hîp 63 4.3 VÝ dô minh ho¹ 64 Ch−¬ng 6 - KiÓu m¶ng 66 1. M¶ng mét chiÒu 66 1.1 §Þnh nghÜa vμ có ph¸p. 66 1.2 C¸c tÝnh chÊt. 67 1.3 T¹i sao nªn khai b¸o kiÓu. 68 1.4 VÝ dô minh ho¹. 68 2. M¶ng nhiÒu chiÒu. 69 2.1 §Þnh nghÜa có ph¸p vμ cÊu tróc 69 2.2 VÝ dô minh ho¹. 70 3. T×m kiÕm trªn m¶ng. 71 3.1 T×m kiÕm tuÇn tù. 71 3.2 T×m kiÕm nhÞ ph©n. 72 4. Mét vμi c¸ch s¾p xÕp m¶ng. 73 4.1 Ph−¬ng ph¸p ®æi chç trùc tiÕp. 73 4.2 Ph−¬ng ph¸p chÌn trùc tiÕp. 75 4.3 Ph−¬ng ph¸p chän trùc tiÕp. 77 C©u hái vμ bμi tËp 79 Ch−¬ng 7 - KiÓu x©u kÝ tù 81 1. Có ph¸p vμ cÊu tróc. 81 1.1 Có ph¸p. 81 1.2 CÊu tróc kiÓu x©u kÝ tù - Truy cËp trùc tiÕp tõng thμnh phÇn. 82 2. Thao t¸c víi x©u kÝ tù 84 2.1 C¸c phÐp to¸n. 84 2.2 C¸c thñ tôc vμ hμm trªn x©u kÝ tù. 84 C©u hái vμ bμi tËp 86 Ch−¬ng 8 - KiÓu b¶n ghi 88 1. §Þnh nghÜa vμ khai b¸o 88 1.1 §Þnh nghÜa. 88 1.2 Khai b¸o kiÓu b¶n ghi. 88 2. Sö dông. 90 2.1 Truy cËp tõng thμnh phÇn. 90 2.2 C¸c phÐp to¸n víi toμn bé b¶n ghi. 90 2.3 §äc vμo, viÕt ra víi mét biÕn kiÓu b¶n ghi. 91 2.4 C©u lÖnh With. 92 3. B¶n ghi cã cÊu tróc thay ®æi 93 3.1 §Þnh nghÜa vμ có ph¸p 93 3.2 Sö dông b¶n ghi cã cÊu tróc thay ®æi. 94 Ch−¬ng 9 - KiÓu tÖp 98 1. C¸c kh¸i niÖm vμ ®Þnh nghÜa 98 1.1 Môc ®Ých sö dông tÖp. 98 1.2 TÖp ®Þnh kiÓu. 98 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi iv LËp tr×nh b»ng Turbo Pascal 1.3 TÖp truy cËp tuÇn tù. 99 2. ViÕt ra tÖp, ®äc vμo tõ tÖp 100 2.1 Më tÖp ®Ó viÕt ra. 100 2.2 ViÕt d÷ liÖu ra tÖp. 101 2.3 Më tÖp ®Ó ®äc vμo. 102 2.4 §äc d÷ liÖu vμo tõ tÖp. 102 2.5 TÖp truy cËp trùc tiÕp. 103 3. C¸c thao t¸c kh¸c 104 3.1 Mét sè hμm vμ thñ tôc víi tÖp. 104 3.2 BÉy lçi khi më tÖp. 105 4. TÖp v¨n b¶n. 107 4.1 §Þnh nghÜa vμ cÊu tróc. 107 4.2 ViÕt ra tÖp v¨n b¶n 108 4.3 §äc vμo tõ mét tÖp v¨n b¶n. 108 4.4 C¸c hμm, thñ tôc chuÈn kh¸c cho tÖp v¨n b¶n 109 4.5 C¸c thiÕt bÞ vμo ra chuÈn 111 5. TÖp kh«ng ®Þnh kiÓu. 112 5.1 §Þnh nghÜa vμ cÊu tróc. 112 5.2 C¸c hμm, thñ tôc kh¸c. 112 C©u hái vμ bμi tËp 114 Ch−¬ng 10 - Ch−¬ng tr×nh con 115 1. Ch−¬ng tr×nh con - Hμm vμ thñ tôc 115 1.1 T¹i sao cÇn sö dông ch−¬ng tr×nh con. 115 1.2 Khai b¸o ch−¬ng tr×nh con. 115 1.3 X©y dùng ch−¬ng tr×nh con 117 1.4 Lêi gäi ch−¬ng tr×nh con. 117 1.5 VÝ dô minh ho¹. 118 2. Hμm hay thñ tôc, tham biÕn hay tham trÞ. 120 2.1 Ph©n biÖt hμm víi thñ tôc. 120 2.2 Ph©n biÖt tham biÕn vμ tham trÞ. 121 2.3 Mét vμi l−u ý khi x©y dùng ch−¬ng tr×nh con 122 2.4 Khai b¸o tr−íc - Forward. 124 3. Ch−¬ng tr×nh con lång nhau. 125 3.1 BiÕn toμn côc, biÕn côc bé, tÇm t¸c dông 125 3.2 Minh ho¹ 126 C©u hái vμ bμi tËp 128 Ch−ong 11 - ThiÕt kÕ ch−¬ng tr×nh 129 1. Ph−¬ng ph¸p x©y dùng ch−¬ng tr×nh 129 1.1 Kh¸i niÖm C«ng nghÖ phÇn mÒm. 129 1.2 Chu k× ph¸t triÓn phÇn mÒm. 129 1.3 VÝ dô minh ho¹ 130 1.4 LËp tr×nh m« ®un - Modula programming 131 1.5 Thñ tôc ho¸ - Procedural abstraction 133 2. ThiÕt kÕ chi tiÕt dÇn tõng b−íc. 133 2.1 S¬ ®å cÊu tróc ch−¬ng tr×nh - structure chart 133 2.2 VÝ dô. 134 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi v LËp tr×nh b»ng Turbo Pascal 3. TÝnh ®Ö quy vμ thuËt gi¶i ®Ö quy. 138 3.1 TÝnh ®Ö quy 138 3.2 ThuËt gi¶i ®Ö quy. 139 3.3 ThiÕt kÕ gi¶i thuËt ®Ö quy. 140 4. Mét sè vÝ dô vÒ thuËt gi¶i ®Ö quy. 141 4.1 Bμi to¸n th¸p Hμ néi. 141 4.2 Bμi to¸n vÕt mùc. 142 4.3 T×m kiÕm nhÞ ph©n 144 4.4 S¾p xÕp kiÓu ph©n ®o¹n hay s¾p xÕp nhanh - Quick Sort. 145 5. Tù x©y dùng th− viÖn ch−¬ng tr×nh con - Units 147 5.1 Sö dông l¹i c¸c ch−¬ng tr×nh con 147 5.2 CÊu tróc cña mét unit. 147 5.3 Biªn dÞch vμ sö dông. 149 5.4 VÝ dô minh ho¹. 149 5.5 So s¸nh viÖc dïng Unit víi chÌn trùc tiÕp tÖp m· nguån 150 5.6 C¸c unit chuÈn cña Turbo Pascal 150 6. Giíi thiÖu Unit CRT. 151 6.1 C¸c biÕn 151 6.2 C¸c hμm, thñ tôc 152 6.3 Mμu s¾c vμ chÕ ®é mμn h×nh v¨n b¶n. 153 6.4 Xö lÝ gâ phÝm. 156 6.5 C¸c thñ tôc kh¸c 156 7. VÝ dô øng dông - Lμm b¶ng chän. 157 7.1 C¸c b−íc x©y dùng b¶ng chän. 157 7.2 Ph©n tÝch thiÕt kÕ chi tiÕt dÇn tõng b−íc. 158 7.3 Ch−¬ng tr×nh chi tiÕt. 162 7.4 ChuyÓn thμnh Unit b¶ng chän. 165 8. Mét ch−¬ng tr×nh øng dông. 167 8.1 Ph©n tÝch thiÕt kÕ 167 8.2 TriÓn khai chi tiÕt ch−¬ng tr×nh. 170 C©u hái vμ bμi tËp 174 Ch−¬ng 12 - Con trá vμ cÊu tróc d÷ liÖu ®éng 176 1. Con trá 176 1.1 BiÕn tÜnh vμ biÕn ®éng. 176 1.2 §Þnh nghÜa vμ khai b¸o. 177 1.3 C¸c phÐp to¸n ®èi víi con trá. 178 2. BiÕn ®éng. 179 2.1 CÊp ph¸t vïng nhí vμ truy cËp biÕn ®éng. 179 2.2 Gi¶i phãng biÕn ®éng, thu håi vïng nhí 180 3. Con trá kh«ng ®Þnh kiÓu - Pointer 180 3.1 §Þnh nghÜa 180 3.2 øng dông 181 4. Vïng ng¨n xÕp vμ vïng Heap. 182 4.1 Kh¸i niÖm 182 4.2 Gi¶i to¶ heap 183 4.3 VÝ dô minh ho¹ - m¶ng cì lín. 183 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi vi LËp tr×nh b»ng Turbo Pascal C©u hái vμ bμi tËp 184 Ch−¬ng 13 Danh s¸ch & danh s¸ch mãc nèi 187 1. Danh s¸ch b»ng m¶ng. 187 1.1 M« h×nh danh s¸ch. 187 1.2 Danh s¸ch biÓu diÔn b»ng cÊu tróc m¶ng. 188 1.3 C¸c phÐp to¸n ®èi víi danh s¸ch m¶ng. 188 1.4 C¸c −u, nh−îc ®iÓm. 189 1.5 VÝ dô minh ho¹ 190 2. Danh s¸ch kiÓu ng¨n xÕp - Stack. 193 2.1 §Þnh nghÝa danh s¸ch kiÓu ng¨n xÕp. 193 2.2 BiÓu diÔn danh s¸ch kiÓu ng¨n xÕp. 194 2.3 C¸c phÐp to¸n ®èi víi kiÓu ng¨n xÕp. 194 3. Danh s¸ch kiÓu hμng ®îi - Queue. 195 3.1 §Þnh nghÜa danh s¸ch kiÓu hμng ®îi. 195 3.2 BiÓu diÔn danh s¸ch kiÓu hμng ®îi b»ng m¶ng. 196 3.2 C¸c phÐp to¸n. 196 4. Danh s¸ch nèi ®¬n. 198 4.1 M« t¶. 198 4.2 CÊu tróc mãc nèi. 198 4.3 C¸c phÐp to¸n. 200 5. Danh s¸ch nèi kÐp 202 5.1 CÊu tróc danh s¸ch nèi kÐp. 202 5.2 C¸c phÐp to¸n víi danh s¸ch nèi kÐp. 203 6. VÝ dô øng dông cña danh s¸ch mãc nèi. 205 6.1 C¶i tiÕn ch−¬ng tr×nh qu¶n lÝ hå s¬. 205 6.2 Ph©n tÝch thiÕt kÕ. 205 6.3 TriÓn khai chi tiÕt. 207 C©u hái vμ bμi tËp 213 Ch−¬ng 14 - Då ho¹ 215 1. C¸c kh¸i niÖm c¬ b¶n 215 1.1 Hai chÕ ®é hiÓn thÞ mμn h×nh 215 1.2 Khëi t¹o vμ ®ãng chÕ ®é ®å ho¹ 216 1.3 Mét ch−¬ng tr×nh ®å ho¹ ®¬n gi¶n 218 1.4 Mμu s¾c, kiÓu nÐt vÏ, kiÓu t« nÒn. 218 2. C¸c thñ tôc ®å ho¹ th−êng dïng. 219 2.1 Di chuyÓn, vÏ mét ®iÓm, mét ®o¹n th¼ng. 219 2.2 C¸c thñ tôc vÏ h×nh. 220 2.3 Tû lÖ biÓu kiÕn. 221 2.4 ViÕt ch÷ ra mμn h×nh ®å ho¹ 222 3. C¸c thñ tôc vÒ m«i tr−êng ®å ho¹ 224 3.1 C¸c thñ tôc thiÕt lËp mμu. 224 3.2 C¸c thñ tôc vÒ mÉu t«, mÉu nÐt vÏ 225 3.3 ViewPort. 229 4. VÏ ®å thÞ mét hμm sè 230 4.1 Ph©n tÝch thiÕt kÕ. 231 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi vii LËp tr×nh b»ng Turbo Pascal 4.2 Ch−¬ng tr×nh chi tiÕt. 232 4.3 ChuyÓn thμnh ch−¬ng tr×nh con. 234 5. Lμm ho¹t h×nh. 235 5.1 Di chuyÓn h×nh vÏ trªn nÒn tr¬n 235 5.2 Di chuyÓn h×nh vÏ trªn nÒn h×nh ¶nh tÜnh. 236 5.3 Sö dông phÐp lËt trang mμn h×nh. 240 C©u hái vμ bμi tËp 242 Ch−¬ng 15 - Th©m nhËp hÖ thèng vμ HÖ ®iÒu hμnh DOS 244 1. Gäi thùc hiÖn c¸c chøc n¨ng ROM-BIOS vμ DOS. 244 1.1 C¸c thanh ghi cña 8086 vμ ®Þa chØ trong bé nhí 244 1.2 C¸c ng¾t - interrupt 245 1.3 Th©m nhËp trùc tiÕp qua thanh ghi vμ ng¾t 246 1.4 C¸c vÝ dô minh ho¹. 247 1.5 Sö dông c¸c hμm, thñ tôc cña unit DOS 250 2. §iÒu khiÓn chuét 251 2.1 To¹ ®é chuét 251 2.2 Ng¾t ®iÒu khiÓn chuét $33 252 2.3 VÝ dô minh ho¹. 253 2.4 Th− viÖn c¸c thñ tôc thao t¸c chuét. 255 2.5 øng dông vμo b¶ng chän. 256 3. Th©m nhËp trùc tiÕp vμo bé nhí vμ cæng 257 3.1 Th©m nhËp trùc tiÕp bé nhí. 257 3.2 Th©m nhËp cæng. 259 4. Ch−¬ng tr×nh th−êng tró 260 4.1 Kh¸i niÖm 260 4.2 C¸ch x©y dùng mét ch−¬ng tr×nh th−êng tró 261 4.3 VÝ dô minh ho¹. 261 C©u hái vμ bμi tËp 265 NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi viii LËp tr×nh b»ng Turbo Pascal Ch−¬ng 1 Giíi thiÖu chung Pascal lμ mét ng«n ng÷ lËp tr×nh cho m¸y tÝnh, do Niklaus Wirth, gi¶ng viªn tr−êng §¹i häc KÜ thuËt Zurich, Thuþ sÜ x©y dùng nªn vμo n¨m 1970 víi môc ®Ých ®Ó gi¶ng d¹y. Lμ ng«n ng÷ lËp tr×nh cÊu tróc, trong s¸ng, dÔ hiÓu, Pascal ®· v−ît ra khái nhμ tr−êng, ph¸t triÓn thμnh mét ng«n ng÷ m¹nh, cã thÓ dïng ®Ó ph¸t triÓn ch−¬ng tr×nh chuyªn nghiÖp. N. Wirth ®· ®−îc gi¶i Turing do c«ng lao s¸ng t¹o vμ phæ biÕn ng«n ng÷ Pascal. HiÖn nay ng«n ng÷ lËp tr×nh Pascal cã nhiÒu biÕn thÓ do c¸c c«ng ty kh¸c nhau bæ xung hoμn thiÖn thªm: TURBO PASCAL cña Borland, QUICK PASCAL cña Microsoft, ANSI PASCAL ... Nãi riªng Turbo Pascal còng ®· ®−îc c¶i tiÕn hoμn thiÖn qua nhiÒu phiªn b¶n, tõ b¶n 1.0 ban ®Çu cho ®Õn b¶n 5.5 n¨m 1989, b¶n 6.0 n¨m 1990, b¶n 7.0 n¨m 1992. 1. C¸c kh¸i niÖm c¬ b¶n 1.1 Më ®Çu. Pascal lμ mét ng«n ng÷ lËp tr×nh cÊp cao, nghÜa lμ gÇn víi ng«n ng÷ cña con ng−êi. Kh¸i niÖm cÊp cao, cÊp thÊp cña mét ng«n ng÷ lËp tr×nh m¸y tÝnh ®Ó nãi nã gÇn h¬n víi ng«n ng÷ con ng−êi hay víi ng«n ng÷ cña m¸y tÝnh chø kh«ng ph¶i ®Ó nãi vÒ kh¶ n¨ng. T−¬ng tù nh− ng«n ng÷ th«ng th−êng, Pascal còng sö dông c¸c kÝ tù ®Ó t¹o nªn c¸c tõ, dïng c¸c "tõ" vμ c¸c yÕu tè c¬ b¶n kh¸c ®Ó t¹o thμnh c¸c "c©u" cã ý nghÜa x¸c ®Þnh. C¸c "c©u" ®−îc phèi hîp thμnh mét "v¨n b¶n" hoμn chØnh gäi lμ v¨n b¶n ch−¬ng tr×nh nh»m ra lÖnh cho m¸y tÝnh thùc hiÖn mét sè c«ng viÖc xö lÝ th«ng tin nμo ®ã. §Ó minh ho¹ ta xÐt mét v¨n b¶n ch−¬ng tr×nh Pascal sau ®©y Program HinhTron; Var BanKinh,ChuVi,DienTich: real; NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 1 LËp tr×nh b»ng Turbo Pascal Begin Write(' Cho ban kinh = '); Read(BanKinh); If BanKinh > 0 then begin ChuVi:= 2* pi * BanKinh ; DienTich:= pi * BanKinh * BanKinh ; Write(' Chu vi la = ' , ChuVi ); Write(' Dien tich la = ' , DienTich); End Else Write(' Ban kinh am, khong hop le !'); End. Cã thÓ "dÞch" v¨n b¶n ch−¬ng tr×nh cho m¸y tÝnh trªn thμnh ng«n ng÷ th«ng th−êng nh− sau. Ch−¬ng tr×nh H×nh Trßn; C¸c biÕn: B¸n KÝnh, Chu Vi, DiÖn TÝch: lμ sè thùc; B¾t ®Çu ViÕt ra mμn h×nh: Cho B¸n KÝnh = §äc tõ bμn phÝm: B¸n KÝnh. NÕu B¸n KÝnh > 0 Th× B¾t ®Çu ChuVi = 2 x π x B¸n KÝnh. DiÖnTÝch = π x B¸n KÝnh x B¸n KÝnh. ViÕt ra: Chu vi lμ = gi¸ trÞ ChuVi (tÝnh ®−îc ë trªn). ViÕt ra: DiÖn tÝch lμ = gi¸ trÞ DiÖnTÝch (tÝnh ®−îc ë trªn). KÕt thóc. Tr¸i l¹i ViÕt: B¸n KÝnh ©m, Kh«ng hîp lÖ ! KÕt thóc. 1.2 C¸c kÝ tù. Turbo Pascal sö dông c¸c kÝ tù sau ®©y trong b¶ng m· ASCII: - C¸c ch÷ c¸i th−êng vμ hoa: a .. z, A .. Z. - 10 ch÷ sè: 0 .. 9. - DÊu nèi d−íi: _ - C¸c dÊu phÐp to¸n: + - * / = - Mét sè kÝ hiÖu ®Æc biÖt: . , ; ! ? : ' " ( ) { } [ ] % @ & # $ ^. ý nghÜa cña nh÷ng kÝ hiÖu nμy ®−îc quy ®Þnh riªng, kh¸c víi c¸ch dïng th«ng th−êng. NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 2 LËp tr×nh b»ng Turbo Pascal 1.3 C¸c tõ kho¸. Nh×n l¹i ch−¬ng tr×nh vμ b¶n "dÞch" trong vÝ dô trªn ta thÊy c¸c tõ Program, Var, Real, Begin, If, Then, Else, End lμ nh÷ng thμnh phÇn hÕt søc quan träng. Chóng phèi hîp víi nhau ®Ó t¹o nªn phÇn khung cña c¸c c©u lÖnh. §ã lμ c¸c tõ kho¸. C¸c tõ khãa lμ c¸c ®¬n vÞ tõ vùng c¬ së cña mét ng«n ng÷ lËp tr×nh nãi chung. Kh¸c víi ng«n ng÷ th«ng th−êng, mét tõ cã thÓ nhiÒu nghÜa, mét ý cã thÓ viÕt theo nhiÒu c¸ch, mçi tõ kho¸ trong mét ng«n ng÷ lËp tr×nh cã mét ý nghÜa x¸c ®Þnh chÝnh x¸c, nh÷ng c©u lÖnh ®−îc x©y dùng theo nh÷ng quy t¾c hÕt søc chÆt chÏ. D−íi d©y liÖt kª nh÷ng tõ kho¸ cña Turbo Pascal. Y nghÜa vμ c¸ch sö dông chóng ta sÏ lμm quen dÇn sau nμy. And Asm Array Begin Case Const Constructor Destructor Div Do Downto Else End File For Function Goto If Implementation In Inline Interface Label Mod Nil Not Object Of Or Packed Procedure Program Record Repeat Set Shl Shr String Then To Type Unit Until Uses Var While With Xor Víi c¸c tõ khãa, Pascal kh«ng ph©n biÖt ch÷ in hoa hay ch÷ th−êng. Trong v¨n b¶n ch−¬ng tr×nh Pascal ta cã thÓ tuú ý viÕt mét tõ khãa b»ng c¸c ch÷ c¸i d¹ng in th−êng hay in hoa hoÆc xen kÏ c¶ hai d¹ng. 1.4 Tªn - Identifier Nh×n l¹i ch−¬ng tr×nh trong vÝ dô ë trªn, ngoμi c¸c tõ kho¸ ta thÊy cßn cã c¸c thμnh phÇn kh¸c nh− BanKinh, ChuVi, DienTich. Chóng lμ tªn cña c¸c ®èi t−îng mμ ta xö lÝ trong ch−¬ng tr×nh. Quy ®Þnh ®Æt tªn trong Pascal nh− sau: - Tªn lμ x©u kÝ tù gåm ch÷ c¸i , ch÷ sè, dÊu nèi d−íi ( _ ). - Tªn kh«ng ®−îc chøa dÊu c¸ch; - Tªn kh«ng ®−îc b¾t ®Çu b»ng sè; - Tªn cã thÓ dμi tuú ý nh−ng chØ cã 63 kÝ tù ®Çu tiªn lμ cã ý nghÜa; - Tªn kh«ng ®−îc trïng víi tõ kho¸; Nªn ®Æt tªn ph¶n ¸nh ®óng néi dung cña ®èi t−îng, gîi nhí. Tr¸nh kiÓu ®Æt tªn kh«ng mang l¹i th«ng tin g× bæ Ých, vÝ dô: prog01, baitap02 ... NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 3 LËp tr×nh b»ng Turbo Pascal Gièng nh− ®èi víi c¸c tõ khãa, trong v¨n b¶n ch−¬ng tr×nh Pascal, c¸c tªn còng ®−îc viÕt b»ng c¸c ch÷ c¸i d¹ng in th−êng hay in hoa, kh«ng ph©n biÖt. BanKinh hay bankinh ®Òu chØ lμ mét tªn. Ta cã thÓ chän mét phong c¸ch viÕt thÝch hîp. §Ó t¸ch c¸c ©m tiÕt cho dÔ ®äc cã thÓ dïng dÊu nèi d−íi ( _ ) hoÆc viÕt hoa ch÷ c¸i ®Çu tiªn cña mçi ©m tiÕt, vÝ dô: giai_pt_bac_hai, dinh_thuc, HeSo, BanKinh , DienTich... Trong tμi liÖu nμy sÏ dïng c¸ch viÕt hoa ch÷ c¸i ®Çu cña mçi ©m tiÕt. Kh¸i niÖn tªn (identifier - ID) ë ®©y chÝnh x¸c vμ chÆt chÏ h¬n kh¸i niÖm tªn gäi th«ng th−êng (name). Tªn ph¶i ®¶m b¶o ®óng quy ®Þnh, kh«ng trïng lÆp, t−¬ng øng mét-mét gi÷a tªn vμ ®èi t−îng g¾n víi nã. 1.5 Tªn chuÈn Tªn chuÈn lμ tªn mμ Pascal ®· sö dông, cã mét ý nghÜa hoμn toμn x¸c ®Þnh trong m«i tr−êng Pascal. Trong vÝ dô trªn c¸c thμnh phÇn Read, Write lμ c¸c tªn chuÈn. §ã lμ tªn cña hai thñ tôc cã s½n trong Turbo Pascal. Tªn chuÈn kh¸c tõ kho¸ ë chç, cã thÓ dïng l¹i tªn nμy vμo viÖc kh¸c, ®Þnh nghÜa l¹i víi nghÜa míi kh¸c ®i, do ng−êi dïng quy ®Þnh. Tuy nhiªn kh«ng nªn lμm thÕ v× mäi thay ®æi kh¸c lÖ th−êng, ®Òu dÔ ®−a ®Õn nhÇm lÉn. C¸c tªn chuÈn bao gåm - C¸c kiÓu d÷ liÖu: boolean, char, integer, real, byte, text...; - C¸c h»ng kiÓu l« gic: false, true ; - C¸c hμm, thñ tôc chuÈn ®· lμm s½n: chr, odd, abs, sqr, sqrt, exp, ln .. arctan, cos, sin, .. eof, eoln, read, readln, write, writeln.. 1.6 C©u lÖnh Sö dông c¸c tõ kho¸ cña ng«n ng÷ Pascal, c¸c tªn ®èi t−îng, c¸c dÊu phÐp to¸n vμ c¸c kÝ hiÖu ®Æc biÖt kh¸c, ng−êi lËp tr×nh viÕt c¸c c©u lÖnh. C©u lÖnh lμ mét chØ thÞ cho m¸y tÝnh thùc hiÖn mét thao t¸c tÝnh to¸n, xö lÝ nμo ®ã. VÝ dô, DienTich:= pi * BanKinh * BanKinh ; lμ mét c©u lÖnh yªu cÇu m¸y tÝnh b×nh ph−¬ng b¸n kÝnh nh©n víi sè π råi g¸n cho diÖn tÝch h×nh trßn. Cã thÓ viÕt nhiÒu c©u lÖnh trªn mét dßng. Ph¶i dïng dÊu chÊm phÈy “ ; ” ®Ó ng¨n c¸ch hai c©u lÖnh dï lμ trªn cïng mét dßng hay trªn hai dßng kh¸c nhau. Mét v¨n b¶n ch−¬ng tr×nh lμ mét tËp hîp c¸c c©u lÖnh, ®iÒu khiÓn m¸y tÝnh hoμn thμnh mét c«ng viÖc nhÊt ®Þnh nμo ®ã. C¸c c©u lÖnh nμy ®−îc viÕt tu©n theo mét quy ®Þnh hÕt søc chÆt chÏ vμ chÝnh x¸c. Mçi ng«n ng÷ lËp tr×nh NguyÔn §×nh Ho¸, ViÖn CNTT - §HQG Hμ néi 4 LËp tr×nh b»ng Turbo Pascal 2. Ph¸t triÓn mét ch−¬ng tr×nh Pascal 2.1 CÊu tróc mét ch−¬ng tr×nh Turbo Pascal. §Ó cho dÔ hiÓu tõ ®©y ta quy −íc khi tr×nh bμy c¸c thμnh phÇn có ph¸p cña Pascal ta sÏ dïng c¸ch nhÊn m¹nh b»ng ch÷ in nghiªng ®Ó chØ nh÷ng phÇn mμ ng−êi lËp tr×nh cÇn ®iÒn vμo tuú theo tõng tr−êng hîp cô thÓ. Nh÷ng tõ kho¸, tªn chuÈn... cña ng«n ng÷ Pascal lμ phÇn khung ph¶i gi÷ nguyªn kh«ng ®−îc thay ®æi sÏ ®−îc thÓ hiÖn b»ng kiÓu ch÷ ®øng ®Ëm h¬n. 2.1.1 C¸c thμnh phÇn VÒ cÊu tróc, mét ch−¬ng tr×nh Pascal gåm 3