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

pdf207 trang | Chia sẻ: hienduc166 | Lượt xem: 905 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình nâng cao - Dương Xuân Thành, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
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:

  • pdfGiao trinh lap trinh Pascal nang cao.pdf