(C语言程序设计)课件.ppt
《(C语言程序设计)课件.ppt》由会员分享,可在线阅读,更多相关《(C语言程序设计)课件.ppt(164页珍藏版)》请在三一办公上搜索。
1、,C语言程序设计,For 123高计网,上学期有点失败,C语言用于做什么?,学习高级程序设计的基础,C程序设计语言的地盘,硬件(Hardware),操作系统(OS),应用程序(Application),应用平台,基于平台的应用程序,低级语言的地盘,高级语言的地盘,C语言的地盘,C语言最擅长什么?,与硬件打交道资源消耗少效率要求高,现状?,关系族谱图,专业中的作用?,网页网站设计,计算机二级C?,软件设计,难不难?,听说:除了难,还是难!,我们怎么学?,程序设计诀窍:,多看,多练,多动手,抓住原理,人的脑袋对数据的处理对比程序对数据的处理!,一点建议,自己多看书!,考核方法,What is a
2、computer?,目前的PC机可每秒执行十亿次加法人用计算器一生也完不成PC机1秒钟完成的计算量,What is a computer?,硬件(hardware)键盘、鼠标、显示器、硬盘、DVDs、内存、CPU硬件成本下降很快摩尔定律每过18个月微芯片的集成度翻一番,而芯片价格保持不变软件(software)运行于计算机之上的程序(Program)如何降低软件开发成本?,计算机如何工作,很像厨师的菜谱,定义了执行某个任务所需的步骤但不幸和不同的是,你不能使用你自己的母语来写Code,What is programming language?,C程序设计语言的地盘,以往的擅长:与操作系统和基础
3、工具有关的编程任务操作系统核心,设备驱动程序,系统工具,网络应用,编辑器,字处理工具,编译器,某些图形和GUI应用,以及数据库应用未来的发展:高性能、实时中间件,嵌入式领域,并发程序设计等,机器语言,计算1+1,101110000000000100000000000001010000000100000000,汇编语言,BASIC语言,PRINT 1+1,C语言,#include main()printf(%dn,1+1);,C语言的创世纪,一切从一个叫“Space Travel”的电子游戏开始为了让他的游戏能在PDP-7上运行,Ken Thompson用汇编语言给PDP-7写了一个操作系统UN
4、IX汇编太不好用了,Thompson需要高级语言试验了一些高级语言,包括Fortran,都不理想他在BCPL基础上,自己设计了一个B语言UNIX开始发展,B也不够用了Dennis Ritchie加入,把B改造成C开始用C重写UNIX,Ritchie和Thompson在开发UNIX,接受美国国家技术勋章,C程序设计语言,是一种高级语言高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程历史悠久,战勋卓著诞生于上世纪70年代初,成熟于80年代(C89),修订与90年代(C99)很多重量级软件都是用C写的上天入地,无所不能几乎没有不能用C写出来的软件,没有不支持C的系统很多流行语言、新
5、生语言都借鉴了它的思想、语法从C+,到Java,再到C#,还有php等,C语言的祖师爷Dennis M.Ritchie,Ritchie漫画像,C is quirky,flawed,and an enormous success.,计算机基本工作过程,整个过程的执行者是硬件,但硬件是受软件控制的编程,就是编写软件,使硬件按照人的意图工作,编译运行,编译过程程序员(Programmer)编写程序源代码(Source Code)编译器(Compiler)把源代码转换为可被计算机理解的机器代码(Machine Code),并把机器代码以可执行文件(Executable File)的形式保存在磁盘上软件
6、的运行计算机把机器代码读入到内存(Memory),由CPU运行这些代码,读取输入(Input),产生输出(Output),完成程序员预定的功能,编译语言,一种编译语言对应一种编译器程序员按照该语言的语法编写程序源代码,把自己的意图融入到代码中编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用,C语言,可执行程序,编译器,解释运行,解释运行过程程序员编写程序源代码解释器读入源代码,并执行源代码解释运行的语言特点执行速度慢好学易用先编译、后解释把源代码编译成更容易解释的中间代码,然后再解释运行,C程序设计语言,第1章 观其大略,简单数学题目求解步骤,题目:,从学校到石阡路费多少钱?,设变
7、量,x为学校到汽车站车费,y为汽车站到石阡车费,设变量,z为全部车费,分析题目,到石阡路线怎么走(学校-汽车站-石阡),得出到石阡车费式子(表达式):,简单程序求解步骤,题目:,从学校到石阡路费多少钱?,设变量,x为学校到汽车站车费,y为汽车站到石阡车费,设变量,z为全部车费,分析题目,到石阡路线怎么走(学校-汽车站-石阡),得出到石阡车费式子(表达式):,编写程序,实现功能!,简单程序实现方式1,void main()/主函数(程序入口)int x,y,z;/设变量x=10;/变量赋值y=40;z=x+y;/得出结果50元x=8;/变量赋值y=40;z=x+y;/得出结果48元,有什么缺点?
8、,简单程序实现方式1,void main()/主函数(程序入口)int x,y,z;/设变量z=huijia(10,40);z=huijia(8,40);,int huijia(int a,int b)/求路费函数int z;/设变量z=a+b;return z;,实现一个功能,解答数学与编程之相同,设变量作为存储数据如:x,y,z表达式如:z=x+y;z=x*y;函数实现某一功能Y=f(x);,解答数学与编程之不同,变量存储空间如:x,y,z不管空间,因在脑子里变量有类型如:x因在脑子里,你想它放什么就放什么但电脑是具体存放地方必须有类型,如口袋函数是将多个计算式子包括起来,数学仅仅是一个表
9、达式如:抛物线函数,C语言编程几个关键概念,变量用于存放数据表达式如:z=x+y;如:xy函数多个表达式构成的一个功能模块,C语言程序结构,下课后去食堂吃饭,下课拿好书等,下楼走到食堂,指定饭菜刷卡,吃饭,拿饭菜,开始,结束,C语言程序运行,int x,y,z;,Void main(),入口,Int z;z=a+b;,int huijia(int a,int b),z=50;,z=48;,返回,Hello,World,#include main()printf(hello,worldn);超级无敌考考你:如何把“hello”和“world”分别打印在两行?,hello.c,打印华氏温度与摄氏温
10、度对照表,计算公式:C=(5/9)(F-32),打印华氏温度与摄氏温度对照表,#include/*对 fahr=0,20,.,300 打印华氏温度与摄氏温度对照表*/main()int fahr,celsius;int lower,upper,step;lower=0;/*温度表的下限*/upper=300;/*温度表的上限*/step=20;/*步长*/fahr=lower;while(fahr=upper)celsius=5*(fahr-32)/9;printf(%dt%dn,fahr,celsius);fahr=fahr+step;,fc1.c,代码风格,#include/*对 fahr
11、=0,20,.,300 打印华氏温度与摄氏温度对照表*/main()int fahr,celsius;int lower,upper,step;lower=0;/*温度表的下限*/upper=300;/*温度表的上限*/step=20;/*步长*/fahr=lower;while(fahr=upper)celsius=5*(fahr-32)/9;printf(%dt%dn,fahr,celsius);fahr=fahr+step;,fc1.c,更简单、精确的对照表打印程序,#include#define LOWER 0/*表的下限*/#define UPPER 300/*表的上限*/#defi
12、ne STEP 20/*步长*/*打印华氏-摄氏温度对照表*/main()int fahr;for(fahr=LOWER;fahr=UPPER;fahr=fahr+STEP)printf(%3d#%6.1fn,fahr,(5.0/9.0)*(fahr-32);,fc2.c,字符输入输出,c=getchar()从键盘读入一个字符,赋值给变量cputchar(c)把c输出到屏幕拷贝的基本思想:读一个字符while(该字符不是文件结束指示符)输出刚读进的字符读下一个字符,拷贝(Copy),#include/*用于将输入复制到输出的程序;第1个版本*/main()int c;c=getchar();w
13、hile(c!=EOF)putchar(c);c=getchar();,copy1.c,一个更好的版本,#include/*用于将输入复制到输出的程序;第2个版本*/main()int c;while(c=getchar()!=EOF)putchar(c);,copy2.c,计算行数,#include/*统计输入的行数*/main()int c;long nl;nl=0;while(c=getchar()!=EOF)if(c=n)nl+;printf(%dn,nl);,counter.c,加法器,#include/*计算输入的两个整数的和*/main()int a,b;printf(Pleas
14、e input two integers:);scanf(%d%d,add.c,平均分,#include/*计算某科成绩的平均值*/#define TOTAL_NUMBER 10/*总人数*/main()float sum=0,scoreTOTAL_NUMBER;int i;printf(Input%d scores:n,TOTAL_NUMBER);for(i=0;iTOTAL_NUMBER;i+)scanf(%f,average.c,函数(Function),前面使用了系统提供的函数:printf,scanf,getchar,putchar使用函数时,我们不用知道这个函数内部是如何运作的,只
15、按照我们的需要和它的参数形式调用它即可我们也可以定义自己的函数“一个程序应该是轻灵自由的,它的函数就象串在一根线上的珍珠。”(编程之道),power函数,/*power:求底的n次幂;n=0*/int power(int base,int n)int i,p;p=1;for(i=1;i=n;+i)p=p*base;return p;,power.c,power函数的调用(Call),#include int power(int base,int n);/*测试power函数*/main()int m,n;m=power(2,1);n=power(-3,3);printf(%d%dn,m,n);
16、return 0;,power.c,这一章我们学到了,#include#definemain()printf(),scanf()getchar(),putchar()=,=,!=int,long,float数组while,for,if代码风格注释、缩进、空行、命名函数,C程序设计语言,第2章 类型、运算符与表达式,标识符(Identifiers),用户自定义的符号叫标识符如变量名、函数名、宏和类型名标识符由字母、数字和下划线组成,大小写敏感不可以是数字开头标识符要直观,能表达它的功能下划线和大小写通常用来增强可读性variablenamevariable_name,VARIABLE_NAMEV
17、ariableName,variableName关键字(keyword)不可作为标识符int,float,for,while,if等(教材164页)某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i,j,k,基本数据类型(Data Type),int整数,在目前绝大多数机器上占4个字节TC2中是2个字节所占字节数取决于机器字长float单精度浮点数,一般是4个字节长double双精度浮点数,一般是8个字节长char字符,一般是1个字节长用来表示256个ASCII字符,或者0255的整数,数据类型修饰符,shortshort int,短整数,一般2个字节长。通常简写为shortlo
18、nglong int,长整数,一般是4个字节长。通常简写为longlong double,高精度浮点数,一般是10个字节长。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0),超出取值范围会怎样?,TC2中int的范围是-3276732767如果我们给它一个小于-32767或者大于32767的数会如何呢?现场编程测验,小蛇能吞下大象吗?,溢出(Overflow)造成的危害,一台安装了Windows
19、 95/98的机器,如果连续运行49.7天没有重新启动,可能死机 原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量unsigned long的最大值是:4294967295一天有 24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805当49.7天的时候,此计数器会溢出,引起死机,浮点数的陷阱,#include main()float f;f=123.456;if(f=123.456)printf(f is equal to 123.456 indeed.
20、);elseprintf(In fact,f is equal to%fn,f);运行结果会是什么?,float.c,浮点数的陷阱,float的精度低,较易发生精度带来的相等性判断问题double精度高,这个问题发生的概率小一些,但也存在解决办法:if(fabs(f 123.456)1E-5),根据精度要求设定,使用变量要注意,不要对变量所占的字节数想当然用sizeof获得变量或者数据类型的长度用ANSI C定义的宏确定数据的表示范围,解决溢出问题,sizeof.c,常数(Constant),整型常数123、456123456123l、123L、123456l、123456L浮点常数123.4
21、5、456.781e-2、4.5e3123.45f、456.78F、1e-2f、4.5e3F123.45l、456.78L、1e-2l、4.5e3L,八进制与十六进制常数,以数字“0”开始的整型常数是八进制数010和10大小不一样因为八进制并不常用,所以此种表示法比较少见,因而常被用错以“0 x”或者“0X”开始的整型常数是十六进制AF和af用来表示十进制的10150 x11,0 x05,0 xFA,0 xFF十六进制的形式比较常用,尤其在进行位一级的控制的时候,字符常数,字符常数的表示方法a,A,5,%,$单引号内只能有一个字符,除非用“”开头就是一个普通整数,也可以参与各种数学运算每个字符
22、具有一个0255之间的数值,可从ASCII表查出注意:5和5的区别,A和A的区别字符的数学运算在密码学内用得比较多,ascii.c,字符常数,转义字符一些特殊字符(无法从键盘输入或者在C语言里有它用)用转义字符表示转义的思想在网络协议和文件格式中经常使用,字符串(String)常数,用双引号括住的由0个或多个字符组成的字符序列I am a string表示空字符串转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部用0表示字符串的结束除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数,枚举(Enumeration)常数,一个几乎被遗忘的角色从程
23、序来窥其一斑 enum weeks MON,TUE,WED,THU,FRI,SAT,SUN;enum weeks today,tomorrow;today=MON;tomorrow=today+1;if(tomorrow=TUE)printf(Tomorrow is Tuesday.n);else printf(Tomorrow is NOT Tuesday.n);,enum.c,变量声明,变量必须“先定义,后使用”所有变量必须在第一条可执行语句前定义声明的顺序无关紧要一条声明语句可声明若干个同类型的变量,变量名之间用逗号分隔变量定义后,即占用内存,可向其存入各种数据,并可通过变量名使用数据声
24、明变量,是初始化变量的最好时机不被初始化的变量,其值为危险的随机数char esc=;int i=0;int limit=MAXLINE+1;float eps=1.0e-5;,常量,用const修饰定义的变量为常量const int i=0;常量只能在定义时赋值,然后不能再改变其值常数、常量、宏和枚举,都可以用来表示一个永远不会改变的数前者不建议直接使用,而用后三者代替后三者的工作机理是完全不同的,达到的效果也不尽相同,计算机只会计算任何事物都要被表示成数字和公式的形式后,才能被计算机计算(被计算机处理)事物到数字和公式的转换过程叫数学建模因为:事物在计算机内的处理都是一种计算又因为:计算就
25、要有操作数、运算法则和计算结果所以:事物在计算机内的处理都有操作数、运算法则和计算结果计算结果你可以留用,也可以忽略,算术运算符,+,-,*,/加、减、乘、除运算四则混合运算中,先算乘除,后算加减,先算左,后算右%求余运算,C语言中的运算,关系运算符,,=,=,=,!=大于,大于等于,小于,小于等于,等于,不等于关系运算符运算出的结果为0和10,表示假,即该关系不成立1,表示真,即该关系成立在所有涉及到真假判断的地方,0表示假,非0表示真,找别扭,int a=1;if(a=0)printf(OK);int a=0;if(a=0)printf(OK);,int a=1;if(a=0)printf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件
链接地址:https://www.31ppt.com/p-6234432.html