1.程序通俗地说,程序就是完成某项任务或事务的一种既1.2结构化程序设计1.2.1算法和程序事实上,在日常生活中的许多事情都有一定的程序。例如,我们开车需要经历下面几个有顺序的动作方进入车厢;2.算法所谓算法,就是为完成某项任务或事务而采用的方就上面开车的例子而言,为达到开车出行的目的,需要按顺序经过若干步骤才能实现,并且在每个步骤中还要将它的实现方法考虑进去。例如,如何准备好车的钥匙,如何找到停车的位置等。算法可以有多种描述方式,例如,上面采用的是自3.程序设计程序设计就是人们编制计算机程序的工作。1.结构化程序设计思想结构化程序设计的基本含义是指一个系统由层次化的程序模块构成,每一个模块只有一个入口和出口,每一个模块只归某个上级模块调用,有模块联结的准则和构造模块的标准,并且用系统结构图来表达系统的结构,尽可能用最优的方式将系统内各个部分组织起来,而不是用若干个程序去拼凑。1.2.2结构化程序设计的思想和方法2.结构化程序设计方法(1)程序设计时,应先考虑总体后考虑细节,先考虑全局目标后考虑局部目标。即先对问题进行仔细分析,确定其输入、输出数据,写出程序运行的主要过程和任务;然后从大的功能方面把一个问题的解决过程分成几个子问题,每个子问题形成一个模块。(2)对于复杂问题,先设计分解成一些子问题,然后逐步细节化,直到整个问题可以用程序设计语言明确(3)把一个较大的程序划分为若干子程序,每一个子程序模块解决一个独立的功能;每一个子模块又可根据需要继续划分为更小的子模块使程序具有层次结需要注意的是运用这种编程方法,考虑问题必须先(4)结构化编码的显著特点是代码和数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维下面以求解2个整型数据的平均值为例,说明结构首先根据题目要求确定最终的目标,即求解2个整型数据的平均值。为了达到这个目标,必须先确定一系列子目标:如何得到这2个数?如何计算出平均值?再如何显示它的平均值?事实上就是把这个最终目标进行了分解。当解决了所有子目标后,最终目标也就实现了。而每一个子目标又需要再进行仔细考虑,即根据需要逐步细化。分析和分解的结果可用方框图的方式来表达,见图1.1。图1.1求解2个整型数据平均值的系统框图在这一节中,通过实例向读者阐明一个简单的程序是如何设计出来的,使读者对程序设计有一个初步的认识,而不仅仅是程序结构和代码本身。当然,要想真正地掌握还要通过后面的深入学习,在这里前面已经阐述了结构化程序设计的方法,一般来说完成一个程序的设计主要包括下面41.3编写一个简单的C语言程序1.3.1程序设计的一般方法这里仍以计算2个整型数的平均值为例,说明这4个1.分析问题在这一步骤中,首先要分析出问题最后需要输出的是什么(即需求是什么),已知的输入又是什么(即所给的条件是什么)。也就是说,首先要把问题弄得更清楚、更明确些,然后据此定义出表示输输入2个待计算的整型数据,使用变量inumber1,inumber2输出2个整型数的平均值,使用变量average表示其次要寻找一种方法实现从输入到输出的转换,也就是找到一种方法,经过有限步的处理能从输入中获取需要的结果并输出。这也就是前面提到的,如何将总目标分解成一系列子目标,再一一解决这些子目标,最后得解。需要说明的是,人们解决问题的方法是多种多样的,程序设计并没有一个标准的答案,只是追求一种相对比较合理、比较圆满的解决问题的途径而已。就上例而言,使用的方法是首先计算2个整型数据2.构造问题基本模型和求解步骤这一步骤实际上是把第一步骤中的分析工作更加细化,把复杂的问题分解为相对简单的问题然后再逐步细化。也就是将解决问题的过程按顺序一步一步地分解出来。分解和描述如图1.2所示。3.模块的代码实现(1)如何得到2个整型数据:(从外部输入2个整型数据)为了使程序具有通用性,设定程序可以通过键盘输入任意2个整型数。根据该功能要求,考虑可以直接使用C语言提供的标准输入函数来实现。scanf(“%d%d”,&inumber1,&inumber2);图1.2求解两个整型数据平均值的系统分解框图(2)如何计算平均值:(先求和,①先求和。我们用一个变量sum来保存2个整型数相加的和:sum=inumber1+inumber2;②再求平均值(以实数形式表示该平均值):average=sum/2.0;(3)如何输出得到的结果:(可以按某种格式输根据这个功能需求,同样可以直接使用C语言提供的标准输出函数以实数形式输出该平均值:printf(AVERAGE=%f\n,average);在完成了每个细节模块的编写之后,将各个部分连接成一个完整的程序雏形。事实上,一般的程序从宏观上看它们都是由三段式构成的,如图1.3所示。图1.3程序三段式例题1.1程序代码如下:/*本函数计算2个整型数的平均值*/#includestdio.hmain(){/*变量声明及初始化-----数据输入*/intinumber1,inumber2,sum;floataverage;printf(Pleaseentertwonumbers:);scanf(%d%d,&inumber1,&inumber2);/*求解平均值-----数据处理*/sum=inumber1+inumber2;average=sum/2.0;/*输出平均值-----数据输出*/printf(AVERAGE=%f\n,average);}4.调试与优化代码并完善程序将程序放在TurboC下调试,检查逻辑错误,排除从例题1.1的代码可以看出一个C语言程序由以下(1)C语言程序由函数构成。C语言是函数化的语(2)C语言程序的第一行include称为文件包含命令。扩展名为.h的文件也称为头文件或首部文件。由于程序中用到的scanf()函数和printf()函数都是系统提供的库函数,包含在stdio.h头文件中,它们可以直接使用,因此在头文件中要将其包含到自己的程序中。1.3.2C语言程序的一般组成(3)函数包括函数的首部main()和函数体。C语言程序都有主函数main(),且总是从main()函数开始执行。每一个C语言程序都必须有,且只能有一个主函数。函数体包括两部分,即声明部分和执行部分。例题1.1中,声明部分包括声明了3个整型数据inumber1,inumber2,sum和1个实型数据average。(4)(5)用/*……*/一般来说,衡量一个程序设计的优劣,可以从下面(1)(2)时间特性。时间特性是指在计算机配置固定(3)空间特性。空间特性指占内存和外存的情况,(4)可移植性。可移植性指程序对计算机机型的1.3.3程序的质量(5)易维护性。一个模块化的软件,若设计和开发文档齐全,源程序可读性好,对维护工作来说是(6)可扩展性。一个好的软件,应为日后的扩展培养良好的代码书写风格是一项不容忽视的工作,一个优秀的程序员应当具备良好的程序设计风格,一些软件公司也对软件编码提出了相关的规范。这里简单介绍C语言程序书写中应当注意的问题,以及代码书写中最基本、最常用的规范,期望读者在书写程序代码时能够依此进行,慢慢培养形成习惯。随着内容的不断深入,还将陆续介绍一些软件的编1.3.4书写程序时应遵循的规则1.C语言程序书写中应当注意的问题(1)用分号作为语句的结束符,不可省略(即便是最后一个语句也不能省略)。但预处理命令、函数头和花括号(}(2)第一行是预处理命令行,其中的指令必须以符号“#”开始,所指定的头文件也必须用引号或尖括号标识。例如,#includestdio.h或#includestdio.h(3)主函数main2.编码风格源程序通常使用小写字母,只有符号常量或其他特C语言可以一个语句占一行,也可多个语句占一行。用花括号对({})表示各个结构层次的范围。它可一个语句中不同成分之间应使用空格隔开。标识符、关键字之间必须至少加一个空格以示间隔。若已有程序中的空白行不影响程序的执行。可以为使程序清晰而添加空行,但不要在一个语句中间加空行。程序块的分界符(即花括号“{”和“}”)应各独占一行并且位于同一列,同时与引用它们的语句左对例1.2说明下列程序中的语法错误和不规范的地方。includestdio.hmain(){intinumber1,inumber2,sum,floataverage;printf(Pleaseentertwonumbers:);scanf(%d%d,&inumber1,&inumber2);sum=inumber1+inumber2;average=sum/2.0;printf(AVERAGE=%f\n,average)}分析(1①第一行,命令行中的include指令必须以“#”开始,所指定的头文件也必须用双引号“stdio.h”或尖括号stdio.h②③函数的声明部分有两种类型的数据,它们应该分别书写,是两条语句,应用分号分隔,即改为intinumber1,inumber2,sum;floataverage;④最后一条输出语句缺少分号,应改为printf(AVERAGE=%f\n,average);(2)①②每条语句最好各占一行。例如函数声明部分是两条语句,应分别书写,即intinumber1,inumber2,sum;floataverage;③同一层次的语句应左对齐。例如函数体中的如下两条语句应当与其他语句左对齐。printf(Pleaseentertwonumbers:);scanf(%d%d,&inumber1,&inumber2);④程序块的最后一个分界符“}”应独占一行,并且与第一个分界符“{”⑤关于TurboC的详细使用方法可参看本书第12章及书后的附录D,这里只简要地介绍如何在TurboC环境下执行一个C(1)调用TurboC,即运行TurboC下的TC.EXE(2)通过File(文件)菜单新建一个文件(New),见图1.4(3)屏幕上出现闪动的光标时,开始录入程序。1.3.5在TurboC下执行一个C语言程序的基本步骤图1.4新建文件(4)通过File菜单保存程序,程序的扩展名为*.C,见图1.5(5)通过Compile(编译)菜单编译程序(CompiletoOBJ(6)通过Run(7)通过组合键Alt+F5图1.5保存文件由于C语言十分灵活,容易出错,因此在学习时应注意掌握每一个概念。最初可以参考别人的程序(比如本教材中的)来编写,慢慢地就应该独立地把自己的思想用C语言描述出来。总之,边学、边练、边总结是学好C语言的一种好方法。在反复地练习和总结中不断熟悉和掌握C语言的基础知识。学以致用,你的进步将会带给你成功的喜悦和求知的动力1.3.5学好C语言的一些建议本章主要讨论了几个概念,即程序、算法、结构化程序设计等。通过例子程序说明程序设计的一般方法,即分析问题,构造问题模型及求解步骤、模块的代码实现、调试与优化代码,完善程序。在这个过程中分析和分解问题是十分关键的一步,它的前提是对所要解决之问题的规律性的理解和认识。首先在一个较高的层次上对问题进行描述;然后再根据解决问题的过程,进一步将问题分解成若干相对简单的部分;最后根据需要进行细化,即将一个高层动作分解为一系列低层的基本动作,最终借助1.4小结1-11-2根据附录D熟悉TurboC的环境,试运行本教材中的例题1.11-3编写一个程序在屏幕上输出一句话:“ThisismyCprogram”1-4编写一个程序在屏幕上输出任意两个实数的和。1-5查找下面程序中的错误。习题includestdio.hmianfloata,b,c,va=2.0,b=3.0,c=4.0;v=a*b*c;printf(v=%f\n,v)}【实训目的1熟悉TurboC的编程环境,掌握编辑、编译、连2掌握单步执行、设置与去除断点、观察变量与表实验与实训【实训内容1仿照例题1.1的程序设计过程,编写求两个整型23连接、运行程序,并观察程序运行的结果(按Alt+F54参考附录D,改用单步运行,设置观察值(观察