Bài giảng Ngôn ngữ lập trình Pascal: Chương 9 - Chương trình con - Thủ tục và hàm (Procedure và Function)

23 27 0
Bài giảng Ngôn ngữ lập trình Pascal: Chương 9 - Chương trình con - Thủ tục và hàm (Procedure và Function)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương trình con là các đoạn chương trình được lặp đi lặp lại thường được lập sẵn trong thư viện CTC. Và để hiểu rõ hơn về điều này mời các bạn tham khảo bài giảng Ngôn ngữ lập trình Pascal: Chương 9 - Chương trình con - Thủ tục và hàm (Procedure và Function) sau đây.

Chương Chương trình con: Thủ tục hàm (Procedure Function)  Chương trình ln ln dùng, phổ biến kiến thức Vì cần nắm vững để vận dụng nơi, lúc 9.1 Khái niệm chương trình     Các đoạn c/t lặp lặp lại thường lập sẵn để thư viện CTC Chia thư viện thành nhóm (UNIT) Tác dụng: Chia modun nhỏ để dễ phát triển, để dễ 'trị' Có loại CTC:  Procedure Thủ tục  Function Hàm 9.2 Function  CTC trả lại giá trị kết qua tên sử dụng biểu thức y:=sin(x) + sqrt(x) x tham số  Procedure không trả lại kết qua tên Procedure - Không thể gọi Procedure biểu thức - Nó dùng câu lệnh độc lập Readln(x); Writeln(x) x tham số 9.3 PROCEDURE Tên_Thủ_Tục(Các tham số); FUNCTION Tên_Hàm(Các tham số):kiểu_dữ_liệu; Label Const Type Var Begin End; (* riêng Procedure, cần *) (* Thân chương trình *) 9.4 USES CRT; Var A, B, C, D : integer; Z: real; Procedure Tieu_de; Begin End; Procedure Enter(Var X, Y: integer); Begin End; Function Chia(X, Y: integer): real; Begin End; Begin Tieu_de; Enter(A, B); Enter(C, D); Z := Chia (A, B)*Chia(C, D); Writeln('Ti so (A/B)*(C/D) la : ', Z); Write(' Hay an Enter de tiep tuc !'); Readln; End 9.5 Program VIDU; USES CRT; (* CRT UNIT chứa CTC hình, bàn phím *) Var A, B, C, D : integer; Z: real; (* *) Procedure Tieu_de; Begin writeln('*****************************'); writeln('* MINH HOA CHUONG TRINH CON *'); writeln('*****************************') End; 9.6 (* *) Procedure Enter(Var X, Y: integer); Var OK : Char; Begin Repeat Write('Tu so = '); Readln(X); Write('Mau so = '); Readln(Y); Write(' Co sua so lieu khong (Co/Khong) ?'); OK := ReadKey; Writeln; until (OK='K') or (OK='k'); End; 9.7 (* *) Function Chia(X, Y: integer): real; Begin If Y then Chia := X / Y Else Begin Writeln(#7,'Khong chia đuoc mau so = 0.'); Halt; { Thủ tục Halt dừng chương trình lại } End; End;  Bài tập: Tính Z = (A/B)/(C/D) 9.8 Tham biến ? tham trị  Các tham số đóng vai trò cung cấp "tư liệu đầu vào" tham số giá trị Khi khỏi CTC, giá trị tham trị không thay đổi so với lúc vào Ví mượn vật mẫu  Tham số kết muốn thu lại sau CTC: chắn phải khai báo tham biến (xem tham số thủ tục tính x2 ví dụ trên) Ví mượn xà phòng tắm 9.9 Program Tham_so; Var a, b: integer; (* *) Procedure Thidu_Thamso(x:integer; Var y:integer); Begin x:=x+1; y:=y+1; writeln(x:6, y:6); End; (* *) Begin a:=0; b:=3; Writeln(a:6, b:6); Thidu_Thamso(a, b); Writeln(a:6, b:6); End 9.10 Procedure ? Function Chương trình Function thỏa mãn đồng thời ba yêu cầu sau:  Nếu ta muốn nhận lại kết (và mà thôi)  Kết phải kiểu vơ hướng kiểu trỏ (sẽ học sau)  Có cần dùng tên CTC chứa kết để viết biểu thức không ? 9.11 2 c=a +b FUNCTION BINH_PHUONG (X: real): REAL; Begin BINH_PHUONG := X*X; End; c:= BINH_PHUONG(a)+ BINH_PHUONG(b); PROCEDURE BINH_PHUONG(X:Real; VAR X2: REAL); Begin X2 := X*X; End; BINH_PHUONG(a, z); C:=z; 9.12 BINH_PHUONG(b, z); C:=C+z; Biến toàn cục biến địa phương Khái niệm tầm tác dụng Thí dụ 9.3 PROGRAM TAM_TAC_DUNG; Var I: integer; (* biến I toàn cục *) (* -*) Procedure DIA_PHUONG; Var I: integer; (* biến I địa phương *) Begin  I := 7; Writeln(I:6); End; giá trị I toàn cục (* -*) giá trị I địa phương Begin giá trị I toàn cục I:=5; Writeln(I:6); DIA_PHUONG; Writeln(I:6); 9.13 End Bài tập lớp Viết CTC tính n! Sau lập chương trình hồn chỉnh để tính k Cn n!  k!(n  k)! 9.14 Tính đệ qui CTC CTC gọi lại !  Tính n!=1.2.3 n n nguyên dương FUNCTION GIAI_THUA(n: integer):integer; Begin If n=0 then GIAI_THUA := else GIAI_THUA := n*GIAI_THUA(n-1); End; 9.15 Cọc Cọc Cọc Tháp Hà nội Hãy di chuyển chồng đĩa từ cọc sang cọc với điều kiện  Mỗi lần chuyển đĩa  Có thể chuyển từ cọc sang cọc khác  Đĩa bé phải nằm đĩa lớn  Với 64 đĩa, lần giây, 58 tỉ năm 9.16 PROGRAM THAP_HA_NOI; Var N: integer; Procedure DICH_CHUYEN(N, C1, C2, Begin If N=1 Then Writeln(C1, ' -> else Begin DICH_CHUYEN(N-1, C1, C3, DICH_CHUYEN( 1, C1, C2, DICH_CHUYEN(N-1, C3, C2, End; End; Begin Write(' N = '); Readln(N); DICH_CHUYEN(N, 1, 2, 3); End C3:integer); ', C2) C2); C3); C1); 9.17 Bài tập tính đệ qui Tạo dãy số Fibonacci Dãy số Fibonacci dãy số F1, F2, F3, Fn tạo với cơng thức: Fn=Fn-1 + Fn-2 Với F1=1, F2=1 Thí dụ: 1, 1, 2, 3, 5, 8, 13, 21 Hãy lập chương trình dùng chương trình đệ qui để tạo dãy số Đảo chữ số Viết chương trình đảo chữ số số Yêu cầu sử dụng chương trình đệ qui Thí dụ Đọc vào số: 12345 Đảo số in ra: 54321 9.18 Đơn vị chương trình  Thư viện CTC chia thành nhóm thư viện nhỏ, gọi UNIT CRT PRINTER DOS SYSTEM xử lí hình ( GOTOXY, ClrScr ) thủ tục in Writeln (Lst, ) khai thác hàm DOS CTC hệ thống  Các UNIT nằm file TURBO.TPL (TPL: Turbo Pascal Library) nên khơng có tệp CRT.TPU, SYSTEM.TPU GRAPH UNIT đồ hoạ, GRAPH.TPU  Tham khảo 'Turbo PASCAL, cẩm nang tra cứu' 9.19  Chương trình bạn q lớn, có nhiều CTC hồn chỉnh, khơng phải dịch dịch lại  nên nhóm CTC lại thành UNIT theo nhóm chức Thí dụ (nên tra cứu tài liệu):      EDIT.PAS, Primary file, tệp K.PAS, UNIT chứa CTC ấn Ctrl_K Q.PAS, UNIT chứa CTC ấn Ctrl_Q O.PAS, UNIT chứa CTC ấn Ctrl_O KEYBOARD.PAS, UNIT chứa CTC bàn phím  Khi dịch UNIT nhận *.TPU (Turbo PASCAL Unit)  Dịch CT (Primary file) EDIT.PAS cho tệp EXE sau kết nối modun, UNIT lại với 9.20 Soạn thảo (Editor) KHOI1.PAS Primary file KHOI2.PAS VIDU1.PAS TEST.ASM Dịch (Compile) KHOI1.TPU KHOI2.TPU TEST.OBJ Kết nối (Link) + VIDU1.EXE 9.21 Một số CTC thông dụng Procedure GotoXY(XPos, YPos); [CRT Unit] Procedure ClrScr; [CRT Unit] Procedure ClrEol; [CRT Unit] Procedure Delay(Time); Procedure Sound(F) Procedure NoSound; Function KeyPressed: Boolean [CRT Unit] Function ReadKey: Char; [CRT Unit] Function Frac(X): real; Function Int(X): integer; Function Random: real; Function Random(Number): real; Procedure Randomize; Function UpCase(ch); 9.22 Thí dụ 9.9 PROMGRAM xReadKey Uses Crt; Var ch: Char; Begin Writeln('Hiển thị giá trị mã kí tự ASCII'); Writeln('ấn ESC để kết thúc.') Writeln; Repeat Writeln('kí tự ?'); ch := ReadKey; Writeln(ch,': giá trị mã ASCII =', Ord(ch)); Until ch= CHR(27) End 9.23 ... trình dùng chương trình đệ qui để tạo dãy số Đảo chữ số Viết chương trình đảo chữ số số Yêu cầu sử dụng chương trình đệ qui Thí dụ Đọc vào số: 12345 Đảo số in ra: 54321 9. 18 Đơn vị chương trình ... C1); 9. 17 Bài tập tính đệ qui Tạo dãy số Fibonacci Dãy số Fibonacci dãy số F1, F2, F3, Fn tạo với công thức: Fn=Fn-1 + Fn-2 Với F1=1, F2=1 Thí dụ: 1, 1, 2, 3, 5, 8, 13, 21 Hãy lập chương trình. .. gọi Procedure biểu thức - Nó dùng câu lệnh độc lập Readln(x); Writeln(x) x tham số 9. 3 PROCEDURE Tên _Thủ_ Tục( Các tham số); FUNCTION Tên _Hàm( Các tham số):kiểu_dữ_liệu; Label Const Type Var Begin

Ngày đăng: 11/05/2021, 19:55

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan