1. Trang chủ
  2. » Cao đẳng - Đại học

Giáo án Tin học 11 - Bài 7: Lập trình trong Visual Foxpro

11 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 124,31 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

valueN là giá tră thăc ăăăc truyăn tăăng ăng cho các tham să hình thăc căa chăăng trình con; tùy chăn IN ProgName cho phép xác ăănh file chăăng trình chăa thă tăc căn găi măc ăănh là tro[r]

Trang 1

Bài 7 - lơp trình trong Visual Foxpro

I Tơo và chơy mơt chơơng trình

 Visual Foxpro làm viăc ă hai chă ăă:

o Căa să lănh - Các lănh ăăăc ăăa vào căa să lănh và thăc thi

o Chăăng trình - Tăp các lănh ăăăc thăc hiăn theo măt thă tă nào ăó

 Chăăng trình trong Visual Foxpro ăăăc lău trong các file có phăn mă răng là PRG

 Tơo mơt chơơng trình

Lănh (tă căa să lănh)

MODIFY COMMAND <TenChuongtrinh> 

Trong ăó: <Tenchuongtrinh> là tên chăăng trình

Khi ăó xuăt hiăn căa să soăn thăo cho phép soăn thăo văn băn chăăng trình

Kơt thúc soơn: Nhăn Ctrl+W ăă ghi lăi.

Sơa chơơng trình: căng dùng lănh MODI COMM <tenchuongtrinh>

Mơt chơơng trình đơn giơn

Chăăng trình trong Visual Foxpro không qui ăănh theo măt cău trúc nhăt ăănh

Xét măt ví dă ăăn giăn sau ăây:

* Phần 1 : Bắt đầu

* Dùng các lệnh SET để thiết lập môi trường làm việc SET CENTURY ON && Hiển thị năm dạng yyyy

SET DATE FREN && Hiển thị ngày tháng dạng dd/mm/yyyy

SET EXCLUSIVE ON && Đặt chế độ mở bảng dạng dùng riêng

* Phần 2: Chuẩn bị dữ liệu

* Mở các bản cần thiết, đặt quan hệ

CLOSE ALL

SELECT 0

USE Hososv ALIAS SINHVIEN

SET ORDER TO MASV

SELECT 0

USE diem

SET RELATION TO masv INTO SINHVIEN

* Phần 3: Chương trình chính

* Xử lý các yêu cầu đặt ra

BROWSE FIELDS masv,SINHVIEN.HOTEN,MAMON,DIEM1 ;

FOR malop="3H-04" AND mamon="GT101" ; TITLE "Bảng điểm môn GT101 - Lớp 3H-04" ;

Trang 2

* Phần 4: Kết thúc

* Đóng các bảng đả mở, thiết lập lại chế độ làm việc USE IN SINHVIEN

USE IN DIEM

RETURN

Nhă trên ta thăy chăăng trình ăăăc tă chăc thành 4 phăn:

Phăn 1: Băt ăău - chuăn bă môi trăăng (să dăng các lănh SET)

Phăn 2: Chuăn bă dă liău (mă các băng, ăăt quan hă )

Phăn 3: Thân chăăng trình (xă lý các yêu cău ăăt ra)

Phăn 4: Kăt thúc (ăóng các băng ăã mă, tră lăi trăng thái )

 Chơy (thơc thi) mơt chơơng trình

Lănh (thăc hiăn tă căa să lănh)

DO <TenChuongTrinh> 

II lơnh có cơu trúc

1 Lơnh IF ENDIF

Thăc hiăn có ăiău kiăn măt tăp các lănh dăa vào giá tră căa biău thăc logic

Cú pháp:

IF <BieuThucLG> [THEN]

Lơnh1 [ELSE

Lơnh2]

ENDIF

Trong ăó:

 BieuThucLG - Biău thăc logic

 BieuThucLG = TRUE Thì các Lơnh1 ăăăc thăc hiăn

 BieuThucLG = FALSE và să dăng mănh ăă ELSE khi ăó các Lơnh2 ăăăc thăc hiăn

