Lập trình trên VF
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: Truyen247.Pro