第3章 结构化程序设计方法
C++第三章课后答案
![C++第三章课后答案](https://img.taocdn.com/s3/m/ede9d57176232f60ddccda38376baf1ffc4fe3f0.png)
C++第三章课后答案C++第三章习题及答案1、什么是结构化程序设计?它有什么优缺点?所谓结构化程序设计,是一种自顶而下、逐步求精的模块化程序设计方法。
2、什么是对象?什么是类?简述对象与类之间的关系!对象是系统中用来描述客观事物的一个实体,它是用于构成系统的一个基本单位,而系统可以看作是由一系列相互作用的对象组成。
类定义了同类对象的公共属性和行为,属性用数据结构表示,行为用函数表示!《类=数据结构+对数据进行操作的函数》。
对象和类的关系相当于元素和集合的关系、变量和变量的“数据类型”的关系。
从程序设计的角度来说,类是一种复杂的自定义数据类型,对象是属于这种数据类型的变量。
3、什么是面向对象程序设计?面向对象程序设计方法具有哪些基本特征?请比较面向对象程序设计和面向对象过程程序设计有何异同?4、何谓成员变量?何谓成员函数?C++将对象的属性抽象为数据成员,将对象的行为抽象为成员函数。
5、C++中结构和类之间有何异同?结构在默认情况下的成员是公共的,而类在默认情况下的成员是私有的。
在C++中,结构是特殊的类。
6、在C++中如何定义类?如何实现定义的类?如何利用类申明对象?7、类的成员的访问权限有哪几种?请说明它们分别有什么作用?三种,privte:类的私有成员,只能被本类的成员函数访问或调用。
Public:公有成员,可以被本类的成员或其他类的成员函数(通过对象)访问或调用。
Protected:保护成员,可以被本类的成员函数或派生类的成员函数访问或调用。
8、何谓构造函数?何谓析构函数?请说明它们分别有什么作用?构造函数:不需要用户程序调用,就能在创建对象时由系统自动调用,其作用是在对象被创建时利用初始值去构造对象,使得在声明对象时就能自动完成对象的初始化。
析构函数:在对象的生存周期即将结束时由系统自动调用的,其作用是用来在对象被删除前做一些清理工作和数据保存工作。
9、如何定义一个内联成员函数?内联函:内联函数必须是和函数体申明在一起,才有效。
结构化程序设计方法
![结构化程序设计方法](https://img.taocdn.com/s3/m/a610e122ae1ffc4ffe4733687e21af45b307fe23.png)
结构化程序设计方法
结构化程序设计是一种程序设计方法,它强调程序应该被分解成小的、相互独立的、易于理解的部分,以便于编写、理解和维护。
这种方法的主要目的是提高程序的可读性和可维护性,减少程序出错的可能性,提高程序的质量和效率。
在结构化程序设计方法中,程序被分解成若干个模块,每个模块都有明确的功能和接口。
模块之间的关系是明确的,可以通过调用其他模块来实现复杂的功能。
这种模块化的设计使得程序更易于理解和维护,同时也方便了程序的重用和扩展。
结构化程序设计方法的核心思想是自顶向下、逐步细化。
首先,程序员从整体上考虑问题,然后逐步将问题分解成小的、易于处理的部分,直到每个部分可以被简单地实现。
这种逐步细化的方法使得程序员可以逐步解决问题,避免了一次性解决整个问题所带来的复杂性和困难。
另外,结构化程序设计方法还强调了模块的独立性和内聚性。
模块应该是相互独立的,一个模块的修改不应该影响其他模块的功能。
同时,模块内部的功能应该是相关的,不同模块之间的功能应该是清晰划分的。
这种设计原则使得程序更易于理解和维护,也方便了程序的重用和扩展。
总的来说,结构化程序设计方法是一种有效的程序设计方法,它可以提高程序的可读性和可维护性,减少程序出错的可能性,提高程序的质量和效率。
通过模块化的设计和逐步细化的方法,结构化程序设计方法可以帮助程序员更好地理解和解决问题,同时也方便了程序的重用和扩展。
因此,结构化程序设计方法在实际的程序开发中具有重要的意义,值得程序员们深入学习和应用。
结构化程序设计方法
![结构化程序设计方法](https://img.taocdn.com/s3/m/91f454544531b90d6c85ec3a87c24028905f8565.png)
模块设计的方法: •模块化设计的思想实际上是一种“分而治之” 的思想,把一个大任务分为若干个子任务, 每一个子任务就相对简单了。 •在拿到一个程序模块以后,根据程序模块的 功能将它划分为若干个子模块,如果这些子 模块的规模还嫌大,还再可以划分为更小的 模块。这个过程采用自顶向下方法来实现。 •子模块一般不超过50行。 •划分子模块时应ห้องสมุดไป่ตู้意模块的独立性,即:使 一个模块完成一项功能,耦合性愈少愈好。
采取以下方法来保证得到结构化的程序: • 自顶向下; • 逐步细化; • 模块化设计; • 结构化编码。
两种不同的方法: • 自顶向下,逐步细化; • 自下而上,逐步积累。
用这种方法逐步分解,直到作者认为可以直接将各 小段表达为文字语句为止。这种方法就叫 做“自顶向 下,逐步细化”。
自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明,作者
(5)检测程序,我们做的东西是否正确,不正确检测 错误。这一步是需要耐心的,不要怕错误,每一次检 测都会让你提高。做事时,不要因一些错误而畏缩不 前。
自上而下的编程方法基本步骤
(1)首先对你所面临的问题进行精确描述,即你遇到
的到底是什么问题;
(2)定义输入输出量,即分析我们的目的是什么和现 有的条件;
(3)设计算法,逐层分解,逐步求精,这是做事情的 一个过程,大部分人做事出错就出在这个地方,懒得 到逐层分解,逐步求精,总是妄想一步登天;
(4)把算法转化为程序语言,这一步是踏踏实实做的 过程,没有这一步你什么也做不成。
第3章 结构化程序设计语句
![第3章 结构化程序设计语句](https://img.taocdn.com/s3/m/345ac92a453610661ed9f478.png)
图3-16 程序运行界面
3.3.2 上机练习二:捉拿肇事司机 上机练习二:
【练习题目】 练习题目】 题目 一辆卡车违反交通规则,撞死行人, 一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃 当时有三个人目击这一车祸的发生, 跑。当时有三个人目击这一车祸的发生,但都没有看清卡 车的牌照号码,只记住牌照号码的部分特征, 车的牌照号码,只记住牌照号码的部分特征,甲记住牌照 号码的前两位数字是相同的, 号码的前两位数字是相同的,乙记住牌照号码的后两位数 字是相同的,丙是一位数学家,他说“ 字是相同的,丙是一位数学家,他说“车牌号码肯定是四 位数,而且恰好是一个整数的平方。 位数,而且恰好是一个整数的平方。”,并且丙已推导出 符合该条件的号码只可能有一个。 符合该条件的号码只可能有一个。根据这些信息来判定车 牌号并捉拿肇事司机。要求编写控制台应用程序。 牌号并捉拿肇事司机。要求编写控制台应用程序。
3.1 循序渐进学理论
3.1.1 if语句 语句
1.用if语句实现单分支选择结构 . 语句实现单分支选择结构 [格式 :(表达式 语句 格式]: 表达式 语句; 表达式) 格式
图3-1 单分支选择结构执行流 程图
编写一个程序实现如下功能: 【 例 3-1】 编写一个程序实现如下功能 : 输入一个成绩, 如果成绩大于等于60 60则输出 输入一个成绩 , 如果成绩大于等于 60 则输出 恭喜您,您通过了这次考试! “恭喜您,您通过了这次考试!”,否则不输 出任何信息。要求编写成控制台应用程序。 出任何信息。要求编写成控制台应用程序。
[格式2]:randomObj.Next(N) 格式2]: 2] 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(10 10) i=randomObj.Next(10); 其作用是产生一个0~9之间的随机整数并赋值给变量i 0~9之间的随机整数并赋值给变量 其作用是产生一个0~9之间的随机整数并赋值给变量i。 格式3] 3]: [格式3]:randomObj.Next(N,M) 例如,有下列语句: 例如,有下列语句: Random randomObj=new Random() i=randomObj.Next(5 10) i=randomObj.Next(5,10); 其作用是产生一个5~9之间的随机整数并赋值给变量i 5~9之间的随机整数并赋值给变量 其作用是产生一个5~9之间的随机整数并赋值给变量i。
第3章 基本语句与结构化程序设计(顺序、分支结构)
![第3章 基本语句与结构化程序设计(顺序、分支结构)](https://img.taocdn.com/s3/m/3f81b5db6f1aff00bed51e96.png)
3.3.3 if语句 基本形式3 if语句 基本形式3
【补充例】对输入两个整数比较大小,输出结果 。 补充例】对输入两个整数比较大小,
#include <stdio.h> int main( ) { int a, b; printf("input two numbers:"); scanf("%d%d",&a,&b); if(a>b) printf("a>b"); else if(a==b) printf("a=b"); else printf("a<b"); return 0; }
3.3.3 if语句 基本形式2 if语句 基本形式2
【补充例】输入一个整数,如果是偶数,则输出Even 补充例】输入一个整数,如果是偶数,则输出Even number,如果是奇数, number,如果是奇数,则输出 Odd number。 number。
#include <stdio.h> int main( ) { int a; printf("Input a:\n"); a:\ scanf("%d",&a); if ( a%2==0 ) printf("Even number\n"); number\ else printf("Odd number\n"); number\ return 0; }
思考:不用中间变量, 思考:不用中间变量,如何交换两个变量中的值
3 5
3 5 3 t
y
x=3,y=5 x=5,y=3
3.2.4 顺序结构程序设计举例
【补充例】输入三位数,计算每位数字之和。 补充例】输入三位数,计算每位数字之和。 #include <stdio.h> int main ( ) { int n,a,b,c,sum; Input n:678 n:678 printf("Input n:"); scanf("%d", &n); c=n%10; 8 b=n/10%10; 7 n=678,sum=21 a=n/100; 6 sum=a+b+c; printf("n=%d, sum=%d", n, sum); return 0; }
结构化程序设计的三种基本结构
![结构化程序设计的三种基本结构](https://img.taocdn.com/s3/m/cdd30ec1e53a580217fcfe0a.png)
结构化程序设计共有以下3种基本结构: 顺序结构 分支结构 (选择结构 )
循环结构,
(1)顺序结构,如图3.1(a)所示,该结构先执行A,再 执行B,两者是顺序执行的关系
A B 流程图
A B
N-S结构图
(2)分支结构,也叫选择结构,如图3.1(b)所示, 该结构先判断条件是否成立,当条件成立时执 行A,否则执行B。该结构只能执行A或B其中之 一
例如: m和n是整形变量,则: scanf (“%d%d”,m,n );是错误的, 应将“m,n”改为“&m,&n” 。
②如果在“格式控制串”中除了格式标识符、修饰符和格式 说明符以外还有其他字符,则应在输入数据时输入与这些字 符相同的字符。例如: scanf ("%d,%d",&m,&n );
输入时两个整数之间应加入“,”: 234,123↙ 因为,在scanf函数中的“格式控制串”中使用了逗号分 隔,所以必须在234后面加一个逗号。
表3.2 scanf函数常用的格式说明符
格式说明符 d o x c s f
功能说明 表示输入带符号的十进制整数 表示输入无符号八进制整数 表示输入十六进制无符号整数 表示输入单个字符 表示输入多个字符,即一个字符串 表示输入实数,可以用小数形式输入
表3.2 scanf函数常用③从键盘输入的数据类型和个数必须与参数表中的数 据类型和个数相匹配。例如:
scanf (“%d,%d”,&m,&n ); 输入数据时的形式:
234,10.5↙ (错误,因为数据类型不匹配) 234,105,123↙ (错误,因为数据个数不匹配) 234,123↙ (正确) ④可以指定输入数据所占的列数,系统自动按指定列 数截取数据。例如:
结构化程序设计方法
![结构化程序设计方法](https://img.taocdn.com/s3/m/e524234203020740be1e650e52ea551810a6c91b.png)
结构化程序设计方法结构化程序设计(Structured Programming)是一种软件开发的方法论,旨在提高程序的可读性、可维护性和可测试性。
通过将程序设计分解成多个小的、可重复使用的有序模块,结构化程序设计能够更好地组织和管理大型的复杂软件项目。
结构化程序设计方法的核心思想是使用逻辑结构和控制结构来组织程序的各个部分。
逻辑结构包括顺序结构、选择结构和循环结构,而控制结构包括顺序控制、选择控制和循环控制。
通过这些结构,开发人员可以清晰地定义程序的执行流程,以实现程序的正确性和可靠性。
首先,结构化程序设计要求程序应该采用顺序结构来定义数据和执行过程。
这意味着程序应该按照从上到下的顺序依次执行,每个语句都应该有清晰的输入和输出。
这种顺序结构使程序的逻辑更加可读和可理解,有助于减少错误和提高代码质量。
其次,结构化程序设计强调使用选择结构来处理不同的情况。
选择结构可以根据特定的条件来选择性地执行某些语句或语句块。
例如,使用if-else语句可以根据条件的真假执行不同的代码块。
这种选择结构能够处理复杂的程序逻辑,使程序更加灵活和可扩展。
再次,结构化程序设计鼓励使用循环结构来重复执行相似的代码块。
循环结构可以根据特定的条件来重复执行某些语句或语句块,以实现程序的迭代和循环。
例如,使用while循环可以在满足条件的情况下重复执行某些代码块。
借助循环结构,程序可以更高效地处理大量的数据和任务。
此外,结构化程序设计还强调模块化和函数化的设计思想。
模块化将程序拆分成多个小的、独立的模块,每个模块具有清晰的功能和接口。
函数化则将程序的功能封装到函数中,可以重复使用和调用。
这种模块化和函数化的设计思想使程序更易于开发、维护和测试,也有利于团队合作和代码重用。
总之,结构化程序设计方法通过逻辑结构和控制结构的应用,能够更好地组织和管理程序,提高程序的可靠性和可维护性。
结构化程序设计的核心思想包括顺序结构、选择结构和循环结构,以及模块化和函数化的设计思想。
2009第三章 C语言语句与结构化程序的三种基本结构
![2009第三章 C语言语句与结构化程序的三种基本结构](https://img.taocdn.com/s3/m/09db5da9dd3383c4bb4cd2c4.png)
3.2.1 表达式语句
赋值表达式语句的一般格式: <变量名> = <表达式>; 其中 “=”是赋值号, 其意义是将赋值号右边表 达式的值赋到赋值号左边的变量中去。 如: x = 5; 表示将5赋给变量x x = x+20;表示将x的内容+20再赋给x
3.2.2 数据的输出
C语言的输入和输出是通过调用I/O函数来完成 的,常用的有三对:
2. %s格式符和附加的格式说明符“m .n ”一起
使用, 其中“.n”这个附加的格式说明符是使对
输出的字符串截取n位字符。
3.2.2 数据的输出
例如: main() { printf(”%3s,%7.2s,%.4s,%- 5.3s\n”,
“china”,”china”,”china”,”china”),
3.2.3 数据的输入
scanf()函数
用于接受键盘输入的各种类型的多个数据。 scanf (格式控制字符串, 变量地址表列) ; 在scanf()函数中格式控制字符串的含义与printf() 函数中略有不同(参见P64表3.3) 输入的格式说明字符有: 格式控制问题 %d %o %x %c %s %f %e
3.2.3 数据的输入
例如:关于格式说明符的使用的例子.
?
P66 4、scanf()函数在使用时应该 注意的问题+例3.7
输入:12345678901234 输出:1 , 234 , 789012 ,34.000000 输入:12345678901234 输出: , 12 , 345.000000
3.2.3 数据的输入
getchar( )函数
函数功能:从键盘读取用户输入的一个字符, 并 将该字符的ASCII码值作为函数返回值。 注: 用户在输入字符后, 再按回车键, 输入的内 容才能被getchar()函数处理。
C++_CHAP3
![C++_CHAP3](https://img.taocdn.com/s3/m/717cdbc08bd63186bcebbcba.png)
其语法形式: 其语法形式:
for(表达式 表达式 表达式 表达式1;表达式 表达式3) 表达式 表达式2;表达式 语句
C++与结构化程序设计 第3章 C++与结构化程序设计
表达式1 表达式
false
表达式2 表达式
true
语 句
表达式3 表达式
C++与结构化程序设计 第3章 C++与结构化程序设计
C++与结构化程序设计 第3章 C++与结构化程序设计
if(b) { cout<<n<<'\t'; counter++; if(counter%5==0) cout<<endl; } } }
C++与结构化程序设计 第3章 C++与结构化程序设计
C++与结构化程序设计 第3章 C++与结构化程序设计
if语句嵌套 3.4.2 if语句嵌套
C++语言中规定else始终与同 一层中上面最接近它的if语句 配对,而这个if语句又没有其 他的else与之匹配。最好用 大括号{}括起该层的if语句 来确定层次关系。
第三讲 结构化程序设计
![第三讲 结构化程序设计](https://img.taocdn.com/s3/m/579f52274b73f242336c5ff4.png)
rnd:[0,1)的随机小数
产生[a,b]间的随机整数
a+int(rnd*(b-a+1))
排序方法
选择法 冒泡法
选择排序法
每次选出待排序数列 (长度为n)中的最 大(小)值和队列中 的第一个数进行交换。 将首位数排除在外, 继续对剩余队列(长 度为n-1)进行以上操 作。
多分支结构 用法说明
测试表达式:为数值表达式或字符串表达式。 表达式列表:多个表达式用逗号间隔即为表达式列表。表达式可 以是单个表达式(单值)或“表达式 To 表达式”(多个整数 值)。 如:1 1,3,5,7 To15,20 都是合法的表达式列表。 如果比较测试表达式与其他表达式的关系,则用符号“Is”表示测 试表达式的值。 执行流程: 自上而下顺序地判断测试表达式的值与表达式列表中的哪一个匹 配,如有匹配则执行相应语句块,然后转到End Select的下一语 句。 若所有的值都不匹配,执行Case Else所对应的语句块,如省略 Case Else,则直接转移到End Select的下一语句。
Do/Loop语句
格式1:Do [{While|Until}<条件>] ' 先判断条件、后执行循环体 循环体 Loop 格式2:Do ' 先执行循环体、后判断条件 循环体 Loop [{While|Until}<条件>] (1) 选项“While”当条件为真时执行循环体,选项“Until”当条件 为假时执行循环体。 (2) 循环体中可以出现语句“Exit Do”,将控制转移到DO/LOOP结 构后一语句。
结构化程序设计的方法
![结构化程序设计的方法](https://img.taocdn.com/s3/m/3b68b92e6d175f0e7cd184254b35eefdc9d31575.png)
结构化程序设计的方法
结构化程序设计是一种将程序分解为更小的、可管理的子问题的方法,这些子问题可以被独立地测试和调试,最后再组合起来形成完整的程序。
以下是常用的结构化程序设计方法:
1. 顺序结构:按照程序的顺序依次执行语句和操作。
2. 选择结构:根据条件的真假选择不同的执行路径。
常用的选择结构有if语句和switch语句。
3. 循环结构:重复执行某一段代码,直到满足特定条件才停止执行。
常用的循环结构有while循环、do-while循环和for循环。
4. 模块化设计:将程序分解为更小的模块,每个模块负责完成特定的任务。
这样可以提高代码的重用性和可维护性。
5. 层次化设计:将程序分解为多个层次,每个层次负责处理不同的功能和抽象层次。
这样可以使程序更加清晰、易于理解和扩展。
6. 分层抽象:将问题分解为多个层次的抽象,每个层次都只关心当前问题的部分,而不需要了解整个系统的细节。
这样可以简化复杂问题的处理。
7. 自顶向下设计:从整体到细节的方式进行设计,先设计出整体的框架和主要功能,再逐步展开细节。
这样可以使设计更加清晰和全面。
8. 自底向上实现:从细节到整体的方式进行实现,先实现最基本的功能和模块,然后逐步组合成更复杂的功能。
这样可以提高代码的可测试性和可维护性。
以上方法可以结合使用,根据具体问题的需求选择合适的方法来进行程序设计。
在设计过程中,还需考虑代码的可读性、可扩展性、性能等因素,以确保最终的程序符合要求。
结构化程序设计方法
![结构化程序设计方法](https://img.taocdn.com/s3/m/504ba3c8ac51f01dc281e53a580216fc700a536f.png)
结构化程序设计⽅法简介结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中⼼,将待开发的软件系统划分为若⼲个相互独⽴的模块,这样使完成每⼀个模块的⼯作变单纯⽽明确,为设计⼀些较⼤的软件打下了良好的基础。
基本要点1. 采⽤⾃顶向下,的程序设计⽅法2. 使⽤三种基本控制结构构造程序:(任何程序都可由顺序、选择、重复三种基本控制结构构造。
)(1)⽤顺序⽅式对过程分解,确定各部分的执⾏顺序。
(2)⽤选择⽅式对过程分解,确定某个部分的执⾏条件。
(3)⽤循环⽅式对过程分解,确定某个部分进⾏重复的开始和结束的条件。
(4)对处理过程仍然模糊的部分反复使⽤以上分解⽅法,最终可将所有细节确定下来。
基本结构顺序结构 顺序结构表⽰程序中的各操作是按照它们出现的先后顺序执⾏的。
选择结构 选择结构表⽰程序的处理步骤出现了分⽀,它需要根据某⼀特定的条件选择其中的⼀个分⽀执⾏。
选择结构有单选择、双选择和多选择三种形式。
循环结构 循环结构表⽰程序反复执⾏某个或某些操作,直到某条件为假(或为真)时才可终⽌循环。
在循环结构中最主要的是:什么情况下执⾏循环?哪些操作需要循环执⾏?循环结构的基本形式有两种:当型循环和直到型循环。
当型循环:表⽰先判断条件,当满⾜给定的条件时执⾏循环体,并且在循环终端处流程⾃动返回到循环⼊⼝;如果条件不满⾜,则退出循环体直接到达流程出⼝处。
因为是"当条件满⾜时执⾏循环",即先判断后执⾏,所以称为当型循环。
直到型循环:表⽰从结构⼊⼝处直接执⾏循环体,在循环终端处判断条件,如果条件不满⾜,返回⼊⼝处继续执⾏循环体,直到条件为真时再退出循环到达流程出⼝处,是先执⾏后判断。
因为是"直到条件为真时为⽌",所以称为直到型循环。
特点优点结构化程序设计的基本思想是采⽤"⾃顶向下,逐步求精"的程序设计⽅法和"单⼊⼝单出⼝"的控制结构。
第3章 结构化程序设计
![第3章 结构化程序设计](https://img.taocdn.com/s3/m/5986255a3169a4517623a34f.png)
2019年12月10日星期二第Fra bibliotek章 结构化程序设计
第4页
上海师范大学 计算机系
3.2.1 C语言语句概述
1、表达式语句 表达式能构成语句是C语言的重要特色,故有人称C语言是 “表达式语言”,其一般形式为:表达式; 执行表达式语句就是计算表达式的值。例如:x=y+z;
2019年12月10日星期二
第3章 结构化程序设计
第12页
上海师范大学 计算机系
3.2.2 常用的输入和输出函数
注意:要求格式控制字符串中的格式说明项与变量在数量和 类型上应该一一对应。例如:
int a,b,c; printf("Input a、b、c:"); scanf("%d%d%d", &a,&b,&c); 输入为:7 8 9↙ /* ↙表示回车 */ 或 7↙
(2)“*”符:表示该输入项读入后不赋予相应的变量,即跳过该 输入值。例如:
scanf("%d%*d%d", &a,&b); 当输入为:7 8 9↙时,则把7被赋予a,8被跳过,9被赋予 b。 (3)宽度:用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%4d%d", &a,&b); 当输入为:1234789↙时,则把1234被赋予a,789被赋予b。 (4)长度:长度格式符为l和h,l表示输入长整型数据(如:%ld) 和双精度浮点数(如:%lf),h表示输入短整型数据。
b=5944568,26532370,5ab4f8,5AB4F8
第3章 顺序结构程序设计
![第3章 顺序结构程序设计](https://img.taocdn.com/s3/m/89a4c02add36a32d73758123.png)
知识链接
分析:此程序主要是格式化输入函数scanf的运 实践 用,要熟练掌握scanf函数的使用方法 理论
目标
知识链接
/*案例3-4 */
运行结果
实践 理论 目标
实践任务
任务5:分析下面程序运行结果 /*案例3-5 */
#include <stdio.h> main() { double a,b,c; scanf("%lf,%lf",&a,&b ); c=a*b; printf("\na*b=%lf*%lf=%le\n",a,b,c); }
数据的输入/输出
计算机对程序的执行过程可以总结成一句话,即输 入数据—处理数据—输出数据。一般一个很小的程序都 要具备数据的输入输出功能。在C语言中,C本身不提供 输入输出语句,C所有数据的输入/输出都是由库函数完 成的。例如printf函数和scanf函数,同学们不要误认为 它们是C语言提供的“输入输出”语句,实际上它们是函 数名。 C提供的函数以库的形式存放在系统中,它们不是C 语言文本中的组成部分。在使用C语言库函数时,要用预 编译命令#include将有关“头文件”包括到源文件中去。 格式为:#include<stdio.h>或#include“stdio.h”。但考 虑到printf和scanf函数使用频繁,系统允许在使用这两 个函数时可以不加#include命令。
知识链接
程序执行情况
分析:此程序主要是练习putchar和getchar函数的 使用。
实践 目标
理论
理论知识
1 2 3 4
C言语句 赋值语句 程序的3种基本结构 数据的输入/输出
实践 理论 目标
第3章_结构化程序设计
![第3章_结构化程序设计](https://img.taocdn.com/s3/m/ee81408a84868762caaed5fe.png)
• 2. if-else语句
• 语法形式:
if (<条件>) <语句1> else <语句2>
如果“条件”为 “真”,则执行 “语句1”;否则 执行“语句2”
条件
假(0)
真(非0)
语句1 语句2
如图3-2所示
图3-2 if-else语句的执行过程
例如:
if(a+b>c && b+c >a && a+c>b)//判定合法性 { //求三角形面积 p = (a+b+c)/2; s = Math.sqrt(p*(p-a)*(p-b)*(p-c)); } else Console.WriteLine(“三角形的三边数据有 错!”);
//在条件表达式中实现改变循环控制变量之值
int digit=0;
while(digit++<=9) { Console.WriteLine(“{0}”,digit); } //在Console.WriteLine()语句中实现改变循环控制变量之值 int digit=0;
while(digit<=9)
• switch表达式必须是sbyte、byte、ushort、uint、 long、ulong、char和sting(或基于这些类型之一的 一个enum)类型(或隐式地转移到这些类型) • 必须对每个case语句提供一个跳转语句(break语句) ,包括最后的case语句 • 对每个switch语句来说,只能有一个default语句。 而当所有的case语句都不执行,且又没有default语 句时,则控制转移到switch语句的闭花括号之后的 第一行代码,即switch整个语句都不执行
第3章 结构化分析方法1.0(抽象)
![第3章 结构化分析方法1.0(抽象)](https://img.taocdn.com/s3/m/3a89c3255901020207409c57.png)
第3章结构化分析(需求分析)1.结构化方法结构化方法包括结构化分析(简称SA)、结构化设计(简称SD)和结构化程序设计(简称SP)三部分内容。
结构化方法有两类:一类是面向数据流的方法,另一类是面向数据结构的方法。
结构化方法是把拟解决的问题看成一个系统,用系统科学的思想方法来分析和解决问题。
(1)结构化方法应遵守的基本原则抽象:考虑事物的本质特性而不是它们的细节。
分解:把一个大问题经过多次逐层划分成为若干个足够简单的小问题。
模块化:将系统分解成具有指定功能的若干模块。
抽象和分解是结构化分析方法的主要手段,模块化主要用于结构化设计。
例1,杯子(抽象/分解)抽象红颜色的圆口玻璃茶杯抽象圆口玻璃茶杯抽象玻璃茶杯抽象茶杯抽象杯;茶杯抽象喝水的容器抽象容器。
分解(2)结构化方法的主要问题建立模型(回顾系统的逻辑模型导出框架)。
2.面向数据流的分析方法结构化分析就是用抽象模型的概念,按照软件的内部数据传递、变换关系,从层次的角度出发,自顶向下地逐层分解,直至找到满足功能要求的所有可实现的模块为止,即直到所有功能模块简单到可以用程序代码实现时,就不再分解了。
早期结构化分析依赖数据流图,所以亦称面向数据流的分析方法,其描述/分析工具是数据流图DFD、加工说明PSPEC和数据字典DD。
DD 主要用于描述软件的数据,DFD +PSPEC用于描述软件的功能。
(1)数据流图数据流图:描绘数据从输入移动到输出所经历的变换过程。
①数据流图符号(P46图2.4)数据流“→”:数据的流动方向,由一组特定成分的数据组成。
每个数据流都应该有一个能反映该数据流含义的名字,流向数据存储或从数据存储流出的数据流不必命名。
加工/处理“〇”:输入数据流变成输出数据流的转换过程。
每个加工都有名字和编号,编号反映该加工在数据流图中的哪个层次及哪张图中,名字简单地表明要完成的是什么加工。
一个加工框可以表示人工处理过程、一系列程序、单个程序或程序的一个模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开始
输入n阶矩阵
A
(1)
计算|A|
(2)
T
(3)
|A|!=0 计算A-1
F
(4)
A没有逆矩阵 测试A-1
结束
计算n阶|A|
(2)
0 0
T
n>1
F
F i+1 i<n T
(5)计算代数余子式
s
|A|
(5)
计算n阶矩阵A的代数余子式Aij 除去A的第i行,第j列, 形成n-1阶矩阵A’
计算n-1阶|A’|
(2)
(-1)i+j|A’|
Aij
Байду номын сангаас
(3)
计算n阶矩阵A-1
计算伴随矩阵A*
(6)
A*/|A|
A-1
计算n阶矩阵A的伴随矩阵A*
(6)
i=0, j=0
i+1 0
i<n T
F
F j+1
j<n T
Aij
A*[j,i]
(5)
完成A*计算
考虑完算法,开始考虑实现 (抽象数据类型)
• 自顶向下、逐步求精的方法不仅使用于结 构化程序设计,也适用于其它的程序设计, 比如SQL。
– 编写程序
• 先全局后局部,自顶向下,层层分解,如果某些子问题的相同,可用子 程序表示
– 调试运行 – 分析结果 – 写出程序的文档
3.1 结构化程序设计概述
• 逐步求精的过程包含了三种技术
– 分割技术
• 第一步:把问题划分成不相交的一些部分,直到可用 复用语句为止。 • 第二步:依次解决划分后的每一部分问题。
– 递推技术
• 找到一个有解的方向,对问题做出有限进展,并重复 递推,使它最终到达完全解。 • 循环实现、递归实现
– 分析技术
• 对问题用“情况分析”来细化,直到可用条件语句为 止。 • If-else if-else if…,switch case
3.1 结构化程序设计概述
• 例,计算n阶矩阵的逆矩阵。
[数据表定义 数据表定义] 数据表定义 教师(教师代号,姓名); 兴趣(兴趣代号,兴趣名); 教师_兴趣(教师代号,兴趣代号,水平); [数据表定义 数据表定义] 数据表定义 查找满足下面条件的老师的姓名:在爱好篮球的老师中羽 毛球水平最高,并且在爱好羽毛球的老师中乒乓球水平最 高,并且在爱好乒乓球的老师中篮球水平最高。 [查询结果 查询结果] 查询结果 徐承志
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 模块化
• 将大程序划分为若干子程序,每个子程序称为一个 独立模块 • 每个模块又可继续划分为更小的子模块 • 程序具有一种层次结构
3.1 结构化程序设计概述
• 结构化程序设计的特征
– 自顶向下
• 先设计顶层,然后步步深入,逐层细分,逐步求精。 • 步骤:首先确定问题的输入和输出,然后从大的方 面把问题分解为几个问题,每个子问题形成一个模 块。 • 特点:先整体后局部,先抽象后具体。
程序设计方法学 ——第3章 结构化程序设计方法
徐承志 xcz911@
3.1 结构化程序设计概述
• 结构化程序设计的内容
– 指导编写程序的一般方法 – 避免使用GOTO语句的程序设计 – 自顶向下逐步求精的程序设计 – 将任意大而复杂的流程图转变为标准形式 – 利用它组织和编写的程序容易理解和修改 – 控制程序复杂性的理论和方法 – 使得正确性的证明容易实现
3.1 结构化程序设计概述
• 程序设计具体步骤
– 分析问题
• 明确题目要求,列出所有已知量,找出求解范围、解的精度等
– 建立数学模型
• 比如迭代或递推公式等 • 画出流程图,结构化流程图
– 选择算法
• • • • 算法的逻辑结构尽可能简单 算法所需的存储量尽量少 避免不必要的循环,减少执行时间 在满足题目要求下,尽量减少计算量
[查询目标 查询目标] 查询目标 SELECT 姓名 FROM 教师 集合1) WHERE 教师代号 IN (集合 集合 [集合 集合1] 集合 SELECT 教师代号 FROM (集合 union all 集合 union all 集合 集合2 集合3 集合4) 集合 GROUP BY 教师代号 HAVING COUNT(*)=3 [集合 在爱好篮球的老师中羽毛球水平 集合2:在爱好篮球的老师中羽毛球水平 集合 最高的老师代号] 最高的老师代号 SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN (集合 集合5) 集合 集合6) and t_i.水平>=all(集合 集合
[集合 爱好篮球的老师代号 集合5:爱好篮球的老师代号 集合 爱好篮球的老师代号] SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球”
[集合 爱好篮球的老师的羽毛球水平 集合6:爱好篮球的老师的羽毛球水平 集合 爱好篮球的老师的羽毛球水平] SELECT t_i.水平 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“羽毛球” and t_i.教师代号 IN ( SELECT t_i.教师代号 FROM 兴趣 i,教师_兴趣 t_i WHERE i.兴趣代号=t_i.兴趣代号 and i.兴趣名=“篮球” )