Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 143 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
143
Dung lượng
325,37 KB
Nội dung
Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com GIÁO ÁN TRÌNH PASCAL Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com MỤC LỤC Lời mở đầu 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 liệu II Khai báo III Khai báo biến IV Định nghĩa kiểu .9 V Biểu thức VI Câu lệnh 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 chương trình 27 II Cấu trúc chung chương trình có sử dụng CTC 27 III Biến toàn cục 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 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 liệu kiểu String 53 III Các phép toán xâu ký tự 53 IV Các thủ tục hàm 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 2 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com I Khai báo liệu kiểu ghi 63 II Xuất nhập liệu kiểu 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 hàm chuẩn 70 III File vă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 chế độ đồ hoạ 113 II Khởi tạo thoát khỏi chế độ đồ hoạ .113 III Toạ độ trỏ hình đồ hoạ 115 IV Đặt màu hình đồ hoạ 115 V Cửa sổ chế độ đồ hoạ 115 VI Viết chữ chế độ đồ họa 116 VII Vẽ hình 116 VIII Tô màu 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 3 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com LỜI MỞ ĐẦU Theo khung chương trình Bộ Giáo Dục Đào Tạo, Ngôn ngữ Lập trình Pascal phần quan trọng học phần Tin học Đại cương thuộc khối ngành Khoa học Tự nhiên, đặc biệt ngành Công nghệ Thông tin Nhằm đáp ứng yêu cầu học tập học sinh, sinh viên bước đầu làm quen với công việc lập trình, biên soạn Giáo Trình Bài tập Pascal nhằm giúp cho sinh viên có tài liệu học tập, rèn luyện tốt khả lập trình, tạo tảng vững cho môn học chương trình đào tạo Cử nhân Công nghệ Thông tin Giáo trình bai gồm nhiều tập từ đơn giản đến phức tạp Các tập biên soạn dựa khung chương trình giảng dạy môn Tin học Đại cương Bên cạch đó, bổ sung số tập dựa sở số thuật toán chuẩn với cấu trúc liệu mở rộng nhằm nâng cao kỹ năng, phương pháp lập trình cho sinh viên Nội dung giáo trình chia thành 10 chương Trong chương có phần tóm tắt lý thuyết, phần tập mẫu cuối phần tập tự giải để bạn đọc tự kiểm tra kiến thức kinh nghiệm học Trong phần tập mẫu, tập khó có thuật toán phức tạp, thường nêu ý tưởng giải thuật trước viết chương trình cài đặt Xin chân thành cảm ơn đồng nghiệp Khoa Công nghệ Thông tin Trường Đại học Khoa học Huế giúp đỡ, đóng góp ý kiến để hoàn chỉnh nội dung giáo trình Chúng hy vọng sớm nhận ý kiến đóng góp, phê bình bạn đọc nội dung, chất lượng hình thức trình bày để giáo trình ngày hoàn thiện Hà Tĩnh, Tháng 11 Năm 2017 Đoàn Sỹ Nguyên 4 Đoàn Sỹ Nguyên Chương Email: Doannguyenfc02@gmail.com CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH PASCAL Pascal ngôn ngữ lập trình bậc cao Niklaus Wirth, giáo sư điện toán trường Đại học kỹ thuật Zurich (Thụy Sĩ) đề xuất năm 1970 Ông lấy tên Pascal để kỷ niệm nhà toán học nhà triết học người Pháp tiếng Blaise Pascal Các tập tin cần thiết lập trình với Turbo Pascal Để lập trình với Turbo Pascal, tối thiểu cần file sau: • TURBO.EXE: Dùng để soạn thảo dịch chương trình • TURBO.TPL: Thư viện chứa đơn vị chuẩn để chạy với TURBO.EXE Ngoài ra, muốn lập trình đồ hoạ phải cần thêm tập tin: • GRAPH.TPU: Thư viện đồ hoạ • *.BGI: Các file điều khiển loại hình tương ứng dùng đồ hoạ • *.CHR: Các file chứa font chữ đồ họa Các bước lập chương trình Pascal Bước 1: Soạn thảo chương trình Bước 2: Dịch chương trình (nhấn phím F9), có lỗi phải sửa lỗi Bước 3: Chạy chương trình (nhấn phím Ctrl-F9) Cấu trúc chung chương trình Pascal { Phần tiêu đề } PROGRAM Tên_chương_trình; { Phần khai báo } USES ; CONST .; TYPE .; VAR ; PROCEDURE ; FUNCTION ; { Phần thân chương trình } BEGIN END Ví dụ 1: Chương trình Pascal đơn giản BEGIN Write(‘Hello World!’); END Ví dụ 2: 5 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com Program Vidu2; Const PI=3.14; Var R,S:Real; Begin R:=10; {Bán kính đường tròn} S:=R*R*PI; {Diện tích hình tròn} Writeln(‘Dien tich hinh tron = ‘, S:0:2); { In hình } Readln; End Một số phím chức thường dùng • F2: Lưu chương trình soạn thảo vào đĩa • • • • • • • F3: Mở file file tồn đĩa để soạn thảo Alt-F3: Đóng file soạn thảo Alt-F5: Xem kết chạy chương trình F8: Chạy câu lệnh chương trình Alt-X: Thoát khỏi Turbo Pascal Alt-: Dịch chuyển qua lại file mở F10: Vào hệ thống Menu Pascal Các thao tác soạn thảo chương trình 5.1 Các phím thông dụng • Insert: Chuyển qua lại chế độ đè chế độ chèn • • • • • • • • • Home: Đưa trỏ đầu dòng End: Đưa trỏ cuối dòng Page Up: Đưa trỏ lên trang hình Page Down: Đưa trỏ xuống trang hình Del: Xoá ký tự vị trí trỏ Back Space (): Xóa ký tự bên trái trỏ Ctrl-PgUp: Đưa trỏ đầu văn Ctrl-PgDn: Đưa trỏ cuối văn Ctrl-Y: Xóa dòng vị trí trỏ 5.2 Các thao tác khối văn • Chọn khối văn bản: Shift + 6 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com • Ctrl-KY: Xoá khối văn chọn • Ctrl-Insert: Đưa khối văn chọn vào Clipboard • Shift-Insert: Dán khối văn từ Clipboard xuống vị trí trỏ Các thành phần ngôn ngữ Pascal 6.1 Từ khóa Từ khoá từ mà Pascal dành riêng để phục vụ cho mục đích (Chẳng hạn như: BEGIN, END, IF, WHILE, ) Chú ý: Với Turbo Pascal 7.0 trở lên, từ khoá chương trình hiển thị khác màu với từ khác 6.2 Tên (định danh) Định danh dãy ký tự dùng để đặt tên cho hằng, biến, kiểu, tên chương trình Khi đặt tên, ta phải ý số điểm sau: • Không đặt trùng tên với từ khoá • Ký tự tên không bắt đầu ký tự đặc biệt chữ số • Không đặt tên với ký tự space,các phép toán Ví dụ: Các tên viết sau sai 1XYZ Sai bắt đầu chữ số #LONG Sai bắt đầu ký tự đặc biệt FOR Sai trùng với từ khoá KY TU Sai có khoảng trắng (space) LAP-TRINH Sai dấu trừ (-) phép toán 6.3 Dấu chấm phẩy (;) Dấu chấm phẩy dùng để ngăn cách câu lệnh Không nên hiểu dấu chấm phẩy dấu kết thúc câu lệnh Ví dụ: FOR i:=1 TO 10 DO Write(i); Trong câu lệnh trên, lệnh Write(i) thực 10 lần Nếu hiểu dấu chấm phẩy kết thúc câu lệnh lệnh Write(i) thực lần 6.4 Lời giải thích Các lời bàn luận, lời thích đưa vào chỗ chương trình người đọc dể hiểu mà không làm ảnh hưởng đến phần khác chương trình Lời giải thích đặt hai dấu ngoạc { } cụm dấu (* *) Ví dụ: Var a,b,c:Rea; {Khai báo biến} 7 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com Delta := b*b – 4*a*c; (* Tính delta để giải phương trình bậc *) BÀI TẬP THỰC HÀNH Khởi động Turbo Pascal Nhập vào đoạn chương trình sau: Uses Crt; Begin Writeln(‘***********************************************************’); Writeln(‘* CHUONG TRINH PASCAL DAU TIEN CUA TOI *’); Writeln(‘* Oi! Tuyet voi! *); Writeln(‘***********************************************************’); Readln; End Viết chương trình in hình hình sau: * ******** ******* *** ** ** ** ** ** ** ** ** ** ** ** ******** ** ********* ** ** ** ** ** ** ** ** ** ** ** ******** ******** 8 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com Chương 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 Kiểu logic - Từ khóa: BOOLEAN - miền giá trị: (TRUE, FALSE) - Các phép toán: phép so sánh (=, ) phép toán logic: AND, OR, XOR, NOT Trong Pascal, so sánh giá trị boolean ta tuân theo qui tắc: FALSE < TRUE Giả sử A B hai giá trị kiểu Boolean Kết phép toán thể qua bảng đây: A B A AND B A OR B A XOR B NOT A TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE Kiểu số nguyên 2.1 Các kiểu số nguyên Tên kiểu Phạm vi Dung lượng Shortint byte -128 → 127 Byte byte → 255 Integer byte -32768 → 32767 Word byte → 65535 LongInt byte -2147483648 → 2147483647 2.2 Các phép toán kiểu số nguyên 2.2.1 Các phép toán số học: +, -, *, / (phép chia cho kết số thực) Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV = 6) Phép chia lấy số dư: MOD (Ví dụ: 34 MOD = 4) 2.2.2 Các phép toán xử lý bit: Trên kiểu ShortInt, Integer, Byte, Word có phép toán: • NOT, AND, OR, XOR A B A AND B A OR B A XOR B NOT A 1 1 0 0 1 9 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com 1 1 0 0 n • SHL (phép dịch trái): a SHL n ⇔ a × • SHR (phép dịch phải): a SHR n ⇔ a DIV 2n Kiểu số thực 3.1 Các kiểu số thực: Tên Phạm vi Dung kiểu lượng -45 +38 Single byte 1.5×10 → 3.4×10 Real byte 2.9×10-39 → 1.7×10+38 -324 +308 Double byte 5.0×10 → 1.7×10 -4932 +4932 Extende 10 byte 3.4×10 → 1.1×10 d Chú ý: Các kiểu số thực Single, Double Extended yêu cầu phải sử dụng chung với đồng xử lý số phải biên dich chương trình với thị {$N+} để liên kết giả lập số 3.2 Các phép toán kiểu số thực: +, -, *, / Chú ý: Trên kiểu số thực không tồn phép toán DIV MOD 3.3 Các hàm số học sử dụng cho kiểu số nguyên số thực: SQR(x): Trả x2 SQRT(x): Trả bậc hai x (x≥0) ABS(x): Trả |x| SIN(x): Trả sin(x) theo radian COS(x): Trả cos(x) theo radian ARCTAN(x): Trả arctang(x) theo radian LN(x): Trả ln(x) EXP(x): Trả ex TRUNC(x): Trả số nguyên gần với x bé x INT(x): Trả phần nguyên x FRAC(x): Trả phần thập phân x ROUND(x): Làm tròn số nguyên x PRED(n): Trả giá trị đứng trước n SUCC(n): Trả giá trị đứng sau n ODD(n): Cho giá trị TRUE n số lẻ INC(n): Tăng n thêm đơn vị (n:=n+1) DEC(n): Giảm n đơn vị (n:=n-1) Kiểu ký tự - Từ khoá: CHAR - Kích thước: byte - Để biểu diễn ký tự, ta sử dụng số cách sau đây: 10 10 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com Khi vẽ đa giác N đỉnh, đỉnh nằm đường tròn (O,R) đồng thời khoảng cách hai đỉnh tâm tạo thành góc nhọn không đổi có giá trị 2*Pi/N Giả sử đỉnh thứ đa giác nằm đường thẳng tạo với tâm góc 00, đỉnh thứ hai tạo góc 2*Pi/N đỉnh thứ i tạo góc 2*Pi(i-1)/N Một cách tổng quát, ta tạo mảng để chứa tọa độ đỉnh Const Max = ; Type Mang = ARRAY[1 Max] of PointType; Var P:Mang; Giả sử chọn P0: PointType tọa độ tâm đa giác đỉnh thứ i đa giác tạo góc là: Angle:=2*Pi*(i-1)/N Nhưng đa giác có đỉnh tạo góc A0 thì: Angle:=2*Pi*((i-1)/N + A0/360) Và tọa độ đỉnh hình là: P[i].x := P0.x + R*cos(Angle) P[i].y := P0.y - R*sin(Angle) Ta xây dựng thủ tục để tự động lưu đỉnh đa giác vào mảng P Trong đó: P0 tọa độ tâm, A0 góc bắt đầu, R bán kính, N số đỉnh (31 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 135 135 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com C Cung Bài tập 10.13: Viết chương trình vẽ tập Mandelbrot - hình mặt phẳng phức Tập Mandelbrot phát sinh theo công thức sau: z → z2 + c (*) Tập hợp Mandelbrot tập bao gồm số phức c cho z 2+c hữu hạn với lần lặp Ý tưởng: Ta chọn số phức cố định c tính biểu thức z2+c với z số phức biến đổi Nếu chọn z = z2+c = c Thay z vào công thức (*) ta c2+c Tiếp tục thay z giá trị mới, ta lại có: (c2+c)2+c, Cứ vậy, ta thu dãy vô hạn 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 136 136 Đoàn Sỹ Nguyên Email: Doannguyenfc02@gmail.com cot:=0; While cot