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)
lượt xem 18
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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)
- Chương 9 Chương trình con: Thủ tục và hàm (Procedure và Function) Chương trình con luôn luôn được dùng, rất phổ biến và là một kiến thức căn bản. Vì vậy cần nắm vững để vận dụng ở mọi nơi, mọi lúc. 9.1
- Khái niệm về chương trình con Các đoạn c/t được lặp đi lặp lại thường được lập sẵn để trong thư viện CTC. Chia thư viện thành các nhóm (UNIT) Tác dụng: Chia ra các modun nhỏ để dễ phát triển, để dễ 'trị'. Có 2 loại CTC: Procedure Thủ tục Function Hàm 9.2
- Function là CTC trả lại một giá trị kết quả qua tên của nó và do đó nó được sử dụng trong các biểu thức. y:=sin(x) + sqrt(x). x là tham số Procedure không trả lại kết quả qua tên của Procedure. - Không thể gọi Procedure trong biểu thức. - Nó có thể dùng như một câu lệnh độc lập. Readln(x); Writeln(x). x là tham số 9.3
- PROCEDURE Tên_Thủ_Tục(Các tham số); hoặc FUNCTION Tên_Hàm(Các tham số):kiểu_dữ_liệu; Label ... Const ... Type ... Var (* của riêng Procedure, nếu cần *) ... Begin ... (* Thân chương trình con *) End; 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; 9.5 End.
- Program VIDU; USES CRT; (* CRT là một UNIT chứa các CTC về màn 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 0 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" sẽ là các tham số giá trị. Khi ra khỏi CTC, giá trị của tham trị không thay đổi so với lúc vào. Ví như mượn vật mẫu. Tham số là các kết quả muốn thu lại được sau CTC: chắc chắn phải khai báo là tham biến (xem tham số trong thủ tục tính x2 ở ví dụ trên). Ví như 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); 0 3 Thidu_Thamso(a, b); 1 4 Writeln(a:6, b:6); 0 4 End. 9.10
- Procedure ? Function Chương trình con là Function khi và chỉ khi thỏa mãn đồng thời ba yêu cầu sau: Nếu ta muốn nhận lại một kết quả (và chỉ một mà thôi). Kết quả đó phải là kiểu vô hướng hoặc kiểu con trỏ (sẽ học sau). Có cần dùng tên CTC chứa kết quả để viết trong các biểu thức không ? 9.11
- 2 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 và 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; 5 giá trị của I toàn cục (*---------------------*) Begin 7 giá trị của I địa phương I:=5; Writeln(I:6); 5 giá trị của I toàn cục DIA_PHUONG; Writeln(I:6); 9.13 End.
- Bài tập tại lớp 3. Viết CTC tính n! Sau đó hãy lập chương trình hoàn chỉnh để tính n! k Cn k!(n k)! 9.14
- Tính đệ qui của CTC CTC có thể gọi lại chính nó ! 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 := 1 else GIAI_THUA := n*GIAI_THUA(n-1); End; 9.15
- Cọc 1 Cọc 2 Cọc 3 Tháp Hà nội Hãy di chuyển chồng đĩa từ cọc 1 sang cọc 2 với điều kiện Mỗi lần chỉ chuyển một đĩa Có thể chuyển từ cọc này sang cọc khác Đĩa bé bao giờ cũng phải nằm trên đĩa lớn Với 64 đĩa, mỗi lần 1 giây, mất 58 tỉ năm 9.16
- PROGRAM THAP_HA_NOI; Var N: integer; Procedure DICH_CHUYEN(N, C1, C2, C3:integer); Begin If N=1 Then Writeln(C1, ' -> ', C2) else Begin DICH_CHUYEN(N-1, C1, C3, C2); DICH_CHUYEN( 1, C1, C2, C3); DICH_CHUYEN(N-1, C3, C2, C1); End; End; Begin Write(' N = '); Readln(N); DICH_CHUYEN(N, 1, 2, 3); 9.17 End.
- Bài tập về tính đệ qui 4. Tạo dãy số Fibonacci Dãy số Fibonacci là dãy số F1, F2, F3, .... Fn được tạo ra 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 con đệ qui để tạo ra dãy số đó. 5. Đảo chữ số. Viết chương trình đảo các chữ số của một số. Yêu cầu sử dụng chương trình con đệ qui. Thí dụ Đọc vào một số: 12345 Đảo số in ra: 54321 9.18
- Đơn vị chương trình Thư viện CTC được chia thành nhóm thư viện nhỏ, được gọi là UNIT CRT xử lí màn hình ( GOTOXY, ClrScr...) ... PRINTER các thủ tục in như Writeln (Lst, ....). DOS khai thác các hàm của DOS. SYSTEM các CTC về hệ thống. Các UNIT trên nằm trong file TURBO.TPL (TPL: Turbo Pascal Library) nên sẽ không có các tệp như CRT.TPU, SYSTEM.TPU... GRAPH UNIT về đồ hoạ, GRAPH.TPU. Tham khảo 'Turbo PASCAL, cẩm nang tra cứu' 9.19
- Chương trình của bạn đã quá lớn, có nhiều CTC đã hoàn chỉnh, không phải dịch đi dịch lại nên nhóm các CTC lại thành UNIT theo nhóm chức năng. Thí dụ (nên tra cứu tài liệu): EDIT.PAS, Primary file, tệp chính K.PAS, UNIT chứa các CTC khi ấn Ctrl_K Q.PAS, UNIT chứa các CTC khi ấn Ctrl_Q O.PAS, UNIT chứa các CTC khi ấn Ctrl_O KEYBOARD.PAS, UNIT chứa CTC bàn phím Khi dịch các UNIT này sẽ nhận được *.TPU (Turbo PASCAL Unit). Dịch CT chính (Primary file) EDIT.PAS sẽ cho tệp EXE sau khi kết nối các modun, UNIT lại với nhau. 9.20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Ngôn ngữ lập trình Java căn bản
115 p | 351 | 104
-
Bài giảng Ngôn ngữ lập trình C++: Chương 1 - Trần Minh Châu
17 p | 250 | 54
-
Bài giảng Ngôn ngữ lập trình C# - Nguyễn Hồng Phương
409 p | 214 | 41
-
Bài giảng Ngôn ngữ lập trình ứng dụng: Phần 1 – ĐH CNTT&TT
45 p | 112 | 13
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 1: Ngôn ngữ lập trình C) - Chương 1: Ôn tập một số nội dung chính của NNLT C
31 p | 157 | 13
-
Bài giảng Ngôn ngữ lập trình bậc cao - Th.S Đoàn Thị Thu Huyền
44 p | 150 | 10
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - TS. Nguyễn Thị Hiền
12 p | 62 | 9
-
Bài giảng Ngôn ngữ lập trình - Nguyễn Văn Linh
109 p | 118 | 8
-
Bài giảng Ngôn ngữ lập trình C - Chương 1: Giới thiệu ngôn ngữ C
4 p | 104 | 8
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 1 - TS. Đỗ Đăng Khoa
53 p | 112 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 5: Các lớp nhập/xuất trong C++
19 p | 132 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ C++) - Chương 2: Giới thiệu về ngôn ngữ lập trình C++
49 p | 137 | 7
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - PhD. Nguyễn Thị Huyền
12 p | 55 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 3: Lớp và đối tượng
52 p | 112 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++: Bài 4 - TS. Đỗ Đăng Khoa
40 p | 95 | 5
-
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 1) – Nguyễn Hải Châu
7 p | 142 | 5
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 6: Mẫu (template)
27 p | 85 | 4
-
Bài giảng Ngôn ngữ lập trình: Bài 1 - Lý Anh Tuấn
30 p | 82 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn