Ada中未定义的过程

时间:2012-10-16 20:49:53

标签: ada

当我编写我正在编写的这个Ada程序时,我完全难以理解为什么我会收到一个未定义的错误。我已经查看过它了...没有拼写错误或任何性质的东西。这就是我所拥有的,然后是我得到的错误。

Get_Score(CandidateVotes, CurrentCandidate);
                end loop;
        end Get_Input;

procedure Get_Score(CandVotes: in CurrentCandidate_Votes; 
            Candidate: in Character) is
-- get the score for the candidate and store it into CandidatesArray
            SameAnswers: Integer;
            DifferentAnswers: Integer;
            CandidateScore: Integer;
    begin
            for I in VoterArray_Index loop
                    if Voter(I) /= 0 And CandVotes(I) /= 0 Then
                            if Voter(I) /= CandVotes(I) Then
                                    DifferentAnswers := DifferentAnswers + 1;
                            else
                                    SameAnswers := SameAnswers + 1;
                            end if;
                    end if;
            end loop;
            CandidateScore := SameAnswers - DifferentAnswers;
            Candidates(Candidate) := CandidateScore;

    end Get_Score;

代码块的顶部是我从另一个过程调用Get_Score过程的地方。 CandidateVotes和CurrentCandidate的类型是正确的。如果我发帖更多,请告诉我。

此外,错误如下:candidates.adb:37:25:“Get_Score”未定义

1 个答案:

答案 0 :(得分:4)

您需要在使用之前定义Get_Score

懒惰的方法是重新排序代码,以便子程序体以适当的顺序排列。

Ada的方法是首先编写子程序规范(以你喜欢的顺序),然​​后以你喜欢的顺序再次实现这些实体。

Get_Score的规格是

procedure Get_Score(CandVotes: in CurrentCandidate_Votes; 
                    Candidate: in Character);

顺便说一下,当你写

DifferentAnswers: Integer;

您认为DifferentAnswers会以什么价值开始?