语言基础1学习.pptx

上传人:莉*** 文档编号:74030313 上传时间:2023-02-24 格式:PPTX 页数:35 大小:196.03KB
返回 下载 相关 举报
语言基础1学习.pptx_第1页
第1页 / 共35页
语言基础1学习.pptx_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《语言基础1学习.pptx》由会员分享,可在线阅读,更多相关《语言基础1学习.pptx(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、思考11、现有两个容积相等的容器X和Y,里面装的都是水(水的多少不一),如何将两个容器里的水交换?需要借用一个容积相同的容器,比如Z第2页/共35页第1页/共35页思考22、上一题中,假设是两个容积不相等的容器X和Y,能否交换?第3页/共35页第2页/共35页思考33、现有两个容器,一个水瓶和一个竹篮,水瓶里装的是水,竹篮里装的是石头,两个容器里的东西能否交换?第4页/共35页第3页/共35页2.1.1 数据类型这是个有类型的世界1/3问题1:现实生活,有哪些信息可以用计算机可以管理呢?职工、学员、客户、工资、原材料、产品、商品现实中实现用计算机管理的信息已是无数。问题2:职工又有什么信息呢?

2、职工有姓名、性别、出生年月、家庭住址、电话,婚否、工龄、工种、工资、等等。这两个问题你可能回答得不错,现在,考验你前面有没有认真学习的时刻到了,请看下面这个问题:所有的这些信息,在计算机里都是以什么样的数据形式来表达呢?请自觉闭上眼睛,想一想。第5页/共35页第4页/共35页这是个有类型的世界2/3再看以下的各种回答。“二进制数”,正确。“已数字化的数据”,也算正确。“0和1”,正确。“机器语言”,正确,你还记得以前讲过的内容啊,不错。本章需要继续的一个问题就由此开始:所有的信息都用机器语言那些0 0和1 1表达,那你我编写程序岂不很难?第6页/共35页第5页/共35页这是个有类型的世界3/3

3、数据类型,就是计算机语言向人类语言靠近时,走出的第一步,很重要的一步。(机器语言或汇编语里,没有数据类型一说。)人类的世界,是有类型的世界。树木花草,归一类:植物;猪狗猫羊,动物;金银铜铁,金属;你我他她,人类。(不要告诉我你不是人类,在这虚拟的网络的世界)如果你找一个人,对他说:“你等于一块臭石头”,他一定暴跳如雷。为什么呢?学了这一章,我们就可以从程序的角度来解释了:人和石头不是一类型,不适于做赋值操作。上帝创造世界时,是不允许人“类”变为石头“类”的。(想和上帝做同行?快做个程序员吧。)第7页/共35页第6页/共35页理解数据类型“数据类型”就是这么一个很好理解的概念。我们的重点是了解在

4、计算机编程世界中,有哪些基本的数据类型?在人类世界里,数据类型那就多了,把人类的对万物划分类型的方法照搬入计算机世界,显然不可能。怎么办呢?方法就是:抽象。计算机先哲们为我们做了这一切。其中,最重要类型,也称为C/C+C/C+语言的基本数据类型,只有两个:“数值”和“字符”。第一是“数值型”。在职工的信息中,譬如年纪,工龄、工资就有了归属。第二是“字符型”。像职工姓名或家庭住址,这些由字符类型的数据组成。你可能想不到的还有,职工的电话号码 010-1234567 010-1234567,这也是由字符类型数据组成。0 0、1 1、2 2、3 3不是数字吗?应该属于上面的“数值”类型吧?-把两个电

5、话号码进行相加或相减的操作是没有意义的。在C/C+C/C+中,“字符类型”其实也可归入数值类型。在某些情况下,它仍然会被用来参与计算。比如在计算机中,字符A A加1 1后,会得到下一个字符B B,这种操作符合我们的习惯。第8页/共35页第7页/共35页理解数值型:整型和实型1/21/2“数值类型又被分为“整型(int)int)”和“实型(float)float)”。整型就是不带小数位的数,而实型则是指带小数位的数,也称为“浮点数(float)float)”。我们在生活中一般并不做如此区分。譬如说鸡蛋的价格罢,今儿便宜了,一斤2 2块整,但这不防碍明儿价涨了,我们说成:涨了,2.302.30元一

