已阅读5页,还剩111页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,2,程序设计语言:用于书写计算机程序的语言,用于表达和描述要加工的数据以及求解问题的步骤和过程。是根据预先定义的规则(语法)、由一个有限字母表上的字符构成的字符串的总体。程序设计语言的基本成分:数据成分。用以描述程序中所涉及的数据。运算成分。用以描述程序中所包含的运算。控制成分。用以表达程序中的控制构造。传输成分。用以表达程序中数据的传输。,3,提纲,标识符数据类型变量常量输入和输出表达式语句函数,本章结合C语言向大家介绍结构化程序设计语言的基本概念,数据成分,传输成分,运算成分,控制成分,4,先聊点C语言,5,6,数据总线,控制总线,地址总线,实例:编一个程序,从键盘读入两个整数,要求在屏幕上输出相乘运算结果。,处理步骤:1.控制部件发命令从键盘读取数据并存储到内存储器中(输入)。2.控制部件发命令从内存储器中取出这两个数置入运算部件的寄存器中,让运算器执行乘法运算,运算结果写回存储器中(处理)。3.控制部件发命令将存储在内存储器中的结果输出到显示器上(输出)。,需要考虑的问题:1.输入:如何从键盘读取这两个数并将其存放到内存中?程序如何约束输入的必须是整数?2.处理:计算时如何读取内存中的这两个数?如何实现计算?计算结果如何写回内存?3.输出:如何将内存中的计算结果输出到显示器?,7,数据总线,控制总线,内存中数据的存取:变量、常量、数据类型,输入:输入语句,输出:输出语句,地址总线,计算的实现:运算符表达式语句函数,8,标识符是由程序员定义的单词,用来给程序中的数据、函数和其他用户自定义对象命名。,程序设计语言本身会定义一些专用名称,称之为保留字或关键字,它们具有特定含义,程序员不能另做他用。如:C语言规定了32个关键字。,3.1标识符,9,C语言规定的32个关键字:autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifstaticwhile,10,#includemain()intnumber1;/*变量声明*/intnumber2;intresult;printf(“pleaseinputthetwonumbers:n”);/*显示提示信息*/scanf(“%d%d”,用户自定义标识符,C语言关键字,3.1标识符,11,不同的程序设计语言标识符格式可能不同。C语言规定:标识符由大写字母A到Z、小写字母a到z、数字0到9和下划线组成,且第一个字符必须是字母或下划线,随后的字符必须是字母、数字或下划线。且大小写敏感,如age和Age是两个不同的标识符。PASCAL语言规定:和C语言类似,只是要求第一个字符只能是字母(比C语言约束更强)。,3.1标识符,思考:以下哪些是合法的C语言标识符age,_class_no,name1,name1,2name,#age,12,数据是计算机处理的对象。数据依据其本身的特点可以归为不同的类:整数、小数、字符、字符串等。(高级程序语言特点:按照人对于数据的表达方式),程序设计语言应该具备区分各种类型数据的能力,于是引入了数据类型的概念。数据类型包括两层含义:定义了一系列的值(属于该类型的数据能够取值的范围)以及能应用于这些值上的一系列操作(数据操作)。,3.2数据类型,13,整数是由符号和一个或多个数字组成的正数、0或负数,又称为带符号的自然数,如+12,-38。注意:在数学中,整数是一个无限集合,但对于计算机来说,只能表示它的一个有限子集(取决于存储空间的大小)。,整型,3.2数据类型,程序设计语言一般包含四种标准数据类型:整型、字符型、浮点型和布尔型(补充)。,14,3.2数据类型整型,整型数据占用的内存单元数:C语言中整型数据细分为四类:shortint、int、longint和longlongint。(和教材不同)C语言标准没有规定每一种整数类型占用的内存空间大小(即数的范围),只是约束到:shortint和int至少要占据16位(2字节),而long数据至少要有32位(4字节);且数据长度上,shortint=int=,=,!=例如:Aa结果为真,因为A的ASCII是65,a的ASCII是97,65=,=,!=,3.2数据类型浮点型,注意:要避免做两个实数相等或不相等的比较。由于计算机表示方面的近似性,会使得本来应该相等的两个数不等。建议在比较两个浮点数X和Y是否相等时使用|X-Y|,其中是一个绝对值较小的正浮点数。,23,3.2数据类型布尔型(补充),布尔类型数据:取值只有两种,真(True)或者假(False)。允许的运算包括:与、或、非。绝大多数程序设计语言中有布尔类型这种数据类型,如Pascal语言。但是C语言没有定义这种数据类型。,布尔型,24,标准类型是原子的、不可再分的。程序员可以以标准类型为基本构件,构造出复杂的数据类型。如C语言有:结构、数组、联合、文件等复杂数据类型;PASCAL语言有:结构、数组、集合、文件等复杂数据类型。,3.2数据类型复杂数据类型,25,3.3变量,数据总线,控制总线,输入数据、中间运算结果、最终结果,程序需要将输入数据、中间运算结果以及最终结果暂时保存在内存单元中。,地址总线,程序如何实现从内存单元存取数据?,26,3.3变量,程序运行时,通过内存地址对内存数据进行读写;程序员写源程序时,如果也是直接使用内存地址来读写内存数据,会很麻烦!如果用名字来代替地址,在程序中出现的是代表内存空间的名字,让编译器来跟踪数据实际存放的物理内存地址,就可以简化编程变量;,27,变量用来代表内存存储空间,该存储空间用来存放被加工的数据或处理的结果。源程序中对变量的操作(读和赋值)实际上是对存储空间的读写操作。变量具有三个重要属性:名称、值和数据类型。,用gender代表地址为2001H的内存单元,score代表地址为2004H2007H的一片内存空间。用变量来实现对这些内存空间数据的存取。,3.3变量,28,一、变量定义,使用变量来对内存数据进行存取前,必须先定义变量,目的是建立变量和存储空间的对应关系。变量定义指明变量的名称和数据类型(变量代表的存储空间存放的数据的类型)。变量的名称要遵循标识符命名原则,虽然可以为任意长度,但C编译器只认为前31个字符有效。变量类型可以告诉编译器留出适量的用于保存数据的内存。不同语言中变量定义的写法不一样,C语言格式:数据类型变量名1,变量名2,;,3.3变量,思考:变量定义时要指明哪些内容?,数据类型,变量名,分号必须,多个同类型变量用逗号分割,29,注意,变量定义仅引起内存存储空间分配,但此时变量中存储的值一般是无意义的(特殊情况除外)!,变量定义将引起内存空间的分配。定义后,变量就用来代表内存中的一片存储单元(存储单元个数取决于变量类型)。,3.3变量,30,二、变量赋值,3.3变量,C语言示例:chargender;intage;floatscore;,变量赋值:把一个值写入变量代表的存储空间。,C语言变量赋值格式:变量名=表达式,gender=F;age=18;score=89.5;,ASCII(F)=77),77,18,89.5,变量的值,31,3.3变量,变量使用特点先定义,后使用。intage;定义一个变量为整数类型。如未定义,则在编译时被查出,认为非法。变量未被赋值前,值一般是无意义的。对变量赋值过程是“覆盖”过程,用新值去替换旧值。读取变量代表的存储空间数据(又称读取变量的值):age=age+1;读取变量的值时,该变量保持不变。,32,C语言允许变量在定义时进行初始化。初始化语句用来给变量赋初始值。例如:chargender;intage=16;floatscore;,3.3变量,33,3.3变量,试解释下列操作的含义读取变量的值写入变量给变量赋值修改变量的值,34,#include#includemain()intnumber1;/*变量声明*/intnumber2;intresult;printf(“pleaseinputthetwonumbers:n”);/*显示提示信息*/scanf(“%d%d”,3.3变量,35,3.3变量,找出下述变量定义的错误:floatf;charA,B;,36,总结:变量三要素:变量名(存储空间)、数据类型(存储空间存放的数据的类型)、变量值(存储内容),3.3变量,37,一、文字常量文字常量是指在程序中未被命名的值。例:circumference=2*(length+width);其中2就是一个文字常量,length和width是变量,三类常量:文字常量、命名常量、符号常量,3.4常量,38,二、命名常量和变量类似,命名常量也是内存存储空间的名字,代表一片内存存储空间,但一般不允许程序去改变该存储空间中的数据。C语言中定义一个命名常量:main()constfloatpi=3.14;,3.4常量,说明pi是个命名常量;,39,#include#includemain()constfloatpi=3.14;/*常量定义*/floatradius;/*变量定义*/floatarea;printf(“pleaseinputtheradius:n”);/*显示提示信息*/scanf(“%f”,40,符号常量是仅含有符号名称的值。C语言符号常量定义:#define标识符替换文本#definePI3.14area=PI*radius*radius;编译时,预处理程序能够将所有出现该符号名称的地方用值替换:area=3.14*radius*radius;使用符号常量的好处:使程序易读性好、容易维护。,三、符号常量,3.4常量,41,3.4常量,#include#include#definePI3.14/常量定义,注意结束处无分号main()floatradius;/*变量定义*/floatarea;printf(“pleaseinputtheradius:n”);/*显示提示信息*/scanf(“%f”,42,四、常量的类型和变量一样,常量也有类型。大多数程序设计语言使用整型、浮点型、字符型和字符串型常量。C语言中四种常量:15整型常量15.4浮点型常量A字符型常量(用单引号括起字符)“Hello”字符串型常量(用双引号括起字符序列)文字常量和符号常量的值体现了常量的类型,3.4常量,43,如果整型常量以0开头,C编译器会认为该常量是八进制数。如040即十进制的32。如果整型常量以0 x开头,C编译器会认为该常量是十六进制数。如0 xFF即十进制的255。#include#include#defineX040#defineY0XFFmain()printf(X=%d,Y=%d”,X,Y);system(pause);return0;,3.4常量,X=32,Y=255请按任意键继续.,44,常量小测试,下述常量定义哪些是错误的?为什么?#defineratio=1/3#defineratio1/3;#define1st_character$#defineif7,不能有号;否则会用=1/3替换ratio不能有语句结束符;号标识符只能以字符或者下划线开头if是C语言规定的关键字,有特定含义,用户不能随便使用习惯上,常量名一般采用大写字母。,45,数据总线,控制总线,地址总线,3.5输入和输出(I/O),一个真正有用的程序一般会从输入设备接收数据、并将运算结果输出到输出设备中。,为了实现和输入输出设备的通信,程序必须要有输入和输出语句。一个既无输入又无输出的程序是没有用的。,46,输入和输出语句最基本的功能在于从外界环境将值读入一个变量,或者将一个值写出到外界环境中。,3.5输入和输出(I/O),47,一、输入通过输入语句或者预先定义的函数可以从外界接收值。,C语言输入函数举例:scanf(格式控制串,输入项地址表);格式控制串:含有各种以百分号开头的格式控制符。输入项地址表:有逗号分隔开的若干输入表项组成,每一个表项是一个变量的地址。scanf函数的作用:从标准输入设备(键盘)上读取一系列数据,按格式控制串的要求进行转换并送到输入项地址表所列的逐个变量中。,3.5输入和输出(I/O),48,scanf(“%d”,当程序执行该语句时,等待用户从键盘输入数据并转换成一个整数,存储到变量number1中。d:转换说明符(conversionspecifier),用于告诉程序键入的数据要转换成一个整数;功能:将字符串显示在标准输出设备(一般为显示器)上。程序员可以将常量、变量、表达式、函数调用作为待输出字符串的一部分。格式控制串:包含了某些要直接显示的字符,也包含一些转换说明符。输出项表:可以是常量、变量、表达式、函数调用。,3.5输入和输出(I/O),52,如:printf(”Yourageis:%d”,age);注意,在输出时转换说明符%d不输出,而是被变量age的值代替。假设变量age的值是18,则显示器上将输出字符串“Yourageis:18”注意:此处变量age前面没有输出将是怎样?,53,3.5输入和输出(I/O),可以用printf语句输出常量、变量、表达式、函数调用的值:constfloatSCORE=98.5;intage;printf(“theaveragescoreis%d”,SCORE);/输出常量printf(“yourageis%d”,age);/输出变量printf(“thevalueof(2+3)10is:%dn”,(2+3)10);/输出表达式的值printf(“thesizeofintis:%d”,sizeof(int);/输出函数返回值,54,若想同时输出年龄和性别,则语句可写为:printf(“Age:%d,Gender:%c”,age,gender);显示器上将输出字符串“Age:18,Gender:F”,3.5输入和输出(I/O),常用的转换说明符:d:整型;c:字符型;f:浮点型,输入输出后面会再详细讲解,有兴趣的同学可参见C程序设计教程的9.3和9.11。,55,找出以下程序的错误,includemain()printf(“inputiandjn”);scanf(“i=%d”,i);scanf(“%d”,j);printf(“i=%d,j=%d”,i);/输出2个变量的值return0;,变量i和j未定义就使用;scanf(“i=%d”,56,修正后的程序,include#includemain()inti,j;/变量定义printf(“inputiandjn”);/输入提示scanf(“i=%d”,运行结果:inputiandji=1020i=10,j=20请按任意键继续.,57,#includemain()intnumber1;/*存放整数1*/intnumber2;/*存放整数2*/intresult;/*存放结果*/printf(“pleaseinputthetwonumbers:n”);/*显示提示信息*/scanf(“%d%d”,2000H,2004H,result,number1,number2,pleaseinputthetwonumbers:,theresultis:200,200,任务描述:输入两个整数,求两数之积并输出。,/*/:注释main()函数变量定义部分操作部分,编译后,源程序中出现number1、number2和result的地方将会用内存相对地址(非真正物理地址)替换。思考:何时、在哪里得到真正的物理地址?编译程序怎么处理变量?操作系统怎么分配内存?如何得到物理地址?深入学习:编译原理操作系统计算机组成原理,假设操作系统已经分配如下内存空间用于存放操作数和结果,程序运行过程演示,58,输入输出练习:定义三个变量,分别是整型、浮点型、字符型。要求从键盘输入三个值(逗号间隔)存放到这三个变量里,并且输出(格式:变量名=变量值,)这三个变量。,#include#includemain()inti;floatf;charc;scanf(“%d,%f,%c”,return0;,59,#include#includemain()inti;floatf;charc;printf(inputi,fn);scanf(%d,%f,请同学们观察本程序的输出是什么?,inputi,f10,3.14inputctheresultis:i=10,f=3.140000,c=请按任意键继续.,程序并没有给用户输入字符数据的机会。为什么?,【链接】,60,解决方法:用getchar函数来读取回车符,main()inti;floatf;charc;printf(inputi,fn);scanf(%d,%f,inputi,f10,3.14inputcytheresultis:i=10,f=3.140000,c=y请按任意键继续.,结果正确!,此外,还可以用fflush函数来清空键盘缓冲区。见实验讲义附录1的第16个错误(第130页),要求自学。,61,表达式是由运算符、操作数和括号组成的、计算求值的基本单位。操作数可以是:常量、变量、函数调用和表达式;表达式举例:2表达式无运算符,操作数为常量i表达式无运算符,操作数为变量sizeof(int)表达式无运算符,操作数为函数调用2+i操作数为常量和变量i*sizeof(int)操作数为变量和函数调用2+i*sizeof(int)加法运算的第2个操作数仍为表达式,3.6表达式,62,3.6表达式,典型的几类运算符和表达式:算术运算符和算术表达式;关系运算符和关系表达式;逻辑运算符和逻辑表达式;赋值运算符和赋值表达式;,63,3.6表达式,一、算术运算符和算术表达式算术运算符:、/、(取余)等;算术表达式:由算术运算符、操作数和括号构成的表达式。如:(2+8.2/3)*4,104(余数为2),64,3.6表达式算术表达式,(b*b-4*a*c)/(2*a),要注意编程序式,程序中对算术表达式的书写和平时的书写方式可能是不一样的:,在程序中要写成,65,在C语言中,算术运算的操作数可以是整数、字符或者浮点数。如果表达式中的操作数全是字符或者整数,则表达式的值为整数;如果操作数至少有一个是浮点数,则表达式的值为浮点数。,3.6表达式算术表达式,求以下表达式的值:1)102/202)102%203)1/24)1.0/25)x=A+32(x是整型变量),求以下表达式的值:1)102/20=52)102%20=23)1/2=0值为整数4)1.0/2=0.5值为浮点数5)x=A+32x97,提示:字符数据总是先转换成整型数据,再参与运算的。,66,3.6表达式算术表达式,C语言中,整型、字符型、浮点型数据可以进行混合运算.如:5+1.0+A=71.000000混合运算涉及到数据类型的转换,具体将在以后介绍。自加运算符+和自减运算符-是C语言特有的运算符,将在以后介绍。,67,3.6表达式,二、关系运算符和关系表达式关系运算符:用于比较两个数据的大小关系。关系表达式:用关系运算符将两个表达式连接起来构成的表达式,如(23)10;运算结果是逻辑“真”或者“假”。在C语言中,若运算结果是逻辑“真”,则关系表达式的值为1;若为逻辑“假”,则值为0。,68,3.6表达式关系表达式,思考:以下语句的输出结果是什么?printf(thevalueof(2+3)10is:%dn,(2+3)b)|(bc),f为%dn,f);printf(!(ab)is:%dn,!(ab);printf(!ais:%dn,!a);system(pause);return0;,输出结果?a=1,b=2,c=4f=(ab)|(bc),f为0!(ab)is:1!ais:0,72,3.6表达式逻辑表达式,注意连续的关系运算:数学上的abc,在C语言中虽然也允许这么写,但其含义数学中完全不同。数学中的该类表达式在C语言中应该写成:(a0):);/*输入提示*/scanf(%d,练习:输入一个正整数,判别它是否能被3整除。若输入的不是正整数,则提示出错信息,并请用户重新输入;否则,若能被3整除,输出YES;若不能被3整除,输出NO。,99,if(n%3=0)/*若n能被3整除,则输出YES”*/printf(nn=%d,YES,n);else/*若n不能被3整除,则输出“NO”*/printf(nn=%d,NO,n);system(pause);return0;,100,练习1:输入一个正整数n,求1n之间的整数的和。分析:C程序设计语言只能提供求两个数的和的算数运算。如何利用这个基本能力求得n个数的和?考虑到:sum(a1,a2)=a1+a2sum(a1,a2,a3)=sum(a1,a2)+a3sum(a1,a2,an)=sum(a1,a2,an-1)+an那就是进行n-1次的求和,每一次的求和都是把一个数和已经得到的和相加。因此可以考虑使用循环结构解题。,101,循环初始化:i=2;sum=1;while(循环条件:i0):);/*输入提示*/scanf(%d,103,练习2:打印三角形(要求采用循环结构)*,104,#include#include#defineLINES3main()intline;intcount;line=1;while(line=LINES)/输出第line行:输出(2*line-1)个*号count=1;while(count0)。,#include#include#defineN10main()inti=0;doprintf(%d,i);i=i+1;while(i0)。,#include#defineN10main()inti;for(i=0;i=N;i=i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC/IEEE 60079-30-2:2025 EN Explosive atmospheres - Part 30-2: Electrical resistance trace heating - Guidance on application for design,installation and maintenance
- 【正版授权】 ISO/IEC 24760-3:2025 EN Information security,cybersecurity and privacy protection - A framework for identity management - Part 3: Practice
- 村级代理记账协议书
- 江西赣州章贡区人大常委会区人大代表联络服务中心招考(3人)易考易错模拟试题(共500题)试卷后附参考答案
- 中国制冷品牌协议书
- 兼职外卖员合同范本
- 机车头吊装合同范本
- 曲靖市专利管理中心2025招考事业单位工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 卤货加盟合同协议书
- 内部设备电路协议书
- 工程保函管理办法
- 2025年军事理论知识竞赛题库及答案
- 2025年天津入团考试试题及答案
- 肾内科化验单解读
- 湖北省中小学生命安全教育课程标准(实验)
- 初中英语教学论文范文3000字
- 2025体育与健康课程标准深度解读与教学实践
- 中国心血管病一级预防指南解读
- 乌孜别克族课件
- 2025年树枝工艺品项目可行性研究报告
- smt考试试题及答案
评论
0/150
提交评论