Giáo án Lập trình Pascal - Lê Văn Cường

MỤC LỤC

 

Lời mở đầu 1

Chương 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH

PASCAL 2

Chương 2: CÁC KIỂU DỮ LIỆU CƠ BẢN – KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC VÀ CÂU LỆNH

I. Các kiểu dữ liệu cơ bản 6

II. Khai báo hằng 8

III. Khai báo biến 8

IV. Định nghĩa kiểu 9

V. Biểu thức 9

VI. Câu lệnh 9

Bài tập mẫu 11

Bài tập tự giải 12

Chương 3: CÁC CÂU LỆNH CÓ CẤU TRÚC

I. Lệnh rẽ nhánh 15

II. Lệnh lặp 16

Bài tập mẫu 17

Bài tập tự giải 24

Chương 4: CHƯƠNG TRÌNH CON: THỦ TỤC VÀ HÀM

I. Khái niệm về chương trình con 27

II. Cấu trúc chung của một chương trình có sử dụng CTC 27

III. Biến toàn cục và biến địa phương 28

IV. Đệ qui 29

V. Tạo thư viện (UNIT) 31

Bài tập mẫu 33

Bài tập tự giải 36

Chương 5: DỮ LIỆU KIỂU MẢNG

I. Khai báo mảng 38

II. Xuất nhập trên dữ liệu kiểu mảng 38

Bài tập mẫu 38

Bài tập tự giải 50

Chương 6: XÂU KÝ TỰ

I. Khai báo kiểu xâu ký tự 53

II. Truy xuất dữ liệu kiểu String 53

III. Các phép toán trên xâu ký tự 53

IV. Các thủ tục và hàm về xâu ký tự 53

Bài tập mẫu 54

Bài tập tự giải 60

 

Chương 7: KIỂU BẢN GHI

I. Khai báo dữ liệu kiểu bản ghi 63

II. Xuất nhập dữ liệu kiểu bản ghi 63

Bài tập mẫu 63

Bài tập tự giải 68

Chương 8: KIỂU FILE

I. Khai báo 70

II. Các thủ tục và hàm chuẩn 70

III. File văn bản 72

IV. File không định kiểu 73

Bài tập mẫu 74

Bài tập tự giải 85

Chương 9: KIỂU CON TRỎ

I. Khai báo 91

II. Làm việc với biến động 91

III. Danh sách động 92

Bài tập mẫu 94

Bài tập tự giải 108

Chương 10: ĐỒ HỌA

I. Màn hình trong chế độ đồ hoạ 113

II. Khởi tạo và thoát khỏi chế độ đồ hoạ 113

III. Toạ độ và con trỏ trên màn hình đồ hoạ 115

IV. Đặt màu trên màn hình đồ hoạ 115

V. Cửa sổ trong chế độ đồ hoạ 115

VI. Viết chữ trong chế độ đồ họa 116

VII. Vẽ các hình cơ bản 116

VIII. Tô màu các hình 117

IX. Các kỹ thuật tạo hình chuyển động 119

Bài tập mẫu 120

Bài tập tự giải 141

Mục lục 143

 

 

 

doc114 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 2972 | Lượt tải: 1download
Tóm tắt nội dung Giáo án Lập trình Pascal - Lê Văn Cường, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
a) = k.Cos(na) : Hình bông hoa.
Hình bông hoa
	f(a) = a.a (a>0) : Đường xoắn ốc Acsimet.
	f(a) = k.(1+Cos(a)): Hình trái tim.
Uses Crt,Graph;
 var R,chuky:real;
Procedure ThietLapDohoa;
Var Gd,Gm:Integer;
Begin
	Gd:=0;
	InitGraph(Gd,Gm,’D:\BP\BGI’);
End;
Function F(R,Alpha:real):real; { Tính hàm f(a) }
 Begin
 F:=R*cos(19*Alpha/3)+5;
 End;
