cấu trúc ct con trong pascal

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

cấu trúc ct con trong pascal

Bài gửi by luumanh9x99 on Thu 13 Jun 2013, 8:46 am


CHƯƠNG TRÌNH CON

I. Khái niệm về chương trình con (Sub-program)

Trong khi lập trình chúng ta thường gặp những chương trình lặp đi lặp lại nhiều lần ở các chỗ khác nhau. Để tránh rườm rà những đoạn chương trình này thường được thay thế bổi các chương trình con tương ứng. Khi cần ta chỉ cần gọi tên chương trình con đó ra.
Lý do thứ 2 để xây dựng chương trình con là trong một chương trình lớn và phức tạp dẫn đến một chương trình lớn và rất dài. Do đó việc sửa chữa chương trình sẽ rất khó khăn. Ta sẽ phân tích nó thành các vấn đề nhỏ hơn, dễ kiểm tra và cuối cùng ta chỉ cần ghép nó lại thành chương trình lớn hoàn thiện.
II. PROCEDURE và FUNCTION (Thủ tục và Hàm)

Trong Pascal có 2 loại chương trình con (CTC):
- PROCEDURE (Thủ tục)
- FUNCTION (hàm)
Sự khác nhau cơ bản và duy nhất của hai loại CTC này là FUNCTION trả về một giá trị kết quả vô hướng thông qua tên function và do đó nó có thể dử dụng như một biến, hằng, biểu thức. Còn PROCEDURE thì không trả về kết quả nào nên nó cũng không được vết trong biểu thức.
VD : Các PROCEDURE cơ bản trong Pascal
- Writeln
- Readln
_ Textcolor
Các FUNCTION cơ bản:
- Sin(x) : Trả về giá trị kiểu real
- Chr(i) : trả về giá trị kiểu char
III. Cấu trúc của một chương trình con

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
Code:
{Phần khai báo của chương trình chính}


Code:
VAR .....


Code:
CONST ....


Code:
{Chương trình con}


Code:
PROCEDURE Tên_thủ_tục (Khai báo các tham số nếu cần): kiểu dữ liệu;


Code:
{Phần khai báo chương trình con}


Code:
BEGIN


Code:
.....


Code:
END


Code:
;


Code:
FUNCTION Tên_hàm(Khai báo các tham số nếu cần): kiểu dữ liệu;


Code:
 


Code:
{Phần khai báo chương trình con}


Code:
BEGIN


Code:
.....


Code:
END


Code:
;


Code:
{Chương trình chính}


Code:
BEGIN


Code:
.....


Code:
END


Code:
.

IV. Truyền tham số cho chương trình con
Có 2 cách truyền tham số:
- Tham trị (value parameter)
- Tham biến (variable parameter)
VD : PROCEDURE Thidu(i,j:integer; VAR x,y:real);
Tham trị : i,j
Tham biến: x,y
Sù khác nhau giữa Tham trị và Tham biến:
- Tham trị có thể là hằng, biến, biểu thức. còn tham biến chỉ có thể là biến.
- Nếu Tham trị là biến thì giá trị của nó sẽ không thay đổi khi CTC thực hiện. Còn tham biến sẽ thay đổi giá trị nếu trong CTC có lệnh thay đổi nó.
VD :
* Hàm SIN (X)
Trong này X là tham trị và ta có thể viết:
- KQ := SIN (1); X=1
- KQ := SIN (Y*2); X=Y*2
- KQ := SIN (X); X=X
Và sau khi thực hiện giá trị của X không thay đổi
* Hàm DEC (X)
Trong này X là tham biến và ta có thể viết:
- DEC (X); X là biến kiểu nguyên
Không được viết:
- DEC (5); X là hằng.
- DEC (Y*2); X là biểu thức.
Sau khi gọi hàm thì giá trị của X sẽ thay đổi (giảm đi)

V. FUNCTION và cách dùng

Trong FUNCTION bắt buộc phải có lệnh gán giá trị cho tên hàm. Tên_hàm:=<Biểu_thức>
Chúng ta chỉ nên dùng FUNCTION khi và chỉ khi nó đồng thời thỏa mãn các điều kiện sau:
- Nếu ta muốn nhận lại 1 và chỉ 1 kết quả
- Kết quả đó phải là kiểu vô hướng
Còn nếu không thỏa mãn thì chúng ta nên dùng PROCEDURE
VD : CTC tính bình phương của một số:
1

