北京大学计算概论(C语言)经典课件Lecture 5程序设.ppt
《北京大学计算概论(C语言)经典课件Lecture 5程序设.ppt》由会员分享,可在线阅读,更多相关《北京大学计算概论(C语言)经典课件Lecture 5程序设.ppt(92页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京大学计算概论C语言经典课件Lecture 5程序设 北京大学 计算 概论 语言 经典 课件 Lecture 程序
限制150内