子程序的应用(教案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
具体程序如下:
主程序:
Declare sub huayuan( )
Declare sub huashanjiaoxing( )
Declare sub huabanyuan( )
Cls
N=1
While n<>4
Print tab(3);”1.huayuan”
Print
Print tab(3);”2.huashanjiaoxing”
教学媒体:CAI课件
教学工具:计算机
教学过程:
一、复习提问
1、建立子程序的命令格式?(分无参子程序和有参子程序)
无参子程序格式:有参子程序格式:
SUB子程序名SUB子程序名(形式参数)
语句组语句组
END SUB END SUB
2、对于有参子程序中的形式参数与主程序中对应的实际参数的值是如何传递的?
主程序在调用子程序时,实际参数将其初值传递给与之对应的形式参数,如果形式参数的值发生了变化,那么与之对应的实际参数的值也发生变化。即形式参数的终值返还给与之对应的实际参数。也就是说形式参数与实际参数之间的值是相互传递的。(注:教材没有要求区分按值传递和地址传递)
line (120,160)-(320,480)
line (320,480)-(20,80)
end sub
子程序三:
sub huabanyuan
screen 12
circle (120,240),60,4,-1.57,4.71
end sub
例2:求3!+5!+8!的和。
算法分析:
这是一道求阶乘的算术题,虽然我们可以将求3!、5!、8!以子程序的形式编写出来,但这并不是我们所认为的最佳方法,而且比较呆板。既然都是求阶乘,它们有一个通项式即N!。我们只需编写一个求N!的子程序即可。这不仅减少我们的编程量,也大大地提高了编程效率。这里又由于不是求某个阶乘,而是求阶乘的和,涉及到数据的传递,因此子程序宜采用有参子程序来编写。本题中N的取值分别为3,5,8,故需要调用该子程序3次,即用FOR循环语句调用3次子程序。具体步骤如下:
3、调用子程序的命令格式是什么?
无参子程序格式:CALL子程序名
有参子程序格式:CALL子程序名(实际参数)
二、应用举例(程序流程图由学生自己画出)
例1:要求在屏幕上显示如下菜单:
1、画圆
2、画三角形
3、画半圆
4、结束
并要求编写出具有实现上述功能的程序。
算法分析:
在设计这个程序时,需要编写画圆、三角形、半圆图像的3段程序,如果都写在同一模块中,程序会很长,结构不清晰,读起来也很费力。所以我们把它写成3个子程序,它们的功能分别是画圆、三角形、半圆的图像,这样,一个复杂的任务分解为几个简单的子程序,使得复杂的问题简单化。由于没有数据需要传递,故该程序为无参子程序。具体步骤如下:
cls
sum=0:sm=0
forI=1 to 3
input“n=”;n
call jc(n,sm)
sum=sum+sm
nextI
print“sum=”;sum
end
子程序如下:
sub jc(m,s)
t=1
for j=1 to m
t=t*j
next j
print m;”!=”;t
s=t
end sub
例3:求多边形面积。如图所示:
If n=3 then call huabanyuan
Wend
End
三个子程序如下:
子程序一:
sub huayuan
screen 12
circle (160,Байду номын сангаас00),50,4
end sub
子程序二:
sub huashanjiaoxing
screen 12
line (20,80)-(120,160)
具体步骤如下:
1、编写出求一个三角形面积的子程序
2、用FOR循环语句调用子程序4次
3、在主程序中的实际参数用变量X,Y,Z,M来分别对应形式参数A,B,C,S。其中M为每次通过S求得的不同三角形面积的值。
4、又因三角形的边长已知,故用READ语句读入初始数据,即READ X,Y,Z
具体的值由语句DATA提供。
Print
Print tab(3);”3.huabanyuan”
Print
Print tab(3);”4.end”
Do
Input“please select(1__4)”;n
Loop until n<=4 and n>=1
If n=1 then call huayuan
If n=2 then call huashanjiaoxing
y=sin(x+c)
pset (x,y),d
for j=1 to 1000
next j
next x
end sub
三、小结:
本节我们通过实际应用来进一步理解子程序的有关概念,同时也是加强我们的分析问题、解决问题的能力,并不断地提高我们的编程水平。
四、作业(略)
注:以上程序均在QBASIC程序环境下调试通过
此教案中的例1、例2、例3、例4程序分别对应的QBASIC中调试程序TD1.bas,TD2.bas,
TD3.bas, TD4.bas
其中TD1.bas,TD2.bas,TD3.bas, TD4.bas程序均放在文件夹QBASIC中
2004年7月
具体程序如下:
主程序:
declare sub sear(a!,b!,c!,s!)
cls
sum=0:m=0
forI=1 to 4
read x,y,z
call sear(x,y,z,m)
sum=sum+m
nextI
print sum
data 6.2,5.1,7.4,4.9,3,6.1
data 7.9,5.1,8.1,7.4,6.1,8.1
1、编写出一个求N!的子程序
2、在主程序中实际参数用变量N,SM来对应子程序中的形式参数变量M,S,其中SM是通过S求得的N不同取值的阶乘的积。并且用FOR循环语句反复调用子程序3次。
3、用键盘输入语句INPUT给变量N赋初值,也就是给形式参数M赋初值。
具体程序如下:
主程序:
declare sub jc(m!,s!)
3、根据C,D的3次取值不同,在主程序中用FOR循环语句调用子程序3次
4、因C,D的值已知,故用READ语句读入初值,即READ M,N,具体的值由DATA语句提供
具体程序如下:
主程序:
declare sub chuxiang(c!,d!)
forI=1 to 3
read m,n
call chuxiang(m,n)
end
子程序如下:
sub sear(a,b,c,s)
p=(a+b+c)/2
s=sqr(p*(p-a)*(p-b)*(p-c))
end sub
例4:编出子程序CHUXING(C,D),它的功能是画出Y=SIN(X+C)的不同颜色的正弦函数图像,其中C为初相,D为颜色号。写出主程序,在主程序中C,D取3组值,即3次调用子程序。
1、显示出菜单
2、输入一个1至4之间的一个数字送入变量N
3、进行判断:
如果N=1,则调用画圆的子程序
如果N=2,则调用画三角形的子程序
如果N=3,则调用画半圆的子程序
4、重复执行步骤1至3,直到N=4程序结束
5、因为步骤1至3重复执行几次不能确定,是以条件N=4是否成立来决定的,所以这里使用的是:条件循环语句WHILE——WEND
算法分析:
在完成这个任务时,需要3次使用画Y=SIN(X+C)的正弦函数图像的程序,只是每次C,D的取值不同,因此把画Y=SIN(X+C)图像的一段程序写成子程序,然后在主程序中使用FOR循环语句反复调用它。
具体步骤如下:
1、写出画Y=SIN(X+C)图像的子程序
2、在主程序中实际参数用变量M,N来对应形式参数C,D
nextI
data 0,15,1.5708,12,-1.0472,14
end
子程序如下:
sub chuxiang(c,d)
screen 12
window (-4,-10)-(10,10)
line (0,10)-(0,-10),2
line (-4,0)-(10,0),2
for x= -10 to 10 step 0.01
5.1 3 4.9
6.2 7.4 6.1
8.1
8.1 7.9
算法分析:
本题解题方法与例2差不多(请大家分析)。
因该多边形是由4个三角形组成,要得到多边形面积就只需要求出每一个三角形面积即可。而求三角形面积的公式是一样的(均按海伦公式),故我们只要编写出求一个三角形面积的子程序即可。然后用FOR循环语句来反复调用该子程序4次。这里因涉及到数据的传递,需要采用有参子程序。
子程序的应用(教案)
湖南省桃江县第一中学田岱
教学目的:1、激发学生对编程的学习兴趣,并掌握使用QBASIC进行程序设计的基础方法。
2、让学生进一步理解并掌握子程序有关基础知识,并能解决实际问题,不断提高自己的编程水平。
教学重点:算法分析
教学难点:通过对子程序知识的学习来解决实际问题,并能正确编写程序。
相关文档
最新文档