我是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