帕斯卡尔是否支持参数传递到函数?(Does Pascal support passing param

2019-09-16 11:44发布

我是新来的Pascal和我想写一个简单的程序,而是一个有麻烦传递函数之间的值。 这是一小片我有什么:

program numberConverter;

const
    maxValue = 4999;
    minValue = 1;

var num: integer;

function convertNumeral(number: integer):string;
var j: integer;
begin
if ((number < minValue) OR (number > maxValue)) then
    begin
    writeln(number);
    writeln('The number you enter must be between 1 and 4999. Please try again:');
    read(j);
    convertNumeral := convertNumeral(j);
    end
else 
 if (number >= 1000) then
convertNumeral := 'M' + convertNumeral(number -1000)
{more code here, left it out for space}
end;

begin
    writeln;
    writeln('Enter an integer between 1 and 4999 to be converted:');
    read(num);
    writeln;
    writeln(num);
    writeln(convertNumeral(num));
end.

我的问题是,从writeln(converNumeral(NUM)),主要是“民”,该值不会被传递到convertNumeral功能,想知道是否帕斯卡尔甚至做到这一点。 我想它,因为我还没有宣布数是一个变量,但是当我做,我得到一个编译错误,它不能完成第二if语句。 谢谢你的时间。

Answer 1:

是的,绝对价值得到传递给函数。 我承诺, num确实被传递到convertNumeral 。 在该函数, number获得任何值驻留在num 。 也许有一个与你如何观察你的程序的行为问题。

你做出的更改number ,如果有的话,将不会反映在num 。 该参数是由值来传递,所以number存储在上述值的副本 num ; 他们是两个不同的变量。 您可以使用var按引用传递参数,如果这就是你想要的。

每个递归调用convertNumeral得到的实例number ,所以所做的更改number ,如果有的话,就不会出现一次函数返回给调用者。 每个电话都有自己的版本numberj



文章来源: Does Pascal support passing parameters to functions?