第七章 程序设计基础 信息工程系 李希敏.

Slides:



Advertisements
Similar presentations
第6章结构化与面向对象程序设计基础.
Advertisements

开远市第一中学 2014年高考志愿填报指导会 2014年6月26日.
第六章 Visual Foxpro 基 础 荆楚理工学院.
综合素质评价实施 建 议 丹东市教师进修学院 高中部 2009年1月17日.
《老年人权益保障》 --以婚姻法.继承法为视角
棋盘上的麦粒 循环结构——FOR循环.
循环模式 流程图的画法: 条件 y 循环体 伪代码: n Do while 条件 循环体 loop 每个循环模式的结构都是一个入口,一个出口.
第9章 结构化程序设计.
负 债 第九章 主讲老师:潘煜双 方正为人,勤慎治学.
Oracle数据库 Oracle 子程序.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
C#程序设计基础 $5 流程控制.
Hadoop I/O By ShiChaojie.
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
第4章 程序控制结构与算法基础.
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
ENVI-IDL可视化程序设计 楚雄师范学院地理科学与旅游管理学院 杨云源 QQ:
第二章 Java语言基础.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
SOA – Experiment 2: Query Classification Web Service
第4章 PHP流程控制语句.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
第七章 程序设计基础.
姚金宇 MIT SCHEME 使用说明 姚金宇
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
《计算机应用基础》 第9章 程序设计基础(二).
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
College of Computer Science & Technology
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
第二章 Java基本语法 讲师:复凡.
初三VB 复习一.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
3.13 选择结构程序设计初步.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
复习 标签(label)、文本框(text)控件 按钮:点击事件
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Visual FoxPro 应用基础与面向对象 程序设计教程
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
五 循环结构程序设计 厦大附中信息技术.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第7章 VFP6程序设计基础 数据库应用程序设计 山西国际商务职业学院 返回
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
1.2.2条件语句.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
顺序结构程序设计 ——关于“字符串”和数值.
第二章 一元一次不等式和一元一次不等式组 回顾与复习(一).
考察点:switch\while\for System.in\Scanner char vs int
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
Presentation transcript:

第七章 程序设计基础 信息工程系 李希敏

本章的主要内容 程序的建立、修改和执行方法;基本输入/输出命令 程序的三种基本的控制结构 主程序、子程序、过程和自定义函数的概念和编写 理解和掌握内存变量作用域的定义命令 对简单的应用系统的总体设计和应用程序编写

重点 难点 程序的三种基本结构 多模块结构 顺序结构、选择结构和循环结构 模块的定义和调用、参数传递和变量的作用域 循环结构的使用、多模块结构中参数传递的两种方式、变量作用域

7.1 程序与程序文件 程序与程序文件的概念 程序文件的建立和执行 简单的输入输出命令

7.1.1 程序与程序文件 程序 程序文件 程序是能够完成一定任务的命令的有序集合。 7.1.1 程序与程序文件 程序 程序是能够完成一定任务的命令的有序集合。 程序文件 程序文件(或命令文件)以文本文件的形式存在,扩展名为.prg。

7.1.2 程序文件的建立和执行 一、程序文件的建立 通过“文件”菜单中的“新建”命令建立 7.1.2 程序文件的建立和执行 一、程序文件的建立 通过“文件”菜单中的“新建”命令建立 通过命令方式建立:modi comm <命令文件名> 二、程序文件的运行 格式:Do 应用程序名.prg 注意: 执行程序文件时最好能加上扩展名,因为如果没有指定扩展名,系统将按下列程序执行:.exe(可执行文件)→.app(应用程序文件)→.fxp(编译文件)→.prg(命令文件)

7.1.3 简单的输入输出命令 一、输入命令 二、无格式输出命令 INPUT 命令 可以输入各种类型的表达式 ACCEPT命令 WAIT命令 7.1.3 简单的输入输出命令 一、输入命令 INPUT 命令 可以输入各种类型的表达式 N C(必须加定界符) L(加.定界,如.t.,.f.) D(采用严格的日期格式输入,如{^05/17/2005}) ACCEPT命令 将输入的内容自动加上定界符,故输入字符型数据常用 WAIT命令 只能输入单个字符 二、无格式输出命令 ?/?? <表达式列表> ?为换行输出,??不换行输出

