授课教材:《C程序设计》出版社:清华大学出版社著者:谭浩强第一章C语言概述第一章C语言概述参考教材:《TheCProgrammingLanguage》著者:BrianW.Kernighan&DennisM.Ritchie(合称K&R)C语言程序设计一、课程重要性:本课程是计算机科学与技术专业的最重要的专业基础课程之一,是后续专业课程《数据结构》、《面向对象程序设计》等专业课的前导课程。其目的是使学生掌握和了解C语言程序设计的基本语法、基本操作、程序设计与编程技术,具有应用计算机解决实际问题的初步能力,培养学生利用计算机处理问题的思维方法,为进一步学习计算机的其它专业课程、熟练和应用计算机编制高级程序打下坚实基础。C语言程序设计C语言程序设计二、课程目标:◇熟练掌握C语言的基本概念和常用程序设计方法,熟悉TurboC的上机环境◇掌握C程序设计中简单的数据结构和算法◇会读、会编写、会调试简单的C语言程序★★★C语言程序设计第一章C语言概述C语言程序设计三、课程要求:◇课前预习、课堂练习、课后复习,记好课堂笔记;◇注意培养独立编写程序的能力,提高排除错误的技巧;◇重视上机,勤学勤练,编程能力与上机时间成正比C语言程序设计C语言程序设计C语言程序设计学习方法:多读、多写、多练、多实践!§1.1C语言出现的历史背景(了解)§1.2C语言的特点(认识)§1.3简单的C程序介绍(掌握/重点/难点)§1.4C程序的上机步骤(掌握/重点)第一章C语言概述第一章C语言概述1.C语言出现背景:操作系统(UNIX)的编写2.功能:C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。3.发展:C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL60。1960年出现的ALGOL60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(combinedprogramminglanguage)语言。CPL语言在ALGOL60的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的MatinRichards对CPL语言做了简化,推出了BCPL(basiccombinedprogramminglanguage)语言。§1.1C语言出现的历史背景(了解)第一章C语言概述1970年美国贝尔实验室的设计出了很简单的而且很接近硬件的B语言,并用B语言写了第一个UNIX操作系统,但B语言过于简单,功能有限。1972年至1973年间,贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言。C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)。1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C改写,即UNIX第5版。后来,C语言多次做了改进,但主要还是在贝尔实验室内部使用。直到1975年UNIX第6版公布后,C语言的突出优点才引起人们的普遍注意。1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。第一章C语言概述C–DennisRitchie(1972-1973年)B–KenThompson(1970年)BCPL–MartinRichards(1967年)§1.1C语言出现的历史背景(了解)第一章C语言概述4.标准C:以1978年发表的UNIX第7版中的C编译程序为基础,BrianW.Kernighan和DennisM.Ritchie(合称K&R)合著了影响深远的名著《TheCProgrammingLanguage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。5.常见计算机语言:计算机语言的种类很多,目前广泛使用的有C、basic、FoxPro、C++、Java、Delphi等。第一章C语言概述(1)语言简洁、紧凑,使用方便、灵活(P325:32个关键字,P44:9种控制语句)(2)运算符丰富(P325:共有34种运算符,具有不同的优先级)(3)数据结构丰富,具有现代化语言的各种数据结构(数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等)第一章C语言概述§1.2C语言的特点(认识)(4)具有结构化的控制语句(如if…else语句、while语句、do…while语句、switch语句、for语句)结构化程序的三种基本结构:顺序结构、选择结构、循环结构(5)语法限制不太严格,程序设计自由度大书写形式自由,主要用小写字母编辑(6)C语言能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作§1.2C语言的特点(认识)第一章C语言概述(7)效率高目标代码质量高,程序执行效率高(8)可移植性好基本上不用修改便可用于各种型号的计算机和操作系统。(10)有预处理功能使用编译预处理功能,可提高程序的可读性和可移植性,便于调试程序。§1.2C语言的特点(认识)第一章C语言概述1.基本概念:程序(program):就是按照计算机语言规则组织起来的一组指令。机器语言(machinelanguage):计算机能够直接识别和运行的二进制形式的程序语言或机器代码。汇编语言(assemblerlanguage):一种面向机器的用符号表示的低级程序设计语言。相当于机器指令的助记符号,与机器语言很接近。高级语言(high-levellanguage):是易为人们所理解的完全符号化的程序设计语言。§1.2.1C程序(认识)第一章C语言概述源程序:就是用程序设计语言写成的解决各种问题的方法步骤,C源程序文件名字后缀一般必须为“.c”,VC6.0中用Run命令运行程序的后缀名为“.exe”。编译程序(compiler):把用高级语言写的源程序转换为相应的机器语言目标模块(objectmodule)的程序。编译(compile):生成二进制的目标程序文件,包括程序及连接程序的控制信息,目标程序文件扩展名后缀为.obj。连接(linker):将目标模块和其它一些必要的功能模块装配在一起,生成可执行文件,执行程序文件后缀为.exe。C语言编译程序功能示意图C语言源程序C语言编译程序二进制机器指令第一章C语言概述2.程序设计步骤:1.确定数据结构2.确定算法3.编码4.调式程序5.整理并写出文档资料第一章C语言概述1.程序的灵魂--算法:为解决某个特定问题而采取的确定的方法和有限的步骤,就称为“算法”。对同一个问题,可以有不同的解题方法和步骤,也就有不同的算法。可采用矩形法,梯形法,辛普生法(即抛物线法)等。为了有效地解题,不仅需要保证算法正确,还要考虑算法的质量,选择较好的算法,或进行算法的优化。badxxf)(§1.2.2算法(认识)第一章C语言概述2.一个算法,必须具有以下特点:(1)有限的操作步骤,即“有穷性”(无死循环)。(2)算法的每一个步骤应当是确定的,即无“二义性”(确定性)。(3)算法中的每一个步骤都应当有效执行(无死语句)—可行性。(4)有零个或多个的输入,即有确定的条件。(5)有一个或多个的输出结果,没有输出的算法是无意义的。Eg:小明的妈妈告诉小张的妈妈说她的儿子考上了重点大学第一章C语言概述3.算法的表示方法:1)用自然语言描述2)用伪代码来表示3)用传统N-S流程图表示传统流程图常用符号第一章C语言概述例:“打印x的绝对值”的算法可以用伪代码表示如下:IFxispositiveTHENprintxELSEprint–x它像一个英语句子一样好懂,在国外用得比较普遍。也可以用汉字伪代码,如:若x为正打印x否则打印–x也可以中英文混用,如:IFx为正printxELSEprint–x第一章C语言概述例:先后输入若干个整数,要求打印出其中最大的数,当输入的数小于0时结束,用N-S结构化流程图表示:程序的N-S流程图max=x读入一个数给x当x0时执行输出maxXmax是否Max=x读入一个数给X第一章C语言概述1.程序的三种基本结构:(1)顺序结构程序:按照书写顺序依次执行语句(2)选择结构程序:按照条件判断选择执行语句(3)循环结构程序:通过条件控制循环执行语句§1.2.3结构化程序设计和模块化结构(认识)第一章C语言概述(1)顺序结构,如图所示,虚线框内是一个顺序结构。特点:按照程序的书写顺序上到下、从左到右依次执行每条语句第一章C语言概述2.三种基本结构流程图:(2)选择结构,或称选取结构,或称分支结构,如图所示:特点:无论条件p是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。无论走哪一条路径,在执行完A或B之后,都经过b点,然后脱离本选择结构。A或B两个框中可以有一个是空的,即不执行任何操作。第一章C语言概述(3)循环结构,它又称重复结构。分为两种:①当型(While型)循环结构特点:当给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框,而从b点脱离循环结构。第一章C语言概述②直到型(Until型)循环特点:先执行A框,然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A……如此反复执行A,直到给定的p2条件成立为止,此时不再执行A,从b点脱离本循环结构。以上结构我们将在接下来的学习中一一介绍第一章C语言概述§1.3简单的C程序介绍(掌握/重点/难点)Main:表示“主函数”。每一个C程序都必须有且仅有一个main函数,函数体由大括弧{}括起来,每条语句最后用分号结尾,预定义不用。Printf():C标准输出函数,功能:打印输出指定内容,函数中双引号(双括号)内的字符串原样输出(格式和转义字符除外),它可在C程序中直接调用。\n:换行符(转义字符的一种),即在输出“Thisisacprogram.”后回车换行(光标位置)。1.c第一章C语言概述例1.1最简单的C程序main(){printf(“ThisisaCprogram.\n”);}程序功能:在屏幕上打印输出如下一行信息:Thisisacprogram.例1.1最简单的C程序(完整形式)#include“stdio.h”Voidmain(){printf(“ThisisaCprogram.\n”);}/*预定义行,包含标准输入输出函数的说明信息,stdio.h*//*主函数,void表示不返回值*//*在屏幕上打印输出引号当中的内容*/课堂练习:1-1.请参照本章例题,编写一个C程序实现在屏幕上打印输出如下信息:******************************HelloWorld!******************************第一章C语言概述解答:1-1.源程序:main()/*HelloWorld程序*/{printf(**********************************\n\n);printf(HelloWorld!\n\n);printf(**********************************\n);}第一章C语言概述例1.2求两个整数之和的C程序#include“stdio.h”/*求两数之和*/Voidmain()/*主函数*/{inta,b,sum;/*定义变量,整型,C语言中,任何变量需先声明(定义)才能使用*/a=123;b=456;/*给变量a,b分别赋值*/sum=a+b;/*求a,b之和,并存储于sum*/printf(“sumis%d.\n”,sum);/*输出结果*/}/*……*/:表示注释部分,中英文,拼音注释均可。说明:注释是给人看的,对编译和运行不起作用,不影响程序的运行结果。第2行:inta,b,sum;