C语言课件完整版(精华).ppt
《C语言课件完整版(精华).ppt》由会员分享,可在线阅读,更多相关《C语言课件完整版(精华).ppt(484页珍藏版)》请在三一办公上搜索。
1、1,计算机程序设计基础(C语言),2,1.课堂要求很严格。2.多听,适时做笔记。3.上课不能讲闲话。4.课后认真完成作业、实验报告。5.有问题,及时与老师联系。,教 学 要 求,3,选用教材与参考书,主教科书 顾治华、陈天煌等 C语言程序设计机械工业出版社 2007.2参考教材 顾治华、陈天煌等C语言程序设计 实验指导 机械工业出版社 2007.2参考书 谭浩强 C语言程序设计 清华大学出版社,4,课程内容,第一章 C语言程序设计概述 第二章 算法及算法设计简介 第三章 数据描述与基本操作第四章 选择结构程序设计 第五章 循环结构程序设计 第六章 数组与指针第七章 函数与模块化程序设计方法,5
2、,第一章 语言程序设计概述,6,1.1 程序设计的概念1.2 语言的产生及发展1.3 简单程序介绍1.4 C程序的上机步骤1.5 C语言的基本语法和基本结构 1.6 本章要点小结,7,1.1 程序设计的概念,1.1.1 程序设计语言1.1.2 程序设计的概念,8,计算机,计算机是用来延伸人的能力的工具,需要人来驾驭我们的职责是让非计算机专业的人更容易驾驭它完成这一目标的主要手段之一就是“编程(Programming)”,9,计算机基本工作过程,整个过程的执行者是硬件,但硬件是受软件控制的编程,就是编写软件,使硬件按照人的意图工作,10,计算机基本工作过程,源程序和输入数据,输出结果,取出数据,
3、存入数据,操作命令,存取命令,取出程序指令,输入输出命令,计算结果,CPU,“冯诺依曼机”结构,大脑,眼/耳/口,11,软件的形成,软件(Software)的形成程序员(Programmer)编写程序源代码(Source Code)编译器(Compiler)把源代码转换为可被计算机理解的机器代码(Machine Code)并把机器代码以可执行文件(Executable File)的形式保存在磁盘上,12,机器语言,汇编语言,高级语言,面向过程,面向对象,CPU指令系统,由0、1序列构成的指令码组成如:10000000 加 10010000 减,用助记符号描述的指令系统如 ADD A,B,程序设
4、计是数据被加工的过程,客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系,程序设计关键是定义类,并由类派生对象,1.1.1 程序设计语言,13,程序设计语言的故事,计算机为什么用二进制呢?为什么不用我们日常熟悉的十进制呢?二进制在在电器元件中容易实现 计算机进行二进制运算比进行十进制运算要简单得多,14,程序设计语言的故事,机器语言编写的1+1程序汇编语言(Assemble Language)编写的1+1程序,MOV AX,1ADD AX,1,15,程序设计语言的故事,BASIC语言编写的1+1程序C语言编写的1+1程序,PRINT 1+1,#include
5、 main()printf(%dn,1+1);,16,Ada,ALGOL60,ALGOL68,Pascal,Modula-2,CPL,BCPL,B,C,C+,Java,LISP,PROLOG,COBOL,FORTRAN77,FORTRAN,PL/1,Simula 67,Smalltalk 80,BASIC,ANSI-BASIC,QBASIC,VB,FORTRAN90,17,1.1.2 程序设计的概念,程序设计就是用计算机语言来编写程序的过程。什么是程序?著名计算机科学家沃思提出有名的公式:算法+数据结构=程序,18,算法即问题的求解过程、计算机的工作步骤。数据结构即对参与运算的数据怎样进行合理
6、的组织、安排,以提高程序运行的效率和求解的精确性。,程序的两大要素:数据结构、算法,19,1.2 C语言的产生和发展,1.2.1 C语言的产生 1.2.2 C语言的发展1.2.3 C语言的特点,20,1.2.1 C 语言的产生,一切从一个叫“Space Travel”的电子游戏开始的Ken Thompson为了让他的游戏能在PDP-7上运行,用汇编语言给PDP-7写了一个操作系统UNIX汇编太不好用了,Thompson需要高级语言试验了一些高级语言,包括Fortran,都不理想他在BCPL基础上,自己设计了一个B语言UNIX开始发展,B也不够用了Dennis Ritchie加入,把B改造成C
7、开始用C重写UNIX,21,1.2.2 C 语言的发展,C语言发展过程产生过程时间:19721973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准标准C:K&R合著The C Programming LanguageANSI C:1983年87 ANSI C:1987年1990年国际标准的ANSI C,22,Ritchie和Thompson在开发UNIX,23,接受美国国家技术勋章,24,C语言的祖师爷Dennis M.Ritchie,25,Ritchie漫画像,26,C语言本身既有一般高级语言的特点,又由低级语言(汇编语言)
8、的特点。C语言是一种结构化的程序设计语言,它具有实现顺序、分支、循环三种基本结构化控制的语句。C语言简洁,紧凑,使用方便灵活。只有32个保留字,9种控制语句,书写形式自由。数据类型丰富。有整型、实型、字符型、数组型、指针型、结构体型、共用体型和枚举型等。,1.2.3 C语言的特点,27,5、运算功能强。有32种运算符,包括了算术运算、关系运算、逻辑运算、位运算、指针运算等。6、目标代码质量高,运行速度快。7、可移植性强。8、语法限制不太严格,程序设计自由度大。,1.2.3 C语言的特点,28,C 语言是编译型语言,一种编译语言对应一种编译器 按照该语言的语法编写程序源代码,把自己的思想融入到代
9、码中 编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用,29,C语言与计算机系统层次关系,30,1.3 简单C程序介绍,31,C程序格式和结构特点,第一个程序 Hello,World!/*example1.1 The first C Program*/#include main()printf(“Hello,World!”);,输出:Hello,World!,32,/*example1.2 calculate the sum of a and b*/#include/*This is the main program*/main()int a,b,sum;a=10;b=24;sum
10、=add(a,b);printf(”sum=%dn,sum);/*This function calculates the sum of x and y*/int add(int x,int y)int z;z=x+y;return(z);,运行结果:sum=34,33,格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式,main().,main()int i,j,sum;sum=0;for(i=1;i10;i+)for(j=1;j10;j+)sum+=i*j;printf(“%dn”,sum);,优秀程序员的素质之一:使用TAB缩进对齐有足够的注释有
11、合适的空行,34,结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/*/为注释,不能嵌套不产生编译代码,例:/*This is the main/*of example1.1*/*/,编译预处理命令,函数首部:包括函数名、函数类型、函数参数名、参数类型。函数体:声明部分,执行部分。,35,1.4 C程序的上机步骤,36,程序代码的录入,生成源程序*.c,语法分析查错,翻译生成目标程序*.obj,与其它目标程序或库链接装配,生成可执行程序*.e
12、xe,开始,编辑,编译,有错?,执行,连接,结果正确,结束,可执行目标程序f.exe,源程序f.c,目标程序f.obj,库函数和其他目标程序,Yes,No,Yes,No,37,1.5 C语言的基本语法和结构,1.5.1 C语言的基本语法 1.5.2 C语言的基本结构,38,1.5.1 C语言的基本语法,标识符关键字运算符分隔符常量注释符字符集,39,标识符,常量、变量、语句标号以及自定义函数的名称只能是字母、数字和下划线组成的字符串,第一个字符必须是字母或下划线标准C不限制标识符长度,但一般不超过8字符标识符大小写有区别标识符名最好能“顾名思义”,40,32个关键字:(由系统定义,不能重作其它
13、定义)auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while,41,9种控制语句:if()else switch casefor()while()dowhile()continuebreakgotoreturn,42,34种运算符:算术运算符:+-*/%+-关系运算符:=
14、!=逻辑运算符:!&|位运算符:|&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.-下标运算符:其它:()-,43,1.5.2 C语言的基本结构,(1)顺序结构,A,B,a,b,44,(2)选择结构,或称分支结构,此结构中必包含一个判断框。根据给定的条件P是否成立而选择执行A框或B框,a,b,B,A,p,不成立,成立,45,(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构:,a.当型(while型)循环结构,b.直到型(Until型)循环结构,46,1.6 本章要点小结,程序设计的概念C语
15、言的产生及发展C语言的特点C程序的介绍和上机步骤C语言的基本语法和结构,47,本章课堂练习,(1)以下说法中正确的是().A)C语言程序总是从第一个函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分,48,解答:C解释:C语言程序总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。除main函数外,其它函数都是在执行main函数时被调用执行的。在C语言中,函数不允许嵌套定义。习惯上,将主函数main()放在最前头,但并不是必须
16、的。,49,(2)以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面,50,解答:D解释:凡是用“/*”和“*/”括起来的文字,都是注释。其出现的位置可以任意。,51,(3)下列标识符中,合法的变量名有:A)a.b B)$888 C)A1 D)3x56,52,解答:C解释:变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母或下划线。C语言的关键字不能用作变量名。另外,C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名
17、和函数名中的英文字母用小写,以增加可读性。,第二章 程序的灵魂:算法,一个程序主要包括以下两方面的信息:(1)对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式这就是数据结构(data structure)(2)对操作的描述。即要求计算机进行操作的步骤也就是算法(algorithm),数据是操作的对象操作的目的是对数据进行加工处理,以得到期望的结果著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:算法+数据结构=程序,一个程序除了算法和数据结构这主要要素外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示算法、数据结构、程序设计方法
18、和语言工具是一个程序设计人员应具备的知识算法数据结构程序设计方法语言工具和环境程序,算法是解决“做什么”和“怎么做”的问题程序中的操作语句,是算法的体现不了解算法就谈不上程序设计,2.1 算法的概念2.2 算法的特性2.3 算法的表示2.4 结构化程序设计方法,2.1 算法的概念,广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”对同一个问题,可以有不同的解题方法和步骤为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法,计算机算法可分为两大类别:数值运算算法非数值运算算法数值运算的目的是求数值解非数值运算包括的面十分广泛,最常见的是用于事务管理领域,2.1 算
19、法的概念,可以用最原始的方法进行:步骤1:先求1*2,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。这就是最后的结果。,例2.1 求12345 100,太繁琐,例2.1 求12345,简单算法的举例概念,改进的算法:设变量p为被乘数变量i为乘数用循环算法求结果,求12345,简单算法的举例概念,S1:使p=1,或写成1pS2:使i=2,或写成2iS3:使p与i相乘,乘积仍放在变量p中,可表示为:p*ipS4:使i的值加1,即i+1 iS5:如果i不大于5,返回重新执行S3;否则,算法结束最后得到p的值就是 5!的值
20、,若是100,求什么?,简单算法的举例概念,例2.2 有50个学生,要求将成绩在80-90分的学生的学号和成绩输出。用ni代表第i个学生学号,gi表示第i个学生成绩S1:1iS2:如果90 gi80,则输出ni和gi,否则不输出S3:i+1iS4:如果i50,返回到步骤S2,继续执行,否则,算法结束,2.1 算法的概念2.2 算法的特性2.3 算法的表示2.4 结构化程序设计方法,一个有效算法应该具有以下特点:(1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。(2)确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。,2.2 算法的特性,一个有效算法应该具有以下特
21、点:(3)有零个或多个输入。所谓输入是指在执行算法时需要从外界取得必要的信息。(4)有一个或多个输出。算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。(5)有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。,2.2 算法的特性,对于一般最终用户来说:他们并不需要在处理每一个问题时都要自己设计算法和编写程序可以使用别人已设计好的现成算法和程序只需根据已知算法的要求给予必要的输入,就能得到输出的结果,输入3个数,黑箱子,3个数中最大数,求3个数的最大数,2.2 算法的特性,2.1 算法的概念2.2 算法的特性2.3 算法的表示2.4 结构化程序设计方法,常用的方法有
22、:自然语言传统流程图结构化流程图伪代码,2.3 算法的表示,自然语言表示法,2.1节例子介绍的算法是用自然语言表示的用自然语言表示通俗易懂,但文字冗长,容易出现歧义性用自然语言描述包含分支和循环的算法,不很方便除了很简单的问题外,一般不用自然语言,传统的程序流程图,用一些图形符号形象直观的表述算法,上表给出了ANSI 规定的程序流程图符号。,流程图是用一些图框来表示各种操作用图形表示算法,直观形象,易于理解,x0,Y,N,一个入口,两个出口,传统的程序流程图,位置不够,防止交叉,传统的程序流程图,例2.4 将例2.1的算法用流程图表示。求12345如果需要将最后结果输出:,1t,输出t,i5,
23、开始,2i,t*it,i+1i,结束,N,Y,通过以上几个例子可以看出流程图是表示算法的较好的工具一个流程图包括以下几部分:(1)表示相应操作的框(2)带箭头的流程线(3)框内外必要的文字说明流程线不要忘记画箭头,否则难以判定各框的执行次序,传统的程序流程图,特点:绘制简单,描述直观,之前广泛使用。缺点:程序流程图不易表示算法或程序的层次结构。用箭头表示的控制流可能引起随意的转移控制。可能诱使人们过早地考虑局部程序的控制结构而忽视全局的程序结构。不易表示数据结构和程序模块之间的关系。,传统的程序流程图,NS图表示法,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程
24、图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框。,这种流程图又称NS结构化流程图(N和S是两位美国学者的英文姓名的第一个字母)。这种流程图适于结构化程序设计,因此很受欢迎。,N-S流程图用以下的流程图符号:,顺序结构,选择结构,循环结构(当型),循环结构(直到型),NS图表示法,用伪码表示算法,伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图形符号,因此书写方便,格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。,BEGIN(算法开始)1=iWhile ii1=i While i=80 and gi
25、iEND(算法结束),前例用伪代码表示算法如下:,用计算机语言表示算法,要完成一项工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。,用C语言程序实现前例如下,#include/*打印出50名同学中成绩在80-90分者*/main()int i,g50,n50;for(i=0;i=80),fc1.c,2.1 算法的概念2.2 算法的特性2.3 算法的表示2.4 结构化程序设计方法,2.4 结构化程序设计方法简介,荷兰学者E.W.dijkctra提出了结构化程序设计(structured programming)的理论,成为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 完整版 精华
链接地址:https://www.31ppt.com/p-3146170.html