C程序设计与实践第1章.ppt

上传人:小飞机 文档编号:6503607 上传时间:2023-11-07 格式:PPT 页数:35 大小:970.50KB
返回 下载 相关 举报
C程序设计与实践第1章.ppt_第1页
第1页 / 共35页
C程序设计与实践第1章.ppt_第2页
第2页 / 共35页
C程序设计与实践第1章.ppt_第3页
第3页 / 共35页
C程序设计与实践第1章.ppt_第4页
第4页 / 共35页
C程序设计与实践第1章.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《C程序设计与实践第1章.ppt》由会员分享,可在线阅读,更多相关《C程序设计与实践第1章.ppt(35页珍藏版)》请在三一办公上搜索。

1、程序设计与实践,目录第1章 C语言程序框架1.1C语言简介1.2简单C程序举例1.3C程序结构1.4C程序的编译和运行,第1章C语言程序框架1.1C语言简介一、C语言的产生与发展简史C语言是一种得到广泛重视并普遍应用的程序设计语言,也是国际上公认的最重要的几种通用程序设计语言之一。它既可用来写系统软件,也可用来写应用软件,但与其他语言相比较还是更适合作为系统描述语言。随着面向对象等程序设计方法的产生和发展,以C语言为基础,后来又产生了目前应用比较广泛的C、C#、JAVA语言等。很多人认为学习C语言没什么必要,但是对于专业学习计算机的人来说却很重要,编者引用美国的在C语言程序设计:现代方法里对C

2、语言作出的评价:“C语言不是编程语言的终结;然而,C语言却是每个软件开发人员都应该掌握的编程语言。”,C语言是在B语言的基础上发展起来的,B语言是1970年美国电话电报公司(AT&T)贝尔实验室的Ken Thompson设计的,较简单也较接近硬件,但B语言是一种解释性语言,功能上不够强,不能很好的适应系统程序设计的需要。C语言诞生于1972年,由贝尔实验室的设计,并首先在一台使用UNIX操作系统的DEC PDP11计算机上实现。C语言既继承了在它之前各种程序设计语言的优点,同时克服了它们的缺点,并由于用C语言设计实现的UNIX操作系统的巨大成功,C语言也随之推广改进,而被广泛移植到各种机器上。

3、1978年,贝尔实验室的和Dennis.M.Ritchie(合称K&R)合著了The C Programming Language一书,并在附录中提供了C,语言参考手册,这本书成为以后广泛使用的C语言的基础,被人们称作非官方的C语言标准。1983年美国国家标准化协会(ANSI)开始制定新的标准,这就是ANSI C标准。1990年,C语言成为国际标准化组织(ISO)通过的标准语言。目前在很多应用领域,特别是嵌入式软件等领域,C语言(以及C)正在发挥着不可替代的重要作用。当今社会,计算机和网络技术发展日新月异,而C语言已有近40年的历史,这对于一个程序语言来说意义极其重大,值得我们认真思考和深入研

4、究。二、C语言的特点1.C语言是“高级语言中的低级语言”。,这句话的含义是,首先C语言是一种高级编程语言,它能编写不依赖于机器硬件设备的应用程序,主要表现为C语言程序的可移植性,当然现在大部分的编程语言都具备这样的优点,但在早期的编程语言中,这一点是C语言的主要优势之一,C程序具有可移植性的一个原因要感谢C语言与UNIX系统的早期结合,以及后来的ANSI/ISO标准化工作。C语言正是由于标准化才没有分裂成不兼容的多种分支。另一个原因是C语言编译器规模小且容易编写,这使得此种编译器得以广泛应用。其次C语言还具有低级语言的特点,它具有许多通常只有像汇编语言才具备的功能,如位操作、直接访问物理地址等

