第5章 程序设计

合集下载

C语言 第五章-循环结构程序设计

C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/

大学计算机基础第5章

大学计算机基础第5章

时期 阶段
任务
文档
需求分析 系统的目标及应完成的工作 需求规格说明书
开发
总体设计 软件设计
详细设计 软件编码 编写程序代码
总体设计说明书 详细设计说明书 程序、数据注释
黑盒测试、白盒测试、单元 测试后的软件、
软件测试 测试、集成测试、确认测试、大纲、方案与结
系统测试

运行 软件维护 运行和维护
维护后的软件
1)软件生命周期模型:是描述软件开发过程 中各种活动如何执行的模型。 2)常见的软件生命周期模型有:瀑布模型、 增量模型、螺旋模型、喷泉模型、变换模型及 基于知识的模型等。
上图是软件生存周期的瀑布模型。
5、软件工具与软件开发环境
软件工具:就是帮助开发软件的软件。 软件开发环境(或称软件工程环境):是全面支 持软件开发全过程的软件工具的集合,这些软 件工具按照一定的方法和模式组合起来,共同 支持软件生命周期内的各个阶段和各项任务的 完成。
结构化方法的软件开发过程
软件计划后 结构化分析
结构化设计
编码并测试 结构化程序设计
面向对象方法的软件开发过程
软件计划后 面向对象分析
面向对象设计
软件测试 面向对象编程
1、结构化分析方法
1)结构化分析(简称SA)方法是面向数据流 进行需求分析的方法。该方法使用简单易读 的符号,运用抽象的概念模型,根据软件内 部数据传递、变换的关系,自顶向下逐层分 解,描绘出满足功能要求的软件模型
DFD图的数据流可分为两种类型:变换流和事务流 变换流:信息沿着输入通路进入系统,同时将信息的外
部形式转换成内部形式,通过变换中心处理之 后,再沿着输出通路转换成外部形式输出 事务流:信息沿着输入通路到达一个事务中心,事务中 心根据输入信息的类型在若干个动作序列中选 择一个来执行,这种信息流称为事务流

第5章 选择结构程序设计

第5章 选择结构程序设计

通过例5.4和5.5,会注意到:无论是块If单分支结构还是块If双分支结构,均 把程序执行过程分为满足条件的一支和不满足条件的另一支,但在应用中会遇 到类似下面的问题或更复杂的情况,例如,分段函数: x2 1 x>0 y 0 x=0 2 x<0 x 1
自变量x的取值分为三种情况,对应函数y有不同的计算表达式。此类问题 可以使用三个块IF单分支结构完成;也可以使用块IF双分支结构。若采用前 者,读者可仿照例5.4完成;若采用后者,可先把x的取值分为“等于0”和 “不等于0”两种情况,再把“不等于0”这种情况分成“大于0”和“小于0”两种 情况,代码如下: Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x <> 0 Then If x > 0 Then ' 不等于0的情况之一 y=x^2+1 Else ' 不等于0的情况之二 y=x^2-1 End If
2 2
Dim x As Single, y As Single ' 声明x,y为单精度变量 x = Val(InputBox("请输入变量的值")) ' 输入x的值 If x >= 0 Then ' x>=0时计算y y=x^2+1 End If If x < 0 Then ' x<0时计算y y=x^2-1 End If Print "x="; x, "y="; y 该代码段根据x取值的两种情况,分别计算出相应的y值,一个单分支If 结构完成一种情况的计算,因此结构简单,容易理解,但程序不够简练。

语句组1

第5章 汇编语言程序

第5章 汇编语言程序

Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。

[工学]《C语言程序设计》第5章___数组、字符串、指针

[工学]《C语言程序设计》第5章___数组、字符串、指针

5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;

a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
说明: ① int a[10]={0,1,2,3,4};
给前5个元素赋 值,其余赋0值 不能给数组整体 赋值,改成{1} 静态存储类型, 初值为0 可以省略数组元 素个数。 初值的个数不能 超过元素个数
② int a[10]=1;
③ static int a[3]; ④ int a[ ]={1,2,3,4,5}; ⑤ int a[5]={1,2,3,4,5,1 };
代码: for(i=0; i<N-1; i<5; i++) { p=i; for(j=i+1; i<N; j<6; j++) if(a[j]<a[p]) p=j; t=a[i]; a[i]=a[p]; a[p]=t; } 5-5.c

