1、 一个算法应该具有以下特征: 1)有穷性:一个算法必须保证它的执行步骤是有限的,即它是能终止的。 2)确定性:算法中的每一个步骤必须有确切的含义,而不应当是模糊的,模棱两可的。 3)可行性:算法的每一步原则上都能精确运行 4)有零个或多个输入:所谓输入是指算法在执行时需要从外界获得数据,其目的是为算法建立某些初始状态。如果建立初始状态所需的数据已经包含在算法中了,那就不再需要输入了。 5)有一个或多个输出:算法的目的是用来求解问题的,问题求解的结果应以一定的形式输出。 一个算法可以用多种不同的方法来描述。一般用自然语言、流程图、伪代码描述。 1)自然语言 自然语言是人们日常所用的语言,如汉语、
2、英语、德语等。用自然语言描述算法符合我们的表达习惯,并且容易理解。缺点:书写较烦、不确定性、对复杂的问题难以表达准确、不能被计算机识别和执行。 用自然语言描述一下解决以下问题的算法:借助一个空杯将一杯橙汁和一杯可乐互换所盛放的杯子。 (1) 橙汁倒入空杯; (2) 可乐倒入刚空出的杯子; (3) 橙汁倒入刚倒出可乐的杯子 2)流程图 流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。也称为程序框图,它是算法的一种图形化表示方法。优点:形象、直观、容易理解。 由键盘输入一个任意值作为 n,求1到 n 的累加值。 用流程图的方
3、法描述一下求一元二次方程 ax2+bx+c=0 (其中 a0 )的实数解的算法。Input 三个实数值(其中 a0 ) To a,b,c d=b2-4*a*c If d 大于等于 0 Then X1= ( -b-d ) /2*a X2= ( -b+d ) /2*a 输出 X1和 X2的值 Else 输出方程无实数解 3)伪代码 伪代码是介于自然语言和计算机程序语言之间的一种算法描述。 优点:简洁、易懂、修改容易 缺点:不直观、错误不容易排查 比如: IF 九点以前 THEN do 私人事务; ELSE 9点到18点 THEN 工作; ELSE 下班; END IF这样不但可以达到文档的效果,同
4、时可以节约时间. 更重要的是,使结构比较清晰,表达方式更加直观. 程序设计语言泛指一切用于书写计算机程序的语言。计算机语言的发展经历了从机器语言、汇编语言到高级语言的历程,如图1-1所示。1) 机器语言(Machine Language)计算机使用的是由“0”和“1”组成的二进制数,二进制编码方式是计算机语言的基础。计算机发明之初,科学家只能用二进制数编制的指令控制计算机运行。每一条计算机指令均由一组“0”、“1”数字,按一定的规则排列组成,若要计算机执行一项简单的任务,需要编写大量的这种指令。这种有规则的二进制数组成的指令集,就是机器语言(也称为指令系统)。不同系列的CPU,具有不同的机器语
5、言,如目前个人计算机中常用AMD公司的系列CPU和Intel公司的系列CPU,具有不同的机器语言。机器语言是计算机唯一能识别并直接执行的语言,与汇编语言或高级语言相比,其执行效率高。但其可读性差,不易记忆;编写程序既难又繁,容易出错;程序调试和修改难度巨大,不容易掌握和使用。此外,因为机器语言直接依赖于中央处理器,所以用某种机器语言编写的程序只能在相应的计算机上执行,无法在其他型号的计算机上执行,也就是说,可移植性差。 2)汇编语言(Assemble Language)为了减轻使用机器语言编程的痛苦,20世纪50年代初,出现了汇编语言。汇编语言用比较容易识别、记忆的助记符替代特定的二进制串。下
6、面是几条Intel80x86的汇编指令:ADD AX , BX ;表示将寄存器AX 和 BX 中的内容相加,结果保存在寄存器AX中。SUB AX , NUM ;表示将寄存器AX中的内容减去NUM,结果保存在寄存器AX中。MOV AX , NUM ;表示把数NUM保存在寄存器AX中。通过这种助记符,人们就能较容易地读懂程序,调试和维护也更方便了。但这些助记符号计算机无法识别,需要一个专门的程序将其翻译成机器语言,这种翻译程序被称为汇编程序。汇编语言的一条汇编指令对应一条机器指令,与机器语言性质上是一样的,只是表示方式做了改进,其可移植性与机器语言一样不好。总之,汇编语言是符号化的机器语言,执行效
7、率仍接近于机器语言,因此,汇编语言至今仍是一种常用的软件开发工具。 3) 高级语言尽管汇编语言比机器语言方便,但汇编语言仍然具有许多不便之处,程序编写的效率远远不能满足需要。1954年,第一个高级语言FORTRAN问世了。高级语言是一种用能表达各种意义的“词”和“数学公式”按一定的“语法规则”编写程序的语言,也称为高级程序设计语言或算法语言。半个多世纪以来,有几百种高级语言问世,影响较大、使用较普遍的有FORTRAN、A LGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C+、Visual C+、Visual Basic 、Delphi
8、、Java等。高级语言的发展也经历了从早期语言到结构化程序设计语言、面向对象程序设计语言的过程。高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。高级语言的使用,大大提高了程序编写的效率和程序的可读性。与汇编语言一样,计算机无法直接识别和执行高级语言,必须翻译成等价的机器语言程序(称为目标程序)才能执行,如图1-2所示。高级语言源程序翻译成机器语言程序的方法有“解释”和“编译”两种。解释方法采用边解释边执行的方法,如早期的BASIC 语言即采用解释方法,在执行BASIC 源程序时,解释一条BASIC语句,执行一条语句。编译方法采用相应语言的编译程序,先把源程序编译成指定机
9、型的机器语言目标程序,然后再把目标程序和各种标准库函数连接装配成完整的目标程序,在相应的机型上执行。如C、C+、Visual C+及Visual Basic等均采用编译的方法。编译方法比解释方法更具有效率。同步集训一、选择题1、人们利用计算机解决问题的基本过程一般有如下五个步骤(),请按各步骤的先后顺序在下列选项(AD)中选择正确的答案( )调试运行程序 分析问题 设计算法 问题解决 编写程序A、 B、C、 D、2、在下图中利用计算机解决问题的基本步骤流程图中,对于标注为(1)的流程线,以下说明正确的是( )A该流程线可有可无 B当程序运行不出结果时,才需要该部分流程线C该部分流程线保证了问题
10、解决的正确性D该部分流程线有错3、下列三种算法的描述,缺乏直观性、简洁性,最容易产生歧义的是( )A、自然语言描述法 B、流程图C、伪代码4、流程图中表示判断的是( A、矩形框B、菱形框C、圆形框D、椭圆形框5、“分支判断”作为解决问题的算法的一个基本步骤,正是体现了计算机的( )能力。A、算术运算能力 B、逻辑运算能力C、分布式运算能力 D、记忆存储能力6、下面关于算法的描述,正确的是( )A、算法不可以用自然语言描述 B、算法只能用框图来描述C、一个算法必须保证它的执行步骤是有限的D、算法的框图表示法有0个或多个输入,但只能有一个输出7、下面关于算法的描述,正确的是( )A、一个问题只有一
11、个算法B、一个问题可能有多种算法C、能解决问题的算法都是好算法,没优劣之分D、算法不是程序设计所必需的8、下列关于算法的叙述,正确的是( )A、解决一个问题的算法只有一种 B、有穷性是算法的基本特征之一C、可行性不属于算法基本特征 D、算法对程序设计没有任何作用9、下列关于算法的叙述,正确的是( )B、算法必定有一个或一个以上的输出C、算法中可以存在不确切的步骤 D、描述算法的步骤可以是无穷的10、从以下计算S的算法可以看出,S的代数式表示是( ) 变量S的初值是0; 变量I从1起循环到N;循环表达式为S=S+(-1)*i; 输出变量S的值A12+34+(1)N*(N1) B12+34+(1)
12、N1*nC1+2+3+4+(n1)+n D1234(n1)n11、下列选项都是属于高级语言的是( )A、汇编语言 机器语言B、Basic语言 Pascal语言C、汇编语言 Basic语言 D、机器语言 Pascal语言12、下列选项都是属于低级语言的是( )A、汇编语言 机器语言 13、_是计算机能直接识别,理解执行的语言。A、汇编语言 B、Pascal语言 C、Basic语言 D、机器语言14、下列关于程序设计言中机器语言的说法,正确的是( )A、Visual Basic属于机器语言的一种B、机器语言就是Visual BasicC、机器语言比高级语言更早出现 D、高级语言比机器语言更早出现15、下列选项中,最先出现的程序设计语言是( )A、汇编语言 B、高级语言 C、Visual Basic D、机器语言16、不能被计算机直接识别,理解执行的语言需要转换,这种转换是( )A、人工转换或机器转换 B、计算机语言提供的解释器或编译器负责转换C、操作系统负责转换 D、人工智能技术中的自然语言理解二、简答题1、简述什么是计算机程序、程序设计、程序设计语言、算法2、简述算法的特征。3、简述程序设计语言的发展历程4、高级语言编制的源程序计算机无法直接识别,必须经过转换才能被计算机执行。请问有哪些转换方式,这些方式有什么区别?三、阅读流程
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1