Tìm hiểu ngôn ngữ lập trình Pascal

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Tìm hiểu ngôn ngữ lập trình Pascal

Bài gửi  linhtv on 17/10/2009, 6:33 pm

Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, được Niklaus Wirth phát triển vào năm 1970 là ngôn ngữ đặc biệt thích hợp cho kiểu lập trình có cấu trúc.

Pascal dựa trên ngôn ngữ lập trình Algol và được đặt tên theo nhà toán học và triết học Blaise Pascal. Wirth đồng thời cũng xây dựng Modula-2 và Oberon, là những ngôn ngữ tương đồng với Pascal. Oberon cũng hỗ trợ kiểu lập trình hướng đối tượng.

Ban đầu, Pascal là một ngôn ngữ được hướng để dùng trong giảng dạy về lập trình có cấu trúc, và nhiều thế hệ sinh viên đã "vào đời" thông qua việc học Pascal như ngôn ngữ vỡ lòng trong các chương trình học đại cương. Nhiều biến thể của Pascal ngày nay vẫn còn được sử dụng khá phổ biến, cả trong giảng dạy lẫn trong công nghiệp phát triển phần mềm.

Phần lớn hệ điều hành Macintosh được viết bằng Pascal. Hệ sắp chữ TeX phổ biến được viết bằng một ngôn ngữ tên là Web là ngôn ngữ mà Donald Knuth đã vay mượn khá nhiều yếu tố từ Pascal.

Xuất xứ
Pascal là ngôn ngữ lập trình cấp cao do giáo sư Niklaus Wirth ở trường đại học kỹ thuật Zurich thiết kế và công bố vào năm 1971. Trước khi Pascal ra đời, FORTRAN được dùng để giảng dạy và lập trình cho các bài toán khoa học kỹ thuật. Mặc Dù FORTRAN là một ngôn ngữ không có cấu trúc nên khi lập trình thường hay mắc phải nhiều lỗi, mất nhiều thời gian để phát hiện và sửa lổi. Đễ khắc phục nhược điểm Niklaus Wirth thiết kế ngôn ngữ Pascal nhằm phục vụ cho công tác giảng dạy cách tiệp cận hệ thống trong công việc lập trình.


Các version của Turbo Pascal
Version 2.0: So với Pascal chuẩn, Turbo Pascal Version 2.0 có những mở rộng về các biến động, các biến địa chỉ tuyệt đố, Các phép toán trên bit và byte, các phép toán logic trên số nguyên, Kết nối các chương trình với các biến chung,...
Version 3.0: là một hệ thống phát triển gồm những đặc điểm của version 2.0 và có nhiều mở rộng quan trọng như: Bổ sung nhiề thủ tục và hàm chuẩn. Bổ sung một vài dạng đặc biệt mới cho phép tính toán các số thực với độ chính xác lớn,... So với version 2.0 thì version 3.0 có tốc độ dịch gấp đôi.
Version 4.0: có đặc điểm là có thêm một số dữ liệu mới, thực hiện các biểu thức logic nhanh hơn, có nhiều thủ tục và hàm chuẩn về xử lí đồ họa đồ thị màu sắc hình khối cửa sổ,...
Version 5.0 và 5.5: Năm 1989, hãng Borland đưa ra thị trường phiên bản Turbo Pascal Version 5.0 để giới thiệu các thủ tục và hàm tiện nghi. Tiếp đó chưa đầy nữa năm họ đưa ra version 5.5 có thêm cấu trúc hoàn toàn mới, đó là lập trình đối tượng.
Version 6.0: Đặc điểm nổi bậc của version này là giới thiệu thành phần của Turbo vision, một thư viện chương trình cụ thể, định hình có các cửa sổ tiện ích để đối chiếu với nhau.
Version 7.0: Cuối năm 1992, hãng Borland lại đưa ra version 7.0 để chạy trong nhiều hệ điều hành kể cả Windows

Ngôn ngữ
Mọi chương trình Pascal bắt đầu bằng từ khóa Program, cùng với một danh sách tùy chọn các phần mô tả các tập tin ngoài và sau đó là một khối các dòng lệnh nằm giữa các từ khóa Begin và End. Dấu chấm phẩy dùng để tách các dòng lệnh khác nhau, và dấu chấm để báo hiệu kết thúc chương trình (hay đơn vị). Trong mã nguồn Pascal, không phân biệt chữ viết in.