Procedure VeHinh(ChuKy:real);
 var x1,x2,y1,y2:integer;
 a,Alpha,k:real;
 x0,y0:word;
 Begin
 x0:=GetMaxX div 2;
 y0:=GetMaxY div 2;
 K:=GetMaxX/50;
 a:=Pi/180;
 Alpha:=0;
 x1:=x0 + Round(F(R,Alpha)*k*cos(Alpha));
 y1:=y0 - Round(F(R,Alpha)*k*sin(Alpha));
 Moveto(x1,y1);
 While Alpha<ChuKy do
 Begin
 Alpha:=Alpha+a;
 x1:=x0 + Round(F(R,Alpha)*k*cos(Alpha));
 y1:=y0 - Round(F(R,Alpha)*k*sin(Alpha));
 LineTo(x1,y1); 
	 Delay(10);
 End;
 End;
BEGIN
 ThietLapDoHoa;
 R:=15; chuky:=4*Pi;
 VeHinh(chuky);
 repeat until KeyPressed;
 CloseGraph;
END.
Bài tập 10.11: Viết chương trình vẽ cung Koch. Các bước phát sinh của cung Koch được thực hiện trong hình sau:
(a) K0
(b) K1
(c) K2
Bắt đầu từ đường ngang K0 có độ dài bằng 1.
Để tạo cung bậc-1(gọi là K1), chia đường thành ba phần và thay đoạn giữa bằng tam giác đều có cạnh dài 1/3. Bây giờ, toàn bộ đường cong có độ dài 4/3.
Cung bậc-2 K2 có được bằng cánh dựng tiếp các tam giác đều từ 4 đoạn của K1. Vì mỗi đoạn có độ dài tăng 4/3 lần nên toàn bộ cung dài ra 4/3 lần.
Ý tưởng:
	Từ hình (b) ta thấy rằng, đầu tiên hướng vẽ quay trái 600, rồi quay phải 1200, cuối cùng quay trái 600 để trở về hướng ban đầu.
Uses Crt,Graph;
Var n:Integer;
 Goc,length:real;
Procedure ThietLapDohoa;
Var gd,gm:integer;
Begin
 gd:=0;
 InitGraph(gd,gm,'D:\bp\bgi');
End;
Procedure Koch(dir,len:real;n:integer);
const rads=0.017453293;
Begin
 If n>0 Then
 Begin
 Koch(dir,len/3,n-1);
 dir:=dir+60; {Quay phải 60 độ}
 Koch(dir,len/3,n-1);
 dir:=dir-120; {Quay trái 120 độ}
 Koch(dir,len/3,n-1);
 dir:=dir+60; {Quay phải 60 độ}
 Koch(dir,len/3,n-1);
 End
 else LineRel(Round(len*cos(rads*dir)),Round(len*sin(rads*dir)));
end;
Begin
 ThietLapDoHoa;
 n:=4;
 Goc:=180;
 Length:=150;
 Moveto(300,200);
 Koch(Goc,Length,n);
 Repeat until keypressed;
 Closegraph;
END.
C0	C1	C2	C3
Bài tập 10.12: Viết chương trình tạo ra C-cung dựa trên sự tinh chế tương tự của một đoạn thẳng theo hình sau:
Ý tưởng:
	Để có dạng phát sinh kế tiếp, mỗi đoạn thẳng được thay bởi một “hình gãy” gồm 2 đoạn ngắn hơn tạo với nhau một góc 900. Các đoạn mới có độ dài bằng 1/ lần đoạn ở bước trước.
Xét hướng vẽ ở một đầu của đoạn thẳng. Để vẽ hình gãy, hướng vẽ quay trái 450, vẽ một đoạn, quay phải 900, vẽ đoạn thứ hai và sau đó trở về hướng cũ bằng cách quay góc 450.
Uses graph,crt;
Procedure ThietLapDohoa;
Var gd,gm,gr:integer;
Begin
 gd:=0;
 Initgraph(gd,gm,'D:\bp\bgi');
