C语言程序设计090909.pptx

上传人:莉*** 文档编号:87577622 上传时间:2023-04-16 格式:PPTX 页数:27 大小:397.08KB
返回 下载 相关 举报
C语言程序设计090909.pptx_第1页
第1页 / 共27页
C语言程序设计090909.pptx_第2页
第2页 / 共27页
点击查看更多>>
资源描述

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

1、2023/4/131内容提要计算机组成及工作过程 机器语言程序设计由低级语言到高级语言C is the most beautiful language!C程序开发过程第1页/共27页2023/4/132计算机及其组成 计算工具:石器时代:石头、手指、绳子铜器时代:算筹(商周时代)、格子(西方)铁器时代:算盘 计算机:(comput+er):用于计算的机器,用来处理存储的数据,处理和存储是一个整体.计算机的组成:硬件系统+软件系统 物质基础物质基础加在硬件之上加在硬件之上,控制控制硬件完成功能硬件完成功能通过程序设计语通过程序设计语言来开发软件言来开发软件第2页/共27页2023/4/133冯诺

2、依曼的程序存储思想“计算机之父”冯诺依曼的程序存储思想:计算机应该采用二进制 操作指令也是一种信息,也用二进制数表示程序和数据的存储形式可以完全相同 程序本身也可包含数据第3页/共27页2023/4/134关于第一台计算机 1946.2.14 ENIAC(埃尼阿克)现在保存在宾夕法尼亚大学这台机器名为“电子数值积分和计算机”(简称埃尼阿克,完全是一个庞然大物,占地面积达170m2,质量达30t,耗电量也很惊人,功率为150kW,共使用了近两万个电子管,在工作时这些管子看上去活像两万只点着的灯泡。埃尼阿克主要用来进行弹道计算的数值分析 第4页/共27页2023/4/135其他版本的第一台计算机

3、图灵机:计算机科学之父、人工智能之父,”图灵奖”德国人Conran Euse代号为“Z”的计算机哈佛,IBM的Mark系列大型电子计算机真正的第一台计算机是上面三台中之一,无从考证第5页/共27页2023/4/136控制总线控制总线CPUCPU计算机硬件的组成运算器运算器控制器控制器存储器存储器接口接口输入设备输入设备输出设备输出设备地址总线地址总线数据总线数据总线进行各种算术运算和逻辑运算进行各种算术运算和逻辑运算 控制和指挥整个运算过程,使控制和指挥整个运算过程,使指令按要求一条一条执行。指令按要求一条一条执行。存放程序指令存放程序指令及数据及数据 输入指令代码输入指令代码和原始数据和原始

4、数据 显示或打印显示或打印计算结果计算结果 处处理理 第6页/共27页2023/4/137关于二进制问题n“世界上有世界上有种人,一种人懂二进制,另一种人种人,一种人懂二进制,另一种人不懂不懂”n这里的这里的是一个是一个二进制数二进制数,就是十进制的就是十进制的2 2第7页/共27页2023/4/138关于二进制等进制问题进进制制每位每位符号符号逢几逢几进一进一位位权权n n位数的位数的不同个数不同个数例子例子(结果统一到十进制结果统一到十进制)十十090910101010i i1010n n341=3*10341=3*102 2+4*10+4*101 1+1*10+1*100 0=341=3

5、41二二01012 22 2i i2 2n n101=1*2101=1*22 2+0*2+0*21 1+1*2+1*20 0=5=5八八07078 88 8i i8 8n n127=1*8127=1*82 2+2*8+2*81 1+7*8+7*80 0=87=87十十六六0909AFAF16161616i i1616n n31D=3*1631D=3*162 2+1*16+1*161 1+13*16+13*160 0=797=797另另:3:3位二进制数相当于位二进制数相当于1 1位八进制数位八进制数:101 011B=(53):101 011B=(53)8 8=53Q=53Q4 4位二进制数相

6、当于位二进制数相当于1 1位十六进制数位十六进制数:1101 1001B=(D9):1101 1001B=(D9)1616=D9H=d9H=D9H=d9H第8页/共27页2023/4/139关于存储器存储器的组成:由存储单元组成,每个单元1个字节(1B),1B=8bit,每个单元有一个地址。存储单元中的内容与存储单元的地址是两个概念,其区别如同房间里的东西与房间号码。存储器的大小指它有多少个字节,也就是有多少个不同的地址号,取决于地址总线的根数,n根地址总线,存储器容量为:2n常用存储单位:1TB=210GB=220MB=230KB=240B存储器按功能分为3大区域:程序存储区、数据存储区和栈

7、 存放程序中的指令 存放程序中的数据 存取数据都在一端,无需计算地址,速度快 第9页/共27页2023/4/1310关于CPUCPUCPU:Central Processor Unit,中央处理器,完成各种处理(运算+控制),是计算机最核心部件。CPU中设寄存器的目的:存放数据或计算的中间结果,不通过地址总线和数据总线,处理速度快。寄存器有两种:通用寄存器和专用寄存器。熟悉两个专用寄存器:(1)累加器A:与算术逻辑运算器ALU一起完成各种运算(2)程序计数器PC:寄存指令的地址,CPU通过PC取来一条指令执行时,PC便“指向”下一条指令,即PC的值变为下一条将要执行的指令的地址。除非遇到转移指

8、令或子程序调用指令,CPU都是通过PC顺序地提取指令。是运算器的组成部是运算器的组成部分,暂存操作数及分,暂存操作数及运算的中间结果运算的中间结果 每一个都有特定的作用每一个都有特定的作用 第10页/共27页2023/4/1311机器内部执行程序的过程示例程序是一组指令,指令联系着存储器和CPU,每条指令有操作码,有的指令有操作数,指令存储在程序存储区,操作数存储在数据存储区。例:求和程序y=3+4所包含的指令如下:操作码操作码 操作数操作数指令含义指令含义01H3000H将地址为将地址为3000H的单元中的数据放入累加器的单元中的数据放入累加器A 03H3001H将地址为将地址为3001H单

9、元中的数据与累加器单元中的数据与累加器A中的中的数据相加,结果留在数据相加,结果留在A 02H3002H将累加器将累加器A中的数据存入地址为中的数据存入地址为3002H的单元的单元 07H停机停机 动动态态演示演示过过程程第11页/共27页2023/4/1312机器语言程序设计对计算机而言:它的各个硬件部分存在的意义和相互的联系通过指令来体现。对程序设计而言:计算机就是指令系统。用机器语言进行程序设计:首先要熟悉计算机的指令系统,熟悉每一条指令的含义及用法。设计算法,根据算法编写程序。所编写的计算机程序体现为一系列指令的集合,每条指令的操作码和操作数都用二进制数表示。用机器语言编写的源程序就是

10、机器能识别并执行的目标程序。第12页/共27页2023/4/1313一台模型机的指令系统指令名称指令名称操作码操作码|操作数操作数说明说明取数取数 01H NA(N),将地址为将地址为N的单元的数据存入累加器的单元的数据存入累加器A 存数存数02H N(N)A,将累加器将累加器A的数据存入地址为的数据存入地址为N的单元的单元加法加法 03H N将地址为将地址为N的单元的数据和的单元的数据和A中的相加,结果存入中的相加,结果存入A 乘法乘法 04H N将地址为将地址为N的单元的数据和的单元的数据和A中的相乘,结果存入中的相乘,结果存入A比较比较05H NA(N)比较两个数据(相减),结果存入寄存

11、器比较两个数据(相减),结果存入寄存器F 转移转移 06H NPCN 用地址用地址N更新程序计数器更新程序计数器PC的值的值 停机停机 07H停机停机子程序调子程序调用用 08H N断口地址进栈,用地址断口地址进栈,用地址N更新程序计数器更新程序计数器PC的值的值 返回主程返回主程序序 09H断口地址出栈,用来更新程序计数器断口地址出栈,用来更新程序计数器PC的值的值 压栈压栈 0aH T寄存器寄存器T中的数据进栈保存(中的数据进栈保存(T表示任意寄存器表示任意寄存器)出栈出栈 0bH N出栈,出栈数据进入寄存器出栈,出栈数据进入寄存器T 第13页/共27页2023/4/1314编程计算:y=

12、ax2+bx+c 步骤步骤方法一方法一方法二方法二(y=x(ax+b)+cy=x(ax+b)+c)1取数取数a 取数取数a2计算计算a*x 计算计算a*x3 计算计算a*x*x 计算计算a*x+b4 计算计算b*x计算计算x*(a*x+b)5计算计算a*x*xb*x 计算计算x*(a*x+b)+c6 计算计算a*x*xb*x+c(书中未讲,此方法无需调用子程序)书中未讲,此方法无需调用子程序)说明:说明:方法一的第方法一的第4步,也需要用步,也需要用累加器累加器A,而此刻,而此刻A中中是第是第3步的结果。这时,只能将第步的结果。这时,只能将第4步定义为一个子程序,步定义为一个子程序,结果受主程

13、序调用,因此以上步骤实质上变成:结果受主程序调用,因此以上步骤实质上变成:计算计算z=b*x(子程序子程序)zz动动态态演示演示过过程程方方法法一一动动态态演示演示过过程程方方法法二二第14页/共27页2023/4/1315子程序调用中涉及的几个概念 入口地址:第一条指令在程序存储区中的地址。中断:一个程序在执行过程中去执行另一个程序。断口地址:程序中断时的下一条指令的地址。保护现场:程序中断时,有些寄存器存放着中间结果,将寄存器中的中间结果放入某地(堆栈)暂存。恢复现场:子程序执行完毕,再将主程序的中间结果放回寄存器。第15页/共27页2023/4/1316子程序调用过程 第1步:将主程序的

14、断口地址压入堆栈保存。第2步:将子程序的入口地址送入PC。第3步:进入子程序后,首先保护主程序现场。第4步:执行子程序。第5步:子程序执行完毕,恢复主程序现场。第6步:将主程序的断口地址从栈顶送回PC。y=ax2+bx+c 方法一的清单及执行过程见动态演示。动动态态演示演示过过程程方方法法一一第16页/共27页2023/4/1317由低级语言到高级语言机器语言:是第一代程序设计语言,是计算机硬件系统能识别和执行的唯一语言。机器语言的3个局限性:(1)程序不容易读写,操作码和操作数都是二进制数(2)对计算机硬件的依赖性很强,可移植性差(3)指令功能简单,没有按照数据类型分类改进:改进:用助记符代

15、替机器的数字指令,用符号地址表示存储用助记符代替机器的数字指令,用符号地址表示存储 单元的数字地址单元的数字地址汇编语言汇编语言(第二代程序设计语言第二代程序设计语言)改进:改进:面向问题而非面向机器,与计算机硬件结构无关面向问题而非面向机器,与计算机硬件结构无关改进:改进:提供丰富的数据类型,语句一般都采用自然语汇,提供丰富的数据类型,语句一般都采用自然语汇,一条语句往往相当于多条指令。一条语句往往相当于多条指令。第17页/共27页2023/4/1318由低级语言到高级语言第一种高级程序设计语言:Fortran语言(1954年)高级语言的发展:(1)从早期语言到结构化程序设计语言(2)从面向

16、过程到非过程化程序设计语言(面向对象)(3)发展趋势:面向应用第一种结构化程序设计语言:Pascal语言(1970年)高级语言的种类有数百种,比较熟悉的有:Fortran、Basic、Pascal、C、FoxBASE、FoxPro、Lisp、Prolog、C+、Java、C#等第18页/共27页2023/4/1319由低级语言到高级语言区分两组概念:(1)程序设计语言与程序(类似于汉语与文章的关系)程序设计语言是进行程序设计的工具,是计算机全部指令的集合;而任何计算机程序都需要用程序设计语言来编写,是为实现某个算法从该语言中选择所需要指令组成的集合。(2)源程序与目标程序:源程序:程序员编写的

17、程序目标程序:计算机最终能识别并运行的程序(二进制)源源程程序序目目标标程程序序用机器语言编写用机器语言编写用汇编语言编写用汇编语言编写汇汇编编程程序序用高级语言编写用高级语言编写编编译译程程序序汇编汇编编译编译第19页/共27页2023/4/1320C is the most beautiful language!C 语言最早的原型是 ALGOL 601973 年,AT&T 贝尔实验室的 Dennis Ritchie(D.M.RITCHIE,被尊为“C语言之父”)在 BCPL 和 B 语言的基础上设计出了一种新的语言C语言,开发UNIX操作系统及其上的应用程序。1999 年,ANSI 和 I

18、SO 通过了最新版本的 C 语言标准C99,这是关于 C 语言的最新、最权威的定义。选择学习C语言的理由:C语言不仅是面向过程的程序设计语言中功能最强、效率最高的语言,更是面向对象程序设计语言C+、Java和C#的基础。第20页/共27页2023/4/1321C is the most beautiful language!C语言具有很多优点:简洁紧凑、灵活方便 运算符丰富(34个)数据类型丰富 C是结构式语言,程序层次清晰 C语法限制不太严格,语法比较灵活。C语言允许直接访问物理地址,可直接对硬件进行操作,既可以开发系统软件,又可以开发应用软件(中级语言)C语言程序生成代码质量高,程序执行效

19、率高 C语言适用范围大,可移植性好,适合多种操作系统,多种机型第21页/共27页2023/4/1322 开 始 编 辑 编 译 连 接 执 行 有错?结果正确?结 束 有 源程序 file.c 目标程序file.obj 库函数和其它目标程序 可执行目标程序 无 正确 不正确 C程序开发过程file.exe编辑编辑程序代码的录入程序代码的录入,生成源程序生成源程序*.c.c编译编译链接链接运行运行源程序源程序目标程序目标程序可执行程序可执行程序内容内容程序设计程序设计语言代码语言代码机器语言代码机器语言代码机器语言代机器语言代码码可执行?可执行?不可以不可以不可以不可以可以可以扩展名扩展名.c.

20、c.obj.obj.exe.exe语法分析查错,翻译语法分析查错,翻译生成目标程序生成目标程序*.obj.obj与其它目标程序或库与其它目标程序或库链接装配链接装配,生成可执行生成可执行程序程序*.exe.exe第22页/共27页2023/4/1323在VC+6.0下开发程序的过程nC C程序的开发在特定的集成开发环境下进行程序的开发在特定的集成开发环境下进行 n本教材中所有的程序在本教材中所有的程序在VC+6.0VC+6.0下通过,并且课程配套下通过,并且课程配套实验也要求在实验也要求在VC+6.0VC+6.0下下nVC+6.0VC+6.0集成环境中提供了编辑器、编译器、链接器、集成环境中提

21、供了编辑器、编译器、链接器、调试器等多种工具,使得程序员从源程序的编辑到最调试器等多种工具,使得程序员从源程序的编辑到最后的运行均可在集成环境中完成后的运行均可在集成环境中完成n举例:举例:一个一个C C程序在程序在VC+6.0VC+6.0下开发的全过程下开发的全过程(请任课教师在(请任课教师在VC+6.0VC+6.0现场演示一个程序从编辑到运行现场演示一个程序从编辑到运行的全过程)的全过程)第23页/共27页2023/4/1324本章小结n重点掌握:冯重点掌握:冯 诺依曼体系结构的计算机诺依曼体系结构的计算机程序存储思想的主要内容程序存储思想的主要内容五大部件:运算器、控制器、存储器、输入设

22、备、输出设备五大部件:运算器、控制器、存储器、输入设备、输出设备主要功能:高速运算、记忆、控制自动执行、信息交互主要功能:高速运算、记忆、控制自动执行、信息交互存储器的容量大小、存储器的容量大小、CPUCPU中寄存器的分类和作用中寄存器的分类和作用(A A,PCPC)n基本了解:机器内部执行程序的过程,子程序调用的基本了解:机器内部执行程序的过程,子程序调用的过程以及其中的几个主要概念过程以及其中的几个主要概念程序是一组指令,每条指令有操作码,有的指令有操作数程序是一组指令,每条指令有操作码,有的指令有操作数指令存储在程序存储区,操作数存储在数据存储区。指令存储在程序存储区,操作数存储在数据存

23、储区。子程序调用过程中的概念:入口地址、中断、断口地址、保子程序调用过程中的概念:入口地址、中断、断口地址、保护现场、恢复现场护现场、恢复现场第24页/共27页2023/4/1325本章小结n充分理解:程序设计语言与程序、源程序与目标程序充分理解:程序设计语言与程序、源程序与目标程序的关系的关系程序设计语言是编写程序的工具,程序都用一定的语言编写程序设计语言是编写程序的工具,程序都用一定的语言编写源程序不一定是目标程序,取决于用什么语言编写源程序不一定是目标程序,取决于用什么语言编写高级语言编写的源程序到目标程序需要经过编译程序的编译高级语言编写的源程序到目标程序需要经过编译程序的编译n初步感

24、受:学习初步感受:学习C C语言是正确选择,开发语言是正确选择,开发C C程序的过程程序的过程机器语言的三大局限性以及改进方法,高级语言自然产生机器语言的三大局限性以及改进方法,高级语言自然产生C C语言的诸多优点,其重要性语言的诸多优点,其重要性开发开发C C程序的程序的6 6个步骤,个步骤,4 4个主要步骤:编辑、编译、链接、个主要步骤:编辑、编译、链接、运行,每个阶段的文件名以及代码性质运行,每个阶段的文件名以及代码性质初识初识VC+6.0VC+6.0集成开发环境,并体会在此环境下的集成开发环境,并体会在此环境下的4 4步骤步骤第25页/共27页The end of chapter 1第26页/共27页感谢您的欣赏!第27页/共27页

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

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

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

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