Lập trình trên VF

Màu nền
Font chữ
Font size
Chiều cao dòng

CHƯƠNG 4: LẬP TRÌNH TRÊN VISUAL FOXRO

4.1. CHƯƠNG TRÌNH

4.1.1 Khái niệm

Là một dãy lệnh liên tiếp được tổ chức vào 1 file chương trình, file chương trình mặc định có phần mở rộng là *. PRG.

Trong một chương trình, mỗi lệnh được viết trên một hàng và mỗi hàng chỉ chứa một lệnh tại một cột bất kỳ.

4.1.2. Soạn thảo chương trình

Để soạn thảo chương trình, từ cữa sổ lênh đưa vào lệnh;

MODIFY COMAND

Lúc này xuất hiện cửa sổ chương trình để ta có thể đưa các lệnh vào cho nó.

Một chương trình foxpro thường có 3 phần.

a) Tạo môi trường làm việc : thường chứa các lệnh sau:

SET DATE FRENCH: đặt ngày tháng năm theo dạng DD-MM-YY

SET CURENCY ON : đặt năm có 4 chữ số

SET TALK OFF/ON : ẩn hiện các kết quả thực hiện lệnh

SET DEFAULT TO : đặt đường dẫn hiện thời

CLEAR: xoá màn hình hiển thị kết quả

CLOSE ALL: đóng các bảng dữ liệu, các file cơ sở dữ liệu,...

b) Phần thân chương trình:

Thực hiện các công việc mà chương trình yêu cầu như :

+ Cập nhập dữ liệu

+ xử lý, tính toán

+ Kết xuất thông tin

c) Kết thúc chương trình

+ Đóng các tập tin CSDL, các bảng dữ liệu đang sử dụng

+ Giải phóng biến nhớ

+ Trả lại các chế độ cho hệ thống.

d) Chú thích trong chương trình

Là các giải thích được thêm vào để làm rõ cho chương trình, phải được bắt đầu bởi dấu * hay &&

* : Bắt đầu một dòng

&& : Viết sau một lệnh

4.2. BIẾN NHỚ

4.2.1. Khai báo biến

a) Lệnh gán =

Cú pháp: =

Ví dụ: a = 5

ngay = Date()

b) Lệnh STORE

Cú pháp: STORE to

Công dụng: Gán giá trị cho ; nếu chưa tồn tại nó sẽ khai báo, nếu đã có thì thay thế bởi giá trị mới.

Ví dụ: STORE 0 To a, b, c

4.2.2. Nhập giá trị cho biến từ bàn phím

a) Lệnh ACCEPT

Cú pháp ACCEPT to

Chức năng : Dùng để nhập một chuỗi từ bàn phím, kết thúc bởi phím , giá trị nhận được sẽ đưa cho .

Ví dụ:

ACCEPT 'nhap ho ten' to bhoten

? 'Ho ten vua nhap', bhoten

là một câu nhắc nhở người sử dụng.

b. Lệnh INPUT

Cú pháp: INPUT to

Tác dụng: Tương tự lệnh trên nhưng có thể nhận dữ liệu theo từng kiểu:

Kiểu Charater: Phải được đặt trong cặp dấu ' ... ' hay "... ".

Kiểu Numberic: Nhập dữ liệu kiểu số.

Kiểu Date: Phải được để trong dấu {}.

Kiểu Logic: Nhập giá trị .T. hay .F.

Ví dụ:

INPUT 'Nhap ngay sinh' TO bngaysinh

INPUT 'Nhap diem" TO bdiem

Chú ý: Trong hai lệnh trên, nếu biến chưa có thì nó sẽ tự khai báo, nếu đã có thì nó sẽ thay giá trị của biến bởi giá trị vừa nhập.

4.3. CÁC CẤU TRUẽC ĐIỀU KHIỂN CHƯƠNG TRÌNH

4.3.1. Cấu trúc tuần tự

Quy ước: Chương trình được thực hiện từ trên xuống dưới.

4.3.2. Cấu trúc rẽ nhánh

Còn gọi là cấu trúc chọn lựa. Cấu trúc rẽ nhánh có hai dạng: dạng khuyết và dạng đầy đủ:

a. Dạng khuyết:

Cú pháp:

IF

ENDIF

Tác dụng: Khi gặp cấu trúc này, sẽ được tính, nếu có giá trị .T. thì sẽ được thực hiện, ngược lại thực hiện các lệnh tiếp theo sau.

Ví dụ: Viết chương trình nhập vào hai số, cho biết số lớn nhất

set talk off

clear

Input :Nhap so thu nhat' to so1

Input :Nhap so thu hai' to so2

max=so1

If max

max=so2

Endif

? "So lon nhat la:', max

set talk on

return

b. Dạng đầy đủ:

Cú pháp:

IF

ELSE

ENDIF

Tác dụng: Khi gặp cấu trúc này, sẽ được tính. Nếu có giá trị .T. thì sẽ được thực hiện, ngược lại (có giá trị .F.) thì sẽ thực hiện . Sau đó tiếp tục thực hiện các lênh tiếp theo trong chương trình.

