1
爲什麼程序會影響循環?爲什麼程序會影響循環?
當我把Line
放在for
-loop中時,它使得它變得無窮無盡,我只能關閉控制檯窗口並丟失所有未保存的數據。
這裏是我的程序的完整代碼,並有評論(末)這點問題:
uses crt;
var
n, i :integer;
a, b, h, x, res :real;
function func_1(y :real) : real;
begin
func_1:= (y*y*y*y) * (1 + sin(y) * sin(y));
end;
function func_2(y :real) : real;
begin
func_2:= sin(y/2)/cos(y/2);
end;
function func_3(y :real) :real;
begin
func_3:= sin(y) * cos(y);
end;
procedure Line(sideSymbolLeft: char; usualSymbol: char;
divideSymbol: char; sideSymbolRight: char);
begin
write(char(sideSymbolLeft));
for i := 2 to 75 do
begin
write(char(usualSymbol));
if ((i mod 19) = 0) then
write(char(divideSymbol));
end;
writeln(char(sideSymbolRight));
end;
begin
clrscr;
a:= 0;
b:= 2 * pi;
n:= 7;
h:= (b - a)/n;
Line(char(201), char(205), char(205), char(187));
writeln(char(186),'Functions of one variable':50,char(186):28);
Line(char(204), char(205), char(203), char(185));
writeln(char(186),' Argument X ',char(186),' x^4*(1+sin^2(x)) ',
char(186),' tg(x/2) ',char(186),' sin(x)*cos(x) ',char(186));
for i:= 0 to n do (* calculating all Xs (arguments) *)
begin
x:= a + (i * h);
write(' ');
write(x:8:3);
res:= func_1(x);
write(' ');
write(res:8:3);
res:= func_2(x);
write(' ');
write(res:8:3);
res:= func_3(x);
write(' ');
writeln(res:8:3);
(* HERE IS THAT PROCEDURE *)
(* When I put it here, the loop becomes endless *)
(* and I have to close the console (and lose all unsaved data) *)
Line(char(204), char(205), char(203), char(185));
end;
readln;
end.
沒有什麼是跳出作爲一個明顯的問題,雖然我還沒有觸及帕斯卡爾年。你有沒有嘗試單步執行代碼?你在評論'Line'的身體時,是否仍然卡住? - 我在這裏生鏽了,如果你在程序定義的最後有這個分號? – asawyer