Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
360,74 KB
Nội dung
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, chúng tơi 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 đó, chúng tơi 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 tố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 để hồn chỉnh nội dung giáo trình Chúng tơi 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 hồn thiện Huế, Tháng 07 Năm 2004 CÁC TÁC GIẢ ThuVienDeThi.com Giáo trình tập Pascal Chương 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 Ngồ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 ThuVienDeThi.com Giáo trình tập Pascal Write(‘Hello World!’); END Ví dụ 2: 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: Xố 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 + ThuVienDeThi.com Giáo trình tập Pascal 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ừ khố 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 tố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ừ khố KY TU Sai có khoảng trắng (space) LAP-TRINH Sai dấu trừ (-) phép tố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} ThuVienDeThi.com Giáo trình tập Pascal 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 Dịch chạy chương trình Lưu chương trình vào đĩa với tên BAI1.PAS Thốt khỏi Pascal Khởi động lại Turbo Pascal Mở file BAI1.PAS Chèn thêm vào dòng: CLRSCR; vào sau dòng BEGIN Dịch chạy thử chương trình 10 Lưu chương trình vào đĩa 11 Thốt khỏi Pascal 12 Viết chương trình in hình hình sau: * ******** ******* *** ** ** ** ** ** ** ** ** ** ** ** ******** ** ********* ** ** ** ** ** ** ** ** ** ** ** ******** ******** ThuVienDeThi.com Giáo trình tập Pascal 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 TRUE TRUE FALSE FALSE B TRUE FALSE TRUE FALSE A AND B TRUE FALSE FALSE FALSE A OR B TRUE TRUE TRUE FALSE A XOR B FALSE TRUE TRUE FALSE NOT A FALSE FALSE TRUE TRUE Kiểu số nguyên 2.1 Các kiểu số nguyên Tên kiểu Shortint Byte Integer Word LongInt Phạm vi -128 127 255 -32768 32767 65535 -2147483648 2147483647 Dung lượng byte byte byte byte byte 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 tốn: NOT, AND, OR, XOR ThuVienDeThi.com Giáo trình tập Pascal A B A AND B A OR B A XOR B 1 1 0 1 1 0 0 SHL (phép dịch trái): a SHL n a 2n 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 kiểu Single Real Double Extended Phạm vi 1.510-45 3.410+38 2.910-39 1.710+38 5.010-324 1.710+308 3.410-4932 1.110+4932 NOT A 0 1 Dung lượng byte byte byte 10 byte 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 (x0) 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) ThuVienDeThi.com Giáo trình tập Pascal Kiểu ký tự - Từ khố: CHAR - Kích thước: byte - Để biểu diễn ký tự, ta sử dụng số cách sau đây: Đặt ký tự cặp dấu nháy đơn Ví dụ 'A', '0' Dùng hàm CHR(n) (trong n mã ASCII ký tự cần biểu diễn) Ví dụ CHR(65) biễu diễn ký tự 'A' Dùng ký hiệu #n (trong n mã ASCII ký tự cần biểu diễn) Ví dụ #65 - Các phép toán: =, >, >=, 0 d/ e | a sin ( x ) x| Bài tập 2.5: Viết chương trình tính siện tích tam giác theo cơng thức sau: 12 ThuVienDeThi.com Giáo trình tập Pascal S= p ( p a )( p b )( p c ) với p = (a+b+c) Bài tập 2.6: Viết chương trình tính khoảng cách từ điểm I(xi,yi) đến đường thẳng có phương trình D: Ax + By + C = Gợi ý: Cơng thức tính khoảng cách: h = A.xi B y i C A2 B Bài tập 2.7: Viết chương trình tách số n thành số a, b cho tích P=a*b2 đạt cực đại với n nhập vào từ bàn phím Gợi ý: Gọi x số thứ hai số thứ là: (n-x) Theo đề ta có: P(x) = x2.(n-x) Hàm P đạt cực đại P’(x) = -3x2 + 2nx = x = 2n/3 Bài tập 2.8: Màn hình đồ họa máy tính có độ phân giải: 640x480 Biết rằng, điểm hình chiếm byte Hỏi cần byte để lưu trữ tồn hình đồ họa đó? Có sinh viên viết chương trình tính số byte lưu trữ hình đồ họa: Program Sinhvien1; Var a,b:integer; s:Word; Begin a:=640; b:=480; s:=a*b; writeln(s); readln; End Program Sinhvien2; Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a*b; writeln(s); readln; End Hãy cho biết chương trình cho kết hay sai? Tại sao? Bài tập 2.9: Màn hình đồ họa máy tính có độ phân giải: 640x480 Biết rằng, điểm hình chiếm byte Hỏi cần byte để lưu trữ vùng có kích thước 1/10 hình đồ họa đó? Có sinh viên viết chương trình giải tốn sau: Program Sinhvien1; 13 ThuVienDeThi.com Giáo trình tập Pascal Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a; s:=s*b; s:=s DIV 10; writeln(s); readln; End Program Sinhvien2; Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a*b DIV 10; writeln(s); readln; End Hãy cho biết chương trình cho kết hay sai? Tại sao? 14 ThuVienDeThi.com Giáo trình tập Pascal Chương CÁC CÂU LỆNH CĨ CẤU TRÚC I CÂU LỆNH RẼ NHÁNH 1.1 Lệnh IF Cú pháp: (1) IF B THEN S; (2) IF B THEN S1 ELSE S2; Sơ đồ thực hiện: (1) + B (2) - + S B S1 - S2 Chú ý: Khi sử dụng câu lệnh IF đứng trước từ khố ELSE khơng có dấu chấm phẩy (;) 1.2 Lệnh CASE Cú pháp: Dạng CASE B OF Const 1: S1; Const 2: S2; Const n: Sn; END; Dạng CASE B OF Const 1: S1; Const 2: S2; Const n: Sn; ELSE Sn+1; END; Trong đó: B: Biểu thức kiểu vơ hướng đếm kiểu nguyên, kiểu logic, kiểu ký tự, kiểu liệt kê 15 ThuVienDeThi.com Giáo trình tập Pascal Const i: Hằng thứ i, giá trị hằng, giá trị (phân cách dấu phẩy) đoạn (dùng hai dấu chấm để phân cách giá trị đầu giá trị cuối) Giá trị biểu thức giá trị tập i (i=1¸n) phải có kiểu Khi gặp lệnh CASE, chương trình kiểm tra: - Nếu giá trị biểu thức B nằm tập const i máy thực lệnh Si tương ứng - Ngược lại: + Đối với dạng 1: Khơng làm + Đối với dạng 2: thực lệnh Sn+1 II CÂU LỆNH LẶP 2.1 Vòng lặp xác định Có hai dạng sau: Dạng tiến FOR := TO DO S; Dạng lùi FOR := DOWNTO DO S; Sơ đồ thực vòng lặp FOR: Dạng tiến Dạng lùi Biến đếm:=Min Biến đếm:=Max Biến đếm=Max Thoát S; DEC(Biến đếm); Thoát Chú ý: Khi sử dụng câu lệnh lặp FOR cần ý điểm sau: Không nên tuỳ tiện thay đổi giá trị biến đếm bên vịng lặp FOR làm khơng kiểm sốt biến đếm 16 ThuVienDeThi.com Giáo trình tập Pascal Giá trị Max Min câu lệnh FOR xác định vào đầu vịng lặp Do cho dù vịng lặp ta có thay đổi giá trị số lần lặp khơng thay đổi 5.3.2 Vịng lặp khơng xác định Dạng REPEAT Dạng WHILE Repeat While B Do S; S; Until B; Ý nghĩa: Dạng REPEAT: Lặp lại công việc S biểu thức B=TRUE dừng Dạng WHILE: Trong biểu thức B=TRUE tiếp tục thực cơng việc S Repeat While S B - - + B S; Thoát + Thoát BÀI TẬP MẪU Bài tập 3.1: Viết chương trình nhập vào số nguyên kiểm tra xem số vừa nhập số chẵn hay số lẻ Uses crt; Var x:integer; Begin Write('Nhap vao mot so nguyen : '); Readln(x); If x MOD 2=0 Then Writeln('So vua nhap vao la so chan') Else Writeln('So vua nhap vao la so le'); 17 ThuVienDeThi.com Giáo trình tập Pascal Readln; End Bài tập 3.2: Viết chương trình giải phương trình bậc ax+b=0 Uses Crt; Var a,b,x : real; Begin Write('a = '); Readln(a); Write('b = '); Readln(b); If a = Then { Nếu a } If b = Then { Trường hợp a = b = } Writeln('Phuong trinh co vo so nghiem') Else { Trường hợp a=0 b } Writeln('Phuong trinh vo nghiem') Else { Trường hợp a } Begin x:= -b/a; Writeln('Phuong trinh co nghiem la :',x:0:2); End; Readln; End Bài tập 3.3: Viết chương trình nhập vào tuổi người cho biết người thiếu niên, niên, trung niên hay lão niên Biết rằng: tuổi nhỏ 18 thiếu niên, từ 18 đến 39 niên, từ 40 đến 60 trung niên lớn 60 lão niên Uses crt; Var tuoi:Byte; Begin Write(Nhap vao tuoi cua mot nguoi:'); Readln(tuoi); Case tuoi Of 17: Writeln(Nguoi la thieu nien'); 18 39: Writeln(Nguoi la nien'); 40 60: Writeln(Nguoi la trung nien'); Else Writeln(Nguoi la lao nien'); End; Readln; 18 ThuVienDeThi.com Giáo trình tập Pascal End Bài tập 3.4: Viết chương trình tính tổng S = 1+2+ +N Cách 1: Dùng vòng lặp FOR Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; For i:=1 to N S:=S+i; Writeln('Ket qua la :',S); Readln; End Cách 2: Dùng vòng lặp REPEAT Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; i:=1; Repeat S:=S+i; i:=i+1; Until i>N; Writeln('Ket qua la :',S); Readln; End Cách 3: Dùng vòng lặp WHILE Program TinhTong; Uses crt; Var N,i,S:integer; Begin Clrscr; 19 ThuVienDeThi.com Giáo trình tập Pascal Write('Nhap vao gia tri cua N :'); Readln(N); S:=0; i:=1; While i