1、1/48,第 二 章,计算机和计算机程序,2/48,本章主要内容,计算机是实现算法的有效工具; 计算机的基本组成; 计算机中存储信息的方法; 计算机语言和计算机程序; 程序运行环境; 程序开发的步骤。,计算机和编程基础知识,3/48,2.1计算机是实现算法的有效工具,算法是解题的方法和步骤的描述; 对于算法(侠义)的实现可以有多种途径; (如心算、计算器、计算尺、算盘等等计算工具来实现算法); 由于电子计算机所具有的基本特征(高速度、大容量等),直到目前为止还是实现各种复杂算法的最有效工具 。,4/48,2.1计算机是实现算法的有效工具,电子计算机的特点: 使用脉冲数字电路,能进行高速数据传输
2、和数据计算(数据处理)任务;(速度上) 计算精度高;(如 的精度达到200万位) 具有存储信息的能力; 由程序控制、全自动运行;(逻辑判断) 使用的是二进制数据表示; 可靠性高、通用性强。,5/48,2.1计算机是实现算法的有效工具,电子计算机的主要用途: 科学计算; 数据处理; 自动控制; 辅助设计与制造(CAI CAT CAD CAM); 人工智能(Artificial Intelligengce)等等。,6/48,2.2 计算机的基本组成,7/48,用 户 数据区,程 序 存储区,输出设备,输入设备,外部存储设备,控制器,运算器,存储器,信息流,控制流,8/48,2.2 计算机的基本组成
3、,运算器运算器或称算术逻辑单元(Arithmetical and Logical Unit-ALU)的主要功能是对数据进行各种运算。它由ALU、通用和专用寄存器组、内部总线组成。(加法器+ 逻辑功能部件逻辑运算) 存储器存储器(Memory Unit)的主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。根据存储器在系统中的作用,可分为:高速缓冲存储器、内存储器、外存储器。,9/48,2.2 计算机的基本组成,控制器 控制器(Control Unit)是整个计算机系统的控制中心,它指挥计算机各部分协调工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操
4、作及处理。控制器由以下五个部件组成: 1)程序计数器(存放下一条指令地址); 2)指令寄存器(存放来自存储器的待执行的指令); 3)指令译码器(指令译码,将指令的操作码部分“翻译”成相 应的操作); 4)时序部件(产生计算机工作中所需的各种时序信号-节拍); 5)微操作部件(控制器的主体:一条指令的执行过程可更进 一步地看做是微操作的产生过程);,10/48,11/48,2.2 计算机的基本组成,输入设备用来向计算机输入各种原始数据和程序的设备叫输入设备(Input Device)。有文字输入设备、图形输入设备、图像输入设备、语音输入设备等等 输出设备从计算机输出各类数据(信息)的设备叫做输出
5、设备(Output Device)。 有的设备是:Input and Output(I/O),12/48,2.2 计算机的基本组成,冯诺依曼计算机的基本工作过程,概括地说就是:存储指令取指令分析指令执行指令再取下一条指令,依次周而复始地执行指令序列的过程。,13/48,2.2 计算机的基本组成,14/48,2.3计算机中存储信息的方法,存储信息的单位: 存储容量:一个存储器能容纳的存储单元总数;一般使用: 字(word) 字节 (Bytes) 位(Bit) KB MB GB (吉) TB(太拉),15/48,2.3计算机中存储信息的方法,数制的转换: 1) 二进制十进制 (1101)2=123
6、 +122 +021 +120=(13)10 2) 二进制十六进制、八进制 (111101.111)2(0011 1101.1110)2(3D.E)16 (111101.111)2(111 101 . 111)2 (75.7)8,小数部分是2的负次方之和,16/48,数的多项式表示 对于一个k进制的数转换为十进制数:,k:基数 m:数字(0k-1的数字) n:整数和小数部分的位数值,17/48,2.3计算机中存储信息的方法,3) 十进制二进制,(53)10=(110101)2,除取余,18/48,2.3计算机中存储信息的方法,(0.375)10=(0.011)2,乘取整,19/48,2.3计算
7、机中存储信息的方法,非数值领域: ASCII(American Standard Code for Information Interchange )美国信息交换标准代码 。 一个字节为8位二进制,一个ASCII码占一个字节的低7位,最高位为规定为0,这样一个字节可表示2的7次方即128种状态,从00000000-01111111,每种状态与一个ASCII码字符唯一对应,即可表示128个字符,包括26个英文大写字符、26个英文小写字符、10个数字字符、33个标点符号和33个控制符。 EBCDIC扩充的二十进制交换码(用于大型机),20/48,2.4计算机语言和计算机程序,为了使人和计算机能进行
8、信息交互而使用的、人机都能理解的特定语言 计算机语言。 (人机共同语言) 计算机语言的种类: 机器语言; 符号语言;(Symol) 算法语言; 非过程化语言(面向对象的OOP)。,21/48,2.4计算机语言和计算机程序,机器语言:每一类计算机都规定了由若干位二进制信息组成的一条条指令。所有这些指令的集合就是该机器的指令系统。计算机能直接执行这些二进制指令机器指令. 全部机器指令的总和就称之为该机器的机器语言。为求解某一实际问题而从指令系统中挑选一些指令组成一个序列就是机器语言程序。,22/48,B0 07 Mov AL,07 B3 03 Mov BL,03 28 D8 Sub AL,BL C
9、D 20 Int 20,23/48,2.4计算机语言和计算机程序,符号语言:由于机器语言指令的二进制码难以记忆,使用也很繁琐,人们想到使用符号来代替原来的指令的办法符号语言。一般来说,一条符号语言指令对应一条机器指令。因此,使用符号语言指令编写程序就需要一个翻译工具汇编程序就是来完成这个任务的(也称之为“汇编”或“代真”过程),最后得到的机器指令就是“目标程序”;MOV AX,1000 ADD AX, BXSUB AX, BX,24/48,2.4计算机语言和计算机程序,算法语言:对于机器语言和符号语言都是面向机器的,可移植性较差,属于“低级语言”;算法语言的表示方式接近自然语言和数学语言,是面
10、向“过程”的语言高级语言;常用的算法语言:BASIC;FORTRAN;COBOL;PASCAL;C系列;ADA(每种语言都有不同版本),面向过程的语言,25/48,2.4计算机语言和计算机程序,非过程化语言: 算法语言是过程化的语言,就是在解题中要详尽规定解题过程的每一步骤,清楚地描述(由程序安排)“做什么”,“怎么做”。 现在人们开发出了非过程化语言,就是只要确定“做什么”,计算机就能完成任务。如“打印出我校入学成绩600分以上的学生姓名” LIST ALL FOR 入学成绩=600,26/48,2.4 计算机语言和计算机程序,计算机程序 语言:是指全部指令的集合,每一种语言都规定了各自的语
11、法规则以及语用含义。 程序:为解决某一特定问题而用某一种语言编写的指令序列。它们之间的关系类似于: 如:中文语言一篇中文论文程序,27/48,2.4 计算机语言和计算机程序,用计算机语言编程要掌握三个基本概念: 语法:掌握严格的语法规则编程,不然编译系 统会给出语法错误。 语义:掌握语法成分的含义: Print是打印输出; Write是输出到指定的设备上; 语用:要善于利用语法规则中有关规定和语言成分的含义组织程序以达到特定的目的。如怎样得到所需的循环次数,如何得到我要的打印格式正确使用语言问题。,都是表示输出,28/48,2.4 计算机语言和计算机程序,N.WIRTH指出:“程序就是在数据的
12、某些特定的表示方式和结构的基础上,对抽象算法的具体描述”: 1)对求解一个问题,先应有正确的算法; 2)程序处理的对象是数据,数据有自己的特 性,而且它们还有内在联系等。要合理组 织它们就要选择合适的数据结构。 3)程序不仅要描述算法,还要描述数据结构,算法+数据结构=程序,理 解,29/48,2.4 计算机语言和计算机程序,对程序的评价: 根据N.WIRTH提出的 “算法+数据结构=程序”的公式来评价一个程序时,除了要求程序的正确性和有效性外,还要求程序具有简明性、可靠性、可修改性、可重用性等特征。,30/48,2.4 计算机语言和计算机程序,对于“结构化程序设计”,除了“算法”和“数据结构
13、”外,我们还应该遵循:,算法+数据结构+结构化方法+语言工具,结构化程序,结 构 化 程 序 设 计 的 四 大 要 素,31/48,2.5 程序运行环境,要运行一个程序,除了硬件外,还需要有软件环境的支持。对于语言程序除了有相应的汇编、解释、编译程序外,还必须有操作系统这个最大的、最基本的软件环境的支持。,32/48,2.5 程序运行环境,软件环境: 操作系统; 编辑程序; 翻译程序; 装配连接程序,硬件,操作系统,应用软件层,33/48,2.5 程序运行环境,操作系统 操作系统是指对计算机系统的硬件资源(CPU、存储器、I/O设备)和软件资源(各种系统软件和应用软件)进行统一指挥、统一管理
14、、统一分配、统一调度的软件系统,是计算机系统正常运行的控制中心,是现代计算机必备系统软件。人们常常将没有操作系统的计算机称之为“裸机”。,34/48,2.5 程序运行环境,操作系统分为:,单用户系统(用户独占方式) 批处理方式(多道作业),分时系统(多终端系统) 实时系统(强调响应速度),目前流行的系统:UNIX、WINDOWS、部分DOS,35/48,2.5 程序运行环境,操作系统的功能,存储管理,处理机管理,设备管理,文件管理,进程管理,控制CPU每瞬时的工作,接受中断信号,为用户提供CPU处理。,有效地管理计算机的各种设备,使之有效地工作,合理地为用户分配存储空间,有效地管理内存。,管理
15、外存中的程序和数据,在需要时及时调入内存使用。,是指处理机执行程序对数据进行处理的全过程所进行的管理。 合理地调度用户作业,负责组织和控制作业的运行,决定什么时候可以使用处理机。,36/48,2.5 程序运行环境,编辑程序是源程序的建立与修改(修改、插入、删除等)的平台。一般来说可以是一个文字编辑系统。 如:EDLIN EDIT 写字板 WORD等 翻译程序 是一个将符号语言或高级语言翻译成机器语言的程序。有以下三种:汇编程序;解释程序;编译程序;,例如,37/48,2.5 程序运行环境,汇编程序的功能: 将符号语言程序翻译成机器语言程序,它对符号语言源程序逐行扫描,将机器码代替助记符(代真)
16、,并进行语法检查。编译程序的功能: 将高级语言程序(算法语言)转换成机器语言程序,具有翻译和查错功能。词法、语法、语义分析、生成目标程序以及优化目标程序等功能。,例如,38/48,2.5 程序运行环境,解释程序: 也是将高级语言程序转换成机器语言程序,它是边翻译边执行,即输入一句,翻译一句,执行一句,不产生整个目标程序。遇见错误语句就立即停止执行。 (典型的使用解释程序的语言是BASIC语言),39/48,2.5 程序运行环境,装配连接程序:经过编译得到的目标程序(*.OBJ)是不能立即执行的,因为在目标程序中,一般包含着内部函数、外部函数、子程序、过程库中的程序等,需要进一步的将它们连接起来
17、-装配连接程序,最后变成可执行的程序(*.EXE). 源程序编译装配连接运行,40/48,2.5 程序运行环境,编辑 (源程序的建立),编译 (源程序生成目标程序),装配连接 (将目标程序与子程序连接),运行,算法语言程序设计步骤,41/48,2.6 程序开发的步骤,软件生命期和软件工程的概念与计算机硬件的发展过程一样,软件也有它们的生命期限(伴随着硬件)如微软最近公布停止对XP进行“主流支持”,而进入所谓的“延长支持期”,年内淡出市场这样,我们的Win XP、Office2003等需要升级,不然可能造成危险。对于系统的升级:Win 7 或 Vista,42/48,2.6 程序开发的步骤,软件
18、生命期和软件工程的概念 开发一个应用系统所经过的阶段:建立数学模型;确定算法,画出流程图;编写程序;程序测试。 对于一个复杂的问题,直接写出算法是困难的,这就要运用“软件工程”的方法来开发,也就是运用工程学的知识和方法指导和规范软件开发全过程。,43/48,2.6 程序开发的步骤,软件生命期和软件工程的概念-软件生命期(阶段): 定义阶段: 软件开发计划:确定总目标,选定可行的方案 需求分析:详细分析用户需求,最后形成功能说明书 开发阶段: 总体设计:确定软件系统结构,即大系统下的子系统 详细设计:使用流程图对各个子系统完成设计算法 编程:用语言程序来实现算法 软件测试:重复运行以纠正错误:常
19、规测试、极限测试 维护阶段 交付使用:交付程序和文档资料,说明运行环境等 软件维护:在使用中不断修改错误直至软件消亡.,44/48,2.6 程序开发的步骤,软件生命期和软件工程的概念-各阶段的工作量之比: 定义(1),设计和编码(10),测试(50),维护(501000) 设计人员工作范畴:系统分析员:系统的分析与定义高级程序员:总体设计以及测试程 序 员:详细设计和编程、维护。,45/48,2.6 程序开发的步骤,结构程序设计方法: 一个结构化程序就是用高级语言表示的结构化算法。只要是使用三种结构(顺序、选择、循环)组成的程序一定是结构化(就是层次分明、结构清晰、算法准确)的程序。 结构化程
20、序设计方法的基本思想:将复杂问题的求解分阶段、分模块地进行: 1)自顶向下(从下到上);2)逐步细化; 3)模块化设计; 4)结构化编码。,46/48,学院财务管理系统,一系财务,二系财务,三系财务,院部财务,教工工资,科研经费,实验经费,办公经费,47/48,一个简单的结构化程序设计举例,将11000之间的素数打印出来,用筛选法求素数表,输入11000的各个数,把所有的非素数去掉,打印全部素数,输入11000的各个数-A,把所有的非素数去掉-B,打印全部素数 -C,古希腊数学家Eratosthenes提出的这个筛选法,48/48,A,输入N,1I,当I=N,IXi,I+1I,输入数据个数(数
21、据由程序产生),当N=10时,则有: X1=1 X2=2 X3=3X10=10,49/48,B,0X1,2I,当I ,I+1I,是,否,Xi=0?,I+1J,J+1J,当J=N,是,否,Xj=0?,0Xj,否,是,Xj能被Xi整除,外循环: 确定Xi 内循环: 确定该数是否是素数。,将X1=1去掉,1 2 3 4 5 6 7 8 9 10 0 0 0 0 0,0 2 3 0 5 0 7 0 9 0 0 0 0 0 0 0,50/48,1I,当I=N,I+1I,C,PRINT Xi,是,否,Xi=0?,当该数为0时表示该数已经去掉,完,51/48,本章小结,计算机的基本组成及工作原理; 计算机中
22、数的表示、编码方法等; 计算机的基本特点及应用分类; 计算机中存储信息的方法与容量表示; 计算机语言和计算机程序; 计算机程序运行环境; 算法语言程序的建立运行的步骤; 应用系统开发的步骤。,52/48,END,练习解释,53/48,面向过程的语言:,定义:不考虑机器内部构造和不同机器的特点,只要按照解题的算法写出解题过程就能执行的语言程序。 早期的算法语言基本都是面向过程的语言,现在人们已经使用了更新的算法语言面向对象的程序设计语言(OOP)。,返回,54/48,Eratosthenes筛选法,1)输入11000的数据; 2)先去掉1; 3)用刚才去掉的数的后一个数,去掉后面的各数中是该数的
23、倍数; 4)判断这个数P是否大于N的开方数; 5)剩下的数就都是素数。,返回,55/48,第二章的练习12题3小题,给定10个数,打印出其中最大的一个数,输入10个数,找出其中最大的数,打印最大的数,采用自顶向下,逐步细化的结构化算法,56/48,第二章的练习12题3小题,给定10个数,打印出其中最大的一个数,读入一个数给MAX,分别对9个数比较,打印最大的数MAX,读入一个数给A,将A与MAX比较, 大者保存MAX中,57/48,第二章的练习12题3小题,给定10个数,打印出其中最大的一个数,N=1,当N10,打印最大的数MAX,读A,采用自顶向下,逐步细化的结构化算法,读入一个数给MAX,
24、N=N+1,MAX=A,AMAX,T,F,58/48,第二章的练习12题7小题,给定一个偶数M(M6),将它表示为两个素数之和(如:8=3+5 16=5+11 22=5+17 ),输入M,A=3,直到AM,若A、B均为素数, 打印则A、B 否则A+2A,B=M-A,采用自顶向下,逐步细化的结构化算法,59/48,第二章的练习12题7小题,FLAG=0,FLAG=1,A=A+2,FLAG=0,A是素数,T,T,F,F,B是素数,T,F,打印: M=A+B,A=A+2,给定一个偶数M(M6),将它表示为两个素数之和(如:8=3+5 16=5+11 22=5+17 ),60/48,第二章的练习12题7小题,I=2,F1=0,当I 和F1=0,MOD(A,I),给定一个偶数M(M6),将它表示为两个素数之和(如:8=3+5 16=5+11 22=5+17 ),61/48,给定一个偶数M(M6),将它表示为两个素数之和 如: 8=3+5 16=5+11 22=5+17 ,以8和18为例说明,M,62/48,本章完,63/48,back,64/48,在Word中建立Fortran源程序,直接按Fortran源程序输入; 以TXT纯文本格式保存; 重命名文件后缀(*.For 或 *.F90) 在编译环境中打开该文件,back,