C语言程序设计-第5章全解

C语言程序设计-第5章全解
2018/10/21 华中科技大学计算机学院C语言课程组 22
函数返回的值,程序可以使用它, 也可以不使用它
while(…) { getchar(); c=getchar(); … } /* 返回值不被使用 */ /* 返回值被使用 */
2018/10/21 华中科技大学计算机学院C语言课程组 18
5.2.1
函数的定义
函数定义的一般形式为: 类型名 函数名(参数列表) { 声明部分 语句部分 }
2018/10/21 华中科技大学计算机学院C语言课程组 19


类型名说明函数返回值(即出口参数)的数据类型 (简称为函数的类型或函数值的类型),可以是除 数组以外的任何类型。当返回值类型为void,函数 将不返回任何值。 参数列表说明函数入口参数的名称、类型和个数, 它是一个用逗号分隔的变量名及其类型列表,它描 述了在调用函数时函数所接收的参数。一个函数可 能没有参数,在没有参数的情况下,参数列表说明 为void,否则必须明确地列出每一个参数的类型。
16

图5.1 C语言程序的基本结构
2018/10/21
华中科技大学计算机学院C语言课程组
17
5.2

函数的定义与函数的声明
程序中若要使用自定义函数实现所需的功能, 需要做三件事: ① 按语法规则编写完成指定任务的函数,即 定义函数; ② 有些情况下在调用函数之前要进行函数声 明; ③ 在需要使用函数时调用函数
2018/10/21
华中科技大学计算机学院C语言课程组
9



在函数的顶端用“/*……*/”格式包含的部分是函 数头部注释,包括函数名称、函数功能、函数参数、 函数返回值等内容,如有必要还可增加作者、创建 日期、修改记录(备注)等相关项目。虽然函数头 部注释在语法上不是必需的,但可以提高程序的质 量和可维护性,在程序设计时要遵从这一编程规范。 GetNum是函数名,其后的void说明函数调用时不 接收任何参数,即没有入口参数,函数执行完应该 返回所产生的随机数,即该随机数是函数的出口参 数,函数名前的int说明出口参数的类型为整型。 函数体内的rand是接口stdlib.h中的一个函数,它 返回一个非负并且不大于常量RAND_MAX的随机整 数,RAND_MAX的值取决于计算机系统。 MAX_NUMBER是用#define定义的符号常量,其 值为1000。当执行return语句时,其后表达式的值 被带回到调用函数中。

C语言课件 第5章

C语言课件 第5章
如果x<y, max=y, min=x ③ 输出最大值max、 最小值min
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float

第5章 面向对象的程序设计

第5章 面向对象的程序设计

5.2.6 修饰符2-1
包中类B 本类D 包中子 类E 所有子类C 所有类A
public protected
类、变量、方法 A B+C 变量、方法
default 类、变量、方法 B private D 变量、方法 private protected 变量、方法 C
14
5.2.6 修饰符2-2
用来说明类、方法或变量的类型。
5.5.1 接口的定义
说明:
[修饰符] interface 接口名称{
[public] [static] [final] 变量名=初值; // 静态常量 (1)通常接口的名字以able或ible结尾;
[public] [abstract] [native]返回值 方法名([参数 (2)可以使用 extends 来继承接口的常量和抽象方法,
12
5.2.5 构造方法
• • • • 构造函数名称与类名称相同 构造函数没有返回类型 其任务是在创建对象时初始化其内部状态 若无定义系统默认有一个无参构造方法
class Fruit { boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) { seedLess = seed; seasonal = season; price = p; } } 13
所以类在实现时,必须显示的使用public修饰符,否
则被警告缩小了接口中定义的方法的访问控制范围。
27
实例:接口的定义和实现
class InterfaceTest interface A { { public static void main(String args[ ]) double g=9.8; { void show( ); B b=new B( ); b.show( ); } } class B implements A } { public void show( ) {System.out.println(“g=“+g);} }

C++程序设计第五章

C++程序设计第五章

第五章特殊函数和成员5.1对象成员的初始化如果初始初始化列表某项的参数函数表为空,则列表相应的项可以省略对象成员构造函数的调用顺序取决于这些对象成员在类中的说明顺序。

析构函数的调用顺序与构造函数正好相反。

5.2静态成员简单成员函数是指声明函数不含const、volatile、static关键字的函数。

如果类的数据成员或成员函数使用关键字static进行修饰,这样的成员称为静态成员或静态成员函数,统称为静态成员。

静态数据成员能说明一次,如果在类中仅对静态数据成员进行声明,则必须在文件作用域的某个地方进行定义。

在进行初始化时,必须进行成员名限定。

除静态成员的初始化之外,静态成员遵循类的其他成员函数所遵循的访问限制,由于数据隐蔽的需要,静态数据成员通常被说明为私有的,通过成员限定访问静态成员,比使用对象名访问静态成员要好,因为静态成员是类的成员而不是对象的成员。

类中的任何成员都可以访问静态成员。

因为静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。

(1)可以不指向某个具体的对象,只与类名连用。

(2)在没有建立对象之前,静态成员就已经存在。

(3)静态成员为类的成员,不是对象的成员。

(4)静态成员为该类的所有对象共享,它们被存储于一个公用内存中。

(5)没有this指针,所有除非显式地吧指针传给它们,否则不能存取类的数据成员。

(6)静态成员函数不能被说明为虚函数。

(7)静态成员函数不能直接访问非静态函数。

关键字static声明的类的对象,但要注意它的构造函数与析构函数的调用特点。

5.3友员函数友员函数可以存取私有成员、公有成员和保护成员。

1.类本身的友元函数2.将成员函数做有元3.将一个类说明为另一个类的友元友元关系是不传递的即当说明类A是类B的友元,类B又是类C的友元时,5.4 const对象可以再使用const关键字定义数据成员和成员函数和修饰一个对象。

大一C语言教材《C语言程序设计》第5章 循环程序设计

大一C语言教材《C语言程序设计》第5章 循环程序设计


复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量

^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式

说明:

结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;

赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。

j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;

精品课件-C程序设计(第三版)(荣政)-第5章

精品课件-C程序设计(第三版)(荣政)-第5章

第五章 循环结构的C程序设计
(2) 循环体由多个语句组成时,必须用左、右花括号括 起来,使其构成一复合语句。
如下例: void main() {
int i,sum; i=5;sum=0;
while (i>0) { sum=sum+i; i--; }
}
第五章 循环结构的C程序设计
若其中的循环体无{ },即循环语句写成: while (i>0) sum=sum+i; i--;
第五章 循环结构的C程序设计
运行结果: Input n:6 ↙ 12 34 2 11 9 5 ↙ sum is:73
第五章 循环结构的C程序设计
图 5.2 求n个数的和
第五章 循环结构的C程序设计
例 5.2 从键盘连续输入字符,直到输入“回车”符为止, 统计输入的字符个数。
分析:算法由图5.3所示的流程图描述。
#include <stdio.h> void main() {
int i,n,k,sum; i=1;sum=0; printf("Input n:"); scanf("%d",&n);
while(i<=n) { scanf("%d",&k); sum=sum+k; i++; }
printf("\nsum is:%d\n",sum); }
第五章 循环结构的C程序设计
(3) 若do-while语句的循环体部分由多个语句组成时,必 须用左、右花括号括起来,使其形成复合语句。例如:
do {
sum+=i; i--; } while(i>0); (4) C语言中的do-while语句是在表达式的值为“真”时 重复执行循环体的,这一点同别的语言中的类似语句有区别, 在程序设计中应引起注意。

C语言-第5章 循环结构程序设计

C语言-第5章 循环结构程序设计

第5章循环结构程序设计一、单项选择题1.在C语言中,下列说法中正确的是()。

A) do-while语句构成的循环不能用其它语句构成的循环来代替。

B) do-while语句构成的循环只能用break语句退出。

C) do-while语句构成的循环在while后的表达式非零时结束循环。

D) do-while语句构成的循环,在while后的表达式为零时结束循环。

