《程序设计1(基础知识).ppt》由会员分享,可在线阅读,更多相关《程序设计1(基础知识).ppt(112页珍藏版)》请在三一办公上搜索。
1、计算机程序设计理论,吴文涛:13855170994 丁彬勇:15156078826 汪季英:15155172387 曹思彤:13637094327,课程章节,一、计算机及程序设计基础二、C程序结构和设计方法三、数据类型、运算符和表达式四、程序的控制结构与基本算法五、数组六、函数七、预处理八、指针九、结构体与共用体十、位运算十一、流与文件操作十二、面向对象程序设计语言C+简介,教材与参考书,C语言程序设计 计算机程序设计学习指导与练习 The C Programming Language(K&R),第一章 计算机及程序设计 基础知识,1.1 计算机的发展史1.2 计算机系统的组成及工作原理1.3
2、 微型计算机的系统结构 1.4 信息的表示及存储形式1.5 计算机程序及算法,本章主要内容Key Questions,1.1 计算机发展史,在电子计算机之前,人类用于计算的辅助工具有:算盘,手摇计算机(机械式,主要由机械齿轮组成),大型微分分析仪等。最早研制电子计算机,是为了解决科技进步特别是军事应用方面运算量越来越大的问题。,世界上第一台电子计算机,诞生于1946年2月的世界上第一台电子计算机,是为美国陆军计算枪炮火力表而研制。每张火力表需要计算数百条弹道,一条飞行时间为60秒的弹道,手摇计算机20小时,大型微分分析仪15分钟。军方要求每天计算机6张火力表。,ENIAC(埃尼亚克),这台名为
3、 ENIAC(电子数字积分计算机的缩写)的机器,使用18800个电子管,1500多个继电器,耗电150千瓦,占地170平方米,重达30吨,可谓“庞然大物”也。,电子计算机时代的到来,ENIAC由美国宾夕法尼亚州立大学莫尔学院设计研制,价值40多万美元,运算速度5000次/秒。今天看来,其运算速度低得可怜,而在当时,计算一条弹道时间缩短为30秒。它运算两小时,相当于一个物理学家100年的手工计算,不能不说是一个划时代的事件表明了电子计算机时代的到来。,计算机史,从1946年到今天,计算机技术已经经历了四次革命性的变化(四代),一代比一代体积缩小,功能增强,价格下降。,第一代(1946-1958)
4、,电子技术,核心元件电子管,几千次/秒,用于军事与科学研究。,第二代(1959-1963),半导体技术,核心元件晶体管,几十万次/秒,用于科学计算、数据和事务处理。1954年,美国贝尔实验室研制成功第一台使用晶体管线路的计算机,取名“催迪克”(TRADIC),装有800个晶体管。,第三代(1964-1970),固体物理技术,核心元件中小规模集成电路,在几平方毫米单晶硅片上集成十几个至上百个电子元件;几十万至几百万次/秒;用于各个科学领域。,体积变小,功耗更低,价格降低,运算速度提高,应用领域进一步扩大,第四代(1971至今),核心元件大规模和超大规模集成电路(如“奔腾4处理器”包含4200万个
5、晶体管);上千万次至上亿次/秒;进入现代社会各个领域。超大规模集成电路应用的直接结果是微型计算机的诞生。,今天之计算机,迄今为止的四代计算机都是按美籍匈牙利数学家冯诺依曼提出的工作原理设计制造的,所以也称为“冯诺依曼型计算机”。随着技术的发展,今天的计算机已不再是一种单纯的计算工具。今天的计算机,除了高速运算(数十亿次/秒),还有逻辑处理功能,是一种具有强大信息处理能力的“智能化机器”。换言之,计算机应用已从单纯的数值计算转入信息处理领域。正因为如此,才使计算机走出科研院所的“象牙之塔”,进入现代社会的各个领域。今天的电子计算机,不仅会高速进行各种各样的科学计算,而且象人脑一样,会“判断”,会
6、“思考”,会迅速果断地处理各种问题。所以,越来越多的人开始把计算机叫做“电脑”。,计算机发展史上的重要人物,查尔斯巴比奇(Charles Babbage)。这一位十九世纪的英国数学家,发明了世界上第一台机械计算机器差分机。在19世纪20、30年代,巴比奇就设计了差分机和分析机,他把机器设计成三个部分,一是用来储存数据信息的“仓库(The Store)”,二是进行数据运算处理的“工场(The mill)”。,而巴比奇一生的后四十年都致力于发展一部“会分析的机器”,这位高速数字电脑之父希望这部机器只要输入资料后就可不须人类直接指示,进行各种数学运算。那台怎么也算不上美观的机械,却和现代电脑一样,拥
7、有记忆体、运算部门、控制中心和输出输入中心这四部分,可谓历史性的创造。,计算机发展史上的重要人物,英国数学家图灵(Turing):创建了自动机理论,发展了可计算机性理论,奠定了人工智能的基础。美籍匈牙利数学家冯.诺依曼(Von Neumann):确立了现代计算机的基本结构,即冯.诺依曼体系结构。其要点是计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成数据和指令(程序)以二进制代码形式不加区别地在执行前存放在存储器中存储程序和数据的概念,计算机科学之父:阿伦图灵,Alan Mathison Turing,19121954,英国数学家,右图:图灵纪念馆,阿兰麦席森图灵,1912年生于
8、英国伦敦,1954年死于英国的曼彻斯特,他是计算机逻辑的奠基者,许多人工智能的重要方法也源自于这位伟大的科学家。他对计算机的重要贡献在于他提出的有限状态自动机也就是图灵机的概念,对于人工智能,它提出了重要的衡量标准“图灵测试”,如果有机器能够通过图灵测试,那他就是一个完全意义上的智能机,和人没有区别了。,图灵奖:计算机界的诺贝尔奖,ACM是美国计算机学会的缩写。最初这是美国的一个学术性组织,现在是美国乃至全世界最重要、影响最大的一个计算机学术团体。1966年,ACM创建图灵奖,有计算机界的诺贝尔奖之称。这个奖以英国数学家图灵命名,图灵在计算机出现之前就提出了计算机的模型,设想了它由哪些部件组成
9、,以何种方式和顺序工作,被称为图灵机,奠定了计算机科学理论的基础。但图灵的结局是个悲剧,他在42岁正当年富力强,创造力最旺盛的时候用自杀结束了自己的生命,令世人惋惜,用他的名字命名这个奖项就是为了纪念这位伟人。,计算机之父冯诺依曼,著名美籍匈牙利数学家。1903年12月3日生于匈牙利布达佩斯的一个犹太人家庭。冯诺伊曼自童年起在吸收知识和解题方面就具有惊人的速度。六岁时他能心算做八位数乘除法,八岁时掌握微积分,十二岁就读懂领会了波莱尔的大作函数论要义。一生掌握了七种语言。,冯诺依曼对人类的最大贡献是对计算机科学、计算机技术和数值分析的开拓性工作。ENIAC机证明电子真空技术可以大大地提高计算技术
10、,不过,ENIAC机本身存在两大缺点:(1)没有存储器;(2)它用布线接板进行控制,甚至要搭接见天,计算速度也就被这一工作抵消了。冯诺依曼由ENIAC机研制组的戈尔德斯廷中尉介绍参加ENIAC机研制小组后,便带领这批富有创新精神的年轻科技人员,向着更高的目标进军。1945年,他们在共同讨论的基础上,发表了一个全新的“存储程序通用电子计算机方案”(EDVAC)。,EDVAC方案明确奠定了新机器由五个部分组成,包括:运算器、逻辑控制装置、存储器、输入和输出设备,并描述了这五部分的职能和相互关系。EDVAC机还有两个非常重大的改进,即:采用了二进制,不但数据采用二进制,指令也采用二进制;建立了存储程
11、序,指令和数据便可一起放在存储器里,并作同样处理。这些改进简化了计算机的结构,大大提高了计算机的速度。1946年7,8月间,冯诺依曼和戈尔德斯廷、勃克斯在EDVAC方案的基础上,为普林斯顿大学高级研究所研制IAS计算机时,又提出了一个更加完善的设计报告电子计算机逻辑设计初探。以上两份既有理论又有具体设计的文件,首次在全世界掀起了一股“计算机热”,它们的综合设计思想,便是著名的“冯诺依曼机”,其中心思想就是存储程序原则:指令和数据一起存储。这个概念被誉为”计算机发展史上的一个里程碑。它标志着电子计算机时代的真正开始,指导着以后的计算机设计。,1.2计算机系统的组成和工作原理,计算机系统由 硬件系
12、统和软件系统组成计算机的硬件系统及工作原理、硬件系统的基本组成:1)硬件:计算机系统中由电子、机械和光电元件等组成的各种计算机部件和计算机设备。裸机:未配置任何软件的计算机。2)硬件基本组成:(1)运算器(ALU)(2)控制器(指挥中心)(3)存储器(主存和辅存)(4)输入设备:键盘,鼠标,数字化仪,扫描仪等.(5)输出设备:打印机,绘图仪,显示器等.说明:衡量存储器容量的单位是字节(B),千字节(KB)、兆字节(MB)、吉字节(GB)、TB,运算器 功能:算术运算和逻辑运算控制器 功能:使计算机能自动地执行程序,并使各部分协调工作存储器 功能:用于保存程序和数据 主存储器(内部存储器)存放当
13、前所执行程序的指令和数据 辅助存储器(外部存储器)存放暂不参加运算的程序的指令和数据输入设备 用于程序和数据输入(标准设备:键盘)输出设备 用于程序和数据输出(标准设备:显示器),、其他有关概念:)中央处理器(CPU):包括运算器和控制器两大部分,CPU是计算机硬件的核心。)主机:在硬件系统中,内存、CPU和连接输入输出设备的接口统称为主机。)外部设备:也称为外设,输入设备和输出设备都是计算机的外部设备。、基本工作原理 冯诺依曼的“埃得伐克”理论:二进制、存储程序工作原理、五大构成部件。(1)二进制:以二元逻辑为基础,用0和1 二进制码组成各种信息进行运算。(2)“存储程序”工作原理:在计算机
14、中设置存储器,将二进制编码表示的计算步骤与数据存放在存储器中,机器一启动就能按照程序指定的逻辑顺序依次取出存储内容进行译码和处理,自动完成由程序所描述的处理工作。它被誉为计算机史上的里程碑。,计算机工作原理示意图,运算结果,常用术语,在计算机五大部分中,运算器和控制器是最核心的部分,通常做在一个器件上,称作CPU。【术语】CPU=控制器+运算器(+寄存器组)只有主存(内存)可直接与CPU交换信息,它与CPU组合可实现计算机的基本功能。【术语】主机=CPU+主存储器输入/输出(Input/Output)设备和外存合称“外围设备”。【术语】外设=I/O+辅助存储器,冯诺依曼型计算机,上述计算机的基
15、本结构是由美藉匈牙利科学家冯 诺依曼于1946年提出的。迄今为止所有进入实用的电子计算机都是按冯 诺依曼的提出的结构体系和工作原理设计制造的,故又统称为“冯诺依曼型计算机”。新一代计算机将努力突破冯氏的结构体系和工作原理,将是“非冯诺依曼型计算机”。冯诺依曼型计算机的两大特征 程序存储(计算机自动连续工作的基础)采用二进制(机内一切信息均需为二进制编码形式存在)冯诺依曼型计算机的工作原理 存储程序(将欲执行的任务事先编成程序存入主存中)程序控制(执行时由CPU调用主存中的程序进行运算),指令和指令系统,一台计算机所能执行的各种不同类型指令的总和。即一台计算机所能执行的全部操作。不同计算机的指令
16、系统包含的指令种类和数目也不同。指令系统的组成:操作码和操作数一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、输入和输出型等指令。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。,完备性:指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用方便。有效性:是指利用该指令系统所编写的程序能够高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。规整性:包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。兼容性:至少要能做到“
17、向上兼容”,即低档机上运行的软件可以在高档机上运行。,说明:(1)操作系统:大致包括五大管理功能:处理器管理、存储管理、设备管理、文件管理和作业管理。分类:P2、DOS、WINDOWS、UNIX()计算机语言:)机器语言:计算机能直接识别和执行的语言;面向机器)汇编语言:是符号化的机器语言;面向机器;汇编)高级语言:面向过程,面向对象(解释、编译)()应用软件:为某一应用目的而用系统软件编制的软件。包括应用程序、函数库、子程序库。常见的有字处理软件、电子表格软件、多媒体制作软件,二、软件系统的分类及组成计算机软件:计算机运行时所需的程序、数据和有关文档。,两类软件,软件通常可以分为两类:Sys
18、tem Software(系统软件)Application Software(应用软件),应用软件:我用的,系统软件:它用的,你可以认为应用软件是 你用的,而系统软件是 计算机用的。,System Software:The Computers Boss,功能 用于使计算机能够管理其本身的内部资源,控制硬件的运行,执行各种基本操作,如使CPU与键盘、显示器、打印机和磁盘驱动器通信等。系统软件不用于解决各种业务性或专业性的具体问题。最重要的一种系统软件是“操作系统”。目前个人计算机最常用的系统软件即美国Microsoft(微软)公司的Windows(视窗)系列操作系统。,Application S
19、oftware:Your Servant,功能 用于提高计算机用户的工作效率和创造力。目前个人计算机最常用的应用软件是美国Microsoft(微软)公司的Office系列办公软件和Internet Explorer Browser(IE浏览器)。前者用于编写文档、处理电子表格、制作网页和多媒体演示软件等,后者用于在因特网上“上网冲浪”访问远程网站、下载软件、收发电子邮件、网上交友,机器语言(指令系统)其指令为二进制代码(0、1),如用00110011表示相加。用机器语言编写的程序计算机可直接识别,执行速度最快,但可读性、可移植性差汇编语言 用“助记符”代替二进制代码,如用ADD A,B表示两数
20、相加。其程序必须通过翻译程序(汇编程序)翻译成二进制代码后才能执行。机器语言和汇编语言都是“面向机器”的低级语言。,程序设计语言,高级语言(面向过程)用英文单词和代数表达式编写程序,最接近人类的自然语言(英语)。如用 LET C=A+B 表示两数相加。用高级语言编写的程序称为“源程序”。源程序必须经过翻译程序翻译后计算机才能处理。高级语言的翻译程序有两种:解释程序:翻译一句,计算机执行一句。(相当于“口译”)编译程序:将源程序整个翻译成目标程序,再通过“链接程序”生成“可执行程序”,然后交计算机执行。(相当于“笔译”),程序设计语言小结:低级语言(面向机器语言)机器语言其程序无需翻译即可被识别
21、,执行速度最快 汇编语言其程序需通过翻译程序(汇编程序)处理,常见高级语言种类:BASIC语言简单易学 C语言编程通用 Fortran语言科学计算 Pascal语言程序设计教学,【术语】指令=操作码+操作数(地址码)(操作码不可缺少),高级语言(面向过程语言)其程序需通过翻译程序(解释程序/编译程序)处理,名词:【源程序】用汇编语言或高级语言编写的程序(需经“翻译”处理)【翻译程序】将源程序译成目标程序或可执行指令的程序【目标程序】经翻译程序翻译生成的程序【可执行程序】经连接程序处理过的程序互相关系,MOV A,3ADD A,6,A=5,B=4C=B+A*2/B,01100100011011,
22、目标程序,高级语言源程序,汇编语言源程序,汇编程序,编译程序,解释程序,可执行程序,连接程序,翻译一句执行一句,注意生成目标程序的条件!,支持数据库的编程语言,VB:全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具 PB:全称PowerBuilder,是开发MIS系统和各类数据库跨平台的首选,使用简单,容易学习,容易掌握,在代码执行效率上也有相当出色的表现 C+Builder/Delphi:它们都是基于VCL库的可视化开发工具,它们在组件技术的支持、数据库支持、系统底层开发支持、网络开发支持、面向对象特性等各方面都有相当不错的表现,并且学习使用较为容易,充分
23、提现了所见即所得的可视化开发方法,开发效率高 Visual C+:是基于MFC库的可视化的开发工具,从总体上说它是一个功能强大但是不便使用的一种工具。Java:面向对象特性高,支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的网络开发中占据越来越重要的地位。,三、计算机系统的层次结构,内核:硬件系统桥梁:系统软件最外层:应用软件,硬件系统,系统软件,用户,应用软件,计算机系统的分类:根据其体积大小和处理能力,通常可分为Supercomputers(超级计算机)Mainframe computers(大型计算机)Workstations(工作站)Microcomputers(微型计算机)
24、Microcontrollers(微控制器),1.3 微型计算机的系统结构,世界超级计算机全球TOP500排行榜,世界超级计算机TOP500排名,是由国际专业评价超级计算机性能的组织“TOP500”倡导发起的。该组织于1993年成立,每年6月和11月各发布一次全世界已安装并在使用的运算速度最快的前500台超级计算机的排名,截至到2003年6月27日为止,已经进行了21届。到2003年6月排名第一的是NEC公司的Earth-Simulator/5120超级计算机,运算速度达到35.86万亿次。日本的K超级计算机的运算能力为每秒8.16千万亿次,超过中国的天号-1A成为全球运算能力最强的超级计算机
25、系统。K配置68544个SPARC64VIIIfxCPU(中央处理器),每个CPU集成有8个内核,内核总数为548352个,几乎相当于排行榜上其他系统的2倍。,飞速发展的计算机技术,摩尔定律:Intel的创始人之一 Gordon Moore在1965年提出了这个著名的定律,预言单位平方英寸芯片的晶体管数目每过18到24个月就将增加一倍。过去四十年的芯片产业一直遵循摩尔定律每18个月速度增长一倍的规律运行。事实上,Intel的CPU芯片上的晶体管数目已经由1971年的2300增长到今天Pentium 4处理器的5500万,即增长了两万四千倍。,索尼公司展示新型掌上电脑,CPU,CPU的英文全称是
26、Central Processing Unit,即中央处理器。CPU从雏形出现到发展壮大的今天,由于制造技术的越来越先进,其集成度越来越高,内部的晶体管数达到几百万个。虽然从最初的CPU发展到现在其晶体管数增加了几十倍,但是CPU的内部结构仍然可分为控制单元,逻辑单元和存储单元三大部分。CPU的性能大致上反映出了它所配置的那部微机的性能,因此CPU的性能指标十分重要。主频,也就是CPU的时钟频率,简单地说也就是CPU的工作频率。内存总线速度或者叫系统总路线速度,一般等同于CPU的外频。工作电压,工作电压指的也就是CPU正常工作所需的电压。制造工艺,Pentium CPU的制造工艺是0.35微米
27、,PII和赛扬可以达到0.25微米,最新的CPU制造工艺可以达到0.18微米,并且将采用铜配线技术,可以极大地提高CPU的集成度和工作频率。,CPU发展史,1971年。世界上第一块微处理器4004在Intel公司诞生了。它出现的意义是划时代的,比起现在的CPU,4004显得很可怜,它只有2300个晶体管,功能相当有限,而且速度还很慢。1978年,Intel公司首次生产出16位的微处理器命名为i8086,由于这些指令集应用于i8086和i8087,所以人们也这些指令集统一称之为X86指令集。这就是X86指令集的来历。1979年,Intel公司推出了8088芯片,它是第一块成功用于个人电脑的CPU
28、。它仍旧是属于16位微处理器,内含29000个晶体管,时钟频率为4.77MHz,地址总线为20位,寻址范围仅仅是1MB内存。8088内部数据总线都是16位,外部数据总线是8位,而它的兄弟8086是16位,这样做只是为了方便计算机制造商设计主板。1981年8088芯片首次用于IBM PC机中,开创了全新的微机时代。1982年,Intel推出80286芯片,它比8086和8088都有了飞跃的发展1985年Intel推出了80386芯片,它X86系列中的第一种32位微处理器,而且制造工艺也有了很大的进步1989年,Intel推出80486芯片,它的特殊意义在于这块芯片首次突破了100万个晶体管的界限
29、,集成了120万个晶体管。,现今的CPU,Pentium:就是大名鼎鼎的“奔腾”处理器,它是Intel在1993年推出的全新一代的高性能处理器 Pentium Pro:Intel在1996年推出的第六代X86 CPU。Pentium MMX:与1996年底又推出了Pentium 系列的改进版本Pntium:1997年5月,Intel又推出了和Pentium Pro同一个级别的产品。Celeron:赛扬是Intel针对PentiumII提出的廉价版本,其核心技术与PentiumII相同,企图攻占低价位个人电脑市场,可以说是Intel为抢占低端市场而专门推出的 Xeon:至强处理器,主要是用于高端
30、的NT服务器的。Intel PentiumIII:其受瞩目的原因是其在多媒体方面性能的增强,能加速需要密集处理运行的程序。2000年3月6日:AMD 发布Athlon 1GHz Intel 的Pentium IV 和AMD Athlon64。虽然按照发布时间来说,Athlon64 要比Pentium IV 迟一个时代(Pentium IV 发布时间是2000年11月,而Athlon64 则是2003年9月),但Pentium IV 经过了几年的的换芯,性能也获得了显著提升。2006年Intel宣布了酷睿双核处理器。这是第一款面向便携式电脑设计的双核处理器,拥有极佳的性能,至少比P4快多了。这也
31、是第一款真双核X86处理器,共享缓存设计。今天的中流砥柱:酷睿2,计算机主板,主板是电脑系统中最大的一块电路板,它的英文名字叫做“Mainboard”或“Motherboard”,简称M/B。主板上布满了各种电子元件、插槽、接口等。它为CPU、内存和各种功能(声、图、通信、网络、TV、SCSI等)卡提供安装插座(槽);为各种磁、光存储设备、打印和扫描等I/O设备以及数码相机、摄像头、“猫”(Modem)等多媒体和通讯设备提供接口,实际上电脑通过主板将CPU等各种器件和外部设备有机地结合起来形成一套完整的系统。电脑在正常运行时对系统内存、存储设备和其它I/O设备的操控都必须通过主板来完成,因此电
32、脑的整体运行速度和稳定性在相当程度上取决于主板的性能。,计算机主板,认识内存,在了解内存的发展之前,我们应该先解释一下几个常用词汇,这将有助于我们加强对内存的理解。RAM就是Random Access Memory(随机存贮器)的缩写。它又分成两种Static RAM(静态随机存贮器)和Dynamic RAM(动态随机存贮器)。DRAM,顾名思义即动态RAM。DRAM的结构比起SRAM来说要简单的多,基本结构是一只MOS管和一个电容构成。具有结构简单、集成度高、功耗低、生产成本低等优点,适合制造大容量存储器,所以现在我们用的内存大多是由DRAM构成的。FP DRAM:又叫快页内存,在386时代
33、很流行。EDO DRAM:EDO RAMExtended Date Out RAM外扩充数据模式存储器,流行在486以及早期的奔腾电脑上。SDRAM是一种改善了结构的增强型DRAM。计算机的制造工艺发展到已经可以把微处理器(CPU)的时钟频率提高的一千兆的边缘。相应的内存也必须跟得上处理器的速度才行。现在有两个新的标准,DDR SDRAM内存和Rambus内存。,显示器,从早期的黑白世界到现在的色彩世界,显示器走过了漫长而艰辛的历程,随着显示器技术的不断发展,显示器的分类也越来越明细。CRT显示器按大小分类调控方式不同显像管种类的不同LCD液晶显示器,声卡和音箱,Microcontroller
34、s:微控制器,亦称为“嵌入式”、“专用型”或“隐藏式”计算机。微控制器实际上是安装在各种智能设备(如电脑控制的微波炉、袖珍计算器等)中的微型计算机芯片(通常称为“单片机”)。价格一般在几几十美元。,单片机芯片:SST89C58单片机,正面,背面,1.4 信息的表示与存储,一、数制1.进位记数制概念:用进位的方法进行记数的数制称为进位记数制。三要素:,111=1*102+1*101+1*100123.456=1*102+2*101+3*100+4*10-1+5*10-2+6*10-3,例如10进制:09、基数10,每一位上数字的权重10n,在计算机中,用的是二进制,其他还常用八进制、十六进制,其
35、三要素如下表:,(按权展开式),数据元素、基数、权重。,练习,101.1B=(17)8=(1A.8)16=,1*22+0*21+1*20+1*2-1=5.5D,1*81+7*80=15D,1*161+10*160+8*16-1=26.5D,2、二进制、八进制、十进制、十六进制转换,二进制、八进制、十六进制 转换为十进制 方法:按权展开式十进制转换为二进制、八进制、十六进制 方法:整数除基取余,直至商0,余数倒序排(短除)小数乘基取整,直至足精,整数正序排(短乘)例1 将43D转换成二进制、八进制、十六进制,43,2,21,1,2,10,1,2,5,0,2,2,1,2,1,0,2,0,1,43D
36、=101011B,43D=(53)8,43D=(2b)16,例2.将0.875D转换 成二进制、八进制、十六进制,0.875,X 2,1.75,1,0.75,X 2,1.50,1,0.50,X 2,1.0,1,0,0.875D=0.111B,0.875D=(0.7)8,0.875D=(0.E)16,实数是整数、小数分别转化后合在一起:(43.875)10=(101011.111)2=(53.7)8=(2B.E)16,二进制、八进制、十六进制的相互转换,二进制到八进制:整数从右向左,三位一段,分别转化小数从左向右,三位一段,分别转化例,(1010101.11011)2,1 2 5.6 6,二进制
37、到十六进制:整数从右向左,四位一段,分别转化小数从左向右,四位一段,分别转化例,101,0101.1101,1,5 5.D 8,0,000,八进制到二进制、十六进制到二进制,将八进制的每一个位变成三位二进制数;十六进制的每一个数位变成四位二进制数。,例:(5 4 3.2 1)8,=(101 100 011.010 001)2,例:(5 A 3.2 1)16,=(0101 1010 0011.0010 0001)2,八进制和十六进制之间转换必须以二进制作为中间桥梁,(5A3.21)16=(10,110,100,011.001,000,01)2=(2643.102)8,3.二进制、八进制、十六进制
38、、十进制对应关系:,二.计算机中数据的表示:1.符号位的表示:通常规定一个数的最高位作为符号位,例:“0”表示正,“1”表示负。2.原码、反码、补码:(1)数的原码指最高位为数符位,“0”表示正,“1”表示负。数值部分是原码的绝对值.(2)数的反码表示法规定:正数的反码和原码相同,负数的反码是对其原码除符号位外各位求反(0变1,1变0).(3)补码表表示法规定:正数的补码和原码相同,负数的补码是在其反码的最后一位上加1.(4)补码运算具有3个优点:减法变加法;符号位参与运算;补码之和等于和的补码。3.定点数与浮点数:在计算机中表示小数时,根据其小数点位置是否固定,分为定点表示法和浮点表示法.,
39、字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1,数值的表示方法原码、反码和补码原码:最高位为符号位,其余各位为数值本身的绝对值反码:正数:反码与原码相同负数:符号位为1,其余位对原码取反补码:正数:原码、反码、补码相同负数:最高位为1,其余位为原码取反,再对整个数加1,9-5=49+7=16=(14)12,负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001 取反:10000110 加1:10000111=-7,4.计算机中的数据单位:(1)比特(bit):位,即一个二进制位。(2)字节(byte,B)1B=8 bi
40、t 一个英文字符占用1个字节,一个汉字占两个 字节。(3)字(Word):是计算机进行数据处理时一次存取、加工和传递的一组二进制代码的位数位,其长度叫字长,是衡量计算机性能的一个重要指标。(4)其它容量单位:1K=210B=1024B1000B 1M=210KB=220B 1GB=210MB=230B 1TB=210GB=240B,三、计算机中字符的编码,1.英文字符编码:字符数据包括:运算符号、货币符号、控制符号、字母和数字等。计算机中使用最广泛的字符编码是美国信息交换标准码(ASCII).采用7位二进制编码,可表示128 个字符。其中95个可打印字符,33个不可打印和显示字符。,扩充的AS
41、CII表:8位码,共256个编码,增加了128个图形符号。2.汉字编码:输入码(外码):输入汉字所使用的由字母和数字构成的编码。有流水码、音码、形码、音形码。汉字交换码(国标码):用于不同汉字信息处理系统之间或者汉字处理系统与通信系统之间进行信息交换的汉字码,要求必须采用统一的形式。(1)1981年国家颁布GB231280 通讯用汉字字符集(基本集)及其交换标准码统称标准码、交换码。收录了7445个汉字及符号,其中6762个汉字,分为两级:一级3755个,二级3008个。(区位码)(2)1995.12,发布汉字扩展内码规范GBK编码方案。(3)2000.3,发布GB18030-2000,收录2
42、7000多汉字。,汉字内码(机内码):是计算机内部对汉字进行采集、传输、存储、加工运算的各个处理过程中使用的汉字编码。汉字字形码(字模码):汉字字形点阵信息的数字代码,存放在汉字字库中。点阵汉字字形中的每一个点阵都由一个二进制位来表示。(1).目前点阵的字模标准:16*16、24*24、32*32、48*48 其中24*24 的字形点阵每个字节需72个字节。(2).点阵数越多,字形质量越好,但字库文件占用存储 空间越大,操作速度越慢。(3).目前还常用矢量字库(字形用直线描绘,可以任意缩放)和轮廓字库(由直线和曲线命令生成字形,边界可以按比例缩放和旋转)。,汉字四种编码的关系:,输入码,交换码
43、,内 码,字形码,显示,打印,输入法完成转换,换汉字操作系统完成转,字库驱动程序或字模生成器,通用编码字符集UCS与Unicode,国际标准 ISO 10646 定义了 通用字符集(Universal Character Set,UCS).UCS 是所有其他字符集标准的一个超集.它保证与其他字符集是双向兼容的.就是说,如果你将任何文本字符串翻译到 UCS格式,然后再翻译回原编码,你不会丢失任何信息.,历史上,有两个独立的,创立单一字符集的尝试.一个是国际标准化组织(ISO)的 ISO 10646 项目,另一个是由(一开始大多是美国的)多语言软件制造商组成的协会组织的 Unicode 项目.,U
44、nicode 将取代所有这些编码,主要通过 UTF-8 的形式.UTF-8 将应用在 文本文件(源代码,HTML 文件,email 消息,等等)文件名 标准输入与标准输出,管道 环境变量 剪切与粘贴选择缓冲区 telnet,modem 和到终端模拟器的串口连接 以及其他地方以前用ASCII来表示的字节串,1.5 计算机程序与算法,一个程序应包括对数据的描述和对数据处理的描述。1、对数据的描述,即数据结构。数据结构是计算机学科的核心课程之一,有许多专门著作论述,本课程就不再赘述。2、在C语言中,系统提供的数据结构,是以数据类型的形式出现的。3、对数据处理的描述,即计算机算法。算法是为解决一个问题
45、而采取的方法和步骤,是程序的灵魂。为此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:数据结构+算法=程序 实际上,一个程序除了数据结构和算法外,还必须使用一种计算机语言,并采用结构化方法来表示。,1.5.1 算法的概念,算法(Algorithm):是指解决一个具体问题的意义明确的步骤的集合,是有限的。算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复
46、杂度来衡量。,例:欧几里德算法欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。其计算原理依赖于下面的定理:定理:gcd(a,b)=gcd(b,a mod b)(ab 且a mod b 不为0),有穷性:一个算法应当包含有限的步骤,而不能是无限的步骤;同时一个算法应当在执行一定数量的步骤后,算法结束,不能死循环。事实上“有穷性”往往指“在合理的范围之内”的有限步骤。如果让计算机执行一个历时1000年才结束的算法,算法尽管有穷,但超过了合理的限度,人们也不认为此算法是有用的。确定性:算法中的每一个步骤都应当是确定的,而不是含糊的、摸棱两可的。也就是说不应当产生歧义。特别是算法用自
47、然语言描述时应当注意这点。例如:“将成绩优秀的同学名单打印输出”就是有歧义的。“成绩优秀”是要求每门课程都90分以上,还是平均成绩在90分以上?不明确,有歧义,不适合描述算法步骤。,算法的特性,有0个或多个输入(即:可以没有输入,也可以有输入)所谓输入是指算法执行时从外界获取必要信息。(外界是相对算法本身的,输入可以是人工键盘输入的数据,也可以是程序其它部分传递给算法的数据)例如:不需要输入任何信息,就可以计算出5!;(0个输入)例如:如果要计算两个整数的最大公约数,则需要输入2个整数m,n。(2个输入)有1个或多个输出(即算法必须得到结果)算法的输出:算法得到的结果。算法必须有结果,没有结果
48、的算法没有意义。(结果可以是显示在屏幕上的,也可以是将结果数据传递给程序的其它部分)有效性算法的每个步骤都应当能有效执行,并能得到确定的结果。例如:b=0,则执行a/b是不能有效执行的。,1.5.2 怎样表示一个算法,为了表示一个算法,可以用不同的方法。常用的算法表示方法:自然语言,传统流程图,结构化流程图(N-S流程图),伪代码、计算机语言等。(重点:传统流程图,N-S流程图),2、用自然语言表示算法,自然语言就是人们常用的语言,可以是汉语、英语或其他语言。用自然语言表示通俗易懂;但文字冗长,容易出现“歧义”性;而且,用自然语言描述包含分支和循环的算法,不很方便。一般不使用自然语言描述算法。
49、,例如:描述计算并输出z=y/x的流程,可以用自然语言描述如下:(1)输入x,y。(2)判断x是否为0:若X=0,则输出错误信息;否则计算 y/x z,且输出z。,自然语言描述举例,例:判断2000年-2500年中的每一年是否闰年,将结果输出。解:闰年的条件是:(1)能被4整除,但不能被100整除的年份是闰年;如1996,2004年。(2)能被100整除,又能被400整除的年份是闰年。如1600,2000年。不符合这两个条件的年份不是闰年。,算法如下:设y为被检测的年份,可采取以下步骤:S1:2000 y;S2:若y不能被4整除,则输出y“不是闰年”。然后转到s6.S3:若y能被4整除,不能被
50、100整除,输出y“是闰年”,然后转到s6。S4:若y 能被100整除,又能被400整除,输出y“是闰年”,然后转到s6。S5:输出 y“不是闰年”。S6:y+1 y;S7:当y2500时,转s2继续执行,如y2500,算法停止。,(1)使S=0(S作为累加变量);(2)使N=1(N代表分母);(3)S+1/N S(执行迭代,S为迭代变量);(4)N+1 N;(5)若N100,转去执行(3)以及其后的各步骤;否则执行(6);(6)打印S的值(即所求之总和)。,例:求下列级数的值,可以写出下面的算法,算法描述语言:是为了说明程序的流程而专门规定的某种语言。它一般介于自然语言与程序设计语言之间,它