2013-10-12 66 views
0

我有以下問題。Algol60傳遞數組的整數元素作爲參數 - 錯誤類型錯誤

當我嘗試運行與阿倫file.obj代碼(我與algol.exe文件編譯)

BEGIN 

    INTEGER PROCEDURE fun(tab,index,lower,upper); 
     INTEGER tab,index,lower,upper; 
    BEGIN 
     INTEGER t; 
     text (1, "Start"); 
     t := 0; 

     FOR index := lower STEP 1 UNTIL upper DO 
      t := t + tab; 

     fun := t; 

    END; 

    INTEGER ARRAY t[1:10]; 
    INTEGER i,result,lower,upper; 

    lower := 1; 
    upper := 10; 

    FOR i := 1 STEP 1 UNTIL 10 DO 
     t[i] := i; 

    i := 1; 

    result := fun(t[i],i,lower,upper); 
END FINISH; 

我仍然得到錯誤:

ERROR 3 
ADD PBASE PROC LOC 
07D4 0886 1 13 
083A 0842 0 115 

我使用的編譯器是RHA(Minisystems)Ltd.的「Rogalgol Algol60」產品。

錯誤3意味着「3過程被稱爲實際參數類型和形式參數類型不匹配」。

但我不明白爲什麼。錯誤的原因是t [我](如果我改變爲我 - 它沒問題)。

有人知道我在做什麼錯嗎?

我編譯的DOSBox中(Linux)的代碼

回答

1

問題是,你傳遞給你的程序的整數數組的索引是不一樣的整數,他預期。我不記得什麼是一個整數數組,但我想它不是整數......不得不承認我從來不使用它們,但不記得原因。可能是因爲這樣的限制。我堅持真正的陣列和EBCDIC的。

你幾乎可以肯定地通過定義一個新的整數j來修復它;插入「j:= t [i];」在調用'fun'之前;然後用'j'而不是t [i]調用'fun'。

順便說一句,你可能想讓數組(和'for'循環)爲零相對。 ALGOL大部分是零相對的,我認爲如果你遵循這個流程,它可以節省內存。

讓我知道,如果這有助於....

+0

對不起了很長的響應時間,但我有困難的時候;)是的,當然它的工作原理,但也許我沒有說什麼,我的意思做。我想做Jensen的設備。此代碼(幾乎沒有變化 - 可以打印的其他功能)適用於[NASE A60](http://www.bertnase.de/a60/)。我想知道,如果它只是執行或錯誤的區別。 – tpsa

相關問題