Question

Je viens de Java / C ++ pour Ada et j'ai du mal à comprendre les petites choses. Est-il possible de déclarer un tableau et de demander à l'utilisateur les valeurs min / max, puis de l'initialiser? Je n'aime pas avoir à définir des valeurs constantes pour MIN et MAX et il semble qu'il devrait y avoir un moyen de le faire.

Vous pouvez définir un type sans contrainte, mais vous devez toujours initialiser la taille dans le bloc de déclaration avant le démarrage de votre programme. Aurais-je besoin du corps du package, puis de la déclaration de procédure, puis d'un bloc de déclaration à l'intérieur de la procédure qui effectue le travail, comme suit?

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;
Était-ce utile?

La solution

Ce que vous montrez là-bas devrait fonctionner. Cependant, le message "déclarer" block est totalement unececary, à moins que vous ne souhaitiez intercepter des exceptions de plage sur la déclaration de variable de tableau ou quelque chose de ce genre. Je le changerais pour lire:

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

(Je n'aime pas aussi avoir les mots réservés en majuscules.)

Une autre chose que je devrais mentionner: les tableaux Ada ne doivent pas être basés sur 0, comme dans les langues cish. Ils peuvent être, mais vous pouvez également les faire commencer à 1, ou -200, ou comme vous voulez.

La raison pour laquelle je soulève cette question est que je vois comment vous avez défini Graph_Box: hauteur + 1 éléments de hauteur et largeur + 1 éléments de largeur. Vous ne voulez probablement pas cela, car cela risquerait de confondre quelqu'un plus tard (peut-être même vous).

Mon idiome typique est de commencer mon index de tableau à 1, sauf si j'ai de bonnes raisons de ne pas le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top