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