《北京大学计算概论(C语言)经典课件Lecture 5程序设.ppt》由会员分享,可在线阅读,更多相关《北京大学计算概论(C语言)经典课件Lecture 5程序设.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算概论(Introduction to Computing)主讲人:马思伟北京大学数字媒体研究所http:/ 程序设计简介及编程环境程序设计简介及编程环境 2 2 2提纲o程序设计语言o程序基本框架及基本元素o程序书写规则o编程环境o学习程序设计五要素3 3 3程序设计语言o程序:描述计算机处理数据、解决问题的过程,这是程序的实质,但程序的描述形式却可以是多种多样的,可以用不同的方式表述。o程序设计:为计算机的执行部件-CPU安排执行计划o程序设计语言:(也被称为“编程语言”,ProgrammingLanguage)是人们编制程序所使用的语言。n机器语言:01000000表示把存储在寄存器E
2、AX中的数值加1n汇编语言:INCEAX(汇编器将其转化为机器语言)n高级语言4 4 4机器语言o机器指令n采用二进制代码形式,符合具体计算机的指令系统,可以由计算机直接执行n是一种可以在程序设计中使用的语言,被称为“机器语言”n每一条机器指令包括两个主要方面:操作(指出计算机应做什么)和被操作的对象(指出处理的数据或它的地址)o机器指令n格式:操作码操作数操作数n分类:数据传送、算术运算、逻辑运算、控制转移5 5 5机器语言o8086/8088的指令系统n133条基本指令,可分成个功能组:p数据传送:通用传送、地址传送、标志传送、输入输出等p算术运算:加减乘除符号扩展等p逻辑运算、移位指令:
3、逻辑运算、移位、循环移位p串操作:串处理和重复控制p控制转移:无条件转移、条件转移、循环控制、过程调用、中断指令等p处理器控制:停机、等待等o下面给出了几条以二进制形式描述的Intel80386指令以及对它们的文字解释。n01000000:把一个寄存器(EAX)的值加一n100010110000010100000000011110011000111110101101从某个内存单元取出数据,装入EAX寄存器6 6 6机器语言o机器指令的执行过程n在CPU的运算器ALU中执行n首先将程序指令和数据放到主存储器中n程序开始,将第一条指令地址放到程序控制单元的IP寄存器中并启动程序n逐条传送指令到运算
4、器中执行,中间结果保存到寄存器组中,控制单元负责取下一条指令n遇到停机指令,程序结束7 7 7机器语言数据流数据流控制流控制流取数存数地址指令(内)存储器内)存储器内)存储器内)存储器控制器控制器运算器运算器程序+数据操作命令处理结果反馈信号响应信号请求信号响应信号请求信号v机器指令的执行过程8 8 8机器语言o缺点:难记忆,编程效率低;难调试n用机器语言编程,不仅指令操作需要用规定的二进制代码描述,程序里的数据也要程序设计者自己安排存储位置n程序不易修改,无法由一种计算机环境移植到其他环境上9 9 9汇编语言o“汇编程序设计语言”的基本想法:采用帮助记忆作用的符号n例如用ADD表示加法操作,
5、用JMP表示控制性转移等n操作的对象(数据或数据的地址)也能用符号形式表示,例如用X、Y代表两个存储数据的容器o格式n助记符操作数操作数101010汇编语言o一组具有帮助记忆作用的“汇编指令”,每条汇编指令都和一条机器指令相对应,只是指令码和操作数都采用符号形式。PUSH ECXMOV ERROR,0MOV ECX,EAXCMP ECX,0JMP FAILCALL FACTo111111汇编语言o汇编程序:n计算机是不能直接执行的,必须在交给计算机执行之前先把它翻译成二进制的机器语言指令程序n汇编器:把用汇编语言书写的程序翻译成机器语言程序的软件121212汇编语言编程o例:算术运算n计算13
6、5+22-1MOVAX,135MOVBX,22ADDAX,BXSUBAX,1HLT寄存器组AX00BXCPUCXDX00HL000000000000寄存器组AX00BXCPUCXDX87HL001600000000131313汇编语言编程n计算135+22-1MOVAX,135MOVBX,22ADDAX,BXSUBAX,1HLT寄存器组AX00BXCPUCXDX9DHL001600000000寄存器组AX00BXCPUCXDX9CHL001600000000141414汇编语言编程o累加运算n例:计算从1累加到100的和p用AX保存累加结果,从1开始,每次加一个数,到100为止。将被加数放到B
7、X中保存,即每次加BX,加完后对BX进行加1运算p设置一个循环,判断是否加到100,即判断BX是否为101pCMP指令对两个操作数作减法运算,将影响的标记记录在标志位中,供查询使用,而源目操作数均不改变。MOVAX,1MOVBX,2calc:CMPBX,101JEstopADDAX,BXINCBXJMPcalcstop:HALT寄存器组AX00BXCPUCXDX01HL000200000000寄存器组AX00BXCPUCXDX03HL000300000000CPU寄存器组AX13BXCXDXBAHL006500000000151515汇编语言编程o求最大值n例:求一组整数33,15,21,7,
8、9,23,4,76,87,45中的最大值p定义一个数组变量DATA存储给定的数据。用BX记录当前数的索引,每处理完一个数加1。CX为计数寄存器,隐式地为循环指令LOOP计数。MOVAL,0MOVBX,0MOVCX,10next:CMPDATABX,ALJLunchangedMOVAL,DATABXunchanged:INCBXLOOPnextHLT寄存器组AX00BXCPUCXDX00HL0000000A0000寄存器组AX00BXCPUCXDX21HL000100090000161616汇编语言o缺点:n描述机制层次太低,其基本描述单位仍然是指令,这种方式与人们描述计算过程的需要之间差距太大
9、n与计算机硬件的具体结构、指令系统联系过于紧密,这种情况造成的后果是在一种计算机上开发的程序极难搬到另一种不同结构的计算机上使用n不仅工作量将非常大(与重写差不多),而且很容易引出程序错误,修改也非常困难。o特点n直接对硬件操作,运行效率高n需要对硬件熟悉,编程难度高171717高级程序设计语言o特点n在对计算过程的描述方面,完全脱离了简单的指令方式,采用类似于数学公式的书写方式描述由一些数据计算出结果的过程n用一些更高级程序流程描述结构取代简单的跳转指令方式,以更好地满足书写程序的需要o程序存储数据的空间处理数据的语句181818高级程序设计语言o4个核心概念n变量n表达式、语句、赋值191
10、919高级程序设计语言o4个核心概念n变量p内存中的若干字节,存放数据,初值、中间结果、最终结果p高级语言中的变量采用字符串形式的名字,如x、len、Max、Number等p一方面名字可以帮助人们掌握变量所代表的信息含义,在程序里只要用变量的名字就可以读写访问它的存储单元里的数据202020高级程序设计语言o4个核心概念n变量n表达式、语句、赋值p表达式:类似于数学中的代数运算式。p语句:程序中基本的动作单位p赋值语句:最基本的语句X=2*1.047-2;/左面是变量,右面是表达式Y=X*X;/读取变量X的值,参与计算X=2*SIN(1.047);Y=X*COS(W);212121高级语言程序
11、的执行o高级语言程序不可能直接地在计算机上执行o要在计算机上执行高级语言程序,有两种基本方法n第一种方法称为编译(Compilation):把高级语言程序(也称为“源程序”)转换成为机器语言的可以由计算机直接执行的程序,即转变为“可执行程序”(Executable Program)n另一种称为“解释”(Interpretation)的实际执行方式222222高级语言程序的执行o编译器n把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换,一般分为两个阶段,p源程序首先被翻译成机器语言,这种翻译结果称为“目标码”(objectcode),目标码构成的程序片段称为目标模块。p第二步,这些
12、目标模块被与其他一些基本模块(由编译软件提供)连接在一起,最终形成“可执行程序”(executableprogram)p第一个加工步骤称为“编译”(compiling),第二个步骤称为“连接”(linking)。编译过程232323高级语言程序的执行o高级语言程序还可以采用另一种称为“解释”(Interpretation)的实际执行方式。这种方式由一种称为“解释器”(Interpreter)软件实现。解释器在工作方式上与编译器不同,它不对源程序进行翻译,而是直接对源程序的语句进行分析和解释,实现源程序所描述的功能。242424高级语言oFortrannFormularTranslation,I
13、BM,20世纪50年代(1954-1957)n主要用于科学计算oCOBOLn1960,CommonBusinessOrientedLanguage,可读性强,程序罗嗦n主要用于编制商业企业信息管理系统的处理程序和软件oBASICnBeginnersAll-purposeSymbolicInstructionCode,JohnKemeny,ThomasKurtz,1964年n1985年TrueBasic;QuickBasic,VisualBasic252525高级语言oPASCALn1968,N.WirthoC/C+n1972年,DennisRetchie,C语言n1983年,BjarneSto
14、ustup,C+,面向对象程序设计oAdan美国军用程序设计语言,针对装备在机电设备、武器装备里的计算机控制、管理软件系统开发应用。oJavan1991年,Sun公司,JameGosling,BillJoe262626C语言o由美国贝尔实验室的DennisRetchie在1972年设计开发,开发目的是想成为一种编制“系统程序”的工具语言oRetchie等人首先用自己发明的C语言编写了UNIX操作系统。以后C语言逐步发展成为开发系统软件的主要语言oC语言已成为最重要的软件系统开发语言,由此可见C语言在计算机领域地位之重要。272727C+语言oC+是在 C 语言基础上发展出的一种“面向对象”语言
15、,由 Bjarne Stroustrup 在美国贝尔实验室开发的(1983),是目前使用最广泛的一种面向对象的程序设计语言。oC+是C语言的一个扩充n它一方面修正了C的一些弱点和不足,使用起来更方便可靠n另一方面,支持“面向对象”(Object-Oreinted,简称为OO)的程序设计方法为基本目标,提供了一套支持面向对象程序设计的机制,如“类”(class)、“对象”(object)等等n面向对象的方法被认为是开发复杂软件系统的一种有效途径,OO程序设计语言也已经被广泛接受282828JAVAoWriteonce,runeverywhere.o目前网络程序开发的主要语言o特点n面向对象n便于
16、网络开发n简单易学292929关于语言的思考o自然语言n字-词-短语-句子-文章-文集-文库n词:动词、名词.n短语:成语、短句oC语言n关键字-常量/变量-表达式-语句-程序-程序包-软件系统n常量、变量:整数、浮点数303030提纲o程序的基本框架o程序的基本元素n标识符和关键字n数据类型、常量和变量n运算符和表达式n语句313131程序的基本框架编译预处理(宏、头文件)自定义函数声明编译预处理(宏、头文件)自定义函数声明int main()说明部分说明部分 /*变量定义等变量定义等*/执行部分执行部分 /*输入输入/输出输出/计算计算*/自定义函数自定义函数323232程序的基本框架33
17、3333程序的基本框架o基本元素n主函数:main()p每个程序有一个主函数且只能有一个p程序执行从主函数开始,从主函数结束p主函数可以调用其它函数(标准库函数,用户自定义函数),其它函数不能调用主函数,但其他函数相互之间遵循一定的规则可以相互调用343434程序的基本框架o基本元素n标准库函数pC语言提供的各种标准的通用功能函数,调用前必须在程序开始的地方用include语句包含含该函数的定义文件p例:s=(float)(PI*pow(r,2);pow(x,y)/求xy(math.h,数学函数)scanf(“%f”,&r1);/scanf(“%f”,)/从键盘中输入数据(stdio.h,输入
18、输出函数)printf(n第一个半径为%f的圆的面积为:%fn,r1,s1);/printf(“%f”,)往屏幕中输出数据(stdio.h,输入输出函数)353535程序的基本框架o基本元素n自定义函数p必须先定义,后调用p例:s2=getArea(r2);363636程序的基本框架373737程序的基本框架o基本元素n变量:存放数据的容器,有不同的数据类型n语句:由分号结尾的单一命令,可以一条语句完成一条或若干条指令功能floats,r;/变量定义语句r=10;/变量赋值语句s=3.1416*r*r;/执行乘法运算并赋值的语句n代码段:用大括号()围起来的多条语句构成一个代码段inti;fo
19、r(i=0;i=1;i+)383838程序的基本框架o基本元素n编译预处理-宏定义p用一个简单的符号代替宏体部分内容,例#definePI3.14159PI符号常量(宏名,最好用大写,以区别一般变量)3.14159宏体(可以是一个表达式)作用:用简单符号代表宏体部份内容(编译时会先自动替换),可用作常量定义或其他作用意义:直观/多次使用/便于修改注意:#define可出现在程序的任一位置(作用范围:由此行到程序末尾),宏定义不是C语句,不必在行未加分号,否则会连分号一起置换。393939程序的基本框架o基本元素n编译预处理-文件包含#include/stdio.h标准前导文件,输入输出函数库头
20、文件#include“myhead.h”/自定义前导文件C语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由人做成各种“程序模块”(.lib),并将其定义存放在各种所谓“头文件”(.h)中。文件包含的作用,就是根据需要把相应的某个“头文件”定义所涉及的“程序模块”在编译时先整体嵌入所编的程序中。用户也可以将自己设计的程序模块等做成“程序模块”及“头文件”,供其他程序“包含”(调用)。404040程序的基本框架o基本元素n注释p单行注释/p段注释/*.*/o总结n有且只有一个主函数main()n用#include包含头文件n用#define定义宏n每条语句必须以句号结束
21、n由大括号组成语句段n函数可以调用其他函数414141 标识符和关键字o标识符n程序员对程序中的各个元素加以命名时使用的命名记号,包括:数据类型名、变量名、常量名、函数名、宏名称、nC语言中,标识符是以字母,下划线(_)开始的一个字符序列,后面可以跟字母,下划线,数字。n合法的标识符identifier userName User_Name definesys_ value _Name name1n非法的标识符2mailroom#a%bc!abc2424242标识符和关键字o关键字n具有专门的意义和用途,不能当作一般的标识符使用。C语言中的关键字有:int、char、float、double、
22、short、long、unsigned、struct、union、enum、auto、extern、register、static、typedef、goto、return、sizeof、break、continue、if、else、do、while、for、switch、case、default、void、entry、include、define、undef、ifdef、ifndef、endif、linen分类分类p基本数据和返回值类型:基本数据和返回值类型:int,void,return p构造数据类型定义:构造数据类型定义:typedef,struct,unionp控制流控制流:if,sw
23、itch,for,break,goto p编译预处理编译预处理:include,define p变量长度变量长度:sizeofn注意注意:C语言标识符区分大小写,语言标识符区分大小写,name和和Name表示表示不同的标志符不同的标志符434343数据类型、常量和变量o数据类型(Data Type)n基本数据类型(Primary Data Types)n构造数据类型(Composite Data Types)o常量(Constant)o变量(Variable)444444数据类型、常量和变量o数据类型(Data Type)n基本数据类型(Primary Data Types)一个数据类型所占的
24、具体字节数,可以通过sizeof运算符来确定。454545数据类型、常量和变量o数据类型(Data Type)n基本数据类型(Primary Data Types)p字符的存储通常用其二进制编码(如ASCII码/8位、汉字内码/16位)来表示,所以字符数据类型char只占8位,它可以表示一个ASCII字符,对于汉字字符,则需要将2个char数据当作一个整体。n构造数据类型p由一个或多个基本数据类型组合而成p包括:数组、结构、链表等464646数据类型、常量和变量o常量和变量n数据是计算机程序处理的主要对象,在程序中数据是以常量和变量的形式出现。常量和变量的区别仅在于程序执行过程中变量的值是可以
25、改变的,而常量的值不能改变。o常量n是用文字串表示的,它区分为不同的类型:p整型常量:123,-123p长整型常量:123l,-123Lp单精度浮点常量:1.23f,-1.23e12fp双精度浮点常量:1.23,-1.23e12p字符常量:用单引号对括起来的一个字符,如a 字符串常量:用双引号对括起来的一个字符序列,如“Thisisaconstantstring.”。在C中,除了直接写出常量的值之外,还可以通过预编译命令“#define”把一个标识符定义为常量,其定义格式为:#definePI3.14159474747数据类型、常量和变量o变量n和数学中的变量有所不同,程序中的变量代表某个内存
26、中某个存储单元的名字或某块内存区域的名字。它用于指定一个所要访问的存储单元在整个存储空间中所处的位置。显然,存储单元所存储的数据在程序执行过程中是可能变化的。n在程序中定义变量时,会在内存中为它开辟一块区域,用来放置它所代表的数据。把数值存放到某个变量所指示的内存区域的过程称为赋值。使用某个变量中存储的数据称为变量的引用。不同的变量可以占用不同大小的内存空间。一个变量所占内存空间的大小是在变量定义时决定的。在程序中,有三种情况涉及到变量:变量的定义、变量的赋值和变量的引用。484848数据类型、常量和变量494949数据类型、常量和变量o变量的定义就是在程序中声明将要使用一块内存区域保存数据。
27、这块区域的大小是由变量所属的数据类型决定的。变量的定义包括变量数据类型、变量的名字、变量的初始化几个部分,其形式为:DataTypevarName=value,varName=value;intn,n1=4;o变量的名字必须是一个合法的标识符,每个变量的名字作为它的唯一标识。变量名所对应的就是内存区域的地址。如果不对变量进行初始化,变量的初值是不确定的(内存空间中内存单元里是有内容的)。o在程序执行过程中,变量的值(内存单元中的内容)是可以变化的。给变量指定一个新的数值的过程称为变量的赋值,通过赋值语句完成:n=26;505050数据类型、常量和变量o变量里存储的数据可以用来参与运算,这一过程
28、称为变量的引用。例如:inttotalFee=0;/变量赋值inttuitionFee=5000;/变量赋值inttravelExpense=300;/变量赋值intlivingExpense=1000;/变量赋值intothers=1000;/变量赋值/变量引用totalFee=tuitionFee+travelExpense+livingExpense+others;515151数据类型、常量和变量525252数据类型、常量和变量o变量定义示例n字符型变量:代表8位的字符,ASCII字符,定义示例charc1;无初值charc2=0;赋初值为字符0charc3=33;用整数赋初值,是字符的
29、ASCII码,此处为!特殊字符的常量表示法:反斜线(Backslash)退格(Backspace)b回车(Carriagereturn)r进纸符(Formfeed)f制表符(Formfeed)t换行(Newline)n单引号(Singlequote)535353数据类型、常量和变量o变量定义示例n整型变量:intnum1,num2;longlen1,len2=3L;必须在数字后加l或Lintx=123,y=321;shorts=10;longy=123L;必须在数字后加l或Llongz=123l;必须在数字后加l或L3545454数据类型、常量和变量o变量定义示例n实型变量定义示例:doubl
30、ed1=127.0;赋初值为127doubled2=127;赋初值为127floatf1=127.0f;必须在数字后加f或Ffloatf2=4.0e38f;错误!32位浮点数不能超过3.4028234663852886e38555555数据类型、常量和变量o变量定义使用实例:565656运算符与表达式o表达式(Expression)是由操作数(常量和变量)和运算符按一定的语法形式组成的符号序列。n一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值;n表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。n表达式的计算结果称为表达式的值。575757运算符与表达式o运算符(Ope
31、rator)规定了对操作数的处理规则,C语言中的运算符有:n算术运算符:(负号),+,*,/,%,+,n关系运算符:,=,(在结构数据类型及指针中用到)n下标运算符index(在数组中用到)n数据长度运算符sizeof(以字节为单位)inta;sizeof(int);sizeof(a);n分隔符,(函数参数分隔,变量定义等)inta,b,c;intmax(inta,intb,intc);n强制类型转换运算符(DataType)year=(int)ceil(x/2);n函数调用运算符()595959运算符与表达式o分类,根据运算符的不同,表达式也有不同的类型:n算术表达式n关系表达式n逻辑表达式
32、n位运算表达式n赋值表达式n条件表达式在一个复杂的表达式中,往往包含有其他类型的表达式。606060运算符与表达式o算术表达式:使用算术运算符和括号将操作数连接起来的表达式称为算术表达式:n(负号),+(加法),(减法),*(乘法),/(除法),%(取余数,只对整型数据有效),如:-3+a-b*5,(x+y)/z+(3*r/5)n+(自加)、(自减):只适合于变量,不适合于常量或表达式,例如:5+或(a+b)-都是不正确的。这两个运算符可用在变量之前或变量之后,如i+和+i。对变量来说,这二种情况的效果都是一样的,都是使变量i加1。但在表达式中,则它们的含义不同,如:pj=+i;表示先将i的值
33、加1,再赋给j,如果i的值是5,则j的值是6。(先给变量加1,再使用变量)pj=i+;表示先将i的值赋给j,再把i的值加1,如果i的值是5,则j的值是5。(先使用变量,再给变量加1)616161运算符与表达式o关系表达式:使用关系运算符和括号将操作数连接起来的表达式称为关系表达式:n(大于),=(大于等于),y,(x+1)=4,(-3+a-b*5)1)&(x=20)n|(逻辑或):当2个操作数有一个为非0或真时,结果为1(真),否则为0(假),如:(x20)n!(逻辑非):将一个非0或为真的操作数变为0,或将0或为假的操作数变为1,如:!(xy)n逻辑运算&和|连接的表达式是自左向右求值的,一
34、旦知道结果的真、假值,求值马上停止:(a+1c)&(b+11),若(a+1c)为0,则表达式的值为0(a+1c)|(b+11),若(a+1c)为1,则表达式的值为1636363运算符与表达式o位运算表达式:使用位运算符和括号将操作数连接起来的表达式称为位运算表达式:n&(按位与),|(按位或),(按位异或),!(按位非):二进制位逻辑运算n(右位移),将左侧操作数的二进制数值向右移动若干位(由右侧的操作数给出),移出去的位丢弃,空出的位用符号位(对有符号数)或0(对无符号数)来填补。646464运算符与表达式o位运算符的操作数必须是整型数据。在C中,整型数据分有符号整数和无符号整数,是用一定长
35、度的二进制位来表示。以32位整数为例来说明位移动运算:有符号数:有符号整数做位移运算时,符号位是不参与移动的。左移时,空出的位用0填补;右移时,空出的位用符号位填补。(机器内数据的补码表示)o无符号数:没有符号位,不管左移或右移,空出的位用0填补。n位移运算的实质(在不发生溢出时):p左移:xn,相当于x/2n656565运算符与表达式o赋值表达式n“”是C语言中基本的赋值运算符,基本的赋值表达式形式为:“变量表达式”,它将表达式的值赋给变量。如:x=y+1,a=b=c=1nC语言中除了基本的赋值运算符外,还有一系列复合赋值运算符:+=,=,*=,/=,%=,=,y)?x:y676767运算符
36、与表达式o运算符的优先级和结合性n一个复杂的表达式值,往往要涉及不同的运算符,在表达式求值时,其计算次序是要符合一定的规则的,即不同运算符的先后次序是不同的。(不用死记,复杂表达式中多用“()”运算符)686868运算符与表达式o数据类型转换n在表达式中,整型、实型、字符型数据可以混合运算。运算中,不同类型的数据需要先强制转化为同一类型(利用强制类型转换运算符),然后进行运算。但是,在把容量大的类型转换为容量小的类型时必须注意:转换过程中可能导致溢出或损失精度doublea=4.0e40;intb=(int)a;/ba 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入(int)23.7=2
37、3(int)-45.89f=-45696969VC+编程环境707070VC+编程环境-基本概念 Project(工程)在VC编程环境下,编写程序的工作是以Project为单位。在开始一个新程序时,要先建立一个Project,之后在程序编写过程中所有与这个程序有关的文件都会包含在这个Project中。编制的程序可以有各种不同类型,编程环境为每种类型的程序准备了一个模版,用来生成程序的最初框架。在我们这本书里只介绍编写Win32ConsoleApplication类型的程序。这类程序的特点是:程序运行中会打开一个类似于DOS操作系统的界面,所有键盘输入都是通过DOS界面进行的,而所有输出都是输出
38、到DOS窗口中。717171VC+编程环境-基本概念oSource File(源程序)o源程序是我们用高级程序设计语言书写的程序。源程序必须经过编译连接变成可执行程序(机器代码)才能运行。在下面的章节中,我们主要用介绍C语言编写程序。727272VC+编程环境-基本概念oCompile(编译)o把源程序变成机器代码的过程称为编译。不同的高级语言有不同的编译器。737373VC+编程环境-基本概念oLink(连接)o各种高级语言都会提供一些常用的功能函数,我们自己编写的程序里会调用这些功能函数。同时要把我们写的程序装载到内存里运行,也需要加载一定的与环境相关的信息。所以将我们自己写的与那程序编译
39、成机器代码后,还需要一个连接的过程以生成最后的可执行程序。747474VC+编程环境-基本概念oBuild(编译并连接)o编译并连接是把源程序编译,如果没有错误则连接,否则给出编译错误信息。757575VC+编程环境-基本概念oDebug(调试)o当程序出错时,可用调试工具发现错处的代码,进行改正。所谓调试是指逐条执行或部分执行程序代码,并在执行过程中查看变量的值。当发现变量的值并非如我们预期或程序的执行逻辑并非我们预期时,就发现了错误,可以进行有针对性的改正。767676VC+编程环境-基本概念oRun(运行)o启动一个可执行程序使其开始执行称为运行。777777VC+编程环境 基本功能o创
40、建新工程o编辑源程序o编译/连接o运行o调试787878VC+编程环境-创建新工程 797979VC+编程环境-创建新工程 808080VC+编程环境-创建新工程 818181VC+编程环境-创建新工程 828282VC+编程环境 编辑源程序838383VC+编程环境 编译/连接848484VC+编程环境 运行858585VC+编程环境 调试868686VC+编程环境 调试878787编程中常出现的问题1.程序风格问题程序风格问题变量定义(全局变量/局部变量,参数传值传地址调用等),函数定义,注释,对齐等;好的编程风格:容易阅读、调试、维护n#includevoidmain()inti;for
41、(i=0;i20;i+)/888888编程中常出现的问题2.左右括号不匹配左右括号不匹配包括大括号,小括号,规范程序格式可以有效避免这种错误的发生。3.语句结束加分号;变量拼写错误,大小写区别等;中英文“,”“,”错误使用。898989VC编译器的错误信息使用oMicrosoftC以如下格式产生错误消息:filename(line-number):diagnosticCnumberMessage这里filename是遇到错误的源文件的名称;line-number是编译器检测到错误的行号;diagnostic是“错误”或“警告”;number是一个唯一的标识错误或警告的4数字编号(前面有一个像该
42、语法中标记的C);message是一个解释的消息。例如:C:temp277062Main.c(105):errorC2084:functionint_cdeclmain(void)alreadyhasabody909090VC编译器的错误信息使用o程序编译后,编译的结果信息会在输出窗口输出。双击一条错误信息,光标自动调到相应的出错的地点。o错误信息会指出产生错误的原因。根据这个原因可以到相应的位置去找到错误并改正。但是,有时候引起某个错误的原因,并不是错误信息给出的那样,需要通过经验去判断。919191VC调试o常用快捷键nF1:帮助nF4:下一编译警告/错误nF5:开始调试nF7:编译链接nCtrl+F7:编译当前文件nCtrl+F5:运行程序nCtrl+Break:停止编译nF10:单步执行nF11:单步跳入nF12:转到函数定义处929292小结o程序设计语言o程序框架o程序设计一般过程o程序书写规则o编程环境o学习程序设计五要素