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.
274 trang |
Chia sẻ: diunt88 | Lượt xem: 2903 | Lượt tải: 1
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