6、斤。在编程时可不能这样,你必须事先考虑到鸡蛋的价格是必须带小数的,就算现在是2 2块整,也得将价格定为实型,否则,涨成2 2块3 3时,计算机会把那0.30.3元给丢了,还是变成2 2元整。你会问:为什么不直接就定一个实型就好呢?实型不就包含了整型的值吗(如2.02.0等于2 2元)?第9页/共35页第8页/共35页理解数值型:整型和实型2/22/2答案很简单:因为在计算机里,对整数的运算要远远快于对浮点数的运算,所以,在人类的思维习惯与计算机特点之间,必须做一个折衷。折衷的结果就是虽然都是数值类型,但程序员在程序时,必须事先想好,哪些数据是必须带小数计算的,那些数据定为实型,比如工资,没有哪

7、个员工会认为老板可以将自已工资中的小数位忽略不计;而那些可以不用,或者可以不计较小数的数值,则被建议设计成整型,比如人的年纪,虽然可以,但我们很少需要有类似1.61.6岁这种说法。想想,假如一位女士说自已2828岁,而你却立刻纠正她:“不,准确地说,您已经28.728.7岁了”结局会怎样呢?为了那0.70.7岁,不仅你的程序会跑得慢,而且会倍受女人的白眼杀伤。想想其实也很自然:工资必须设计成实型,而年龄虽然不是必须,但建议设计成整型。第10页/共35页第9页/共35页理解数值的范围1/31/3顾及计算机的运行速度,人(程序员)做出了妥协,必须面对“整型”或“实型”的考虑。另一方面,和速度同样重

8、要的是计算机的空间的考虑。它让程序员必须再做一步妥协。小时候你一定有过这样的经历:你说100100,另一个小伙伴就说101101。你说10001000,他就说10011001,你说1000010000,他就说:那我1000110001。总之他就是要比你大1 1。这种游戏不会有分出胜负的结局,只会让你郁闷为什么就不能有个最大数让你说了以后,那家伙就再了无法往上加1 1了!现在你学编程,儿时的“妄想”终于在计算机的世界中实现了。在计算机世界中,你可以说一个数,当别人再住这个数加1 1时,真不幸,计算机会告诉他说:加1 1是加1 1了,可是结果变成0 0,甚至是负数。第11页/共35页第10页/共3

9、5页理解数值的范围2/32/3这就是计算机的空间问题:任何一个量,都有一个大的上限,和小的下限,出了这个范围(比上限还大,比下限还小),就会称为溢出(Overflow)Overflow)。这是一种物理的现实,也是一种人为的规定。为什么要这样规定?原因是计算机的存储器,特别是其中很重要的内存,其可存储的数据多少总是有限度。(而且,同样大小数,2 2进制的表达形式比1010进制长得多),如果允许编程像生活中一样任何一个数都可以很大很大,也就是这个量表达起来将很长很长,那么存储器的空间就会很快用完!(无穷大就不用说了,因为不可能有无穷大的存储器)。第12页/共35页第11页/共35页理解数值的范围3

10、/33/3数值类型在被划分为整型和实型后,将根据所占用的空间而被继续划分为几种不同类型。而我们,在考虑工资必须设计成带小数的实型后,必须再面对一个设计上的考虑,工资这个量在程序里要占多大空间?依据其实很简单,就看你的单位最高月薪是多少,凭此找到一个合适的类型。比如月薪不超过1 1万元,那我们选择一个刚刚可以包含1000010000的数据类型。任何一种基本数据类型,都有其范围。比如字符类型,它的最大值是255,255,那么,当一个数在其类型的范围已经是最大值时,如果再往上加1 1,就会造成“溢出”。举例:2 2字节的整型,求其取值范围。其实,有限定的范围的数量,并不只在计算机中出现。钟表就是一个

