Genius是一个计算器程序,具有命令行版本和GNOME GUI版本。 它应该在您的发行版的软件包管理系统中可用。 对于基于Debian的发行版,GUI版本和命令行版本是两个单独的软件包。 假设要同时安装这两种软件,则可以使用以下命令进行安装:
[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install genius gnome-genius
如果使用Ubuntu,请注意gnome-genius软件包似乎不在Bionic中。 它处于早期版本(trusty, xenial 和 arty),并且似乎处于下一版本(cosmic)。 如果要在Ubuntu 18.04中安装,用其他方法,特地跟你说下,以免使您感到烦恼。
启动命令行版本提供了一个Python或R用户应该熟悉的解释器。
图1、启动Genius命令行时,您会看到版本和一些许可证信息,然后您将看到解释器提示。
如果您启动gnome-genius,您将看到一个图形界面,对于新用户来说可能更舒适。 在本文的其余部分中,我将使用GUI版本来演示您可以使用Genius进行的一些操作。
图2. GUI界面可让您轻松访问Genius中的大多数功能。
您可以将Genius用作通用计算器,因此可以执行以下操作:
genius> 7+9
= 16
除了基本的数学运算符,您还可以使用三角函数。 此命令给出60度正弦:
genius> sin(60)
= -0.304810621102
这些类型的计算基本上可以是任意大小的。您还可以使用开箱即用的复数。还有许多其他的标准数学函数,包括对数、统计、组合、甚至微积分函数。
除了函数之外,Genius还提供了控制结构,比如条件语句和循环结构。例如,下面的代码为您提供了一个基本的For循环,它打印出前60度的正弦值:
genius> for i = 1 to 60 do (
> x = sin(i);
> print(x)
> )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
0.656986598719
如您所见,语法几乎类似于C。 乍一看,看起来分号被用作行尾字符,但实际上它是命令分隔符。 这就是为什么在正弦函数行上没有分号,而在带有打印函数行上没有分号的原因。 这意味着您可以编写如下的for循环:
genius> for i = 1 to 60 do ( m = sin(i); print(m) )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
除了for循环外,还有while循环,until循环,do-while循环,do-until循环和foreach循环。 您还可以使用break和continue命令控制是否弹出循环。 它们的行为与使用C之类的语言时的行为相同。Genius中的条件结构是非常基本的if结构,因此基本的if-then语句如下所示:
if (i==6) then (i=i-1)
您还可以使用else语句:
if (b>0) then (b=b-1) else (b=0)
Genius没有elseif声明。
你可以在任何你想放表达式的地方使用条件句,这意味着你可以使用if结构来设置一个变量值:
x = (if i>0 then i else 1)
如刚才看到的那样,这里我没有使用括号。您只需要在可能混淆操作顺序的情况下使用它们。
到目前为止,我已经介绍了命令,变量,条件和循环结构。 Genius还声称它使用一种称为GEL的编程语言。 编程语言应具有最后一种结构,即将代码组织成可重用的块的能力。 而且,当然,GEL具有让最终用户定义自己的函数的能力。 函数定义的基本语法如下所示:
function <identifier>(<comma separated arguments>) =
↪<function body>
作为一个非常简单的示例,以下代码定义了一个cubing函数:
genius> function linuxidc_cube(x) = a*a*a
= (`(x)=((a*a)*a))
然后,您可以像使用其他任何函数一样使用它:
genius> genius> linuxidc_cube(3) = 27
Lvalue not an identifier/dereference/matrix location!
= ((genius>linuxidc_cube(3))=27)
有时,您可能需要能够处理函数的输入参数的可变列表。 在这些情况下,您定义的函数的最后一个参数为“ ...”。 看起来如下:
function linuxidc_func(a, b, c...) = <function body>
在这种情况下,输入参数将作为值的向量传递给函数主体。