End;
PROCEDURE VeC_Cung;
Var n:Integer;
 Goc,length:real;
 Procedure Rong(dir,len:real;n:integer);
 const d=0.7071067;
 rads=0.017453293;
 begin
 if n>1 then
 begin
 dir:=dir+45;
 Rong(dir,len*d,n-1);
 dir:=dir-90;
 Rong(dir,len*d,n-1);
 dir:=dir+45;
 end
 else LineRel(Round(len*cos(rads*dir)),Round(len*sin(rads*dir)));
 end;
Begin
 n:=15;
 Goc:=0;
 Length:=130;
 Moveto(200,200);
 Rong(Goc,Length,n);
 repeat until keypressed;
 End;
BEGIN
 ThietLapDoHoa;
 VeC_Cung;
 Closegraph;
END.
C Cung
Bài tập 10.13: Viết chương trình vẽ tập Mandelbrot - là một hình trong mặt phẳng phức. Tập Mandelbrot được phát sinh theo công thức sau:
z ® z2 + c (*)
Tập hợp Mandelbrot là tập bao gồm những số phức c sao cho z2+c vẫn hữu hạn với mọi lần lặp.
Ý tưởng:
	Ta chọn số phức cố định c và tính biểu thức z2+c với z là số phức biến đổi.
	Nếu chọn z = 0 thì z2+c = c. Thay z vào công thức (*) ta được c2+c.
	Tiếp tục thay z bằng giá trị mới, ta lại có: (c2+c)2+c, ...
	Cứ như vậy, ta thu được một dãy vô hạn các số z.
Uses crt,graph;
Const row=1;
	 col=1;
Var	x1,y1,x2,y2,kx,ky:real;
 	Gioihan:Byte;
	 x0,y0:word;
 	Diemduoi,Diemtren:Integer;
Procedure ThietLapDohoa;
Var gd,gm,gr:integer;
Begin
 gd:=0;
 Initgraph(gd,gm,'D:\bp\bgi');
End;
Procedure KhoiTao;
 Begin
 Diemduoi:=GetMaxX;
 Diemtren:=GetMaxY;
 x1:=-2; y1:=-1.25;
 x2:=0.5; y2:=1.25;
 kx:=(x2-x1)/diemduoi;
 ky:=(y2-y1)/diemtren;
 Gioihan:=50;
 End;
Procedure ManDelbrot;
 var dong,cot,dem:integer;
 P0,Q0,Modun,x,y,Aux:real;
 Begin
 cot:=0;
 While cot<=diemduoi do
 Begin
 P0:=x1+cot*kx;
 dong:=0;
 While dong<=(diemtren div 2) do
 Begin
 Q0:=y1+dong*ky;
 x:=0; y:=0;
 dem:=1; Modun:=1;
 While (dem<=gioihan)and(modun<4) do
 Begin
 Aux:=x;
 x:=x*x-y*y +P0;
 y:=2*y*Aux + Q0;
 Modun:=x*x + y*y;
 dem:=dem+1;
 End;
 If Modun<4 Then
 Begin
 PutPixel(cot,dong,3);
 PutPixel(cot,diemtren-dong,3);
 End;
 dong:=dong+row;
 End;
 cot:=cot+col;
 End;
 End;
Begin
 ThietLapDohoa;
 KhoiTao;
 Mandelbrot;
 readln;
 CloseGraph;
End.
Tập MandelBrot
Bài tập 10.14: 	Viết chương trình mô phỏng phép quay một tam giác quanh gốc tọa độ.
Ý tưởng:
	Ma trận của phép quay quanh gốc tọa độ: R = 
ó
Uses crt,Graph;
 Type ToaDo=Record
 x,y:real;
 End;
 var k,Alpha,goc:real;
 P,PP,PPP,P1,P2,P3:ToaDo;
 x0,y0:word;
 ch:char;
Procedure ThietLapDohoa;
Var gd,gm,gr:integer;
Begin
 gd:=0;
 Initgraph(gd,gm,'D:\bp\bgi');