INPUT命令应用示例 例1、求通过键盘输入的任一数值的绝对值并输出。 clear input "输入任一数值:" to x if x<0 x=-x endif ?'X的绝对值是:',x return

ACCEPT命令应用示例 set talk off clear accept "请输入任一字符串:" to x y=upper(x) 例2、将小写字母转换成大写字母的命令文件aaa.prg。 set talk off clear accept "请输入任一字符串:" to x y=upper(x) ?"转换的结果是:",y set talk on return

7.2 程序的基本结构 有三种基本的控制结构 顺序结构 选择结构 循环结构

7.2.1 顺序结构 例3、编程输出每个仓库的平均工资(pjgz.prg) clear open database 订货管理 7.2.1 顺序结构 例3、编程输出每个仓库的平均工资(pjgz.prg) clear open database 订货管理 select 仓库号,avg(工资) as 平均工资 from 职工; group by 仓库号 into table pjgz use pjgz browse close all return

7.2.2 选择结构 分为条件语句和分支语句 条件语句 分支语句 If…endif 结构 If…else…endif 结构 7.2.2 选择结构 分为条件语句和分支语句 条件语句 If…endif 结构 If…else…endif 结构 分支语句 Do case…endcase 结构

选择结构举例 例1、求任一个数的绝对值并输出。 clear input "请输入任一个数值:" to x if x<0 x=-x endif ?"该数的绝对值是:",x return

例2、利用海伦公式求三角形的面积。 clear input 'a=' to a input 'b=' to b input 'c=' to c if a+b>c and b+c>a and a+c>b s=(a+b+c)/2 area=sqrt(s*(s-a)*(s-b)*(s-c)) ?'面积为:',area else ?‘该三角形不存在!' endif return

分支结构示例 例3、将学生成绩分为 “不及格”、“及格”、“良好”和“优秀”等次。 clear input "输入学生成绩:" to score do case case score>=0 and score<60 ?"不及格" case score>=60 and score<70 ?"及格" case score>=70 and score<85 ?"良好" case score>=85 and score<=100 ?"优秀" otherwise ?"不合法的数据!" endcase

7.2.3 循环结构 也称“重复处理”结构,当满足某个指定条件时,反复执行某段程序代码。被重复执行的程序段通常称之为“循环体” 7.2.3 循环结构 也称“重复处理”结构,当满足某个指定条件时,反复执行某段程序代码。被重复执行的程序段通常称之为“循环体” VFP支持三种格式的循环控制语句: do while … enddo(当型循环) for … endfor(“计数型”循环) scan … endscan(“扫描型”或“指针型”循环)

一、Do while …enddo循环 该循环的语句格式及执行过程如下: Do while <条件> <语句序列1> [loop] <语句序列2> [exit] <语句序列3> enddo 假 条件 循环体 真 ENDDO后面的语句 LOOP EXIT

循环结构示例 例1、求前100个自然数中的偶数和。 方法一(使用DO循环) : Clear s=0 i=2 do while i<=100 s=s+i i=i+2 enddo ?“前100个自然数中的偶数和为:",s return

循环的嵌套示例 例2:输出九九乘法口诀表。 clear i=1 do while i<10 j=1 do while j<=i s=i*j ??str(j,1)+'*'+str(i,1)+'='+str(s,2)+' ' j=j+1 enddo i=i+1 ? Enddo return

二、For…endfor(计数式循环) 该语句用循环计数器<循环变量>来控制循环体的执行次数。常用于实现循环次数已知情况下的结构 执行时,首先将循环变量初值赋予循环变量,然后判断循环变量是否大于(步长大于0时)或小于(步长小于0时)循环变量终值,若结果为真,则退出循环;否则,执行循环后,循环变量自动按步长增加或减少,如下图所示。 N Y 循环变量>=变量终值 (步长大于0时) 循环变量=循环变量初值 执行循环体后,循环变量自动按步长增加 Endfor的后继语句 N Y 循环变量<=变量终值 (步长小于0时) 循环变量=循环变量初值 执行循环体后,循环变量自动按步长减少 Endfor的后继语句

