第32讲程序设计与软件开发基础
第32讲程序设计与软件开发基础(六)
教学目标及基本要求:
理解结构化设计方法,能利用该方法提供的常用工具解决实际问题,掌握测试与调试的概念,了解白盒测试与黑盒测试的概念,能进行简单的测试用例设计和实施,了解静态调试与动态调试。
教学重点:
测试和调试的基本概念,白盒测试与黑盒测试。
教学难点:
面向数据流的设计方法,白盒测试与黑盒测试。
教学内容:
1.结构化设计方法
2.软件测试及调试
教学时间:
1学时
主要内容:
7.4.3 结构化设计方法
1.软件设计的基本概念
(1)软件设计的基础
?概念
软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。
?基本目标
软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。
?步骤
从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。
?概要设计(又称结构设计):将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。
?详细设计:确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
(2)软件设计的基本原则
①抽象:是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。
②模块化:是指把一个待开发的软件分解成若干小的简单的部分。
③信息隐蔽:是指在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的。
④模块独立性:是指每个模块只写成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。一个优秀的软件设计应尽量做到高内聚、低耦合。
2.概要设计
(1)概要设计的任务
①设计软件系统结构:在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。
②数据结构及数据库设计:数据设计是实现需求定义和规格说明过程中提出的数据对
象的逻辑表示。
③编写概要设计文档:需要编写的文档有概要设计说明书、数据库设计说明书、集成测试计划等。
④概要设计文档评审。
(2)概要设计的图形工具
常用的软件结构设计工具是结构图(SC),也称程序结构图,它描述了软件系统的层次和分块结构关系。
模块用一个矩形表示,矩形内注明模块的功能和名字;箭头表示模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。
结构图的有关术语如下。
?深度:表示控制的层数。
?上级模块、下级模块:调用模块中上级模块,被调用模块是下级模块。
?宽度:整体控制跨度(最大模块数的层)的表示。
?扇入:调用一个给定模块的模块个数。
?扇出:一个模块直接调用的其他模块数。
?原子模块:树中位于叶子节点的模块。
(3)面向数据流的设计方法
典型的数据流类型有两种:变换型和事务型。
①变换型:是指信息沿输入通道进入系统,同时由外部形式变换成内部形成,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。
②事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
(4)设计的准则
①提高模块独立性。
②模块规模适中。
③深度、宽度、扇出和扇入适当。
④使模块的作用域在该模块的控制域内。
⑤应减少模块的接口和界面的复杂性。
⑥设计成单入口、单出口的模块。
⑦设计功能可预测的模块。
3.详细设计
详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常用的过程图形设计工具如下。
(1)程序流程图
程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常称为程序框图。程序流程图表达直观、清晰,易于学习掌握,且独立于任何一种程序设计语言。
构成程序流程图的最基本图符及含义如下所示。
→或↓:控制流
□:加工步骤
◇:逻辑条件
(2)N-S图
为了避免程序图在描述程序逻辑时的随意性与灵活性,提出了用方框图来代替传统的程序流程图,通常把这种图称为N-S图。
N-S 图的基本图符及表示的5种控制结构如图7-20所示。
图7-20 N-S 图图符与构成的5种控制结构 (3)PAD 图 PAD 图是问题分析图(Problem Analysis Diagram )的英文缩写,它是继程序流程图和
方框图之后,提出的又一种主要用于描述软件详细设计的图形表示工具。
PAD 图的基本图符及表示的控制结构如图7-21所示。
图7-21 PAD 图图符与构成的5种控制结构
除了以上3种工具外,还有判定表、判定树和结构化自然语言PDL 等描述工具。
7.4.4 软件测试及调试
1.软件测试的目的与任务
软件测试的目的是确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没
有错。因此,软件测试的任务可以规定两点。
(1)测试任务:通过采用一定的测试策略,找出软件中的错误。
(2)调试任务:如果测试发现错误,则定位软件中的错误,并加以纠正。
找错的活动称为测试,纠错的活动称为调试。
2.软件测试的准则
(1)所有测试都应追溯到需求。
(2)严格执行测试计划,排除测试的随意性。
(3)充分注意测试中的群集现象。
(4)程序员应避免检查自己的程序。
(5)穷举测试不可能。
(6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
3.软件测试技术与方法 软件测试的方法和技术是多种多样的,对于软件测试方法和技术,可以从不同的角度加以分类。 若从是否需要执行被测软件的角度,可以分为静态测试和动态测试方法。若按照功能划
分可以分为白盒测试和黑盒测试。
任务1
任务2
任务3 条件 else then 判定条件
循环体
循环体
判定条件
条件 =1 =2 … =n A B C D 条件
A B 选择型 顺序型 B
A
WHILE A WHILE 重复型 UNTIL 重复型 UNTIL B
(1)静态测试与动态测试
静态测试包括代码检查、静态结构分析、代码质量度量等,可以由人工完成,也可以借助软件工具。
动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。合理的测试用例是测试的关键,测试用例是为测试设计的数据。
(2)白盒测试方法与测试用例
白盒测试方法也称结构测试或逻辑驱动测试,它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。白盒测试把测试对象看成是一个打开的盒子。白盒测试是在程序内部进行,主要用于完成软件内部操作的验证。
白盒测试的主要方法有逻辑覆盖、基本路径测试等。
逻辑覆盖测试是指一系列以程序的内部逻辑结构为基础的测试用例设计技术。
①语句覆盖:执行足够的测试用例,使得程序中每个语句至少都能被执行一次。
②路径覆盖:执行足够的测试用例,使程序中所有可能的路径都至少经历一次。
③判定覆盖:使设计的测试用例保证程序中每个取值分支至少经历一次。
④条件覆盖:设计的测试用例保证程序中每个判断的每个条件的可能取值至少执行一次。
⑤判断-条件覆盖:设计足够的测试用例,保证程序中判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能取值分支至少执行一次。
基本路径测试是根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。
(3)黑盒测试方法与测试用例
黑盒测试方法也称为功能测试或数据驱动测试,它是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。黑盒测试是在软件接口进行,完成功能验证。
黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法、因果图法等。
其中,等价类划分法是将程序的所有可能的输入数据划分成若干部分,然后从每个等价类中选取数据作为测试用例。
4.软件测试实施
软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。
(1)单元测试
单元测试集中对软件设计的最小单位——模块进行测试,主要是为了发现模块内部可能存在的各种错误和不足。
进行单元测试时,根据程序的内部结构设计测试用例,主要使用白盒测试法。由于各模块相对独立,因而对多个模块的测试可以同时进行,以提高测试效率。单元测试主要针对5个基本特性进行测试:模块接口、局部数据结构、重要的执行路径、出错处理和边界条件。
(2)集成测试
集成测试是测试和组装软件的过程。主要目的是发现与接口有关的错误,集成测试的依据是概要设计说明书,测试的内容主要是:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等。
集成测试时将模块组装成程序通常采用两种方式:非增量方式组装和增量方式组装。
(3)确认测试
确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。
确认测试的实施首先运用黑盒测试方法。
(4)系统测试
系统测试是把通过确认测试的软件作为基于计算机系统的一个元素,与整个系统的其他元素结合起来,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。
5.软件调试实施
在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。软件测试贯穿整个软件生命周期,调试主要在开发阶段。
程序调试活动由两部分组成:其一是错误的定位,其二是修改错误。
常用的程序调试方法有:强行排错法、回溯法和原因排错法。
小结
软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。每个阶段都已形成一套较完整的理论和方法。找错的活动称为测试,纠错的活动称为调试。软件测试和调试都已经形成一套完整的理论和方法,这些理论和方法对软件开发者如何进行测试和调试具有十分重要的意义。
作业
软件测试方法和技术按照功能划分为哪两类?各是测试软件产品哪些方面?
c语言第五章 选择结构程序设计(习题册答案)
第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、!。其中优先级最高的为!,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x
C语言程序设计(第二版)课后答案 丁亚涛
习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include
2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题
1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;
程序设计和软件工程选择题
程序设计基础 1.结构化程序设计的基本原则不包括()。答案:A A)多态性B)自顶向下C)模块化D)逐步求精 2.在面向对象方法中,不属于“对象”基本特点的是()。答案:A A)一致性B)分类性C)多态性D)标识唯一性 3.下列选项中不属于结构化程序设计原则的是()。答案: A A)可封装B)自顶向下C)模块化D)逐步求精 4. 结构化程序设计中,下面对goto语句使用描述正确的是()。答案: C A)禁止使用goto语句B)使用goto语句程序效率高 C)应避免滥用goto语句D)以上说法都不对 5.面向对象方法中,继承是指()。答案: D A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质 C)各对象之间的共同性质D)类之间共享属性和操作的机制 6.结构化程序所要求的基本结构不包括()。答案: B A)顺序结构B)GOTO跳转C)选择(分支)结构D)重复(循环)结构7.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。答案:B A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5} 8.下列选项中属于面向对象设计方法主要特征的是()。答案:A A)继承B)自顶向下C)模块化D)逐步求精 9.下面对对象概念描述正确的是()。答案:A A)对象间的通信靠消息传递B)对象是名字和方法的封装体 C)任何对象必须有继承性D)对象的多态性是指一个对象有多个操作 软件工程基础 1.程序流程图中带有箭头的线段表示的是()。答案: C A)图元关系B)数据流C)控制流D)调用关系 2.软件设计中模块划分应遵循的准则是()。答案: B A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合 3.在软件开发中,需求分析阶段产生的主要文档是()。答案:B A)可行性分析报告B)软件需求规格说明书 C)概要设计说明书D)集成测试计划 4.数据流图中带有箭头的线段表示的是()。答案: D A)控制流B)事件驱动C)模块调用D)数据流 5.在软件开发中,需求分析阶段可以使用的工具是()。答案:B A)N-S图B)DFD图C)PAD图D)程序流程图 6.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。答案:C A)编译程序B)操作系统C)教务管理系统D)汇编程序 7.下面叙述中错误的是()。答案: A
C++程序设计基础课后答案 第五章
5.1 阅读下列程序,写出执行结果 1.#include < iostream.h > struct data { int n ; float score ; } ; void main() { data a[3] = { 1001,87,1002,72,1003,90 } , *p = a ; cout << (p++)->n << endl ; cout << (p++)->n << endl ; cout << p->n++ << endl ; cout << (*p).n++ << endl ; } 2.#include < iostream.h > struct employee { char name[ 20 ] ; char sex ; } ; void fun( employee *p ) { if( (*p).sex == 'm' ) cout << (*p).name << endl ; }
void main() { employee emp[5] = { "Liming", 'm', "Wangxiaoping", 'f', "Luwei", 'm' } ; int i ; for( i=0; i<3; i++ ) fun( emp+i ) ; } 3. #include < iostream.h > struct node { char * s ; node * q ; } ; void main() { node a[ ] = { { "Mary", a+1 }, { "Jack", a+2 }, { "Jim", a } } ; node *p = a ; cout << p->s << endl ; cout << p->q->s << endl ; cout << p->q->q->s << endl ; cout << p->q->q->q->s << endl ; } 4.#include < iostream.h > class A
第5章-C语言程序设计(第2版)教材习题答案
【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次
计算机程序设计基础习题册(含答案)
《计算机程序设计基础》 习 题 册
班级学号姓名成绩一、单选题 1.C++源程序文件的默认扩展名为A。 A) cpp B) exe C) obj D) lik 2.由C++源程序文件编译而成的目标文件的默认扩展名为C。 A) cpp B) exe C) obj D) lik 3.由C++目标文件连接而成的可执行文件的默认扩展名为B。 A) cpp B) exe C) obj D) lik 4.编写C++程序一般需经过的几个步骤依次是B。 A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接 5.程序中主函数的名字为 A 。 A) main B) MAIN C) Main D) 任意标识符 6.下面四个选项中,均是不合法的用户标识符的选项的是C。 A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 7.下列变量名中合法的是C。 A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 8.存储以下数据,占用存储字节最多的是 D 。 A) 0 B) ‘0’ C) “0” D) 0.0 9.在C++语言中,字符型数据在内存中的存储形式是D。 A) 补码 B) 反码 C) 原码 D) ASCII码 10.若有说明语句:char c =’\072’;则变量c A。 A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令
C程序设计(第四版)_谭浩强_第五章_课后习题答案
循环结构程序设计 P115 5.1 用while计算1至100的合. #include
{ int i,sum=0; printf("Please input a number :"); scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0. while(i<=10) { sum=sum+i; i++; } printf("The sum of 1-10 is %d .\n",sum); return 0; } #include
程序设计基础模拟试题
《VB程序设计》模拟试题 ●填空题 1.窗体模块的文件扩展名为 ___FRM_________ 、标准模块的文件扩展名为____BAS______ 、 类模块文件的扩展名为______CLS_______ 。 2.Visual Basic中数据类型可分为 _____标准数据类型________和用户自定义数据类型两大类,前者根据其取值的不同,可分为_____整型_________、 ______长整型_____、布尔型和 ____字符型_________。 3. Abs(-6.5)= _____6.5______;Int(-9.1)= ____-10_______。 4. "程序"& "设计"运算结果为 ___程序设计____ 。 5. Dim a, b as Boolean语句显式声明变量a是___变体___变量,b是___布尔__变量。 6. MsgBox函数的返回值中, VBRetry表示单击了____重试_____按钮,VBYes表示单击了___是_____按钮,VBNo表示单击了_____否____按钮。 7. 要加载窗体,可以在代码中使用___________语句,要显示窗体,可以在代码中使用___________方法,要隐藏窗体,可以在代码中使用Hide方法,要卸载窗体,可以在代码中使用___________方法。 8.对话框分为_________对话框和________对话框两种类型,其中_____________ 对话框最 常用。 9. 对象是Visual Basic应用程序的基本单元,它是由 ___类___创建的。在Visual Basic中可以用属性、 __方法___、___事件___ 来说明和衡量一个对象的特性。 10. 条件判断语句可以使用___If…then____________语句、 ____If…Then…Else______语句和 ______If…Then…ElseIf______语句。Select case 语句 11. 声明一个值为3.14的常量Pi的语句为___Const pi = 3.14______。 12. Do…Loop Until 循环结构中,当条件为____真____时结束循环。 13. 要显示弹出菜单,可以在代码中使用_____________事件。 14. 参数传递有__________方式、__________方式和命名传递方式,常量默认采用__________方式;变量默认采用__________方式;表达式默认采用__________方式。 15. 名称属性必须以一个__字母标点_开始并且最长可达40个字符,不能包括__符号___ 和 ___空格___。 16.Visual Basic的程序模块有3种:____窗体模块____ 、标准模块和 ____类模块____。 17.Visual Basic程序,按其语句代码执行的先后顺序,可以分为___顺序__结构、选择__结构和___循环____ 结构。 18.数组元素下标的下界默认为是_____________,如果要改变其默认值,应使用_____________。 ●判断题 ()1. Visual Basic运行程序的方法只有编译模式。 ()2. 语句Command1.visible=false 与Command1.enabled=false 是等价的。 ()3. InputBox函数和MsgBox函数一样,返回的是字符串。 ()4. 通过类模块,我们不可以根据需要建立自己的控件。 (×)5. 2.1E+5是合法的Visual Basic数据。 ()6. 根据占用内存方式的不同,可将数组分为常规数组和动态数组两种类型。 (√)7. x2是合法的变量名。 ()8. 按照文件的存取方式及其组成结构可以分为两种类型:文本文件和随机文件。 (√)9. Do…Loop Until语句实现循环时,不管条件真假,首先无条件地执行一次 循环。
程序设计与软件开发基础(一)
第27讲程序设计与软件开发基础(一) 教学目标及基本要求 掌握逐步求精的结构化程序设计方法,初步掌握良好的程序设计风格的内涵,掌握算法的基本概念,理解面向对象程序设计的基本概念。 教学重点 逐步求精的结构化程序设计方法,算法的基本概念。 教学难点 面向对象程序设计的基本概念,算法的复杂度。 教学内容 程序设计的风格 结构化程序设计 面向对象程序设计 算法的基本概念 算法的复杂度 教学时间 1学时 7.1 程序设计概述 7.1.1程序设计的风格 1.程序设计风格 程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。 程序设计的风格总体而言应该强调简单和清晰,程序必须是可以理解的。 主导的程序设计风格:“清晰第一,效率第二” 。 2.良好程序设计风格 (1)源程序文档化 ①符号名的命名 见名知意 名字不宜太长 不要使用相似的名字 不要使用关键字做标识符 同一个名字不要有多种含义 ②程序注释 序言性注释: 通常位于每个程序的开头部分,它给出程序的整体说明。主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。 功能性注释: 一般嵌在源程序体之中,主要描述其后的语句或程序做什么。 ③视觉组织 在程序中利用空格、空行、缩进等技巧使程序层次清晰。 (2)数据说明的方法 ①数据说明的次序规范化:数据说明次序固定,便程序理解、阅读和维护,可以使 数据的属性容易查找,也有利于测试、排错和维护。 ②说明语句中变量安排有序化:当一个说明语句说明多个变量时,变量按照字母顺 序排序为好。
③使用注释来说明复杂数据的结构。 ④显式地说明一切变量。 (3)语句的结构 ①在一行内只写一条语句。 ②程序编写应优先考虑清晰性,除非对效率有特殊要求,即清晰第一,效率第二。 ③首先要保证程序正确,然后才要求提高速度。 ④避免使用临时变量而使程序的可读性下降。 ⑤避免采用复杂的条件语句和不必要的转移,尽量使用库函数。 ⑥数据结构要有利于程序的简化,程序要模块化,且要尽量使模块功能单一化,利 用信息隐蔽,确保每一个模块的独立性。 ⑦尽量只采用3种基本控制结构来编写程序。 (4)输入和输出 ①对所有的输入数据都要检验数据的合法性以及检查输入项的各种重要组合的合理 性。 ②输入格式要简单,以使输入的步骤和操作尽可能简单。 ③输入数据时,应允许使用自由格式和缺省值。 ④输入一批数据时,最好使用输入结束标志。 ⑤以交互式方式输入、输出数据时,要在屏幕上有明确的提示符,数据输入结束时, 应在屏幕上给出状态信息。 ⑥当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性; 给所有的输出加注释,并设计良好的输出报表格式。 7.1.2 结构化程序设计 1.结构化程序设计的原则 自顶向下、逐步求精、模块化、限制使用GOTO语句。 (1)自顶向下 先总体,后细节;先全局目标,后局部目标。 (2)逐步求精 设计一些子目标作为过渡,逐步细化。 (3)模块化 把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。 (4)限制使用GOTO语句 使用GOTO语句有时会使程序执行效率较高,但也容易造成程序混乱,程序不易理解、不易排错、不易维护,因而要尽量限制使用GOTO语句。 2.结构化程序的基本结构与特点 结构化程序的基本结构只有3种:顺序、选择和循环 (1)顺序结构 如图7-1所示,顺序结构是顺序执行结构。所谓顺序执行,就是按照程序语句行的自然 图7-1 顺序结构
程序设计基础(知识点)
第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。
它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,
程序设计与软件开发--项目设计PA1基本控制功能
程序设计与软件开发--项目设计 PA1:基本控制功能 在这一部分,我们开始正式编程,并控制小车的行动。 本次实验主要任务是编写C 语言程序实现智能小车的前进、转弯、暂停等功能;测量并绘制小车速度与PWM (脉冲宽度调制)平均值之间的关系。 小车控制原理 首先我们了解如何控制小车的车轮。在本实验平台中,我们采用脉冲宽度调制信号(PWM )来完成对电机的控制。 脉冲宽度调制信号(PWM ) 微控制器产生PWM 信号给电机驱动芯片L298N 来控制电机的转速。方波高电平时间跟周期的比例叫占空比,不同占空比的PWM 信号如下: 这些脉冲期间电压加到电机两端 图1 占空比为50%的方波 平均电压 图2 占空比为90%的方波
PWM信号的周期是固定的,脉冲宽度在0%~100%之间变化,加在电机两端的电压就是脉冲宽度的函数。图2是占空比为90%的方波,加在电机两端的电压几乎在所有时间都存在,所以电机的转速几乎达到全速。 任务1:实现小车基本控制 硬件 智能小车全套组件,并按照文档1检查主要控制连线。 软件 ●从网站上下载任务1的代码(c_ex.rar文件) ●解压c_ex.rar文件 ●运行keil软件,点击工具栏工程-〉打开工程,选择c_ex.uvprojx文件 ●编译,点击工程-〉build target。Build output 信息框显示无错误,并成功 编译出hex文件。 ●通过ST-Link2将程序烧写到小车中 ●打开小车电源开关,检查小车能否完成下述操作 1.全速前进3秒 2.全速后退2秒 3.半速右转1秒 4.停止 ●程序的功能都是在“main.c”文件中的main函数中执行的,请仔细阅读程序 及注释。 注意备份程序。 1连线参考文档《小车连线》中,请逐条确认 2STLINK的驱动需要提前安装,并保证与核心控制板连线正确,下载程序的具体步骤参见keil使用文档第10页
计算机程序设计基础习题册含答案
《计算机程序设计基础》 计算机程序设 计基础_基础知识(一) 班级 学号 姓名 成 绩 一、 单选题 习题册
1.C++源程序文件的默认扩展名为A。 2.A) cpp B) exe C) obj D) lik 3.由C++源程序文件编译而成的目标文件的默认扩展名为C。 4.A) cpp B) exe C) obj D) lik 5.由C++目标文件连接而成的可执行文件的默认扩展名为B。 6.A) cpp B) exe C) obj D) lik 7.编写C++程序一般需经过的几个步骤依次是B。 8.A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接9.程序中主函数的名字为 A 。 10.A) main B) MAIN C) Main D) 任意标识 符 11.下面四个选项中,均是不合法的 用户标识符的选项的是 C。 12.A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 13.下列变量名中合法的是 C。 14.A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 15.存储以下数据,占用存储字节最 多的是 D 。 16.A) 0 B) ‘0’
C) “0” D) 17.在C++语言中,字符型数据在内存中的存储形式是D。 18.A) 补码 B) 反码 C) 原码 D) ASCII码 19.若有说明语句:char c =’\072’;则变量c A。 20.A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令 计算机程序设计基础_基础知识(二) 班级学号姓名成绩 一、单选题 1.下列哪一个是C++语言中合法的变量 C A) 8ZSe B) ±A0 C) X0_2 D) ’x0’2.已知ch是字符型变量,下面不正确的赋值语句是A 3.A) ch='a+b' B) ch='\0'
智慧树知到程序设计基础(C语言)测试第四章单元测试参考答案
智慧树知到程序设计基础(C语言)测试第四章单元测试参考答案 ?总题数: 10 1 【单选题】 (10分) 有下列程序,已知字母A的ASCII码为65,程序运行后的输出结果是()。 #include
} A.a=14,b=12 B.a=12,b=14 C.a=26,b=26 D.a=14,b=14 正确 本题总得分10分 3 【单选题】 (10分) 若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是()。 A.scanf("%d%d%d",a,b,c); B.read(a,b,c) C.scanf("%D%D%D",&a,&b,&c); D.scanf("%d%d%d",&a,&b,&c); 正确 本题总得分10分 4 【判断题】 (10分) 编写程序,输入3个整数a、b、c,输出时:a的值是b,b的值是c,c的值是a。下面程序可以正确实现题目要求: #include
程序设计基础——基于C语言(第2版) 课后习题参考答案汇总
习题1参考答案 1.1解释以下术语 (1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。 (2)计算机程序:用计算机语言所编写的一系列指令的集合。 (3)数据:数据是程序加工和处理的对象。 (4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。 (5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。 (6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。 (7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。 1.2 简答题 (1)简述内存的组织结构形式? 计算机系统把内存看作是由若干个连续的存储单元(Storage Location)组成的,每个存储单元的大小为一个字节(Byte)。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address),计算机在读写内存时就是按照存储单元的地址进行的。 (2)为什么计算机系统是一个通用的计算系统? 在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。 (3)简述结构化程序设计的基本思想? 在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代码块只有一个入口和一个出口,则这样的程序设计方法被称为结构化程序设计(Structured Programming)。 (4)简述计算机语言的发展史? 程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程? 1、理解问题特征 2、设想解决方案 3、优化解决方案 4、描述解决方案 5、执行并分析解决方案 (6)简述各个程序质量要素的含义? 1、正确性(Correctness):正确性是指一个计算机程序的正确程度,即程序在预定的
开发APP软件需要哪些编程语言和开发环境
开发APP软件需要哪些编程语言和开发环境 2015-06-12 09:12 15854 6 分类:Android开发 【摘要】对于刚刚进入APP软件开发领域的新手来说,根本就不知晓要选择什么编程语言和需要什么开发环境来开发APP软件,广州APP软件开发公司商侣软件拥有丰富的APP开发经验,因此商侣软件的技术总监将会在这里为APP软件开发的新手们提供一些经验帮助。 对于刚刚进入APP软件开发领域的新手来说,根本就不知晓要选择什么编程语言和需要什么开发环境来开发APP软件,这时的开发者就会面临许多的选择和建议。广州APP软件开发公司商侣软件拥有丰富的APP开发经验,因此商侣软件的技术总监将会在这里为开发APP 软件的新手们提供一些经验帮助。 APP软件开发的语言 当然,运行在不同平台上的APP软件所需要的应用开发语言是不一样的,例如Android APP 开发语言是Java、IOS APP的开发语言是Objective-C、WindowsPhone APP的编程语言则主要是C++等。 Java语言:这是在Android平台开发APP应用程序做IAP、广告以及特使系统功能时所需要到的开发语言。一般开发安卓APP应用软件主要使用的编程语言也是Java,如果在开发过程中需要切换语言,可以通过JNI来完成。 Objective-C:这是适用于IOS智能操作系统的APP开发语言,是苹果APP的主流编程语言。所以如果是要开发IOS APP软件,那么这是必选编程语言。 C++语言:这是一款最适合做跨平台APP的开发语言,同时C++也是微软的WindowsPhone 系列智能手机主要APP应用程序的开发语言。 Scripting:这个包括有程序化脚本和其他的脚本语言,所有的开发者都需要时不时的写脚本,这十分方便于一些不熟悉语法的APP软件新手开发者的一个工作,对于他们来说也是非常有必要的一项工作。 开发APP软件的环境 Eclipse:它本身是一个开源的、基于Java的可扩展开发平台。Eclipse本身只是一个框架和一组服务,主要是用于产检组件构建开发环境。同时也是开发Android APP软件的主要开发环
计算机程序设计基础
计算机程序设计基础 ——精讲多练C/C++语言 程序的基本结构 1、在屏幕上显示如下图形: **************** * Hello World * **************** #include
第五章程序设计基础习题及参考答案
第五章程序设计基础 一、选择题 1.在各类程序设计语言中,相比较而言,(D)程序的执行效率最高。 A.汇编语言 B.面向对象的语言 C.面向过程的语言 D.机器语言 2.下列关于程序设计语言的说法中正确的是(C)。 A.高级语言程序的执行速度比低级语言程序快 B.高级语言就是自然语言 C.高级语言与机器无关 D.计算机可以直接识别和执行用高级语言编写的源程序 3.在算法分析中,评判算法的好坏不必考虑(D)。 A.正确性 B.需要占用的计算机资源 C.易理解 D.编程人员的爱好 4. 一般认为,计算机算法的基本性质有(A)。 A.确定性、有穷性、可行性、输入、输出 B.可移植性、可扩充性、可行性、输入、输出 C.确定性、稳定性、可行性、输入、输出 D.确定性、有穷性、稳定性、输入、输出 5.计算机硬件唯一能直接理解的语言是(A)。 A.机器语言 B.汇编语言 C.高级语言 D.面向过程语言 6.结构化程序设计方法的3种基本结构是(C)。
A.程序、返回、处理 B.输入、输出、处理 C.顺序、选择、循环 D.I/O、转移、循环 7.在面向对象方法中,一个对象请求另一个对象为其服务的方式是发送(D)。 A.调用语句 B.命令 C.口令 D.消息 8.以下不是面向对象思想中的主要特征的是(D)。 A.多态 B.继承 C.封装 D.垃圾回收 9.(C)不是程序的3种翻译方式之一。 A.汇编 B.编译 C.结构化 D.解释 10.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的(A)阶段。 A.各个 B.前期 C.中期 D.后期 11.在软件生命周期中,工作量所占比例最大的阶段是(D)阶段。 A.需求分析 B.设计 C.测试 D.维护 12.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象是(C)的一种表现。 A.软件工程 B.软件周期 C.软件危机 D.软件产生 二、填空题 1.C++语言运行性能高,且与C语言兼容,已成为当前主流的面向(对象)的程序设计语言之一。 2.对象的基本特点包括(唯一性)、分类性、多态性、封装性和模块独立性5个特点。
《C语言程序设计教程(第二版)》习题答案
2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765