《C语言与程序概述.ppt》由会员分享,可在线阅读,更多相关《C语言与程序概述.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北京源智天下科技有限公司第第1 1章章 C C语言与程序概述语言与程序概述C语言是现在世界上应用最广泛,最受欢迎的计算机语言语言是现在世界上应用最广泛,最受欢迎的计算机语言之一。在本章的学习中需要掌握以下知识点:之一。在本章的学习中需要掌握以下知识点:数据结构的概念和作用;数据结构的概念和作用;算法的概念和作用;算法的概念和作用;结构化程序设计的方法;结构化程序设计的方法;三种基本结构;三种基本结构;程序流程图和程序流程图和N-S流程图。流程图。北京源智天下科技有限公司1.1 C1.1 C语言历史语言历史 C语言已经经历了几十年的发展。在学习语言已经经历了几十年的发展。在学习C语言之前,应语言
2、之前,应该要先了解该要先了解C语言是如何诞生的,它的历史是怎么样的。语言是如何诞生的,它的历史是怎么样的。本节将介绍本节将介绍C言语的诞生、言语的诞生、C语言的标准化过程及其重要语言的标准化过程及其重要特点,最后还将展示一个标准的特点,最后还将展示一个标准的“Hello,world!”的程的程序。序。北京源智天下科技有限公司1.1.1 C1.1.1 C语言的诞生语言的诞生C语言是由著名的计算机科学家语言是由著名的计算机科学家Dennis Ritchie创造的,其创造的,其历史可以追溯到历史可以追溯到ALGOL 60。ALGOL 60,也称为,也称为A语语言,是纯粹的面向描述计算过程的语言。言,
3、是纯粹的面向描述计算过程的语言。C语言的直接前身语言的直接前身B语言就是从语言就是从BCPL发展而来的。发展而来的。在在19721973年间,年间,Denis Ritchie改进了改进了B语言,为其添语言,为其添加了数据类型的概念,并将原来的解释程序改写为可以加了数据类型的概念,并将原来的解释程序改写为可以在直接生成机器代码的编译程序,并将其命名为在直接生成机器代码的编译程序,并将其命名为C。现在,现在,C语言已成为用途最为广泛的计算机高级语言,不语言已成为用途最为广泛的计算机高级语言,不仅可以用于编写系统软件,还可以用于构建各个领域的仅可以用于编写系统软件,还可以用于构建各个领域的应用软件。
4、应用软件。北京源智天下科技有限公司1.1.2 C1.1.2 C语言的标准化语言的标准化C语言发展到现在已经经历了语言发展到现在已经经历了3个标准,分别为个标准,分别为K&R C、C89和和C99。1K&R C2C89或或ANSI C3C99北京源智天下科技有限公司1.1.3 C1.1.3 C语言的特点语言的特点C语言之所以得到如此迅速的发展,并成为应用最广泛、语言之所以得到如此迅速的发展,并成为应用最广泛、最受欢迎的计算机语言之一,主要是因为它语法灵活、最受欢迎的计算机语言之一,主要是因为它语法灵活、使用方便,并能实现高效而强大的功能。使用方便,并能实现高效而强大的功能。C语言具有以语言具有以
5、下特点:下特点:1使用方便,功能强大使用方便,功能强大2便于结构化编程便于结构化编程3C语言是中级语言语言是中级语言4执行效率高执行效率高5C程序可移植性好程序可移植性好北京源智天下科技有限公司1.1.4 Hello,world!1.1.4 Hello,world!作为结构性语言,作为结构性语言,C程序的结构十分严整。下面来认识一程序的结构十分严整。下面来认识一下第一个下第一个C程序,这是十分著名的程序,这是十分著名的“Hello,world!”程程序。这个程序经常被用作介绍各种语言的第一个程序,序。这个程序经常被用作介绍各种语言的第一个程序,其功能是向屏幕打印一个字符串其功能是向屏幕打印一个
6、字符串“Hello,world!”。北京源智天下科技有限公司1.2 1.2 数据结构与算法数据结构与算法一般来说,程序由数据结构和算法两个部分组成。数据结一般来说,程序由数据结构和算法两个部分组成。数据结构是一个一个的实体,而算法是将它们联系在一起的各构是一个一个的实体,而算法是将它们联系在一起的各种手段。学习程序首先要了解数据结构和算法的概念,种手段。学习程序首先要了解数据结构和算法的概念,以及它们之间的关系。由于篇幅有限,本小节将只是简以及它们之间的关系。由于篇幅有限,本小节将只是简要地介绍数据结构和算法的一些基本知识,要想深入了要地介绍数据结构和算法的一些基本知识,要想深入了解数据结构和
7、解数据结构和算法,还需要读者去学习其他专门的材料。算法,还需要读者去学习其他专门的材料。北京源智天下科技有限公司1.3 1.3 程序设计程序设计如本章如本章1.1.3小结所述,小结所述,C语言是一门便于结构化编程语言是一门便于结构化编程的语言。结构化编程,也就是结构化程序设计。那的语言。结构化编程,也就是结构化程序设计。那么,什么是结构化程序设计呢?结构化程序设计有么,什么是结构化程序设计呢?结构化程序设计有什么好处?通过本小节的学习,读者可以得到这些什么好处?通过本小节的学习,读者可以得到这些问题的答案,同时会为学习以结构化程序设计为指问题的答案,同时会为学习以结构化程序设计为指导思想的导思
8、想的C语言程序设计打下一个良好的铺垫。语言程序设计打下一个良好的铺垫。北京源智天下科技有限公司1.3.1 1.3.1 结构化程序设计结构化程序设计结构化程序设计是荷兰科学家结构化程序设计是荷兰科学家E.W.Dijikstra在在1965年提出年提出的,其主要思想是通过分解复杂问题为若干简单问题的的,其主要思想是通过分解复杂问题为若干简单问题的方式降低程序的复杂性。它的主要观点是采用自顶向下、方式降低程序的复杂性。它的主要观点是采用自顶向下、逐步细化的程序设计方法,同时严格使用三种基本控制逐步细化的程序设计方法,同时严格使用三种基本控制结构构造程序。结构构造程序。三种基本控制结构是指顺序结构、选
9、择结构和循环结构。三种基本控制结构是指顺序结构、选择结构和循环结构。所有的程序结构都可以分解为这三个基本控制结构。所有的程序结构都可以分解为这三个基本控制结构。北京源智天下科技有限公司1.3.2 1.3.2 三种基本结构三种基本结构按照操作的执行顺序,程序可以分为三类基本结构:顺序按照操作的执行顺序,程序可以分为三类基本结构:顺序结构、选择结构和循环结构。结构、选择结构和循环结构。1996年,计算机科学家年,计算机科学家Bohm和和Jacopini证明:任何简单或复杂的算法都可以证明:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种结构组合而成。由顺序结构、选择结构和循环结构这三
10、种结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构,所以,这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计建议采用的结构。也是结构化程序设计建议采用的结构。北京源智天下科技有限公司1 1顺序结构顺序结构在顺序结构的程序里,各操作是按照它们出现的先后顺序执行的。在顺序结构的程序里,各操作是按照它们出现的先后顺序执行的。如下图所示,操作如下图所示,操作1和操作和操作2按自上而下地顺序执行。这是最按自上而下地顺序执行。这是最简单的一种基本结构。这个结构里只有一个入口点简单的一种基本结构。这个结构里只有一个入口点A和一个出和一个出口点口点B,其特点是从入口点,其特点是从入口点A
11、开始,按顺序执行所有操作,直开始,按顺序执行所有操作,直至出口点至出口点B处。事实上,所有的程序的总流程总是一个顺序结处。事实上,所有的程序的总流程总是一个顺序结构。构。北京源智天下科技有限公司2 2选择结构选择结构选择结构,也叫分支结构。选择结构的程序里存在一些分选择结构,也叫分支结构。选择结构的程序里存在一些分支,程序通过对一些条件的判断选择执行的分支。按照支,程序通过对一些条件的判断选择执行的分支。按照分支数,选择结构又可以分为单选择、双选择和多选择分支数,选择结构又可以分为单选择、双选择和多选择三种形式。三种形式。北京源智天下科技有限公司 双选择结构是最常见的,如下图所示,结构中有两个
12、分支,双选择结构是最常见的,如下图所示,结构中有两个分支,必须要执行其中一支;如果满足条件则执行操作必须要执行其中一支;如果满足条件则执行操作1,否,否则执行操作则执行操作2。2 2选择结构选择结构北京源智天下科技有限公司2 2选择结构选择结构单选择结构如下图所示,当双选择结构中某个分支为空时,单选择结构如下图所示,当双选择结构中某个分支为空时,就称为单选择结构。就称为单选择结构。北京源智天下科技有限公司 多选择结构如下图所示,有多个分支共存,程序根据多选择结构如下图所示,有多个分支共存,程序根据Type值来选择其中之一执行。值来选择其中之一执行。2 2选择结构选择结构北京源智天下科技有限公司
13、3 3循环结构循环结构在循环结构中,是反复地执行一系列操作,直到某条件为在循环结构中,是反复地执行一系列操作,直到某条件为假(或为真)时才终止循环。按照判断条件出现的位置,假(或为真)时才终止循环。按照判断条件出现的位置,可以分为可以分为while循环结构和循环结构和until循环结构。循环结构。北京源智天下科技有限公司 while循环结构中,先判断条件,如下图所示。如果循环结构中,先判断条件,如下图所示。如果A不大于不大于1,则直接退出循环体到达流程出口处;如果满足则直接退出循环体到达流程出口处;如果满足A大于大于1,执行,执行操作操作1,并且在操作,并且在操作1结束后返回到循环入口,重新判
14、断条件;结束后返回到循环入口,重新判断条件;如果如果A还是大于还是大于1,再次执行操作,再次执行操作1,再返回结构入口,再返回结构入口,如,如此反复。此反复。3 3循环结构循环结构北京源智天下科技有限公司until型循环结构中,在结构入口处先执行循环体,然后再型循环结构中,在结构入口处先执行循环体,然后再判断条件,如下图所示。当程序执行完操作判断条件,如下图所示。当程序执行完操作1后,判断后,判断A是否大于是否大于1。如果是,则再执行操作。如果是,则再执行操作1;然后再次判断;然后再次判断A是否大于是否大于1;如果结果仍然为是,则再次执行操作;如果结果仍然为是,则再次执行操作13 3循环结构循
15、环结构北京源智天下科技有限公司3 3循环结构循环结构在这两种结构中,操作在这两种结构中,操作1都可能被反复执行,直到都可能被反复执行,直到A的值不的值不大于大于1,才结束程序。同样,循环型结构也只有一个入,才结束程序。同样,循环型结构也只有一个入口点口点A和一个出口点和一个出口点B。合理地使用这三种基本结构,可以组合成复杂的高级结构;合理地使用这三种基本结构,可以组合成复杂的高级结构;而所有的复杂结构都可以分解为这三种基本结构。而所有的复杂结构都可以分解为这三种基本结构。北京源智天下科技有限公司1.3.3 1.3.3 算法描述方法算法描述方法当算法过程比较复杂时,单靠自然语言来描述算法将显得当
16、算法过程比较复杂时,单靠自然语言来描述算法将显得十分困难,让人难以准确理解。此时,需要借助其他的十分困难,让人难以准确理解。此时,需要借助其他的算法描述手段,主要有:算法描述手段,主要有:算法语言,有伪代码、各种程序设计语言、计算机语言等。算法语言,有伪代码、各种程序设计语言、计算机语言等。图形描述,如流程图和图形描述,如流程图和N-S图,图的描述应与算法语言的图,图的描述应与算法语言的描述对应;描述对应;形式语言,用数学的方法,可以避免自然语言的二义性。形式语言,用数学的方法,可以避免自然语言的二义性。北京源智天下科技有限公司1 1伪代码伪代码伪代码是介于程序语言和自然语言之间的算法描述,即
17、要伪代码是介于程序语言和自然语言之间的算法描述,即要具有自然语言通俗易懂的特点,还要能很容易地被转换具有自然语言通俗易懂的特点,还要能很容易地被转换为程序语言,这就要求伪代码具有清晰地逻辑结构,并为程序语言,这就要求伪代码具有清晰地逻辑结构,并且有准确的算法步骤。伪代码的形式有很多种,没有通且有准确的算法步骤。伪代码的形式有很多种,没有通用的规则,根据需要可以自行决定伪码的形式。用的规则,根据需要可以自行决定伪码的形式。在本书使用的伪代码一般为类在本书使用的伪代码一般为类C伪码,书写注重可读性和伪码,书写注重可读性和逻辑性。下面是上一小节直接排序算法的伪代码。该段逻辑性。下面是上一小节直接排序
18、算法的伪代码。该段伪代码已经细化到编程的每一小步,可以很容易使用伪代码已经细化到编程的每一小步,可以很容易使用C语言代替。语言代替。北京源智天下科技有限公司1 1伪代码伪代码算法开始:算法开始:设设i i值为值为0 0;当当i N 1i N 1 设设j j值为值为i i1 1;设设minmin等于等于i i;当当j N j stuArrayj stuArraymin stuArrayj 设设minmin的值为的值为j j;j j自增自增1 1;交换第交换第i i个元素和第个元素和第minmin个元素;个元素;i i自增自增1 1;算法结束算法结束北京源智天下科技有限公司1 1伪代码伪代码技巧:
19、在编程时,当设计好一个算法后,要都先将它们使技巧:在编程时,当设计好一个算法后,要都先将它们使用伪代码描述出来,再使用程序语言来实现。这样有利用伪代码描述出来,再使用程序语言来实现。这样有利于更有条理更有逻辑地书写程序语言,其作用就像写文于更有条理更有逻辑地书写程序语言,其作用就像写文章要先列好提纲一样。章要先列好提纲一样。北京源智天下科技有限公司2.2.程序流程图程序流程图程序流程图是算法的图形描述方式。它使用一些简单的几程序流程图是算法的图形描述方式。它使用一些简单的几何图形来表示各种不同性质的程序操作,使用流程线将何图形来表示各种不同性质的程序操作,使用流程线将各个图形连接起来,指示算法
20、的执行过程。由于流程图各个图形连接起来,指示算法的执行过程。由于流程图的符号统一,且画法简单,结构清晰,逻辑性强,便于的符号统一,且画法简单,结构清晰,逻辑性强,便于理解,因此成为描述程序流程的主要方法。下图中的图理解,因此成为描述程序流程的主要方法。下图中的图形是流程图中常用的一些标志。形是流程图中常用的一些标志。北京源智天下科技有限公司2.2.程序流程图程序流程图北京源智天下科技有限公司2.2.程序流程图程序流程图在在1.3.1小节介绍三种基本程序结构时,已经接触了流程图小节介绍三种基本程序结构时,已经接触了流程图的部分图形。将的部分图形。将1.2.2小节中的直接排序算法使用流程图小节中的
21、直接排序算法使用流程图来表示,如下图所示。来表示,如下图所示。北京源智天下科技有限公司2.2.程序流程图程序流程图北京源智天下科技有限公司2.2.程序流程图程序流程图由于本书中的程序都较短小,而程序流程图描述小型程序由于本书中的程序都较短小,而程序流程图描述小型程序时,能够发挥其简单灵活的优势,因此本书主要使用程时,能够发挥其简单灵活的优势,因此本书主要使用程序流程图来描述算法流程。序流程图来描述算法流程。北京源智天下科技有限公司3 3N-SN-S流程图流程图由于程序流程图使用流程线的导向来引导程序流程。当程由于程序流程图使用流程线的导向来引导程序流程。当程序流程较复杂时,框图中会常常有很多的
22、流程线,导致序流程较复杂时,框图中会常常有很多的流程线,导致逻辑杂乱无章,失去了流程图简洁清晰的优点。后来,逻辑杂乱无章,失去了流程图简洁清晰的优点。后来,当结构化程序设计方法日益流行后,两个美国学者当结构化程序设计方法日益流行后,两个美国学者I.Nassi和和B.Shneiderman基于结构化思想提出了一种基于结构化思想提出了一种新的流程图形式,被称为新的流程图形式,被称为N-S流程图,流程图,N和和S是两个发明是两个发明人名字的首字母。按照结构化设计的思想,所有的程序人名字的首字母。按照结构化设计的思想,所有的程序都可以分解成三种基本结构的组合。都可以分解成三种基本结构的组合。N-S流程
23、图为三种流程图为三种基本结构设计了特殊的结构图,并以它们为基础来描述基本结构设计了特殊的结构图,并以它们为基础来描述其余所有的算法。其余所有的算法。北京源智天下科技有限公司 下图为顺序结构的下图为顺序结构的N-S表示图。先执行操作表示图。先执行操作1,再执行操作,再执行操作2;操作;操作1的方框上方为结构入口,操作的方框上方为结构入口,操作2的方框下方为的方框下方为结构出口。结构出口。3 3N-SN-S流程图流程图北京源智天下科技有限公司3 3N-SN-S流程图流程图下图为双选择结构,省略其中之一即可得单选择结构。下图为双选择结构,省略其中之一即可得单选择结构。北京源智天下科技有限公司3 3N
24、-SN-S流程图流程图下图中,左图为下图中,左图为while循环结构,右图为循环结构,右图为until循环结构。循环结构。北京源智天下科技有限公司3 3N-SN-S流程图流程图N-S使用这几种图形的组合便可以得到所有算法的使用这几种图形的组合便可以得到所有算法的N-S流程流程图。所以,在图。所以,在N-S流程图中去掉了程序流程图中眼花缭流程图中去掉了程序流程图中眼花缭乱的流程线,并将整个程序流程放在一个大方框内,使乱的流程线,并将整个程序流程放在一个大方框内,使程序流程更清楚。下图是直接排序算法的程序流程更清楚。下图是直接排序算法的N-S流程图。流程图。北京源智天下科技有限公司3 3N-SN-
25、S流程图流程图北京源智天下科技有限公司1.4 1.4 综合练习综合练习1、使用伪码描述使用冒泡排序法将序列从小到大排序的算、使用伪码描述使用冒泡排序法将序列从小到大排序的算法,并画出其程序流程图或法,并画出其程序流程图或N-S流程图。流程图。【提示】冒泡排序的基本思想是,对尚未排序的各元素从【提示】冒泡排序的基本思想是,对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素。经过第一轮比较排序相反),若逆序就交换这两元素。经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的后便可把最大(或最
26、小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了要求的顺序。方法把剩下的元素逐个进行比较,就得到了要求的顺序。北京源智天下科技有限公司1.4 1.4 综合练习综合练习算法的伪码描述如下:算法的伪码描述如下:算法开始:算法开始:设设i i值为值为N N1 1;当当i 0i 0 设设j j值为值为0 0;当当j i j arrayj arrayj arrayj11 交换第交换第j j个元素和第个元素和第j j1 1个元素;个元素;j j自增自增1 1;i i自减自减1 1;算法结束算法结束北京源智天下科技有限公司1.4 1.4 综合练习综合练习程序流程图如右图所示。程序流程图如右图所示。北京源智天下科技有限公司1.4 1.4 综合练习综合练习N-S流程图如右图所示。流程图如右图所示。