2015-12-02 62 views
0

我刚刚发现了一本描述与我需要做的事情非常相似的过程的书。然而,这本书从1972年开始就在ALGOL中展示了解决方案,而我需要用更新的语言编写我的代码。我试图找出如果我理解正确的是什么在我面前的ALGOL代码是这样做的:来自ALGOL的“翻译”

  1. 我说得对下面的代码,

    SL:= FF;

,简单地分配一个值,例如,sl = ff;声明将在SAS中完成?

  1. ↑字符是否意味着“提高到”的力量?

  2. 什么是“realprocedure”?它是FORTRAN中的子程序还是SAS中的模块的ALGOL等效物?

  3. 在前面的代码中,我读到a是一个数组。我是正确的,那么,下面的代码,

    for i: 1 step 1 until m do 
    
    begin a[i]:=0; 
    
        for j:=1 step 1 until m do 
    
        a[i] :=a[i] + ww[j] x slope; 
    
        a[i]:=1/a[j]; 
    

填充矩阵一个,其中是行号,Ĵ是列号,和是(显然)i * j

+1

这是文件威德曼的论文? –

回答

1
  1. 是的, “:=” 的值分配给变量

  2. 是的, “提高到电源”

  3. “realprocedure” 字符 “^” 的意思是,我想是“真正的程序”。这意味着一个返回实际价值的过程。

  4. 在Algol中有代码块。每个块以“开始”开始并以“结束”结束。如果你省略了开始单词,那么该块只有一条指令。 你的代码不清楚。

1

我同意相邻注释1至3

上面给出的代码是在几个方面的异常。我怀疑有转录错误。

首先,'开始''结束'配对不完整。

在Algol中,'开始。 。 。结束“对是一个复合语句,或者,如果里面也有声明,那么它就是一个块。

在这段代码中,'for i:= 1 step 1直到m do'开始像'begin'的复合语句,但没有匹配的'end'是可见的。如果我们假设'end'出现在下一个标记中,那么这将完成由'for i:= ...'子句控制的复合语句。所有这个复合语句将重复m次,包含从1到m的连续值。

第二个异常是由'for j:= ...'控制的第二个循环仅附加到下一个单独语句(直到';'),并将相同的值集合汇总到每个语句[i],然后用1/a [j]覆盖! (我假设'斜率'是一个标量变量而不是无参数函数,因此它在每次执行时都提供相同的值。)

第三,在Algol中,对任何假设做出任何假设都不是一个好主意循环结束后,for循环中控制变量的值。在许多Algol实现中,在这里,将留下包含m + 1。因此,从[1]到a [m]的所有元素将包含1/a [m + 1]。如果[m + 1]包含零或者a被声明为“实数a [1:m];这可能会失败'除以零';'那么它可能会因'无效索引'失败。

如果这里有一个抄写错误,我们假设最后的语句应该已经阅读A [1]:= 1/A [1],所有的计算和存储在[1] ...一[M值]仍然是一样的,并且有更快的编码方式!

我希望这长篇大论(超过我所希望的)是有帮助的。