Ví dă 1: Kiăm tra xem có ai sinh nhăt vào hôm nay hay không? Nău có thì hiăn thă

hă tên ngăăi ăó

SET CENTURY ON

SET DATE FREN

Trang 3

SET EXCLUSIVE ON

CLOSE ALL

SELECT 0

USE HOSOSV ALIAS HSSV

LOCA FOR DAY(DATE())=DAY(Ngaysinh) and MONT(DATE())=MONT(Ngaysinh)

IF Found() THEN

WAIT WIND “Hom nay:”+DTOC(Date()) “la sinh nhat cua:”+HSSV.hoten ELSE

WAIT WIND “Khong co ai sinh nhat vao hom nay:”+DTOC(Date())

ENDIF

USE IN HOSOSV

RETURN

Chú ý: Có thă să dăng cău trúc IF ENDIF lăng nhau

IF BT1 THEN && IF thă 1

IF BT2 THEN && IF thă 2

ELSE

ENDIF && Kăt thúc IF thă 2

ELSE

ENDIF && Kăt thúc IF thă nhăt

2 Lơnh DO CASE ENDCASE

Kiăm tra nhiău ăiău kiăn logic, và thăc hiăn tăp lănh ăău tiên mà biău thăc logic có giá tră TRUE

Cú pháp:

DO CASE

CASE BieuThucLogic1

Lơnh 1 CASE BieuThucLogic2

Lơnh 2

CASE BieuThucLogicN

Lơnh N [ OTHERWISE

Lơnh N+1 ] ENDCASE

Trang 4

Trong ăó:

 BieuThucLogicK - Biău thăc logic

 Thăc hiăn lănh: Kiăm tra tă BieuThucLogic1 ăăn N nău tăn tăi măt BieuThucLogicK =TRUE thì chăăng trình să thăc hiăn các câu Lơnh K và kăt thúc, trăăng hăp tăt că các BieuThucLogic=FALSE và să dăng mănh ăă OTHERWISE thì các Lơnh N+1 ăăăc thăc hiăn

Ví dă 2: Tính ăiăm trung bình chung và tính xăp loăi căa măt sinh viên nào ăó SET TALK OFF

CLOSE ALL

SELECT 0

USE monhoc

SET ORDER TO Ma

SELECT 0

USE diem

SET RELATION TO mamon INTO Monhoc

SUM monhoc.sodvht*diem.diem1,monhoc.sodvht TO tongdiem,tongdvht FOR masv="SV-0624 "

DTBC=tongdiem/tongdvht

DO CASE

CASE dtbc>9

WAIT WINDOW "Xep loai: Xuat sac"

CASE dtbc>8

WAIT WINDOW "Xep loai: Gioi"

CASE dtbc>7

WAIT WINDOW "Xep loai: Kha"

CASE dtbc>6

WAIT WINDOW "Xep loai: Trung Binh Kha"

CASE dtbc>5

WAIT WINDOW "Xep loai: Trung Binh"

OTHERWISE

WAIT WINDOW "Xep loai: Yeu"

ENDCASE

USE IN monhoc

USE IN diem

RETURN

3 Lơnh DO WHILE ENDDO

Thăc hiăn măt tăp các lănh trong vòng lăp có ăiău kiăn

Cú pháp:

DO WHILE <BieuThucLogic>

Lơnh 1 [LOOP]

[EXIT]

Lơnh 2

Trang 5

Trong ăó:

 BieuThucLogic - Biău thăc logic

 Thăc hiăn: Nău BieuThucLogic=TRUE să thăc các Lơnh 1, Lơnh 2, khi ăăn ENDDO să quay tră lăi kiăm tra BieuThucLogic; trăăng hăp BieuThucLogic=FALSE să kăt thúc lănh

Lănh LOOP cho phép (ngay lăp tăc) tră lăi băt ăău vòng lăp (Kiăm tra BieuThucLogic), bă qua các lănh giăa LOOP và ENDDO Lănh LOOP có thă ăăt vào băt că ăâu giăa DO WHILE và ENDDO

Lănh EXIT cho phép (ngay lăp tăc) kăt thúc lănh DO WHILE ENDDO và bă qua các lănh giăa EXIT và ENDDO Lănh EXIT có thă ăăt vào băt că ăâu giăa

