《【教学课件】第1章程序设计与软件开发基础概述.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第1章程序设计与软件开发基础概述.ppt(46页珍藏版)》请在三一办公上搜索。
1、第1章 程序设计与软件开发基础概述,第一节 基础知识回顾与软件工程第二节 算法与数据结构第三节 C语言介绍第四节 常用C开发工具,1/46,C语言程序设计 龙昭华主编,第一节 基础知识回顾与软件工程,(第一章 程序设计与软件开发基础概述),2/46,一、各种进制之间数的转换,十进制转换成二进制:对于整数部分采用除2取余法,用2逐次去除十进制数,直至商为0为止。先得到的余数为二进制的低位数,最后得到的余数为二进 制的最高位的数。十进制数转换成八进制、十六进制:方法同转换成二进制,只是将2分别改成8 和16。二进制、八进制、十六进制数转换成十进制数:使用按权展开、逐项相加的方 法。二进制转换成八进
2、制、十六进制:因为23=8、24=16,所以3位二进制对应一位 八进制,4位二进制对应一位十六进制。八进制、十六进制转换成二进制:上面的逆过程,将1位八进制数转成3位二进 制数,将1位十六进制数转成4位二进制数即可。例如:(10001)B=1*24+1=(17)D=(21)O=(11)H(20)D=(10100)B=(24)O=(14)H(2B)H=2*16+11=(43)D=(53)O=(101011)B,二、原码、反码、补码、ASCII码,第一节 基础知识回顾与软件工程,3/46,(第一章 程序设计与软件开发基础概述),原码:在原码中规定正数符号位为0,负数符号位为1,后面的数据位则表示该
3、 数的绝对值。如:+15原=0000000000001111B,-15B。反码:在反码中规定正数的反码与原码相同;负数的反码由该负数的原码进行 计算:原码符号位不变,数据位按位取反(即0变为1,1变为0)。如:+15反=0000000000001111B,-15B。补码:正数的补码等于原码;负数的补码等于该负数的反码加1,即该数绝对 值的原码按位取反加1。如:+15补=+15原=0000000000001111B,-15B。ASCII 码:无符号整型数据值即为ASCII码值。标准ASCII码取值 0127。扩展ASCII码取值 128255。如:字母AZ的ASCII码值为6590。注意:在计算
4、机中,数值数据是用补码方式表示的,而字符数据 是用ASCII码表示的。,三、编程语言,第一节 基础知识回顾与软件工程,4/46,第一代语言又称“机器语言”,是计算机诞生和发展初期使用的语言,它是用二 进制形式编码的,由CPU可以识别的0、1序列构成指令码。第二代语言是“汇编语言”,它开始于20世纪50年代初,是用助记符来表示每一 条机器指令。第一代语言和第二代语言都是低级语言。第三代语言即“高级语言”,它起源于20世纪50年代中期,与人们的自然语言和 数学语言更接近,可读性强,编程方便。它告诉计算机怎么做。如:BASIC,FORTRAN、COBOL、PASCAL、C等。C语言也是中级语言,它把
5、 高级语言的基本结构和语句与低级语言的实用性结合起来。第四代语言称为“非过程化语言”,又称为“面向对象的语言”。它告诉计算机做 什么。不必关心问题的解法和处理过程的细节描述,只要说明所要完成的 加工和条件,指明输入数据和输出形式,就能得到要的结果,其他工作由 系统来完成。如:C+、Visual C+、DELPHI等。第五代语言,堪称智能性语言。PROLOG语言是第五代语言的代表,他广泛运用 于抽象问题求解、数据逻辑、公式处理、自然语言理解、专家系统和人工 智能的许多领域。,(第一章 程序设计与软件开发基础概述),四、软件工程,第一节 基础知识回顾与软件工程,5/46,2、软件工程概念 软件工程
6、是采用工程的概念、原理、技术和方法来维护和开发软件,把经时间考验证明正确的管理技术和当前能够得到的最好的技术方法结合起来。,1、软件危机的表现 软件复杂性飞速增长,错误率大增 落后编程方式导致软件成本极高 手工开发周期长 维护工作量大,软件工程强调使用生命周期的方法和各种结构化分析与设计技术,用系统的观点来分解问题,然后再分别解决各个子问题。,(第一章 程序设计与软件开发基础概述),3、软件开发模型,第一节 基础知识回顾与软件工程,6/46,(1)、瀑布模型:支持结构化软件开发。,(2)、演化模型:多次迭代逐步修正。,(3)、螺旋模型:瀑布模型+演化模型+风险分析。,(4)、喷泉模型:主要用于
7、面向对象开发过程,支持复用,具有迭代和无间歇特征。,(5)、增量模型:快速原型模型的一种。,(第一章 程序设计与软件开发基础概述),第二节 算法与数据结构,7/46,一、数据结构的概念,程序:程序实质是完成既定任务的指令序列。而编写程序的工具是语言。程序=数据结构+算法+程序设计方法+语言工具环境 算法是灵魂,是问题求解过程中的精确描述;数据结构是加工对象;语言是工 具;编程需要采用合适的方法。数据:是对客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符 号的总称。数据元素:是数据的基本单位,在程序中通常作为一个整体进行考虑和处理。一个数 据元素可由若干个数据项组成。数据项是数据
8、的不可分割的最小单位。如一本 书的书目为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个 数据项。数据对象:是性质相同的数据元素的集合,是数据的一个子集。数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。结构:数据元素相互之间的关系称为结构。数据的逻辑结构:数据元素间的逻辑上的联系称为数据的逻辑结构。数据结构中的元 素之间的关系集合,反映的是数据的逻辑结构。数据结构研究的内容着重于数 据的逻辑结构,因此经常把逻辑结构称为数据结构。数据的存储结构:数据的逻辑结构在计算机存储设备中的映像称为数据的存储结构。,(第一章 程序设计与软件开发基础概述),二、数据结构的分类,第二节
9、算法与数据结构,8/46,根据数据元素之间关系的不同特性,数据结构有4类基本结构:集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。线性结构:结构中的数据元素之间存在一个对一个(简记为1:1)的关系。树形结构:结构中的数据元素之间存在一个对多个(简记为1:N)的关系。图状(网状)结构:结构中的数据元素之间存在多个对多个(简记为M:N)的关系。,(第一章 程序设计与软件开发基础概述),三、算法概述,第二节 算法与数据结构,9/46,算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表 示一个或多个操作。算法解决的是“做什么”和“怎么做”的问题,程序中的
10、操作语句 就是算法的体现。计算机算法可分为两大类:数值运算算法、非数值运算算法。数值运算算法:数值运算的目的是求数值解,如:求方程的根、函数的定积分等。非数值运算算法:应用十分广泛,如:图书检索、人事管理、行车调度管理、排序 算法等。常用算法:递推化算法(牛顿迭代法、二分法、梯形法、穷举法等);排序算法(选择法、冒泡法);查找算法(顺序查找、折半查找);有序数列的插入、删除操作;存储区的动态分配与释放,单向线性链表的建立、查找、插入、删除操作;初等数论问题求解的有关算法(最大公约数、最小公倍数、素数等);递归算法(求最大公约数、阶乘等);字符串的处理(字符和字符串的插入、删除、字符串的连接、比
11、较等)。,(第一章 程序设计与软件开发基础概述),算法具有5个特性:,第二节 算法与数据结构,10/46,有穷性:对任何合法的输入值,算法中每个步骤由计算机执行的次数及时间 都是有限的。确定性:算法中每个步骤含义明确,无二义性。在任何条件下,相同的输 入,必有相同的输出。可行性:算法中描述的操作都可通过有限次的基本运算来实现。输入:一个算法应具有零个或多个输入。(无输入情况:如求:1*2*3*4*5)。输出:一个算法应具有一个或多个输入。,(第一章 程序设计与软件开发基础概述),算法的设计目标:,第二节 算法与数据结构,11/46,正确性:设计的算法应当满足具有输入、输出和加工处理等明确的无歧
12、义性 的描述的具体问题的需求。验证正确性通常有4个层次:程序不含语法错误;程序对于几组输入数据能够得出满足规格说明要求的结果;程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能 够得出满足规格说明要求的结果;程序对于一切合法的输入数据能够得出满足规格说明要求的结 果。一般情况至少通过第层的验证。可读性:算法主要是为了阅读与交流,其次才是机器执行。可读性好有助于 人对算法的理解;难懂的程序易于隐藏较多错误,难以调试和修改。健状性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不会 产生莫名其妙的输出结果。效率与低存储量的需求:主要指算法执行时的最长时间与所需的最大存储空 间。,(第
13、一章 程序设计与软件开发基础概述),四、算法的表示方法,第二节 算法与数据结构,12/46,1、用自然语言表示算法:自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。除了简单问题外,一般不用自然语言描述算法。,(第一章 程序设计与软件开发基础概述),例 1.1:用自然语言写出求,的算法。,解:算法表示如下:S1:sign=1/*数值的符号*/S2:sum=1/*累加和*/S3:deno=2/*分母值*/S4:sign=(-1)*signS5:term=sign*(1/deno)/*某一项的值*/,S6:sum=sum+termS
14、7:deno=deno+1S8:若deno100返回S4,否则转S9S9:输出sum,2、用流程图表示算法,第二节 算法与数据结构,13/46,用流程图表示算法,形象直观,比较清楚地显示出各个框之间的逻辑关系,易于理解。但流程图占用篇幅较多,当算法较复杂时,画流程图既费时,又不方便。但必须掌握。美国国家标准化协会ANSI规定了一些常用的流程图符号,并已被世界各国程序工作者采用:,三种基本结构:,为了解决程序设计混乱的问题,1966年提出了三种基本结构:顺序结构、选择结构、循环结构,然后由这些基本结构按一定规律组成一个算法结构,整个算法结构是由上而下将各个基本结构顺序排列起来的。使用这三种基本结
15、构顺序组成的算法结构,可以解决任何复杂的问题,并且是“结构化”的算法。,(第一章 程序设计与软件开发基础概述),顺序结构:,第二节 算法与数据结构,14/46,顺序结构是程序设计中最简单的一种基本结构。如右图所示,形象地描述了一个最简单的顺序结构:图中虚线框内是一个顺序结构。其中A和B两个框是顺序执行的,即在执行完A框所指定的操作后,必然接着执行B框所指定的操作。,(第一章 程序设计与软件开发基础概述),选择结构(或称选取结构,或称分支结构):,第二节 算法与数据结构,15/46,如下图所示,虚线框内是一个选择结构。此结构必包括一个判断框,根据给定的条件p是否成立,而选择执行A框或B框。注意:
16、无论条件p是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。A或B两个框中可以有一个是空的,即该空框不执行任何操作。,(第一章 程序设计与软件开发基础概述),循环结构(或称重复结构):,第二节 算法与数据结构,16/46,循环结构即反复执行某一部分的操作,分为当型(while型)循环结构和直到型(until型)循环结构两类。,当型(while型)循环结构:如右图所示,虚线框内是一个while型结构。它的功能是当给定的条件p成立时,执行A框操作,执行完A后再判断条件p是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p条件不成立为止,此时不执行A框,而是从b点脱离循环结
17、构。,(第一章 程序设计与软件开发基础概述),直到型(until型)循环结构:,第二节 算法与数据结构,17/46,如右图所示,虚线框内是一个until型结构。它的功能是先执行A框,然后判断给定的条件p是否成立,如果条件p成立,再执行A框,然后再对条件p作判断,如果条件p仍然成立,又执行A框,如此反复执行A框,直到某一次p条件不成立为止,此时不执行A框,而是从b点脱离本循环结构。,(第一章 程序设计与软件开发基础概述),三种基本结构的共同特点:,第二节 算法与数据结构,18/46,只有一个入口只有一个出口结构内的每一部分都有机会执行到结构内不存在“死循环”(无终止的循环),(第一章 程序设计与
18、软件开发基础概述),其他结构:,第二节 算法与数据结构,19/46,事实上,基本结构不一定只限于上面三种,只要具有上述基本结构的4个特点的结构都可以作为基本结构。人们可以运用三种基本结构定义自己派生的基本结构,并由这些基本结构组成结构化程序。如下两图所示。,(第一章 程序设计与软件开发基础概述),例 1.2:用流程图表示出求,第二节 算法与数据结构,20/46,的算法。,解:,(第一章 程序设计与软件开发基础概述),3、用NS盒流程图表示算法,第二节 算法与数据结构,21/46,既然用基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本结构之间的流程线就属多余的了。1973年美国两学者I.
19、Nassi和B.Shneiderman提出了一种新的流程图形式,并以他们的名字命名为NS结构化流程图。这种流程图完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框内还可以包括其他的从属于它的框,即由一些基本的框组成一个大框。这种NS流程图十分适合结构化程序设计,因而很受欢迎。,三种基本结构对应的NS流程图符号:,顺序结构 选择结构 当(while)型循环结构 直到(until)型循环结构,(第一章 程序设计与软件开发基础概述),例 1.3:用NS流程图表示求素数的算法。,第二节 算法与数据结构,22/46,解:素数是指除了1和该数本身之外,不能被其他任何整数整除的数。实际上,若要判断一
20、个正整数m是否为素数,只要将2到 间的每一个整数去除m,若有一个能整除m,则m不是素数,若其间的所有整数都不能整除m,则m为素数。,(第一章 程序设计与软件开发基础概述),例 1.4:用NS流程图表示出判定20002500年中的每一年是否闰年,输出结果的算法。,第二节 算法与数据结构,23/46,解:,闰年的条件:能被4整除,但不能被100整除的年份都是闰年。如:1996年、2004年是闰年。能被100整除,又能被400整除的年份是闰年。如:1600年、2000年是闰年。不符合这两个条件的年份不是闰年。,(第一章 程序设计与软件开发基础概述),4、用伪代码表示算法,第二节 算法与数据结构,24
21、/46,(第一章 程序设计与软件开发基础概述),用流程图和NS图表示算法,直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的。因此,流程图适宜表示一个算法,但在设计比较复杂的算法过程中使用不是很理想。为了设计算法时简便,常常用伪代码表示。伪代码表示算法的优点:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章,自上而下的写下来,每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,也比较好懂,便于向计算机语言(即程序)过渡。伪代码的书写格式比较自由,可以随手写下来,容易表达出设计者的思想,易于修改。伪代码表示算法
22、的缺点:用伪代码写算法不如流程图或NS图直观,可能还会出现逻辑上的错误。,例 1.5:用伪代码表示“打印20002500年中的每一年是否闰年”的算法。,第二节 算法与数据结构,25/46,解:用伪代码表示的算法如右边所示:,(第一章 程序设计与软件开发基础概述),5、用计算机语言表示算法,第二节 算法与数据结构,26/46,要完成一项工作,包括设计算法和实现算法两部分。前面讲的只是描述算法,要得到运算结果,必须实现算法。实现算法的方法不止一种:计算器、心算、笔算等,我们这里将的是使用计算机来实现算法。但是计算机无法识别流程图、自然语言、伪代码等,只有将算法使用计算机语言编写程序才能被计算机执行
23、。计算机语言程序实际上仍然只是描述了算法,并未实现算法,只有运行程序才能实现算法。本书所讲的C语言程序设计,实际上就是使用C语言来描述具,体算法,上机运行就是实现用C所描述的算法。有关C语言的使用规则正是我们即将要学习的内容。例 1.6:用C语言表示“打印x绝对值”的算 法。解:用C语言表示的算法如右边所示:,main()int x=10;if(x0)printf(“%d”,x);else printf(“%d”,x);,(第一章 程序设计与软件开发基础概述),五、结构化程序设计方法,第二节 算法与数据结构,27/46,(第一章 程序设计与软件开发基础概述),一个结构化程序就是用高级语言表示的
24、结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、阅读、修改和维护。结构化程序设计强调程序设计风格和程序结构规范化,提倡清晰的结构。结构化程序设计方法的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。采用以下方法就可以保证得到一个结构化的程序:自顶向下;进行总体设计。逐步细化;进行细节设计。模块化设计;把复杂的问题“分而治之”,每个模块功能独立,其耦合性越少越好。结构化编码。设计好结构化的算法后,还要善于进行结构化编码。,第1章 程序设计与软件开发基础概述-习题1,28/46,C语言程序设计 龙昭华主编,习 题(一)
25、*复习本章全部内容,预习本章剩余内容和第二章内容。1.1 分别使用流程图、伪代码写出求 的根的算法。分别考虑:有两个不等的实根;有两个相等的实根;无实根。1.2 用NS图表示“将100200之间的素数打印出来”的算法。,第三节 C语言介绍,29/46,一、C语言的产生与发展,(第一章 程序设计与软件开发基础概述),C 语言是1972年由美国贝尔实验室的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11 计算机上使用。C语言可以追溯到1960年出现的ALGOL60。ALGOL60是面向问题的高级语言,不宜用来编写系统程序。1963年英国剑桥大学在ALGOL6
26、0的基础上推出了接近硬件一些的CPL(Combined Programming Language),但它规模较大,难以实现。1967年剑桥大学又对CPL语言做了简化,推出了BCPL(Basic Combined Programming Language)语言。在1970年,AT&T 贝尔实验室的 Ken Thompson根据BCPL语言又一次做了简化,设计出较先进的并取名为 B的语言。但B语言过于简单,功能有限。最后导了C语言(取BCPL的第二个字母)的问世。,随着微型计算机的日益普及,出现了许多C 语言版本。由于没有统一的标准,使得这些C 语言之间出现了一些不一致的地方。为了改变这种情况,美
27、国国家标准研究所(ANSI)为C 语言制定了一套ANSI标准,成为现行的C语言标准。,二、C语言的特点,第三节 C语言介绍,30/46,(第一章 程序设计与软件开发基础概述),C 语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如UNIX、DBASE PLUS、DBASE 都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,象PC-DOS、WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:1.C是中级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象汇编语言一样对位、字节和
28、地址进行操作,而这三者是计算机最基本的工作单元。2.C是结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C语言功能齐全:C 语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C 语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。4.C语言适用范围大:C 语言还有一个突出的优点就是适合于多种操作系统
29、,如DOS、UNIX,也适用于多种机型。5.语法限制不太严格,程序设计自由度大。因此C程序员要对程序设计更熟悉一些。6.生成目标代码质量高,程序执行效率高。7.C语言可移植性好、硬件控制能力高、表达和运算能力强。,三、C程序介绍,第三节 C语言介绍,31/46,(第一章 程序设计与软件开发基础概述),1.C程序是由函数构成的。一个C源程序至少包括一个main()函数,也可以包含一个main()函数和若干个其他函数。因此函数是C程序的基本单位。被调用的函数可以是系统提供的库函数,也可以是自己编写的函数。C的函数相当于其他语言的子程序,编写C程序,就是编写一个个函数,因此可以说C是函数式的语言。A
30、NSI C提供了100多个库函数,Turbo C2.0和MS C4.0提供了300多个库函数。,2.C程序的一个函数由两部分组成。函数的首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。一个函数名后面必须跟一对圆括号,函数参数可以没有。函数首部结尾无分号“;”。函数体,即函数首部下面的花括弧 内的部分。如果一个函数内有多个花括弧,则最外层的一对为函数体的范围。函数体一般包括:声明部分:在这一部分中定义所用到的变量(或调用的函数)。执行部分:由若干个语句构成。注意:空函数也是合法的。空函数既无声明部分,又无执行部分。,3.一个C程序总是从main函数开始执行,并
31、在main函数中结束,第三节 C语言介绍,32/46,(第一章 程序设计与软件开发基础概述),不论main函数在整个程序中的位置如何,一个C程序总是从main函数开始执行的,main函数执行完毕,也标志着整个C程序执行完毕。4.C程序书写格式自由 C程序没有行号,一行内可以写几个语句,一个语句可以分写在多行上。5.每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分,分号不可少,即使是程序中最后一个语句也应该包含分号。6.C语言本身没有输入输出语句。输入和输出操作是又库函数scanf和printf等函数来完成的。由于输入输出操作牵涉到具体的计算机设备,把输入输出操作放在函数中处理
32、,就可以使C语言本身的规模较小,编译程序简单,很容易在各种机器上实现,程序具有可移植性。如输出:Hello,How do you do!则用:printf(“Hello,How do you do!”);7.可以用/*/对C程序中任何部分作注释。,8.#include的作用,第三节 C语言介绍,33/46,(第一章 程序设计与软件开发基础概述),在许多C语言系统软件中,程序的第一行有#include“./src/card.h”或#include,它的作用是将事先定义的各种环境进行加载,保证编写的程序代码能正确运行。文件stdio.h或card.h称为头文件。如果头文件放在C系统缺省目录中(一般
33、为include目录),则该文件在加载时,直接写文件名,并用一对尖括号括起来。如果头文件不在C系统缺省目录中,则必须在文件名前加上路径,并用一对双引号“”括起来。使用双引号“”时,它将首先在当前目录或指定目录寻找头文件,如果没有找到,则再到C缺省目录寻找。,9.C语句分类,第三节 C语言介绍,34/46,(第一章 程序设计与软件开发基础概述),控制语句:它完成一定的程序流程控制能力。C语言有9种控制语句:if()else(条件语句)for()(循环语句)while()(循环语句)do while()(循环语句)continue(结束本次循环)break(中止执行switch或循环语句)swit
34、ch(多分支选择语句)goto(转向语句)return(从函数返回语句)函数调用语句:由一个函数加一个分号就构成一个函数调用语句。空语句:它是只有一个分号的语句,什么也不做。复合语句:花括号内的所有语句总称为一个复合语句。表达式语句:表达式语句是指由一个表达式构成的语句,表达式的最后加一个分号就构成了表达式语句,C语言程序中的语句大多数都是表达式语句。,10.C语言的输入输出函数,第三节 C语言介绍,35/46,(第一章 程序设计与软件开发基础概述),C语言没有输入输出语句,主要由库函数完成,库函数在stdio.h中定义,例如:putchar(输出字符)如:char ch=A;putchar(
35、ch);getchar(输入字符)如:char ch;ch=getchar();printf(格式输出)如:printf(“Very Good!”);scanf(格式输入)如:int n;scanf(“%d”,11.C语言关键字,第三节 C语言介绍,36/46,(第一章 程序设计与软件开发基础概述),关键字又称保留字,它是ANSI C保留下来的有专门目的的名字,它不能被程序员重复命名。使用C语言编程时,不能定义与关键字相同的变量名、函数名等。C语言中的常用的关键字有以下30多个:类型名:int,char,float,double,short,long,unsigned,viod 存储类型:au
36、to,static,register,extern 控制语句:if,while,do,goto,break,continue,for,default,case,switch,return,else 类型标识符:struct,union,enum 其他:typedef,sizeof,signed,const,volatile 另外,Turbo C2.0扩展关键字有:asm,_cs,_ds,_es,_ss,cdecl,far,near,huge,interrupt,pascal,12.C语言的标识符,第三节 C语言介绍,37/46,(第一章 程序设计与软件开发基础概述),所谓标识符,是指常量、变量
37、、语句标号以及用户自定义函数的名称等。标识符的命名必须遵循以下原则:所有标识符必须由一个字母(az,AZ)或下划线(_)开头。标识符除开头的其它部分可以用字母、下划线或数字(09)组成。不要太长。在IBM-PC的MSC系统中取8个字符,Turbo C允许32个字符。不要与C语言中的库函数名、类型名相同。不能使用C语言中的关键字。如do、for、int等。大小写字母表示不同意义,即代表不同的标识符。例如:合法的标识符 不正确的标识符 smart 5smart _decision bomb?key_board key.board FLOAT float Year2008 a%,例 1.7:,第三节
38、 C语言介绍,38/46,(第一章 程序设计与软件开发基础概述),#include/*包含文件说明*/main()/*主函数*/int max(int x,int y);/*声明部分,函数声明*/int a,b,c;/*定义变量*/*执行部分*/scanf(“%d,%d”,/*将z的值返回,通过max带回调用处*/,例 1.8:打印图案。,第三节 C语言介绍,39/46,(第一章 程序设计与软件开发基础概述),#include/*包含文件说明*/void main(void)/*主函数*/clrscr();/*清屏*/printf(“AAAAAAAAAAAA”);printf(“AAAAAAA
39、AAA”);printf(“AAAAAAAA”);printf(“AAAAAA”);printf(“AAAA”);printf(“AA”);printf(“A”);,四、TurboC源程序的一般形式,第三节 C语言介绍,40/46,(第一章 程序设计与软件开发基础概述),包含文件 子函数类型声明 全程变量声明 main()局部变量声明 sub1()局部变量声明,sub2()局部变量声明.subN()局部变量声明,其中sub1(),.,subN()代表用户定义的子函数,程序体指Turbo C提供的任何库函数调用语句、控制流程语句或其它用子函数调用语句等。,五、C语言编程风格,第三节 C语言介绍,
40、41/46,(第一章 程序设计与软件开发基础概述),1.格式缩进。缩进的大小是为了清楚的定义一个块的开始和结束。最好使用8个缩进字符,当然也可以使用4个缩进字符。可直接使用Tab缩进8个字符。如果你的程序有3个以上的缩进的时候,你就应该修改你的程序。程序嵌套太多,不利于阅读。2.花括号的位置。一般情况下,将开始的花括号放在一行的最后,而将结束的花括号放在一行的第一位。当然也可以将开始的花括号放在一行的第一位。但是,命名函数时,开始的花括号都是放在下一行的第一位的。3.命名系统。C是一种简洁的语言,那么,命名也应该是简洁的。描述性名字对全局变量来说是必要的,但局部变量的命名应该短小精悍。4.函数
41、处理。函数应该短小而迷人,而且它只作一件事情。函数的局部变量的个数一般不应该超过5-10个,否则分割成更小的函数。5.注释。在有限的注释里,尽可能多的说明你的代码做些什么,而不是注释怎么做的。一般将注释写在函数前,告诉别人它做些什么事情,和可能为什么要这样做。假如这个函数确实很复杂,你需要在其中有部分的注释,则请分割成小函数。6.字母书写规范。程序一般用小写字母书写。变量名、函数名等一般用小写字母书写。符号常量一般用大写字母书写。7.在Turbo C中,要严格区分大、小写字母。相同字母的大、小写代表不同的变量。,第四节 常用C开发工具,42/46,一、C程序的上机步骤,(第一章 程序设计与软件
42、开发基础概述),为了使计算机能按照人们的意志进行工作,必须根据问题的要求,编写出相应的程序。所谓程序,就是一组计算机能识别和执行的指令。用高级语言编写的程序称为“源程序”。计算机只能识别和执行由0和1组成的二进制的指令,源程序必须通过“编译程序”翻译成二进制形式的“目标程序”。最后,将该目标程序与系统的函数库和其他目标程序连接起来,形成可执行的目标程序。,二、Turbo C 2.0,第四节 常用C开发工具,43/46,(第一章 程序设计与软件开发基础概述),Turbo C 是美国Borland 公司于1987年首次推出的产品,而Turbo C 2.0 则是该公司1989年出版的。Borland
43、 公司后来又推出了面向对象的程序软件包Turbo C+,它继承发展Turbo C 2.0 的集成开发环境,并包含了面向对象的基本思想和设计方法。1991年为了适用Microsoft 公司的Windows 3.0 版本,Borland 公司又将TurboC+作了更新,即Turbo C 的新一代产品Borlandc C+。TurboC2.0的使用步骤:首先安装或拷贝TurboC2.0系统到计算机相应目录,如c:tc20。调用TurboC程序。执行c:tc20tc.exe即可。设置环境目录。执行Options-Directories即可。它规定编译、连接所需文件的路径,设置好后应执行Save Opt
44、ions将配置存盘。具体有下列各项需要配置(至少前4项):Include directories 包含文件的路径,多个子目录用“;”分开。Library directories 库文件路径,多个子目录用“;”分开。Output directoried 输出文件(.OBJ,.EXE,.MAP文件)的目录。Turbo C directoried Turbo C 所在的目录。Pick file name 定义加载的pick文件名,如不定义则从current pick file中取。编辑源文件。执行Edit即可。生成*.c文件。编译源文件。执行Compile-Compile to OBJ即可。生成*.
45、obj文件。生成可执行文件。执行Compile-Link EXE file即可。生成*.exe文件。执行可执行文件。注意:也可直接执行Run-Run命令运行程序。也可执行Compile-Make EXE file完成obj和exe的生成。,三、Microsoft C,第四节 常用C开发工具,44/46,(第一章 程序设计与软件开发基础概述),Microsoft C是微软公司为IBM系列微机开发的C编译系统,MS C6.0提供了多个库函数。MS C6.0命令方式的用法如下:编辑C源程序。可用任何编辑系统,其文件为*.c,如:f.c。编译和连接。使用CL命令即可,CL是Compile和Link的第
46、一个字母。用法为:CL f.c 编译和连接完成后生成*.exe文件,这里即f.exe。执行程序。在DOS命令行输入文件名即可。这里如:f,四、Unix下的标准C,第四节 常用C开发工具,45/46,(第一章 程序设计与软件开发基础概述),Unix操作系统下运行C程序的步骤如下:编辑源程序。在Unix中可用文本编辑程序ed或屏幕编辑程序vi编辑源程序。其文件名为:*.c,如f.c。编译。调用C编译程序cc对源文件进行编译。如:cc f.c 编译后生成*.o文件,表示目标文件(*.obj)。这里生成:f.o。连接。将目标程序和库函数或其他目标程序连接成可执行的目标程序。在Unix中,连接是由cc自动完成的。最后得到的可执行文件系统自动确定为:a.out。如果不想内定为a.out,也可以在编译时自己指定可执行文件名。如这里指定为:f.out。其命令为:cc-o f.out f.c 执行程序。只需键入可执行文件即可。a.out(系统缺省名)或 f.out(自定名),第1章 程序设计与软件开发基础概述-习题2,46/46,C语言程序设计 龙昭华主编,习 题(二)*复习本章全部内容,预习第二章内容。1.3 请参照本章例题,编写一个C程序,输出以下信息:*Very Good!*1.4 上机运行本章习题1.3的程序,熟悉Turbo C2.0环境。,