-- Remarques :
-- 1) - le type T_TskCoucou est un type non contraint
(il n'y a pas de
-- valeur par défaut)
=> il ne peut plus être utilisé tel quel.
-- 2) - noter l'utilisation du discriminant d'un article
pour instancier
-- le discriminant d'une
tâche incluse dans l'article ...
-- 3) - le type tâche est un type limited =>
un article dont un champ est
-- une tâche est
d'un type limited => affectation interdite.
-- 4) - on remarque l'imbrication des affichages des
différentes tâches
-- qui se déroulent
en parallèle
with Ada.Text_Io;
use Ada.Text_Io;
procedure Essai06 is
task type T_TskCoucou (Nbre : Positive);
package P_Entier is new Ada.Text_Io.Integer_Io (Positive);
use P_Entier;
task body T_TskCoucou is
begin -- T_TskCoucou
for I in 1..Nbre loop
Put
(" La tache ");
Put
(Nbre, 2);
Put_Line (" vous
dit Coucou");
delay 1.0;
end loop;
end T_TskCoucou;
type T_Record (Discri : Integer) is record
I : Integer := 3;
-- T : T_TskCoucou;
-- erreur de compilation :
-- "unconstrained subtype in component
-- declaration".
-- T : T_TskCoucou (I); -- erreur
de compilation :
-- "component "I" cannot be used before end
-- of record declaration"
T : T_TskCoucou (Discri);
end record;
R1, R2 : T_Record (2);
begin -- Essai06
-- R2 := R1; -- erreur de compilation :
-- "left hand assignment must be not limited type"
Put (" R2.I = ");
Put (R2.I, 2);
New_Line;
Put_Line (" Tache cadre achevee");
end Essai06;