DO WHILE và ENDDO

Ví dă 3: Tìm xem trong danh sách sinh viên có băn Nă (Gioi=.T.) nào có ăiăm trung binhg chung ăăt >=8.0?

SET TALK OFF

CLEAR

CLEAR ALL

CLOSE ALL

SELECT 0

USE monhoc

SET ORDER TO MONLOP && MA+MALOP

SELECT 0

USE diem

SET RELATION TO mamon+malop INTO Monhoc

SELECT 0

USE Hososv

GO TOP

DO WHILE !EOF()

IF hososv.gioi=.F Then

SKIP LOOP ENDIF

SELECT diem

SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ;

TO tdiem,tdvht FOR masv=Hososv.masv

dtbc=tongdiem/tongdvht

IF dtbc>=8 THEN

WAIT WINDOW "SV: "+ hososv.hoten +" DTBC: "+ STR(dtbc) EXIT

ENDIF

SELECT hososv

SKIP

ENDDO

USE IN hososv

Trang 6

USE IN monhoc

USE IN diem

RETURN

4 Lơnh FOR ENDFOR

Thăc hiăn măt tăp các lănh văi să lăn lăp xác ăănh

Cú pháp:

FOR Bien = initValue TO FinalValue [STEP K]

Lơnh 1 [LOOP]

[EXIT]

Lơnh 2 ENDFOR

Trong ăó:

Bien - ăóng vai trò nhă măt biăn ăăm, initValue - Giá tră ăău, FinalValue - Giá tră cuăi

 Thăc hiăn: Thăc hiăn các lănh giăa FOR và ENDFOR khi biăn Bien có giá tră

tă initValue ăăn FinalValue

Tham să STEP K qui ăănh băăc thay ăăi căa biăn Bien băng K (K có thă âm), măc ăănh (khi không thên tùy chăn STEP K) K =1

Lănh LOOP cho phép (ngay lăp tăc) tră lăi băt ăău vòng FOR, bă qua các lănh giăa LOOP và ENDFOR Lănh LOOP có thă ăăt vào băt că ăâu giăa FOR và ENDFOR

Lănh EXIT cho phép (ngay lăp tăc) kăt thúc lănh FOR ENDFOR và bă qua các lănh giăa EXIT và ENDFOR Lănh EXIT có thă ăăt vào băt că ăâu giăa FOR và ENDFOR

Ví dă 4: Tính ăiăm trung bình chung hăc kă 1 năm 2004-2005 căa lăp 3E-04

SET TALK OFF

SET SAFETY OFF

CLEAR

CLEAR ALL

CLOSE ALL

SELECT 0

USE monhoc

SET ORDER TO MONLOP && MA+MALOP

SELECT 0

USE diem

SET RELATION TO mamon+malop INTO Monhoc

Trang 7

SET FILTER TO monhoc.hocky=1 AND monhoc.namhoc=2004

SELECT 0

USE Hososv

COPY TO c:\temp\HOSOLOP FOR malop="3E-04"

USE IN hososv

SELECT 0

USE c:\temp\HOSOLOP ALIAS Hososv EXCLUSIVE

ALTER table c:\temp\HOSOLOP ADD COLUMN Dtbc N(5,2)

n=RECCOUNT()

FOR i=1 TO n

SELECT diem

SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ;

TO tongdiem,tongdvht FOR masv=Hososv.masv SELECT hososv

REPLACE dtbc WITH IIF(tongdvht>0,tongdiem/tongdvht,0)

SKIP

ENDFOR

SELECT Hososv

BROWSE FIELDS masv,hoten,ngaysinh,dtbc ;

TITLE "Tong ket ket qua hoc ky 1, 2004-2005"

USE IN hososv

USE IN monhoc

USE IN diem

RETURN

5 Lơnh SCAN ENDSCAN

Di chuyăn con tră băn ghi trên măt vùng làm viăc nào ăó, tăăng ăng văi măi băn ghi tìm thăy să thăc hiăn măt tăp các lănh

Cú pháp:

SCAN [Scope] [FOR BieuthucLogic]

Lơnh 1 [LOOP]

[EXIT]

Lơnh 2 ENDSCAN

Trong ăó:

 Tùy chăn Scope cho phép xác ăănh phăm vi tác ăăng căa lănh (ALL, NEXT n, RECORD n, REST)

 Tùy chăn [FOR BieuThucLogic] cho phép lănh SCAN duyăt trên các băn ghi thăa mãn BieuThucLogic Nău không ăăa tham să này vào thì lănh SCAN să duyăt trên tăt că các băn ghi

Trang 8

 Thăc hiăn: (*) Nău còn băn ghi (trong phăm vi Scope và thăa mãn BieuThucLogic) trong vùng làm viăc -> Thăc hiăn các lănh giăa SCAN và ENDSCAN, tiăp ăăn dăch chuyăn con tră băn ghi ăi 1 vă trí (SKIP 1) răi tră lăi (*); Nău không còn băn ghi nào-> Kăt thúc lănh SCAN

Lănh LOOP cho phép (ngay lăp tăc) tră lăi băt ăău vòng SCAN bă qua các lănh giăa LOOP và ENDSCAN Lănh LOOP có thă ăăt vào băt că ăâu giăa SCAN

và ENDSCAN

Lănh EXIT cho phép (ngay lăp tăc) kăt thúc lănh SCAN ENDSCAN và bă qua các lănh giăa EXIT và ENDSCAN Lănh EXIT có thă ăăt vào băt că ăâu giăa SCAN và ENDSCAN

Ví dă 5: Tính ăiăm trung bình chung hăc kă 1 năm 2004-2005 căa lăp 3E-04 (nhă ví

dă 4 nhăng thay FOR băng SCAN)

SET SAFETY OFF

SET TALK OFF

CLEAR

CLEAR ALL

CLOSE ALL

SELECT 0

USE monhoc

SET ORDER TO MONLOP && MA+MALOP

SELECT 0

USE diem

SET RELATION TO mamon+malop INTO Monhoc

SET FILTER TO monhoc.hocky=1 AND monhoc.namhoc=2004

SELECT 0

USE Hososv

COPY TO c:\temp\HOSOLOP FOR malop="3E-04"

USE IN hososv

SELECT 0

USE c:\temp\HOSOLOP ALIAS Hososv EXCLUSIVE

ALTER table c:\temp\HOSOLOP ADD COLUMN Dtbc N(5,2)

GO TOP

SCAN

SELECT diem

SUM monhoc.sodvht*diem.diem1,monhoc.sodvht ;

TO tongdiem,tongdvht FOR masv=Hososv.masv SELECT hososv

REPLACE dtbc WITH IIF(tongdvht>0,tongdiem/tongdvht,0)

ENDSCAN

SELECT Hososv

BROWSE FIELDS masv,hoten,ngaysinh,dtbc ;

TITLE "Tong ket ket qua hoc ky 1, 2004-2005"

USE IN hososv

USE IN monhoc

USE IN diem

RETURN

Trang 9

III Chơơng trình con

1 Thơ tơc (PROCEDURE)

Ngăăi să dăng có thă tăo ra các thă tăc riêng băng cách să dăng khai báo PROCEDURE

Cú pháp:

PROCEDURE <ProcName>

[PARAMETERS <para1, para2 paraN>]

Lơnh [ENDPROC]

Trong ăó:

 ProcName: Tên thă tăc (do ngăăi să dăng tă ăăt)

 Tùy chăn PARAMETERS cho phép khai báo các tham să “hình thăc”, các tham

să này să nhăn giá tră thăc tă chăăng trình chính khi thăc hiăn lăi găi thă tăc, para1, para2 , , paraN là tên các tham să hình thăc

Lăi găi thă tăc: Các thă tăc sau khi hoàn tăt có thă ăăăc găi tă măt chăăng trình nào

ăó Lăi găi chăăng trình con có dăng nhă sau

DO <ProcName> [With value1, value2 valueN] [IN ProgName]