2. break语句不能出现在语句中()A) switch B)for C) while D) if…else3.对于break语句和continue语句的说法错误的是()A) break语句不能用于循环语句和switch语句之外的任何其他语句中。

B) break和continue也可以用于if语句中C) continue语句只结束本次循环,而不是终止整个循环的执行。

D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。

4. 语句while(!y);中的表达式!y等价于A)y==0 B)y=1 C)y=!0 D) y==15. 若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行()。

A)无限次B)不确定次C)10次D)9次6. 有以下程序段int k=0while(k) k++;则while循环体执行的次数是A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次7. 下列循环语句中有语法错误的是( )A while(x=y) 5;B while(0) ;C do 2;while(x= =b);D do x++ while(x= =10);8. 当运行时输入:abcd$abcde ,下面程序的运行结果是。

#include<stdio.h>main(){char c;while(putchar(getchar())!='$');printf("end");}A)abcd$abcde B)abcd$end C)abcdend D)abcd$abcdeend 9. 以下程序段( )x=-1;do { x=x*x; }while(x>0);A) 是死循环B) 循环执行一次C) 循环执行二次D) 有语法错误10. 下面程序段执行后的结果为: ( )int sum=0, n=10;do { sum=sum+n;n++; }while(n<10);printf(“%d,%d”,sum,n);A. 0, 10 B) 10, 11C) 0, 11 D) 以上结果都不对12. 循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行()。

C54x第五章 程序设计

C54x第五章 程序设计

第五章程序设计本章讲C语言混合编程的一些知识。

程序的控制和转移※堆栈的使用基本运算—加法、减法、乘法数据块传送双操作数乘法长字运算除法运算浮点运算汇编与C的混合编程基本程序控制指令√条件操作循环操作比较操作基本程序控制指令主要分为:分支转移指令,子程序调用指令和子程序返回指令.分支转移指令执行周期B next4BACC src6BC next,cnd5/3(满足5,否则3)子程序调用指令执行周期CALL sub4CALA src6CC sub,cnd5/3(满足5、否则3)执行周期RET5RETE6RC cnd5/3(满足5,否则3)分分支转移指令只是通过改变PC来改变程序运行流向,无堆栈操作.子程序调用指令是首先将返回地址压入堆栈,再执行子程序,在子程序的最后执行返回指令,将返回地址出栈并加载pc,同时复原堆栈指针。

程序控制与转移基本程序控制指令条件操作√循环操作比较操作条条件分支指令或条件调用指令、条件返回指令都属于条件操作。

条件算符分为两组,每组又分为几类。

第二组A类B类A类B类C类EQ OV TC C BIO NEQ NOV NTC NC NBIO LTLEQGTGEQ第一组:组内可以对同一累加器的两类条件可以进行“与”逻辑运算。

第二组:可以对三类条件同一性质的条件进行组合,如都是位有效,或都是位无效。

只有BIO是反逻辑,其它都是1有效,0无效。

条件分支种类很多,例如:RC TC;条件返回,表示若TC=1,则子程序返回,否则继续执行。

CC sub,BNEQ ;条件调用,表示若累加器B不等于0,则调用sub子程序。

BC new,AGT,AOV ;与关系的条件分支操作,如果A›0且A溢出,则跳转到new行语句,否则顺序执行。

BC new,AGTBC new,AOV ;或关系的逻辑分支操作。

基本程序控制指令条件操作循环操作√比较操作--BANZ√由BANZ 构成的循环单指令重复块重复操作循环的嵌套--BANZBANZ指令格式:BANZ[D] pmad, Sind ;表示辅助寄存器Sind不为0就跳转到pmad行语句,否则顺序执行下面语句。

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计

2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;

do-while语句
… break;

