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.

Giáo trình Lập trình nâng cao trang 1

Trang 1

Giáo trình Lập trình nâng cao trang 2

Trang 2

Giáo trình Lập trình nâng cao trang 3

Trang 3

Giáo trình Lập trình nâng cao trang 4

Trang 4

Giáo trình Lập trình nâng cao trang 5

Trang 5

Giáo trình Lập trình nâng cao trang 6

Trang 6

Giáo trình Lập trình nâng cao trang 7

Trang 7

Giáo trình Lập trình nâng cao trang 8

Trang 8

Giáo trình Lập trình nâng cao trang 9

Trang 9

Giáo trình Lập trình nâng cao trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 207 trang duykhanh 7860
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Lập trình nâng cao", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Lập trình nâng cao

Giáo trình Lập trình nâng cao
 l i 
 too large này, hãy c t các ñon 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 ñiu 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 Li khi biên d ch các c u trúc có ñiu 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 ñiu 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 Cu 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 hc Nông nghip 1 - Giáo trình Lp 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 – Mt 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 Li 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 Bn ñ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 hc Nông nghip 1 - Giáo trình Lp 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 Bn ñang c  g ng biên d ch m t hàm ho c th  t c assembler có 
 sn 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 hc Nông nghip 1 - Giáo trình Lp trình nâng cao ..............................................................- 201 
 2. L i liên quan ñn h  ñiu 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 Li 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 
 li g i t i FindFirst ho c FindNext không tìm th y file thích 
 hp 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) 
 Li 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 hc Nông nghip 1 - Giáo trình Lp trình nâng cao ..............................................................- 202 
 100 Li ñc d  li u, th ưng là do th  t c Read thông báo khi 
 Disk read error 
 trên mt file có ki u n u b n ñang c  g ng ñc quá v  trí 
 cu i file. 
 101 Disk write error Li 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 tc 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  ñiu 
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  
 mt ngu n ñin 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 Li vùng d  li u 
155 Bad drive request 
 structure length 
156 Disk seek error Li 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 hc Nông nghip 1 - Giáo trình Lp 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 Nu ñ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 
 mt th  t c vi t trong ngôn ng  assembler không duy trì 
 tình tr ng stack. 
 203 Heap overflow error Li 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 Li 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 ln . 
 207 Invalid floating Mt 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 Li x y ra khi trình qu n lý overlay c  g ng ñc m t 
 error overlay t  file overlay. 
Trưng ði hc Nông nghip 1 - Giáo trình Lp trình nâng cao ..............................................................- 204 
 Mc l c 
 Li 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 tp 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 hc Nông nghip 1 - Giáo trình Lp 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 
 Bng 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  ñiu 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 
 Mc l c 205 
 Tài li u tham kh o 207 
Trưng ði hc Nông nghip 1 - Giáo trình Lp 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 hc Nông nghip 1 - Giáo trình Lp trình nâng cao ..............................................................- 207 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_nang_cao.pdf