北京交通大学C语言课件第1章.ppt
《北京交通大学C语言课件第1章.ppt》由会员分享,可在线阅读,更多相关《北京交通大学C语言课件第1章.ppt(59页珍藏版)》请在冰豆网上搜索。
![北京交通大学C语言课件第1章.ppt](https://file1.bdocx.com/fileroot1/2022-10/22/28887e62-ceb6-4031-9b29-56051729bfc3/28887e62-ceb6-4031-9b29-56051729bfc31.gif)
实践是能力赖以生长的土壤!
实践是能力赖以生长的土壤!
高级语言程序设计高级语言程序设计主讲教师:
丁丁主讲教师:
丁丁计算机与信息技术学院计算机与信息技术学院第一章第一章程序设计与程序设计与C语言语言主要内容主要内容n程序和程序语言程序和程序语言q程序和程序语言程序和程序语言q算法及其描述工具算法及其描述工具n程序设计方法程序设计方法n问题与程序设计问题与程序设计2022/11/6高级高级语言程序设计语言程序设计41.1程序和程序语言程序和程序语言例:
到图书馆借参考书例:
到图书馆借参考书1)进入图书馆;进入图书馆;2)查书目;查书目;3)填写索书单;填写索书单;4)如果书未借出如果书未借出那么:
交图书馆工作人员取书;办理借书手续;到那么:
交图书馆工作人员取书;办理借书手续;到5;5)如果还需借其它书如果还需借其它书,回到回到2;否则到否则到6;6)离开图书馆。
离开图书馆。
“程序程序”(program)通常指完成某些事务的一种既定方式通常指完成某些事务的一种既定方式和过程。
和过程。
2022/11/6高级高级语言程序设计语言程序设计5一些直观特征一些直观特征n按部就班地进行;按部就班地进行;n开始与结束;开始与结束;n完成某项具体任务;完成某项具体任务;n需要用某种记法形式描述(计算机程序需要用某种需要用某种记法形式描述(计算机程序需要用某种精确定义的形式描述);精确定义的形式描述);n是在一些基本动作的基础上描述的;是在一些基本动作的基础上描述的;n不同的描述粒度(细节程度);不同的描述粒度(细节程度);n2022/11/6高级高级语言程序设计语言程序设计61程序程序n程序:
规定了计算机执行的动作和动作的顺序。
程序:
规定了计算机执行的动作和动作的顺序。
n一个程序应包括以下两方面的内容:
一个程序应包括以下两方面的内容:
q对数据的描述:
在程序中要指定数据的类型和数据的组织形式,即对数据的描述:
在程序中要指定数据的类型和数据的组织形式,即数据结构数据结构。
q对操作的描述:
即操作步骤,也就是对操作的描述:
即操作步骤,也就是算法算法(解决问题的方法和步骤)(解决问题的方法和步骤)。
q数据是操作的对象,操作的目的是对数据进行加工处理,以得到期数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。
望的结果。
n程序程序数据结构数据结构算法算法q著名计算机科学家著名计算机科学家NikiklausWirthn作为程序设计人员,必须认真考虑和设计数据结构和操作步聚作为程序设计人员,必须认真考虑和设计数据结构和操作步聚2022/11/6高级高级语言程序设计语言程序设计72022/11/6高级高级语言程序设计语言程序设计8例:
求例:
求1122334455CC语言编写的程序:
语言编写的程序:
#includevoidmain()inti,t;t=1;i=2;t=t*i;i=3;t=t*i;i=4;t=t*i;i=5;t=t*i;printf(“%dn”,t);数据:
数据:
11,22,33,44,55数据结构:
数据结构:
intint类型类型算法:
算法:
步骤步骤11:
先求:
先求1122,得到结果,得到结果22步骤步骤22:
将步骤:
将步骤11得到的乘积得到的乘积22再再乘以乘以33,得到结果,得到结果66;步骤步骤33:
将:
将66再乘以再乘以44,得,得2424步骤步骤44:
将:
将2424再乘以再乘以55,得,得120120太繁琐2022/11/6高级高级语言程序设计语言程序设计9设变量设变量tt为被乘数,为被乘数,ii为乘数。
为乘数。
用循环算法来求结果用循环算法来求结果,算法可改写为:
算法可改写为:
CC语言编写的程序:
语言编写的程序:
#includeVoidmain()inti,t;t=1;i=2;while(iti=t步骤步骤44:
i+1=ii+1=i步骤步骤55:
如果:
如果ii不大于不大于55,返,返回步骤回步骤33;否则结束。
最后;否则结束。
最后得到得到tt的值就是的值就是5!
5!
的值的值。
简练2算法算法n算法:
解决问题的方法和步骤算法:
解决问题的方法和步骤q解决一个问题的过程就是实现一个算法的过程。
解决一个问题的过程就是实现一个算法的过程。
n算法分为两大类:
算法分为两大类:
q数值运算:
如解方程、求定积分数值运算:
如解方程、求定积分q非数值运算:
如排序、检索、绘图非数值运算:
如排序、检索、绘图2022/11/6高级高级语言程序设计语言程序设计11例:
用公式例:
用公式y=x2-2x+3计算计算x=0,1,2,3,100所所对应的对应的y值,使用如下算法:
值,使用如下算法:
(1)置置x为为0;
(2)置置x的上界的上界n=100;(3)当当xn时,重复执行时,重复执行3.1,3.2,3.3步,否则,算法停止。
步,否则,算法停止。
(3.1)用公式计算用公式计算y值;值;(3.2)打印一组打印一组x和和y的值;的值;(3.3)x值增加值增加1。
2022/11/6高级高级语言程序设计语言程序设计122022/11/6高级高级语言程序设计语言程序设计13算法的算法的5个特性个特性n有穷性:
有穷性:
即算法通过有限步骤后能够结束n确定性:
确定性:
无二义性,算法必须具有清晰的定义、不能存在任何的模糊n有零个或多个输入有零个或多个输入n有一个或多个输出有一个或多个输出n可行性:
可行性:
即算法的每一步都是可执行的同一个问题可以有多种算法同一个问题可以有多种算法2022/11/6高级高级语言程序设计语言程序设计14算法的描述工具算法的描述工具n
(1)流程图(传统流程图)流程图(传统流程图)n
(2)结构流程图()结构流程图(N-S结构图)结构图)n(3)伪代码)伪代码2022/11/6高级高级语言程序设计语言程序设计15算法的描述工具:
流程图算法的描述工具:
流程图n用一些图框表示各种操作,形象直观,易于理解用一些图框表示各种操作,形象直观,易于理解nANSI规定一些常用的流程图符号规定一些常用的流程图符号n一个流程图包括以下一个流程图包括以下几部分:
几部分:
q表示相应操作的框表示相应操作的框q带箭头的流程线带箭头的流程线q框内外必要的说明文字框内外必要的说明文字x=nx=0,n=100计算计算y=x*x-2*x+3打印打印x,yx=x+1开始开始结束结束真真假假2022/11/6高级高级语言程序设计语言程序设计162022/11/6高级高级语言程序设计语言程序设计17算法的描述工具:
算法的描述工具:
N-S图图n美国学者美国学者I.Nassi和和B.Shneiderman提提出的一种新的流程出的一种新的流程图图n全部算法写在一个全部算法写在一个矩形框内矩形框内,由一些,由一些基本的框组成一个基本的框组成一个大的框,称大的框,称N-S图图x=0,n=100x=n计算计算y=x*x-2*x+3打印打印x,yx=x+12022/11/6高级高级语言程序设计语言程序设计18算法的描述工具:
伪码算法的描述工具:
伪码n概念概念:
伪代码:
伪代码(pseudocode)是用来描述算法的是用来描述算法的介于自然语言和计算机语言之间的文字和符号。
介于自然语言和计算机语言之间的文字和符号。
n特点特点:
自上而下:
自上而下q每一行(或几行)表示一个基本操作;每一行(或几行)表示一个基本操作;q不用图形符号,书写方便、格式紧凑;不用图形符号,书写方便、格式紧凑;q便于向计算机语言算法(即程序)过渡。
便于向计算机语言算法(即程序)过渡。
n用处用处:
适用于设计过程中需要反复修改时的流程:
适用于设计过程中需要反复修改时的流程描述。
描述。
n伪码伪码begininitializextozeroinitializento100whilex=ncalculateyprintx,yaddonetoxend2022/11/6高级高级语言程序设计语言程序设计19例:
求例:
求1+2+100的和的和i=100sum=0,i=1sum=sum+ii=i+1开始开始结束结束真真假假printsumn传统流程图传统流程图2022/11/6高级高级语言程序设计语言程序设计20例:
求例:
求1+2+100的和的和beginsum0,i1;whilei=100sumsum+i;ii+1;printsumendsum=0,i=1i编译加工编译加工执行执行使用高级语言编程:
使用高级语言编程:
p编程工作的效率大大提高编程工作的效率大大提高p人更容易思考和把握复杂程序的意义人更容易思考和把握复杂程序的意义p更多人愿意投身于这种工作,使编程发展成为一种职业和谋更多人愿意投身于这种工作,使编程发展成为一种职业和谋生方式生方式p术语术语“程序设计语言程序设计语言”已专指已专指“高级语言高级语言”2022/11/6高级高级语言程序设计语言程序设计35n1954年到年到1957年:
高级语言年:
高级语言Fortran诞生诞生;n至至1960年代中,开发了年代中,开发了Algol60,COBOL,BASIC等。
还有函数式语言等。
还有函数式语言LISP等等;n1970年代开始:
年代开始:
Pascal和和C语言逐渐分别为教学科研语言逐渐分别为教学科研和软件开发用的主要语言和软件开发用的主要语言;n1980年代:
逻辑程序语言年代:
逻辑程序语言Prolog,面向对象语言,面向对象语言Smalltalk和后来的和后来的C+;n1995年左右的年左右的Java。
高级语言的简单历史高级语言的简单历史2022/11/6高级高级语言程序设计语言程序设计36nC语言比较小,入门容易,很快就可以开始编程语言比较小,入门容易,很快就可以开始编程n有丰富的程序机制、数据机制、函数定义机制,能满足复杂有丰富的程序机制、数据机制、函数定义机制,能满足复杂程序的需要。
许多常用功能通过库实现程序的需要。
许多常用功能通过库实现n提供接近硬件的低级操作,广泛用于开发效率要求高的程序。
提供接近硬件的低级操作,广泛用于开发效率要求高的程序。
被用于代替汇编语言开发底层软件被用于代替汇编语言开发底层软件n生成目标代码质量高、可移植性好,被称为生成目标代码质量高、可移植性好,被称为“中级语言中级语言”n提供了一些支持大规模复杂软件开发的机制提供了一些支持大规模复杂软件开发的机制pC语言的工作得到世界计算机界的广泛赞许。
对计算机工业和语言的工作得到世界计算机界的广泛赞许。
对计算机工业和应用发展起了重要推动作用应用发展起了重要推动作用p许多新语言从许多新语言从C汲取营养。
如汲取营养。
如C+,Java,C#等等p语言设计者获得计算机领域最高奖语言设计者获得计算机领域最高奖图灵奖图灵奖C语言的特点语言的特点nC语言语言1973年由贝尔实验室的年由贝尔实验室的DennisRitchie设计,目标是书设计,目标是书写操作系统和其他系统程序。
写操作系统和其他系统程序。
nC语言最早用于写语言最早用于写UNIX系统系统。
70年代成为年代成为UNIX的标准开发的标准开发语言,随语言,随UNIX流行而被广泛接受。
流行而被广泛接受。
n80年代被搬到各种机器的许多操作系统上,逐渐成为一种开年代被搬到各种机器的许多操作系统上,逐渐成为一种开发系统程序和复杂软件的通用语言。
发系统程序和复杂软件的通用语言。
n后来成为使用最广泛的系统开发语言。
人们用后来成为使用最广泛的系统开发语言。
人们用C开发各种程开发各种程序,从简单应用到极其复杂的大型软件。
序,从简单应用到极其复杂的大型软件。
n各种计算机都有可用的各种计算机都有可用的C语言系统。
语言系统。
C语言简介语言简介2022/11/6高级高级语言程序设计语言程序设计38标准化标准化应用发展要求应用发展要求C成为更安全可靠、不依赖具体机器或操作系统成为更安全可靠、不依赖具体机器或操作系统的标准语言。
的标准语言。
ANSI在在80年代开始标准化工作,年代开始标准化工作,1988年颁布年颁布ANS