program ChaoThegioi(output);



begin

writeln(`Chao The gioi!`);

end.

Pascal, nguyên thể đơn thuần là ngôn ngữ lập trình thủ tục với một loạt các từ khóa chuẩn if, while, for, và các thành phần khác.

Pascal cũng là một ngôn ngữ lập trình có cấu trúc, nghĩa là chuỗi điều khiển được cấu trúc thành các câu lệnh chuẩn, hạn chế tối đa các lệnh go to chuyển hướng lung tung trong cấu trúc chương trình.

while a <> b do WriteLn(`Xin cho*``);



if a > b then

writeln(`Tho?a man~ ddie^`u kie^.n`)

else

writeln(`Kho^ng tho?a man~ ddie^`u kie^.n`);



for i := 1 to 10 do writeln(`La(.p: `, i:1);



repeat a := a + 1 until a = 10;

Pascal cấu trúc các chương trình thành các thủ tục và hàm.

program mine(output);



procedure print(var i: integer);



function next(i: integer): integer;

begin

next := i + 1

end;



begin

writeln(`To^?ng la`: `, i);

i := next(i)

end;



begin

i := 1;

while i <= 10 do print(i)

end.

Các thủ tục và hàm có thể lồng vào nhau theo nhiều cấp, và từ program là khối cấu trúc ngoài cùng nhất.

Mỗi khối có thể có khai báo các nhãn goto, hằng, kiểu, biến, cùng với các thủ tục và hàm riêng, tất cả phải tuân theo trình tự đó.

Pascal có các kiểu đơn như integer (số nguyên), character (ký tự), boolean (lô gích), v.v. và enumerations (liệt kê), là kiểu mới được đưa vào Pascal sau này.

Những phê phán trước đây
Mặc dù rất phổ biến (những năm 1980 và 1990 còn phổ biến hơn cả thời điểm bài viết này được thực hiện), các phiên bản Pascal trước đây đã bị phê phán rộng rãi vì không phù hợp cho việc sử dụng trong thực tế, ngoài việc dạy học. Brian Kernighan, người truyền bá C, đã đưa ra những phê phán lớn nhất về Pascal trong đầu những năm 1980, bằng tác phẩm >Why Pascal Is Not My Favorite Programming Language> (Tại sao Pascal không phải là ngôn ngữ lập trình tôi ưa thích). Mặt khác, rất nhiều nỗ lực phát triển lớn trong những năm 1980 (như chuyển sang cho Apple Lisa và Macintosh) lại phụ thuộc rất nhiều vào Pascal (tới mức mà giao tiếp C dành cho Mac OS phải giải quyết cả các kiểu dữ liệu của Pascal). Trong những thập niên sau đó, Pascal tiếp tục phát triển, và những vấn đề mà Kernighan đã đưa ra không còn phù hợp cho các phiên bản hiện tại nữa. Thật đáng tiếc là, như những điều mà Kernighan dự đoán trong bài viết, hầu hết các sự mở rộng để giải quyết các vấn đề trên làm các trình biên dịch không tương thích với nhau. Mặc dù vậy, trong thập niên vừa qua các biến thể dường như đã tập trung lại thành hai loại, theo chuẩn ISO hay theo chuẩn Borland, đều đã dần dần đi ra ngoài dự đoán của Kernighan.

Dựa trên kinh nghiệm với Pascal, Niklaus Wirth đã phát triển thêm hai ngôn ngữ lập trình nữa, Modula-2 và Oberon. Hai ngôn ngữ này mặc dù đã có nhiều cải tiến nhưng không thể theo kịp thành công thương mại của Pascal.





Các câu lệnh

SYSTEM

write() : in ra màn hình liền sau kí tự cuối.
writeln() : in xuống một hàng.
read() : đọc biến.
readln() : dừng chương trình để đọc biến.

Uses CRT

clrscr : xoá toàn bộ màn hình.
textcolor() : in chữ màu.
textcolor() : tô màu cho màn hình.
sound() : tạo âm thanh.
delay() : làm trể.
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 : màn hình trở lại chế độ sáng bình thường.
gotoxy(x,y) : đưa con trỏ đến vị trí x,y trên màn hình.
deline : xoá một dòng đang chứa con trỏ.
clreol : xoá các ký tự từ vị trí con trỏ đến cuối mà không di chuyển vị trí con trỏ.
insline : chèn thêm một dòng vào vị trí của con trỏ hiện hành.
exit : thoát khỏi chương trình.
textmode(co40) : tạo kiểu chữ lớn.
randomize : khởi tạo chế độ ngẫu nhiên.
move(var 1,var 2,n) : sao chép trong bộ nhớ một khối n byte từ biến Var 1 sang biến Var 2.
halt : Ngưng thực hiện chương trình và trở về hệ điều hành.
Abs(n) : Giá trị tuyệt đối.
Arctan(x) : cho kết quả là hàm Arctan(x).
Cos(x) : cho kết quả là cos(x).
Exp(x) : hàm số mủ cơ số tự nhiên ex.
Frac(x) : cho kết quả là phần thập phan của số x.
int(x) : cho kết quả là phần nguyên của số thập phân x.
ln(x) : Hàm loga cơ số tự nhiên.
sin(x) : cho kết quả là sin(x), với x tính bằng Radian.
Sqr(x) : bình phương của số x.
Sqrt(x) : cho kết quả là căn bậc hai của x.
pred(x) : cho kết quả là số nguyên đứng trước số nguyên x.
Suuc(x) : chô kết quả là số nguyên đứng sau số nguyên x.
odd(x) : cho kết quả là true nếu x số lẻ, ngược lại là false.
chr(x) : trả về một kí tự có vị trí là x trong bảng mã ASCII.
Ord(x) : trả về một số thứ tự của kí tự x.
round(n) : Làm tròn số thực n.
Random(n) : chó một số ngẫu nhiên trong phạm vi n.
upcase(n) : đổi kí tự chữ thường sang chữ hoa.
assign(f,>) : tạo file.>
rewrite(f) : khởi tạo.
append(f) : chèn thêm dữ liệu cho file.
close(f) : tắt file.
erase(f) : xóa.
rename() : đổi tên cho file.
length(s) : cho kết quả là chiều dài của xâu.
copy(s,a,b) : copy xau.
insert(>,s,a) : chèn thêm cho xâu.>
delete(s,a,b) : xoá xâu. ...

Unit GRAGH

initgraph(a,b,>) : khởi tạo chế độ đồ hoạ.>
closegraph; : tắt chế độ đồ hoạ.
setcolor(x) : chọn màu.
outtext() : in ra màn hình tại góc trên bên trái.
outtextxy(x,y,>); : in ra màn hình tại toạ độ màn hình.>
rectangle(x1,y1,x2,y2): vẽ hình chữ nhật.
line(x1,y1,x2,y2) : vẽ đoạn thẳng.
moveto(x,y) : lấy điểm xuất phát để vẽ đoạn thẳng.
lineto(x,y) : lấy điểm kết thúc để vẽ doạn thảng.
circle(x,y,n) : vẽ đường 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) : tạo biến để tô.
setfillpattern(x,a) : chọn màu để tô.
cleardevice; : xoá toàn bộ màn hình.
settextstyle(n,a,b) : chọn kiểu chữ.
bar(a,b,c,d) : vẽ thanh.
bar3d(a,b,c,d,n,h) : vẽ hộp.
arc(a,b,c,d,e) : vẽ cung tròn.
setbkcolor(n) : tô mà nền.
putpixel(x,y,n) : vẽ điểm.
setfillstyle(a,b) : tạo nền cho màn hình.
setlinestyle(a,b,c) : chọn kiểu đoạn thẳng.
getmem(p,1) : chuyển biến để nhớ dữ liệu.
getimage(x1,y1,x2,y2,p): nhớ các hình vẽ trên vùng cửa sổ xác định.
putimage(x,y,p,n) : in ra màn hình các hình vừa nhớ. ...

Unit DOS

getdate(y,m,d,t) : lấy các dữ liệu về ngày trong bộ nhớ.
gettime(h,m,s,hund) : lấy các dữ liệu về giờ trong bộ nhớ.
findnext(x) : tìm kiếm tiếp.
Findfirst(>,$20,dirinfo) : tìm kiếm. ...>

linhtv

Tổng số bài gửi : 16
Join date : 01/06/2009
Age : 38
Đến từ : Ninh Thuận

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết