从经典案例看C语言和Maple的编程异同

2018-08-28 06:50王慧蓉
长治学院学报 2018年2期
关键词:素数C语言语句

王慧蓉

(长治学院 数学系,山西 长治 046011)

1 C语言与Maple

C语言是目前世界上使用最广泛,最流行的计算机编程软件之一,在计算机中的应用具有很多方面的特点,主要表现在对文字和数据进行有效表达、变量的灵活设置、完善的内存储器、对关键环节的有效处理等方面。

Maple被称为当今世界最流行的符号软件之一,它具有强大的交互式工程数学计算功能,具有很强的数据可视化功能,其丰富的函数包能满足用户在各方面的需求。它既是计算软件还是一种值得推广和被高校学生深入学习并运用于实践的计算机编程软件,是一款全方位的数学软件。

2 从经典的算法案例看C语言与Maple

2.1 判断素数问题

判断101——200之间有多少个素数,并输出所有素数。

在C语言中的源程序为:

在Maple中的程序为:

判断一个数是否是素数,两种软件采用的思想都是用一个数去除以2,如果能被2整除则表明这个数是素数,反之不是,并且两者都采用for循环来进行编程。Maple中的for循环很接近于英语语法,循环体可以是空语句,一条语句或者多条语句,循环体结束的标志也就是整个for循环结束的标志。在循环中初始值和终止值必须是数值型的,也必须是实数。C语言中的for语句是功能强大的构成“当型”循环结构的循环语句,编程不受循环次数是否明确的影响,当然循环结束的条件应该明确。

2.2 用辗转相除法求两个数的最大公约数问题

在C语言中的源程序为:

C语言中运用了if判断语句和do while判断语句相结合的方式来解决这一问题。首先用if语句对给定的两个数进行大小判断,决定辗转相除法开始时的顺序问题,首先使用while循环语句进行判断,接着使用do while循环语句,先执行一次循环体语句,然后计算表达式的值。当q的结果不是0时就一直循环,直到q等于0循环结束,此时程序跳转到下一语句。Maple中使用的是while循环体,首先判断条件是否为真,若条件为真就执行循环,直到条件不成立循环结束,它的特点是在未知循环次数的情况下可以一直执行循环。两者一个是先执行后判断,一个是先判断后执行,使用的都是直到型循环,但是却在语句的选择和使用上有很大不同。

2.3 古典兔子问题

饲养一对兔子,从出生后第三个月起这对兔子每个月都繁殖一对兔子,新生的兔子长到第三个月后也每个月都繁殖一对兔子,假如兔子都不死,以此类推下去,问每个月的兔子总数为多少?

在C语言中,程序源代码为:

在Maple中程序为:

这是非常有名的Fibonacci数列,兔子的规律为数列:1,1,2,3,5,8,13,21...在C语言与Maple软件中求解的编程过程,我们看到为了解决这个问题在C语言中用到了for的当型循环语句,运用递归的原理,符合条件即循环,i以自增的方式赋新值,每循环一次就打印两个月的数字,循环两次就换行,造成了控制每行输出四个的结果,循环过程一目了然,简单易懂。但是也容易发现,在这个程序中,要求数值的取值不能太大,这就局限了程序的应用。但是当我们看到Maple语句时发现,似乎语句更简洁,在Maple中,我们使用了if,else条件语句来实现递归,只需要将读到的的条件依次输入即可得到结果,设置了两种条件语句,符合哪一种即执行哪一种,并且由于option remember的设定,在Maple中可以进行大数据的执行,不仅简洁而且更实用。综上我们发现在程序编写复杂程度没有很大区别的情况下,Maple却可以进行大数据的处理,更为快捷。

3 C语言Maple的异同

与C语言相同,Maple的过程体也是由赋值语句、条件语句、循环语句组成的,其条件语句也可以进行嵌套;同样的Maple软件也提供了for循环和while循环两种循环语句。编写Maple程序实际上是比较简单的,Maple系统中含有数以千计的命令,其中百分之八十自身就是Maple程序,语言的可交互性大大方便了程序的设计与修改,提高了运行效率。

在C语言和Maple软件的编程中我们还常常会用到递归思想,递归通常使用在函数的调用上。实现递归调用应该满足以下三个条件:(1)要解决的问题可以拆分为几个小的问题,但并不因为分解而改变解法,只是计算过程变成了有规律的递进和返回,这就达到了递归的条件;(2)在符合(1)的条件下继续将原问题分解下去,直到最终分解出来一个已知解的问题,然后开始层层返回,从而达到解决原问题的目的,整体实现了递归;(3)如果不加条件,递归算法是无止境的,为此一定要有一个明确结束递归的条件。

Maple程序之所以更为简短、运行效率更高,是因为它具有语言的可交互性且含有丰富的功能强大的命令,可以将一些复杂的编码的任务简化为一个简单的命令。

综上所述两种语言其实是可以相互转化的,在很多问题的解决上,两种语言的出发点都是一致的,分析问题的想法也都一致,经常选用同样的程序语言进行编程,虽然在复杂程度上有时会有很大差别,但其在本质上是相同的。

总而言之,C语言和Maple在解决经典算法的问题上既有区别又有联系,它们都能很好的解决实际问题,都是强大的编程软件。我们不能一概而论的说哪一种软件更加有优势,只能说在遇到实际问题时应该酌情考虑优先使用哪一种软件可以使编程更加简洁明了,更加具有可读性。

猜你喜欢
素数C语言语句
两个素数平方、四个素数立方和2的整数幂
有关殆素数的二元丢番图不等式
重点:语句衔接
基于Visual Studio Code的C语言程序设计实践教学探索
关于两个素数和一个素数κ次幂的丢番图不等式
关于素数简化剩余系构造的几个问题
51单片机C语言入门方法
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
如何搞定语句衔接题