5、等,这使C语言在进行系统程序设计时显得非常有效,而过去系统软件通常只能用汇编语言编写。事实上,C语言的许多应用场合是汇编语言的传统领地,现在用C来代替汇编,,使程序员得以减轻负担、提高效率。C语言提供了很多类似于汇编语言的描述方式,因此编译后的目标代码执行的效率非常高。C语言具有很多接近硬件操作的功能,但不提供直接处理复合对象,如作为整体看待的字符串、数组等的操作。C语言的规模较小,更容易说明,学习起来也快。2.C语言是结构化的语言C语言的主要结构成分是函数。函数允许一个程序中的各任务分别定义和编码,使程序模块化,在函数的外部只需了解函数的功能,而将实现的细节隐藏起来。设计得好的函数能够正确地

6、工作而对程序的其他部分不产生副作用。C语言还提供了多种结构化的控制语句,如用于循环的for,while,dowhile语句,用于判定的ifelse,switch语句等,以满足结构化,程序设计的要求。3.C语言十分简练C语言是一种非常简练的语言,用C语言编写的程序十分简洁。例如:(1)C语言中关键字较少,只有32个;(2)运算符丰富,不仅数量多,而且功能强,如:三目运算符(?:)具有条件语句的功能;又如:、等;(3)预处理功能,包含宏定义和文件包含等,可以简化程序书写内容。4.C语言的可移植性好高级语言的可移植性都比汇编语言好。在诸多的高级语言中,C语言的移植性更为突出。,这是因为该语言编译系统

7、较小,另外预处理功能对移植也带来一些方便,因此C语言本身只需稍加修改便可用于各种型号的机器上,也可以很方便地用于不同操作系统中,这也是C语言得到广泛应用的原因之一。5.C语言是程序员的语言C语言的设计者Ritchie是专业程序员,而C最初是为了他自己写UNIX操作系统而设计的。C语言实现了程序员的期望:很少限制,很少强求,程序设计自由度大,方便的控制结构,独立的函数,紧凑的关键字集合和较高的执行效率。用C编写程序可获得高效的机器代码,其效率通常只比汇编语言生成的机器代码低10%20%,而同时C又具有PASCAL那样的结构,这就难怪有大量的程序员喜欢它。C语言的语法限制不太严,例如,对数组下标越

8、界不做检查,整型、字,符型数据可以通用,不专设逻辑型数据而以整型来代替等。较少的限制给程序员带来较大自由,这就要求程序员在编程时应确实明白自己在做什么,而不要把检查错误的工作完全寄托于编译程序。当然这也可能会带来一些麻烦,作为程序员应该考虑好再开始编码,平时还要注意养成良好的编程习惯。6.C语言的缺点上面介绍了一些C语言较为明显的特点,当然C语言也有一些不足需要读者在逐渐深入的学习中不断体会,比如C语言中指针的使用,指针可以直接访问内存地址但同时也对系统带来了安全性的隐患。C语言运算功能丰富,表达方式灵活多样,有很大的自由度,语法限制不太严格。比如“”运算符,但是对于初学者来说,就很难把握。C

9、语言,中自左至右或自右至左运算顺序有时也令人头疼。需要初学者在细节的把握上认真对比分析。建议初学者不要把注意力放在这些细节上。第一步先用最简单的C语句实现功能,第二步完善功能,使得代码实用,然后考虑优化算法和程序结构。另外,由于C语言是面向过程的程序设计语言,很多方面与现代的程序设计思想和软件工程思想相悖。比如:当前主流的程序设计语言面向对象的编程思想,软件工程中更强调程序代码的可读性和易理解性;软件开发的效率首先应该体现在宏观上整体上,即开发效率,其次才是程序代码的执行效率等。因此在本书中,我们会在C语言原有的特色基础上,突出现代程序设计思想指导下的C语言程序设计。三、初学者对于C语言的学习