2

3

4
Code:
FUNCTION Binh_Phuong (X:real):real;


Code:
 


Code:
BEGIN


Code:
            


Code:
Binh_Phuong := X*X;


Code:
 


Code:
END


Code:
;
Nếu dùng procedure
1

2

3

4
Code:
PROCEDUR Binh_Phuong (X:Real; VAR kq:real);


Code:
 


Code:
BEGIN


Code:
 


Code:
kq := X*X;


Code:
 


Code:
END


Code:
;
Khi kiểm tra xem tổng bình phương của a và b có bằng c không:
- Nếu là FUNCTION ta viết:
1
Code:
IF Binh_Phuong(a)+Binh_Phuong(b) = Binh_phuong(c) THEN…
- Nếu là PROCEDURE ta viết:
1

2

3

4
Code:
Binh_Phuong (a,kqa);


Code:
Binh_Phuong (b,kqb);


Code:
Binh_Phuong (c,kqc);


Code:
IF kqa+kqb=kqc THEN…
Rõ ràng dùng FUNCTION có lợi hơn nhiều.
VI. Biến toàn cục và biến cục bộ

1. Biến toàn cục:
Là các biền được khai báo trong chương trình chính. Các biến này đều có tác dụng ở mọi nơi trong chương trinh.
2. Biến cục bộ
Là các biến được khai báo trong chương trình con. Các biến này chỉ có tác dụng trong chương trình con đó. Khi chương trình con kết thúc các biến này cũng mất tác dụng theo.
3. Chú ý:
Nếu trong chương trình con có khai báo biến (hằng) trùng với tên biến (hằng) trong chương trình chính thì chương trình con sẽ ưu tiên sử lí trên biến (hằng) trong chương trình con. Và khi thoát khỏi chương trình con đó, giá trị của biến trong chương trình vẫn giữ nguyên giá trị trước khi gọi CTC.
VD : 
1

2

3

4

5

6

7

8

9
Code:
CONST I=5;


Code:
 


Code:
PROCEDURE THU;


Code:
 


Code:
VAR I : INTEGER;


Code:
 


Code:
BEGIN


Code:
 


Code:
I := 6;Writeln(I);


Code:
 


Code:
END


Code:
;


Code:
 


Code:
BEGIN


Code:
 


Code:
Writeln(I);THU;Writeln(I);


Code:
 


Code:
END


Code:
.
Màn hình sẽ xuất hiện:
5 (Giá trị biến toàn cục)
6 (Giá trị biến địa phương)
5 (Giá trị biến toàn cục)
VII. Tính đệ quy của chương trình con

Trong PROCEDURE và FUNCTION có thể có lời gọi chính nó. Tính chất này gọi là đệ quy.
VD : Tính N! qua định nghĩa:
N! = 1.2.3...(n-1).n
Hoặc định nghĩa theo đệ quy:
N! = 1 khi N=0 
= (n-1)!.n khi N>=1

Khi đó hàm GIAI_THUA có thể định nghĩa như sau:
1

2

3

4
Code:
FUNCTION GIAI_THUA (n:integer):integer;


Code:
BEGIN


Code:
IF n=0 THEN GIAI_THUA := 1 ELSE GIAI_THUA := n*GIAI_THUA(n-1);


Code:
END


Code:
;

-----------~~๑۩۞۩๑~~ HỌC ONLINE ~~๑۩۞۩๑~~---------------
facebook.com/duc.luumanh.pro
avatar
luumanh9x99
PRO TIN
PRO TIN

Nam
Tổng số bài gửi : 60
điểm điểm : 84
Birthday : 30/01/1999
Đến từ : THPT Chuyên Thái Nguyên
Job/hobbies : hoc sinh

Xem lý lịch thành viên http://xonefm.com

Về Đầu Trang Go down

Re: cấu trúc ct con trong pascal

Bài gửi by anhyeuem.myheart on Sun 23 Jun 2013, 11:48 pm

Kết hợp với lý thuyết đồ thị nữa thì hay tuyệt.
avatar
anhyeuem.myheart
PRO TOÁN
PRO TOÁN

Nam
Tổng số bài gửi : 83
điểm điểm : 114
Birthday : 25/03/1996
Đến từ : HHS
Job/hobbies : học sinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết