Giáo trình Lập trình nâng cao trên ngôn ngữ Pascal
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áotrình Lậptrìnhnâ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
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:
Giáo trình Lập trình nâng cao trên ngôn ngữ Pascal.pdf