10、方法,C语言的学习目的是进行程序设计的基本训练,不是要求立即写出大型程序,也不能设想今后一辈子只使用学过的某一种语言。因此,学习程序设计时,应该把主要精力放在最基本的、最常用的内容上,开始不必在一个细节上死背死抠,可以先“照搬照抄、不求甚解”,多模仿,多实践,在有一定的基础后再深入到一些常见的细节中去,有些细节是需要通过较长时间才能掌握的。初学时切忌滥用C的某些容易引起错误的细节。学习C程序设计语言最终的目标是通过C语言的学习,培养程序设计的思想和理念,初步掌握计算机的“思维”方式。语言是表达思想的工具,程序语言就是表达程序设计思想的最有效工具。学习程序设计还有很重要的一条就是程序调试能力的培

11、养,好的程序员都是在排除程序代码错误的过程中成长起来的,见多才能识广,经验的积累,就是不断地犯错误和改正错误的过程。,1.2简单C程序举例这一节我们主要是通过几个简单的C语言程序来初步了解C程序的有关特性。例1.1最简单的C程序#includevoid main()printf(”您好!n”);,这个程序的功能(运行结果)是在屏幕的左上角输出“您好!”。其中“#include”,是预处理命令,在本程序中包含标准输入输出的头文件;main表示“主函数”,每个C程序都必须且只能有一个main函数。本程序中只有一个函数,函数体是由大括号括起来的部分。函数中只包含一条输出语句,是通过调用C语言中的输出

12、函数printf来实现输出的,此函数名字后面圆括号中的双引号内部的字符或字符串按照原样输出,但是“n”表示的是换行符,在屏幕上输出的效果就是将屏幕上的光标从当前位置移到下一行开始位置,它在程序输出的格式中经常被用到。函数调用的结束相当于一条语句也结束了,在每条语句后面要有一个分号,即使是函数体内最后一条语句的后面也要有分号。例1.2整数的关系比较,#includevoid main()int a,b;/声明部分,定义变量a,b都是整数scanf(”%d%d”,&a,&b);/输入变量a,b的值/*以下部分是判断变量a,b之间关系的几种情况*/if(ab)printf(”%d%d”,a,b);,

13、elseif(ab)printf(”%d%d”,a,b);elseprintf(”%d%d”,a,b);本程序实现的是判断任意两个整数的大小关系。“/”后面的汉字部分是对程序语句的注释,注释部分一般根据编程者的习惯,可以加在程序中的任何位置,对编译和运行没有影响,目的是为了使读程序的人更准确的理解程序及语句的作用。第4行是变量声明部分,定义了两个变量a,b,在C语言中变量只有声明之后才可以使用,否则在程序编译时将出现错误。第5行scanf是“输入函数”,作用是输入两个数并分别保留在变量a和b中,但在,使用scanf函数时要注意格式,双引号里面的“%d”是输入输出的“格式字符串”,用来指定输入输

14、出时的数据类型和格式,“%d”表示输入的整数是“以十进制整数形式输入”,在程序执行时,需要通过键盘输入两个十进制的整数。&a和&b中的“&”含义是“取地址”,scanf函数实际上是将输入的值送到a和b的地址所标识的单元中,也就是输入给了变量a和b。接下来是由条件语句组成的对于变量a,b之间关系的几种情况的判断和处理。对于两个整数来说,大小关系只能有三种:大于、小于或者等于,可以按照语句中的关键字if,else if,else的英文含义来理解语句所要完成的作用。printf完成的与例1.1的程序相同,目的是为了明确地显示出两个变量的大小关系。程序运行时,首先应输入两个整数,例如在运行界面上输入3

15、5 98(两数间需有一空格,然后输入回车),程序输出结果为:35int product(int m);void main()int n,i,sum0;scanf(”%d”,&n);,for(i 1;i n;i)sum sum product(i);printf(”1!2!.%d!%dn”,n,sum);int product(int m)int j,p 1;for(j 1;j m;j),p p*j;return p;本程序的功能是计算1!2!.n!的和,显然这是有规律的,相当于第一项是1!,第二项是2!,第三项是3!,一直到最后一项是n!,每一项都是阶乘的计算,在这里采用了函数调用,在函数pr

