《计算机程序设计.ppt》由会员分享,可在线阅读,更多相关《计算机程序设计.ppt(32页珍藏版)》请在优知文库上搜索。
1、第第 5 章章 计算机程序设计计算机程序设计5.1 问题求解和程序设计问题求解和程序设计5.2 程序设计语言程序设计语言5.3 算法及其流程图表示算法及其流程图表示计算机求解问题的基本过程计算机求解问题的基本过程 分析问题分析问题确定问题确定问题解决方案解决方案设计算法设计算法编写程序编写程序运行程序运行程序整理结果整理结果问题求解过程:问题问题求解过程:问题想法想法算法算法程序程序计算机求解问题的基本过程计算机求解问题的基本过程 问题求解过程:问题问题求解过程:问题想法想法算法算法程序程序需要计算方法和数据需要计算方法和数据结构的知识,为问题结构的知识,为问题建立模型。建立模型。需要程序设计
2、语言和程需要程序设计语言和程序设计方法的知识,将序设计方法的知识,将算法转换程序。算法转换程序。 需要数据结构和需要数据结构和算法的知识,设算法的知识,设计解决方案。计解决方案。理解程序理解程序可以解决问题的可以解决问题的计算机,但只认计算机,但只认识识0 0和和1 1,并且没,并且没有思维。有思维。有问题需要解决的有问题需要解决的人,问题是丰富多人,问题是丰富多彩的,并且人具有彩的,并且人具有思维。思维。如何实现人和计算机的交流?如何实现人和计算机的交流?程序程序作用:作用:把人从枯燥重复的任务中把人从枯燥重复的任务中解放出来,延伸了人脑的作用。解放出来,延伸了人脑的作用。程序与程序设计程序
3、与程序设计n程序:程序:是能够实现特定功能的一组是能够实现特定功能的一组指令指令序列序列的集合,是描述对某一问题的解决步骤。的集合,是描述对某一问题的解决步骤。n指令可以是指令可以是机器指令机器指令、汇编语言汇编语言的语句,也的语句,也可以是可以是高级语言高级语言的语句,甚至还可以是用的语句,甚至还可以是用自自然语言然语言描述的指令。描述的指令。程序设计与程序设计语言程序设计与程序设计语言 n程序设计:程序设计:是给出解决特定问题的程序的过是给出解决特定问题的程序的过程,是软件构造活动中的重要组成部分程,是软件构造活动中的重要组成部分n程序设计往往以程序设计往往以某种程序设计语言为工具某种程序
4、设计语言为工具,给出这种语言下的程序。给出这种语言下的程序。nC、Java、Pascal、Basic等等等等第第 5 章章 计算机程序设计计算机程序设计5.1 问题求解和程序设计问题求解和程序设计5.2 程序设计语言程序设计语言5.3 算法及其流程图表示算法及其流程图表示程序设计语言程序设计语言 程序设计语言是人与计算机交互的工具。程序设计语言是人与计算机交互的工具。机器语言机器语言汇编语言汇编语言高级语言高级语言单机版单机版网络版网络版n机器语言机器语言机器语言的指令是由二进制代码构成的,是机器语言的指令是由二进制代码构成的,是计算机能直接识别的程序设计语言。计算机能直接识别的程序设计语言。
5、n01001001:难以记忆,可读性差:难以记忆,可读性差n汇编语言汇编语言又称符号语言,是用接近人类语言的助记符又称符号语言,是用接近人类语言的助记符来替代机器语言的指令。来替代机器语言的指令。nADD A, B: 具有一定的语法和格式,与机器相关具有一定的语法和格式,与机器相关n高级语言高级语言其语句语法比较接近于人们习惯的自然语言其语句语法比较接近于人们习惯的自然语言和数学语言,因此称为高级语言。和数学语言,因此称为高级语言。nA=A+B:与硬件不相关,可在不同机器上使用:与硬件不相关,可在不同机器上使用计算机语言及语言处理程序计算机语言及语言处理程序程序的基本结构程序的基本结构 基本符
6、号基本符号单词单词语句语句函数函数程序程序词法规则词法规则语法规则语法规则功能逻辑功能逻辑有机组合有机组合求三个整数中的较大者求三个整数中的较大者 #include /预处理预处理int Max (int x, int y, int z) int max; if (x=y) max=x; /将两个数比较取较大值将两个数比较取较大值 else max=y; if (zmax) max=z; /将两个数的较大值与第三个数比较将两个数的较大值与第三个数比较 return max;void main( ) /主函数主函数 int m; m = max(6, 5, 4); /函数调用函数调用 print
7、f(“%d”, m);求三个整数中的较大者求三个整数中的较大者 #include /预处理预处理int Max (int x, int y, int z) int max; if (x=y) max=x; /将两个数比较取较大值将两个数比较取较大值 else max=y; if (zmax) max=z; /将两个数的较大值与第三个数比较将两个数的较大值与第三个数比较 return max;void main( ) /主函数主函数 int m; m = max(6, 5, 4); /函数调用函数调用 printf(“%d”, m);基本符号基本符号: 字母字母+符号符号单词:空格或特殊符号分开
8、单词:空格或特殊符号分开语句:以分号结尾语句:以分号结尾求三个整数中的较大者求三个整数中的较大者 #include /预处理预处理int Max (int x, int y, int z) int max; if (x=y) max=x; /将两个数比较取较大值将两个数比较取较大值 else max=y; if (zmax) max=z; /将两个数的较大值与第三个数比较将两个数的较大值与第三个数比较 return max;void main( ) /主函数主函数 int m; m = max(6, 5, 4); /函数调用函数调用 printf(“%d”, m);有且只能有一有且只能有一个个
9、main函数函数自定义函数自定义函数注释注释语法规则语法规则结构语句结构语句 A Bexp A BTFexp ATF(a) 顺序结构顺序结构 (b) 选择结构选择结构 (c) 循环结构循环结构三种基本的控制结构为:顺序结构、选择结构三种基本的控制结构为:顺序结构、选择结构和循环结构。和循环结构。第第 5 章章 计算机程序设计计算机程序设计5.1 问题求解和程序设计问题求解和程序设计5.2 程序设计语言程序设计语言5.3 算法及其流程图表示算法及其流程图表示算法的定义算法的定义n 简单地说,算法就是解决问题的方法,或简单地说,算法就是解决问题的方法,或问题的解决方案。问题的解决方案。 n 算法算
10、法(Algorithm):是对是对特定问题特定问题求解步骤求解步骤的一种描述,是的一种描述,是指令指令的的有限序列有限序列。做好笔记,有作业!做好笔记,有作业!程序流程图的基本符号程序流程图的基本符号 (a)开始或结束)开始或结束 (b)处理)处理(c)选择)选择 (d)输入)输入/输出输出 (e)控制流)控制流选择结构选择结构表达式表达式 语句语句TF 选择结构:选择结构:在程序的运行过程中,能依据运在程序的运行过程中,能依据运行时刻表达式的值有选择地执行某些程序段。行时刻表达式的值有选择地执行某些程序段。 又称又称“分支结构分支结构”。 单分支单分支选择结构选择结构表达式表达式 语句语句1
11、TF 语句语句2双分支双分支 选择结构:选择结构:在程序的运行过程中,能依据运在程序的运行过程中,能依据运行时刻表达式的值有选择地执行某些程序段。行时刻表达式的值有选择地执行某些程序段。 又称又称“分支结构分支结构”。 输入输入x,求得,求得y,画出流程图画出流程图xY10)0()0(xxY=0X0?YesY=1-XNo结束结束输出输出Y单分支单分支结构示例结构示例开始开始输入输入xY=0如何改为如何改为双分支结构?双分支结构?循环结构循环结构表达式表达式 语语 句句TF循环结构循环结构:用来描述具有规律性的重复运算。:用来描述具有规律性的重复运算。 n对比分支结构对比分支结构n1、条件判断次
12、数、条件判断次数n2、条件为假时、条件为假时 是否可执行操作是否可执行操作 求求1至至N之间的所有自然数之和之间的所有自然数之和。i=1,sum=0i=Nsum=sum+ii=i+1Y结束结束输出输出sumN开始开始输入输入N1、前后项的关系、前后项的关系2、初始值、循环条件与循环体的关系、初始值、循环条件与循环体的关系循环结构的关键循环结构的关键初始值、循环条件与循环体是不是唯一的初始值、循环条件与循环体是不是唯一的?sum=1?i=i+1sum=sum+iiN? 求求1至至N之间的所有自然数之和之间的所有自然数之和。i=0,sum=0iNi=i+1sum=sum+iY结束结束输出输出sum
13、N开始开始输入输入Nsum=sum+i+1i=i+1开始开始n=100, m=0Nn1000?n=n+1n能被能被3和和5整除吗整除吗?YYm=m+1输出输出n结束结束输出输出mN 例例4:输出:输出3位数中所有位数中所有既能被既能被3整除又能被整除又能被5整除的整除的数,并统计其个数。数,并统计其个数。循环?分支?循环?分支?混合结构混合结构:循:循环中包含分支环中包含分支任何分支结束后任何分支结束后都要为下一次循都要为下一次循环做准备!环做准备!问题问题6一球从100米高度开始落下,每次落地后反弹到原高度的一半,问球在第10次落地时共经过的路程以及反弹的高度?第第1次落地次落地第第2次落地
14、次落地第第10次落地次落地第第i次与第次与第j次落地后弹起高度间的关系次落地后弹起高度间的关系?第第i次落地时所加路程与弹起高度间的关系次落地时所加路程与弹起高度间的关系?核心变量:高度核心变量:高度 or 路程路程?h经过几次减半经过几次减半?s经过几次增加经过几次增加?109开始开始s=100, h=50i=1i10?Ys=s+2hh=h/2i=i+1结束结束输出输出s, hNs:第第 i 次落地时的路程次落地时的路程h:第第 i 次落地后弹起的高度次落地后弹起的高度i=10?h=100?h=h/2s=s+2hi=i+1i=2问题问题7: 斐波那契数列斐波那契数列 1,1,2,3,5,8,
15、13,21,34, 即著名的斐波那契数列,它即著名的斐波那契数列,它来源于来源于1202年意大利数学家斐波那契提出的一个年意大利数学家斐波那契提出的一个“兔子问题兔子问题”: n假设一对刚出生的兔子一个月后长大,再过一个月假设一对刚出生的兔子一个月后长大,再过一个月就能生下一对兔子,并且此后每个月都能生一对兔就能生下一对兔子,并且此后每个月都能生一对兔子,且新生的兔子在第二个月后也是每个月生一对子,且新生的兔子在第二个月后也是每个月生一对兔子。问:一对兔子一年内可繁殖成多少对兔子?兔子。问:一对兔子一年内可繁殖成多少对兔子? 1 2 3 4 5 6 月份 大 小 大 小 大 小 大 小 大 小
16、 大 小 数目 0 1 1 0 1 1 2 1 3 2 5 3 总数 1 1 2 3 5 8 兔子在出生后的第三个月才能产小兔兔子在出生后的第三个月才能产小兔斐波那契数列的数学特征斐波那契数列的数学特征n数列中,从第数列中,从第3项开始,每项都是它之前两项项开始,每项都是它之前两项之和。设之和。设Fn表示这个数列的第表示这个数列的第n项,则该数列项,则该数列可以数学化描述为:可以数学化描述为: F1=1,F2=1, Fn+2=Fn+1+Fn,n1斐波那契数列中的问题斐波那契数列中的问题例例7: 斐波那契数列斐波那契数列中的数由第几项开始都不小于中的数由第几项开始都不小于1000?last this next一一二二三三 1 1 2 1 2 3 2 3 5last=thisthis=next提示:设提示:设last, this, next三个变量,分别代表三个变量,分别代表Fn-1, Fn, Fn+1 ,则有,则有next=this+last 以第以第1、2项为基础,每项为基础,每次向后计算一项。次向后计算一项。1,1,2,3,5,8,13,21,34 循环体的两大任务:循环体的两大任务