㈠ 帮我看看下面 编译原理 的题目: 谢谢!
23. D
24. D
25. A
26. D
27. C
28. B
29. D
30. A
31. A
32. B
33. A
34. 不太确定,蒙D
35. A
36. 不太确定,蒙A
37. D
38. C
39. D
40. 不知道
二、
A,B
A,D
C,D
A,C
A,B,D
A,B,C,D
㈡ 我想自己开发软件需要学习什么
方法/步骤1:
重视基础课的学习
计算机虽然是高科技的象征,但又受到其它专业发展的制约。计算机专业知识的学习同样要加强一些相关知识的学习。计算机学习过程往往是由硬件开始,走向软件,但最终又会走向硬件。一个软件开发高手非常注重程序效率,而效率却往往与计算机硬件知识是紧密相关。
因此高等数学、离散数学、线性代数等数学知识的学习也有一定需求。尤其是软件开发高手,开发过程会涉及数学方面往往会更多一些。
要自始自终地加强英语的学习。因为目前的计算机程序设计语言主要是外国开发的,编代码的主要语句往往是英文,中文通常是做解释和说明用。有一定的英文基础,在计算机学习上可以事半功倍。
方法/步骤2:
重视编程基本功的学习
学习软件需要什么?一个优秀的程序员也不是十天半个月就能够造就出来的,必须要扎扎实实学好编程基础知识,要经历一个漫长且辛苦的学习和程序开发过程。因此计算机专业学生,首先要做好吃苦的准备。
当我们在学习一些基础课如java,C语言等,我们会感觉到似乎这些没什么大作用,这些近似于低级语言的东西好像再努力也难成大器呀!计算机教育应该重视代码编程的教育,专业学生也不能忽视代码开发的学习。
如果你要问C语言这种代码开发功能具有多大的用处,大名鼎鼎的UNIX操作系统就是使用C语言书写的。而且我们玩的所有游戏几乎也是使用C语言编写的。
学习C语言的难度比学习汇编语言的难度小多了,而且C语言是一门“必修课”所以每一位立志成为电脑编程者的用户都必须征服C语言这座山峰。
方法/步骤3:
理论联系实践
学习编写程序,不仅要领悟老师的各种知识点,多看教材,还要结合课程重视上机的练习。很多学生在理解老师知识点和看教材上花了很多时间,却不重视上机的练习,最终会走向“书呆子”类,很难在软件开发中占有一席之地。在看教材、听课的同时,要将知识点在上机过程中做第二消化,这样便比光消化课本会强得多。当然每次上机应该做好准备,很多学生是无目标的上机,其学习效率当
然会很低。上机前要计划一下上机做些什么,要有一些新思路来设计和调试程序。只有在上机过程中不断发现问题,解决问题,才能逐步迈向程序员之路。又一些同学光重视上机,
忽视理论的学习,这些同学刚开始好像进步快,但到了一定的层次,就会停滞不前了。因此,实操要与理论同步,紧密结合,方可为编程打下扎实的基础。
总结学习软件需要什么?软件编程需要实践。
方法/步骤4:
深入学习,练就高手
经过一定时间的学习、实践,你已经具备了较扎实的计算机编程方法和技巧。正因为你有了上面的基础,学习起新的语言来更是轻车熟路。
总之,学习软件需要什么?实际和其他的一些技术错不多,只要你肯吃苦,没什么学不成的,所以只有想不到没有做不到,告诫软件爱好着要想掌握它,就要实践、实践、再实践。当学到了一种新的技术或知识时,多实践是巩固学习的一种最好最有效的方法。
㈢ 编译是什么意思
问题一:编译和解释的区别是什么? 后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言逗迟的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇消键编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。二、编译与解释编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器山桥李也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.1、编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM; 2、汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如下:MASM LX.ASM; 3、连接:用连接程序(LINK.EXE)对目标程序进行连接,形成可执行文件(.EXE),格式如下:LINK LX.OBJ; 4、执行:如果结果在屏幕在显示,则直接执行可执行文件。 5、调试:用调试程序(DEBUG.EXE)对可执行文件进行调试,格式如下:DEBUG LX.EXE1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。2. 由编译型语言编写的源程序需要经过编译、汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些......>>
问题二:函数的编译是什么意思??? 你说的这个问题,是把(不仅仅是数学上的函数式子)某个项目内容,进行编程。也就通过设计好了的运算程序,上百上千次进行与或非门运算。你想,电子,也就是通电断电额事。写成数字,就是010100001110000000111101111等等。
这需要专门的【编程员】大费脑筋的。有时候,需要好几年。
问题三:编译程序是什么意思?编译是什么意思? 把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。编译程序的实现算法较为复杂。这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系;同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。但是,由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。
问题四:编译时间是什么意思? 在ROM发布的时候,会提供这个ROM的一些版本。
编译时间能够告诉用户这个系统的发布时间。
有一些软件会提供类似的编译Revision。功能基本上相同。
问题五:编译错误是什么意思 编译错误,一般指语法上的错误
运行错误,一般指程序上的bug
问题六:什么是编译原理 编译:就是将程序语言进行翻译,生成可供用户直接执行的二进制代码,即可执行文件。
任务是个比较模糊的概念,指的是操作系统中正在进行的工作,既可以指进程,也可以指程序。
程序指的是可以连续执行,并能够完成一定任务的一条条指令的 *** 。
进程是程序在一个数据 *** 上运行的过程,它是传统操作系统进行资源分配和调度的一个独立单位。
线程是一个指令执行序列,是操作系统调度的最小单位。一个或多个线程构成进程,构成一个进激的线程之间共享资源。进程和线程之间的最大区别就是线程不能独立拥有资源,进程拥有自己的资源。
问题七:编译原理中V*是什么意思 V是一个符号 *** ,假设V指的是三个符号a, b, c的 *** ,记为 V = {a, b, c }
V* 读作“V的闭包”,它的数学定义是V自身的任意多次自身连接(乘法)运算的积,也是一个 *** 。
也就是说,用V中的任意符号进行意多次(包括0次)连接,得到的符号串,都是V*这个 *** 中的元素。
0次连接的结果是不含任何符号的空串,记为 ε
1次连接就是只有一个符号的符号串,比如,a,b, c
2次连接是两个符号构成的符号串,比如,aa, ab, ac, ba, bb, bc,等等
……
n次连接是一个长度为n、由a、b、c三个符号构成的符号串,比如abaacbbac……
因此,V*包含一切由a,b,c三个符号连接而成的、任意长度的符号串(以及空串ε)
问题八:编译和预编译有什么区别。 60分 预编译又称为预处理,是做些代码文本的替换工作。
处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等
就是为编译做的预备工作的阶段
主要处理#开始的预编译指令
编译(pilation , pile) 1、利用编译程序从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
问题九:C语言中程序编译的正确理解及其含义 预处理。首先程序会被送给预处理器了。预处理器执行以#开头的命令(通常称为指令)。预处理器有点类似于编辑器,它可以给程序添加内容,也可以对程序进行修改。
编译。 修改后的程序现在可以进入编译器了。编译器会把程序编译成机器指令(即目标代码)。然而,这样的程序是不可运行的。
链接。 在最后步骤中,链接器把编译器产生的目标代码和所需的其他附加代码整合在一起,这样才最终产生完全可执行的程序。这些附加代码包括程序中用到的库函数(如printf函数)
问题十:编译和解释的区别是什么? 后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。二、编译与解释编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.1、编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM; 2、汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如下:MASM LX.ASM; 3、连接:用连接程序(LINK.EXE)对目标程序进行连接,形成可执行文件(.EXE),格式如下:LINK LX.OBJ; 4、执行:如果结果在屏幕在显示,则直接执行可执行文件。 5、调试:用调试程序(DEBUG.EXE)对可执行文件进行调试,格式如下:DEBUG LX.EXE1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。2. 由编译型语言编写的源程序需要经过编译、汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些......>>
㈣ 编译原理的终结符和非终结符如何理解
一、非终结符:
1、非终结符可以再分成更细的东西。
2、不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。终结符号就是语言中用到的基本元素,名词、动词、形容词、助词等等基本语言单位。
二、终结符:
1、终结符直接就代表一个意思,比如关键字if就不能再分成i和f了。
2、通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。非终结符则是"语法"中用到的元素,除非谈论"语法",一般交谈语言中并不会用到非终结符。比如:主语、短语、词组、句子。
(4)最小语法单位编译原理扩展阅读:
终结符和非终结符在计算机科学和语言学的领域是用来指定推导规则的元素。在某个形式语法之中,终结符和非终结符是两个不交的集合。
从形式语言中定义看,终结符(T)就是不可再分的字符或串。而非终结符(N)是一个递归形式的定义:由终结符和至少一个非终结符号组成的串。
如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。
需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。
网络-终结符
网络-编译
㈤ 编译原理中词法分析和语法分析的任务分别是什么
词法分析的主要任务是将源代码转换为一系列有意义的词汇单位,这个过程可以分解字符序列形成单词组合,我们称之为词法单元或记号。在词法分析中,分析器识别关键字、标识符、常量和运算符等元素,形成一个词法单元序列。
语法分析的任务是根据预设的语法规则,分析词法单元序列的结构。这一步骤旨在判断序列是否遵循既定的语法规则。语法分析器通过构建语法树或语法分析树,展示源代码的结构。在此过程中,语法分析器还会检测语法错误,并生成相应的错误信息。
词法分析与语法分析是编译原理中的两个关键环节,它们共同协作完成源代码的分析和转换。词法分析将源代码转换为词法单元序列,为后续的语法分析提供数据输入。而语法分析则依据语法规则对词法单元序列进行深入分析,判断其是否符合语法规则。经过这两个步骤,编译器能够对源代码进行更深层次的语义分析、优化,并最终生成目标代码。
㈥ 编译原理题目
习题一、单项选择题
1、将编译程序分成若干个“遍”是为了 。
a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率
2、构造编译程序应掌握 。
a.源程序 b.目标语言
c.编译方法 d.以上三项都是
3、变量应当 。
a.持有左值 b.持有右值
c.既持有左值又持有右值 d.既不持有左值也不持有右值
4、编译程序绝大多数时间花在 上。
a.出错处理 b.词法分析
c.目标代码生成 d.管理表格
5、 不可能是目标代码。
a.汇编指令代码 b.可重定位指令代码
c.绝对指令代码 d.中间代码
6、使用 可以定义一个程序的意义。
a.语义规则 b.词法规则
c.产生规则 d.词法规则
7、词法分析器的输入是 。
a.单词符号串 b.源程序
c.语法单位 d.目标程序
8、中间代码生成时所遵循的是- 。
a.语法规则 b.词法规则
c.语义规则 d.等价变换规则
9、编译程序是对 。
a.汇编程序的翻译 b.高级语言程序的解释执行
c.机器语言的执行 d.高级语言的翻译
10、语法分析应遵循 。
a.语义规则 b.语法规则
c.构词规则 d.等价变换规则
解答
1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多的就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。
6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。
7、b 8、c 9、d 10、c
二、多项选择题
1、编译程序各阶段的工作都涉及到 。
a.语法分析 b.表格管理 c.出错处理
d.语义分析 e.词法分析
2、编译程序工作时,通常有 阶段。
a.词法分析 b.语法分析 c.中间代码生成
d.语义检查 e.目标代码生成
解答
1.b、c 2. a、b、c、e
三、填空题
1、解释程序和编译程序的区别在于 。
2、编译过程通常可分为5个阶段,分别是 、语法分析 、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是 ,最后阶段的输出为 程序。
4、编译程序是指将 程序翻译成 程序的程序。 解答
是否生成目标程序 2、词法分析 中间代码生成 3、源程序 目标代码生成 4、源程序 目标语言
一、单项选择题
1、文法G:S→xSx|y所识别的语言是 。
a. xyx b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法G描述的语言L(G)是指 。
a. L(G)={α|S+ ⇒α , α∈VT*} b. L(G)={α|S*⇒α, α∈VT*}
c. L(G)={α|S*⇒α,α∈(VT∪VN*)} d. L(G)={α|S+ ⇒α, α∈(VT∪VN*)}
3、有限状态自动机能识别 。
a. 上下文无关文法 b. 上下文有关文法
c.正规文法 d. 短语文法
4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立 。
a. 若f(a)>g(b),则a>b b.若f(a)<g(b),则a<b
c. a~b都不一定成立 d. a~b一定成立
5、如果文法G是无二义的,则它的任何句子α 。
a. 最左推导和最右推导对应的语法树必定相同
b. 最左推导和最右推导对应的语法树可能不同
c. 最左推导和最右推导必定相同
d. 可能存在两个不同的最左推导,但它们对应的语法树相同
6、由文法的开始符经0步或多步推导产生的文法符号序列是 。
a. 短语 b.句柄 c. 句型 d. 句子
7、文法G:E→E+T|T
T→T*P|P
P→(E)|I
则句型P+T+i的句柄和最左素短语为 。
a.P+T和i b. P和P+T c. i和P+T+i d.P和T
8、设文法为:S→SA|A
A→a|b
则对句子aba,下面 是规范推导。
a. SÞSAÞSAAÞAAAÞaAAÞabAÞaba
b. SÞSAÞSAAÞAAAÞAAaÞAbaÞaba
c. SÞSAÞSAAÞSAaÞSbaÞAbaÞaba
d. SÞSAÞSaÞSAaÞSbaÞAbaÞaba
9、文法G:S→b|∧(T)
T→T,S|S
则FIRSTVT(T) 。
a. {b,∧,(} b. {b,∧,)} c.{b,∧,(,,} d.{b,∧,),,}
10、产生正规语言的文法为 。
a. 0型 b. 1型 c. 2型 d. 3型
11、采用自上而下分析,必须 。
a. 消除左递归 b. 消除右递归 c. 消除回溯 d. 提取公共左因子
12、在规范归约中,用 来刻画可归约串。
a. 直接短语 b. 句柄 c. 最左素短语 d. 素短语
13、有文法G:E→E*T|T
T→T+i|i
句子1+2*8+6按该文法G归约,其值为 。
a. 23 B. 42 c. 30 d. 17
14、规范归约指 。
a. 最左推导的逆过程 b. 最右推导的逆过程
c. 规范推导 d. 最左归约的逆过程
[解答]
1、选c。
2、选a。
3、选c。
4、虽然a与b没有优先关系,但构造优先函数后,a与b就一定存在优先关系了。所以,由f(a)>g)(b)或f(a)<g(b)并不能判定原来的a与b之间是否存在优先关系:故选c。
5、如果文法G无二义性,则最左推导是先生长右边的枝叶:对于d,如果有两个不同的是了左推导,则必然有二义性。故选a。
6、选c。
7、由图2-8-1的语法树和优先关系可以看出应选b。
8、规范推导是最左推导,故选d。
9、由T→T,…和T→(… 得FIRSTVT(T))={(,,)};
由T→S得FIRSTVT(S)⊂FIRSTVT(T),而FIRSTVT(S)={b,∧,(};即
FIRSTVT(T)={b,∧,(,,}; 因此选c。
10、d 11、c 12、b 13、b 14、b
二、多项选择题
1、下面哪些说法是错误的 。
a. 有向图是一个状态转换图 b. 状态转换图是一个有向图
c.有向图是一个DFA d.DFA可以用状态转换图表示
2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程 b. 多种最左推导过程 c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法G存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
d. 该句子有两棵不同的语法树
e.该句子的语法树只有一个
4、有一文法G:S→AB
A→aAb|ε
B→cBd|ε
它不产生下面 集合。
a. {anbmcndm|n,m≥0} b. {anbncmdm|n,m>0}
c. {anbmcmdn|n,m≥0} d. {anbncmdm|n,m≥0}
e. {anbncndn|n≥0}
5、自下而上的语法分析中,应从 开始分析。
a. 句型 b. 句子 c. 以单词为单位的程序
d. 文法的开始符 e. 句柄
6、对正规文法描述的语言,以下 有能力描述它。
a.0型文法 b.1型文法 c.上下文无关文法 d.右线性文法 e.左线性文法
解答 1、e、a、c 2、a、c、e 3、b、c、d 4、a、c 5、b、c 6、a、b、c、d、e
三、填空题
1、文法中的终结符和非终结符的交集是 。词法分析器交给语法分析器的文法符号一定是 ,它一定只出现在产生式的 部。
2、最左推导是指每次都对句型中的 非终结符进行扩展。
3、在语法分析中,最常见的两种方法一定是 分析法,另一是 分析法。
4、采用 语法分析时,必须消除文法的左递归。
5、 树代表推导过程, 树代表归约过程。
6、自下而上分析法采用 、归约、错误处理、 等四种操作。
7、Chomsky把文法分为 种类型,编译器构造中采用 和 文法,它们分别产生 和 语言,并分别用 和 自动机识别所产生的语言。
解答 1、空集 终结符 右
2、最左
3、自上而上 自下而上
4、自上而上
5、语法 分析
6、移进 接受
7、4 2 型 3型 上下文无关语言 正规语言 下推自动机 有限
四、判断题
1、文法 S→aS|bR|ε描述的语言是(a|bc)* ( )
R→cS
2、在自下而上的语法分析中,语法树与分析树一定相同。 ( )
3、二义文法不是上下文无关文法。 ( )
4、语法分析时必须先消除文法中的左递归。 ( )
5、规范归约和规范推导是互逆的两个过程。 ( )
6、一个文法所有句型的集合形成该文法所能接受的语言。 ( )
解答 1、对 2、错 3、错 4、错 5、错 6、错
五、简答题
1、句柄 2、素短语 3、语法树 4、归约 5、推导
[解答]
1、句柄:一个句型的最左直接短语称为该句型的句柄。
2、素短语:至少含有一个终结符的素短语,并且除它自身之外不再含任何更小的素短语。
3、语法树:满足下面4个条件的树称之为文法G[S]的一棵语法树。
①每一终结均有一标记,此标记为VN∪VT中的一个符号;
②树的根结点以文法G[S]的开始符S标记;
③若一结点至少有一个直接后继,则此结点上的标记为VN中的一个符号;
④若一个以A为标记的结点有K个直接后继,且按从左至右的顺序,这些结点的标记分别为X1,X2,…,XK,则A→X1,X2,…,XK,必然是G的一个产生式。
4、归约:我们称αγβ直接归约出αAβ,仅当A→γ 是一个产生式,且α、β∈(VN∪VT)*。归约过程就是从输入串开始,反复用产生式右部的符号替换成产生式左部符号,直至文法开始符。
5、推导:我们称αAβ直接推出αγβ,即αAβÞαγβ,仅当A→ γ 是一个产生式,且α、β∈(VN∪VT)*。如果α1Þα2Þ…Þαn,则我们称这个序列是从α1至α2的一个推导。若存在一个从α1αn的推导,则称α1可推导出αn。推导是归约的逆过程。
六、问答题
1、给出上下文无关文法的定义。
[解答]
一个上下文无关文法G是一个四元式(VT,VN,S, P),其中:
●VT是一个非空有限集,它的每个元素称为终结符号;
●VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=Φ;
●S是一个非终结符号,称为开始符号;
●P是一个产生式集合(有限),每个产生式的形式是P→α,其中,P∈VN,
α∈(VT∪VN)*。开始符号S至少必须在某个产生式的左部出现一次。
2、文法G[S]:
S→aSPQ|abQ
QP→PQ
bP→bb
bQ→bc
cQ→cc
(1)它是Chomsky哪一型文法?
(2)它生成的语言是什么?
[解答]
(1)由于产生式左部存在终结符号,且所有产生式左部符号的长度均小于等于产生式右部的符号长度,所以文法G[S]是Chomsky1型文法,即上下文有关文法。
(2)按产生式出现的顺序规定优先级由高到低(否则无法推出句子),我们可以得到:
SÞabQÞabc
SÞaSPQÞaabQPQÞaabPQQÞaabbQQÞaabbcQÞaabbcc
SÞaSPQÞaaSPQPQÞaaabQPQPQÞaaabPQQPQÞaaabPQPQQÞaaaPPQQQÞ
aaabbPqqqÞaaabbQQQÞaaabbbcQQÞaaabbbccQÞaaabbbccc
……
于是得到文法G[S]生成的语言L={anbncn|n≥1}
3、按指定类型,给出语言的文法。
L={aibj|j>i≥1}的上下文无关文法。
【解答】
(1)由L={aibj|j>i≥1}知,所求该语言对应的上下文无关文法首先应有S→aSb型产生式,以保证b的个数不少于a的个数;其次,还需有S→Sb或S→bS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法G[S]为:
G[S]:S→aSb|Sb|b
4、有文法G:S→aAcB|Bd
A→AaB|c
B→bScA|b
(1)试求句型aAaBcbbdcc和aAcbBdcc的句柄;
(2)写出句子acabcbbdcc的最左推导过程。
【解答】(1)分别画出对应两句型的语法树,如图2-8-2所示
句柄:AaB Bd
图2-8-2 语法树
(2)句子acabcbbdcc的最左推导如下:
SÞaAcBÞaAaBcBÞacaBcBÞacabcBÞacabcbScAÞacabcbBdcA
ÞacabcbbdcAÞacabcbbdcc
5、对于文法G[S]:
S→(L)|aS|a L→L, S|S
(1)画出句型(S,(a))的语法树。(2)写出上述句型的所有短语、直接短语、句柄和素短语。
【解答】
(1)句型(S,(a))的语法树如图2-8-3所示
(2)由图2-8-3可知:
①短语:S、a、(a)、S,(a)、(S,(a));
②直接短语:a、S;
③句柄:S;
④素短语:素短语可由图2-8-3中相邻终结符之间的优先关系求得,即;
因此素短语为a。
6、考虑文法G[T]:
T→T*F|F
F→F↑P|P
P→(T)|i
证明T*P↑(T*F)是该文法的一个句型,并指出直接短语和句柄。
【解答】
首先构造T*P↑(T*F)的语法树如图2-8-4所示。
由图2-8-4可知,T*P↑(T*F)是文法G[T]的一个句型。
直接短语有两个,即P和T*F;句柄为P。
一、单项选择题
1、词法分析所依据的是 。
a. 语义规则 b. 构词规则 c. 语法规则 d. 等价变换规则
2、词法分析器的输出结果是 。
a. 单词的种别编码 b. 单词在符号表中的位置
c. 单词的种别编码和自身值 d. 单词自身值
3、正规式M1和M2等价是指 。
a. M1和M2的状态数相等 b. M1和M2的有向弧条数相等
c. M1和M2所识别的语言集相等 d. M1和M2状态数和有向弧条数相等
4、状态转换图(见图3-6-1)接受的字集为 。
a. 以 0开头的二进制数组成的集合 b. 以0结尾的二进制数组成的集合
c. 含奇数个0的二进制数组成的集合 d. 含偶数个0的二进制数组成的集合
5、词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此, 。
a. 词法分析器应作为独立的一遍 b. 词法分析器作为子程序较好
c. 词法分析器分解为多个过程,由语法分析器选择使用 d. 词法分析器并不作为一个独立的阶段
解答 1、b 2、c 3、c 4、d 5、b
二、多项选择题
1、在词法分析中,能识别出 。
a. 基本字 b. 四元式 c. 运算符
d. 逆波兰式 e. 常数
2、令∑={a,b},则∑上所有以b开头,后跟若干个ab的字的全体对应的正规式为 。
a. b(ab)* b. b(ab)+ c.(ba)*b
d. (ba)+b e. b(a|b)
解答 1、a、c、e 2、a、b、d
三、填空题
1、确定有限自动机DFA是 的一个特例。
2、若二个正规式所表示的 相同,则认为二者是等价的。
3、一个字集是正规的,当且仅当它可由 所 。
解答 1、NFA 2、正规集 3、DFA(NFA)所识别
四、判断题
1、一个有限状态自动机中,有且仅有一个唯一终态。 ( )
2、设r和s分别是正规式,则有L(r|s)=L(r)|L(s)。 ( )
3、自动机M和M′的状态数不同,则二者必不等价。 ( )
4、确定的自动机以及不确定的自动机都能正确地识别正规集。 ( )
5、对任意一个右线性文法G,都存在一个NFA M,满足L(G)=L(M)。 ( )
6、对任意一个右线性文法G,都存在一个DFA M,满足L(G)=L(M)。 ( )
7、对任何正规表达式e,都存在一个NFA M,满足L(G)=L(e)。 ( )
8、对任何正规表达式e,都存在一个DFA M,满足L(G)=L(e)。 ( )
解答 1 、2、3、错 4、5、6、7、8、正确
五、基本题
1、设M=({x,y}, {a,b}, f,x,{y})为一非确定的有限自动机,其中f定义如下:
f(x,a)={x,y} f(x,b)={y}
f(y,a)=φ f(y,b)={x,y}
试构造相应的确定有限自动机M′。
解答:对照自动机的定义M=(S,Σ,f,S0,Z),由f的定义可知f(x,a)、f(y,b)均为多值函数,所以是一非确定有限自动机,先画出NFA M相应的状态图,如图3-6-2所示。
用子集法构造状态转换矩阵表3-6-3所示。
I Ia Ib
{x} {x,y} {y}
{y} — {x,y}
{x,y} {x,y} {x,y}
将转换矩阵中的所有子集重新命名而形成表3-6-4所示的状态转换矩阵。
表3-6-4 状态转换矩阵
a b
0 2 1
1 — 2
2 2 2
即得到M′=({0,1,2}, {a,b}, f,0, {1,2}),其状态转换图如图3-6-5所示。
将图3-6-5的DFA M′最小化。首先,将M′的状态分成终态组{1,2}与非终态组{0};其次,考察{1,2}。由于{1,2}a={1,2}b={2}⊂{1,2},所以不再将其划分了,也即整个划分只有两组{0},{1,2}:令状态1代表{1,2},即把原来到达2的弧都导向1,并删除状态2。最后,得到如图3-6-6所示化简DFA M′。
2、对给定正规式b*(d|ad)(b|ab)+,构造其NFA M;
解答:首先用A+=AA*改造正规式得:b*(d|ad)(b|ab)(b|ab)*;其次,构造该正规式的NFA M,如图3-6-7所示。
求采纳为满意回答。
㈦ 编译原理
编译原理):利用编译程序从源语言编写的源程序产生目标程序的过程; 用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成
(7)最小语法单位编译原理扩展阅读:
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。
编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。
而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
㈧ 我是个菜鸟,求学习方法!
经验一:
1、不妨给自己定一些时间限制。连续长时间的学习很容易使自己产生厌烦情绪,这时可以把功课分成若干个部分,把每一部分限定时间,例如一小时内完成这份练习、八点以前做完那份测试等等,这样不仅有助于提高效率,还不会产生疲劳感。如果可能的话,逐步缩短所用的时间,不久你就会发现,以前一小时都完不成的作业,现在四十分钟就完成了。
2、不要在学习的同时干其他事或想其他事。一心不能二用的道理谁都明白,可还是有许多同学在边学习边听音乐。或许你会说听音乐是放松神经的好办法,那么你尽可以专心的学习一小时后全身放松地听一刻钟音乐,这样比带着耳机做功课的效果好多了。
3、不要整个晚上都复习同一门功课。我以前也曾经常用一个晚上来看数学或物理,实践证明,这样做非但容易疲劳,而且效果也很差。后来我在每晚安排复习两三门功课,情况要好多了。
除了十分重要的内容以外,课堂上不必记很详细的笔记。如果课堂上忙于记笔记,听课的效率一定不高,况且你也不能保证课后一定会去看笔记。课堂上所做的主要工作应当是把老师的讲课消化吸收,适当做一些简要的笔记即可。
经验二:
学习效率这东西,我也曾和很多人谈起过。我们经常看到这样的情况:某同学学习极其用功,在学校学,回家也学,不时还熬熬夜,题做得数不胜数,但成绩却总上不去其实面对这样的情况,我也是十分着急的,本来,有付出就应该有回报,而且,付出的多就应该回报很多,这是天经地义的事。但实际的情况却并非如此,这里边就存在一个效率的问题。效率指什么呢?好比学一样东西,有人练十次就会了,而有人则需练一百次,这其中就存在一个效率的问题。
如何提高学习效率呢?我认为最重要的一条就是劳逸结合。学习效率的提高最需要的是清醒敏捷的头脑,所以适当的休息,娱乐不仅仅是有好处的,更是必要的,是提高各项学习效率的基础。那么上课时的听课效率如何提高呢?以我的经历来看,课前要有一定的预习,这是必要的,不过我的预习比较粗略,无非是走马观花地看一下课本,这样课本上讲的内容、重点大致在心里有个谱了,听起课来就比较有针对性。预习时,我们不必搞得太细,如果过细一是浪费时间,二是上课时未免会有些松懈,有时反而忽略了最有用的东西。上课时认真听课当然是必须的,但就象我以前一个老师讲的,任何人也无法集中精力一节课,就是说,连续四十多分钟集中精神不走神,是不太可能的,所以上课期间也有一个时间分配的问题,老师讲有些很熟悉的东西时,可以适当地放松一下。另外,记笔记有时也会妨碍课堂听课效率,有时一节课就忙着抄笔记了,这样做,有时会忽略一些很重要的东西,但这并不等于说可以不抄笔记,不抄笔记是不行的,人人都会遗忘,有了笔记,复习时才有基础,有时老师讲得很多,在黑板上记得也很多,但并不需要全记,书上有的东西当然不要记,要记一些书上没有的定理定律,典型例题与典型解法,这些才是真正有价值去记的东西。否则见啥记啥,势必影响课上听课的效率,得不偿失。
作题的效率如何提高呢?最重要的是选"好题",千万不能见题就作,不分青红皂白,那样的话往往会事倍功半。题都是围绕着知识点进行的,而且很多题是相当类似的,首先选择想要得到强化的知识点,然后围绕这个知识点来选择题目,题并不需要多,类似的题只要一个就足够,选好题后就可以认真地去做了。作题效率的提高,很大程度上还取决于作题之后的过程,对于做错的题,应当认真思考错误的原因,是知识点掌握不清还是因为马虎大意,分析过之后再做一遍以加深印象,这样作题效率就会高得多。
经验三:
学习效率是决定学习成绩的重要因素。那么,我们如何提高自己学习效率呢?
第一点,要自信。很多的科学研究都证明,人的潜力是很大的,但大多数人并没有有效地开发这种潜力,这其中,人的自信力是很重要的一个方面。无论何时何地,你做任何事情,有了这种自信力,你就有了一种必胜的信念,而且能使你很快就摆脱失败的阴影。相反,一个人如果失掉了自信,那他就会一事无成,而且很容易陷入永远的自卑之中。
提高学习效率的另一个重要的手段是学会用心。学习的过程,应当是用脑思考的过程,无论是用眼睛看,用口读,或者用手抄写,都是作为辅助用脑的手段,真正的关键还在于用脑子去想。举一个很浅显的例子,比如说记单词,如果你只是随意的浏览或漫无目的地抄写,也许要很多遍才能记住,而且不容易记牢,而如果你能充分发挥自己的想象力,运用联想的方法去记忆,往往可以记得很快,而且不容易遗忘。现在很多书上介绍的英语单词快速记忆的方法,也都是强调用脑筋联想的作用。可见,如果能做7到集中精力,发挥脑的潜力,一定可以大大提高学习的效果。
另一个影响到学习效率的重要因素是人的情绪。我想,每个人都曾经有过这样的体会,如果某一天,自己的精神饱满而且情绪高涨,那样在学习一样东西时就会感到很轻松,学的也很快,其实这正是我们的学习效率高的时候。因此,保持自我情绪的良好是十分重要的。我们在日常生活中,应当有较为开朗的心境,不要过多地去想那些不顺心的事,而且我们要以一种热情向上的乐观生活态度去对待周围的人和事,因为这样无论对别人还是对自己都是很有好处的。这样,我们就能在自己的周围营造一个十分轻松的氛围,学习起来也就感到格外的有精神。
经验四:
很多学生看上去很用功,可成绩总是不理想。原因之一是,学习效率太低。同样的时间内,只能掌握别人学到知识的一半,这样怎么能学好?学习要讲究效率,提高效率,途径大致有以下几点:
一、每天保证8小时睡眠。
晚上不要熬夜,定时就寝。中午坚持午睡。充足的睡眠、饱满的精神是提高效率的基本要求。
二、学习时要全神贯注。
玩的时候痛快玩,学的时候认真学。一天到晚伏案苦读,不是良策。学习到一定程度就得休息、补充能量。学习之余,一定要注意休息。但学习时,一定要全身心地投入,手脑并用。我学习的时侯常有陶渊明的"虽处闹市,而无车马喧嚣"的境界,只有我的手和脑与课本交流。
三、坚持体育锻炼。
身体是"学习"的本钱。没有一个好的身体,再大的能耐也无法发挥。因而,再繁忙的学习,也不可忽视放松锻炼。有的同学为了学习而忽视锻炼,身体越来越弱,学习越来越感到力不从心。这样怎么能提高学习效率呢?
四、学习要主动。
只有积极主动地学习,才能感受到其中的乐趣,才能对学习越发有兴趣。有了兴趣,效率就会在不知不觉中得到提高。有的同学基础不好,学习过程中老是有不懂的问题,又羞于向人请教,结果是郁郁寡欢,心不在焉,从何谈起提高学习效率。这时,唯一的方法是,向人请教,不懂的地方一定要弄懂,一点一滴地积累,才能进步。如此,才能逐步地提高效率。
五、保持愉快的心情,和同学融洽相处。
每天有个好心情,做事干净利落,学习积极投入,效率自然高。另一方面,把个人和集体结合起来,和同学保持互助关系,团结进取,也能提高学习效率。
六、注意整理。
学习过程中,把各科课本、作业和资料有规律地放在一起。待用时,一看便知在哪。而有的学生查阅某本书时,东找西翻,不见踪影。时间就在忙碌而焦急的寻找中逝去。我认为,没有条理的学生不会学得很好。
评:学习效率的提高,很大程度上决定于学习之外的其他因素,这是因为人的体质、心境、状态等诸多因素与学习效率密切相关。
总结
学习必须讲究方法,而改进学习方法的本质目的,就是为了提高学习效率。
可以这样认为,学习效率很高的人,必定是学习成绩好的学生。因此,对大部分学生而言,提高学习效率就是提高学习成绩的直接途径。
提高学习效率并非一朝一夕之事,需要长期的探索和积累。前人的经验是可以借鉴的,但必须充分结合自己的特点。影响学习效率的因素,有学习之内的,但更多的因素在学习之外。首先要养成良好的学习习惯,合理利用时间,另外还要注意"专心、用心、恒心"等基本素质的培养,对于自身的优势、缺陷等更要有深刻的认识。总之,"世上无难事,只怕有心人。"
漫谈学习方法
下面主要谈五个方面的学习方法。
(一)抓好预习环节
预习,即课前的自学。指在教师讲课之前,自己先独立地阅读新课内容。初步理解内容,是上课做好接受新知识的准备过程。有些学生由于没有预习习惯,对老师一堂课要讲的内容一无所知,坐等教师讲课。老师讲什么就听什么,老师叫干什么就干什么,显得呆板被动,缺乏学习的积极性和主动性。有些学生虽能预习,但看起书来似走马观花,不动脑、不分析。这种预习一点也达不到效果。
1.预习的好处
(1)能发现自己知识上的薄弱环节,在上课前补上这部分的知识,不使它成为听课时的“拌脚石”。这样,就会顺利理解新知识。
(2)有利于听课时跟着老师讲课的思路走。对听课内容选择性强。明确哪些知识应该放上主要精力,加强理解和消化;哪里应该重点记笔记,做到心中有数。
(3)预习有利于弄清重点、难点所在,便于带着问题听课与质疑。注意力集中到难点上。这样,疑惑易解,听起来轻松、有味,思起来顺利主动,学习效果高。
(4)预习可以提高记笔记水平。由于课前预习过,讲的内容和板书,心中非常清楚。上课时可以不记或少记书上有的,着重记书上没有的或自己不太清楚的部分,以及老师反复提醒的关键问题。从而可以把更多的时间用在思考理解问题上。
2.预习要注意的几个问题
(1)预习时要读、思、问、记同步进行。对课本内容能看懂多少就算多少,不必求全理解,疑难也不必钻深,只需顺手用笔作出不同符号的标记。把没有读懂的问题记下来,作为听课的重点。但对牵涉到已学过的知识以及估计老师讲不到的小问题,自己一定要搞懂,以消灭“拦路虎。”
(2)若以前没有预习的习惯,现在想改变方法,先预习后上课,但不能一下子全面铺开,每门功课都搞提前预习。这样做会感到时间不够用。显得非常紧张,不能达到预习效果。因此,刚开始预习时,要先选一两门自己学起来感到吃力的学科进行预习试点,等到尝到甜头,取得经验后,并在时间允许的条件下,再逐渐增加学科,直到全面铺开。
(3)预习应在当天作业做完之后再进行。时间多,就多预习几门,钻得深一点;反之,就少预习几门,钻得浅一点。切不可以每天学习任务还未完成就忙着预习,打乱了正常的学习秩序。
(4)学习差的学生,课前不预习,上课听不懂,课后还需花大量的时间去补缺和做作业,整天忙得晕头转向,挤不出一点时间去预习。其实,这种学生差的根本原因就在不预习上。学习由预习、上课、整理复习、作业四个环节组成。缺了预习这个环节就会影响下面环节的顺利运转。这些学生必须作好在短期内要多吃点苦的思想准备。在完成每天的学习任务后,要安排一点时间预习。这样做虽然费了时间,但上课能听得懂,减少了因上课听不懂而浪费的时间,同时,还可以减少花在课后整理、消化、作业上的时间。时间一长,运转正常了,学习的被动局面也就会改变,就再也不需加班加点了。
3.预习的要求
(1)要注重讲究实效,不搞形式。要根据学习计划安排时间,不能顾此失彼。预习一般要安排在新课的前一天晚上进行。这样,印象会较深。新课难度大,就多预习一些时间,难度小就少预习一些时间。应重点选择那些自己学起来吃力,又轮到讲授新课的科目进行预习,其他科目只需一般性的预习。某些学科,也可以利用星期天,集中预习下一周要讲授的课程,以减轻每天预习的负担。
(2)预习的任务是通过初步阅读,先理解感知新课的内容(如概念、定义、公式、论证方法等),为顺利听懂新课扫除障碍。具体任务是:①复习、巩固和补习有关已学的旧知识,找出新课中自己不理解的问题,并把理解不透的记下来。②初步弄清新课中的基本内容是什么?这些知识内容在原有的基础上向前发展了什么?并找出书中的重点、难点和自己费解的地方。③预习时要看、思、做结合进行。看:一般是把新课通读一遍,然后用笔勾划出书上的重要内容。需要查的就去查一查;需要想的就应该认真想一想;需要记的就应该记下来。思:指有的时候要想,做到低头看书,抬头思考,手在写题,脑在思考。做:在看的过程中,需要动手做的准备工作以及对课本后的练习题要进行尝试性的做一做。问答题答一答。不会做,不会答可以再预习,也可以记下来。等教师在授课时集中注意听讲或向老师提出。预习以后,还要合上书本,小结一下。这样做能使自己对新教材有更深刻的印象。
(二)注重听课环节
学生的大部分时间是在课堂中度过的。因此,听课是学生接受教师指导,掌握知识,发展智力的中心环节。是获取知识的重要途径。是保证高效率学习的关键。听课时,有的学生全神贯注,专心听讲;有的分心走神,萎靡不振,打瞌睡。有的像录音机,全听全录;有的边听边记,基本上能把教师讲的内容都记下来;有的以听为主,边听边思考,有了问题记下来;有的干脆不记,只顾听讲;有的边听边划边思考。思考时,有的思考当堂内容,有的思考与本课相关的知识体系,有的思考教师的思路,有的拿自己的思路与教师的思路比较。
那么,怎样才能达到听好课的目的呢?总的要求是要抓住各学科的不同特点,带着问题听,听清内容,记住要点,抓住关键,着重听老师的讲课方法与思路,释疑的过程与结论。具体要求:
1.要充分认识老师在上课时的重要作用。因为教师在课堂教学中起着主导的作用。他在课堂中的分析讲解远比课后辅导要详细得多,这也是学生自已看书无法比较的。课堂教学是老师指导学生掌握知识的一条最简捷的路。因此,每个学生都应该虚心向老师学习。在老师的启发诱导下上好每一节课。
2.要集中注意力,全神贯注地听老师讲解,跟着老师的讲课思路走,千万不能思想开小差。如果在老师启发下,自己有了比较好的想法,可以在笔记本上记下来,等下课后再去深入思考或请教老师和同学。总之,课堂上的“分心”,是学习的大敌。
3.听课中可以尝试在老师没有作出判断、结论之前,自己试作判断、试下结论。看看自己想的与老师讲的是否一致。找出对与不对的原因。
4.要力求当堂理解。理解是掌握事物本质、内部联系及规律的思考过程。那么,怎样才能做到当堂理解呢?在课堂上,你想的应与老师讲的统一,你思考的问题应与老师讲的问题统一。在教师的启发下,你要始终开动脑筋,积极思考。如果在思考中出现不理解或理解不透的地方,应举手提出问题。如果课堂上老师没有时间解答你的问题,应继续听老师的讲解。课后再去请教老师。
5.要跟着老师的思路跑。听课是为了增长知识和发展智力。因此,不能把知识听懂了就算课听好了等同起来。高水平的听课应该不仅注意老师传授的具体知识,更应该注意老师讲课的思路。追着老师的思路跑,目的在于把老师讲课过程中运用的各种思维方式,思维过程搞清楚。学习老师是如何进行周密科学思考的,从而提高自己的思维能力和智力水平。有的学生不注意老师的讲课思路,而偏重于记忆老师的推导,总结出来的公式或结论,认为这是听课的主要目的。其实,这样掌握的知识,是知其然而不知其所以然的死知识。这种死知识忘得快,又不能用于解决实际问题,更谈不上发展智力。
6.要抓住一节课的知识内容和学科特点的关键。知识内容的关键一般指基本概念、基本原理、基本关系式以及公式、定义。当老师讲解这些关键知识时,你一定要特别注意,抓住不放。同样,不抓住学科特点的关键学习,也会影响你的学习效果。实际上,各门学科的内容体系、发展思路、训练要求以及教的方法各有特点。学习中非抓住这些特点不可。如物理、化学、生物课要特别注意观察和实验,在获得感性知识的基础上,通过思考来掌握科学概念和规律。数学要通过大量演算,证明等练习获得数学知识,培养出数学思维能力。语文和外语在听课时,主要抓住字、词、句、篇等方面的知识点,并且通过听、说、读、写来提高阅读和写作能力。以便更好地理解和掌握语言和文字。
(三)紧抓复习环节
复习是对前面已学过的知识进行系统再加工,并根据学习情况对学习进行适当调整,为下一阶段的学习做好准备。因此,每上完一节课,每学完一篇课文,一个单元,一册书都要及时复习。若复习适时恰当,知识遗忘就少。早在1885年,德国的心理学家艾滨浩斯,通过实验发现刚记住的材料,一小时后只能保持44%;一天后能记住33%;两天后留下的只有28%;六天后为25%。所有的人,学习的知识都会发生先快后慢的遗忘过程。一些记性好的学生是因为能经常从不同的角度、不同的层次上进行复习,做到“每天有复习,每周有小结,每章有总结”,从而形成了惊人的记忆力。因此,很多学生对所学知识记不住,并不是脑子笨,而是不善于复习,或复习功夫不深。
1.复习的要求
(1)课后应及时把老师讲的和板书的知识像放电影一样,在脑子里过一遍。看看能想起多少,忘了多少。然后翻开笔记,查找漏缺。
(2)看教材时,应边看边思,深思重点、难点。分析疑点、深化理解。
(3)看阅必要的参考书,充实课堂所学的内容。
(4)整理与充实笔记,对知识进行归类,使知识深化、简化、条理化,并按规律去加强记忆。
(5)加强练习。练习一般应在复习后进行,也可边复习边练习。在复习过程中,加强练习,能提高复习效果。
(1)及时复习。当天学的知识,要当天复习清,决不能拖拉。做到不欠“帐”。否则,内容生疏了,知识结构散了就要花费加倍时间重新学习。要明白“修复总比重建倒塌了的房子省事得多”。
(2)要紧紧围绕概念、公式、法则、定理、定律复习。思考它们是怎么形成与推导出来的?能应用到哪些方面?它们需要什么条件?有无其他说法或证明方法?它与哪些知识有联系?通过追根溯源、牢固掌握知识。
(3)要反复复习。学完一课复习一次,学完一章(或一个单元),复习一次。学习一阶段系统总结一遍。期末再重点复习一次。通过这种步步为营的复习,形成的知识联系就不会消退。
(4)复习要有自己的思路。通过一课、一节、一章的复习,把自己的想法,思路写成小结、列出图表、或者用提纲摘要的方法,把前后知识贯穿起来,形成一个完整的知识网。
(5)复习中遇到问题,不要急于看书或问人,要先想后看(问)。这对于集中注意力、强化记忆、提高学习效率很有好处。每次复习时,要先把上次的内容回忆一下。这样做不仅保持了学习的连贯性,而且对记忆有很好的效果。
(6)复习中要适当看点题、做点题。选的题要围绕复习的中心来选。在解题前,要先回忆一下过去做过的有关习题的解题思路,在这基础上再做题。做题的目的是检查自己的复习效果,加深对知识的理解,培养解决问题的能力。做综合题能加深知识的完整化和系统化的理解,培养综合运用知识的能力。
(四)独立完成作业环节
独立完成作业是深化知识,巩固知识,检查学习效果的重要手段,也是复习与应用相结合的主要形式。然而,有些学生没有真正利用好这个环节。他们一下课就抢着做作业,作业一完,万事大吉。更有些学生课上根本没听懂,下课后也不问,作业抄袭后向老师交差完事。其实,做好作业有以下意义:
1.可以检查自己的学习效果。通过做作业可以发现问题,以便及时补救。
2.通过做作业时的思考,可以加深对知识的理解,把易混淆的概念搞清楚,把公式的变换搞熟练。总之,有利于把书本上的知识转化成自己的知识。
3.可以培养思维能力。因为作业中提出的各种问题,必然会促使自己积极思考,增强分析问题和解决问题的能力。
4.做完作业后,不能把它一扔了事,而应当定期进行分类整理,为总复习积累资料。复习时,翻阅一下记录的作业,既方便省事,又印象深刻。
做作业的基本要求和方法:
1.审题。审题是做作业十分重要的一步。拿到一个题目,首先应判断它属于哪一类,难易的程度如何?分清题目的条件和要求。已知条件是什么?从题目提供的信息中还能挖掘出什么条件?它的要求是什么?同时要让自己的思路顺着题目的路子思考。通过思考、准确、透彻地理解题目的意思,分清已知条件有哪些,题目要求的结论是什么。在审题过程中,还要注意哪些地方没有直接用语言表示出来,而隐含在题目中的其他形式条件,即注意隐含条件的挖掘。
2.寻找解题途径。方法一般有三种:一种是“由因导果”,可以表述为:“已知→可知→可知……”,最后到达结论。第二种是“执果索因”,即结论←需知←需知←……”。这样一层一层的追下去,直到追到已知条件全部有了为止。这样。已知条件和要求结论之间的道路就打通了。第三种是对于一些比较复杂的题目,就需要我们用前两种的综合办法,以尽量缩短条件与结论的距离。即一方面从已知条件推出一些可知的中间结果,另一方面根据题目的要求分析出一些需知的中间结果。需知与已知一旦统一,则可得到解题的途径。
在寻找解题途径中,要广泛联想与这些条件和结论有关的概念、公式、法则和方法等。联想过去是否解过和与此相同或相近的题目。那时是怎样解的?如果能联想起有关的旧知识,即与此题相应的规律原理、原则、公式就会浮现在脑海中,使解题的思路更加开阔。联想越广,跨度越大,得到的解题效果也越佳。
有时因为题目较复杂,为了思考方便,也可以把审题的过程画成简图。这实际上是一个运用学过的知识,把题目加工、改造的过程。经过加工,思路明了,解题捷径就会出现在眼前。
3.正确解题,经过①②两个步骤,已经寻得解题的途径,判定了解题的方案。但在实施时还要注意解题的保质保量。要做到这点,解题的步骤必须按部就班,一步步演算。书写规范化,格式明了,表达准确。要做到这点,必须要有扎实的基础。除此以外,在解题中,重要的知识点应写出来,繁题要简写,简题要详写。
4.注意检查。就是回过头来再检查一遍,看看是否题目要求的解都求出来了,有没有漏解。是否求出的解均符合题目的要求,有没有错解。检查是培养学生独立思考能力的重要一环。检查的方法很多。①步步检查法。即从审题开始,一步步检查。这种方法可以检查出计算、表达上的错误。②重做法。即重做一遍,看结果是否一样。③代入法。将计算结果代入公式或式子看看是否合理。同时,还要注意锻炼一题多解、一题多想。比较归类的解题习惯,不断提高自己分析问题和解决问题的能力。
(五)认真记好课堂笔记
记笔记是为了学,为了懂,为了用。记笔记的原则是以听为主,以记为辅。简练明白,提纲挈领,详略得当。难点不放过,疑点有标记。不乱,不混,条理明。对联想、发现的问题,要及时记。笔记要留有空白处,便于复习时补缺。