程序设计易错知识点汇总

程序设计易错知识点汇总

  • 软件开发小组的沟通路径受到小组组织形式和规模的影响。若任意小组成员之间均可能有沟通路径,则可用完全连通图来对开发小组的沟通路径建模,最多的沟通路径为完全连通图的边数,即n个成员的开发小组的沟通路径是n(n-1)/2,因此8个成员的开发小组的沟通路径有28条。

  • 函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组元素),这种信息传递是单方向的,形参不能再将值传回给实参。在传地址方式下,需要将实参的地址传递给形参,因此,实参必须是变量(数组名或数组元素),不能是表达式(或常量)。 这种方式下,被调用函数中对表达式参数的修改实际上就是对实际参数的修改,因此客观上可以实现数据的双向传递。

  • 记号流,词法分析的输出是记号流,也就是语法分析的输入。字符流,在Java中,根据处理的数据单位不同,分为字节流和字符流。字符流是由字符组成的,例如 FileReader、FileWriter、BufferedReader、BufferedWriter、InputStreamReader、OutputStreamWriter 等。与本题无关。源程序,词法分析的任务是把源程序的字符串转换成单词符号序列。分析树,如果没有语法错误,语法分析后就能正确的构造出其语法树。括号不匹配是典型的语法错误,会在语法分析阶段检测出来。

  • 维基百科上将脚本语言定义为“为了缩短传统的编写一编译一链接一运行过程而创建的计算机编程语言。通常具有简单、易学、易用的特色,目的是希望开发者以简单的方式快速完成某些复杂程序的编写工作。” 脚本语言一般运行在解释器或虚拟机中,便于移植,开发效率较高。

  • 传值调用和引用调用是常用的两种参数传递方式。在传值调用方式下,是将实参的值传递给形参,该传递是单方向的,调用结束后不会再将形参的值传给实参。在引用调用方式下,实质上是将实参的地址传递给形参,借助指针在间接访问数据方式下(或者将形参看作是实参的别名),在被调用函数中对形参的修改实质上是对实参的修改。

  • LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C#等结构化程序设计语言。

  • 词法分析阶段依据语言的词法规则,对源程序进行逐个字符地扫描,从中识别出一个个“单词”符号,主要是针对词汇的检查。 语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。语法规则就是各类语法单位的构成规则,主要是针对结构的检查。 语义分析阶段分析各语法结构的含义,检查源程序是否包含语义错误,主要针对句子含义的检查。 本题描述的是语法分析。

  • 动态语言是指程序在运行时可以改变其结构,例如新的函数可以被引进、己有的函数可以被删除等在结构上的变化等。动态语言的类型检查是在运行时进行的,其优点是方便阅读,不需要写非常多的与类型相关的代码;缺点是不方便调试,命名不规范时会读不懂、不利于理解等。 脚本语言代表一套与系统程序设计语言不同的协定。它们牺牲执行速度和与系统程序设计语言相关的类型长度而提供更高的编程创作能力和软件重用。脚本语言更适合在联系复杂的应用程序中进行胶着(粘合)。为了简化连接组件的工作,脚本语言被设计为无类型的,脚本语言一般是面向字符的,因为字符为许多不同的事物提供了一致的描述。 事实上,脚本语言都是动态语言,而动态语言都是解释型语言,不管它们是否是面向对象的语言。

  • “中间代码”是一种简单且含义明确的记号系统,与具体的机器无关,可以有若干种形式。可以将不同的高级程序语言翻译成同一种中间代码。由于与具体机器无关,使用中间代码有利于进行与机器无关的优化处理,以及提高编译程序的可移植性。

  • 一种程序设计语言规定其程序中的数据必须具有类型,好处如下:(1)有利于在翻译程序的过程中为数据合理分配存储单元,因为程序设计语言为不同的数据类型规定了其所占的存储空间,如果数据类型确定,其所占的存储空间也是确定的。(2)有利于对参与表达式计算的数据对象进行检查,因为知道数据的数据类型,我们就可以根据类型来判断该数据是否可以参与某表达式计算,如自加、自减的操作数不允许是浮点数,这只要根据数据的类型就能判断某操作数,是否能进行自加、自减运算。(3)有利于规定数据对象的取值范围及能够进行的运算,根据数据类型,我们可以数据的存储空间,也同时能知道数据的表示范围,如C语言中的整型数据,它占两个字节(16位),能表示的数据范围就是-216至216-1。

  • 中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,使用中间代码可提高编译程序的可移植性,常见的有逆波兰记号、四元式、三元式和树。

  • 后缀式(逆波兰式)是波兰逻辑学家卢卡西维奇发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。 借助栈可以方便地对后缀式进行求值。方法为:先创建一个初始为空的栈,用来存放运算数。对后缀表达式求值时,从左至右扫描表达式,若遇到运算数,就将其入栈,若遇到运算符,就从栈顶弹出需要的运算数并进行运算,然后将结果压入栈顶,如此重复,直到表达式结束。若表达式无错误,则最后的运算结果就存放在找顶并且是栈中唯一的元素。

  • “中间代码”是一种简单且含义明确的记号系统,可以有若干种形式,它们的共同特征是与具体的机器无关。最常用的一种中间代码是与汇编语言的指令非常相似的三地址码,其实现方式常采用四元式,另外还有后缀式、树等形式的中间代码。

  • 程序语言中的词(符号)的构成规则可由正规式描述,词法分析的基本任务就是识别出源程序中的每个词。 语法分析是分析语句及程序的结构是否符合语言定义的规范,对于语法正确的语句,语义分析是判断语句的含义是否正确,因此判断语句的形式是否正确是语法分析阶段的工作。

  • 运行时结合是动态绑定,编译时结合是静态绑定。

  • 词法分析是编译过程的第一阶段,其任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个的“单词”符号。语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”、“语句”和“程序”等。语义分析阶段主要检查源程序是否包含语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能被翻译成正确的目标代码。目标代码生成是编译器工作的最后一个阶段。这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。 源程序不可避免地会有一些错误,这些错误大致可分为语法错误和语义错误。语法错误是指语言结构上的使用错误,是指编译时所发现的程序错误,如单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

  • 编译和解释是语言处理的两种基本方式。编译过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,以及符号表管理和出错处理模块。 解释过程在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。 这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。

  • 非确定有限状态自动机与确定有限状态自动机的最大区别是它们的转移函数不同。确定有限状态自动机对每一个可能的输入只有一个状态的转移。非确定有限状态自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。当在状态A输入0时,它可以转移到它自己,也可以转移到状态B,所以是非确定的。而不存在这样的情况,因此是确定的有限自动机。

  • 将高级语言程序翻译为机器语言程序的过程中,需要依次进行词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,其中,中间代码生成和代码优化可以省略。程序中的错误分为语法错误和语义错误,语法分析阶段不能发现语义错误。 语义分析阶段主要处理语法正确的语言结构的含义信息,可以与目标机器的体系结构无关。目标代码生成阶段的工作与目标机器的体系结构是密切相关的。

  • 计算机只能理解和执行由0、1序列构成的机器语言,因此高级程序语言需要翻译,担负这一任务的程序称为“语言处理程序”。由于应用的不同,语言之间的翻译也是多种多样的。语言处理程序主要分为汇编程序、编译程序和解释程序三种基本类型。 解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,然后在计算机上运行目标程序。汇编程序的功能是将汇编语言所编写的源程序翻译成机器指令程序。 链接程序将各目标程序连接形成为可执行程序。

  • L = {anbn|n>=l}中的字符串特点是a的个数与b的个数相同,且所有的a都在b之前,该集合不是正规集,不能用正规式表示。 正规集可用正规式描述,用有限自动机识别。

  • 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。编译程序的工作过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成、符号表管理和出错处理等部分,如下图所示。 目标代码生成是编译器工作的最后一个阶段。这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。因此在目标代码生成阶段分配寄存器。

  • 用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。汇编语言源程序需要用一个汇编程序将其翻译成目标程序后才能执行。高级语言源程序则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行。 解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行;而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程; 而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中, 运行程序的控制权在解释程序,。简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

  • 程序已经开始运行,说明编译时无错误,因此不是语法错误和词法错误,编译时发现的语义错误称为静态的语义错误。运行时陷入死循环属于动态语义错误。

  • 语法分析方法分为两类:自上而下(自顶向下)分析法和自下而上(自底向上)分析法,递归下降分析法和预测分析法属于自上而下分析法,移进-归约分析法属于自下而上(自底向上)分析法。

  • 编译过程一般分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,以及出错处理和符号表管理。其中,语法分析是在词法分析的基础上分析短语(表达式)、句子(语句)的结构是否正确。

  • 链表中的结点空间需要程序员根据需要申请和释放,因此,数据空间应采用堆存储分配策略。

  • HTML (Hypertext Marked Language,超文本标记语言),用于互联网的信息表示。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,Windows等)。HTML文档是纯文本文档,可以使用记事本、写字板等编辑工具来编写HTML文件,其文件(文档)的扩展名是.html或.htm,它们需要通过WWW浏览器进行解释并显示出效果。 XML (Extensible Markup Language,可扩展的标记语言)1.0 标准于1998年2月10日发布,被认为是继HTML和Java编程语言之后的又一个里程碑式的Internet技术。XML 丰富了HTML的描述功能,可以描述非常复杂的Web页面,如复杂的数字表达式、化学方程式等。XML的特点是结构化、自描述、可扩展和浏览器自适应等。 用于WAP的标记语言就是WML (Wireless Markup Language ),其语法跟XML 一样,是XML的子集。 PHP (Hypertext Preprocessor)是一种在服务器端执行的、嵌入HTML文档的脚本语言,其语言风格类似于C语言,被网站编程人员广泛运用。

  • 可视化程序设计是以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。 与传统的编程方式相比,“可视化程序设计”仅通过直观的操作方式即可完成界面的设计工作。 可视化程序设计语言的特点主要表现在两个方面:一是基于面向对象的思想,引入了控件的概念和事件驱动;二是程序开发过程一般遵循以下步骤,即先进行界面的绘制工作,再基于事件编写程序代码,以响应鼠标、键盘的各种动作。 可视化程序设计最大的优点是设计人员可以不用编写或只需编写很少的程序代码,就能完成应用程序的设计,这样就能极大地提高设计人员的工作效率。

  • 从原理上讲,对源程序进行语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难,而且用语法制导方式机械生成的目标代码往往是繁琐和低效的,因此有必要采用一种中间代码,将源程序首先翻译成中间代码表示形式,以利于进行与机器无关的优化处理。由于中间代码实际上也起着编译器前端和后端分水岭的作用,所以使用中间代码也有助于提高编译程序的可移植性。常用的中间代码有后缀式、三元式、四元式和树等形式。

  • 符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地査找、插入、修改和删除等操作。 符号表的建立可以始于词法分析阶段,也可以放到语法分析和语义分析阶段,但符号表的使用有时会延续到目标代码的运行阶段。 编译过程中,在确认源程序的语法和语义之后,就可对其进行翻译,同时改变源程序的内部表示。对于声明语句,需要记录所遇到的符号的信息,因此应进行符号表的填查工作。对于可执行语句,需要翻译成中间代码或目标代码。

  • 语言中具有独立含义的最小语法单位是符号(单词),如标识符、无符号常数与界限符等。词法分析的任务是把构成源程序的字符串转换成单词符号序列。 有限自动机是一种识别装置的抽象概念,它能准确地识别正规集。有限自动机分为两类:确定的有限自动机(DFA)和不确定的有限自动机(NFA)。

  • 形式语言理论中一种重要的变换文法,用来描述上下文无关语言,在乔姆斯基分层中称为2型文法。由于程序设计语言的语法基本上都是上下文无关文法,因此应用十分广泛。上下文无关文法拥有足够强的表达力来表示大多数程序设计语言的语法。另一方面,上下文无关文法又足够简单,使得我们可以构造有效的分析算法来检验一个给定字串是否是由某个上下文无关文法产生的。

  • 面向机器的程序设计语言,使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。

  • 一个函数被调用时,可能需要接收从外部传入的数据信息,传值调用与引用调用(传地址)是函数调用时常采用的信息传递方式。传值调用是将实参的值传给被调用函数的形参,因此实参可以是常量、变量、表达式或函数调用,而引用调用的实质是将实参的地址传给被调用函数的形参,因此实参必须具有地址。

  • 语法错误是指由于编程中输入不符合语法规则而产生的,例如:表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。通常,编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,又称为编译错误。语法错误的调试,则可以由集成开发环境提供的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。编译正确的程序必然不包含语法错误。

  • 弱类型指的是语言类型系统的类型检査的严格程度,动态类型和静态类型则指变量与类型的绑定方法。 静态类型指编译器在编译源程序期间执行类型检查,动态类型指编译器(虚拟机)在程序运行时执行类型检查。简单地说,在声明了一个变量之后,不能改变其类型的语言,是静态语言;能够随时改变其类型的语言,是动态语言。 弱类型相对于强类型来说类型检查更不严格,比如说允许变量类型的隐式转换,允许强制类型转换等等。

  • 对高级语言源程序进行编译(或解释)方式的翻译过程中,语法分析的任务是根据语言的语法规则,分析单词串是否构成短语和句子,即表达式、语句和程序等基本语言结构,同时检查和处理程序中的语法错误。程序设计语言的绝大多数语法规则可以采用上下文无关文法进行描述。语法分析方法有多种,根据产生语法树的方向,可分为自底向上和自顶向下两类。递归下降分析法和预测分析法是常用的自顶向下分析法。算符优先分析法和LR分析法属于自底向上的语法分析方法。

  • 程序设计语言的语义分为静态语义和动态语义,其中静态语义分析方法是语法制导翻译,其基本思想是将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予文法的产生式。

  • alink用于设置正在被击中的链接的颜色。vlink用于设置已使用的链接的颜色。background用于设置背景图片的URL。bgcolor用于设置文档整体背景颜色。

  • <tr>标记用于定义表格中的一行。<col>标记用于定义表格中一个或多个列的属性值。<td>标记用于定义表格中的一个单元格。<title>标记用于定义文档标题。

  • 在HTML语言中,可以通过使用标签定义一个指向电子邮件地址的超级链接,通过该链接可以在Internet中发送电子邮件。

  • XML文件的第一行必须是声明该文件是XML文件以及它所使用的XML规范版本。在文件的前面不能够有其他元素或者注释。所有的XML文档必须有一个根元素。XML文档中的第一个元素就是根元素。所有XML文档都必须包含一个单独的标记来定义,所有其他元素都必须成对地在根元素中嵌套。XML文档有且只能有一个根元素。所有的元素都可以有子元素,子元素必须正确地嵌套在父元素中。在XML中规定,所有标识必须成对出现,有一个开始标识,就必须有一个结束标识,否则将被视为错误。

  • align 意思是 设定图像的对齐方式,其属性可选值为:top,bottom,middle,right,left等等。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值