Ví dụ: Dựa vào bảng nhanvien, hãy nhập vào một họ tên nhân viên, tìm xem có đúng là nhân viên của công ty hay không, nếu đúng thì thông báo năm sinh và năm làm việc, ngược lại thì thông báo là không phải nhân viên của công ty.

set talk off

clear

close all

use NHANVIEN

accept 'nhap ho ten nhan vien:' to bhoten

locate for HOTEN =bhoten

if found()

? ' ngay sinh là:', ngaysinh'

?'nam lam viec:', namlv

else

?'khong phai la nhan vien cua cong ty'

endif

set talk on

return

4.3.2.1. Lựa chọn một trong nhiều trường hợp

Cú pháp

DO CASE

CASE

CASE

......................

CASE

[OTHERWISE

]

ENDCASE

Tác dụng: Khi gặp cấu trúc DO CASE, các điều kiện sẽ được tính. Nếu điều kiện nào đó có giá trị .T. thì nhóm lệnh tương ứng sẽ được thực hiện và kết thúc cấu trúc này, rồi tiếp tục thực hiện các lênh sau ENDCASE. Trong trường hợp không có nào từ 1 đến n có giá trị .T. thì (nếu có) sẽ được thực hiện.

Ví dụ: Viết chương trình nhập vào một năm (có 4 chữ số), sau đó nhập thêm một tháng, cho biết tháng này có bao nhiêu ngày.

set takl off

clear

input 'nhap vao mot nam' to bnam

input 'nhap vao mot thang' to bthang

do case

case bthang=4 or bthang = 6 or bthang = 9 or bthang=11

songay=30

case bthang=12

if (mod(bnam, 4)=0 and (mod(bnam, 100)0)

songay=29

else

songay=28

endif

otherwise

songay=31

endcase

? 'thang', bthang, 'nam', bnam, 'co', so ngay, 'ngay'

set talk on

return

4.3.3. Cấu trúc lặp

4.3.3.1. Cấu trúc DO WHILE

Cú pháp:

DO WHILE

[LOOP]

[EXIT]

ENDDO

Tác dụng: Khi gặp cấu trúc này thì sẽ được tính, nếu có giá trị .F. thì sẽ dừng và thực hiện các lệnh sau ENDDO. Nếu có giá trị .T. thì các lệnh trong thân vòng lặp sẽ được thực hiện và lại quay về kiểm tra điều kiện trong và cứ thế tiếp tục.

[LOOP]: Khi gặp lệnh này, Foxpro sẽ quay về kiểm tra điều kiện logic mà bỏ qua các lệnh phía sau [LOOP].

[EXIT]: Khi gặp lệnh này thĩ sẽ thoát ra khỏi chương trình.

Ví dụ: Cho biết dang sáchhọ tên của các nhân viên trong công ty.

set takl off

clear

close all

use NHANVIEN

? 'danh sach ho ten hoc vien la:'

do while !eof()

?HOTEN

skip

enddo

set talk on

return

Chú ý: Khi sử dụng cấu trúc này, các lệnh trong thân vòng lặp phải thay đổi được giá trị của để đảm bảo tính kết thúc.

Ví dụ: Nhập vào một năm, hãy thông báo danh sách họ tên, ngày sinh của những nhân viên làm việc trong năm đó, nếu không có thì thông báo là không có.

set takl off

set date french

clear

close all

use NHANVIEN

input 'nhap nam lam viec" to bnam

set filter to NAMLV = bnam

count to dem

if dem = 0

? ' khong co nhan vien nao'

else

go top

? 'danh sach nhan vien lam viec năm', bnam

? "HO TEN NGAY SINH'

do while !eof()

?HOTEN, NGAYSINH

skip

enddo

endif

set filter to

set talk on

return

4.3.3.2. Cấu trúc SCAN

Cú pháp

SCAN [] [FOR] [WHILE]

[LOOP]

[EXIT]

END SCAN

Tác dụng: Dùng để duyệt lần lượt các bản ghi trong bảng dữ liệu hiện hành nằm trong được chỉ ra và thoả mãn điều kiện của các sau FOR hoặc WHILE. Tương ứng với một bản ghi tìm được. sẽ được thực hiện.

Cấu trúc SCAN sẽ dừng khi nào duyệt đến bản ghi cuối cùng của bảng dữ liệu đang xét.

Ví dụ: Viết chương trình nhập năm (bốn chữ số), hiển thị những nữ nhân viên sinh năm đó.

set talk off

set date french

clear

close all

use NHANVIEN

input 'nhap nam lam viec" to bnam

input 'nhap nam:' to bnam

? 'DANH SACH CAC NU NHAN VIEN, SINH NAM', bnam

scan for !GIOITINH and year(NGAYSINH)=bnam

?HOTEN, NGAYSINH

endscan

set talk on

return

Bạn đang đọc truyện trên: Truyen2U.Pro