16、oduct中实现阶乘的计算,而在主函数中通过连续地调用这个函数,就可以将每一项中计算得到的结果获得,并将其相加,得到我们题目中所要的计算结果。在主函数main和子函数product中为了计算和,使用到了循环语句for,它的详细执行过程将在后面的章节里更详细地说明。,在函数中还是必须先要定义变量,有时在声明时可以给变量赋一个初始值,接下来是输入变量,当然不一定所有的变量值都需要输入,有些变量是起到辅助作用,比如i和j。有些变量值是存储最后结果用以输出的,例如sum就是。然后就是程序的语句执行过程,这个过程中可能需要使用三种基本结构,顺序结构,选择结构及循环结构。在本例中,首先要输入变量n的值,n

17、表示序列的项数,然后在循环结构中调用了函数product。在函数product的语句执行前,先把实际参数i的值分别传送给函数product中的形式参数m,经过执行函数product得到一个返回值,就是return后的变量p的值。把这个值(函数结果)与变量sum已有的值相加后再赋值给sum,最后输出sum的值。printf函数中双引号内”1!2!.%d!%dn”内的”%d”将分别由变量n和s的值取代,”n”仍表示换行符,其他字符照原样输出。,程序运行时,先在运行界面上输入n的值,比如:输入5(输入回车)1!2!.5!153(显示在屏幕上的运行结果)本例中涉及的函数调用,实际参数、形式参数以及在函

18、数执行部分中使用到的循环结构,都只做了简单的解释,读者可能对此不大理解,可先着重通过几个实例了解C语言程序的结构及其他的组成部分,在以后其他相关章节的学习时,这些问题都可逐步得到解决。,1.3C程序结构C程序结构如图11所示。图11C程序结构图,一、C程序的组成C程序一般由若干个源程序文件组成。一个源程序文件又可以是由若干个函数和预处理命令以及全局变量声明部分组成的,而函数由数据定义部分和执行语句组成。简单的C程序只有一个源程序文件,其内容由预处理命令和函数所组成。1.预处理命令C中的预处理命令是由ANSI C统一规定的,它不是C语言的本身组成部分,但一般编写的C程序的最前面都要将预处理命令写

19、好,对程序进行通常的编译(包括词法和语法分析,代码生成,优化等)之前,先对程序中这些特殊的命令进行“预处理”,例如:如果程序中用#include命令包含一,个文件“stdio.h”,则在预处理时,将stdio.h文件中的实际内容代替该命令。虽然预处理命令是书写C语言程序时要写的,但我们要记住的是预处理命令不是C语言的一部分,它是在程序编译前由预处理程序完成的。C提供的预处理功能主要有三种:宏定义,文件包含,条件编译。它们的命令都以“#”开头。详细的内容在后面相关章节中介绍。2.函数C程序以函数为基本单位,整个程序由函数组成,至少有一个函数。其中主函数main()是一个特殊的函数,其特殊性表现在

20、C语言程序执行时开始于主函数,也结束于主函数遵循结构化程序设计单入口单出口原则,归根到底,其他函数均受调于主函数。也就是说,C程序没有主函数,便不能执行。这种函数结构的特点使C语言便于实现模块化的程序结构。,C语言的函数分成库函数与自定义函数两大类,例如printf(),scanf()都属于库函数,自定义函数是用户自己编写的为程序服务并能实现各种特定的功能,可以说编写C程序就是在编写一个个函数。二、函数的组成一个函数由两部分组成:函数定义及函数体。(1)函数定义就是函数的第一行,是由函数类型,函数名称,函数参数类型,参数名组成的。在例1.3中的product函数的定义为int product(

21、int m);其中第一个int是函数类型,代表这个函数的返回值是一个整数,即在这个函数被调用后应返回一个整数的结果。product是函数名称,这个名称,可有多种选择,由程序编写者命名,函数名称后面的括号中包含的是函数中的参数表,也称为形参(形式参数),允许有多个形参,每一个形参都要有类型和名称,本例中的形参是m,类型也是整数。(2)函数体,是在函数定义下面包含在大括号中的全部内容。函数内可能有多个大括号,但大括号都是成对出现的,有左括号就应该有右括号,函数定义括号后第一个左括号是函数体的开始,与它对应的右括号是函数体的结束,这个结束可能是整个程序的结束,也可能是下一个函数定义的开始。函数体一般

