我是Pascal的新手,我试图编写一个简单的程序,但在函数之间传递值时遇到了问题。这是一小片我有什么: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语句。谢谢你的时间。
无法从此代码中看到,但与问题无关。 PS测试1至4999之外的功能,在里面做,然后问另一个,如果不是非常非常非常糟糕。函数应该做一件事。 – 2012-04-10 23:07:04
@Tony这就是我最终做的,创建一个辅助方法来测试,解决了这个问题。 – gestalt 2012-04-10 23:15:17
有意义的是,破坏了一段代码,它将太多东西融入到单一目的函数中,通常会揭示实现中的错误和弱点。成为一种习惯,它会很好地支持你。如果stuuf可以通过内联进行优化,编译器会为您做到这一点。总是先去理解。 – 2012-04-11 11:24:14