11、例子。1010点再加1 1点是1111点,再加1 1点是1212点,可是再加1 1点,就又回到1 1点。再如汽车的行程表,假设最多只能显示9999999999公里,当达到最高值后继续行驶,行程表就会显示为0000000000公里。第13页/共35页第12页/共35页理解有符号数与无符号数1/21/2回头看上一节,我们所讲的数都是正数。同样是年纪和工资,前者不需要有负值,但后者可能需要至少所有的老板都这样认为。就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。在计算机中,可以区分正负的类型,称为有符号类型signedsigned,无正负的类型(只有

12、正值),称为无符号类型unsignedunsigned。数值类型分为整型或实型,其中整型又分为无符号类型或有符号类型,而实型则只有有符号类型。字符类型也分为有符号和无符号类型。那么,负数在计算机中如何表示呢?答案是:负数用补码表示!思考1:单字节数和双字节数的 1 在计算机里是怎么表示的?思考2:无符号类型的单字节数255在计算机里是怎么表示的?第14页/共35页第13页/共35页理解有符号数与无符号数2/22/2可能有同学这时会混了:为什么 1111 1111 1111 1111 有时表示255255,有时又表示-1-1?答案:你自已决定一个数是有符号还是无符号的。写程序时,指定一个量是有符

13、号的,那么当这个量的二进制各位上都是1 1时,它表示的数就是-1-1;相反,如果事选声明这个量是无符号的,此时它表示的就是该量允许的最大值,对于一个字节的数来说,最大值就是255255。第15页/共35页第14页/共35页基本数据类型1/3C语言中的数据类型主要包括以下几种:基本类型:基本类型:整型整型、实型实型(浮点型)、(浮点型)、字符型字符型、空类型空类型构造类型:数组、结构、联合、指针类型构造类型:数组、结构、联合、指针类型第16页/共35页第15页/共35页基本数据类型2/3标识符类型说明长度(字节)范围备注charchar字符型1-128 127-27 (27-1)unsigned

14、 charunsigned char无符号字符型10 2550(28-1)intint整型4-2147483648 2147483647-231 (231-1)unsigned intunsigned int无符号整型40 4294967295 0 (232-1)short intshort int短整型2-32768 32767-215 (215-1)unsigned unsigned short intshort int无符号短整型20 655350 (216-1)floatfloat实型(单精度)4-1.18*1038 3.40*1038 7位有效位doubledouble实型(双精度)

15、8-2.23*10308 1.79*10308 15位有效位 long double实型(长双精度)16-10493110493219位有效位void空类型00第17页/共35页第16页/共35页基本数据类型3/3有有 short int(short int(短整型短整型),),所以也就有对应所以也就有对应 long int long int(长整型)。长整型)。long int long int 用于表示用于表示4 4个字节(个字节(3232位)的整位)的整数。数。在我们现在普通使用的在我们现在普通使用的3232位计算机中,位计算机中,int int 默认就是默认就是4 4个个字节,所以字节

16、,所以longlong也是可以省略的(也是可以省略的(long int long int 和和 int int 完完全一样)。全一样)。(较早几年,也就是(较早几年,也就是Windows 3.1/DOS Windows 3.1/DOS 流行的时候,那流行的时候,那时的机器及操作系统都是时的机器及操作系统都是1616位的,这种情况下,位的,这种情况下,int int 默默认是认是1616位的。此时,如果想实现位的。此时,如果想实现3232位整数,就必须定义位整数,就必须定义为这样的类型:为这样的类型:long intlong int)。)。在浮点数方面,我们最常用的将是在浮点数方面,我们最常用的