End;
Procedure VeTruc;
 Begin
 Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY);
 Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2);
 End;
Procedure VeHinh(P1,P2,P3:ToaDo);
 Begin
	Line(x0+Round(P1.x*k),y0-Round(P1.y*k),
	x0+Round(P2.x*k),y0-	Round(P2.y*k));
	Line(x0+Round(P2.x*k),y0-Round(P2.y*k),
	x0+Round(P3.x*k),y0-	Round(P3.y*k));
	Line(x0+Round(P3.x*k),y0-Round(P3.y*k),
	x0+Round(P1.x*k),y0-	Round(P1.y*k));
 End;
Procedure QuayDiem(P:ToaDo;Alpha:real; var PMoi:ToaDo);
 Begin
 PMoi.x:=P.x*cos(Alpha)-P.y*sin(Alpha);
 PMoi.y:=P.x*sin(Alpha)+P.y*cos(Alpha);
 End;
Procedure QuayHinh(P1,P2,P3:ToaDo;Alpha:real;
	 var P1Moi,P2Moi,P3Moi:ToaDo);
 Begin
 QuayDiem(P1,Alpha,P1Moi);
 QuayDiem(P2,Alpha,P2Moi);
 QuayDiem(P3,Alpha,P3Moi);
 End;
BEGIN
 ThietLapDoHoa;
 x0:=GetMaxX div 2;
 y0:=GetMaxY div 2;
 k:=GetMaxX/50;
 Vetruc;
 P.x:=5; P.y:=3; PP.x:=2; PP.y:=6; PPP.x:=6; PPP.y:=-4;
 P1:=P; P2:=PP; P3:=PPP;
 Alpha:=0; goc:=Pi/180;
 SetWriteMode(XORPut);
 VeHinh(P,PP,PPP);
 Repeat
 ch:=readkey;
 if ord(ch)=0 then ch:=readkey;
 case Upcase(ch) of
 'K': Begin
 VeHinh(P1,P2,P3);
 Alpha:=Alpha-goc;
 QuayHinh(P,PP,PPP,Alpha,P1,P2,P3);
 VeHinh(P1,P2,P3);
 End;
 'M': Begin
 VeHinh(P1,P2,P3);
 Alpha:=Alpha+goc;
 QuayHinh(P,PP,PPP,Alpha,P1,P2,P3);
 VeHinh(P1,P2,P3);
 End;
 End;
 Until ch=#27;
 CloseGraph;
END.
BÀI TẬP TỰ GIẢI
Bài tập 10.15: Viết chương trình vẽ bàn cờ quốc tế lên màn hình.
Bài tập 10.16: Viết chương trình vẽ một chiếc xe ô tô (theo hình dung của bạn) và cho nó chạy ngang qua màn hình.
Gợi ý:
	Dùng kỹ thuật lật trong màn hình hoặc di chuyển vùng màn hình.
Bài tập 10.17: Viết chương trình vẽ lá cờ tổ quốc đang tung bay.
Gợi ý:
	Dùng kỹ thuật lật trong màn hình.
Bài tập 10.18: Viết chương trình nhập vào n học sinh của một lớp học bao gồm 2 trường sau: Họ tên, điểm trung bình.
	a/ Hãy thống kê số lượng học sinh giỏi, khá, trung bình và yếu.
	b/ Vẽ biểu đồ thống kê số lượng học sinh giỏi, khá, trung bình và yếu theo 2 dạng: biểu đồ cột (column) và biểu đồ bánh tròn (Pie).
Bài tập 10.19: Viết chương trình để vẽ đồ thị của các hàm số sau:
	a/ y = ax3 + bx2 + cx +d
	b/ y = ax4 + bx3 + cx2 + dx + e
	c/ y = 
	d/ y = 
Bài tập 10.20: Hình vẽ cung Koch dựa trên 3 cạnh của tam giác đều như hình sau:
Bài tập 10.21: Viết chương trình để vẽ đường xoắn ốc.
Gợi ý:
	Dùng tọa độ cực.
