문제

나는 Java/C ++에서 Ada로오고 있으며 작은 물건을 알아내는 데 어려움을 겪고 있습니다. 배열을 선언하고 사용자에게 최소/최대 값을 요청한 다음 초기화 할 수 있습니까? 나는 최소와 최대의 일정한 값을 정의하는 것을 좋아하지 않으며이를 수행하는 방법이 있어야합니다.

구속되지 않은 유형을 정의 할 수 있지만 프로그램이 시작되기 전에 선언 블록의 크기를 초기화해야합니다. 패키지 본문, 프로 시저 선언이 필요합니까? 그런 다음 다음과 같이 실제로 작업하는 절차 내부의 선언 블록이 필요합니까?

PACKAGE BODY Build_Graph IS
    TYPE Graph_Box IS ARRAY(Integer RANGE <>, Integer RANGE <>) of Character;

    PROCEDURE Print_Graph(Min, Max, Height, Width: IN Integer) IS
    BEGIN
        DECLARE
            Graph: Graph_Box(0..Height, 0..Width);
        BEGIN
            Do_Stuf(Graph);
        END;
    END Print_Graph;

END Build_Graph;
도움이 되었습니까?

해결책

당신이 보여주는 것은 작동해야합니다. 그러나 "선언"블록은 배열 변수 선언 또는 무언가에 대한 범위 예외를 포착하지 않는 한 완전히 통합적입니다. 나는 그것을 읽을 수 있도록 변경했다 :

procedure Print_Graph(Min, Max, Height, Width: in Integer) is
    Graph: Graph_Box(0..Height, 0..Width);
begin
    Do_Stuf(Graph);
end Print_Graph;

(나는 또한 캡에 예약 된 단어가있는 것을 싫어합니다.)


내가 언급해야 할 또 하나의 것 : Ada 어레이는 가지다 CISH 언어처럼 0 기반입니다. 그들 ~할 수 있다 BE, 그러나 당신은 또한 그들이 1, -200에서 시작하거나 원하는 것을 시작할 수 있습니다.

내가 이것을 가져 오는 이유는 당신이 그래프 _box를 정의하는 방식을 보았 기 때문입니다. 나중에 누군가를 혼동 할 책임이 있기 때문에 당신은 아마 그것을 원하지 않을 것입니다.

내 전형적인 관용구는 배열 지수를 1로 시작하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top