Hàm của ngời dùng (UDF User Defined Function)

Một phần của tài liệu De cuong th fox (Trang 39 - 41)

I. Chơng trình con (thủ tục và hàm)

3. Hàm của ngời dùng (UDF User Defined Function)

Hàm của ngời dùng là một chơng trình con nhằm tính toán và trả lại một giá trị duy nhất thuộc một kiểu dữ liệu nào đó.

Cấu trúc của một hàm có dạng:

PROCEDURE <Tên hàm> / FUNCTION <Tên hàm> PARAMETER <Danh sách các tham số>

< Thân của hàm > RETURN <biểu thức>

Giá trị của <biểu thức> là giá trị của hàm mỗi khi hàm đợc gọi.

Lời gọi hàm của ngời sử dụng cũng giống nh lời gọi hàm mẫu trong FOXPRO Cú pháp:

<Tên hàm>(<Danh sách giá trị>)

Đối với các hàm không có tham số ta có thể gọi hàm: <Tên hàm>( )

Tên hàm tham gia vào một biểu thức hoặc vế phải của một phép gán. Mỗi lần gặp tên hàm thì giá trị của nó đem ra sử dụng.

Ví dụ 1: Hàm trả lại một xâu đặt giữa màn hình PROC CENTER

PARA thong_bao

N=int((80-len(thong_bao))/2) RETURN space(n)+thong_bao

Trong chơng trình ta có thể gọi hàm:

?CENTER(“Trờng cao đẳng s phạm kỹ thuật Vinh”) ?CENTER(“Khoa công nghệ thông tin”)

Bài luyện tập:

Tính diện tích, chu vi hình chữ nhật. SET TALK OFF Clear

Input “Chiều dài : “ to dai Input “Chiều rộng : “ to rong ?”Diện tích = “,dientich(dai,rong) ?”Chu vi =”,chuvi(dai,rong) wait “ “

SET TALK OFF *--- FUNC DIENTICH PARA d,r RETU d*r *--- PROC CHUVI PARA d,r RETU 2*d+2*r *---

Đối với hàm của ngời dùng có 2 cách truyền tham số:

- Truyền theo giá trị (value): các biến đợc truyền vào các tham số theo kiểu giá trị vào hàm, khi thoát ra khỏi hàm vẫn giữ nguyên giá trị ban đầu đợc gán trớc khi vào hàm.

- Truyền theo địa chỉ (reference): các biến đợc truyền vào các tham số theo kiểu địa chỉ, khi thoát ra khỏi hàm giữ nguyên giá trị đã đợc thay đổi trớc khi ra khỏi hàm. Muốn biến đợc truyền vào theo kiểu địa chỉ phải đặt @ trớc tên biến.

- Nếu muốn tất cả các biến đợc truyền theo địa chỉ mà không cần đặt @ tr- ớc tên biến, trớc khi gọi hàm ta phải dùng lệnh:

SET UDFPARMS TO REFERENCE Song nên dùng @ để truyền theo địa chỉ.

Bài luyện tập:

set talk off clea store 1 to a,b,c,d e=f1(a,b)+f1(@c,@d) ?"a=",a ?"b=",b ?"c=",c ?"d=",d wait " " RETU *--- func f1 para x,y x=x+1 y=y+1 retu x+y *---

Chạy chơng trình trên sẽ in ra kết quả: A= 1

B= 1 C= 2 D= 2

Một phần của tài liệu De cuong th fox (Trang 39 - 41)

Tải bản đầy đủ (DOC)

(78 trang)
w