表达式? N
Y
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章
程序设计
图5-4 用命令运行程序文件
第5章
程序设计
5.2 程序设计语言基础
5.2.1 输入/输出命令 1.交互式输入命令 1) 字符接收命令 格式:ACCEPT [<提示信息>] TO <内存变量名> 功能:将从键盘上接收的字符串数据存入指定的内存 变量中。
第5章
程序设计
图5-5 在程序编辑窗口中输入程序
如图5-2所示。 (2) 在程序编辑窗口中输入程序文件的具体内容, 如图5-3所示。输入完毕后按Ctrl+W键存盘,或直接单 击“ ”按钮,在系统的提示下存盘。 (3) 在“命令”窗口中输入相关命令运行程序文件, 如图5-4所示。
第5章
程序设计
图5-2 用命令建立程序文件
第5章
程序设计
图5-3 程序编辑窗口
第5章
程序设计
2. 运行程序文件 方法一:选择“程序”菜单下的“运行”选项,在 打开的“运行”对话框中选择要运行的程序。 方法二:单击“常用”工具栏上的“”按钮。 方法三:在“命令”窗口中输入运行程序命令。
格式:DO <程序文件名>
功能:运行程序文件。
第5章
程序设计
(1) 在“命令”窗口中输入相关命令建立程序文件,
的程序设计。
(2) 面向对象的程序设计的设计思想是面向对象, 即设计的重要任务在于描述对象。
第5章
程序设计
5.1.2 过程化程序设计的基本操作 1.建立程序文件
方法一:选择“文件”菜单下的“新建”选项,在
打开的窗口中选择“程序”可选项,再单击“新建文 件”按钮,进入程序编辑窗口,如图5-1所示。
方法二:在命令窗口中输入命令建立程序文件。
功能:执行此命令时,系统从头依次查看每一个 CASE后的条件表达式,只要某一个条件表达式的值为
真,就执行该条件下的语句组,其他条件下的语句组
都跳过去不执行,接下来执行的是ENDCASE后面的语 句。当命令中含[OTHERWISE]可选项时,若所有的条
件都不成立,则执行[OTHERWISE]后面的<语句组
的语句;当<条件表达式>的值为假时,直接执行
ENDIF后面的语句。其流程图如图5-10所示。
第5章
程序设计
2) 双分支选择语句(IF…ELSE…ENDIF) 格式:
IF <条件表达式>
<语句组1> ELSE <语句组2> ENDIF
第5章
程序设计
功能:当<条件表达式>的值为真时,先执行<语句 组1>,然后再去执行ENDIF后面的语句;当<条件表达 式>的值为假时,先执行<语句组2>,然后再转去执行 ENDIF后面的语句。其流程图如图5-11所示。
格式:SET TALK ON / OFF
功能:选择ON状态时,一些命令的执行结果显示或 打印,选择OFF状态则命令结果不显示。默认值为ON 状态。
第5章
程序设计
2. 命令行输出命令 格式:SET ECHO OFF / ON
功能:选择ON状态时将在屏幕或打印机上输出命令
行及运行结果,选择OFF状态时只输出运行结果,不 输出命令本身。默认值为OFF状态。 3. 程序文件终止命令 格式:CANCEL [<任意字符>]
第5章
程序设计
例如:编写一个顺序结构的程序,求1+2+3+4的结果。
满足此例的程序如图5-8所示。注意,每一条赋值语句 赋值号右边的x的值为上一条赋值语句赋值号左边的x 的值。 例如:工资.dbf表如图5-9所示。计算每人的实发工 资=基本工资+奖金-扣款,并写入相应的字段。统计基 本工资的总数送入sumgz变量中。按实发工资计算所有 职工的平均工资,送入sfpj变量中。
功能:终止程序文件的执行,并关闭所有打开的文
件。[<任意字符>]短语可用于书写注释。
第5章
程序设计
4.注释命令 格式一:NOTE / * <注释字符串>
格式二:&& <注释字符串>
功能:给程序或命令加注释。
பைடு நூலகம்
第5章
程序设计
5.2.3 结构化程序设计 1.顺序结构程序设计 序中最基本的常用结构。前面介绍的例题都属于顺 序结构。
第5章
程序设计
2) 通用数据接收命令 格式:INPUT [<提示信息>] TO <内存变量名>
功能:用于接收从键盘上输入的表达式,并将计算
结果存入指定的内存变量或数组元素中。 例如:从键盘上输入半径,求圆面积,并输出结果。 满足此例要求的程序如图5-6所示。
第5章
程序设计
图5-6 在程序编辑窗口中输入程序
X=0.5*W
ELSE
第5章
程序设计
X=0.5*50+(0.5+0.3)*(W-50) ENDIF
?"行李的重量为"+STR(W , 6 , 2)+ "公斤,其运费为
"+STR(X , 6 , 2)+ "元" SET TALK ON
第5章
程序设计
3) IF语句的嵌套(以三层嵌套为例)
格式:
IF <条件表达式1> <语句组1> <条件表达式2> <语句组2> IF ELSE 第 三 层 ENDIF ENDIF IF
?"及格"
第5章
程序设计
OTHERWISE
?"不及格" ENDCASE USE
第5章
程序设计
3.循环结构程序设计 循环是指按照给定的条件去重复执行一段具有特定 功能的程序。VFP 6.0的循环命令有三类:基于条件的 循环、基于计数的循环和基于表的循环。
第5章
程序设计
1) 基于条件的循环 格式: DO WHILE <条件表达式> <语句组> [EXIT] [LOOP] ENDDO 功能:当<条件表达式>为真时,执行<语句组>, 否则执行ENDDO后面的语句。流程图如图5-13所示。
图5-12 多分支选择语句流程图
第5章
程序设计
若将上例改用多分支选择语句来实现,则其程序如下: USE 选课 DO CASE CASE cj>=90 .AND. cj<=100 ?"优"
CASE cj>=80 .AND. cj<90
?"良" CASE cj>=70 .AND. cj<80 ?"中" CASE cj>=60 .AND. cj<70
格式:MODIFY COMMAND [<程序文件名>/?] 功能:打开程序编辑窗口,编写程序代码。
第5章
程序设计
图5-1 “新建”对话框
第5章
程序设计
(1) [<程序文件名>]为可选项,指定打开或创建的程 序文件名。 (2) 选择[?]可选项将显示“打开”对话框。用户可以 从中选择一个已有程序名或输入要创建的新程序名。 (3) 修改程序文件本命令同样适用。
USE
第5章
程序设计
例如:铁路托运行李的运费这样计算:每张车票可 按每千克0.5元托运50千克以内的行李,如果超过50千 克时,超过的部分每千克加价0.3元。编制程序,要求 从键盘输入行李的重量,输出运费是多少。
第5章
程序设计
程序如下:
SET TALK OFF CLEAR INPUT "请输入行李的重量:" TO W IF W <= 50
第5章
程序设计
图5-8 程序
第5章
程序设计
图5-9 浏览工资表
第5章
程序设计
满足此例的程序如下:
CLEAR USE 工资 REPLACE ALL 实发工资 WITH 基本工资+奖金-扣款 LIST
SUM ALL 基本工资 TO sumgz
AVERAGE ALL 实发工资 TO sfpj ?"基本工资的总额为:", sumgz ?"实发工资的平均为:", sfpj USE
第5章
程序设计
2. 格式化输出命令 格式:@ <行号,列号> SAY <表达式> 功能:从指定的行、列号位置开始输出表达式的值。 若上例改成在第5行的第20列输出结果,程序可以做如 下的修改,如图5-7所示。
第5章
程序设计
图5-7 改进后输出方式的程序
第5章
程序设计
5.2.2 调试命令与辅助命令 1. 命令执行结果输出命令
第5章
程序设计
3) 基于表的循环 格式: SCAN [<范围>] [ FOR / WHILE <条件> <语句组> [LOOP] [EXIT] ENDSCAN 功能:在表中移动记录指针并重复执行循环体。
第5章
程序设计
5.2.4 过程及其调用 1.过程的基本概念 程序设计时,为了避免繁琐,我们可以将重复出现 的程序段或功能上相对独立的程序写成可供其他程序 调用的独立程序段,称其为过程或子程序。 在VFP 6.0中,过程与主程序具有相同的扩展名.prg ,可以用与主程序一样的方法建立和运行。惟一不同 的是一个过程中至少要有一条返回语句。
第5章
程序设计
第5章 程 序 设 计
5.1 程序设计概念
5.2 程序设计语言基础
5.3 程序设计——简单语句、顺序和分支结构(实验九)
相关文档
最新文档