我是初学者并使用帕斯卡。我不知道如何对输出进行编码。我希望输出是函数的结果



我是一个初学者,正在使用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中编写了这个答案的代码,这是FreePascal(又名FPC)的IDE,是目前可用的最好的免费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;

有了这样的改变,很明显代码的逻辑,因为ab被声明为ayam函数,但您的代码实际上通过函数内部的readln语句。这就是为什么我认为你认为您已经完成了编写程序所需的所有操作。事实上,你没有。你缺少什么是以某种方式设置输入参数ab(以及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

是CCD_ 16应该对CCD_ 17的值进行运算还是对包括CCD_;如果是这样,括号可以通过编写来强制执行您需要的评估顺序

ayam:= (a * ayam(a, b-1, m)) mod m

最新更新