ADA: Accès aux éléments d'un tableau en param
zebi331
Messages postés
78
Statut
Membre
-
zebi331 Messages postés 78 Statut Membre -
zebi331 Messages postés 78 Statut Membre -
Bonjour,
Voilà, je débute en ADA. J'ai créé un tableau à deux dimensions et je souhaiterai le passer en paramètre d'une procédure pour initialiser les champs. Mais à la compilation, j'obtiens l'erreur suivante : assignment to 'IN' mode parameter not allowed. D'après ce que j'ai compris, on ne peut pas accéder aux éléments d'un tableau qu'on a passé en paramètre. Mais comment faire alors ?
Je vous mets ci-dessous le code correspondant. Merci de bien vouloir m'aider.
Voilà, je débute en ADA. J'ai créé un tableau à deux dimensions et je souhaiterai le passer en paramètre d'une procédure pour initialiser les champs. Mais à la compilation, j'obtiens l'erreur suivante : assignment to 'IN' mode parameter not allowed. D'après ce que j'ai compris, on ne peut pas accéder aux éléments d'un tableau qu'on a passé en paramètre. Mais comment faire alors ?
Je vous mets ci-dessous le code correspondant. Merci de bien vouloir m'aider.
WITH Ada.Text_IO;
PROCEDURE Puissance_4 IS
PACKAGE Txt RENAMES Ada.Text_IO;
TYPE Pion IS (X, O, Vide);
TYPE Carre IS RECORD
Est_Occupe : Boolean;
Un_Pion : Pion;
END RECORD;
------------------------------------------------------------------------
-- CI-DESSOUS Y'A LE TYPE DU TABLEAU QUE J'AI DEFINI
---------------------------------------------------------------------------
TYPE Grille IS ARRAY(Integer RANGE<>, Integer RANGE<>) OF Carre;
FUNCTION Initialiser_Grille RETURN Grille IS
L : Integer;
C : Integer;
Une_Grille : Grille(1..10, 1..10);
BEGIN
FOR L IN Une_Grille'RANGE(1) LOOP
FOR C IN Une_Grille'RANGE(2) LOOP
Une_Grille(L, C).Est_Occupe := False;
Une_Grille(L, C).Un_Pion := Vide;
END LOOP;
END LOOP;
RETURN Une_Grille;
END Initialiser_Grille;
--------------------------------------------------------------------
-- CI-DESSOUS MON INSTANCE DE GRILLE
-----------------------------------------------------------
Une_Grille : Grille(1..10, 1..10);
---------------------------------------------------------------------------
-- CI-DESSOUS LA PROCEDURE QUI POSE PROBLEME
------------------------------------------------------------------------
PROCEDURE Placer_Pion (Une_Grille : Grille; Un_Pion : Pion; Une_Colonne : Integer) IS
BEGIN
Une_Grille(10, Une_Colonne).Un_Pion := Un_Pion;
Une_Grille(10, Une_Colonne).Est_Occupe := True;
END Placer_Pion;
BEGIN
Une_Grille := Initialiser_Grille;
Placer_Pion(Une_Grille, X, 1);
END Puissance_4;