Lap trinh
LẬP TRÌNH TRÊN VISUALFOX
Tóm tắt lý thuyết
1. CHƯƠNG TRÌNH
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.
1.2. Các bước tiến hành khi lập trình
Khi bắt đầu lập trình, thông thường phải thực hiện các bước sau:
Hiểu rõ vấn đề bạn sắp viết chương trình.
Chia nhỏ vấn đề cần giải quyết thành các mục nhỏ hơn.
Xác định các dạng dữ liệu nhập, xuất.
Chương trình hoá các mục này.
Kiểm tra và chỉnh sửa các mục.
Kết nối các mục lại với nhau thành một chương trình.
1.3. Cấu trúc chung của một chương trình
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 <đường dẫn> : đặ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
Một lệnh có thể được viết trên nhiều dòng, nhưng cuối mỗi dòng phải có dấu chấm phẩy trừ dòng cuối cùng.
2. CÁC CÂU LỆNH NHẬP, XUẤT DỮ LIỆU
2.1. Nhập dữ liệu
Cú pháp: @<x,y> Say.........get..........read
2.2. Xuất dữ liệu
Cú pháp: @<x,y> Say <Biểu thức>
3. CÁC CẤU TRÚC ĐIỀU KHIỂN
3.1. Cấu trúc tuần tự: Chương trình được thực hiện từ trên xuống.
3.2. Cấu trúc rẽ nhánh
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 <Bthức Logic>
<các lệnh>
ENDIF
b. Dạng đầy đủ
Cú pháp:
IF <Bthức Logic>
<các lệnh 1>
ELSE
<các lệnh 2>
ENDIF
c. Lựa chọn một trong nhiều trường hợp
Cú pháp:
DO CASE
CASE <Bthức L1>
<các lệnh 1>
CASE <Bthức L2>
<các lệnh 2>
......................
CASE <Bthức Ln>
<các lệnh n>
[OTHERWISE
<Các lệnh n+1>]
ENDCASE
3.3. Cấu trúc lặp
a. Cấu trúc DO WHILE
Cú pháp:
DO WHILE <Bthức Logic>
<Các lệnh>
[LOOP]
[EXIT]
ENDDO
b. Cấu trúc SCAN
Cú pháp:
SCAN [<phạm vi>] [FOR<Bthức Logic>] [WHILE<bthức Logic>]
<Các lệnh>
[LOOP]
[EXIT]
END SCAN
c. Cấu trúc FOR
Cú pháp:
FOR <Biến>=<Giá trị đầu> TO <Giá trị cuối> [Step <n>]
<Các lệnh>
END FOR
A. Bài tập có lời giải
BÀI SỐ 1
Viết chương trình nhập vào chỉ số điện kế cũ và mới của một hộ gia đình, rồi tính tiền điện của hộ đó. Biết rằng đơn giá trong định mức là 550đồng/Kwh, định mức tiêu thụ được cho bởi bảng sau:
1. Hộ dân : 60Kwh/Tháng
2. Hộ công nhân viên : 120Kwh/Tháng
3. Hộ dân kinh doanh : 500Kwh/Tháng
4. Hộ sản xuất : 700Kwh/Tháng
Nếu sử dụng điện quá định mức thu số Kwh sẽ được tính giá 800đồng/Kwh.
Hướng dẫn giải
close all
clea
set talk off
@5,5 say 'Chi so cu' get chisocu defa 0
@6,5 say 'Chi so moi' get chisomoi defa 0
@7,5 say 'Loai ho gia dinh' get Loaiho defa space(20)
read
do case
case Loaiho='HO DAN'
if (chisomoi-chisocu)<=60
thanhtien=(chisomoi-chisocu)*550
else
thanhtien=60*550+(chisomoi-chisocu-60)*800
endi
case Loaiho='CONG NHAN VIEN'
if (chisomoi-chisocu)<=120
thanhtien=(chisomoi-chisocu)*550
else
thanhtien=120*550+(chisomoi-chisocu-120)*800
endi
case Loaiho='KINH DOANH'
if (chisomoi-chisocu)<=500
thanhtien=(chisomoi-chisocu)*550
else
thanhtien=500*550+(chisomoi-chisocu-500)*800
endi
othe
if (chisocu-chisomoi)<=700
thanhtien=(chisocu-chisomoi)*550
else
thanhtien=700*550+(chisocu-chisomoi-700)*800
endi
endcase
@10,10 say 'So tien phai tra la ' +str(thanhtien)
set talk on
BÀI SỐ 2
Viết chương trình nhập vào tiền lương hàng tháng của một người nào đó, sau đó tính thuế thu nhập mà người đó phải nộp. Biết rằng
Lương <= 5000000 không phải nộp thuế.
Lương > 5000000 thì số tiền dư sẽ được tính thuế 10%
Hướng dẫn giải
close all
clea
set talk off
@5,5 say 'Nhap tien luong' get Luong defa 0
read
if Luong<=5000000
mLuong=Luong
else
mluong=5000000+(Luong-5000000)/10
endif
@10,10 say 'Luong thuc nhan la' + str(mluong)
set talk on
BÀI SỐ 3
Viết chương trình tìm bội số chung nhỏ nhất của 2 số nguyên
Hướng dẫn giải
clea
clos all
set talk off
@5,5 say 'Nhap so thu nhat' get so1 defa 0
@6,5 say 'Nhap so thu hai' get so2 defa 0
read
p=so1*so2
do while so1<>so2
if so1>so2 then
so1=so1-so2
else
so2=so2-so1
endif
enddo
@10,5 say 'Boi so chung nho nhat la' +str(p/so1)
clos all
set talk on
BÀI SỐ 4
Viết chương trình in ra màn hình các số nguyên tố trong phạm vi n
Hướng dẫn giải
clea
set talk off
@5,5 say 'Nhap pham vi' get n defa 0 vali n>=0
read
dem=0
i=2
do while (i<=n)
if songuyento(i)
dem=dem+1
??i,''
if mod(dem,20)=0
?
endif
endif
i=i+1
enddo
Function Songuyento
Para x
j=2
k=int(sqrt(x))
do while (j<=k) and (mod(x,j)<>0)
j=j+1
enddo
if j>k
Songuyento=.T.
else
Songuyento=.F.
Endif
return songuyento
BÀI SỐ 5
Để quản lý bán hàng trong một Salon xe gắn máy Hồng Phát, người ta sử dụng tập tin dự án QLYXE.PJX chứa tập tin cơ sở dữ liệu CSDL.DBC chứa 2 bảng dữ liệu sau:
Bảng DSXE.DBF
Tên trường Kiểu dữ liệu Độ rộng Diễn giải Ghi chú
MAXE C 4 Mã xe Khoá chính
TENXE C 30 Tên xe
SOLUONG N 2 Số lượng có
DONGIA N 7 Đơn giá
Bảng BANXE.DBF
Tên trường Kiểu dữ liệu Độ rộng Diễn giải Ghi chú
MAXE C 4 Mã xe
TENKHACH C 30 Họ và tên khách
DIACHI C 30 Địa chỉ khách
SLBAN N 1 Số lượng bán
NGAYBAN D 8 Ngày bán
THANTIEN N 10 Thành tiến
a. Viết chương trình bổ sung các loại xe cho bảng DSXE.DBF
b. Viết chương trình bổ sung một số bản ghi cho bảng BANXE.DBF mỗi khi có khách hàng mua xe, chú ý rằng trong quá trình bổ sung phải đảm bảo mối quan hệ giữa hai bảng dữ liệu, SOLUONG=SOLUONG-SLBAN mỗi khi khách hàng mua xe.
c. Viết chương trình in bảng thống kê tình hình bán mỗi loại xe trong một năm nào đó.
d. Viết chương trình nhập vào một tháng và một loại xe bất kỳ, in danh sách những khách hàng mua loại xe trong tháng đó, tổng số lượt khách và tổng số lượng bán
Hướng dẫn giải
Tạo cấu trúc hai bảng dữ liệu trên.
Câu a
clea
clos all
set talk off
set date fren
Do capnhat
procedure capnhat
use dsxe
Do while .T.
scat memv blan
if last()=27
exit
endif
@5,5 say 'Ma xe' get M.maxe vali kt_maxe(M.maxe)
@6,5 say 'Ten xe' get M.Tenxe
@7,5 say 'So luong' get M.Soluong vali M.soluong>0
@8,5 say 'Don gia' get M.Dongia vali M.dongia>0
read
appe blan
gath memv
enddo
Function kt_maxe
para x
loca for x=maxe
if found()
kt_maxe=.F.
else
kt_maxe=.T.
endif
Return kt_maxe
Câu b
clea
clos all
set talk off
set date fren
sele 1
use dsxe
inde on maxe to sx
sele 2
use banxe
set rela to maxe into A
Do capnhat
procedure capnhat
Do while .T.
clea
scat memv blan
if last()=27
exit
endif
@5,5 say 'Ma xe' get M.maxe vali kt(M.maxe)
@6,5 say 'Ten khach' get M.Tenkhach
@7,5 say 'Dia chi' get M.diachi
@8,5 say 'So luong ban' get M.Slban vali M.Slban>0
@9,5 say 'Ngay ban' get M.Ngayban vali M.Ngayban<=Date()
read
appe blan
gath memv
repl all thanhtien with slban*A.dongia
sele 1
repl soluong with soluong-M.slban for M.maxe=maxe
enddo
return
Function kt
para y
sele 1
loca for y=maxe
if found()
kt=.T.
else
kt=.F.
endif
sele 2
return kt
Câu c
clea
clos all
set talk off
set date fren
Do Thongke
Procedure Thongke
Do thietlap
Do Tinhtoan
return
Procedure Thietlap
sele 1
use dsxe
inde on maxe to sx
sele 2
use banxe
inde on maxe+str(year(ngayban)) to s1
total on maxe+str(year(ngayban)) to ketqua fiel slban,thanhtien
sele 3
use ketqua
set rela to maxe into A
Return
Procedure Tinhtoan
@5,5 say 'Nhap nam bat ky' get nam defa 0
read
set filt to year(ngayban)=nam
count to dem
if dem=0
@10,10 say 'Trong nam nay khong ban'
else
go top
brow Fiel A.Tenxe, Slban, Thanhtien
sum thanhtien,Slban to x,y
@20,10 say 'Tong thanh tien'+str(x)
@21,10 say 'Tong so luong'+str(y)
Return
Câu d
clea
clos all
set talk off
set date fren
Do Inan
Procedure Inan
Do TLquanhe
Do Xuly
return
Procedure TLquanhe
sele 1
use dsxe
inde on maxe to sx
sele 2
use banxe
set rela to maxe into A
Return
Procedure Xuly
@5,5 say 'Nhap nam bat ky' get thang defa 0
@6,5 say 'Nhap ma xe' get ma defa space(4)
read
set filt to mont(ngayban)=thang and ma=maxe
count to dem
if dem=0
@10,10 say 'Trong thang nay khong ban laoi xe'+ ma
else
go top
stt=1
i=5
@4,10 say ' STT Ho va ten Sluong ban Ngay ban Thanhtien '
do while not eof()
@i,10 say str(stt)+ tenkhach+str(slban)+DTOC(ngayban)+str(thanhtien)
skip
i=i+1
enddo
sum Slban to x
@20,10 say 'Tong luot khach'+str(dem)
@21,10 say 'Tong so luong ban'+str(x)
endif
Return
B. Bài tập không lời giải
Sử dụng Project Tuyensinh.PJX trong bài thực hành số 1 (phần bài tập không có lời giải) trong chương 2, hãy thực hiện các yêu cầu sau:
BÀI SỐ 1
Dựa vào bảng học sinh hãy viết chương trình nhập vào một khối thi nào đó, cho biết khối thi đó có bao nhiêu thí sinh nam dự thi, bao nhiêu thí sinh nữ dự thi
BÀI SỐ 2
Giả sử khối A ngành Tin học có điểm chuẩn là 20 điểm, hày viết chương trình in danh sách các thí sinh đậu khối A ngành Tin học bao gồm các thông tin: Makhoi, manganh, Tentruong, mahs, Hoten, Phai, Tongdiem
Bạn đang đọc truyện trên: AzTruyen.Top