Bài tập 10.22: Viết chương trình vẽ cái đồng hồ đang hoạt động.
Bài tập 10.23: Viết chương trình mô phỏng chuyển động của trái đất xung quanh mặt trời và đồng thời chuyển động của mặt trăng xung quanh trái đất. 
Gợi ý:
	Dùng ma trận của phép quay.
Bài tập 10.24: Xây dựng một thư viện (Unit) chứa tất cả các bài tập trong chương này. 
Bài tập 10.25: Viết chương trình tạo Menu đồ họa giống như các Menu trong môi trường WINDOWS (xem hình).
MỤC LỤC
Lời mở đầu	1
Chương 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH
PASCAL	2
Chương 2: CÁC KIỂU DỮ LIỆU CƠ BẢN – KHAI BÁO HẰNG, BIẾN, KIỂU, BIỂU THỨC VÀ CÂU LỆNH
I. Các kiểu dữ liệu cơ bản	6
II. Khai báo hằng	8
III. Khai báo biến	8
IV. Định nghĩa kiểu	9
V. Biểu thức	9
VI. Câu lệnh	9
Bài tập mẫu	11
Bài tập tự giải	12
Chương 3: CÁC CÂU LỆNH CÓ CẤU TRÚC
I. Lệnh rẽ nhánh	15
II. Lệnh lặp	16
Bài tập mẫu	17
Bài tập tự giải	24
Chương 4: CHƯƠNG TRÌNH CON: THỦ TỤC VÀ HÀM
I. Khái niệm về chương trình con	27
II. Cấu trúc chung của một chương trình có sử dụng CTC	27
III. Biến toàn cục và biến địa phương	28
IV. Đệ qui	29
V. Tạo thư viện (UNIT)	31
Bài tập mẫu	33
Bài tập tự giải	36
Chương 5: DỮ LIỆU KIỂU MẢNG
I. Khai báo mảng	38
II. Xuất nhập trên dữ liệu kiểu mảng	38
Bài tập mẫu	38
Bài tập tự giải	50
Chương 6: XÂU KÝ TỰ
I. Khai báo kiểu xâu ký tự	53
II. Truy xuất dữ liệu kiểu String	53
III. Các phép toán trên xâu ký tự	53
IV. Các thủ tục và hàm về xâu ký tự	53
Bài tập mẫu	54
Bài tập tự giải	60
Chương 7: KIỂU BẢN GHI
I. Khai báo dữ liệu kiểu bản ghi	63
II. Xuất nhập dữ liệu kiểu bản ghi	63
Bài tập mẫu	63
Bài tập tự giải	68
Chương 8: KIỂU FILE
I. Khai báo 	70
II. Các thủ tục và hàm chuẩn	70
III. File văn bản	72
IV. File không định kiểu	73
Bài tập mẫu	74
Bài tập tự giải	85
Chương 9: KIỂU CON TRỎ
I. Khai báo	91
II. Làm việc với biến động	91
III. Danh sách động	92
Bài tập mẫu	94
Bài tập tự giải	108
Chương 10: ĐỒ HỌA
I. Màn hình trong chế độ đồ hoạ	113
II. Khởi tạo và thoát khỏi chế độ đồ hoạ	113
III. Toạ độ và con trỏ trên màn hình đồ hoạ	115
IV. Đặt màu trên màn hình đồ hoạ	115
V. Cửa sổ trong chế độ đồ hoạ	115
VI. Viết chữ trong chế độ đồ họa	116
VII. Vẽ các hình cơ bản	116
VIII. Tô màu các hình	117
IX. Các kỹ thuật tạo hình chuyển động	119
Bài tập mẫu	120
Bài tập tự giải	141
Mục lục	143

File đính kèm:

  • docGiáo án Lập trình Pascal - Lê Văn Cường.doc
Tài liệu liên quan