- 1、本文档共130页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1
武汉理工大学计算机学院
授课教师:
C语言程序设计
2
第二章 算法及算法设计简介
2.1 算法的概念
2.2 算法的设计与表达
2.3 简单的算法实例
2.4 结构化程序设计方法简介
3
算法的概念
任何一个程序应包含的如下两方面的内容:
(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure).
(2)对操作的描述。即操作步骤,也就是算法(algorithm)。
著名计算机科学家沃思(Nikiklaus Wirth)提出公式
数据结构+算法=程序
算法:是对解决某个问题的方法步骤的描述。
程序:从计算机角度来说,程序是用某种计算机能理解并执
行的计算机语言描述解决问题的方法和步骤。
4
实际上,一个程序除了以上两个主要要素之外,还应当采用
结构化程序设计方法进行程序设计,并且用某一种计算机语
言表示。因此,可以这样表示:
程序=算法+数据结构+程序设计方法+语言工具和环境
在这4个方面中,算法是灵魂,数据结构是加工对象,语言
是工具,编程需要采用合适的算法。算法是解决“做什么”
和“怎么做”的问题。
5
算法的表示
1、用自然语言表示算法
采用汉语、英语或其它语言来描述解决问题的方法和步骤。
由于自然语言容易出现“歧义性”,且描述问题的文字冗长,
因此一般很少使用自然语言来描述算法。
6
例1:
有50个学生 ,要求将他们之中成绩在80分以上者打印出来。用n表示学号,n1代表第一个学生学号,ni代表第i个学生学号。用g代表学生成绩, gi 代表第i个学生成绩,算法可表示如下:
S1:1?i
S2:读入学号ni和成绩gi
S3: 如果gi ?80 ,则打印 ni 和gi ,否则不打印
S4: i+1 ?i
S5: 如果 i? 50, 返回S2, 继续执行; 否则,算法结束。
7
2、用流程图表示算法
(1)常用的流程图符号
8
上例用流程图表示:
(1)? 流程图表示算法的优点:
①表示算法直观形象,比较清楚地显示出各个框之间
的逻辑关系。
②简单,易于掌握。
流程图
9
3、用N-S图表示算法
1973年美国学者I.Nassi和B.Shneiderman提出了
一种新的流程图形式。在这种流程图中,完全去掉
了带箭头的流程线。全部算法写在一个矩形框内,
在该框内还可以包含其他的从属于它的框。
这种流程图又称N—S结构化流程图。
N—S流程图用以下的流程图符号:
(1)顺序结构:
A
B
10
(2)选择结构:
P
成立
不成立
A
B
(3)循环结构:
当p1成立
A
当型循环结构
直到p1成立
A
直到型循环结构
用以上3种N—S流程图中的基本框,可以组成复杂的N—S流程图,以表示算法
11
上例用N-S图表示:
用N—S表示算法如图
12
4、用伪码表示算法
伪代码是用介于自然语言和计算机语言之间的文字和符号来
描述算法。它不用图形符号,因此书写方便,格式紧凑,也
比较好懂,便于向计算机语言算法(即程序)过渡。
例
有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生
学号。用g表示学生成绩,gi表示第i个学生成绩。
13
BEGIN(算法开始)
1=i
While i=50
{
input ni and gi
if gi≥80 print ni and gi
i+1=i
}
END(算法结束)
用伪代码表示算法如下:
14
5、用计算机语言表示算法
设计算法的目的是为了实现算法。因此,不仅要考
虑如何设计一个算法,也要考虑如何实现一个算法。
我们的任务是用计算机解题,也就是要用计算机实
现算法。计算机是无法识别流程图和伪代码的。只
有用计算机语言编写的程序才能被计算机执行(当
然还要经过编译成目标程序才能被计算机识别和执
行)。因此,在用流程图或伪代码描述出一个算法
后,还要将它转换成计算机语言程序。
15
例:
有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生
学号。用g表示学生成绩,gi表示第i个学生成绩。
C语言程序如下:
main( )
{
int g[50],n[50],i;
for(i=0;i50;i++)
scanf(“%d,%d”,n[i],g[i]);
您可能关注的文档
- 洞头县海霞中学迁建一期工程屋面钢网架专项施工方案.doc
- 桥墩台施工措施.ppt
- 基于Solidworks下的玉米播种机的结构设计及建模.doc
- 毛坯工艺计算与模具设计.ppt
- FSAE汽车转向系统设计.doc
- 苯-甲苯体系板式精馏塔设计.docx
- L-丝氨酸酶法生产工艺放大试验.ppt
- VMT导向系统测量技术成都项目部.ppt
- XXX混凝土布料机专项施工方案.doc
- 质量检验及抽样技术.ppt
- 2021-2022学年湖南省常德市安乡县四年级上学期期中语文真题及答案.pdf
- 2023-2024学年河南省南阳市社旗县四年级上学期期中数学真题及答案.pdf
- 2022-2023学年云南省曲靖市四年级下学期期末数学真题及答案.pdf
- 2021-2022学年河南省周口市鹿邑县二年级下册月考语文真题及答案.pdf
- 2018年河南焦作解放区教师招聘考试真题及答案.pdf
- 2019年江西公务员行测考试真题及答案-乡镇.pdf
- 2019中国石油报社应届高校毕业生招聘试题及答案解析.pdf
- 光大银行招聘应届毕业生能力素质测试笔试真题及答案.pdf
- 2024年广西百色教师招聘考试模拟题及答案.pdf
- 2021-2022学年浙江绍兴诸暨市五年级上册语文期末试卷及答案.pdf
文档评论(0)