Trong ăó: ProcName là tên thă tăc căn găi; value1, value valueN là giá tră thăc ăăăc truyăn tăăng ăng cho các tham să hình thăc căa chăăng trình con; tùy chăn IN ProgName cho phép xác ăănh file chăăng trình chăa thă tăc căn găi (măc ăănh là trong băn thân chăăng trình ăang thăc hiăn)

Ví dă 6: Viăt thă tăc cho phép hiăn thă thă (trong tuăn) căa măt ngày nào ăó

CLEAR ALL

CLOSE ALL

CLEAR

DO HienThiThu WITH DATE()

* - Khai bao thu tuc

-PROCEDURE HienThiThu

PARAMETERS date1

WAIT WINDOW CDOW(Date1)

ENDPROC

Trong ví dă trên, date1 là tham să “hình thăc” trong thă tăc HienThiNgay và nhăn tham să thăc là Date() trong lăi găi thă tăc trong chăăng trình chính

Giă să ví dă 6 ăăăc lău vào file Vidu6.PRG, khi ăó trong măt chăăng trình khác có thă thăc hiăn lăi găi thă tăc HienThiThu nhă sau:

Trang 10

DO HienThiThu WITH DATE() IN Vidu6.PRG

Chú ý: Văi các tham să hình thăc Para1, para2 có thă không truyăn giá tră cho các tham să này khi thăc hiăn lăi găi thă tăc, tuy nhiên các tham să khi ăó să nhăn giá tră FALSE (giá tră Logic) và nhă văy răt có thă dăn ăăn lăi

2 Hàm (FUNCTION)

Ngoài các hàm do Visual Foxpro cung căp săn, ngăăi să dăng có thă tăo ra các thă tăc riêng băng cách să dăng khai báo FUNCTION

Cú pháp:

FUNCTION <FuncName>

[PARAMETERS <para1, para2 paraN>]

Lơnh RETURN <BieuThuc>

[ENDFUNC]

Trong ăó:

 FuncName: Tên hàm (do ngăăi să dăng tă ăăt)

 Tùy chăn PARAMETERS cho phép khai báo các tham să “hình thăc”, các tham

să này să nhăn giá tră thăc tă chăăng trình chính khi thăc hiăn lăi găi hàm para1, para2 , , paraN là tên các tham să hình thăc

 BieuThuc: Giá tră căa biău thăc này là giá tră tră vă căa hàm

Lăi găi hàm: Các hàm tă tăo hoăc hàm do Visual Foxpro cung căp ăău ăăăc găi nhă sau:

FuncName(With value1, value2 valueN)

Trong ăó: FuncName là tên hàm căn găi; value1, value valueN là giá tră thăc ăăăc truyăn tăăng ăng cho các tham să hình thăc căa chăăng trình con Lăi găi hàm chă tham gia vào trong các biău thăc

Ví dă 7: Viăt hàm tính tăng căa 2 să

CLEAR ALL

CLOSE ALL

CLEAR

a=10

b=20

WAIT WINDOW STR(a)+"+"+STR(b)+"="+STR(tong(a,b))

* - Khai bao ham

-FUNCTION Tong

PARAMETERS x,y

RETURN x+y

Trang 11

ENDPROC

Ví dă 8: Viăt hàm tră vă thă (tiăng viăt) căa măt ngày nào ăó

CLEAR ALL

CLOSE ALL

CLEAR

WAIT WINDOW “Hom nay la: ”+ ThuVN(DATE())

* - Khai bao thu tuc -FUNCTION ThuVN

PARAMETERS d

kq=""

i=DOW(d)

DO CASE

CASE i=1

kq="Chu Nhat"

CASE i=2

kq="Thu Hai"

CASE i=3

kq="Thu Ba"

CASE i=4

kq="Thu Tu"

CASE i=5

kq="Thu Nam"

CASE i=6

kq="Thu Sau"

CASE i=7

kq="Thu Bay"

ENDCASE

RETURN kq

ENDPROC

Bài tơp

1 Thăc hiăn các ví dă trong bài

2 Hoàn thành hàm TENVN ăă nêu trong bài 3

Ngày đăng: 01/04/2021, 04:00

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w