免费论文查重: 大雅 万方 维普 turnitin paperpass

浅谈教法程序设计教法探讨

最后更新时间:2024-03-28 作者:用户投稿原创标记本站原创 点赞:5774 浏览:20839
论文导读:
摘要在软件工程中经常使用到的形式化方法用于C语言的教学中,可以简化学生对有些技能的掌握。通过在不同的方面应用形式化的方法,可成功地突破C语言教学中的难点,使学生易于掌握一些不太好理清的计算方法。
关键词自增自减if语句数列求和循环
形式化,就是将复杂的处理过程变为规范的简洁明了的操作序列的过程,这种方法在数学和计算机科学中应用得非常广泛,它可以减小问题处理的复杂性,避免问题分析中的错误。C语言本身就是一种形式化的语言,正是因为形式化的性质才使其可实现,可以这么说,形式化体现在C语言的方方面面,所以在C语言的教学中采用形式化的方法是自然而然的。

一、自增自减运算

自增自减运算是C语言编程中比较容易出错的一种运算符,因为它的运算方法有别于数学中通常的运算符,使很多学生难以掌握。其实自增自减运算分别对应于机器指令中的INC和DEC指令,处理方式就是,按照表达式对施加了前缀自增自减运算的变量进行INC和DEC操作,然后计算表达式的值,再对施加了后缀自增自减运算的变量进行INC和DEC操作。根据这个过程作出如下形式化的步骤:
扫描表达式,对使用了前缀运算符的变量进行自增或自减,对同一变量,使用了几次前缀运算符,就自增或自减几次。
略去表达式中的所有自增自减运算符,计算表达式的值。
扫描表达式,对使用了后缀运算符的变量进行自增或自减,对同一变量,使用了几次后缀运算符,就自增或自减几次。

二、嵌套if语句的分析

在所有的C语言规范中,只提到了if与else配对的规则,虽然比较简单,但学生面对复杂的if—else嵌套,觉得无从下手,所以我总结了一套分析if—else嵌套程序段的方法。
判断if—else嵌套的正确性。计算if与else的个数,若if的个数少于了else的个数,则程序段中有语法错误,因为每个else必须有相应的if关键字,而if不一定需要有else。
将程序段中的所有复合语句圈出来,作为一个整体待分析。
从上到下为每一个else找相应的if,即为每一个else找上面最近的未曾配对的if。
从下到上确定每个从属于if和else的语句,找到一条圈出一条,直到将整个if—else语句都圈起来。强调每个if或else下面只有一条语句,当然可以是任意类型的语句。
根据分析结果运行程序段。

三、表达式的分析与计算

表达式是C语言的一大特色,功能极其强大,在一个C程序中,除了关键字和声明就是表达式,所有操作都是由表达式来完成的,所以C语言又被称为表达式语言。
在教学中表达式是一个重点,也是学生的难点,对运算顺序的描述也不易做到准确。比如,表达式3+2—2*3,按教材上对优先级和结合性的定义,我们应该先算2*3=6,然后计算3+2=5,最后算5—6=—1,然而一般的编译系统是用堆栈来进行表达式翻译的,编译系统得到的最终的计算序列是3+2=5,2*3=6,5—6=—1。对于这个表达式来说两个计算序列并没有什么区别,但对于有些表达式,按定义计算将得到错误的结果,比如:int a=1;计算表达式(3<4)&&(a=3)的值,按照运算顺序的定义,应先算括号里面的,即先算3<4和a=3,因为3<4的值为0,所以表达式的值为0,因为执行了a=3的操作,所以表达式执行之后,a的值为3。实际的执行情况跟这个过程不同,先计算3<4,因为值为0,所以可以断定整个表达式的值为0,&&的右操作数a=3就不再进行计算了,这样a的值仍然为1。这种情况还出现在条件表达式中,这里不再赘述。
根据堆栈处理的特点,可以把对表达式的计算分为表达式分析和表达式计算两步。表达式分析就是,源于:论文怎么写www.7ctime.com
根据运算符的优先级和结合性,确定操作数与哪个操作符相结合,(优先级高的运算符比优先级低的运算符要优先获得操作数,如果操作数左右两边运算符的优先级不相同,操作数就归优先级高的运算符所有,若优先级相同且运算符为左结合则操作数归左边的操作符所有,反之则归右边的操作符所有,这样看来优先级和结合性在本质上是同一概念,主要目的就是用统一的方法解决操作数归属问题,得到一个无二义性的表达式计算序列,而并非教材上所说的先算后算),用括号将操作符和归它所有的操作数括起来,视为一个整体,一个新的操作数,继续参与表达式的分析,直至整个表达式都被括号括起来,这实质上得到了一个计算序列,对应于编译系统翻译源代码之后得到的机器指令序列。表达式计算是指,按照分析的结果从左到右计算表达式的值,如果某个操作数是一个用括号括起来的表达式,则先计算这个表达式,得到其值之后再继续计算,这个过程相当于机器指令在计算机上的执行。

四、循环程序的分析

循环结构是程序设计当中最难掌握的结构,也是最容易出错的地方,原因就在于每次循环的执行过程中,都会修改相关变量的值,一次循环出错,则整个都错了,修改的变量越多,出错的可能性就越大。
为了避免上述错误在分析循环结构的程序段时,采用列表的方法,跟踪相关变量的变化过程。执行循环体,如果有语句改变了某变量的值,则将变化后的值记录到表格中相应变量的下面,一次循环记一行,并在行首写上当前的循环次数。这样,每一行记录就是文该次循环之后,各变量的值。

五、数列求和

在编程中经常遇到对数列求和的程序,不同的数列有不同的算法,因为算法的复杂性,循环体中稍有不慎,就会导致错误的结果。根据“分而治之”的思想,可以得到如下统一的方法,分解问题的复杂性,解决所有的数列求和问题。
参考文献:
谭浩强.C程序设计.清华大学出版社
陆丽娜.软件工程.经济科学出版社
[3]严蔚敏.吴伟民.数据结构.清华大学出版社