Giáo trình Lập trình nâng cao
Chương trình con trong Pascal ñược hiểu là một chương trình nằm trong lòng một
chương trình khác. Chương trình con gồm hai loại: Thủ tục (Procedure) và hàm
(Function). Các chương trình con ñược dùng rộng rãi khi xây dựng các chương trình lớn
nhằm làm cho chương trình dễ theo dõi, dễ sửa chữa. Một ñặc ñiểm nổi bật của chương trình
con là nó có tính ñệ quy nhờ thế mà nhiều bài toán sẽ ñược giải quyết dễ dàng.
Khi một chương trình con ñược gọi thì các biến ñược khai báo trong chương trình con
(ta gọi là biến cục bộ) sẽ ñược cấp phát bộ nhớ. Kết thúc chương trình con, các biến cục bộ
ñược giải phóng, ñiều này sẽ ñược lặp lại mỗi khi chương trình con ñược gọi và nó ñồng
nghĩa với việc thời gian xử lý bài toán sẽ tăng lên.
Bản thân tên gọi của hai loại chương trình con ñã nói lên phần nào sự khác nhau giữa
chúng. Function (Hàm) là một loại chương trình con cho kết quả là một giá trị vô hướng. Khi
gọi tên Function với các tham số hợp lệ ta sẽ nhận ñược các giá trị, bởi vậy tên hàm có thể
ñưa vào các biểu thức tính toán như là các toán hạng. Procedure là loại chương trình con khi
thực hiện không cho ra kết quả là một giá trị, mỗi Procedure nhằm thực hiện một nhóm công
việc nào ñó của chương trình mẹ, vì vậy tên của Procedure không thể ñưa vào các biểu thức
tính toán. Bằng cách xây dựng các chương trình con người lập trình có thể phân mảnh chương
trình cho nhiều người cùng làm dưới sự chỉ ñạo thống nhất của người chủ trì. Trong Turbo
Pascal ñã có sẵn một số chương trình con, ví dụ: sin(x), sqrt(x). là các Function, còn read(),
write(), gotoxy (x1,x2). là các Procedure.
Trong một chương trình các chương trình con ñược bố trí ngay sau phần khai báo
biến. Cấu trúc tổng quát một chương trình Pascal như sau:
PROGRAM tên_chương_trình;
USES tên các UNIT; (*khai báo các ñơn vị chương trình cần thiết*)
LABEL (*khai báo nhãn*).
CONST (*Khai báo hằng*)
TYPE (*ñịnh nghĩa kiểu dữ liệu mới*)
VAR (*khai báo biến*)
PROCEDURE Tên_CTC1 (danh sách tham số hình thức);
Begin
. (*thân thủ tục thứ nhất*).
End;
PROCEDURE Tên_CTC2 (danh sách tham số hình thức);
Begin
. (*thân thủ tục thứ hai*)
End;
FUNCTION Tên_HAM1(danh sách tham số hình thức):kiểu hàm;
Begin
. (*thân hàm thứ nhất*)
End;
.
BEGIN (*bắt ñầu chương trình mẹ*)
.
END.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình nâng cao
l i too large này, hãy c t các ño n và ñư a vào m t hay nhi u th t c h ơn. 126 Files must be var Ki u file không th ñư a làm tham tr trong ch ươ ng trình con, ki u parameters File ch có th là tham bi n ngh ĩa là ph i khai báo v i t khoá Var . 127 Too many Không ñ ch ñ khai báo ký hi u ñi u ki n thêm n a. C g ng conditional b ñi vài ký hi u ho c rút ng n vài tên t ư ng tr ưng. symbols 129 ENDIF directive L i khi biên d ch các c u trúc có ñi u ki n. S l ư ng c a các t missing khoá m {$Ifxxx} và các t khoá ñóng {$ENDIF}trong file ngu n ph i b ng nhau. 130 Error in initial Các ký hi u ñi u ki n ban ñ u ch ñ nh trong conditional Option/Compiler/Condition Defines (trong môi tr ư ng khép kín defines IDE ) ho c trong d ch h ư ng biên d ch /D (v i trình biên d ch dòng) không h p l . 131 Header does not Các khai báo ph n ñ u (ch ươ ng trình) không phù h p v i khai match previous báo th t c ho c hàm ch ra trong ph n interface ho c trong definition ph n khai báo forward 133 Cannot evaluate Không th ư c l ư ng ( ñ nh giá) bi u th c. Có th ñây là m t this expression phép tính không h p l . Ví d b n ñang c g ng d ùng hàm Sin trong khai báo const. 134 Expression Bi u th c k t thúc không h p l . Ví d cu i bi u th c ph i l à incorrectly toán h ng ch không ph i là toán t . terminated 137 Structured C u trúc bi n không cho phép th c hi n các thao tác mà ch ươ ng variables are not trình ñòi h i. Ví d , b n ñang c g ng làm phép nhân 2 b n ghi. allowed here Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 199 138 Cannot evaluate Th ư vi n TURBO.TPL ph i bao g m System Unit ñ ch ươ ng without system trình g r i có th tính toán các bi u th c. unit 140 Invalid floating – M t thao tác trên hai gía tr th c ñã t o nên s tràn ho c m t point operation phép chia cho s 0. 141 Cannot compile Chươ ng trình dùng overlays ph i ghi k t qu d ch trên ñĩa ch overlays to không th g i vào b nh memory 142 Pointer or Hàm chu n Assigned yêu c u ñ i s là m t bi n con tr ho c procedural ki u th t c. variable expected 143 Invalid L i dùng tên m t th t c trong m t bi u th c tính toán. procedure or ( N u b n ñang chu n b gán m t th t c ho c hàm cho m t bi n function th t c, nó ph i ñư c d ch trong tr ng thái {$F+}và không th reference khai báo v i inline hay interrupt.) 144 Cannot overlay B n ñang c g ng overlay m t unit mà nó không ñư c d ch v i this unit tr ng thái {$0+}. 146 File access denied Không th m file hay t o ra file m i. L i th ư ng x y ra khi tr ình biên d ch ñang c g ng vi t vào m t file ch ñ c (Read only file). 147 Object type Bi n (tên) không th hi n m t ki u object. expected 148 Local object Ki u object ch có th ñ nh ngh ĩa t m xa nh t c a m t ch ươ ng types are not trình hay unit. ð nh ngh ĩa ki u object trong th t c hay h àm là allowed không ñư c phép. 149 VIRTUAL T dành riêng virtual b thi u. expected 150 Method identifier Bi n (tên) không th hi n m t hành vi. expected 151 Virtual Hành vi constructor ph i là t ĩnh. constructors are allowed 152 Constructor Bi n (tên) không th hi n m t constructor. identifier expected 153 Destructor Bi n (tên) không th hi n m t destructor. identifier expedted 154 Fail only allowed Th t c chu n Fail ch ñư c dùng bên trong m t constructor. within constructors 155 Invalid Mã assembler không ch p nh n liên k t các toán h ng. Các combination of nguyên nhân có th : opcode and * Quá ít hay quá nhi u các toán h ng ñ i v i l nh assembler n ày, operands ví d INC AX, BX hay Mov AX . * S l ư ng các toán h ng là phù h p, nh ưng ki u ho c th t không phù h p v i mã; ví d DEC1, MOV AX, CL ho c MOV 1, AX . Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 200 161 Code generation Ph n l nh phía tr ư c ch a m t l nh LOOPNE, LOOPE, LOOP, error ho c JCXZ song các l nh nh y này không th v i t i nhãn ñích. 162 ASM expected B n ñang c g ng biên d ch m t hàm ho c th t c assembler có s n bên trong và chúng ch a m t câu l nh begin...end thay vì dùng asm...end . Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 201 2. L i liên quan ñ n h ñi u hành DOS (Dos errors) 1 Invalid function number S hi u c a m t hàm (DOS) không t n t i 2 Không tìm th y file (có th là do các th t c Reset , Append, File Not Found Rename, Rewrite, Erase báo l i khi tên File không h p l ho c tên gán cho bi n file không xác ñ nh m t file t n t i.) 3 Path not found ðư ng d n không tìm th y, l i có th là do: Các th t c Reset, Append, Rename, Rewrite, ChDir, Mkdir RmDir ho c Erase g p tên gán cho tên bi n file không h p l ho c ñư ng d n t i m t th ư m c con không t n t i. 4 Too many open Do các th t c Reset, Rewrite ho c Append báo l i n u files ch ươ ng trình có quá nhi u file ñư c m . DOS không cho phép m quá 15 file cho m t ng d ng. N u g p l i này khi m ít h ơn 15 file thì có th là trong file CONGIG.SYS không ch a khai báo FILES=n ho c giá tr n qúa nh hãy t ăng n lên 5 File access denied T ch i truy c p fille, l i có th x y ra khi các th t c: * làm vi c v i file nh ưng l i b ch ñ nh t i tên th ư m c * làm vi c v i các file ñ gán thu c tính ch ñ c. * Làm vi c v i các file ch ưa ñư c m 6 Invalid file handle L i này ñư c báo l i n u m t th file không h p l ñư c chuy n t i m t l i g i h th ng DOS, nguyên nhân có th là do file b l i. 12 Invalid file access Th t c Reset ho c Append g p ph i m t file có ki u ho c code không có ki u mà giá tr FileMode không h p l . 15 Invalid drive Do các th t c GetDir ho c ChDir báo l i n u mã s ñĩa number không h p l . 16 Cannot remove Không th chuy n th ư m c ñang làm vi c (b i th t c current directory RmDir) 17 Cannot rename Không ñ i ñư c tên vì hai tên không có cùng ñư ng d n across drives 18 No more files Do bi n DosError trong unit Dos và WinDos báo l i khi m t l i g i t i FindFirst ho c FindNext không tìm th y file thích h p v i tên file và t p các thu c tính ch ra. 3. L i vào ra (Input/Output error) L i vào ra th ư ng xu t hi n khi biên d ch ch ươ ng trình, n u ñ nh h ư ng d ch là {$I+} (ng m ñ nh) thì ch ươ ng trình s d ng ngay khi g p l i. N u ñ u ch ươ ng trình chúng ta quy ñ nh {$I-} thì ch ươ ng trình ti p t c thi hành, và l i ñư c thông báo b i hàm IOResult. D ư i ñây là nh ng l i hay g p: Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 202 100 L i ñ c d li u, th ư ng là do th t c Read thông báo khi Disk read error trên m t file có ki u n u b n ñang c g ng ñ c quá v trí cu i file. 101 Disk write error L i khi th c hiên các th t c Close, Write, Writeln ho c Flush khi ñĩa ñã ñ y 102 File not assigned File không th t o ra, l i này xu t hi n khi th c hi n các th t c Reset, Rewrite, Append, Rename và Erase nh ưng bi n file ch ưa ñư c gán tên qua th t c Assign. 103 File not open File ch ưa ñư c m khi th c hi n các th t c Close, Read, Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead ho c BlockWrite . 104 File not open for File (v ăn b n) ch ưa ñư c m ñ ñ c khi th c hi n các th input t c Read, Readln, Eof, Eoln, SeekEof ho c SeekEoln . 105 File not open for File ch ưa ñư c m ñ ghi khi th c hi n các th t c Write output ho c Writeln . 106 Invalid numeric Tr s ñ c t file v ăn b n không ñúng v i d ng s h p l format Khi th c hi n các th t c Read ho c Readln . 4. Các l i liên quan ñ n ph n c ng Các l i liên quan ñ n ph n c ng có th tham kh o thêm trong các tài li u v h ñi u hành MS-DOS 150 Disk is write ðĩa (m m) b khoá ch ng ghi. Hãy b các l y ch ng ghi protected trên ñĩa ra. 151 Unknown Unit Tên ñơ n v ch ươ ng trình ch ưa ñư c bi t ñ n 152 Drive not ready ñĩa không s n sàng. Có th do ch ưa ñư a ñĩa vào, có th m t ngu n ñi n nuôi. 153 Unknown command Không có l nh này. Ch c b gõ nh m m t vài ký t . 154 CRC error in data L i vùng d li u 155 Bad drive request structure length 156 Disk seek error L i khi truy nh p ñĩa 157 Unknown media Ki u thi t b không rõ type 158 Sector not found Cung t không tìm th y. Có l b h ng do nhi u nguyên nhân: m c, x ư c ho c b b i b n... 159 Printer out of paper Máy in không có gi y 160 Device write fault Vi c ghi vào thi t b không th c hi n ñư c 161 Device read fault Vi c ñ c b l i 162 Hardware failure Ph n c ng b h ng Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 203 5. L i trình biên d ch (run-time error) Khi trình biên d ch g p các l i này ch ươ ng trình s b d ng ngay l p t c. 200 Division by zero Ch ươ ng trình c g ng chia m t s cho 0 trong phép toán mod ho c div . 201 Range check error N u ñ nh h ư ng biên d ch là {$R+} thì l i s ñư c thông báo khi m t trong các tình hu ng sau x y ra: * Ch s c a m t m ng v ư t ra ngoài ph m vi ñã khai báo * Gán m t giá tr v ư t ra ngoài ph m vi cho phép c a m t bi n. * Giá tr gán cho tham s c a m t hàm hay m t bi n v ư t ra ngoài ph m vi cho phép 202 Stack overflow Stack b tràn. N u ñ nh h ư ng biên d ch là {$S+} thì l i s error ñư c thông báo khi không có ñ ch tr ng trên stack ñ b trí b nh c c b c a các ch ươ ng trình con. Có th thay ñ i Stack b ng cách dùng ñ nh h ư ng biên d ch $M. * L i này c ũng có th do vòng l p vô t n gây ra, ho c do m t th t c vi t trong ngôn ng assembler không duy trì tình tr ng stack. 203 Heap overflow error L i này do các th t c New ho c GetMem báo l i n u không còn ñ ch tr ng trong heap ñ c p phát m t vùng nh theo yêu c u. 204 Invalid pointer L i này do các th t c Dispose ho c FreeMem gây ra n u operation nh ư con tr là Nil ho c tr t i m t v trí n m ngoài heap. 205 Floating point Phép tính v i d u ch m ñ ng t o ra k t qu là m t s quá overflow l n . 207 Invalid floating M t tham s th c trong các hàm Trunc ho c Round không point operation th chuy n ñ i thành m t s nguyên trong ph m vi s nguyên dài LongInt (-2147483648 - 2147483647). * Tham s c a hàm Sqrt mang giá tr âm. * Tham s c a hàm Ln là zero ho c âm. * S tràn 8087 ñã x y ra. (xem trong ch ươ ng 14. “Using the 80x87” trong cu n Language gude.) 208 Overlay manager Trình qu n lý overlay ch ưa ñư c cài ñ t. L i có th là do not installed không g i OverInit ho c l i g i OverInit không ch y. 209 Overlay file read L i x y ra khi trình qu n lý overlay c g ng ñ c m t error overlay t file overlay. Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 204 M c l c L i m ñ u 2 Ch ươ ng 1: Ch ươ ng trình con - Th t c và hàm 2 1. Khái ni m v ch ươ ng trình con 4 2. Tham s trong ch ươ ng trình con 5 3. Truy n tham s cho ch ươ ng trình con 8 4. Bi n toàn c c và bi n ñ a ph ươ ng 9 5. Cách th c b trí b nh 11 6. Tính ñ quy c a ch ươ ng trình con 12 7. L i g i ch ươ ng trình con 13 8. Khai báo tr ư c b ng Forward 16 Bài t p ng d ng ch ươ ng 1 19 Ch ươ ng 2: Các ki u d li u có c u trúc 20 1. D li u ki u b n ghi 21 2. D li u ki u t p 37 3. D li u ki u t p h p 58 Bài t p ng d ng ch ươ ng 2 67 Ch ươ ng 3: ðơ n v ch ươ ng trình và th ư vi n chu n 69 1. Khái ni m ñơ n v ch ươ ng trình 70 2. Th ư vi n chu n 70 3. Các Unit khác 71 4. Xây d ng các Unit 72 5. Tham chi u ñ n các Unit 78 6. Trình ti n ích Tpumover 81 8. M t s Unit chu n 83 Bài t p ng d ng ch ươ ng 3 94 Ch ươ ng 4: Con tr và c u trúc ñ ng 95 1. Khái ni m 96 2. Ki u d li u con tr - Bi n con tr 96 3. Các th t c và hàm tác ñ ng trên con tr 92 4. Truy nh p d li u 94 5. M ng con tr và con tr m ng 96 6. C p phát ñ ng 99 7. Danh sách liên k t và hàng ñ i 105 8. Cây nh phân 117 Bài t p ng d ng ch ươ ng 4 Ch ươ ng 5: Gi i thu t ñ quy 126 1. Khái ni m ñ quy 126 2. Thi t k gi i thu t ñ quy - Kh ñ quy 130 3. Hi u l c bài toán ñ quy 130 Bài t p ng d ng ch ươ ng 5 Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 205 Ch ươ ng 6: ð ho 132 1. Khái ni m chung 132 2. M t s th t c c ơ b n ñ v hình 134 3. Thi t l p m u ñ ho 134 4. Vi t ch trong ch ñ ñ ho 135 5. Các ví d 137 6. X lý nh Bitmap 144 7. ð th hàm s 149 Bài t p ng d ng ch ươ ng 6 152 Ph l c 1 B ng mã ASCII 161 Ph l c 2 Tóm t t các th t c và hàm c a Turbo Pascal 7.0 166 Ph l c 3 ð nh h ư ng biên d ch 191 Ph l c 4 Thông báo l i 180 1. L i biên d ch 180 2. L i liên quan ñ n h ñi u hành 188 3. L i vào ra 188 4. Các l i liên quan ñ n ph n c ng 189 5. L i trình biên d ch 190 M c l c 205 Tài li u tham kh o 207 Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 206 Tài li u tham kh o 1. D ươ ng Xuân Thành, Tin h c ñ i cươ ng, Nxb Th ng kê 2003 2. D ươ ng Xuân Thành, Giáo trình ngôn ng l p trình Pascal, Nxb Th ng kê 2004 3. ð xuân Lôi, C u trúc d li u và gi i thu t, Nxb Khoa h c và K thu t - 1998 4. Nguy n Tô Thành, L p trình nâng cao trên ngôn ng Pascal, Nxb ð i h c qu c gia 2001 5. Larry Nyhoff - Sanford Leeostima, L p trình nâng cao b ng Pascal v i các c u trúc d li u, Nxb ðà n ng 1998 6. Quách Tu n Ng c, Bài t p ngôn ng l p trình Pascal, Nxb Th ng kê 2001 Trư ng ð i h c Nông nghi p 1 - Giáo trình L p trình nâng cao ..............................................................- 207
File đính kèm:
- giao_trinh_lap_trinh_nang_cao.pdf