- Variables Locales
- Paramètres Formels
- Variables Statiques
- Variables Globales
- Variables d'Entrée
- Variables Externes
- Initialisation des Variables
- Portée de la Visibilité et Cycle de Vie des Variables
- Créer et Supprimer des Objets
Variables
Déclarer des Variables
Les variables doivent être déclarées avec d'être utilisées. Les noms uniques sont utiliser pour identifier les variables. Pour déclarer une variable, vous devez spécifier son type et un nom unique. La déclaratio d'une variable n'est pas une opération.
Les types simples sont :
- char, short, int, long, uchar, ushort, uint, ulong entiers ;
- color entier représentant une couleur RGB ;
- datetime date et heure, un entier non signé contenant le nombre de secondes depuis le 1er janvier 1970, 00h00 ;
- bool les valeurs booléennes true et false ;
- double nombres à virgule flottante à double précision ;
- float nombres à virgule flottante à simple précision ;
- string chaînes de caractères.
Exemples :
string szInfoBox;
|
Types complexes ou composés :
Les structures sont des types de données composés, construits en utilisant d'autres types.
struct MyTime
|
Vous ne pouvez pas déclarer de variables du type de la structure tant que vous n'avez pas déclaré la structure.
Un tableau est une suite indexée de données de même type :
int a[50]; // Tableau à 1 dimension de 50 entiers.
|
L'indice d'un tableau ne peut être qu'un entier. Il n'est pas possible d'avoir plus de 4 dimensions dans un tableau. L'indexation des éléments d'un tableau commence à 0. Le dernier élément d'un tableau à 1 dimension est à l'indice (taille du tableau)-1. Cela signifie que l'appel au dernier élément d'un tableau t fait de 50 entiers sera t[49]. C'est identique pour les tableaux à plusieurs dimensions : une dimension est indexée de 0 à la taille de la dimension -1. Le dernier élément d'un tableau à 2 dimension de l'exemple appraîtra sous la forme m[6][49].
Les tableaux statiques ne peuvent pas être représentés comme des séries temporelles (timeseries), c'est à dire que la fonction ArraySetAsSeries(), qui définit l'accès aux éléments du tableau de la fin vers le début, ne peut pas être appliquée. Si vous souhaitez donner accès à un tableau de la même façon que dans les timeseries, utilisez l'objet tableau dynamique.
Si une tentative d'accéder en dehors du tableau est faite, le système génèrera une erreur critique et le programme sera stoppé.
Méthodes intégrées pour travailler avec des tableaux #
Les fonctions de la section Fonctions sur les Tableaux peuvent être utilisées pour manipuler les tableaux, tout comme les fonctions intégrées :
Méthode |
Analogue à |
Description |
---|---|---|
void array.Fill(const scalar value, const int start_pos=0, const int count=-1); |
Remplit le tableau avec la valeur spécifiée |
|
void array.Free(); |
Libère le buffer du tableau et définit la taille de la dimension zéro sur 0 (zéro) |
|
int array.Resize(const int range0_size, const int reserve); int array.Resize(const int range_sizes[], const int reserve); |
Définit la nouvelle taille de la première dimension du tableau |
|
int array.Print(); |
Ecrit les valeurs du tableau de type simple dans le journal |
|
int array.Size(const int range=-1); |
Renvoie le nombre d'éléments dans le tableau entier (range=-1) ou dans la dimension de tableau spécifiée |
|
bool array.IsDynamic(); |
Vérifie si le tableau est dynamique |
|
bool array.IsIndicatorBuffer(); |
|
Vérifie si le tableau est un buffer d'indicateur |
bool array.IsSeries(); |
Vérifie si le tableau est une timeserie (série temporelle) |
|
bool array.AsSeries(); |
Vérifie la direction d'indexation du tableau |
|
bool array.AsSeries(const bool as_series); |
Définit le sens d'indexation dans le tableau |
|
int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt); |
Copie les valeurs du tableau dans un autre tableau |
|
int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt); |
Renvoie le résultat de la comparaison de deux tableaux de types simples ou de structures personnalisées |
|
int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt); |
Insère le nombre spécifié d'éléments du tableau source dans le tableau destination à partir de l'index spécifié |
|
int array.Remove(const int start_pos, const int count); |
Supprime le nombre spécifié d'éléments du tableau en commençant à l'index spécifié |
|
int array.Reverse(const int start_pos, const int count); |
Inverse le nombre spécifié d'éléments dans le tableau en commençant à l'index spécifié |
|
bool array.Swap(array& arr[]); |
Echange le contenu du tableau avec le contenu d'un autre tableau dynamique de même type |
|
void array.Sort(sort_function); |
Trie les tableaux numériques par la première dimension |
|
int array.Search(scalar value, search_function); |
Renvoie l'indice du premier élément détecté dans la première dimension du tableau |
|
int array.Find((scalar value, search_function); |
|
Effectue une recherche dans le tableau à l'aide de la fonction passée et renvoie l'index du premier élément détecté |
array array.Select(scalar value, search_function); |
|
Performs a search in the array using the passed function and returns the array with all detected elements |
Spécificateurs d'Accès
Les spécificateurs d'accès définissent comment le compilateur peut accéder aux variables, aux membres des structures ou des classes.
Le spécificateur const déclare une variable comme constante et ne permet pas de changer cette pendant l'exécution. Une initialisation simple d'une variable est autorisée lors de sa déclaration.
Exemple :
int OnCalculate (const int rates_total, // taille du tableau price[]
|
Pour accéder aux membres des structures et des classes, utilisez les qualificateurs suivants :
- public permet un accès non restreint à la variable ou à la méthode de la classe
- protected permet l'accès depuis les méthodes de cette classe ainsi que depuis les méthodes des classes héritées publiquement. Tout autre accès est impossible ;
- private permet l'accès aux variables et aux méthodes de la classe seulement depuis les méthodes de la même classe.
- virtual ne s'applique qu'aux méthodes de classe (mais pas aux méthodes de structure) et indique au compilateur que cette méthode doit être placée dans la table des fonctions virtuelles de la classe.
Classes de Stockage
Il existe 3 types de classes de sotckage : static, input et extern. Ces modificateurs d'une classe de stockage indiquent explicitement au compilateur que les variables correspondantes sont distribuées dans une zone mémoire pré-allouée, qui est appelée la zone globale. En outre, ces modificateurs indiquent un traitement spécial aux données de la variable. Si une variable déclarée à un niveau global n'est pas statique, la mémoire de cette variable est allouée automatiquement sur la pile du programme. La libération de la mémoire allouée à un tableau non statique est également effectuée automatiquement lors de la sortie de la portée du bloc dans lequel le tableau est déclaré.
Voir aussi
Types de Données, Encapsulation et Extension des Types,Initialisation des Variables, Portée de Visibilité et Cycle de Vie des Variables, Créer et Supprimer des Objets, Membres Statiques d'une Class