论文部分内容阅读
[摘 要]在数据库开发软件Visual FoxPro Visual(简称VFP)编程教学中,选择一些古代有趣的数学题目通过编程来解决,在教学过程中让学生们感受古人的聪明智慧,同时又可把枯燥的编程变得有乐趣,这样既可以培养学生的学习兴趣,调动学生的学习主动性和积极性,又可以活跃课堂气氛,提高教学效果。
[关键词]VFP;数学题;编程。
中图分类号:TP313 文献标识码:A 文章编号:1009-914X(2015)05-0262-02
Visual FoxPro(简称VFP)是最为实用的数据库管理系统和中小型数据库应用系统的开发工具之一,它为数据库结构和应用程序开发而设计。它即是一种结构化编程语言,也是一种可视化面向对象的编程语言。它具有编程纠错方便、操作简单的特点。无论将程序多么复杂,要运算多少次,计算机都会很快地给出程序的运算结果。为了提高教学效果和教学质量,提高学生的学习兴趣,我们可以将古代一些典型的有代表性的数学题目,通过编程来解决,下面就结合具体实例进行分析。
1 百鸡百钱
我国古代数学家张丘建在《算经》一书有一道百鸡百钱问题的数学题,其内容为:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
其意思是:一只公鸡值五元钱,一只母鸡值三元钱,三只小鸡值一元钱,现在用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?
1.1 数学解法
用数学方法解该题如下:
解:由题目知公鸡一只值钱五:母雞一只五值钱三,三只小鸡值钱一。而现在一百钱买一只百鸡,所以公鸡数量要最多为20只。
设公鸡x只,母鸡y只,,小鸡100-x-y只,
所以5x+3y+(100-x-y)/3=100
且x,y为整数,所以可以得出正确答案,
有三种答案:(1)公鸡4只,母鸡18只,小鸡78只
(2)公鸡8只,母鸡11只,小鸡81只
(3)公鸡12只,母鸡4只,小鸡84只
这种数学解法,难度比较较大。
1.2 VFP编程求解
如果我们利用VFP编程来解,只需按编程逻辑思路,编写好程序,然后在计算机上运行就可以了。
用Visual FoxPro 编程如下:
clea
g=1
n=1
do while g<=20 &&买公鸡的最大数
m=1
do while m<=33 &&买母鸡的最大数
x=1
do while x<=100 &&买小鸡的最大数
if (5*g+3*m+x/3)=100 .and. (g+m+x)=100
? space(10)+str(n)+'公鸡=',g
?
? space(10)+str(n)+'母鸡=',m
?
? space(10)+str(n)+'小鸡=',x
?
n=n+1
endif
x=x+1
enddo
m=m+1
enddo
g=g+1
enddo
结果有三组: 1公鸡=4 2公鸡= 8 3公鸡=12;
1母鸡=18 2母鸡=11 3母鸡=4 ;
1小鸡=78 2小鸡= 81 3小鸡=84 .
二、百馍百僧
我国明代珠算家程大位的名著《直指算法统宗》里有一道著名算题:?“一百馒头一百僧,大僧三个更无争,小僧三人分一个,大小和尚各几丁?”如果译成白话文,其意思是:有100个和尚分100只馒头,正好分完。如果大和尚一人分3只,小和尚3人分一只,试问大、小和尚各有几人?
2.1 数学解法
数学解法(一)
设未知数列方程求解。
解:设大和尚有x人,则小和尚有(100-x)人,根据题意列得方程:
3x+1/3(100-x)=100
解方程得:x=25
小和尚:100-25=75人
数学解法(二):
(1)假设100人全是大和尚,应吃馒头多少个?
3×100=300(个).
(2)这样多吃了几个呢?
300-100=200(个).
(3)为什么多吃了200个呢?这是因为把小和尚当成大和尚。那么把小和尚当成大和尚时,每个小和尚多算了几个馒头?
3-1/3=8/3
(4)每个小和尚多算了8/3个馒头,一共多算了200个,所以小和尚有:
200÷8/3=75(人)
大和尚:100-75=25(人)
2.2 VFP编程求解
用Visual FoxPro 编程如下:
clea
dhs=1
xhs=1
n=1
do while dhs<=100 &&大和尚的最大数
if (3*dhs+1/3*(100-dhs))=100
xhs=100-dhs
? space(10)+str(n)+'大和尚=',dhs
?
? space(10)+str(n)+'小和尚=',xhs
? n=n+1
endif
dhs=dhs+1
enddo
运行程序得到结果:大和尚=25
小和尚=75
3 百羊问题
我国明代著名数学家程大位的《算法统宗》里有这样一题:“甲赶群羊逐草茂,乙拽肥羊一只随其后;戏问甲及一百否?甲云所说无差谬,若得这般一群凑,再添半群小半群,得你一只来方凑。玄机奥妙谁猜透?”根据程大位自述,这道题是他在1406年参加《永乐大典》编纂工作时,用业余时间编制的。这道题不仅在我国流传很广,而且国外不少数学家也广为引用,或进行改编。题目的意思是:甲赶了一群羊在草地上往前走,乙牵了一只肥羊紧跟在甲的后面。乙问甲:“你这群羊有一百只吗?”甲:“如果再有这么一群,再加半群,又加四分之一群,再把你的一只凑进来,才满100只。”请问甲原来赶的羊一共有多少只?
3.1 数学解法
算术方法解答的解是: (100-1)÷(1+1+1/2+1/4)=36只
因为我们把原来的羊看为单位“1”,再添一个这样的单位“1”,再添二分之一个和四分之一个单位“1”,将总数(100只)减去乙的1只,然后相除,得36只。
方程方法的解答的解是:解:设甲有x羊。 X+X+X/2+X/4+1=100 最后解得:x=36
3.2 VFP编程求解
clea
x=1
do while x<=100 &&因为羊的总数为100&&
if X+X+X/2+X/4+1=100
? space(10)+'羊群羊数=',x
?
endif
x=x+1
enddo
4 百马百瓦
我国古代数学名著《孙子算经》中记载了一道题目“一百马,一百瓦,大马一拖三,小马三拖一。”问多少大马,多少小马?
100匹马恰好拉了100片瓦,已知1匹大马能拉3片瓦,3匹小马能拉1片瓦,问有多少匹大马、多少匹小马。
4.1 数学解法
解:设有x匹大马,y匹小马。
由题意得:x+y=100
3x+(1/3)y=100
解得:x=25
y=75
答:有25匹大马,75匹小马。
另解 设大马有x匹,小马就有100-x匹,由题意得;
3x+1/3(100-x)=100
解得x=25
所以小马=100-25=75(匹)
但是还有一种假设法,这里是思路;
假设全部都是大马
则拉的瓦=100*3=300
多出300-100=200片瓦
是因为把小马拉的也算进去了,只要算出200片里有多少个1/3(100-大马)就行
假设小马同上。
4.2 VFP编程求解
用Visual FoxPro 编程如下:
set talk off
clea
dm=1
do while dm<=34 &&大马的最大数
xm=1
do while xm<=100 &&小馬的最大数
if (3*dm+xm/3)=100 .and. (dm+xm)=100
? space(10)+'大马=',dm
?
? space(10)+'小马=',xm
?
endif
xm=xm+1
enddo
dm=dm+1
enddo
变换马数和瓦数,在程序中重新设定新的值,再到计算机上运行程序,如果新设定的数值不恰当,程序就不会给出新的结果;如果新设定的数值是恰当的,计算机就会结出新的结果,操作非常简便。
中国古代数学著作中有一些数学题目极具代表性, 特别是一些趣味问题在后世广为流传。以上只是其中的四个典型例子,我们在古人智慧的基础上,借助现代的VFP计算机编程求解,其中的手工运算改由计算机自动完成,时间节省了,正确率又得到了保证。通过上面的VFP编程求解,可以看出比数学解的优势,将其程序中数值重新设定后在计算机上运行,马上就可以得到一个新的结果,从而对分析题目,推定可能的多种结果或扩大范围搜索时就显得十分方便,可见事半功倍的效果。这样将古人智慧和现代科技的巧妙地融和,用之于课堂教学,可以大大提高受古圣贤人的聪明才智,激计算机编程的趣味性、生动性,同时也可以让学生们在学习过程中感发学生的学习主动性、积极性,提高学习兴趣,使枯燥的计算机编程变得生动有趣。
参考文献
[1] 张小艳.兴趣诱导法在Visual Foxpro循环语句教学中的应用与思考[J].电脑知识与技术,2013(5).
[2] 王新.“Visual FoxPro程序设计”案例教学实践之功效分析[J].长春理工大学学报,2011(6).
[关键词]VFP;数学题;编程。
中图分类号:TP313 文献标识码:A 文章编号:1009-914X(2015)05-0262-02
Visual FoxPro(简称VFP)是最为实用的数据库管理系统和中小型数据库应用系统的开发工具之一,它为数据库结构和应用程序开发而设计。它即是一种结构化编程语言,也是一种可视化面向对象的编程语言。它具有编程纠错方便、操作简单的特点。无论将程序多么复杂,要运算多少次,计算机都会很快地给出程序的运算结果。为了提高教学效果和教学质量,提高学生的学习兴趣,我们可以将古代一些典型的有代表性的数学题目,通过编程来解决,下面就结合具体实例进行分析。
1 百鸡百钱
我国古代数学家张丘建在《算经》一书有一道百鸡百钱问题的数学题,其内容为:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
其意思是:一只公鸡值五元钱,一只母鸡值三元钱,三只小鸡值一元钱,现在用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?
1.1 数学解法
用数学方法解该题如下:
解:由题目知公鸡一只值钱五:母雞一只五值钱三,三只小鸡值钱一。而现在一百钱买一只百鸡,所以公鸡数量要最多为20只。
设公鸡x只,母鸡y只,,小鸡100-x-y只,
所以5x+3y+(100-x-y)/3=100
且x,y为整数,所以可以得出正确答案,
有三种答案:(1)公鸡4只,母鸡18只,小鸡78只
(2)公鸡8只,母鸡11只,小鸡81只
(3)公鸡12只,母鸡4只,小鸡84只
这种数学解法,难度比较较大。
1.2 VFP编程求解
如果我们利用VFP编程来解,只需按编程逻辑思路,编写好程序,然后在计算机上运行就可以了。
用Visual FoxPro 编程如下:
clea
g=1
n=1
do while g<=20 &&买公鸡的最大数
m=1
do while m<=33 &&买母鸡的最大数
x=1
do while x<=100 &&买小鸡的最大数
if (5*g+3*m+x/3)=100 .and. (g+m+x)=100
? space(10)+str(n)+'公鸡=',g
?
? space(10)+str(n)+'母鸡=',m
?
? space(10)+str(n)+'小鸡=',x
?
n=n+1
endif
x=x+1
enddo
m=m+1
enddo
g=g+1
enddo
结果有三组: 1公鸡=4 2公鸡= 8 3公鸡=12;
1母鸡=18 2母鸡=11 3母鸡=4 ;
1小鸡=78 2小鸡= 81 3小鸡=84 .
二、百馍百僧
我国明代珠算家程大位的名著《直指算法统宗》里有一道著名算题:?“一百馒头一百僧,大僧三个更无争,小僧三人分一个,大小和尚各几丁?”如果译成白话文,其意思是:有100个和尚分100只馒头,正好分完。如果大和尚一人分3只,小和尚3人分一只,试问大、小和尚各有几人?
2.1 数学解法
数学解法(一)
设未知数列方程求解。
解:设大和尚有x人,则小和尚有(100-x)人,根据题意列得方程:
3x+1/3(100-x)=100
解方程得:x=25
小和尚:100-25=75人
数学解法(二):
(1)假设100人全是大和尚,应吃馒头多少个?
3×100=300(个).
(2)这样多吃了几个呢?
300-100=200(个).
(3)为什么多吃了200个呢?这是因为把小和尚当成大和尚。那么把小和尚当成大和尚时,每个小和尚多算了几个馒头?
3-1/3=8/3
(4)每个小和尚多算了8/3个馒头,一共多算了200个,所以小和尚有:
200÷8/3=75(人)
大和尚:100-75=25(人)
2.2 VFP编程求解
用Visual FoxPro 编程如下:
clea
dhs=1
xhs=1
n=1
do while dhs<=100 &&大和尚的最大数
if (3*dhs+1/3*(100-dhs))=100
xhs=100-dhs
? space(10)+str(n)+'大和尚=',dhs
?
? space(10)+str(n)+'小和尚=',xhs
? n=n+1
endif
dhs=dhs+1
enddo
运行程序得到结果:大和尚=25
小和尚=75
3 百羊问题
我国明代著名数学家程大位的《算法统宗》里有这样一题:“甲赶群羊逐草茂,乙拽肥羊一只随其后;戏问甲及一百否?甲云所说无差谬,若得这般一群凑,再添半群小半群,得你一只来方凑。玄机奥妙谁猜透?”根据程大位自述,这道题是他在1406年参加《永乐大典》编纂工作时,用业余时间编制的。这道题不仅在我国流传很广,而且国外不少数学家也广为引用,或进行改编。题目的意思是:甲赶了一群羊在草地上往前走,乙牵了一只肥羊紧跟在甲的后面。乙问甲:“你这群羊有一百只吗?”甲:“如果再有这么一群,再加半群,又加四分之一群,再把你的一只凑进来,才满100只。”请问甲原来赶的羊一共有多少只?
3.1 数学解法
算术方法解答的解是: (100-1)÷(1+1+1/2+1/4)=36只
因为我们把原来的羊看为单位“1”,再添一个这样的单位“1”,再添二分之一个和四分之一个单位“1”,将总数(100只)减去乙的1只,然后相除,得36只。
方程方法的解答的解是:解:设甲有x羊。 X+X+X/2+X/4+1=100 最后解得:x=36
3.2 VFP编程求解
clea
x=1
do while x<=100 &&因为羊的总数为100&&
if X+X+X/2+X/4+1=100
? space(10)+'羊群羊数=',x
?
endif
x=x+1
enddo
4 百马百瓦
我国古代数学名著《孙子算经》中记载了一道题目“一百马,一百瓦,大马一拖三,小马三拖一。”问多少大马,多少小马?
100匹马恰好拉了100片瓦,已知1匹大马能拉3片瓦,3匹小马能拉1片瓦,问有多少匹大马、多少匹小马。
4.1 数学解法
解:设有x匹大马,y匹小马。
由题意得:x+y=100
3x+(1/3)y=100
解得:x=25
y=75
答:有25匹大马,75匹小马。
另解 设大马有x匹,小马就有100-x匹,由题意得;
3x+1/3(100-x)=100
解得x=25
所以小马=100-25=75(匹)
但是还有一种假设法,这里是思路;
假设全部都是大马
则拉的瓦=100*3=300
多出300-100=200片瓦
是因为把小马拉的也算进去了,只要算出200片里有多少个1/3(100-大马)就行
假设小马同上。
4.2 VFP编程求解
用Visual FoxPro 编程如下:
set talk off
clea
dm=1
do while dm<=34 &&大马的最大数
xm=1
do while xm<=100 &&小馬的最大数
if (3*dm+xm/3)=100 .and. (dm+xm)=100
? space(10)+'大马=',dm
?
? space(10)+'小马=',xm
?
endif
xm=xm+1
enddo
dm=dm+1
enddo
变换马数和瓦数,在程序中重新设定新的值,再到计算机上运行程序,如果新设定的数值不恰当,程序就不会给出新的结果;如果新设定的数值是恰当的,计算机就会结出新的结果,操作非常简便。
中国古代数学著作中有一些数学题目极具代表性, 特别是一些趣味问题在后世广为流传。以上只是其中的四个典型例子,我们在古人智慧的基础上,借助现代的VFP计算机编程求解,其中的手工运算改由计算机自动完成,时间节省了,正确率又得到了保证。通过上面的VFP编程求解,可以看出比数学解的优势,将其程序中数值重新设定后在计算机上运行,马上就可以得到一个新的结果,从而对分析题目,推定可能的多种结果或扩大范围搜索时就显得十分方便,可见事半功倍的效果。这样将古人智慧和现代科技的巧妙地融和,用之于课堂教学,可以大大提高受古圣贤人的聪明才智,激计算机编程的趣味性、生动性,同时也可以让学生们在学习过程中感发学生的学习主动性、积极性,提高学习兴趣,使枯燥的计算机编程变得生动有趣。
参考文献
[1] 张小艳.兴趣诱导法在Visual Foxpro循环语句教学中的应用与思考[J].电脑知识与技术,2013(5).
[2] 王新.“Visual FoxPro程序设计”案例教学实践之功效分析[J].长春理工大学学报,2011(6).