Vecteurs non contraints & paramètres formels
!On utilise des vecteurs non contraints comme paramètresformels dans une déclaration de sous-programme (procédure ou fonction)
∀! c’est une facilité d’écriture pour désigner des valeurs (paramètres « donnés ») ou des variables (paramètres « résultats »)
!En effet …
∀! la déclaration d’une procédure ou d’une variable n’entraîne pas de réservation de mémoire pour les paramètres.
!Cela permet au programmeur de définir des paramètresvecteurs non contraints par leurs indices, autrement dit des vecteurs dont le nombre d’éléments peut être variable selon les appels.
Déclaration d’un type vecteur
!Dans la déclaration d’un type vecteur (array), onpeut
∀! contraindre ou non l’intervalle des indices (range), autrement dit la borne inférieure et la borne supérieure
!Rappel : letype des indicespeut être tout (sous-)
type discret : Integer, Character, type énuméré.
Ce type ne peut pas être Float ou un sous-type de Float
!Nous conviendrons de faire précéder tout nom detype vecteur par le préfixe TV_
Exemples de déclarations
!Types de vecteurs non contraints
type TV_Suite is array (Integer range <>) of Float ;
type TV_Indicateurs is array (Natural range <>) of Boolean ;
type String is array (Positive range <>) of Character ;
— prédéfini
∀! Le symbole <> indique que l’intervalle des indices n’est pas contraint, c’est-à-dire quelconque dans l’intervalle d’indices du sous-type Positive ou Natural
!Types de vecteurs contraints
type TV_Mesures is array (101..200) of Float ;
type TV_Ligne is array (0..79) of Character ;
type T_Jour is
(Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche) ;
type TV_Semaine is array (T_Jour) of Boolean ;
!Sous-types de vecteurs contraints dérivés detypes vecteur non contraint
–type TV_Suite is array (Integer range <>) of Float ; subtype TV_Echantillonnage is TV_Suite(1..365) ;
–type String is array (Positive range <>) of Character; subtype TV_Spécial is String(128..255) ;
subtype TV_Truc is String(0..9) ;
— Incorrect car 0 n’est pas du type Positive
–type TV_Semaine is array (T_Jour) of Boolean;
subtype TV_WeekEnd is TV_Semaine(Samedi..Dimanche) ;