FOR循环示例 例3、求前100个自然数中的偶数和。 clear s=0 for I=2 to 100 step 2 s=s+i endfor ?“前100个自然数中的偶数和是:",s return

三、Scan … endscan(扫描型循环) 例4、统计职工表中工资大于1230元的职工人数。 clear use 职工 n=0 scan for 工资>1230 n=n+1 endscan ?‘工资大于1230的职工人数:’,n use return

使用循环语句时应注意 do while和enddo、for和endfor、scan和endscan必须配对使用。 循环体可以是任何VFP命令或语句。 循环变量应是数值型的内存变量或数组。 exit和loop命令可以嵌入循环体内,改变循环次数,但不能单独使用。 exit命令的作用是跳出循环, loop命令的作用是转回循环的开始处,重新对条件进行判断。

7.3 多模块程序 一、模块的定义和调用 在VFP中,模块可以是命令文件,还可以是过程。 命令文件的定义:modify command <命令文件名> 过程是以过程说明语句开始,以返回命令结束的独立程序段,使用时用户通过过程名调用并执行。 一个过程文件中可以包含多个过程,调用一个过程文件后,就可以调用执行其中的每个过程,这样就减少了打开文件的个数。 使用过程文件必须遵循“打开—调用—关闭”的步骤。 与过程有关的操作语句有如下几种:

与过程有关的操作语句: 过程说明语句 打开过程文件语句 过程调用语句 过程返回语句 关闭过程文件语句 Procedure <过程名> <命令行序列> Endproc 打开过程文件语句 Set procedure to [<过程文件名>] 过程调用语句 Do <过程文件名> 或者 <过程名>() 过程返回语句 Return [to master|to <过程名>] 关闭过程文件语句 Close procedure

例1:在主程序main.prg中调用过程文件sub.prg。 方法1: (不带参数的调用) *主程序main.prg set proc to sub a=0 do p1 do p2 do p3 ?'a=',a close proc

过程文件sub.prg proc p1 a=a+1 return proc p2 a=a*a proc p3 do p1 a=a*a+1

方法2:也可以写成一个文件的形式 Clear a=0 do p1 do p2 do p3 ?'a=',a proc p1 a=a+1 a=a*a proc p3 a=a*a+1 return

二、带参数的过程调用示例1 clear for m=3 to 100 if ssh(m) ??m endif endfor procedure ssh para x for k=2 to x-1 if mod(x,k)=0 return .f. return .t.

示例2: clear x=10 m=2 n=3 do ss with m,n proc ss para a,b,c,d x=10+a ?x,a,b,c,d return

示例3(方法1) s=0 for i=1 to 5 s=s+jc(i) endfor ?s proc jc para x p=1 for j=1 to x p=p*j return p

方法2 clear s=0 for i=1 to 5 do jc with i s=s+p endfor ?s proc jc para x public p p=1 for j=1 to x p=p*j 方法2

三、变量的作用域 在VFP中,以变量的作用域来分,可将内存变量分为公共变量、私有变量和局部变量。 公共变量:必须先定义后使用。 Public <内存变量表> 局部变量:必须先定义后使用。 Local <内存变量表> 私有变量 没有用上面两个命令事先声明并在程序中直接使用的变量。 Private命令的使用 在使用该命令可以屏蔽上级程序中存在的同名变量。

请注意: 公共变量在所有的模块中起作用,一旦定义就一直有效,除非执行了清除内存变量的操作或者退出了VFP。 私有变量在建立它的模块及其下属模块中有效,直到该模块程序运行结束,则自动清除。 局部变量只能在建立它的模块中有效,不能在上层或下层模块中使用。

变量作用域示例1 clear public x1 x1=3 local x2 x2=date() x3='abcd' Do p1 ?x1,x2,x3 Return Proc p1 ?x1,x3

示例2: clear all x='visual foxpro' y='二级' do p1 ?y+x set talk on Proc p1 local x x='visual foxpro dbms考试' y='计算机等级'+y return

Private命令使用示例 X=10 Y=20 Do p2 ?x,y Procedure p2 Private x X=50 Y=100 Return 运行结果: 50 100 10 100