VF程序设计与数据库应用教案.ppt_第1页
VF程序设计与数据库应用教案.ppt_第2页
VF程序设计与数据库应用教案.ppt_第3页
VF程序设计与数据库应用教案.ppt_第4页
VF程序设计与数据库应用教案.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 结构化程序设计,3.4 模块化设计 结构化程序设计原则: 自顶向下、逐步细化/求精 1、子程序 基本概念: 主程序:主控模块,调用子程序。 子程序:功能模块,被调用。 子程序的使用: 主程序:do 子程序名 子程序:通过return返回,第3章 结构化程序设计,3.4 模块化设计 1、子程序 主程序与子程序调用关系图:,Set talk off . . . DO SUB1 . . . . Set talk on,主程序MAIN.PRG,. . . DO SUB2 . . . RETURN,子程序SUB1.PRG,子程序 SUB2.PRG,. . . . . . Return,注意: Retrun to master情况,第3章 结构化程序设计,3.4 模块化设计 1、子程序 应用举例: 例1:分别计算100以内,200以内,300以内的奇数之和。 主程序:main.prg & 控制模块 子程序:sub.prg & 功能模块,set talk off clear x=100 do sub x=200 do sub x=300 do sub set talk on,s=0 for j=1 to x step 2 s=s+j next ?x,”以内的奇数和为:”,s return,主程序,子程序,第3章 结构化程序设计,3.4 模块化设计 2、过程 (1)过程文件概念: 子程序的独立存在。 将多个子程序合并起来存放在一个公用的程序文件中,该文件为过程文件。 (2)过程文件构成: procedure 子程序1文件名 程序 return procedure 子程序2文件名 程序 return,第3章 结构化程序设计,3.4 模块化设计 2、过程 (3)过程的调用和关闭: 调用:set procedure to 过程文件名 关闭:set procedure to或close procedure (4)过程的应用方式: 方式一:主程序+过程文件为两个独立的程序文件 方式二:主程序+过程文件在同一程序文件中 应用举例: 1、采用过程方式,编程实现用“*”绘制平行四边形、梯形、直角三角形和等腰三角形。,第3章 结构化程序设计,3.4 模块化设计 2、过程 (3)过程的调用和关闭: 调用:set procedure to 过程文件名 关闭:set procedure to或close procedure (4)过程的应用方式: 方式一:主程序+过程文件为两个独立的程序文件 方式二:主程序+过程文件在同一程序文件中 应用举例: 1、采用过程方式,编程实现用“*”绘制平行四边形、梯形、直角三角形和等腰三角形。,第3章 结构化程序设计,3.4 模块化设计 3、自定义函数 函数的分类 系统函数 自定义函数 自定义函数的概念: 是指在程序设计中需要某项功能,而系统函数又无法满足需要,则用户可以自己创建函数,这些函数,称为用户自定义函数 。 自定义函数的分类: 内部自定义函数 独立自定义函数,第3章 结构化程序设计,3.4 模块化设计 3、自定义函数 应用举例: 1、自定义一个摄氏温度转换为华氏温度的函数:ctf()。 方式一:内部自定义函数:ctf() 程序如下: test1.prg clear Input “请输入一个摄氏温度的值:” to c ?”华氏温度为:”,ctf (c) function ctf para x & parameters y=x*(9/5)+32 return y,提问:该函数可以如系统函数一样使用吗?,第3章 结构化程序设计,3.4 模块化设计 3、自定义函数 应用举例: 1、自定义一个摄氏温度转换为华氏温度的函数:ctf()。 方式二:独立自定义函数:ctf() 程序如下:ctf.prg para x & parameters y=x*(9/5)+32 return y 在命令窗口测试:ctf() 在程序中测试:ctf(),提问:如何使用该函数?,第3章 结构化程序设计,3.5 内存变量的作用域 内存变量的分类: 全局变量、局部变量、私有变量、隐藏变量 全局变量: 概念:指在整个系统各级程序中都有效的内存变量。 定义:public,先定义后使用。 局部变量 概念:指在本级程序中有效的内存变量。 定义:local,先定义后使用。 私有变量 概念:指在本级及下级子程序中都有效的内存变量。 定义:默认方式,直接赋值使用。 隐藏变量 概念:将高层程序中创建的、与隐藏变量同名的全局变量和私有变量隐藏起来。是私有变量的一种特例。 定义:private,不创建,只是隐藏指定变量。,第3章 结构化程序设计,3.5 内存变量的作用域 四种变量的关系: 应用举例: 例1:分别计算100以内,200以内,300以内的奇数之和。 验证一:主程序与子程序的正常应用,系统默认变量x的作用域是什么?(私有变量,具有继承性) 验证二:在主程序中声明:local x, 观察会发生什么错误,为什么?(局部变量,不能在非本级程序中使用) 验证三:在子程序中声明:private x,观察会发生什么错误,为什么?(隐藏了上级变量,本级程序中无法使用),第3章 结构化程序设计,课堂练习 1、利用过程文件完成多图形绘制。 2、定义一个测试是否为素数的函数:prime() Function prime Input “请输入一个自然数:” to n Flag=.t. for i=2 to sqrt(n) If mod(n,i)=0 Flag=.f. exit Endif Next If flag ?n,”是素数” Else ?n,”不是素数” Endif,第3章 结构化程序设计,3.5 数组的应用 1数组与数组元素 (1)概念:数组是用一个统一的名称表示的、顺序排列的一组变量。类似于数学中的下标变量。 (2)数组元素:数组中的每一个变量称为一个数组元素。 2数组的维数: (1)一维数组与二维数组:A(10),B(5,2) (2)数组的顺序: 一维数组:A(1) A(2) A(10) 二维数组:B(1,1) B(1,2) B(2,1) B(2,2) B(5,2),第3章 结构化程序设计,3.5 数组的应用 3数组的使用 (1)数组的定义(声明): Dimension 数组名 declare 数组名 (2)数组的作用域: local、private、public同变量的作用域 (3)数组的赋值:=、store 给某一元素赋值:A(1)=1 给某一数组赋值:A=1,第3章 结构化程序设计,3.5 数组的应用 3数组编程 例1随机产生100个10,99之间的随机整数。 set talk off clear dime a(100) for i=1 to 100 a(i)=int(rand()*90+10) ?a(i) next set talk on,第3章 结构化程序设计,3.5 数组的应用 3数组编程 例1进一步随机产生100个10,99之间的随机整数,并求和。 set talk off clear dime a(100) s=0 for i=1 to 100 a(i)=int(rand()*90+10) s=s+a(i) Next ?s set talk on,第3章 结构化程序设计,数组的应用 例题2. 已知一个数列的前3项分别为0,0,1,以后各项都是前3项之和,求该数列的前30项之和。 set talk off clear dime a(30) a(1)=0 a(2)=0 a(3)=1 for i=4 to 30 a(i)=a(i-1)+a(i-2)+a(i-3) s=s+a(i) endfor ?s set talk on,第3章 结构化程序设计,程序设计综合练习 典型习题1-递推算法 已知一个数列如下:1、1、2、3、5、8、13、21求该数列的第60项为多少? set talk off clear dime f(60) f(1)=1 f(2)=1 for i=3 to 60 f(i)=f(i-1)+f(i-2) f(i-2)=f(i-1) &新的第一项 f(i-1)=f(i) &新的第二项 endfor ?f(i-1) set talk on,为什么?验证!,第3章 结构化程序设计,程序设计综合练习 典型习题2-求素数 例题1:判断一个数是否为素数? set talk off clear Input “请输入一个自然数:” to n flag=.t. for i=2 to sqrt(n) |n/2 |n-1 If mod(n,i)=0 flag=.f. exit endif next If flag ?n,”是素数” else ?n,”不是素数” endif set talk on,可以删除该语句吗?为什么?,第3章 结构化程序设计,程序设计综合练习 典型习题2-求素数 例题2:求100到1000之间素数的个数。 s=0 for n=100 to 1000 flag=.t. for i=2 to sqrt(n) If mod(n,i)=0 flag=.f. exit endif next endfor If flag s=s+1 endif ?s,Flag=.t. ?为什么?,第3章 结构化程序设计,程序设计综合练习 典型习题3-求完备数 例题1:一个整数所有因子之和等于该数本身,如6=1+2+3。求10000以内完备数。 for i=1 to 10000 s=1 for j=2 to sqrt(i) if mod(i,j)=0 s=s+j+i/j endif next if s=i ?i endif next,i/j是什么?,第3章 结构化程序设计,程序设计综合练习 基本编程练习题 1 .用一元纸币兑换一分、两分和五分的硬币,要求兑换硬币的总数为60枚,问共有多少种换法?(注:在兑换中一分、两分或五分的硬币数可以为0枚) 11 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论