Giáo trình Ngôn ngữ lập trình - Chương 7: Ngôn ngữ lập trình Pascal
Pascal là tên của một trong các ngôn ngữlập trình cấp cao thông dụng. Ngôn
ngữlập trình Pascal được giáo sưNiklaus Wirth ởtrường Đại học Kỹthuật Zurich
(Thụy sĩ) thiết kếvà công bốvào năm 1970. Niklaus Wirth đặt tên cho ngôn ngữ
này là Pascal đểtưởng nhớ đến nhà Toán học và Triết học Pháp ởthếkỷ17 là
Blaise Pascal, người đã phát minh ra một máy tính cơkhí đơn giản đầu tiên của con
người.
Ngôn ngữPascal được dùng hiện nay có nhiều điểm khác biệt với chuẩn
Pascal nguyên thủy của Giáo sưWirth. Tùy theo quốc gia hoặc công ty đã phát
triển cho ra đời các chương trình biên dịch ngôn ngữPascal như:
- ISO PASCAL (International Standards Organization) của Châu Âu
- ANSI PASCAL (American National Standards Institute) của Mỹ
- TURBO PASCAL của hãng BORLAND (Mỹ)
- IBM PASCAL của hãng Microsoft (Mỹ)
- v.v.
Đến nay, ngôn ngữPascal đã phát triển đến phiên bản Turbo Pascal Version
7. Các diễn giải và ví dụtrong giáo trình này chủyếu sửdụng chương trình Turbo
Pascal 5.5 - 7.0, hiện đang được sửdụng rộng rãi ởViệt Nam.
ly(3,gk); {đường gấp khúc không khép kín}
FillPoly(4,gkkk); {đường gấp khúc khép kín}
Readln;
CloseGraph;
End.
b. Thủ tục vẽ hỡnh chữ nhật
Bar(x1,y1,x2,y2: integer);
c. Thủ tục vẽ hỡnh hộp chữ nhật
Bar3D(x1,y1,x2,y2:integer; depth:word;top:boolean);
Tham số depth: là số điểm trên bề sõu của khối 3 chiều.
Tham số top có 2 giá trị được định nghó sẵn là: TopOn (True) tương ứng
khối 3 chiều sẽ có nắp và TopOff (False) sẽ ứng với khối 3 chiều không có nắp
(xem hỡnh vẽ).
d. Thủ tục vẽ hỡnh Ellipse
FillEllipse(x,y:integer;xradius,yradius:word);
e. Thủ tục vẽ hỡnh quạt
PieSlice(x,y:integer; StAngle,EndAngle,radius:word);
5. Xử lý chuỗi ký tự trờn màn hỡnh đồ họa T
a. Thủ tục nạp Font chữ
Cỏc font chữ nằm trong cỏc tập tin cú phần mở rộng là.CHR. éể nạp cỏc font chữ
này ta dựng thủ tục:
SetTextStyle(font,direction,charsize:word);
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Với: Tham số font cú thể nhận một trong cỏc giỏ trị sau:
Hằng DefauFont hay giỏ trị 0
Hằng TriplexFont hay giỏ trị 1
Hằng SmallFont hay giỏ trị 2
Hằng SansSerifFont hay giỏ trị 3
Hằng GothicFont hay giỏ trị 4
Tham số direction cú thể nhận một trong cỏc giỏ trị sau:
Hằng HorizDir hay giỏ trị 0
Hằng VertDir hay giỏ trị 1
Tham số charsize là cỡ ký tự và nú cú thể nhận một trong các giá trị từ 1 đến
10.
b. Thủ tục đặt chế độ căn chỉnh chuỗi văn bản
SetTextJustify(horiz, vert:word);
Trong đó:
Tham số horiz cú thể là một trong cỏc hằng: LeftText, CenterText, RightText.
Tham số vert cú thể là một trong cỏc hằng: BottomText, CenterText,
TopText.
c. Thủ tục hiển thị chuỗi văn bản tại vị trí con nháy
OutText (text:string);
d. Thủ tục hiển thị chuỗi văn bản tại tọa độ (x,y)
OutTextXY (x,y:integer;text:string);
6. Cửa sổ trong chế độ đồ họa (ViewPort) TO
éể thiết lập một cửa sổ trờn màn hỡnh đồ họa, ta sử dụng đến chức năng của
ViewPort. Cửa sổ ViewPort được xem như một vùng chữ nhật trên màn hỡnh độ
họa, nó giống như thủ tục Window trong chế độ văn bản (Text mode), nghĩa là ta
có thể hiện một dũng văn bản, vẽ hỡnh hoặc xúa chỉ nằm gọn trong ViewPort đó
định, ta có thể minh họa một cửa sổ ViewPort như hỡnh sau:
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
éể hiểu rừ cỏch thiết lập một ViewPort, ta hóy xột đến cách khai báo kiểu
của ViewPort như sau:
ViewPortType = Record
x1, y1, x2, y2: Integer;
Clip: Boolean;
End;
Trong đó: (x1, y1), (x2, y2) lần lượt là góc tọa độ trên bên trái và tọa độ góc
dưới bên phải, mà chúng phải thỏa tính chất sau:
Clip là một biến trường có kiểu Boolean mà nó có ý nghĩa như sau:
ã Nếu cú giỏ trị bằng True (hay bằng hằng ClipOn) thỡ khụng cho phộp vẽ bờn
ngoài ViewPort.
ã Nếu cú giỏ trị bằng False (hay bằng hằng ClipOff) thỡ cho phộp vẽ bờn ngoài
ViewPort.
a. Thủ tục thiết lập một ViewPort
SetViewPort(x1,y1,x2,y2:integer; Clip:Boolean);
Sau khi thiết lập ViewPort ta sẽ có một hệ tọa độ mới mà góc trên bên trái
của ViewPort sẽ có tọa độ (0,0).
Ví dụ: Như hỡnh vẽ ở trờn (giả sử ta chọn Clip bằng hằng ClipOn) thỡ ta phải
thiết lập ViewPort như sau: SetViewPort(300,250,500,350,ClipOn);
* Tọa độ âm dương
Với một số đồ thị của toán học phải có tọa độ âm dương, để vẽ nó ta phải
chia màn hỡnh ra làm 4 phần tương ứng với 4 vùng (I, II, III, IV) âm dương của
một hệ trục tọa độ xy. éể thực hiện việc này, ta phải dựng đến cửa sổ ViewPort, với
cách thiết lập sao cho tọa độ (0,0) của trục tọa độ xy là tâm tuyệt đối của màn hỡnh
gúc trờn bờn trỏi của ViewPort như sau:
- éặt: x1= GetmaxX; y1= GetmaxX;
x2= GetmaxX; y2= GetmaxX;
- Dùng thủ tục SetViewPort(x1,y1,x2,y2,ClipOff), với Clip = ClipOff
để có thể vẽ ra ngoài giới hạn của ViewPort.
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Vớ dụ:
Vẽ đồ thị hàm sin(x) trong hệ trục tọa độ âm dương, với hoành độ
Program Dothi;
Uses Crt,Graph;
Const
ScaleX=20;
ScaleY=80;
Var mh,mode,x,y,i:integer;
Begin
InitGraph(mh,mode,'F:\WINAPPS\BP\BGI');
SetViewPort(GetmaxX DIV 2,GetmaxY DIV
2,GetmaxX,GetmaxY,ClipOff);
SetColor(blue);
Line(-(GetmaxX DIV 2),0,GetmaxX DIV 2,0);
Line(0,-(GetmaxY DIV 2),0,GetmaxY DIV 2);
SetTextJustify(CenterText,CenterText);
SetColor(White);
OutTextXY(-GetmaxX DIV 4,-GetmaxX DIV 4,'DO THI HINH SIN ');
SetColor(Red);
OutTextXY(GetmaxX DIV 2- 32,2,'Truc x >');
OutTextXY(27,-(GetmaxY DIV 2-5),'^ Truc y');
OutTextXY(0,0,'0,0');
for i:= -400 to 400 do
begin
x:=Round(2*Pi*i* ScaleX /200);
y:=Round(Sin(2*Pi*i/200)* ScaleY);
PutPixel(x,y,Yellow);
end;
Repeat Until KeyPressed;
CloseGraph;
End.
b. Thủ tục nhận ViewPort hiện hành
GetViewSettings(Var ViewPort: ViewPortType);
c. Thủ tục xúa bờn trong màn hỡnh ViewPort hiện hành
ClearViewPort;
Thủ tục xúa sạch tất cả cỏc phần (hỡnh vẽ, chuỗi ký tự,...) bờn trong ViewPort và
đưa con trỏ về tọa độ (0,0) của cửa sổ ViewPort hiện hành.
d. Thủ tục xúa sạch màn hỡnh đồ họa
ClearDevice;
7. éúng chế độ đồ họa TOP
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
éể trở về chế độ văn bản, ta dùng thủ tục:
CloseGraph;
V. MỘT VÀI VÍ DỤ MINH HỌA TO
Ví dụ 1: Vẽ Bầu trời đầy sao
PROGRAM Vebautroi;
Uses Graph,Crt;
Var gd,gm,x,y:integer; maxcolor:word;
Begin
Gd:=Detect;
Initgraph(gd,gm,'C:\TP70\BGI');
If Graphresult Grok Then Halt(1);
x:=GetmaxX; y:=GetmaxY;
Maxcolor:=Getmaxcolor;
Randomize;
While (not keypressed) do
Begin delay(100);
Putpixel(random(x),random(y),
Random (maxcolor-1)+1);
end;
Closegraph;
End.
Ví dụ 2: Vẽ đồ thị các hàm số: Sin(x),Cos(x) và Arctan(x)
PROGRAM VeDothi;
Uses
Crt,Graph;
Var
mh,mode:integer;chon:char;chugiai:string;
Procedure Chonham;
begin
writeln('Các đồ thị có thể:');
writeln('1---->éồ thị hỡnh Sin(x)');
writeln('2---->éồ thị hỡnh Cos(x)');
writeln('3---->éồ thị hỡnh ArcTan(x)');
write('Chọn đồ thị nào ?'); readln(chon);
Case chon of
'1': chugiai:=éỒ THỊ HÀM SIN;
'2': chugiai:=éỒ THỊ HÀM COS;
'3': chugiai:=éỒ THỊ HÀM ARCTAN;
end;
end;
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Function F(chon:char;x:real):real;
begin
Case chon of
'1': F:=Sin(x);
'2': F:=Cos(x);
'3': F:=Arctan(x);
end;
end;
Procedure Dothi(a,b:real;x1,y1,x2,y2:integer;mn,md:integer);
var fx,k,h,r,c,d:real;
x,y,n,m,i:integer;
begin
c:=f(chon,a); d:=f(chon,a);
r:=a; h:=(b-a)/1000;
while r <= b do
begin
fx:=f(chon,r);
if c>fx then c:=fx;
if d<fx then d:=fx;
r:=r+h;
end;
Setcolor(md);Setbkcolor(mn);
n:=x2-x1;
h:=(b-a)/n;
m:=y2-y1;
k:=(d-c)/m;
for i:=0 to n do
begin
x:=x1+i;
fx:=f(chon,a+i*h);
y:=round((fx-c)/k)+y1;
y:=y2-y+y1;
if i=0 then moveto(x,y)
else lineto(x,y);
end;
end;
Begin (* Chương trỡnh chớnh *)
Clrscr;
Chonham;
mh:=detect;
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Initgraph(mh,mode,'u:\bgi');
Setviewport(GetmaxX DIV 2,GetmaxY DIV 2,GetmaxX,GetmaxY,ClipOff);
Line(-(GetmaxX DIV 2),0,GetmaxX DIV 2,0);
Line(0,-(GetmaxY DIV 2),0,GetmaxY DIV 2);
SetTextJustify(CenterText,CenterText);
OutTextXY(-GetmaxX DIV 4,-GetmaxX DIV 4,chugiai);
SetColor(Red);
OutTextXY(GetmaxX DIV 2- 32,2,'Truc x >');
OutTextXY(27,-(GetmaxY DIV 2-5),'^ Truc y');
OutTextXY(0,0,'0,0');
Dothi(-4*pi,4*pi,-(getmaxx div 2)+100,-(getmaxy div 2)+100,getmaxx div 2 -100,
Getmaxy div 2 - 100,magenta,yellow);
Readln;
Closegraph;
End.
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
BÀI ĐỌC THÊM
TÓM TẮT CÁC CÚ PHÁP TRONG NGÔN NGỮ PASCAL
Niklaus Writh, cha đẻ của ngôn ngữ Pascal, đã đề xuất ra việc xây dựng các sơ đồ
mô tả tóm tắt các cú pháp của ngôn ngữ lập trình Pascal. Sơ đồ cú pháp (syntax
diagram) sẽ giúp ta nắm đợc các dạng thức của những yếu tố cấu trúc chơng trình.
Một số các phần tử trong sơ đồ có ý nghĩa sau:
ở sơ đồ tên (danh hiệu) phải bắt đầu bằng một chữ cái, sau đó có thể có nhiều chữ,
nhiều số và gạch dới.
ở sơ đồ biến, một biến bất kỳ có thể là biến có chỉ số hay không có chỉ số. Mọi biến
đều có thể nhận diện qua một tên đợc đặt theo qui tắc đặt tên, nếu có chỉ số thì mỗi
chỉ số có dạng một biểu thức, cách nhau bằng dấu phẩy ',' và tất cả chỉ số đợc đặt
trong dấu ngoặc vuông '[' và ']'
I. SƠ ĐỒ CẤU TRÚC CĂN BẢN
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
Nguyễn Thanh Bình Khoa K33 Tin học, trường ĐHSP Hà Nội 2 Điện thoại: 02113.505.909
Mọi chi tiết xin liên hệ theo địa chỉ : Email: thienthanvitinh.ntb.sp2@gmail.com
File đính kèm:
Giáo trình Ngôn ngữ lập trình - Chương 7_Ngôn ngữ lập trình Pascal.pdf