22、包含三个部分:输入部分,主要包含了变量的声明、初始化、输入、引用相关内容。,处理部分,用C语言支持的三种程序结构,顺序,选择,循环来实现功能。输出部分,函数的返回值或是输出显示。三、C程序编写和执行注意的几个问题1.一个C程序是从main函数开始执行的,无论主函数的位置在哪。一个完整的C程序必须有且只能有一个主函数,它是程序启动执行时的唯一入口。2.C程序书写自由,但尽量一行写一条语句,这样看起来较为清晰。3.每条语句结束都要加一个分号。分号是语句的组成部分,不可少,即使是程序中最后一条语句后也应包含分号。但语句没有结束不用加分号。如:,int x,y;/变量定义语句加分号z x y;/赋值语

23、句后加分号if(x y)/条件语句没结束,此句后不加分号z x;/条件语句结束后加分号4.可以在“/”后为语句加注释,也可用/*/对语句块作注释。适当且明确的注释可提高程序的可读性。,1.4C程序的编译和运行学习C语言离不开编写和运行C语言程序,在了解一些C语言的初步知识以后,就应该上机练习编写和运行C语言的程序,通过大量的上机实践来加深对C语言的认识和理解。C语言程序是如何在计算机上运行的呢?C程序在计算机上运行是从源程序的编辑开始,再经过编译、连接等一系列工作过程,最终产生并运行可执行文件得到运行结果,整个过程如图12所示。C语言程序实现可归纳如下三个阶段:1.编辑编辑过程是把用C语言写出

24、源程序代码录入到计算机中并保存。其方法有两种:一种是使用编辑程序编写好C语言源程序,并以“.c”为后缀存入文,件系统;另一种是使用C语言编译系统提供的编辑器来编写源程序,并且存入文件系统。2.编译连接编译连接是两个过程,有些编译系统常将它们连在一起,实际上是将源程序先进行编译,通过编译可发现源程序中的语法错误,如有错误,则系统将其“错误信息”显示在屏幕上,用户根据系统提供的错误信息提示,对源程序进行编辑修改,修改后再重新编译,直到编译无错为止。编译后生成机器指令程序被称为目标程序。此目标程序名与相应的源程序同名,其后缀为“.obj”的二进制文件。编译过程完成后,便开始连接过程。所谓连接是将目标

25、程序与库函数或其他程序连接成为可执行程序。一般可执行程序名与源文件名相同,后缀为“.exe”。这里,还需补充一点,在连接过程中,可能出现错误,这时必须根据“出错信息”所指示的错误类型进行修改后,再进行连接直到不出错为止,这样才会生成可执行文件。3.调试运行程序可以执行只能说明编写的代码没有语法错误以及链接错误,但是,是否可以运算出想要的结果,还要进一步判断程序是否有逻辑错误,这个过程需要使用调试方式运行,如果出现错误可以中断调试,修改程序错误后,重新编译连接运行,直到程序调试运行完成。具体的调试方法后面章节介绍。,图12运行C程序的工作过程,调试通过后可以运行可执行文件,一般在屏幕上会显示程序输出的结果。运行C语言程序的环境很多,编译系统也很多,不同环境的实现方法不同,但都包含了上面描述的三个阶段工作。本书中我们应用的是Visual C6.0的环境,具体的操作步骤可参考上机指导手册。练习一1.简要描述C语言的特点?2.说明C语言中的注释的作用及注释的两种方法。3.编写第一个C语言程序,输出“祖国,您好!”。4.输出下面图形。,更多图书信息请见星图书业:计算机各级在线考试试题见前程在线考试网:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号