17、将是 doubledouble。它的精度适它的精度适合于我们日常中的各种运算。当然,合于我们日常中的各种运算。当然,floatfloat的精度也在很的精度也在很多情况下也是符合要求的。多情况下也是符合要求的。第18页/共35页第17页/共35页2.1.2 常量C语言中的数据,有常量常量和变量变量之分,它们分别属于上述这些数据类型。常量常量:程序运行过程中,其值不能被改变的量。常量分为不同的类型:整型常量、实型常量、字符常量整型常量、实型常量、字符常量,这种从其字面形式即可判断的常量称为字面(直接)常量字面(直接)常量。通常,常量还以一种符号形式存在(即用符号代表一个常量),称为符号常量符号常量

18、。如:#definePI3.1416#defineSalary_Wang1200 含义清晰 能做到“一改全改”问题:使用符号常量的好处?第19页/共35页第18页/共35页整型常量的表示方法 整型常量即整常数,在语言中可用三种形式表示:十进制。例如十进制。例如10、36。八进制(以数字开头)。例如八进制(以数字开头)。例如012。十十六六进进制制(以以数数字字+字字母母x(大大小小写写均均可可)。例例如如0 x36。有时,你也会看到一些老的代码中,在一些整型常后面加一个大写或小写的 L 字母。如:989L 这是什么意思呢?原来,一个常数如果其范围允许,那么计算机默认将其认为是 int 类型的,

19、那么要让计算机把某个数认为是 long int类型,就可以在其后面加 L 或 l。不过,这在以前的16位机器才有意义了。现在,我们的机器都是32位,long int 和 int 完全一样,都是占用4个字节,所以,我们没有必要这样用了。第20页/共35页第19页/共35页实型常量的表示方法1/2 实型数在语言中称为浮点(float)数,它有两种表示形式:使用十进制表示。例如:3.14、9.8。指数形式:E(e)。例如3.0+5等。在此需要注意的是“规范化的指数形式规范化的指数形式”的写法。即:在字母e或E之前的小数部分中,小数点前应该有且仅有一个非零的数字。第21页/共35页第20页/共35页实

20、型常量的表示方法2/2我我们们学学过过的的实实数数数数据据类类型型有有:float,double,long float,double,long doubledouble。默默认认的常数类型是的常数类型是doubledouble。比如你写:比如你写:1.234;1.234;那么,那么,C+C+按按doubledouble类型为这个数分配内存,也就是说为它分配类型为这个数分配内存,也就是说为它分配8 8个字节。如果要改变这一点,可以通过加后缀字母来实现。个字节。如果要改变这一点,可以通过加后缀字母来实现。加加 f f 或或 F F,指定为指定为floatfloat类型。类型。加加 l l 或或 L

21、,L,指定为指定为doubledouble类型。类型。以下示例:以下示例:12.312.3f f/float/float类型类型12.312.3/默认类型(默认类型(double)double)12.3L12.3L/long double/long double类型类型1.231.23e400e400/long double/long double类型,因为值已不在类型,因为值已不在doubledouble类型的取类型的取值范围内值范围内2.23*10-3081.79*10308第22页/共35页第21页/共35页字符型常量的表示方法 在语言中,字符型常量是用单引号括起来的一个字符。例如,A、

22、等。此外,语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符转义字符(意思是将反斜杠后面的字符转化为别的意思,见教材P28表表2.2)。问题问题:为什么要使用转义字符。第23页/共35页第22页/共35页字符数据在内存中的存储 字符类型关键字为char,所有的C系统都规定以一个字节来存放一个字符。实际上,这一个字节的存储空间存放的是该字符相应的ASCII值。所以,字符型数据和整型数据是通用的。C语言的这种对字符型数据的处理方法增大了编程的自由度(例子:大小写字母转换)。另外,字符型变量也有两种:char、unsigned char,在使用时,要想输出ASCII表后128位的字

23、符,就要使用unsigned char类型。思考题思考题:用字符形式输出一个大于256的数值,会得到什么结果?第24页/共35页第23页/共35页字符串常量 字字符符串串常常量量是由一对双括号括起来的若干字符序列。字符串中字符的个数称为字字符符串串长长度度。长度为0的字符串(即一个字符都没有的字符串)称为空串空串,表示为“”(一对紧连的双引号)。问题:求字符串“Howdoyoudo!”的长度?答案:14(空格也是一个字符)。如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例如:(1)C:msdosv6.22 C:msdosv6.22 (2)I say:Goodbye!I say:

