I. Giới thiệu ngôn ngữ lập trình Pascal
1. Ngôn ngữ Pascal là một ngôn ngữ lập trình dạng mệnh lệnh, thích hợp cho lập trình thủ tục, được Niklaus Wirth phát triển vào năm 1970. Ngôn ngữ này dựa trên ngôn ngữ lập trình ALGOL và được đặt tên là Pascal, tên của nhà toán học và triết học Blaise Pascal.
Pascal cũng hỗ trợ lập trình cấu trúc và lập trình hướng đối tượng (Free Pascal và Turbo Pascal 5.5). Ngày nay Pascal vẫn còn được sử dụng khá phổ biến. Phần lớn hệ điều hành Macintosh được viết bằng Pascal.
Năm 1983, ANSI Pascal (American National Standards Institute) đã trở thành chuẩn cho ngôn ngữ lập trình Pascal.
2. Thư viện chuẩn Pascal
Thư viện chuẩn của ANSI Pascal gồm những đơn vị sau:
1) Đơn vị Hệ thống (SYSTEM)
write(): in ra màn hình sau kí tự cuối.
writeln(): in ra một dòng và xuống dòng.
read(): đọc biến.
readln(): đọc một dòng biến và xuống dòng
2) Đơn vị Màn hình (CRT)
clrscr: xoá màn hình.
textcolor(): in chữ màu.
textbackground(): in màu màn hình.
sound(): tạo âm thanh.
delay(n): dừng chương trình trong n/1000 giây.
nosound: tắt âm thanh.
windows(x1,y1,x2,y2): thay đổi cửa sổ màn hình.
highvideo: tăng độ sáng màn hình.
lowvideo: giảm độ sáng màn hình.
normvideo: bình thường độ sáng màn hình.
gotoxy(x,y): đến vị trí x,y trên màn hình.
deline: xoá một dòng.
clreol: xoá các ký tự đến cuối dòng.
insline: thêm một dòng.
exit: thoát khỏi chương trình.
textmode(n): tạo kiểu chữ.
randomize: tạo ngẫu nhiên.
move(var1,var2,n): chép n byte từ biến var1 sang var2.
halt: Ngưng chương trình.
Abs(n): cho số tuyệt đối của số n.
Sin(x): cho sin(x), với x là Radian.
Cos(x): cho cos(x), với x là Radian.
Arctan(x): cho Arctan(x), với x là Radian.
Exp(x): cho luỹ thừa của số x.
Ln(x): cho logarit của số x.
Int(x): cho phần nguyên của số x.
Frac(x): cho phần lẻ của số x.
Sqr(x): cho bình phương của số x.
Sqrt(x): cho căn bậc hai của số x.
Pred(x): cho số nguyên đứng trước số nguyên x.
Succ(x): cho số nguyên đứng sau số nguyên x.
Odd(x): cho true nếu số x lẻ; false nếu số x chẵn .
Chr(x): cho kí tự có vị trí x trong bảng mã ASCII.
Ord(x): cho số thứ tự của kí tự x trong bảng mã ASCII.
round(x): cho số nguyên gần x nhất.
trunc(x): cho số nguyên bé hơn x.
Random(n): cho số ngẫu nhiên bé hơn n.
upcase(n): đổi chữ thường sang chữ hoa.
assign(f,'<đường dẫn><tên file>.<phần mở rộng>'): tạo file.
rewrite(f): viết lại file.
append(f): thêm dữ liệu cho file.
close(f): đóng file.
erase(f): xóa file.
rename(): đặt lại tên file.
str(a: integer, s: string): đổi từ số a thành chuỗi s.
val(str,n,m): đổi chuỗi số str thành số n, với m là 0.
length(s): cho chiều dài của chuỗi s.
copy(s: string, a: integer, b: integer): chép b kí tự từ vị trí a trong chuỗi s.
insert(s1: string, s: string, a: integer): thêm chuỗi s1 vào vị trí a cho chuỗi s.
delete(s:string, a:integer, b:integer): xóa b ký tự từ vị trí a trong chuỗi s.
pos(s1: string; s2: string): cho vị trí đầu tiên của chuỗi s1 trong chuỗi s2,
nếu s1 không nằm trong s2 thì vị trí là 0.
3) Đơn vị Đồ hoạ (GRAPH)
initgraph(a,b): khởi tạo đồ hoạ.
closegraph: đóng đồ hoạ.
setcolor(x): chọn màu.
outtext(): in ra tại góc trái trên của màn hình .
outtextxy(x,y,): in ra tại x, y của màn hình.
line(x1,y1,x2,y2): vẽ đoạn thẳng.
moveto(x,y): đến điểm đầu vẽ đoạn thẳng.
lineto(x,y): đến điểm cuối vẽ đoạn thẳng.
rectangle(x1,y1,x2,y2): vẽ hình chữ nhật.
circle(x,y,n): vẽ hình tròn.
ellipse(x,y,o1,o2,a,b): vẽ hình elip.
floodfill(a,b,n): tô màu cho hình.
getfillpattern(x): chọn mẫu để tô.
setfillpattern(x,a): tô mẫu vẽ.
cleardevice: xoá màn hình.
settextstyle(n,a,b): chọn kiểu chữ.
arc(a,b,c,d,e): vẽ cung.
bar(a,b,c,d): vẽ thanh.
bar3d(a,b,c,d,e,f): vẽ hộp.
setbkcolor(n): tô màu nền.
putpixel(x,y,n): vẽ điểm.
setfillstyle(a,b): chọn kiểu để tô.
setlinestyle(a,b,c): chọn kiểu đoạn thẳng.
getmem(p,1): chọn vùng nhớ.
getimage(x1,y1,x2,y2,p): chọn hình.
putimage(x,y,p,n): in hình.
4) Đơn vị Hệ điều hành (DOS)
getdate(y,m,d,t): lấy ngày tháng.
gettime(h,m,s,h): lấy thời giờ.
findnext(x): tìm kiếm tiếp.
3. Từ khoá (key word) của Pascal
Pascal không phân biệt từ khóa chữ thường và chữ hoa.
Thí dụ: D với d là một.
1) Từ khoá trong Turbo Pascal
absolute and array asm begin case const constructor destructor div
do downto else end file for function goto if implementation in inherited
inline interface label mod nil not object of on operator or packed procedure program record reintroduce repeat self set shl shr string then to type unit until uses var while with xor
2) Từ khoá trong Free Pascal
as class dispinterface except exports finalization finally initialization inline
is library on out packed property raise resourcestring threadvar try
dispose exit false new true
3) Từ khoá dẫn hướng
absolute abstract alias assembler cdecl cppdecl default export external far
far16 forward index local name near nostackframe oldfpccall override pascal
private protected public published read register reintroduce safecall softfloat
stdcall virtual write
4. Cách đặt tên trong Pascal
Danh hiệu (identifier) dùng đặt tên cho các biến, hằng, kiểu, chương trình, thủ
tục, …
Danh hiệu không được dùng từ khóa riêng của Pascal và phải bắt đầu là một chữ cái, sau đó có thể là chữ cái, chữ số hay gạch dưới.
Thí dụ:
X, y, z, …
Lập_trình
Pascal không phân biệt danh hiệu chữ thường và chữ hoa.
5. Cài đặt trình biên dịch Pascal
Để chạy một chương trình Pascal, trước hết nó phải được biên dịch từ mã nguồn (chữ viết) thành mã máy (nhị phân). Đây là công việc của trình biên dịch. Hai trình biên dịch Pascal thông dụng là Turbo Pascal và Free Pascal. Ta có thể tải xuống và cài đặt nó cho Window:
1) Turbo Pascal
Turbo Pascal 7.0 và DOSBox chạy trên hệ điều hành MS-DOS, được phát triển bởi hãng Borland, có thể chạy trên nhiều hệ điều hành khác nhau.
Download: Turbo Pascal 7.0 với DOSBox.
2) Free Pascal
Free Pascal 32/64/16-bit có thể biên dịch các chương trình hướng đối tượng, chạy trên nhiều hệ điều hành khác nhau.
Download: Free Pascal.
6. Cấu trúc một chương trình Pascal:
Chương trình Pascal gồm hai phần sau:
1) Phần khai báo:
Ta khai báo chương trình, hàm, thủ tục, hằng, biến, hoặc kiểu trước khi dùng. Các từ khoá sau đây được đặt trước các khai báo có cùng thể loại.
a. Khai báo chương trình (Program)
Khai báo tên chương trình với từ Program và dấu chấm phẩy (;).
Thí dụ:
Program Hello ;
b. Khai báo đơn vị (Uses)
Khai báo tên đơn vị với từ Uses và dấu chấm phẩy (;).
Thí dụ:
Uses CRT;
c. Khai báo hằng (Constant)
Khai báo tên hằng với từ Const và dấu chấm phẩy (;).
Thí dụ:
Const
p = 3.14;
message = ‘Chào Bạn’;
d. Khai báo kiểu (Type)
Khai báo tên kiểu với từ Type.
Thí dụ:
Type
Letter = ‘a’..’z’
Digit = ‘0’..’9’
Row = array[1..5] of real
Vehicle = (car, bus, truck)
e. Khai báo biến (Variable)
Khai báo tên biến với từ Var và dấu chấm phẩy (;).
Thí dụ:
Var
N, m: Integer;
Chuỗi: String;
f. Khai báo hàm (Function)
Khai báo tên hàm với từ Function và dấu chấm phẩy (;).
Thí dụ: Có hai dạng:
Function Tên hàm: Kiểu trả về;
Function Tên hàm(các thông số): Kiểu trả về;
g. Khai báo thủ tục (Procedure)
Khai báo tên thủ tục với từ Procedure và dấu chấm phẩy (;).
Thí dụ: Có hai dạng:
Procedure Tên thủ tục;
Procedure Tên thủ tục(các thông số);
Tuỳ theo nhu cầu, phần khai báo có thể có hoặc không,.
2) Phần thân:
Phần chính của chương trình Pascal là khối lệnh (main). Khối lệnh bắt đầu bằng Begin và kết thúc bằng End. Khối lệnh chứa những câu lệnh. Mỗi câu lệnh phải được kết thúc bởi chấm phẩy (;).
Sau từ End là dấu chấm (.) kết thúc chương trình.
Thí dụ: Khối lệnh.
begin
writeln('Hello World');
writeln;
end.
Phần này bắt buộc phải có đối với mọi chương trình.
7. Viết chương trình Pascal:
Thông thường, chương trình đầu tiên cho một ngôn ngữ lập trình là chương trình viết một câu chào, như ‘Hello World’, theo những bước sau đây:
1) Mở trình viết chữ, như Notepad, viết những hàng sau:
a. // Chương trình Pascal thứ nhất.
Đây là dòng chú thích, bắt đầu bằng dấu so (//).
Chú thích:
Trong Pascal có hai cách để chú thích:
a1) Chú thích theo khối được đặt giữa hai kí hiệu { } hay (* *) và có thể bao gồm nhiều dòng.
{ Chú thích theo khối }
(* Chú thích theo khối *)
a2) Trong Free Pascal còn có:
Chú thích theo dòng được đặt sau dấu so (//) cho đến hết dòng.
// Chú thích theo dòng.
Những chú thích này sẽ được trình biên dịch bỏ qua, nên không ảnh hưởng gì đến hoạt động của chương trình.
b. Program Hello;
Khai báo tên của chương trình với từ Program và dấu chấm phảy (;).
c. Giữa begin và end là hai câu lệnh gọi hàm writeln trong thư viện.
Hàm writeln thứ nhất cần một dãy kí tự Hello World trong dấu lặp đơn.
Hàm writeln thứ hai không có đối số, nên kết quả là xuống dòng.
begin
writeln('Hello World');
writeln;
end.
d. Sau từ End là dấu chấm (.) kết thúc chương trình.
2) Kiểm tra chương trình giống như sau đây:
// Chương trình Pascal thứ nhất.
Program Hello;
begin
writeln('Hello World');
writeln;
end.
3) Lưu giữ chương trình này với tên “hello.pas”
5. Biên dịch chương trình Pascal:
Tập nguồn hello.pas được biên dịch thành tập hello.exe theo những bước sau:
1) Ở cổng lệnh, viết lệnh cd với đường dẫn tới hello.pas
2) Ở cổng lệnh, viết
Turbo hello.pas –o hello.exe
rồi nhấn Enter để biên dịch hello.pas thành hello.exe
6. Chạy chương trình
Ở cổng lệnh, viết
Turbo hello.exe
rồi nhấn Enter thì chương trình cho kết quả sau:
Hello World