Giáo trình Lập trình nâng cao - Dương Xuân Thành
Chương 1: Chương trình con - Thủ tục và hàm, sinh viên đã được học qua trong
chương trình Tin học đại cương, do vậy ở đây chủ yếu đi sâu vào khái niệm tham số, cách
thức mà hệ thống dành bộ nhớ cho việc lưu trữ các tham số và việc gọi chương trình con từ
chương trình con khác.
Chương 2: Các kiểu dữ liệu có cấu trúc, tập trung vào các kiểu dữ liệu mà sinh viên
chưa được học như bản ghi có cấu trúc thay đổi, tập hợp.
Chương 3: đơn vị chương trình và thư viện chuẩn, là chương chưa được học ở Tin
học đại cương , ở đây hướng dẫn cách thiết kế các đơn vị chương trình (Unit), cách thức sử
dụng các Unit và tạo lập thư viện chương trình .
Chương 4: Con trỏ và cấu trúc động, là một chương khó, vì nó vừa liên quan đến
quản lý bộ nhớ, vừa liên quan đến kiến thức của môn học Cấu trúc dữ liệu và Giải thuật do
vậy trong chương này đã trình bày nhiều ví dụ để người đọc tham khảo.
Chương 5: Giải thuật đệ quy, được trình bày “hơi dài dòng” do đặc thù của tính đệ
quy. Bài toán Tháp Hanoi được mô tả khác hoàn toàn so với tất cả các sách về Pascal đã có.
Chương 6: đồ hoạ, ngoài việc giới thiệu các thủ tục vẽ thông thường, còn dành một
phần trọng tâm cho việc xử lý ảnh Bitmap. Trong chương này có sử dụng một vài ví dụ của
các tác giả khác (xem phần tài liệu tham khảo) nhưng đã được cải tiến đi rất nhiều.
Phụ lục 1: Bảng mã ASCII
Phụ lục 2: Tóm tắt các thủ tục và hàm của Turbo Pascal 7.0
Phụ lục 3: định hướng biên dịch
Phụ lục 4: Thông báo lỗi
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 ..............................................................- 201 161 Code generation error Phần lệnh phía trước chứa một lệnh LOOPNE, LOOPE, LOOP, 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 ..............................................................- 202 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 File Not Found Không tìm thấy file (có thể là do các thủ tục Reset, Append, 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 files Do các thủ tục Reset, Rewrite hoặc Append báo lại nếu 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 code Thủ tục Reset hoặc Append gặp phải một file có kiểu hoặc không có kiểu mà giá trị FileMode không hợp lệ. 15 Invalid drive number Do các thủ tục GetDir hoặc ChDir báo lại nếu mã số ổ ñĩa không hợp lệ. 16 Cannot remove current directory Không thể chuyển thư mục ñang làm việc (bởi thủ tục RmDir) 17 Cannot rename across drives Không ñổi ñược tên vì hai tên không có cùng ñường dẫn 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 ..............................................................- 203 100 Disk read error Lỗi ñọc dữ liệu, thường là do thủ tục Read thông báo khi 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 input File (văn bản) chưa ñược mở ñể ñọc khi thực hiện các thủ tục Read, Readln, Eof, Eoln, SeekEof hoặc SeekEoln . 105 File not open for output File chưa ñược mở ñể ghi khi thực hiện các thủ tục Write hoặc Writeln . 106 Invalid numeric format Trị số ñọc từ file văn bản không ñúng với dạng số hợp lệ 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 protected ðĩa (mềm) bị khoá chống ghi. Hãy bỏ các lẫy chống ghi 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 type Kiểu thiết bị không rõ 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 ..............................................................- 204 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 error Stack bị tràn. Nếu ñịnh hướng biên dịch là {$S+} thì lỗi sẽ ñượ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 operation Lỗi này do các thủ tục Dispose hoặc FreeMem gây ra nếu như con trỏ là Nil hoặc trỏ tới một vị trí nằm ngoài heap. 205 Floating point overflow Phép tính với dấu chấm ñộng tạo ra kết quả là một số quá lớn . 207 Invalid floating point operation Một tham số thực trong các hàm Trunc hoặc Round không 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 not installed Trình quản lý overlay chưa ñược cài ñặt. Lỗi có thể là do không gọi OverInit hoặc lời gọi OverInit không chạy. 209 Overlay file read error Lỗi xảy ra khi trình quản lý overlay cố gắng ñọc một 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 ..............................................................- 205 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 ..............................................................- 206 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 ..............................................................- 207 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
File đính kèm:
- Giao trinh lap trinh Pascal nang cao.pdf