24、Goodbye!第25页/共35页第24页/共35页字符串的存储 C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。注意注意:在源程序中书写字符串常量时,不必加结束字符0,否则画蛇添足。如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:CHINA0 最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。第26页/共35页第25页/共35页字符与字符串的比较 定界符不同定界符不同:字符常量使用单引号,而字符串常量使用双引号;长度不同长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;存储要求不同存储要求不同:

25、字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。第27页/共35页第26页/共35页2.1.3 变量 变量变量:在程序运行过程中,其值可以被改变的量。一个变量应该有一个名字,用以标识别自己;另外,它还要在内存中占据一定的存储单元,用以存放数据。所以,变量具有两个要素:变量名变量名(变量命名遵循标识符命名规则);变量值变量值。实际上,变量名是一个符号地址,在编译连接时由系统分配一个内存地址。在程序运行过程中,变量值存储在内存中,并通过变量名来引用变量的值第28页/共35页第27页/共35页变量的定义 在语言中,要求对所有用到的变量,必须“先定义

26、、后使用先定义、后使用”。变量定义的一般格式:存储类型存储类型数据类型数据类型变量名变量名,变量名变量名2;例如:floatradius,length,area;变量定义的好处:保证变量在程序运行过程中得以正确使用。便于系统在编译过程中分配不同的存储空间。便于对变量使用合法性的检验。第29页/共35页第28页/共35页变量的初始化 在语言中,我们对变量赋值可以使用赋值语句也可以在定义时直接初始化。我们称在定义变量的同时进行赋初值的操作为变量初始化。变量初始化的一般格式:存储类型存储类型 数据类型数据类型 变量名变量名=初值初值,变量名变量名2=初值初值2;例如,float radius=2.5

27、,length,area;实际上,变量的初始化在程序进行解释时相当于一个赋值语句。如上式实际为:float radius,length,area;radius=2.5;思考:如果我们不赋初值,变量是否就没有值呢?第30页/共35页第29页/共35页各种数据类型间的混合运算(1)在语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。如果一个运算符两侧的操作数的数据类型不同,则系统按“先先转转换换、后后运运算算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。第31页/共35页第30页/共35页各种数据类型间的混合运算(2)横横向向向向左左的的箭箭头

28、头,表表示示必必须须的的转转换换。char和和short型型必必须须转转换换成成int型型,float型型必必须须转转换换成成double型。型。纵纵向向向向上上的的箭箭头头,表表示示不不同同类型的转换方向。类型的转换方向。注注意意:1、箭箭头头方方向向只只表表示示数数据据类类型型由由低低向向高高转转换换,不不要要理理解解为为int型型先先转转换换成成unsigned型型,再再转转换换成成long型型,最最后后转转换换成成double型型。2、结结果果为为其其中中的的高高级级类类型型。3、上上述述转转换换为为系系统统自自动完成。动完成。转换规则如图所示。小容器无法装超出容量的东西。大容小容器无

29、法装超出容量的东西。大容器可以装小于容量的东西。器可以装小于容量的东西。doublelongunsignedint高高低低floatchar,short第32页/共35页第31页/共35页强制类型转换 除自动转换外,语言也允许强制转换。数据类型强制转换的一般格式为:(要转换成的数据类型要转换成的数据类型)(被转换的表达式被转换的表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如:(double)a 等价于(double)(a)求值:(float)5/2、(float)(5/2)注意注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。第33页/共35页第32页/共35页课后习题 P552、3、4、12、15、21、23第34页/共35页第33页/共35页上机安排q编写第一个C语言程序(P24-11)。q调试或改写例题1-1 和 1-2q 实验一第35页/共35页第34页/共35页感谢您的观看!第35页/共35页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