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.

pdf84 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 1913 | Lượt tải: 2download
Tóm tắt nội dung Giáo trình Ngôn ngữ lập trình - Chương 7: Ngôn ngữ lập trình Pascal, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfGiáo trình Ngôn ngữ lập trình - Chương 7_Ngôn ngữ lập trình Pascal.pdf