软件技术基础第三版课后习题答案_第1页
软件技术基础第三版课后习题答案_第2页
软件技术基础第三版课后习题答案_第3页
软件技术基础第三版课后习题答案_第4页
软件技术基础第三版课后习题答案_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

真诚为您提供优质参考资料,若有不当之处,请指正。第二章程序设计语言计算机工作是执行相应程序,程序规定了执行的动作和动作的执行顺序。程序的表达手段是程序设计语言。程序设计语言是人-机交换信息的媒体;是表达软件(程序)软件的开发和使用,协作开发、使用修改都要读程序,程序设计语言必须规范化和标准化。程序设计语言是与计算机通信创造的语言,严格、小巧,没有二义性(语句执行只有一个解释)。最初的语言是机器语言。机器语言在内存中开辟两个区:数据区存放数据;指令区存放指令。编译型语言由于可进行优化(有的编译器可作多次优化),目标码效率很高,对高级语言源程序采取解释执行的方式.解释执行需要有一个解释器 (Interpreter),它将源代码逐句读入。先作词法分析,建立内部2.3.1变量、表达式、赋值程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语句就是一条赋值命令。程序约定自上向下自左向右地执行,即顺序地执行语句(或表达式)。最基本的程序控制语句其中loop是跳转到的语句的标号(数字或标识符),加上条件判断子句if(E)就是条件转移语句:有了这两个语句再加上简单语句(赋值、调用、输入/出),就可以实现程序的任何执行控制。最基本的程序控制有以下三种:顺序执行简单语句序列S=S1;S2;…;Sn选择执行结构化程序的控制结构早期的编程语言是语句级的.用简单准语句集合加goto构成复杂的程序控制。然而显式地使用goto语句是极其危险的。这是因为:·goto语句相互交织使设计出的程序控制结构成为不可分解的一个整体。尽管算法设计精巧,但牵一发而动全身。程序一大,修改很困难。显式使用goto语句使得任何写错转移语句标号的小错误都会导致灭项之灾。使程序控制逻辑是结构化的,显式使用goto语句,程序依然难于阅出了错易于找出错误并修改易阅读导致易扩充、修改,大程序易于分析。程序控制结构清晰,是它用关键字控制程序块(语句组)。任何控制转移不能进入这些控制块,除非入口。块中转出也不能直接转到程序其他处,只能转到出口。在出/入口增加检查语句就使得程序错误真正局部化。程序块级(语句组)控制采用语句括号使程序逻辑与表示法结构完全一致。可直接编程。程序语言结构化以后,编程对流程图的依赖就很少了。Nassi-Schneldermann提出了结构化流程图(主要取消流线及箭头),因没有直接用类似结构化编程语言的伪代码方便而没有流行起来。结构化编程语言的其他控制结构结构化程序只需三种基本结构重复和嵌套。但为了方便编程,第三代语言派生出许多结构。以条件分支无假块条件分支和嵌套if语句if(E)thenSTendif无假块条件语句是正规条件语句的简化,很常用。嵌套语句在否定部分用关键字elseif,有的语case语句循环结构除了doSwhileE之外,还有do-until和for结构。不再循环。正好和先判断再执行的do-while语句是相反的。将它改成do-while结构十分容易。条件取反,先执行一次S块。以控制变量增减值或枚举集合值计数的循环。for-do是do-while的另一种变体结构,其书写格式do-while-do语句2.3.3数据类型计算机中计算对象(不管是常量、变量)都是有类型的,不能把一个相加。指出数据类型的一个目的就是要避免这类错误的发生。各语言转换函数(inttoreal或realtiont)不尽相数组类型变量代表单个数据值叫纯量变量。如果代表多个(数组)或多种(记录)值就叫它结构型数据的变量。先bigArray(1)=ages)使用时用二维索引BigArray(0,7)=Names记录类型引入记录数据类型:相同或不同类型数据组成的结构叫记录.记录型记录了对象的属性信息,记录的各个组成部分,称为记录域,各个域的数据类型可以不相同。下面给出用VB声明的一个例子:EndType(或一行值)称作元组(tuples),由属性变量的值组成。每个属性变量指明了一个(取值)域.也叫字段。有了这个类型就可以声明记录型变量。该变量在运算中只能按域取指针类型指针类型是一种很重要的数据类型,但同时也是一种简单却不大好理解的数据类型。在讲述指针之前,首先来看一个例子(采用C语言来描述):I=i+1;//i赋值为1在上面的例子中,首先定义一个整数型变量,然后设该变量的值为1。在第三行使用了一个赋值能成立!所以,计算机语言中的变量并不是数学意义上的变量,它代表的只是计算机内存中的一个存储单元。这个单元中存放的内容是变化的,所以把它叫做变量。每个变量都有一个名字(标识符),对应为存储单元的XXX,存储单元的内容为变量的值。引用变量的值时直接把变量名放到用值的地方(赋值语句的两边)。程序运行时按XXX存取内容。如果某个变量的值是内存中的XXX.这指针.p是指向整型的指针,*p是p所指向的无名变量的代名词.声明完成后变量p有存储单元但无内容.int1.&r=i;程序分离开来,简称过程,可以多次调用。分离出来的部分叫子例程(routine),执行完后依然返回原处的叫子例程过程.简称子程序。函数的自变量(参数)为x,并指出其函数(返回)值是Double类型.每当程序中出现求正弦时,直接调用该过程,称函数引用,即引用该函数的(返回)值。一个主程序中写三段相似代码的执行情况是一样的,只是省写了两次,多了三次实参和形参匹配(置换)的执行过程。函数过程是参数化(更抽象)的程序。使用过程还可以降低程序复杂性、使程序结构变得消晰明了。假设有一个主程序引用了30个函数,每个函数引用了100次,如果在每个引用函数的地方都要写出函数的代码的话,程序将变得十分繁杂。如果使用函数,就显得简明清晰。还可以提高编程效率。许多可以标准化的函数,可以事先编写调试好,放到函数库中,使用时直接调用即可。过程的定义从过程关键字开始到过程结束之间的一段封闭的程序就是过程定义,它由型构(signature)和过程体(body)组成,以下是两种过程定义的结构:FunctionFname(形式参数表)AS返回类型‘本行为函数型构’真诚为您提供优质参考资料,若有不当之处,请指正。[类型和数据声明]EndFuncsub名字《形式参数表》[类型和数据声明]EndSub‘本行是子程序型构’‘以下是子程序体语句集以上可以看到除了关键字和形参表外过程和一般的程序没什么两样。函数过程型构只比子程序型构多一个返回类型。有的语言规定函数名必须在函数体中至少在赋值号左边出现一次,以便带回返回值,如VB。有的语言可指定任何返回表达式,如C。主程序中的数据通过型构的形参表进入过程。在过程中也可以声明数据,不过这类数据与主程序没什么关系,主程序中无法访问它们,它们是局部变量。局部变量的有效范围,即作用域(scope)仅限于本过程。从主程序一侧看,这些局部变量都被过程隐藏起来了,只有型构中的参数表是通向外部的窗口(在此交换数据),所以型构也叫接口(Interface).为与一般变量区别把形参表中的变量称为变元(Argument)。请看下面的两个例子过程调用函数过程因返回位可以出现在主程序的表达式中,以函数名引用函数值。并列出与形参表变元的个数、类型、次序一样的实在参数表.如子程序过程的使用是过程调用,它相当于浓缩的一段程序。PrintNStar5//调用过程,打印五个星号过程调用是把过程体的代码调回到主程序的环境下执行。形参和实参变元匹配之后过程运行,和主程序中其他代码运行没什么两样.主程序中声明的变量在过程中自动可用。全程变量和局部变量,局部变量在过程执行完之后所有的数据和过程体都消失了,因此出了过程体再引用过程中的变量当然出错。过程调用这种执行机制,为程序运行、节省内存空间带来了极大的好处。程序中的数据对象,自它声明时起到本程序块结束(见到End)为其有效的作用范围(作用域)。显然,内块嵌入在外块内,外块的变量,内块中是能见到的,这就可能导致这样一个问题:外块的变量与内块同名怎么办?程序设计语言中以“就近声明优先”准则来处理。内块程序中所有出现X的地方均按布尔类型解释,Double型的X虽在其作用域内但被覆盖(overrided)了,通过点表示法才能出现在内块中:(P.X>5.0)andX指明头一个X是P中声明的X,是Double类型的。后一个X是本块Boolean类型的。2.3.5过程的数据传递过程是一段封闭的程序,型构是它与外界通信的接口,它的变量是抽象的,通过形、实参数匹配具体执行。执行出口是本过程末端(除非中间有显式的retun语句).数据出入有两个途径,一为全程量,一为参数表。上小节己说过全程量,此处讨论参数表。无参过程2.3.6变量的生命期和Static变量程序中变量生命期随其声明所在程序块而异。程序一执行完它的所有数据变量均失去意义,它所在的存储区则可另行分配其他程序装入执行。因此,主程序中变量的生命期比过程中变量生命期要长,内嵌的子过程其变量生命期更短,最长的是文件变量,它放入磁盘,程序没有自动变量(局部变量)除非人为销毁常常有一种需要,一个局部变量在它所在的局部程序块消失后依然保留局变量被该局部块以外的程序引用。例如伪随机数发生器,为使伪随机数每次调用新值,则上次数是生成下次数的种子,如不希望其他操作影响这个发生器,此时用Static(静态)变量2.4面向对象程序设计语言的基本特征一个大程序分成五个大模块,只留过程接口等待外面调用。当然,模块间也可以彼此调用,例如图2.16中,Sub22调用Sub89、Sub43调用Sub62等。尽管数据可沿着调用路线来回串,但加工最后结果都落实在各模块声明的数据存储单元内,总结果若在第二、四模块内,下一道打印命令(也是调用),它就把自己那组数打印出来。示(变量)就是堆栈的数据,压入(Push)、弹出(Pop)就是它的基本操作,询问是否空(Is这样封装之后使用者就不必关心对象内部情况,只按接口规定的形式向它发消息(如同调用)就可以了。如对象的设计者发现某个操作的算法(过程体)不好,重新改写一个,使用者也过去只有数据类型及数据结构、过程(算法描述)和嵌套过程,把一个活生生的世界硬拆成过程式程序表达,使用者要知道许多内部细节,设计者调试起来也极不方便。程序对象提供了直接描述客观世界对象的有力手段.数据叫做对象的属性(Attribute);操作则改称方法(Method),即改变属性的方法。对象间相互只有通信,调用方法叫发消息(Message)。消息——方法与过程调用——过程体的定义几乎因对象是自主的程序实体,发消息者可等可不等,接受消息的对象可以立即响应可以稍晚些时间响应,这降低了对象间的引用耦合,为并发程序、事件驱动程序提供了程序实现的技术沿用程序中表达数据的抽象办法:定义一个类型、声明该类型的变量,定义一类对象然后声明它的不同实例(Instance):DimvAsDouble//v是双精型的数据变量DimOKAsCommandButton//OK是按钮类的对象变量属性值就是一实例)。正是因为变量一类型和实例一类的相似性,许多语言(如C++)都把类看作是类型,类的定义如同以简单的类型构造复杂的数据类型一样,只不过类定义时还要定义类的方法。类方法可以只写型构.方法体可以在类之外定义,以下是C++的字符堆栈类:C++的main()函数相当于实例对象,Java已将它改成主程序对象的方法(外面套上对象名)。当Char_stackstk1(100);消息和方法.有外部可见性控制public(公有)、Private(私有)息(例如鼠标点击),图示给出两个,谁先谁后其类定义由系统做,用户只能在它提供的属性和方法的前提下.生成并使用实例对象,用户全无类定义概念。VB.Net回到面向对象语言的大家庭,才提供类定义机制,所以本节只能类定义以类名封装类成员,其中分数据成员和方法成员。只有指明它们是公有的(Public),其去封装和数据隐藏的意义.全部私有只是一个孤立的对象,也失去对象通信模拟客观世界对象的意义.所以,一般是数据成员全部私有,方法成员多半公有、少量私有。私有方法只接受公有方法的消息,间接为类外对象服务.2.4.2节char_stack类的例子就是很好的类定义,构造子和析构子接口类有什么用呢?用处很大!因为同一接口类可以由不同的类实现,而应用程Atrl22,{AO,A1.A12,A122}真诚为您提供优质参考资料,若有不当之处,请指如果要设计的类与类库中某个类的定义相近,例如C122,就从它派生:ClassCI22I:[public]C22{Atrl221//只定义自己增加的网性集//隐含继承了(AO.AI.A12,A122)属性集public:Mtd1221//只定义自己的方法集//隐含继承T长Mo.Ml.M12,Mi22)方法集}显然.在定义自己的属性和方法时名字和原有类库中类的属性和方法名字重复了,就产生了覆盖(override),例如C1中有print(),C1221中也有print(),那么,本类的实例就不继承被覆盖的属性和方法了,只按自己定义的属性和方法执行.如果浏览类库查出了某个类正好是自己要设计的类,例如Cn22,那么只要按它的构造函数在使用它的实例的地方声明实例(填上参数)就可以了。随着使用日久.类库中派生出各种各样的类,如果使用良好就将它定制(Customized,即更加完善,为较规范的类)入类库,在庞大的类库支持下,绝大部分类不用设计只按上述第三种方法设计实例对象,程序设计就完成了。而且使用越久类库越有价值(因为所有可能出现的bug都己经改正过了).以下给出了一个类继承的实例:假设某公司的雇员分为两类:计时雇员和月薪雇员,而他们的工资计算方式是不同的。比如月薪员工有医疗保险而计时员工却没有。月薪员工又分为两类:专业人员和项目经理。类似地,他们的工资计算方式也是不同的。比如项目经理可以有项目提成而专业人员则没有。显然,首先要定义一个雇员类,它记录了所有雇员都拥有的属性和方法。然后再定义一个计时雇员类,它继承了雇员类的属性和方法,并有自己专有的属性和方法,同样,月薪员工继承了雇员类的属性和方法并有自己的专有特性。当然,根据需要,可以再定义两个类:专业人员类和项目经理类,它们都是月薪员工类的子类。经过分析,可得到图2.21所示的类继承图.2.4.5多态性注意到上述类中有许多方法是同名的,但是,由于它们所属类不同,编译器不会弄混。例如Print-List方这时p一>Print_List()就是多态的,有时是父类Employee实例的数据,有时是子类Manager实例数据,因为面向对象允许子类实例就是父类实例。*p所代表的既可以是雇员也可以是经理,这种多态性的好处是不因雇员经理数量多少而更改程序.请注意在给定的程序C++中若没有虚函数Virtual关键字,这种自动动态切换是无法实现的。因为C++是编译型,编译时若无Virtual告诉它,它只认为*p是Employee类中的一个无名实例。这种动态联接它要执行的是Print_List的程序体,学术上称作动态束定(DynamicBinding)。由于继承,属性和方法可能重名,这就产生了多态(同一名字执行内容不同)。静态(在编译或连接)时就可以分辨的叫重载(overloading),例如多个构造函数是最常见的。运行中根据执行情况才能决定束定(也叫绑定)到哪个方法体。多继承2.4.4节中雇员类体系结构的派生类只有一个父类,体系结构是树模型。但客观世界多数事物是多继承的。例如一个北航的大学生,他是北京市民,又是航空专业,又是大学生。只是讨论不同问题时强调他的不同侧面,继承不同的属性,如市民应具有的属性:性别、年龄、婚姻、职业、户口所在地、身份证号码……大学生应具有的属性:学号、专业、年级、入学成绩、真诚为您提供优质参考资料,若有不当之处,请指正。各学期选课、成绩、奖学金……查看他是否选民用前者,选拔优秀生用后者.办理出国留学就要用到两者。多继承的体系结构是一个网状模型.C++就支持多继承,在定义类时写:本类属性集public单看一个类这样很清楚,问题是如果按树模型严格的辈分关系,很有可能把该类父类的重孙子类当了该类的第二个父类继承关系形成回路,类库的查找、派生变得十分难以管理。Java和C#坚决不用多继承,类库是单继承的树模型,而实际问题要多继承怎么办?用接口class类名:[public]接口类名1,[public]接口类名2…{由于接口类不入类库,它随应用程序,应用程序运行完了它也就消失。从前面可知道接口最后还是要接到类库上(它自己没有体无法运行),所以,也一样能提供C++的多继承的功能。把继承之间的复杂关系交由程序员负责,不影响其他人使用类库。在这里再次看到了接口类以前不对外开放的(私有)成员,对子孙就要开放。类定义中protected指出该成员对家族外是私有,对内公有。真正私有的还只限于本类方法访问。图2.23给出派生类中成员的可见性.现在又有了问题,父类以前定义的成员可见性(公有、私有),子类继承之后是否仍然维持原状?嵌套类可见性当一个类的成员不是属性和方法而是类class时,叫嵌套类。这些子类和其父类不是派生——继承关系而是直接包容关系。如同一个工厂有车间类、科室类、门市类、后勤类,它们聚集在一起共同构成工厂类的一部分。子类彼此之间的关系并不密切,车间的业务和门市的业务相差很大,所以只能聚集。至于锻铸(热)加工、机械加工类车间业务虽有差异,但是“车间要嵌套类成员的访问性控制和普通成员的访问性控制的关键字解释是一样的。没有修饰符的嵌套类为包容类私有类,它的实例外部不可访问,加public的修饰符后的内嵌套和一般普通类的使用没有什么差别,只是声明实例时:Outer.SomeclassP(100);类体系的组织统就可以按名自动索引使用。最新面向对象语言Java、C#均设NameSpace机制,Java叫Package(包),用Import语句引入:2.5网络计算机时代的编程语言面向对象语言和技术是分布式客户/服务器计算时代的产物。对象计算模型天生就和分布式网络计算模型对应。客户站点即客户对象,服务器站点就是服务器对象,它们相互发消息,共同协作完成应用。它们可以建立在局域网、广域网上,下层有网络软件支持,上层用面向对象语言编程。调试后增加一道部署工序,把每个对象安装到各个站点上。分布式客户/服务器计算时代(1985一1995),大为改变了单主机计算时代(Mai。加mocomputing,1985年之前)应用开发观念.服务器提供的程序往往是事先编好了的.客户端只要编一些“使用”服务器提供的“服务”(程序运行后的结果)的简单对象(程序),就完成了应用开发。只有不存在这种服务时才去开发服务器端的程序。如果在开发时网上有相近的服务,把它下载下来稍作修改即可交活。再者,开发客户端和服务器端程序也不是像单主机计算时代那样,基本上是从第一句写到最后一句,而是在系统提供的控件、构件(系统类)的基础上,选定参数生成实例对象.简单应用几乎不用编程.但必须遵守系统支持提供的使用方式和小范围内可变的格式(输入、输出).随着网络范围进一步扩大,Intenet把全世界计算资源联接起来,计算机应用的概念又面临一次大飞跃。世界上有无数资源,你要的应用网上几乎全有,如何找到它延关键问题。找到之后连下载也不要,只需订阅(租赁),到时候发消.息,它回复你计算结果。这如同打电话付费一样。“软件就是服务”,可以想象,应用程序的开发和使用有多大的变化。软件开发多限于应用服务提供商(ASP)。专业分工很细,他们可以做得十分完关。在自己选定的业务范田内,把功能件做成标准的构件.并由他们自己升级维护:使用者只要有一个连接各种服务的小程序,开发者的工作重心是问题分析、建立计算模型、建立计算框架、连接上选定的构件(填满框架)。这个框架的软件实体一股不在开发者的站点上,他只有一组网址。网络计算目前在大型应用中仅限于某些行业的电子商务.还没有成为应用主流技术,本节只作简略介绍。2.5.1HTML和XML2.5.2脚本语言Java语言的特点当今的编程语言很少建立在全新概念和全新语法上.历史上Smalltalk创造性地实现了面向对象编程,但因其语法独特,使用方式新颖,本身始终难以推广。如今它的思想、关键概念、使用方式纷纷化为已有语言,C++是成功的范例。比Smalltalk在面向对象方面更完善本是C++哪里不合适就改哪里.平台无关最大的变化是建立Java虚拟机(JVM).所谓虚拟机就是不管你操作系统的平台是什么,建立一个解释Java代码的执行系统(RuntimeSystem),正确地执行。本机操作系统是实在地机器执行系统.是实现虚拟机的手段。每台机器若都能实现虚拟机的功能,则Java的平台无关真诚为您提供优质参考资料,若有不当之处,请指正。性就得到第一层的保证。第二层,执行的代码必须统一。Java源代码是统一的,但编程可执行代码就不一定了。如不同类型字长不统一,有的整型数32位,有的64、128位。再如复合操作码本可简化操作.但不同系统复合习惯不同,带来微小差别……所以,Java采用泛代码(Unicode)的中间码技术。泛代码也叫字节码(bytecode),操作码和最小字长都是16位的双字节。这样,Java源代码变为所有虚拟机都可执行的中间码,保证大家对Java源程序理解一样,执行结构一样。其示意图如2.26所示。编译一个解释执行Java代码是解释执行的,这是指它的蹭中间代码。从Java源代码要经过编译器Javac翻译,这不妨碍源程序在类库支持下派生类,,因为类支持也是中间码。Java虚拟机首先要装入类,检查代码(安全)后解释执行。为了提高解释效率,发展了即时编译技术(Just-in-time)。即对于多次重复或耗时较长的段落编译后,作为模块暂存,下次遇到则直接执行目标码。即时编译技术目前还在向智能化方向发展。更为纯粹的面向对象语言Java无全程变量,无主函数main(),从而函数全改方法。类中的方法均缺省为‘虚’函数,更加支持动态加载。取消C++中的模板而用动态的实例类型化Object类。为了封装更干净,取消了C++的头文件和C的预处理。一个或多个功能相关的类组成为包(package,即名字空间),从而为构件规范化提供了基础。支持网络安全比C++的强类型更强,要求显示方法声明,编译器可以发现错误消息。取消了指针,杜绝了内存的非法访问。增设自动无用单元回收集,减少内存分配带来的问题。特别是代码传输之后由程序员回收无用单元是不现实的。增加泛代码验证,以防下载非法代码。此外,下载代码和本机支持代码放在不同的名字空间。用异常处理机制增强程序健壮性。可以指定线程安全ThreadSafe变量。支持多线程多线程即共享资源的并行执行的‘子进程’。可以提高图形用户界面的交互性能。C+中多线程是由程序员控制锁来完成的。Java的Java.lang包提供Thread类大为简化了多线程就用程序的开发。线程概念参阅第八章。接口作为类型方法型构(接口)和方法体可以显式分开在C++中己经实现,方便了编程和修改。只要接口(及其所带参数)不变,方法体可随意修改而不影响该方法的程序。然而,把接口作为类型有其更深远的意义。接口类是一组方法型构而无方法体,除有常量外没有属性。接口类和普通类一样可以嵌套和继承,且可以多继承,可以声明接口实例。接口类由普通类实现(写出各方法的体)。请看以下示例:支持网络上分布式应用Java既可以用于客户端也可以用于服务器端,只要该端有虚拟机。可以以Applet嵌入主页到处传送,也可以直接分发和部署。因为Java提供了包,通过包中的类,可以完成各个层次上的连接.如URL(同一资源定位器)支持Java应用程序通过Internet以打开和访问远程对象.并且使打开远程文件和打开本地文件一样容易。包中的Socket类可以提供可靠的流式网络连接。从面向对象到基于构件编程接口类一实现类的显示分开,实际是反应了设计和实现的分离。可以按传统的方法先设计后实现,也可以先实现(把类做成较为规范的构件component,如同软件‘集成电路片’)后设计应真诚为您提供优质参考资料,若有不当之处,请指正。用程序。从而引起一场程序设计或软件开发的革命——基于构件的编程。试想,各行各业软件的项尖高手大量生产各领域常用的软件IC,应用开发者只需写接口类,形成体系结构(架构),再外购(或租赁)软件IC作为软插件插在本机操作系统上就完成了设计和实现。以后选定参数发消息就可以使用了。软件开发的重点向分析设计转移。为比较面向对象分布式应用和基于构件的分布式应用,请看示意图2.27.图中构件以软插件方式插入所在站点的操作系统平台,垂直的方框即与环境的接口。图中封闭曲线为实现接口的体。接口类均无体。对于一个站点上的接口,其实现接口的体可在另一站点上的构件之内,如图中构件4,它支持a2、a8、a9、b5、c8、c9方法接口程序设计语言一般指高级语言,是为了人们方便编制程序而设计的.它最终还得翻译为机器代码由机器执行.它是在低级语言(机器、汇编)的基础上为了方便使用而对低级语言进行的抽象.随着编译技术的发展和程序设计语言描述能力要求的进一步提高,高级语言也在不断发展.把面向机器编程的第一代语言(IGL),即机器码、汇编语言排除在外。第二代语言(2GL)即早期的高级程序设计语言就有了数据类型,执行控创、过程和函数的概念.当然,最本质的是赋值语句和判断语句.如果一个程序不能改变一个变量的值或者不知道如何去改变变量的值,那将毫无意义!当然.赋值的强制性给程序正确性带来许多问题.60一70年代发展了不用赋值的函数式语言,但由于使用不便而没有得到广泛应用.显然,如果没有赋值和判断,不讲究给什么样的数据赋值,如何组织利断结构,只按算法过程凑程序,这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论