我是初学者,使用的是 Pascal。我不知道如何编码输出。我期望输出是函数的结果
I am a beginner and using pascal. I don't know how to code the output. I am expecting the output to be the result of the function
我是一个初学者,正在使用 pascal,我正在尝试附加的这个问题。接下来我该怎么办?我试图通过显示“ayam”函数来使这个程序工作。但我不知道如何编码其余部分。
function ayam(a, b:integer) :
integer;
var
m: integer;
begin
readln(a) ;
readln(b) ;
readln(m) ;
begin
if (b=0) then
ayam:= 1 else
ayam:= a * ayam(a, b-1) mod m;
end;
writeln(ayam);
end;
我要说的第一件事是,当问题与课程作业有关时(这里显然就是这种情况),有一个不成文的约定,即我们不会写一个简单地为您完成编程任务的答案。因此,在下文中,我没有评论您的 ayam
函数中的代码是否真正正确地实现了所需的内容 - 这是您要做的。
其次,您没有说明您使用的是哪种 Pascal 实现。我已经在 Lazarus 中编写了这个答案的代码,IDE for FreePascal(又名 FPC),这是目前可用的最好的免费软件 Pascal 实现。
对你的代码做的第一件事就是按照它应该格式化的方式重新格式化它,
使用语句的缩进来反映你正在执行的步骤的结构
试图编码。基本上,您的眼睛应该能够遵循代码结构
尽可能容易。这给出了这样的东西:
function ayam(a, b:integer) : integer;
var
m: integer;
begin
readln(a) ;
readln(b) ;
readln(m) ;
begin
if (b=0) then
ayam:= 1
else
ayam:= a * ayam(a, b-1) mod m;
end;
writeln(ayam);
end;
进行了更改后,很明显存在问题
代码的逻辑,因为 a
和 b
被声明为输入变量
ayam
函数,但您的代码实际上通过
readln
语句 在 函数内。这就是让我认为你认为
您已经完成了编写程序所需的所有工作。事实上,你没有。你缺少什么
是一些代码,它以某种方式设置输入参数 a
和 b
(和 m
,见下文),然后
调用你的 ayam
函数来计算它的值,然后用
结果。目前,您的代码只是 定义 ayam
但不执行任何步骤
使用它。所以,为了让你的 ayam
函数做任何事情,你需要写一个完整的
使用它的 Pascal 程序。像这样:
program ayamprogram;
{ the following declares some variables for the program to use }
var
varA,
varB,
varM,
varResult : Integer;
{ next, we define the ayam function }
function ayam(a, b, m:integer) : integer;
begin
begin
if (b=0) then
ayam:= 1
else
ayam:= a * ayam(a, b-1, m) mod m;
end;
end;
{ now we write the code of the program, which reads in the values to be
used by ayam, then invokes ("calls") ayam to calculate its value and
assign its value to the varResult variable and then outputs the calculated
result using the writeln statement
}
begin
{ this is the code of the program }
readln(varA);
readln(varB);
readln(varM);
varResult := ayam(varA, varB, varM);
writeln('function ayam evaluates to ', varResult);
readln; { this causes the program to pause so you can see the result of the writeln statement }
end. { end of program }
请注意,我为提供给 ayam
、varA、varB、varM 的变量使用了与 ayam
中使用的变量名称不同的变量名称,以避免它们之间的混淆。
另请注意,由于在执行函数内读取用户输入是不好的做法,因此在调用 ayam
之前读取用于 M 的值,并将其提供给 ayam
作为第三个参数。
关于表达式需要考虑的一点
ayam:= a * ayam(a, b-1, m) mod m
是 mod m
是否应该对 ayam(a, b-1, m)
的值或包括 a *
在内的整个表达式进行操作;如果是这样,括号可以通过编写
来强制执行您需要的评估顺序
ayam:= (a * ayam(a, b-1, m)) mod m
我是一个初学者,正在使用 pascal,我正在尝试附加的这个问题。接下来我该怎么办?我试图通过显示“ayam”函数来使这个程序工作。但我不知道如何编码其余部分。
function ayam(a, b:integer) :
integer;
var
m: integer;
begin
readln(a) ;
readln(b) ;
readln(m) ;
begin
if (b=0) then
ayam:= 1 else
ayam:= a * ayam(a, b-1) mod m;
end;
writeln(ayam);
end;
我要说的第一件事是,当问题与课程作业有关时(这里显然就是这种情况),有一个不成文的约定,即我们不会写一个简单地为您完成编程任务的答案。因此,在下文中,我没有评论您的 ayam
函数中的代码是否真正正确地实现了所需的内容 - 这是您要做的。
其次,您没有说明您使用的是哪种 Pascal 实现。我已经在 Lazarus 中编写了这个答案的代码,IDE for FreePascal(又名 FPC),这是目前可用的最好的免费软件 Pascal 实现。
对你的代码做的第一件事就是按照它应该格式化的方式重新格式化它, 使用语句的缩进来反映你正在执行的步骤的结构 试图编码。基本上,您的眼睛应该能够遵循代码结构 尽可能容易。这给出了这样的东西:
function ayam(a, b:integer) : integer;
var
m: integer;
begin
readln(a) ;
readln(b) ;
readln(m) ;
begin
if (b=0) then
ayam:= 1
else
ayam:= a * ayam(a, b-1) mod m;
end;
writeln(ayam);
end;
进行了更改后,很明显存在问题
代码的逻辑,因为 a
和 b
被声明为输入变量
ayam
函数,但您的代码实际上通过
readln
语句 在 函数内。这就是让我认为你认为
您已经完成了编写程序所需的所有工作。事实上,你没有。你缺少什么
是一些代码,它以某种方式设置输入参数 a
和 b
(和 m
,见下文),然后
调用你的 ayam
函数来计算它的值,然后用
结果。目前,您的代码只是 定义 ayam
但不执行任何步骤
使用它。所以,为了让你的 ayam
函数做任何事情,你需要写一个完整的
使用它的 Pascal 程序。像这样:
program ayamprogram;
{ the following declares some variables for the program to use }
var
varA,
varB,
varM,
varResult : Integer;
{ next, we define the ayam function }
function ayam(a, b, m:integer) : integer;
begin
begin
if (b=0) then
ayam:= 1
else
ayam:= a * ayam(a, b-1, m) mod m;
end;
end;
{ now we write the code of the program, which reads in the values to be
used by ayam, then invokes ("calls") ayam to calculate its value and
assign its value to the varResult variable and then outputs the calculated
result using the writeln statement
}
begin
{ this is the code of the program }
readln(varA);
readln(varB);
readln(varM);
varResult := ayam(varA, varB, varM);
writeln('function ayam evaluates to ', varResult);
readln; { this causes the program to pause so you can see the result of the writeln statement }
end. { end of program }
请注意,我为提供给 ayam
、varA、varB、varM 的变量使用了与 ayam
中使用的变量名称不同的变量名称,以避免它们之间的混淆。
另请注意,由于在执行函数内读取用户输入是不好的做法,因此在调用 ayam
之前读取用于 M 的值,并将其提供给 ayam
作为第三个参数。
关于表达式需要考虑的一点
ayam:= a * ayam(a, b-1, m) mod m
是 mod m
是否应该对 ayam(a, b-1, m)
的值或包括 a *
在内的整个表达式进行操作;如果是这样,括号可以通过编写
ayam:= (a * ayam(a, b-1, m)) mod m