Giao trinh pascal ha

86 20 0
  • Loading ...
1/86 trang

Thông tin tài liệu

Ngày đăng: 02/12/2016, 12:46

PHÒNG GIÁO DỤC ĐÀO TẠO TX DĨ AN  GIÁO ÁN TRÌNH PASCAL Giaso trình Turbo Pascal LỜI MỞ ĐẦU 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: Giaso trình Turbo Pascal • 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: 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 Giaso trình Turbo Pascal • • • • • 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 + • 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) Giaso trình Turbo Pascal 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} 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: * ******** ******* *** ** ** ** ** ** ** ** ** ** ** ** ******** ** ********* ** ** ** ** ** ** ** ** ** ** ** ******** ******** Giaso trình Turbo 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 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 0 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 kiểu Phạm vi Dung lượng Single byte 1.5×10-45 → 3.4×10+38 -39 +38 Real byte 2.9×10 → 1.7×10 -324 +308 Double byte 5.0×10 → 1.7×10 -4932 +4932 Extended 10 byte 3.4×10 → 1.1×10 Giaso trình Turbo Pascal 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: • Đặ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: =, >, >=, Max then Begin ldau:=i; Max:=Tong(M,i,j) ; dai:=j+1 End; Write('Xau co tong:',max,' bat dau tu: ',ldau, ' dai: ',dai); Readln End Nhận xét: 72 Giaso trình Turbo Pascal CHƯƠNG IX CHUYÊN ĐỀ CHỮ SỐ, HỆ CƠ SỐ A LÝ THUYẾT: - Trong hệ số 10: Số A = an….a2a1a0 = a0 + 10a1 + … +10nan nên: Để lấy số a0 = A mod 10; Để xóa chữ số a0 ta dùng A:=A div 10 (Tương tự: Để lấy hai số tận a1a0 = A mod 100; Để xóa hai chữ số a1 a0 ta dùng A:=A div 100 - Thuật toán vét cạn: Để xét tất trường hợp số A ta xét a n = 9; an-1….a2a1a0 =0 - Hệ số 2: Nếu hệ thập phân dùng 10 chữ số để ghi số hệ số dùng hai chữ số để ghi số - Đổi số từ số sang số 10: - Đổi số từ số 10 sang số 2: - Hệ số bất kỳ: - Vấn đề cộng, trừ, nhân, lũy thừa số lớn (hoặc kết số lớn) xem xét riêng chuyên đề (sau trang bị liệu kiểu string) B BÀI TOÁN: Bài tập 8.1: Gọi abcd số có chữ số Hãy lập chương trình tìm tất số có chữ số thỏa mãn biểu thức: abcd=(ab + cd)2 Ví dụ: số 2025=(20 + 25)2 73 Giaso trình Turbo Pascal Thuật toán: Kiểm tra tất số có bốn chữ số theo cách sau; - Tách lấy hai số đầu, hai số sau số có bốn chữ số để kiểm tra - Kiểm tra trường hợp chữ số Cách 1: Program Tach_so; Var haisodau, haisocuoi, i : integer; Begin Writeln( ‘ cac so thoa man dieu kien gom co’); For i:=1000 to 9999 Begin haisodau:=i Div 100;{lay so dau tien ab} haisocuoi:=i mod 100;{lay so cuoi cd} If i=SQR(haisodau + haisocuoi) then write(i:5); End; Readln; End Cách 2: Program Xet_so; Var a,b,c,d : integer; Begin Writeln( ‘ cac so thoa man dieu kien gom co’); For a:=1 to For b:=0 to For c:=0 to For d:=0 to If i=(1000*a + 100*b + 10*c+ d) = SQRT(10*a+b + 10*c+d) then write(i:5); Readln; End Bài tập 8.2: Viết chương trình cho nhập hai số tự nhiên N k Hãy cho biết chữ số thứ k tính từ trái sang phải số N số mấy? k lớn độ dài N k thông báo không tìm Ví dụ 1: Với N k nhập: N = 65932, k = Kết tìm Ví dụ 2: Với N k nhập: N = 65932, k = 10 Kết tìm -1 ( k lớn độ dài số N) Program Chu_so_thu_k; Var M: array[1 10] of integer; so: Longint; i,k:integer; Begin Write('Nhap so: ');Readln(so); so:=abs(so); 74 Giaso trình Turbo Pascal Write('Nhap k: ');Readln(k); i:=0; While so>0 begin i:=i+1; M[i]:=so mod 10; so:=so div 10; end; Write('Chu so thu ',k,'la: ',M[i-k+1]); Readln End Nhận xét : Nếu toán yêu cầu tìm chữ số thứ k tính từ phải sang trái đơn giản nhiều Lúc ta cần xóa k-1 chữ số cuối Rồi lấy chữ số cuối Bài tập 8.2: Một số gọi số bậc thang biểu diễn thập phân có nhiều chữ số đồng thời theo chiều từ trái qua phải, chữ số đứng sau không nhỏ chữ số đứng trước Viết chương trình in số bậc thang đoạn [n1, n2] với n1, n2 nhập từ bàn phím Program So_bac_thang; Var i,n1,n2: integer; Function BT(n:integer):Boolean; Var ok: boolean; so:byte; Begin ok:=true; While n>=10 Begin so:=n mod 10; n:=n div 10; if so < (n mod 10) then ok:=ok and false; End; BT:=ok; End; Begin Write('Nhap so n1: ');Readln(n1); Write('Nhap so n2: ');Readln(n2); For i:= n1 to n2 if BT(i) then Write(i:4); Readln End Bài tập 8.3: Viết chương trình cho phép đổi số từ số 10 sang số 75 Giaso trình Turbo Pascal Thuật toán: - Dùng mảng CS để lưu chữ số - Lặp n việc: Chia n cho s lấy phần dư Lấy phần dư làm số để lấy lưu chữ số Gán n = n div s - Chú ý chữ số lấy sau nằm trước Program Doi_co_so; Var n,s: longint; Function D10_CS(n:longint;s:byte):string; Var CS: array[0 100] of char; i: integer; ch:Char; Tam:string; Begin {Khoi tao cac chu so den 9} i:=0; ch:='0'; while i= BAC(B,n) Begin cs:=BAC(A,n)-BAC(B,n); C[cs]:=A[Bac(A,n)]/B[Bac(B,n)]; Writeln('C[',cs,']=',C[cs]:3:1); DT_BAC(D,cs,C[cs]);Writeln; Write('Da thuc D:'); Indt(D,n); NHAN(AB,B,D,n);Writeln; Write('Da thuc AB:'); Indt(AB,n);Writeln; TRU(A,AB,n); Write('Da thuc A moi:'); Indt(A,n); End; Writeln('Da thuc thuong: '); Indt(C,bc); Readln; Readln End 85 Giaso trình Turbo Pascal 86 [...]... ra, trong Pascal còn cho phép các CTC lồng vào nhau II CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC PROGRAM Tên_chương_trình; USES CRT; CONST ; TYPE ; VAR ; PROCEDURE THUTUC[(Các tham số)]; [Khai báo Const, Type, Var] BEGIN END; FUNCTION HAM[(Các tham số)]:; [Khai báo Const, Type, Var] BEGIN HAM:=; END; BEGIN {Chương trình chính} THUTUC[( )]; A:= HAM[( )];... Write(‘Nhap a=’); Readln(a); Write(‘Nhap b=’); Readln(b); Writeln(‘So lon nhat trong 2 so la: ‘, Max(a,b)); Readln; End Bài tập 4.2: Viết hàm LOWCASE( c:char):char; để đổi chữ cái hoa c thành chữ thường Ý tưởng: Trong bảng mã ASCII, số thứ tự của chữ cái hoa nhỏ hơn số thứ tự của chữ cái thường là 32 Vì vậy ta có thể dùng 2 hàm CHR và ORD để chuyển đổi 23 Giaso trình Turbo Pascal Uses crt; Var ch:Char;... Function LOWCASE(c:Char):Char; Begin If c IN [‘A’ ’Z’] Then LOWCASE:=CHR(ORD(c)+32) Else LOWCASE:=c; End; Begin Write(‘Nhap ký tu ch=’); Readln(ch); Writeln(‘Ky tu hoa la: ‘, LOWCASE(ch)); Readln; End Bài tập 4.3: Viết thủ tục để hoán đổi hai gía trị x,y cho nhau Var a,b:Real; Function Swap(Var x,y:Real); Var Tam:Real; Begin Tam:=x; x:=y; y:=Tam; End; Begin Write(‘Nhap a=’); Readln(a); Write(‘Nhap b=’); Readln(b);... Writeln('Phuong trinh co vo so nghiem') Else { Trường hợp a=0 và b ≠ 0 } Writeln('Phuong trinh vo nghiem') Else { Trường hợp a ≠ 0 } 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 của một người và cho biết người đó là thiếu niên, thanh niên, trung niên hay lão niên Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 là thanh niên,... một số nguyên và kiểm tra xem số vừa nhập là 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'); Readln; End Bài tập 3.2: Viết chương trình giải phương trình bậc nhất ax+b=0 Uses Crt; 13 Giaso trình Turbo Pascal Var a,b,x : real; Begin Write('a = '); Readln(a);... A:Mang); Var ch:Char; x:Integer; Begin n:=0; Repeat Write('x='); Readln(x); If not KiemTra(x,n,A) Then Begin n:=n+1; A[n]:=x; End; Writeln('An ESC de ket thuc nhap!'); ch:=Readkey; Until ch=#27; End; Procedure GiaoAB(n:Byte; A:Mang;m:Byte; B:Mang); Var i:Byte; Begin For i:=1 To n Do 32 Giaso trình Turbo Pascal If KiemTra(A[i],m,B) Then Write(A[i]:4); End; Begin Clrscr; Writeln('Nhap mang A: '); NhapMang(n,A);... NhapMang(n,A); Writeln('Nhap mang B: '); NhapMang(m,B); Writeln( 'Giao cua 2 mang A&B la: '); GiaoAB(n,A,m,B); Readln; End Bài tập 5.11: Cho một mảng số nguyên gồm n phần tử Tìm dãy con gồm m phần tử (m≤n) sao cho dãy con này có tổng lớn nhất (Dãy con là dãy các phần tử liên tiếp nhau trong mảng) Uses Crt; Type Mang=ARRAY[1 50] Of Integer; Var A:Mang; n,m,i,j,k:Byte; S,Max:Integer; Begin Write('So phan tu cua mang:... tới N: Nếu a[i]>Max thì thay Max:=a[i]; Uses Crt; Type Mang = ARRAY[1 50] Of Integer; Var A:Mang; N,i,Max:Integer; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; {Tìm phần tử lớn nhất} Max:=A[1]; For i:=2 To N Do If Max
- Xem thêm -

Xem thêm: Giao trinh pascal ha, Giao trinh pascal ha, Giao trinh pascal ha

Gợi ý tài liệu liên quan cho bạn

Nạp tiền Tải lên
Đăng ký
Đăng nhập