THPT Chuyên Vị Thanh
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
THPT Chuyên Vị Thanh

Số 04 Đường Đồ Chiểu TX Vị Thanh - Tỉnh Hậu Giang


You are not connected. Please login or register

CHƯƠNG TRÌNH CON trong TP

4 posters

Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

1CHƯƠNG TRÌNH CON trong TP Empty CHƯƠNG TRÌNH CON trong TP Mon Nov 03, 2008 11:03 am

Admin

avatar
Admin
Admin

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 đoạn chương trình lặp đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh rườm rà những đoạn chương trình này được thay thế bằng 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ứ hai để xây dựng chương trình con: Một vấn đề lớn và phức tạp sẽ tương ứng với một chương trình có thể rất lớn và dài. Do đó việc sửa chữa chương trình sẽ rất khó khăn. Ta có thể phân tích nó thành các vấn đề nhỏ hơn, để dễ kiểm tra, sau đó ghép lại thành một chương trình lớn.

II. PROCEDURE và FUNCTION (Thủ tục và Hàm)



Trong Pascal có hal loại 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ả lại một giá trị kết quả vô hướng thông qua tên function và do đó nó có thể sử dụng như một biến, hằng biểu thức. Còn PROCEDURE không trả lại kết quả thông qua tên của biểu thức nên procedure không thể viết trong biểu thức.

VD : Các PROCEDURE cơ bản của Pascal

- Writeln

- Readln

_ Textcolor

Các FUNCTION cơ bản

- Sin(x) : trả về giá trị kiểu thực

- Chr(i) : trả về giá trị kiểu Char

III. Cấu trúc của một chương trình con



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

VAR .....

CONST ....

{Các chương trình con}

PROCEDURE Tên_thủ_tục (Khai báo các tham số, nếu cần);

{Phần khai báo trong CTC}

BEGIN

.....

END;

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

{Phần khai báo trong CTC}

BEGIN

.....

END;

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

BEGIN

.....

END.

IV. Chuyển tham số cho chương trình con

Có 2 cách chuyể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ị nó sẽ không thay đổi sau khi CTC thực hiện. Còn tham biến sẽ thay đổi giá trị nếu trong CTC có lệnh làm thay đổi giá trị của 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 vẫn không thay đổi.

* Hàm DEC (X)

Trong này X là tham biến, ta chỉ có thể viết

- DEC (X); X là biến kiểu nguyên

Không thể viết

- DEC (5); X là hằng

- DEC (Y*2); X là biểu thức

Sau khi gọi hàm giá trị của X sẽ thay đổi (giảm đi 1)

V. FUNCTION và cách lựa chọn



Trong FUNCTION bắt buộc phải có lệnh gán giá trị cho tên hàm

Tên_hàm :=

Chúng ta chỉ nên dùng FUNCTION khi và chỉ khi nó đồng thời thoả các điều kiện sau :

- Nếu ta muốn nhận lại một và chỉ một kết quả

- Kết quả đó phải là kiểu vô hướng

Còn nếu không thoả mãn thì chúng ta nên dùng PROCEDURE

VD : CTC tính bình phương của một số

FUNCTION Binh_Phuong (X:real):real;

BEGIN

Binh_Phuong := X*X;

END;

Nếu dùng procedure

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

BEGIN

kq := X*X;

END;

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 :

IF Binh_Phuong(a)+Binh_Phuong(b) = Binh_phuong(c) THEN

- Nếu là PROCEDURE ta viết

Binh_Phuong (a,kqa);

Binh_Phuong (b,kqb);

Binh_Phuong (c,kqc);

IF kqa+kqb=kqc THEN

Rõ ràng cách dùng FUNCTION có lợi hơn

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 trình.

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 CTC 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 xử lý biến (hằng) trong chương trình chính. 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 : CONST I=5;

PROCEDURE THU;

VAR I : INTEGER;

BEGIN

I := 6;Writeln(I);

END;

BEGIN

Writeln(I);THU;Writeln(I);

END.

Trên 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

FUNCTION GIAI_THUA (n:integer):integer;

BEGIN

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

END;_

Admin

avatar
Admin
Admin

Bài tập 1:{ Nhập a,b,c là hệ số của một hàm số bậc 2. Sau đó ta nhập X liên tục, ứng với mỗi giá trị của X, ta in ra giá trị của Y tương ứng.

Chương trình kết thúc khi ta nhập 0

Bài tập 2:

Nhập N. Sau đó nhập N toạ độ A,B của N đường thẳng. In ra màn hình đường thẳng có độ dài lớn nhất.



Bài tập 3:

Nhập N. Sau đó nhập N số hạng. Tính UCLN và BCNN của N số đó.

Bài tập 4:

Nhập số N. Sau đó nhập N phần tử. In ra phần tử có số ước là lớn nhất

Bài tập 5:

Viết chương trình hiện ra Menu sau

0 - Thoat

1 - Tinh dien tich hinh chu nhat

2 - Tinh dien tich hinh tron

3 - Tinh dien tich hinh thang

Hay an mot so de chon :

Sau đó ứng với mỗi số bạn hãy viết thủ tục tính diện tích tương ứng

Bài tập 6: Viết thủ tục đệ quy đảo các chữ số của một số.

Bài tập 7:

Dãy số Fibonaci là dãy số F1,F2...Fn được tạo ra với công thức

F1 = F2 = 1

Fn = Fn-1 + Fn-2 (n>2)

Hãy nhập số N. Tính Fn

Bài tập 8: Viết thủ tục BCC(x,y,k:byte) in ra màn hình bảng cửu chương k tại vị trí x,y}


3CHƯƠNG TRÌNH CON trong TP Empty Re: CHƯƠNG TRÌNH CON trong TP Wed Nov 26, 2008 8:07 pm

Sad

Sad
Thành viên cấp 4
Thành viên cấp  4

cai nay em ngu luon rui thay ui!

http://sieupro.forum6.info/forum.htm

4CHƯƠNG TRÌNH CON trong TP Empty Re: CHƯƠNG TRÌNH CON trong TP Fri May 29, 2009 12:30 pm

hang_vt

avatar
Thành viên mới
Thành viên mới

có mỗi admin chăm post bài thôi Smile

5CHƯƠNG TRÌNH CON trong TP Empty Re: CHƯƠNG TRÌNH CON trong TP Fri May 29, 2009 1:27 pm

TheFireStar

TheFireStar
Thành viên cấp 4
Thành viên cấp  4

Vì thứ này có ai hiểu đâu CHƯƠNG TRÌNH CON trong TP 057
Có thể thì típ anh ấy đi CHƯƠNG TRÌNH CON trong TP 8.

http://www.firestar.co.cc

6CHƯƠNG TRÌNH CON trong TP Empty Re: CHƯƠNG TRÌNH CON trong TP Fri May 29, 2009 9:03 pm

hang_vt

avatar
Thành viên mới
Thành viên mới

ax ax , k hỉu hay giấu nghề thế =.=!

Sponsored content



Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

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